{"version":3,"file":"static/js/main.ff925cb2.js","mappings":"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","sources":["../node_modules/attr-accept/dist/es/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.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/_isIndex.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setToArray.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/_toSource.js","../node_modules/lodash/eq.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isEqual.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/lottie-react/compiled/hooks/useLottie.js","../node_modules/lottie-react/compiled/hooks/useLottieInteractivity.js","../node_modules/lottie-react/compiled/components/Lottie.js","../node_modules/lottie-web/build/player/lottie.js","../node_modules/object-assign/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-gauge-chart/dist/GaugeChart/customHooks.js","../node_modules/react-gauge-chart/dist/GaugeChart/drawNeedle.js","../node_modules/react-gauge-chart/dist/GaugeChart/index.js","../node_modules/react-gauge-chart/dist/GaugeChart/renderChart.js","../node_modules/react-gauge-chart/dist/GaugeChart/utils.js","../node_modules/react-gauge-chart/dist/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-side-effect/lib/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/void-elements/index.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/descending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/number.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/blur.js","../node_modules/d3-array/src/count.js","../node_modules/d3-array/src/cross.js","../node_modules/d3-array/src/cumsum.js","../node_modules/d3-array/src/variance.js","../node_modules/d3-array/src/deviation.js","../node_modules/d3-array/src/extent.js","../node_modules/d3-array/src/fsum.js","../node_modules/internmap/src/index.js","../node_modules/d3-array/src/identity.js","../node_modules/d3-array/src/group.js","../node_modules/d3-array/src/permute.js","../node_modules/d3-array/src/sort.js","../node_modules/d3-array/src/groupSort.js","../node_modules/d3-array/src/array.js","../node_modules/d3-array/src/constant.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/nice.js","../node_modules/d3-array/src/threshold/sturges.js","../node_modules/d3-array/src/bin.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/maxIndex.js","../node_modules/d3-array/src/min.js","../node_modules/d3-array/src/minIndex.js","../node_modules/d3-array/src/quickselect.js","../node_modules/d3-array/src/greatest.js","../node_modules/d3-array/src/quantile.js","../node_modules/d3-array/src/threshold/freedmanDiaconis.js","../node_modules/d3-array/src/threshold/scott.js","../node_modules/d3-array/src/mean.js","../node_modules/d3-array/src/median.js","../node_modules/d3-array/src/merge.js","../node_modules/d3-array/src/mode.js","../node_modules/d3-array/src/pairs.js","../node_modules/d3-array/src/range.js","../node_modules/d3-array/src/rank.js","../node_modules/d3-array/src/least.js","../node_modules/d3-array/src/leastIndex.js","../node_modules/d3-array/src/greatestIndex.js","../node_modules/d3-array/src/scan.js","../node_modules/d3-array/src/shuffle.js","../node_modules/d3-array/src/sum.js","../node_modules/d3-array/src/transpose.js","../node_modules/d3-array/src/zip.js","../node_modules/d3-array/src/every.js","../node_modules/d3-array/src/some.js","../node_modules/d3-array/src/filter.js","../node_modules/d3-array/src/map.js","../node_modules/d3-array/src/reduce.js","../node_modules/d3-array/src/reverse.js","../node_modules/d3-array/src/difference.js","../node_modules/d3-array/src/disjoint.js","../node_modules/d3-array/src/intersection.js","../node_modules/d3-array/src/superset.js","../node_modules/d3-array/src/subset.js","../node_modules/d3-array/src/union.js","../node_modules/d3-axis/src/identity.js","../node_modules/d3-axis/src/axis.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/array.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/selectChild.js","../node_modules/d3-selection/src/selection/selectChildren.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/join.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/selection/iterator.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-drag/src/nodrag.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/basisClosed.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/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.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-selection/src/sourceEvent.js","../node_modules/d3-selection/src/pointer.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-timer/src/timeout.js","../node_modules/d3-transition/src/transition/schedule.js","../node_modules/d3-transition/src/interrupt.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-transition/src/transition/tween.js","../node_modules/d3-transition/src/transition/interpolate.js","../node_modules/d3-transition/src/transition/attr.js","../node_modules/d3-transition/src/transition/attrTween.js","../node_modules/d3-transition/src/transition/delay.js","../node_modules/d3-transition/src/transition/duration.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/textTween.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/ease.js","../node_modules/d3-transition/src/transition/easeVarying.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-transition/src/selection/index.js","../node_modules/d3-transition/src/selection/interrupt.js","../node_modules/d3-transition/src/active.js","../node_modules/d3-brush/src/constant.js","../node_modules/d3-brush/src/event.js","../node_modules/d3-brush/src/noevent.js","../node_modules/d3-brush/src/brush.js","../node_modules/d3-chord/src/math.js","../node_modules/d3-chord/src/chord.js","../node_modules/d3-path/src/path.js","../node_modules/d3-chord/src/array.js","../node_modules/d3-chord/src/constant.js","../node_modules/d3-chord/src/ribbon.js","../node_modules/d3-color/src/math.js","../node_modules/d3-color/src/lab.js","../node_modules/d3-color/src/cubehelix.js","../node_modules/d3-contour/src/array.js","../node_modules/d3-contour/src/ascending.js","../node_modules/d3-contour/src/constant.js","../node_modules/d3-contour/src/contains.js","../node_modules/d3-contour/src/noop.js","../node_modules/d3-contour/src/contours.js","../node_modules/d3-contour/src/area.js","../node_modules/d3-contour/src/density.js","../node_modules/robust-predicates/esm/util.js","../node_modules/robust-predicates/esm/orient2d.js","../node_modules/robust-predicates/esm/orient3d.js","../node_modules/robust-predicates/esm/incircle.js","../node_modules/robust-predicates/esm/insphere.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/d3-drag/src/constant.js","../node_modules/d3-drag/src/event.js","../node_modules/d3-drag/src/drag.js","../node_modules/d3-dsv/src/dsv.js","../node_modules/d3-dsv/src/csv.js","../node_modules/d3-dsv/src/tsv.js","../node_modules/d3-dsv/src/autoType.js","../node_modules/d3-ease/src/linear.js","../node_modules/d3-ease/src/quad.js","../node_modules/d3-ease/src/poly.js","../node_modules/d3-ease/src/sin.js","../node_modules/d3-ease/src/math.js","../node_modules/d3-ease/src/exp.js","../node_modules/d3-ease/src/circle.js","../node_modules/d3-ease/src/bounce.js","../node_modules/d3-ease/src/back.js","../node_modules/d3-ease/src/elastic.js","../node_modules/d3-fetch/src/blob.js","../node_modules/d3-fetch/src/buffer.js","../node_modules/d3-fetch/src/text.js","../node_modules/d3-fetch/src/dsv.js","../node_modules/d3-fetch/src/image.js","../node_modules/d3-fetch/src/json.js","../node_modules/d3-fetch/src/xml.js","../node_modules/d3-force/src/center.js","../node_modules/d3-quadtree/src/add.js","../node_modules/d3-quadtree/src/quad.js","../node_modules/d3-quadtree/src/x.js","../node_modules/d3-quadtree/src/y.js","../node_modules/d3-quadtree/src/quadtree.js","../node_modules/d3-force/src/constant.js","../node_modules/d3-force/src/jiggle.js","../node_modules/d3-force/src/collide.js","../node_modules/d3-force/src/link.js","../node_modules/d3-quadtree/src/cover.js","../node_modules/d3-quadtree/src/data.js","../node_modules/d3-quadtree/src/extent.js","../node_modules/d3-quadtree/src/find.js","../node_modules/d3-quadtree/src/remove.js","../node_modules/d3-quadtree/src/root.js","../node_modules/d3-quadtree/src/size.js","../node_modules/d3-quadtree/src/visit.js","../node_modules/d3-quadtree/src/visitAfter.js","../node_modules/d3-force/src/lcg.js","../node_modules/d3-force/src/simulation.js","../node_modules/d3-force/src/manyBody.js","../node_modules/d3-force/src/radial.js","../node_modules/d3-force/src/x.js","../node_modules/d3-force/src/y.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatPrefixAuto.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/defaultLocale.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-format/src/precisionFixed.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-geo/src/math.js","../node_modules/d3-geo/src/noop.js","../node_modules/d3-geo/src/stream.js","../node_modules/d3-geo/src/area.js","../node_modules/d3-geo/src/bounds.js","../node_modules/d3-geo/src/cartesian.js","../node_modules/d3-geo/src/centroid.js","../node_modules/d3-geo/src/constant.js","../node_modules/d3-geo/src/compose.js","../node_modules/d3-geo/src/rotation.js","../node_modules/d3-geo/src/circle.js","../node_modules/d3-geo/src/clip/buffer.js","../node_modules/d3-geo/src/pointEqual.js","../node_modules/d3-geo/src/clip/rejoin.js","../node_modules/d3-geo/src/polygonContains.js","../node_modules/d3-geo/src/clip/index.js","../node_modules/d3-geo/src/clip/antimeridian.js","../node_modules/d3-geo/src/clip/circle.js","../node_modules/d3-geo/src/clip/rectangle.js","../node_modules/d3-geo/src/length.js","../node_modules/d3-geo/src/clip/line.js","../node_modules/d3-geo/src/clip/extent.js","../node_modules/d3-geo/src/distance.js","../node_modules/d3-geo/src/contains.js","../node_modules/d3-geo/src/graticule.js","../node_modules/d3-geo/src/interpolate.js","../node_modules/d3-geo/src/identity.js","../node_modules/d3-geo/src/path/area.js","../node_modules/d3-geo/src/path/bounds.js","../node_modules/d3-geo/src/path/centroid.js","../node_modules/d3-geo/src/path/context.js","../node_modules/d3-geo/src/path/measure.js","../node_modules/d3-geo/src/path/string.js","../node_modules/d3-geo/src/path/index.js","../node_modules/d3-geo/src/transform.js","../node_modules/d3-geo/src/projection/fit.js","../node_modules/d3-geo/src/projection/resample.js","../node_modules/d3-geo/src/projection/index.js","../node_modules/d3-geo/src/projection/conic.js","../node_modules/d3-geo/src/projection/conicEqualArea.js","../node_modules/d3-geo/src/projection/cylindricalEqualArea.js","../node_modules/d3-geo/src/projection/albers.js","../node_modules/d3-geo/src/projection/albersUsa.js","../node_modules/d3-geo/src/projection/azimuthal.js","../node_modules/d3-geo/src/projection/azimuthalEqualArea.js","../node_modules/d3-geo/src/projection/azimuthalEquidistant.js","../node_modules/d3-geo/src/projection/mercator.js","../node_modules/d3-geo/src/projection/conicConformal.js","../node_modules/d3-geo/src/projection/equirectangular.js","../node_modules/d3-geo/src/projection/conicEquidistant.js","../node_modules/d3-geo/src/projection/equalEarth.js","../node_modules/d3-geo/src/projection/gnomonic.js","../node_modules/d3-geo/src/projection/identity.js","../node_modules/d3-geo/src/projection/naturalEarth1.js","../node_modules/d3-geo/src/projection/orthographic.js","../node_modules/d3-geo/src/projection/stereographic.js","../node_modules/d3-geo/src/projection/transverseMercator.js","../node_modules/d3-hierarchy/src/cluster.js","../node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/d3-hierarchy/src/accessors.js","../node_modules/d3-hierarchy/src/constant.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/find.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/d3-hierarchy/src/hierarchy/iterator.js","../node_modules/d3-hierarchy/src/lcg.js","../node_modules/d3-hierarchy/src/pack/enclose.js","../node_modules/d3-hierarchy/src/array.js","../node_modules/d3-hierarchy/src/pack/siblings.js","../node_modules/d3-hierarchy/src/pack/index.js","../node_modules/d3-hierarchy/src/treemap/round.js","../node_modules/d3-hierarchy/src/treemap/dice.js","../node_modules/d3-hierarchy/src/partition.js","../node_modules/d3-hierarchy/src/stratify.js","../node_modules/d3-hierarchy/src/tree.js","../node_modules/d3-hierarchy/src/treemap/slice.js","../node_modules/d3-hierarchy/src/treemap/squarify.js","../node_modules/d3-hierarchy/src/treemap/index.js","../node_modules/d3-hierarchy/src/treemap/binary.js","../node_modules/d3-hierarchy/src/treemap/sliceDice.js","../node_modules/d3-hierarchy/src/treemap/resquarify.js","../node_modules/d3-interpolate/src/discrete.js","../node_modules/d3-interpolate/src/hue.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-interpolate/src/hsl.js","../node_modules/d3-interpolate/src/lab.js","../node_modules/d3-interpolate/src/hcl.js","../node_modules/d3-interpolate/src/cubehelix.js","../node_modules/d3-interpolate/src/piecewise.js","../node_modules/d3-interpolate/src/quantize.js","../node_modules/d3-polygon/src/area.js","../node_modules/d3-polygon/src/centroid.js","../node_modules/d3-polygon/src/cross.js","../node_modules/d3-polygon/src/hull.js","../node_modules/d3-polygon/src/contains.js","../node_modules/d3-polygon/src/length.js","../node_modules/d3-random/src/defaultSource.js","../node_modules/d3-random/src/uniform.js","../node_modules/d3-random/src/int.js","../node_modules/d3-random/src/normal.js","../node_modules/d3-random/src/logNormal.js","../node_modules/d3-random/src/irwinHall.js","../node_modules/d3-random/src/bates.js","../node_modules/d3-random/src/exponential.js","../node_modules/d3-random/src/pareto.js","../node_modules/d3-random/src/bernoulli.js","../node_modules/d3-random/src/geometric.js","../node_modules/d3-random/src/gamma.js","../node_modules/d3-random/src/beta.js","../node_modules/d3-random/src/binomial.js","../node_modules/d3-random/src/weibull.js","../node_modules/d3-random/src/cauchy.js","../node_modules/d3-random/src/logistic.js","../node_modules/d3-random/src/poisson.js","../node_modules/d3-random/src/lcg.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/band.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-scale/src/identity.js","../node_modules/d3-scale/src/nice.js","../node_modules/d3-scale/src/log.js","../node_modules/d3-scale/src/symlog.js","../node_modules/d3-scale/src/pow.js","../node_modules/d3-scale/src/radial.js","../node_modules/d3-scale/src/quantile.js","../node_modules/d3-scale/src/quantize.js","../node_modules/d3-scale/src/threshold.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/ticks.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-scale/src/utcTime.js","../node_modules/d3-scale/src/sequential.js","../node_modules/d3-scale/src/sequentialQuantile.js","../node_modules/d3-scale/src/diverging.js","../node_modules/d3-scale-chromatic/src/colors.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/observable10.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/categorical/Tableau10.js","../node_modules/d3-scale-chromatic/src/ramp.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-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-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/Purples.js","../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","../node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","../node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","../node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","../node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","../node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","../node_modules/d3-selection/src/create.js","../node_modules/d3-selection/src/local.js","../node_modules/d3-selection/src/pointers.js","../node_modules/d3-selection/src/selectAll.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/path.js","../node_modules/d3-shape/src/arc.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/area.js","../node_modules/d3-shape/src/descending.js","../node_modules/d3-shape/src/identity.js","../node_modules/d3-shape/src/pie.js","../node_modules/d3-shape/src/curve/radial.js","../node_modules/d3-shape/src/lineRadial.js","../node_modules/d3-shape/src/areaRadial.js","../node_modules/d3-shape/src/pointRadial.js","../node_modules/d3-shape/src/curve/bump.js","../node_modules/d3-shape/src/link.js","../node_modules/d3-shape/src/symbol/asterisk.js","../node_modules/d3-shape/src/symbol/circle.js","../node_modules/d3-shape/src/symbol/cross.js","../node_modules/d3-shape/src/symbol/diamond.js","../node_modules/d3-shape/src/symbol/diamond2.js","../node_modules/d3-shape/src/symbol/plus.js","../node_modules/d3-shape/src/symbol/square.js","../node_modules/d3-shape/src/symbol/square2.js","../node_modules/d3-shape/src/symbol/star.js","../node_modules/d3-shape/src/symbol/triangle.js","../node_modules/d3-shape/src/symbol/triangle2.js","../node_modules/d3-shape/src/symbol/wye.js","../node_modules/d3-shape/src/symbol/times.js","../node_modules/d3-shape/src/symbol.js","../node_modules/d3-shape/src/noop.js","../node_modules/d3-shape/src/curve/basis.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/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/offset/none.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/stack.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-shape/src/order/appearance.js","../node_modules/d3-shape/src/order/ascending.js","../node_modules/d3-shape/src/order/descending.js","../node_modules/d3-shape/src/order/insideOut.js","../node_modules/d3-shape/src/order/reverse.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../node_modules/d3-timer/src/interval.js","../node_modules/d3-zoom/src/constant.js","../node_modules/d3-zoom/src/event.js","../node_modules/d3-zoom/src/transform.js","../node_modules/d3-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","reportWebVitals.js","../node_modules/i18next/dist/esm/i18next.js","../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","../node_modules/html-parse-stringify/src/parse.js","../node_modules/html-parse-stringify/src/stringify.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/defaults.js","../node_modules/react-i18next/dist/es/i18nInstance.js","../node_modules/react-i18next/dist/es/initReactI18next.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/react-i18next/dist/es/useSSR.js","Utils/IMLocalize.js","../node_modules/clsx/dist/clsx.mjs","Utils/Constants.js","Utils/Loader.jsx","assets/Images/menu_dashboard.svg","assets/Images/menu_deckuploader.svg","assets/Images/menu_inversorcrm.svg","assets/Images/menu_service.svg","assets/Images/menu_valut.svg","assets/Images/menu_profile.svg","assets/Images/menu_settings.svg","assets/Images/menu_chat.svg","assets/Images/ic_crownblock.svg","Components/LogoText.js","Components/LogoTextsmall.js","Components/SideMenu.jsx","Services/baseURL.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","Services/commonApi.js","Services/allAPI.js","assets/Images/new_ic_close.svg","../node_modules/tslib/tslib.es6.mjs","../node_modules/file-selector/src/file.ts","../node_modules/file-selector/src/file-selector.ts","../node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/react-dropzone/dist/es/index.js","assets/Images/ic_sparkles_green.svg","Components/TextView.js","Components/PdfUploader.js","Screens/Dashboard/DashboardDialog.jsx","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/utils/bindActionCreators.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/index.js","Components/Titletext.js","assets/Images/ic_summeryback.svg","assets/Images/ic_notification.svg","assets/Images/ic_crown.svg","Components/DashboardTitle.js","assets/Images/ic_logout.svg","assets/Images/ic_close.svg","../node_modules/redux/src/utils/formatProdErrorMessage.ts","../node_modules/redux/src/utils/symbol-observable.ts","../node_modules/redux/src/utils/actionTypes.ts","../node_modules/redux/src/utils/isPlainObject.ts","../node_modules/redux/src/createStore.ts","../node_modules/redux/src/combineReducers.ts","../node_modules/redux/src/compose.ts","../node_modules/redux-thunk/dist/redux-thunk.mjs","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/env.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/errors.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/common.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/plugins.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/scope.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/finalize.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/proxy.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/immerClass.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/current.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/immer.ts","../node_modules/@reduxjs/toolkit/src/createDraftSafeSelector.ts","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/tsHelpers.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/redux/src/utils/isAction.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/@reduxjs/toolkit/src/getDefaultEnhancers.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/matchers.ts","../node_modules/@reduxjs/toolkit/src/nanoid.ts","../node_modules/@reduxjs/toolkit/src/createAsyncThunk.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/createReducer.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/combineSlices.ts","../node_modules/@reduxjs/toolkit/src/formatProdErrorMessage.ts","redux/slice/userSlice.js","Components/DeleteDialog.jsx","Components/PrimaryButton.js","Components/HeaderMenu.jsx","Components/SecondaryButton.js","assets/Images/ic_chat.svg","assets/Images/ic_company_green.svg","../node_modules/html-to-image/src/util.ts","../node_modules/html-to-image/src/clone-pseudos.ts","../node_modules/html-to-image/src/mimes.ts","../node_modules/html-to-image/src/dataurl.ts","../node_modules/html-to-image/src/clone-node.ts","../node_modules/html-to-image/src/embed-resources.ts","../node_modules/html-to-image/src/embed-images.ts","../node_modules/html-to-image/src/embed-webfonts.ts","../node_modules/html-to-image/src/index.ts","../node_modules/html-to-image/src/apply-style.ts","Components/AlertDialog.jsx","../node_modules/react-helmet/es/Helmet.js","Screens/Dashboard/Dashboard.jsx","Screens/DeckDetails/Deckdetails.jsx","redux/slice/masterSlice.js","redux/Store.js","../node_modules/@reduxjs/toolkit/src/configureStore.ts","../node_modules/redux/src/applyMiddleware.ts","Services/PrivateRoute.js","../node_modules/@react-oauth/google/dist/index.esm.js","assets/Images/ic_back.svg","assets/Images/ic_email.svg","assets/Images/ic_pwdshow.svg","assets/Images/ic_pwdhide.svg","Components/InputContainer.js","Components/Headingtext.js","Screens/ResetPassword/ResetPassword.jsx","../node_modules/src/index.tsx","Screens/ResetPassword/ResetPasswordOTP.jsx","assets/Images/ic_dropdown.svg","Screens/Login/Login.jsx","assets/Images/ic_user.svg","Screens/Signup/Signup.jsx","assets/Images/ic_sparkles.svg","Components/FirstPdfUploader.js","Screens/Onboarding/Uploadpicthdeck.jsx","Screens/Onboarding/Deckscore.jsx","assets/Images/ic_upload.svg","assets/Images/new_ic_docclose.svg","Screens/Valut/CreateNewVault.jsx","Screens/DeckDetails/DeckdetailsDialog.jsx","Screens/MyDecks/MyDecks.jsx","Screens/ServicePage/ServiceviewDialog.jsx","assets/Images/ic_emptyround.svg","Screens/ServicePage/MyServiceviewDialog.jsx","Components/UserAlertDialog.jsx","Screens/ServicePage/ServicePage.jsx","assets/Images/ic_add.svg","assets/Images/ic_menu.svg","assets/Images/ic_menuedit.svg","assets/Images/ic_menudelete.svg","Screens/Valut/CreateNewFile.jsx","Screens/Valut/ValutPage.jsx","assets/Images/ic_leftarrow.svg","assets/Images/ic_downarrow.svg","assets/Images/ic_sharefile.svg","assets/Images/ic_dotted.svg","assets/Images/ic_download.svg","Components/TextViewlight.js","Screens/Valut/ShareFile.jsx","Screens/Valut/ValutDetails.jsx","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/react-beautiful-dnd/node_modules/redux/es/redux.js","../node_modules/use-memo-one/dist/use-memo-one.esm.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/css-box-model/dist/css-box-model.esm.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/raf-schd/dist/raf-schd.esm.js","../node_modules/react-beautiful-dnd/dist/react-beautiful-dnd.esm.js","assets/Images/ic_menudot.svg","Components/Menutext.js","Components/Menutitletext.js","assets/Images/EI_status.svg","assets/Images/EI_date.svg","assets/Images/EI_deal.svg","assets/Images/EI_sector.svg","assets/Images/EI_pitchdeck.svg","assets/Images/EI_onepager.svg","assets/Images/EI_revenue.svg","assets/Images/EI_burn.svg","assets/Images/ic_star.svg","assets/Images/ic_noofinv.svg","assets/Images/ic_linkedin.svg","Screens/StartupCRM/EditStartupInvestors.jsx","Screens/StartupCRM/BoardView.jsx","Components/MultiRangeSlider.js","assets/Images/ic_tickgray.svg","assets/Images/ic_country.svg","assets/Images/ic_calendar.svg","assets/Images/ic_stage.svg","Screens/StartupCRM/SuggestedStartupInvestors.jsx","assets/Images/ic_filter.svg","Screens/StartupCRM/StartupCRM.jsx","assets/Images/ic_tick.svg","Screens/Subscription/Subscription.jsx","assets/Images/ic_company.svg","assets/Images/ic_setting.svg","Components/ProfileSideMenu.jsx","assets/Images/ic_edit.svg","assets/Images/ic_gender.svg","assets/Images/ic_mobile.svg","assets/Images/ic_mail.svg","Screens/Profile/Profileinfo.jsx","assets/Images/ic_postion.svg","assets/Images/ic_sector.svg","assets/Images/ic_address.svg","Screens/Profile/Companyinfo.jsx","Screens/Profile/Accountinfo.jsx","assets/Images/ic_closegreen.svg","assets/Images/ic_subscriptions.svg","assets/Images/ic_paymentlist.svg","Screens/Profile/SubscriptionInfo.jsx","Screens/Profile/Profileinfoedit.jsx","../node_modules/country-state-city/lib/utils/index.js","../node_modules/country-state-city/lib/country.js","../node_modules/country-state-city/lib/state.js","../node_modules/country-state-city/lib/city.js","Screens/Profile/Companyinfoedit.jsx","Screens/Profile/ProfilePage.jsx","assets/Images/ic_helpuparrow.svg","assets/Images/ic_helpdownarrow.svg","assets/Images/new_ic_watermarkbg.svg","Components/ReadMoreText.js","Screens/Help/HelpSupport.jsx","assets/Images/ic_share.svg","assets/Images/question.svg","Components/MiniLoader.js","Screens/ZenChat/Zenchat.jsx","Screens/Onboarding/Question.jsx","Screens/StartupCRM/SuggestingStartupInvestors.jsx","Screens/Dashboard/InvestorDashboard.jsx","Screens/InvestorsCRM/DealsDetails.jsx","Screens/InvestorsCRM/Deals.jsx","Screens/InvestorsCRM/CRMListDetails.jsx","Screens/InvestorsCRM/CRMList.jsx","Screens/InvestorsCRM/InvestorCRM.jsx","index.js"],"sourcesContent":["\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n  if (file && acceptedFiles) {\n    var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n    var fileName = file.name || '';\n    var mimeType = (file.type || '').toLowerCase();\n    var baseMimeType = mimeType.replace(/\\/.*$/, '');\n    return acceptedFilesArray.some(function (type) {\n      var validType = type.trim().toLowerCase();\n\n      if (validType.charAt(0) === '.') {\n        return fileName.toLowerCase().endsWith(validType);\n      } else if (validType.endsWith('/*')) {\n        // This is something like a image/* mime type\n        return baseMimeType === validType.replace(/\\/.*$/, '');\n      }\n\n      return mimeType === validType;\n    });\n  }\n\n  return true;\n};","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.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 b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var 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 getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.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 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 arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var 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","/**\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","/**\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","/**\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 root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // 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","var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // 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","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var 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 baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n","/** Used 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 * 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 coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","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","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\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 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","/** 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","/**\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 baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var 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 baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var 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","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","import lottie from \"lottie-web\";\nimport React, { useEffect, useRef, useState, } from \"react\";\nconst useLottie = (props, style) => {\n    const { animationData, loop, autoplay, initialSegment, onComplete, onLoopComplete, onEnterFrame, onSegmentStart, onConfigReady, onDataReady, onDataFailed, onLoadedImages, onDOMLoaded, onDestroy, \n    // Specified here to take them out from the 'rest'\n    lottieRef, renderer, name, assetsPath, rendererSettings, \n    // TODO: find a better way to extract the html props to avoid specifying\n    //  all the props that we want to exclude (as you can see above)\n    ...rest } = props;\n    const [animationLoaded, setAnimationLoaded] = useState(false);\n    const animationInstanceRef = useRef();\n    const animationContainer = useRef(null);\n    /*\n          ======================================\n              INTERACTION METHODS\n          ======================================\n       */\n    /**\n     * Play\n     */\n    const play = () => {\n        var _a;\n        (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.play();\n    };\n    /**\n     * Stop\n     */\n    const stop = () => {\n        var _a;\n        (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.stop();\n    };\n    /**\n     * Pause\n     */\n    const pause = () => {\n        var _a;\n        (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.pause();\n    };\n    /**\n     * Set animation speed\n     * @param speed\n     */\n    const setSpeed = (speed) => {\n        var _a;\n        (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSpeed(speed);\n    };\n    /**\n     * Got to frame and play\n     * @param value\n     * @param isFrame\n     */\n    const goToAndPlay = (value, isFrame) => {\n        var _a;\n        (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndPlay(value, isFrame);\n    };\n    /**\n     * Got to frame and stop\n     * @param value\n     * @param isFrame\n     */\n    const goToAndStop = (value, isFrame) => {\n        var _a;\n        (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndStop(value, isFrame);\n    };\n    /**\n     * Set animation direction\n     * @param direction\n     */\n    const setDirection = (direction) => {\n        var _a;\n        (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setDirection(direction);\n    };\n    /**\n     * Play animation segments\n     * @param segments\n     * @param forceFlag\n     */\n    const playSegments = (segments, forceFlag) => {\n        var _a;\n        (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.playSegments(segments, forceFlag);\n    };\n    /**\n     * Set sub frames\n     * @param useSubFrames\n     */\n    const setSubframe = (useSubFrames) => {\n        var _a;\n        (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSubframe(useSubFrames);\n    };\n    /**\n     * Get animation duration\n     * @param inFrames\n     */\n    const getDuration = (inFrames) => { var _a; return (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.getDuration(inFrames); };\n    /**\n     * Destroy animation\n     */\n    const destroy = () => {\n        var _a;\n        (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n        // Removing the reference to the animation so separate cleanups are skipped.\n        // Without it the internal `lottie-react` instance throws exceptions as it already cleared itself on destroy.\n        animationInstanceRef.current = undefined;\n    };\n    /*\n          ======================================\n              LOTTIE\n          ======================================\n       */\n    /**\n     * Load a new animation, and if it's the case, destroy the previous one\n     * @param {Object} forcedConfigs\n     */\n    const loadAnimation = (forcedConfigs = {}) => {\n        var _a;\n        // Return if the container ref is null\n        if (!animationContainer.current) {\n            return;\n        }\n        // Destroy any previous instance\n        (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n        // Build the animation configuration\n        const config = {\n            ...props,\n            ...forcedConfigs,\n            container: animationContainer.current,\n        };\n        // Save the animation instance\n        animationInstanceRef.current = lottie.loadAnimation(config);\n        setAnimationLoaded(!!animationInstanceRef.current);\n        // Return a function that will clean up\n        return () => {\n            var _a;\n            (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n            animationInstanceRef.current = undefined;\n        };\n    };\n    /**\n     * (Re)Initialize when animation data changed\n     */\n    useEffect(() => {\n        const onUnmount = loadAnimation();\n        // Clean up on unmount\n        return () => onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount();\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [animationData, loop]);\n    // Update the autoplay state\n    useEffect(() => {\n        if (!animationInstanceRef.current) {\n            return;\n        }\n        animationInstanceRef.current.autoplay = !!autoplay;\n    }, [autoplay]);\n    // Update the initial segment state\n    useEffect(() => {\n        if (!animationInstanceRef.current) {\n            return;\n        }\n        // When null should reset to default animation length\n        if (!initialSegment) {\n            animationInstanceRef.current.resetSegments(true);\n            return;\n        }\n        // If it's not a valid segment, do nothing\n        if (!Array.isArray(initialSegment) || !initialSegment.length) {\n            return;\n        }\n        // If the current position it's not in the new segment\n        // set the current position to start\n        if (animationInstanceRef.current.currentRawFrame < initialSegment[0] ||\n            animationInstanceRef.current.currentRawFrame > initialSegment[1]) {\n            animationInstanceRef.current.currentRawFrame = initialSegment[0];\n        }\n        // Update the segment\n        animationInstanceRef.current.setSegment(initialSegment[0], initialSegment[1]);\n    }, [initialSegment]);\n    /*\n          ======================================\n              EVENTS\n          ======================================\n       */\n    /**\n     * Reinitialize listener on change\n     */\n    useEffect(() => {\n        const partialListeners = [\n            { name: \"complete\", handler: onComplete },\n            { name: \"loopComplete\", handler: onLoopComplete },\n            { name: \"enterFrame\", handler: onEnterFrame },\n            { name: \"segmentStart\", handler: onSegmentStart },\n            { name: \"config_ready\", handler: onConfigReady },\n            { name: \"data_ready\", handler: onDataReady },\n            { name: \"data_failed\", handler: onDataFailed },\n            { name: \"loaded_images\", handler: onLoadedImages },\n            { name: \"DOMLoaded\", handler: onDOMLoaded },\n            { name: \"destroy\", handler: onDestroy },\n        ];\n        const listeners = partialListeners.filter((listener) => listener.handler != null);\n        if (!listeners.length) {\n            return;\n        }\n        const deregisterList = listeners.map(\n        /**\n         * Handle the process of adding an event listener\n         * @param {Listener} listener\n         * @return {Function} Function that deregister the listener\n         */\n        (listener) => {\n            var _a;\n            (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener(listener.name, listener.handler);\n            // Return a function to deregister this listener\n            return () => {\n                var _a;\n                (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(listener.name, listener.handler);\n            };\n        });\n        // Deregister listeners on unmount\n        return () => {\n            deregisterList.forEach((deregister) => deregister());\n        };\n    }, [\n        onComplete,\n        onLoopComplete,\n        onEnterFrame,\n        onSegmentStart,\n        onConfigReady,\n        onDataReady,\n        onDataFailed,\n        onLoadedImages,\n        onDOMLoaded,\n        onDestroy,\n    ]);\n    /**\n     * Build the animation view\n     */\n    const View = React.createElement(\"div\", { style: style, ref: animationContainer, ...rest });\n    return {\n        View,\n        play,\n        stop,\n        pause,\n        setSpeed,\n        goToAndStop,\n        goToAndPlay,\n        setDirection,\n        playSegments,\n        setSubframe,\n        getDuration,\n        destroy,\n        animationContainerRef: animationContainer,\n        animationLoaded,\n        animationItem: animationInstanceRef.current,\n    };\n};\nexport default useLottie;\n","import { useEffect } from \"react\";\n// helpers\nexport function getContainerVisibility(container) {\n    const { top, height } = container.getBoundingClientRect();\n    const current = window.innerHeight - top;\n    const max = window.innerHeight + height;\n    return current / max;\n}\nexport function getContainerCursorPosition(container, cursorX, cursorY) {\n    const { top, left, width, height } = container.getBoundingClientRect();\n    const x = (cursorX - left) / width;\n    const y = (cursorY - top) / height;\n    return { x, y };\n}\nexport const useInitInteractivity = ({ wrapperRef, animationItem, mode, actions, }) => {\n    useEffect(() => {\n        const wrapper = wrapperRef.current;\n        if (!wrapper || !animationItem || !actions.length) {\n            return;\n        }\n        animationItem.stop();\n        const scrollModeHandler = () => {\n            let assignedSegment = null;\n            const scrollHandler = () => {\n                const currentPercent = getContainerVisibility(wrapper);\n                // Find the first action that satisfies the current position conditions\n                const action = actions.find(({ visibility }) => visibility &&\n                    currentPercent >= visibility[0] &&\n                    currentPercent <= visibility[1]);\n                // Skip if no matching action was found!\n                if (!action) {\n                    return;\n                }\n                if (action.type === \"seek\" &&\n                    action.visibility &&\n                    action.frames.length === 2) {\n                    // Seek: Go to a frame based on player scroll position action\n                    const frameToGo = action.frames[0] +\n                        Math.ceil(((currentPercent - action.visibility[0]) /\n                            (action.visibility[1] - action.visibility[0])) *\n                            action.frames[1]);\n                    //! goToAndStop must be relative to the start of the current segment\n                    animationItem.goToAndStop(frameToGo - animationItem.firstFrame - 1, true);\n                }\n                if (action.type === \"loop\") {\n                    // Loop: Loop a given frames\n                    if (assignedSegment === null) {\n                        // if not playing any segments currently. play those segments and save to state\n                        animationItem.playSegments(action.frames, true);\n                        assignedSegment = action.frames;\n                    }\n                    else {\n                        // if playing any segments currently.\n                        //check if segments in state are equal to the frames selected by action\n                        if (assignedSegment !== action.frames) {\n                            // if they are not equal. new segments are to be loaded\n                            animationItem.playSegments(action.frames, true);\n                            assignedSegment = action.frames;\n                        }\n                        else if (animationItem.isPaused) {\n                            // if they are equal the play method must be called only if lottie is paused\n                            animationItem.playSegments(action.frames, true);\n                            assignedSegment = action.frames;\n                        }\n                    }\n                }\n                if (action.type === \"play\" && animationItem.isPaused) {\n                    // Play: Reset segments and continue playing full animation from current position\n                    animationItem.resetSegments(true);\n                    animationItem.play();\n                }\n                if (action.type === \"stop\") {\n                    // Stop: Stop playback\n                    animationItem.goToAndStop(action.frames[0] - animationItem.firstFrame - 1, true);\n                }\n            };\n            document.addEventListener(\"scroll\", scrollHandler);\n            return () => {\n                document.removeEventListener(\"scroll\", scrollHandler);\n            };\n        };\n        const cursorModeHandler = () => {\n            const handleCursor = (_x, _y) => {\n                let x = _x;\n                let y = _y;\n                // Resolve cursor position if cursor is inside container\n                if (x !== -1 && y !== -1) {\n                    // Get container cursor position\n                    const pos = getContainerCursorPosition(wrapper, x, y);\n                    // Use the resolved position\n                    x = pos.x;\n                    y = pos.y;\n                }\n                // Find the first action that satisfies the current position conditions\n                const action = actions.find(({ position }) => {\n                    if (position &&\n                        Array.isArray(position.x) &&\n                        Array.isArray(position.y)) {\n                        return (x >= position.x[0] &&\n                            x <= position.x[1] &&\n                            y >= position.y[0] &&\n                            y <= position.y[1]);\n                    }\n                    if (position &&\n                        !Number.isNaN(position.x) &&\n                        !Number.isNaN(position.y)) {\n                        return x === position.x && y === position.y;\n                    }\n                    return false;\n                });\n                // Skip if no matching action was found!\n                if (!action) {\n                    return;\n                }\n                // Process action types:\n                if (action.type === \"seek\" &&\n                    action.position &&\n                    Array.isArray(action.position.x) &&\n                    Array.isArray(action.position.y) &&\n                    action.frames.length === 2) {\n                    // Seek: Go to a frame based on player scroll position action\n                    const xPercent = (x - action.position.x[0]) /\n                        (action.position.x[1] - action.position.x[0]);\n                    const yPercent = (y - action.position.y[0]) /\n                        (action.position.y[1] - action.position.y[0]);\n                    animationItem.playSegments(action.frames, true);\n                    animationItem.goToAndStop(Math.ceil(((xPercent + yPercent) / 2) *\n                        (action.frames[1] - action.frames[0])), true);\n                }\n                if (action.type === \"loop\") {\n                    animationItem.playSegments(action.frames, true);\n                }\n                if (action.type === \"play\") {\n                    // Play: Reset segments and continue playing full animation from current position\n                    if (animationItem.isPaused) {\n                        animationItem.resetSegments(false);\n                    }\n                    animationItem.playSegments(action.frames);\n                }\n                if (action.type === \"stop\") {\n                    animationItem.goToAndStop(action.frames[0], true);\n                }\n            };\n            const mouseMoveHandler = (ev) => {\n                handleCursor(ev.clientX, ev.clientY);\n            };\n            const mouseOutHandler = () => {\n                handleCursor(-1, -1);\n            };\n            wrapper.addEventListener(\"mousemove\", mouseMoveHandler);\n            wrapper.addEventListener(\"mouseout\", mouseOutHandler);\n            return () => {\n                wrapper.removeEventListener(\"mousemove\", mouseMoveHandler);\n                wrapper.removeEventListener(\"mouseout\", mouseOutHandler);\n            };\n        };\n        switch (mode) {\n            case \"scroll\":\n                return scrollModeHandler();\n            case \"cursor\":\n                return cursorModeHandler();\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [mode, animationItem]);\n};\nconst useLottieInteractivity = ({ actions, mode, lottieObj, }) => {\n    const { animationItem, View, animationContainerRef } = lottieObj;\n    useInitInteractivity({\n        actions,\n        animationItem,\n        mode,\n        wrapperRef: animationContainerRef,\n    });\n    return View;\n};\nexport default useLottieInteractivity;\n","import { useEffect } from \"react\";\nimport useLottie from \"../hooks/useLottie\";\nimport useLottieInteractivity from \"../hooks/useLottieInteractivity\";\nconst Lottie = (props) => {\n    var _a, _b, _c;\n    const { style, interactivity, ...lottieProps } = props;\n    /**\n     * Initialize the 'useLottie' hook\n     */\n    const { View, play, stop, pause, setSpeed, goToAndStop, goToAndPlay, setDirection, playSegments, setSubframe, getDuration, destroy, animationContainerRef, animationLoaded, animationItem, } = useLottie(lottieProps, style);\n    /**\n     * Make the hook variables/methods available through the provided 'lottieRef'\n     */\n    useEffect(() => {\n        if (props.lottieRef) {\n            props.lottieRef.current = {\n                play,\n                stop,\n                pause,\n                setSpeed,\n                goToAndPlay,\n                goToAndStop,\n                setDirection,\n                playSegments,\n                setSubframe,\n                getDuration,\n                destroy,\n                animationContainerRef,\n                animationLoaded,\n                animationItem,\n            };\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [(_a = props.lottieRef) === null || _a === void 0 ? void 0 : _a.current]);\n    return useLottieInteractivity({\n        lottieObj: {\n            View,\n            play,\n            stop,\n            pause,\n            setSpeed,\n            goToAndStop,\n            goToAndPlay,\n            setDirection,\n            playSegments,\n            setSubframe,\n            getDuration,\n            destroy,\n            animationContainerRef,\n            animationLoaded,\n            animationItem,\n        },\n        actions: (_b = interactivity === null || interactivity === void 0 ? void 0 : interactivity.actions) !== null && _b !== void 0 ? _b : [],\n        mode: (_c = interactivity === null || interactivity === void 0 ? void 0 : interactivity.mode) !== null && _c !== void 0 ? _c : \"scroll\",\n    });\n};\nexport default Lottie;\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n  var svgNS = 'http://www.w3.org/2000/svg';\n  var locationHref = '';\n  var _useWebWorker = false;\n  var initialDefaultFrame = -999999;\n\n  var setWebWorker = function setWebWorker(flag) {\n    _useWebWorker = !!flag;\n  };\n\n  var getWebWorker = function getWebWorker() {\n    return _useWebWorker;\n  };\n\n  var setLocationHref = function setLocationHref(value) {\n    locationHref = value;\n  };\n\n  var getLocationHref = function getLocationHref() {\n    return locationHref;\n  };\n\n  function createTag(type) {\n    // return {appendChild:function(){},setAttribute:function(){},style:{}}\n    return document.createElement(type);\n  }\n\n  function extendPrototype(sources, destination) {\n    var i;\n    var len = sources.length;\n    var sourcePrototype;\n\n    for (i = 0; i < len; i += 1) {\n      sourcePrototype = sources[i].prototype;\n\n      for (var attr in sourcePrototype) {\n        if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n      }\n    }\n  }\n\n  function getDescriptor(object, prop) {\n    return Object.getOwnPropertyDescriptor(object, prop);\n  }\n\n  function createProxyFunction(prototype) {\n    function ProxyFunction() {}\n\n    ProxyFunction.prototype = prototype;\n    return ProxyFunction;\n  }\n\n  // import Howl from '../../3rd_party/howler';\n  var audioControllerFactory = function () {\n    function AudioController(audioFactory) {\n      this.audios = [];\n      this.audioFactory = audioFactory;\n      this._volume = 1;\n      this._isMuted = false;\n    }\n\n    AudioController.prototype = {\n      addAudio: function addAudio(audio) {\n        this.audios.push(audio);\n      },\n      pause: function pause() {\n        var i;\n        var len = this.audios.length;\n\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].pause();\n        }\n      },\n      resume: function resume() {\n        var i;\n        var len = this.audios.length;\n\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].resume();\n        }\n      },\n      setRate: function setRate(rateValue) {\n        var i;\n        var len = this.audios.length;\n\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].setRate(rateValue);\n        }\n      },\n      createAudio: function createAudio(assetPath) {\n        if (this.audioFactory) {\n          return this.audioFactory(assetPath);\n        }\n\n        if (window.Howl) {\n          return new window.Howl({\n            src: [assetPath]\n          });\n        }\n\n        return {\n          isPlaying: false,\n          play: function play() {\n            this.isPlaying = true;\n          },\n          seek: function seek() {\n            this.isPlaying = false;\n          },\n          playing: function playing() {},\n          rate: function rate() {},\n          setVolume: function setVolume() {}\n        };\n      },\n      setAudioFactory: function setAudioFactory(audioFactory) {\n        this.audioFactory = audioFactory;\n      },\n      setVolume: function setVolume(value) {\n        this._volume = value;\n\n        this._updateVolume();\n      },\n      mute: function mute() {\n        this._isMuted = true;\n\n        this._updateVolume();\n      },\n      unmute: function unmute() {\n        this._isMuted = false;\n\n        this._updateVolume();\n      },\n      getVolume: function getVolume() {\n        return this._volume;\n      },\n      _updateVolume: function _updateVolume() {\n        var i;\n        var len = this.audios.length;\n\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n        }\n      }\n    };\n    return function () {\n      return new AudioController();\n    };\n  }();\n\n  var createTypedArray = function () {\n    function createRegularArray(type, len) {\n      var i = 0;\n      var arr = [];\n      var value;\n\n      switch (type) {\n        case 'int16':\n        case 'uint8c':\n          value = 1;\n          break;\n\n        default:\n          value = 1.1;\n          break;\n      }\n\n      for (i = 0; i < len; i += 1) {\n        arr.push(value);\n      }\n\n      return arr;\n    }\n\n    function createTypedArrayFactory(type, len) {\n      if (type === 'float32') {\n        return new Float32Array(len);\n      }\n\n      if (type === 'int16') {\n        return new Int16Array(len);\n      }\n\n      if (type === 'uint8c') {\n        return new Uint8ClampedArray(len);\n      }\n\n      return createRegularArray(type, len);\n    }\n\n    if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n      return createTypedArrayFactory;\n    }\n\n    return createRegularArray;\n  }();\n\n  function createSizedArray(len) {\n    return Array.apply(null, {\n      length: len\n    });\n  }\n\n  function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n  var subframeEnabled = true;\n  var expressionsPlugin = null;\n  var expressionsInterfaces = null;\n  var idPrefix$1 = '';\n  var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n  var _shouldRoundValues = false;\n  var bmPow = Math.pow;\n  var bmSqrt = Math.sqrt;\n  var bmFloor = Math.floor;\n  var bmMax = Math.max;\n  var bmMin = Math.min;\n  var BMMath = {};\n\n  (function () {\n    var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n    var i;\n    var len = propertyNames.length;\n\n    for (i = 0; i < len; i += 1) {\n      BMMath[propertyNames[i]] = Math[propertyNames[i]];\n    }\n  })();\n\n  function ProjectInterface$1() {\n    return {};\n  }\n\n  BMMath.random = Math.random;\n\n  BMMath.abs = function (val) {\n    var tOfVal = _typeof$6(val);\n\n    if (tOfVal === 'object' && val.length) {\n      var absArr = createSizedArray(val.length);\n      var i;\n      var len = val.length;\n\n      for (i = 0; i < len; i += 1) {\n        absArr[i] = Math.abs(val[i]);\n      }\n\n      return absArr;\n    }\n\n    return Math.abs(val);\n  };\n\n  var defaultCurveSegments = 150;\n  var degToRads = Math.PI / 180;\n  var roundCorner = 0.5519;\n\n  function roundValues(flag) {\n    _shouldRoundValues = !!flag;\n  }\n\n  function bmRnd(value) {\n    if (_shouldRoundValues) {\n      return Math.round(value);\n    }\n\n    return value;\n  }\n\n  function styleDiv(element) {\n    element.style.position = 'absolute';\n    element.style.top = 0;\n    element.style.left = 0;\n    element.style.display = 'block';\n    element.style.transformOrigin = '0 0';\n    element.style.webkitTransformOrigin = '0 0';\n    element.style.backfaceVisibility = 'visible';\n    element.style.webkitBackfaceVisibility = 'visible';\n    element.style.transformStyle = 'preserve-3d';\n    element.style.webkitTransformStyle = 'preserve-3d';\n    element.style.mozTransformStyle = 'preserve-3d';\n  }\n\n  function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n    this.type = type;\n    this.currentTime = currentTime;\n    this.totalTime = totalTime;\n    this.direction = frameMultiplier < 0 ? -1 : 1;\n  }\n\n  function BMCompleteEvent(type, frameMultiplier) {\n    this.type = type;\n    this.direction = frameMultiplier < 0 ? -1 : 1;\n  }\n\n  function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n    this.type = type;\n    this.currentLoop = currentLoop;\n    this.totalLoops = totalLoops;\n    this.direction = frameMultiplier < 0 ? -1 : 1;\n  }\n\n  function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n    this.type = type;\n    this.firstFrame = firstFrame;\n    this.totalFrames = totalFrames;\n  }\n\n  function BMDestroyEvent(type, target) {\n    this.type = type;\n    this.target = target;\n  }\n\n  function BMRenderFrameErrorEvent(nativeError, currentTime) {\n    this.type = 'renderFrameError';\n    this.nativeError = nativeError;\n    this.currentTime = currentTime;\n  }\n\n  function BMConfigErrorEvent(nativeError) {\n    this.type = 'configError';\n    this.nativeError = nativeError;\n  }\n\n  function BMAnimationConfigErrorEvent(type, nativeError) {\n    this.type = type;\n    this.nativeError = nativeError;\n  }\n\n  var createElementID = function () {\n    var _count = 0;\n    return function createID() {\n      _count += 1;\n      return idPrefix$1 + '__lottie_element_' + _count;\n    };\n  }();\n\n  function HSVtoRGB(h, s, v) {\n    var r;\n    var g;\n    var b;\n    var i;\n    var f;\n    var p;\n    var q;\n    var t;\n    i = Math.floor(h * 6);\n    f = h * 6 - i;\n    p = v * (1 - s);\n    q = v * (1 - f * s);\n    t = v * (1 - (1 - f) * s);\n\n    switch (i % 6) {\n      case 0:\n        r = v;\n        g = t;\n        b = p;\n        break;\n\n      case 1:\n        r = q;\n        g = v;\n        b = p;\n        break;\n\n      case 2:\n        r = p;\n        g = v;\n        b = t;\n        break;\n\n      case 3:\n        r = p;\n        g = q;\n        b = v;\n        break;\n\n      case 4:\n        r = t;\n        g = p;\n        b = v;\n        break;\n\n      case 5:\n        r = v;\n        g = p;\n        b = q;\n        break;\n\n      default:\n        break;\n    }\n\n    return [r, g, b];\n  }\n\n  function RGBtoHSV(r, g, b) {\n    var max = Math.max(r, g, b);\n    var min = Math.min(r, g, b);\n    var d = max - min;\n    var h;\n    var s = max === 0 ? 0 : d / max;\n    var v = max / 255;\n\n    switch (max) {\n      case min:\n        h = 0;\n        break;\n\n      case r:\n        h = g - b + d * (g < b ? 6 : 0);\n        h /= 6 * d;\n        break;\n\n      case g:\n        h = b - r + d * 2;\n        h /= 6 * d;\n        break;\n\n      case b:\n        h = r - g + d * 4;\n        h /= 6 * d;\n        break;\n\n      default:\n        break;\n    }\n\n    return [h, s, v];\n  }\n\n  function addSaturationToRGB(color, offset) {\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n    hsv[1] += offset;\n\n    if (hsv[1] > 1) {\n      hsv[1] = 1;\n    } else if (hsv[1] <= 0) {\n      hsv[1] = 0;\n    }\n\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n  }\n\n  function addBrightnessToRGB(color, offset) {\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n    hsv[2] += offset;\n\n    if (hsv[2] > 1) {\n      hsv[2] = 1;\n    } else if (hsv[2] < 0) {\n      hsv[2] = 0;\n    }\n\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n  }\n\n  function addHueToRGB(color, offset) {\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n    hsv[0] += offset / 360;\n\n    if (hsv[0] > 1) {\n      hsv[0] -= 1;\n    } else if (hsv[0] < 0) {\n      hsv[0] += 1;\n    }\n\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n  }\n\n  var rgbToHex = function () {\n    var colorMap = [];\n    var i;\n    var hex;\n\n    for (i = 0; i < 256; i += 1) {\n      hex = i.toString(16);\n      colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n    }\n\n    return function (r, g, b) {\n      if (r < 0) {\n        r = 0;\n      }\n\n      if (g < 0) {\n        g = 0;\n      }\n\n      if (b < 0) {\n        b = 0;\n      }\n\n      return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n    };\n  }();\n\n  var setSubframeEnabled = function setSubframeEnabled(flag) {\n    subframeEnabled = !!flag;\n  };\n\n  var getSubframeEnabled = function getSubframeEnabled() {\n    return subframeEnabled;\n  };\n\n  var setExpressionsPlugin = function setExpressionsPlugin(value) {\n    expressionsPlugin = value;\n  };\n\n  var getExpressionsPlugin = function getExpressionsPlugin() {\n    return expressionsPlugin;\n  };\n\n  var setExpressionInterfaces = function setExpressionInterfaces(value) {\n    expressionsInterfaces = value;\n  };\n\n  var getExpressionInterfaces = function getExpressionInterfaces() {\n    return expressionsInterfaces;\n  };\n\n  var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n    defaultCurveSegments = value;\n  };\n\n  var getDefaultCurveSegments = function getDefaultCurveSegments() {\n    return defaultCurveSegments;\n  };\n\n  var setIdPrefix = function setIdPrefix(value) {\n    idPrefix$1 = value;\n  };\n\n  var getIdPrefix = function getIdPrefix() {\n    return idPrefix$1;\n  };\n\n  function createNS(type) {\n    // return {appendChild:function(){},setAttribute:function(){},style:{}}\n    return document.createElementNS(svgNS, type);\n  }\n\n  function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n  var dataManager = function () {\n    var _counterId = 1;\n    var processes = [];\n    var workerFn;\n    var workerInstance;\n    var workerProxy = {\n      onmessage: function onmessage() {},\n      postMessage: function postMessage(path) {\n        workerFn({\n          data: path\n        });\n      }\n    };\n    var _workerSelf = {\n      postMessage: function postMessage(data) {\n        workerProxy.onmessage({\n          data: data\n        });\n      }\n    };\n\n    function createWorker(fn) {\n      if (window.Worker && window.Blob && getWebWorker()) {\n        var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n          type: 'text/javascript'\n        }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n        var url = URL.createObjectURL(blob);\n        return new Worker(url);\n      }\n\n      workerFn = fn;\n      return workerProxy;\n    }\n\n    function setupWorker() {\n      if (!workerInstance) {\n        workerInstance = createWorker(function workerStart(e) {\n          function dataFunctionManager() {\n            function completeLayers(layers, comps) {\n              var layerData;\n              var i;\n              var len = layers.length;\n              var j;\n              var jLen;\n              var k;\n              var kLen;\n\n              for (i = 0; i < len; i += 1) {\n                layerData = layers[i];\n\n                if ('ks' in layerData && !layerData.completed) {\n                  layerData.completed = true;\n\n                  if (layerData.hasMask) {\n                    var maskProps = layerData.masksProperties;\n                    jLen = maskProps.length;\n\n                    for (j = 0; j < jLen; j += 1) {\n                      if (maskProps[j].pt.k.i) {\n                        convertPathsToAbsoluteValues(maskProps[j].pt.k);\n                      } else {\n                        kLen = maskProps[j].pt.k.length;\n\n                        for (k = 0; k < kLen; k += 1) {\n                          if (maskProps[j].pt.k[k].s) {\n                            convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n                          }\n\n                          if (maskProps[j].pt.k[k].e) {\n                            convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n                          }\n                        }\n                      }\n                    }\n                  }\n\n                  if (layerData.ty === 0) {\n                    layerData.layers = findCompLayers(layerData.refId, comps);\n                    completeLayers(layerData.layers, comps);\n                  } else if (layerData.ty === 4) {\n                    completeShapes(layerData.shapes);\n                  } else if (layerData.ty === 5) {\n                    completeText(layerData);\n                  }\n                }\n              }\n            }\n\n            function completeChars(chars, assets) {\n              if (chars) {\n                var i = 0;\n                var len = chars.length;\n\n                for (i = 0; i < len; i += 1) {\n                  if (chars[i].t === 1) {\n                    // var compData = findComp(chars[i].data.refId, assets);\n                    chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n                    // chars[i].data.op = 99999;\n                    // chars[i].data.st = 0;\n                    // chars[i].data.sr = 1;\n                    // chars[i].w = compData.w;\n                    // chars[i].data.ks = {\n                    //   a: { k: [0, 0, 0], a: 0 },\n                    //   p: { k: [0, -compData.h, 0], a: 0 },\n                    //   r: { k: 0, a: 0 },\n                    //   s: { k: [100, 100], a: 0 },\n                    //   o: { k: 100, a: 0 },\n                    // };\n\n                    completeLayers(chars[i].data.layers, assets);\n                  }\n                }\n              }\n            }\n\n            function findComp(id, comps) {\n              var i = 0;\n              var len = comps.length;\n\n              while (i < len) {\n                if (comps[i].id === id) {\n                  return comps[i];\n                }\n\n                i += 1;\n              }\n\n              return null;\n            }\n\n            function findCompLayers(id, comps) {\n              var comp = findComp(id, comps);\n\n              if (comp) {\n                if (!comp.layers.__used) {\n                  comp.layers.__used = true;\n                  return comp.layers;\n                }\n\n                return JSON.parse(JSON.stringify(comp.layers));\n              }\n\n              return null;\n            }\n\n            function completeShapes(arr) {\n              var i;\n              var len = arr.length;\n              var j;\n              var jLen;\n\n              for (i = len - 1; i >= 0; i -= 1) {\n                if (arr[i].ty === 'sh') {\n                  if (arr[i].ks.k.i) {\n                    convertPathsToAbsoluteValues(arr[i].ks.k);\n                  } else {\n                    jLen = arr[i].ks.k.length;\n\n                    for (j = 0; j < jLen; j += 1) {\n                      if (arr[i].ks.k[j].s) {\n                        convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n                      }\n\n                      if (arr[i].ks.k[j].e) {\n                        convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n                      }\n                    }\n                  }\n                } else if (arr[i].ty === 'gr') {\n                  completeShapes(arr[i].it);\n                }\n              }\n            }\n\n            function convertPathsToAbsoluteValues(path) {\n              var i;\n              var len = path.i.length;\n\n              for (i = 0; i < len; i += 1) {\n                path.i[i][0] += path.v[i][0];\n                path.i[i][1] += path.v[i][1];\n                path.o[i][0] += path.v[i][0];\n                path.o[i][1] += path.v[i][1];\n              }\n            }\n\n            function checkVersion(minimum, animVersionString) {\n              var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n              if (minimum[0] > animVersion[0]) {\n                return true;\n              }\n\n              if (animVersion[0] > minimum[0]) {\n                return false;\n              }\n\n              if (minimum[1] > animVersion[1]) {\n                return true;\n              }\n\n              if (animVersion[1] > minimum[1]) {\n                return false;\n              }\n\n              if (minimum[2] > animVersion[2]) {\n                return true;\n              }\n\n              if (animVersion[2] > minimum[2]) {\n                return false;\n              }\n\n              return null;\n            }\n\n            var checkText = function () {\n              var minimumVersion = [4, 4, 14];\n\n              function updateTextLayer(textLayer) {\n                var documentData = textLayer.t.d;\n                textLayer.t.d = {\n                  k: [{\n                    s: documentData,\n                    t: 0\n                  }]\n                };\n              }\n\n              function iterateLayers(layers) {\n                var i;\n                var len = layers.length;\n\n                for (i = 0; i < len; i += 1) {\n                  if (layers[i].ty === 5) {\n                    updateTextLayer(layers[i]);\n                  }\n                }\n              }\n\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            var checkChars = function () {\n              var minimumVersion = [4, 7, 99];\n              return function (animationData) {\n                if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n                  var i;\n                  var len = animationData.chars.length;\n\n                  for (i = 0; i < len; i += 1) {\n                    var charData = animationData.chars[i];\n\n                    if (charData.data && charData.data.shapes) {\n                      completeShapes(charData.data.shapes);\n                      charData.data.ip = 0;\n                      charData.data.op = 99999;\n                      charData.data.st = 0;\n                      charData.data.sr = 1;\n                      charData.data.ks = {\n                        p: {\n                          k: [0, 0],\n                          a: 0\n                        },\n                        s: {\n                          k: [100, 100],\n                          a: 0\n                        },\n                        a: {\n                          k: [0, 0],\n                          a: 0\n                        },\n                        r: {\n                          k: 0,\n                          a: 0\n                        },\n                        o: {\n                          k: 100,\n                          a: 0\n                        }\n                      };\n\n                      if (!animationData.chars[i].t) {\n                        charData.data.shapes.push({\n                          ty: 'no'\n                        });\n                        charData.data.shapes[0].it.push({\n                          p: {\n                            k: [0, 0],\n                            a: 0\n                          },\n                          s: {\n                            k: [100, 100],\n                            a: 0\n                          },\n                          a: {\n                            k: [0, 0],\n                            a: 0\n                          },\n                          r: {\n                            k: 0,\n                            a: 0\n                          },\n                          o: {\n                            k: 100,\n                            a: 0\n                          },\n                          sk: {\n                            k: 0,\n                            a: 0\n                          },\n                          sa: {\n                            k: 0,\n                            a: 0\n                          },\n                          ty: 'tr'\n                        });\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            var checkPathProperties = function () {\n              var minimumVersion = [5, 7, 15];\n\n              function updateTextLayer(textLayer) {\n                var pathData = textLayer.t.p;\n\n                if (typeof pathData.a === 'number') {\n                  pathData.a = {\n                    a: 0,\n                    k: pathData.a\n                  };\n                }\n\n                if (typeof pathData.p === 'number') {\n                  pathData.p = {\n                    a: 0,\n                    k: pathData.p\n                  };\n                }\n\n                if (typeof pathData.r === 'number') {\n                  pathData.r = {\n                    a: 0,\n                    k: pathData.r\n                  };\n                }\n              }\n\n              function iterateLayers(layers) {\n                var i;\n                var len = layers.length;\n\n                for (i = 0; i < len; i += 1) {\n                  if (layers[i].ty === 5) {\n                    updateTextLayer(layers[i]);\n                  }\n                }\n              }\n\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            var checkColors = function () {\n              var minimumVersion = [4, 1, 9];\n\n              function iterateShapes(shapes) {\n                var i;\n                var len = shapes.length;\n                var j;\n                var jLen;\n\n                for (i = 0; i < len; i += 1) {\n                  if (shapes[i].ty === 'gr') {\n                    iterateShapes(shapes[i].it);\n                  } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n                    if (shapes[i].c.k && shapes[i].c.k[0].i) {\n                      jLen = shapes[i].c.k.length;\n\n                      for (j = 0; j < jLen; j += 1) {\n                        if (shapes[i].c.k[j].s) {\n                          shapes[i].c.k[j].s[0] /= 255;\n                          shapes[i].c.k[j].s[1] /= 255;\n                          shapes[i].c.k[j].s[2] /= 255;\n                          shapes[i].c.k[j].s[3] /= 255;\n                        }\n\n                        if (shapes[i].c.k[j].e) {\n                          shapes[i].c.k[j].e[0] /= 255;\n                          shapes[i].c.k[j].e[1] /= 255;\n                          shapes[i].c.k[j].e[2] /= 255;\n                          shapes[i].c.k[j].e[3] /= 255;\n                        }\n                      }\n                    } else {\n                      shapes[i].c.k[0] /= 255;\n                      shapes[i].c.k[1] /= 255;\n                      shapes[i].c.k[2] /= 255;\n                      shapes[i].c.k[3] /= 255;\n                    }\n                  }\n                }\n              }\n\n              function iterateLayers(layers) {\n                var i;\n                var len = layers.length;\n\n                for (i = 0; i < len; i += 1) {\n                  if (layers[i].ty === 4) {\n                    iterateShapes(layers[i].shapes);\n                  }\n                }\n              }\n\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            var checkShapes = function () {\n              var minimumVersion = [4, 4, 18];\n\n              function completeClosingShapes(arr) {\n                var i;\n                var len = arr.length;\n                var j;\n                var jLen;\n\n                for (i = len - 1; i >= 0; i -= 1) {\n                  if (arr[i].ty === 'sh') {\n                    if (arr[i].ks.k.i) {\n                      arr[i].ks.k.c = arr[i].closed;\n                    } else {\n                      jLen = arr[i].ks.k.length;\n\n                      for (j = 0; j < jLen; j += 1) {\n                        if (arr[i].ks.k[j].s) {\n                          arr[i].ks.k[j].s[0].c = arr[i].closed;\n                        }\n\n                        if (arr[i].ks.k[j].e) {\n                          arr[i].ks.k[j].e[0].c = arr[i].closed;\n                        }\n                      }\n                    }\n                  } else if (arr[i].ty === 'gr') {\n                    completeClosingShapes(arr[i].it);\n                  }\n                }\n              }\n\n              function iterateLayers(layers) {\n                var layerData;\n                var i;\n                var len = layers.length;\n                var j;\n                var jLen;\n                var k;\n                var kLen;\n\n                for (i = 0; i < len; i += 1) {\n                  layerData = layers[i];\n\n                  if (layerData.hasMask) {\n                    var maskProps = layerData.masksProperties;\n                    jLen = maskProps.length;\n\n                    for (j = 0; j < jLen; j += 1) {\n                      if (maskProps[j].pt.k.i) {\n                        maskProps[j].pt.k.c = maskProps[j].cl;\n                      } else {\n                        kLen = maskProps[j].pt.k.length;\n\n                        for (k = 0; k < kLen; k += 1) {\n                          if (maskProps[j].pt.k[k].s) {\n                            maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n                          }\n\n                          if (maskProps[j].pt.k[k].e) {\n                            maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n                          }\n                        }\n                      }\n                    }\n                  }\n\n                  if (layerData.ty === 4) {\n                    completeClosingShapes(layerData.shapes);\n                  }\n                }\n              }\n\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n\n            function completeData(animationData) {\n              if (animationData.__complete) {\n                return;\n              }\n\n              checkColors(animationData);\n              checkText(animationData);\n              checkChars(animationData);\n              checkPathProperties(animationData);\n              checkShapes(animationData);\n              completeLayers(animationData.layers, animationData.assets);\n              completeChars(animationData.chars, animationData.assets);\n              animationData.__complete = true;\n            }\n\n            function completeText(data) {\n              if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n              }\n            }\n\n            var moduleOb = {};\n            moduleOb.completeData = completeData;\n            moduleOb.checkColors = checkColors;\n            moduleOb.checkChars = checkChars;\n            moduleOb.checkPathProperties = checkPathProperties;\n            moduleOb.checkShapes = checkShapes;\n            moduleOb.completeLayers = completeLayers;\n            return moduleOb;\n          }\n\n          if (!_workerSelf.dataManager) {\n            _workerSelf.dataManager = dataFunctionManager();\n          }\n\n          if (!_workerSelf.assetLoader) {\n            _workerSelf.assetLoader = function () {\n              function formatResponse(xhr) {\n                // using typeof doubles the time of execution of this method,\n                // so if available, it's better to use the header to validate the type\n                var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n                if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n                  return xhr.response;\n                }\n\n                if (xhr.response && _typeof$5(xhr.response) === 'object') {\n                  return xhr.response;\n                }\n\n                if (xhr.response && typeof xhr.response === 'string') {\n                  return JSON.parse(xhr.response);\n                }\n\n                if (xhr.responseText) {\n                  return JSON.parse(xhr.responseText);\n                }\n\n                return null;\n              }\n\n              function loadAsset(path, fullPath, callback, errorCallback) {\n                var response;\n                var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n                try {\n                  // This crashes on Android WebView prior to KitKat\n                  xhr.responseType = 'json';\n                } catch (err) {} // eslint-disable-line no-empty\n\n\n                xhr.onreadystatechange = function () {\n                  if (xhr.readyState === 4) {\n                    if (xhr.status === 200) {\n                      response = formatResponse(xhr);\n                      callback(response);\n                    } else {\n                      try {\n                        response = formatResponse(xhr);\n                        callback(response);\n                      } catch (err) {\n                        if (errorCallback) {\n                          errorCallback(err);\n                        }\n                      }\n                    }\n                  }\n                };\n\n                try {\n                  // Hack to workaround banner validation\n                  xhr.open(['G', 'E', 'T'].join(''), path, true);\n                } catch (error) {\n                  // Hack to workaround banner validation\n                  xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n                }\n\n                xhr.send();\n              }\n\n              return {\n                load: loadAsset\n              };\n            }();\n          }\n\n          if (e.data.type === 'loadAnimation') {\n            _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n              _workerSelf.dataManager.completeData(data);\n\n              _workerSelf.postMessage({\n                id: e.data.id,\n                payload: data,\n                status: 'success'\n              });\n            }, function () {\n              _workerSelf.postMessage({\n                id: e.data.id,\n                status: 'error'\n              });\n            });\n          } else if (e.data.type === 'complete') {\n            var animation = e.data.animation;\n\n            _workerSelf.dataManager.completeData(animation);\n\n            _workerSelf.postMessage({\n              id: e.data.id,\n              payload: animation,\n              status: 'success'\n            });\n          } else if (e.data.type === 'loadData') {\n            _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n              _workerSelf.postMessage({\n                id: e.data.id,\n                payload: data,\n                status: 'success'\n              });\n            }, function () {\n              _workerSelf.postMessage({\n                id: e.data.id,\n                status: 'error'\n              });\n            });\n          }\n        });\n\n        workerInstance.onmessage = function (event) {\n          var data = event.data;\n          var id = data.id;\n          var process = processes[id];\n          processes[id] = null;\n\n          if (data.status === 'success') {\n            process.onComplete(data.payload);\n          } else if (process.onError) {\n            process.onError();\n          }\n        };\n      }\n    }\n\n    function createProcess(onComplete, onError) {\n      _counterId += 1;\n      var id = 'processId_' + _counterId;\n      processes[id] = {\n        onComplete: onComplete,\n        onError: onError\n      };\n      return id;\n    }\n\n    function loadAnimation(path, onComplete, onError) {\n      setupWorker();\n      var processId = createProcess(onComplete, onError);\n      workerInstance.postMessage({\n        type: 'loadAnimation',\n        path: path,\n        fullPath: window.location.origin + window.location.pathname,\n        id: processId\n      });\n    }\n\n    function loadData(path, onComplete, onError) {\n      setupWorker();\n      var processId = createProcess(onComplete, onError);\n      workerInstance.postMessage({\n        type: 'loadData',\n        path: path,\n        fullPath: window.location.origin + window.location.pathname,\n        id: processId\n      });\n    }\n\n    function completeAnimation(anim, onComplete, onError) {\n      setupWorker();\n      var processId = createProcess(onComplete, onError);\n      workerInstance.postMessage({\n        type: 'complete',\n        animation: anim,\n        id: processId\n      });\n    }\n\n    return {\n      loadAnimation: loadAnimation,\n      loadData: loadData,\n      completeAnimation: completeAnimation\n    };\n  }();\n\n  var ImagePreloader = function () {\n    var proxyImage = function () {\n      var canvas = createTag('canvas');\n      canvas.width = 1;\n      canvas.height = 1;\n      var ctx = canvas.getContext('2d');\n      ctx.fillStyle = 'rgba(0,0,0,0)';\n      ctx.fillRect(0, 0, 1, 1);\n      return canvas;\n    }();\n\n    function imageLoaded() {\n      this.loadedAssets += 1;\n\n      if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n        if (this.imagesLoadedCb) {\n          this.imagesLoadedCb(null);\n        }\n      }\n    }\n\n    function footageLoaded() {\n      this.loadedFootagesCount += 1;\n\n      if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n        if (this.imagesLoadedCb) {\n          this.imagesLoadedCb(null);\n        }\n      }\n    }\n\n    function getAssetsPath(assetData, assetsPath, originalPath) {\n      var path = '';\n\n      if (assetData.e) {\n        path = assetData.p;\n      } else if (assetsPath) {\n        var imagePath = assetData.p;\n\n        if (imagePath.indexOf('images/') !== -1) {\n          imagePath = imagePath.split('/')[1];\n        }\n\n        path = assetsPath + imagePath;\n      } else {\n        path = originalPath;\n        path += assetData.u ? assetData.u : '';\n        path += assetData.p;\n      }\n\n      return path;\n    }\n\n    function testImageLoaded(img) {\n      var _count = 0;\n      var intervalId = setInterval(function () {\n        var box = img.getBBox();\n\n        if (box.width || _count > 500) {\n          this._imageLoaded();\n\n          clearInterval(intervalId);\n        }\n\n        _count += 1;\n      }.bind(this), 50);\n    }\n\n    function createImageData(assetData) {\n      var path = getAssetsPath(assetData, this.assetsPath, this.path);\n      var img = createNS('image');\n\n      if (isSafari) {\n        this.testImageLoaded(img);\n      } else {\n        img.addEventListener('load', this._imageLoaded, false);\n      }\n\n      img.addEventListener('error', function () {\n        ob.img = proxyImage;\n\n        this._imageLoaded();\n      }.bind(this), false);\n      img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n      if (this._elementHelper.append) {\n        this._elementHelper.append(img);\n      } else {\n        this._elementHelper.appendChild(img);\n      }\n\n      var ob = {\n        img: img,\n        assetData: assetData\n      };\n      return ob;\n    }\n\n    function createImgData(assetData) {\n      var path = getAssetsPath(assetData, this.assetsPath, this.path);\n      var img = createTag('img');\n      img.crossOrigin = 'anonymous';\n      img.addEventListener('load', this._imageLoaded, false);\n      img.addEventListener('error', function () {\n        ob.img = proxyImage;\n\n        this._imageLoaded();\n      }.bind(this), false);\n      img.src = path;\n      var ob = {\n        img: img,\n        assetData: assetData\n      };\n      return ob;\n    }\n\n    function createFootageData(data) {\n      var ob = {\n        assetData: data\n      };\n      var path = getAssetsPath(data, this.assetsPath, this.path);\n      dataManager.loadData(path, function (footageData) {\n        ob.img = footageData;\n\n        this._footageLoaded();\n      }.bind(this), function () {\n        ob.img = {};\n\n        this._footageLoaded();\n      }.bind(this));\n      return ob;\n    }\n\n    function loadAssets(assets, cb) {\n      this.imagesLoadedCb = cb;\n      var i;\n      var len = assets.length;\n\n      for (i = 0; i < len; i += 1) {\n        if (!assets[i].layers) {\n          if (!assets[i].t || assets[i].t === 'seq') {\n            this.totalImages += 1;\n            this.images.push(this._createImageData(assets[i]));\n          } else if (assets[i].t === 3) {\n            this.totalFootages += 1;\n            this.images.push(this.createFootageData(assets[i]));\n          }\n        }\n      }\n    }\n\n    function setPath(path) {\n      this.path = path || '';\n    }\n\n    function setAssetsPath(path) {\n      this.assetsPath = path || '';\n    }\n\n    function getAsset(assetData) {\n      var i = 0;\n      var len = this.images.length;\n\n      while (i < len) {\n        if (this.images[i].assetData === assetData) {\n          return this.images[i].img;\n        }\n\n        i += 1;\n      }\n\n      return null;\n    }\n\n    function destroy() {\n      this.imagesLoadedCb = null;\n      this.images.length = 0;\n    }\n\n    function loadedImages() {\n      return this.totalImages === this.loadedAssets;\n    }\n\n    function loadedFootages() {\n      return this.totalFootages === this.loadedFootagesCount;\n    }\n\n    function setCacheType(type, elementHelper) {\n      if (type === 'svg') {\n        this._elementHelper = elementHelper;\n        this._createImageData = this.createImageData.bind(this);\n      } else {\n        this._createImageData = this.createImgData.bind(this);\n      }\n    }\n\n    function ImagePreloaderFactory() {\n      this._imageLoaded = imageLoaded.bind(this);\n      this._footageLoaded = footageLoaded.bind(this);\n      this.testImageLoaded = testImageLoaded.bind(this);\n      this.createFootageData = createFootageData.bind(this);\n      this.assetsPath = '';\n      this.path = '';\n      this.totalImages = 0;\n      this.totalFootages = 0;\n      this.loadedAssets = 0;\n      this.loadedFootagesCount = 0;\n      this.imagesLoadedCb = null;\n      this.images = [];\n    }\n\n    ImagePreloaderFactory.prototype = {\n      loadAssets: loadAssets,\n      setAssetsPath: setAssetsPath,\n      setPath: setPath,\n      loadedImages: loadedImages,\n      loadedFootages: loadedFootages,\n      destroy: destroy,\n      getAsset: getAsset,\n      createImgData: createImgData,\n      createImageData: createImageData,\n      imageLoaded: imageLoaded,\n      footageLoaded: footageLoaded,\n      setCacheType: setCacheType\n    };\n    return ImagePreloaderFactory;\n  }();\n\n  function BaseEvent() {}\n\n  BaseEvent.prototype = {\n    triggerEvent: function triggerEvent(eventName, args) {\n      if (this._cbs[eventName]) {\n        var callbacks = this._cbs[eventName];\n\n        for (var i = 0; i < callbacks.length; i += 1) {\n          callbacks[i](args);\n        }\n      }\n    },\n    addEventListener: function addEventListener(eventName, callback) {\n      if (!this._cbs[eventName]) {\n        this._cbs[eventName] = [];\n      }\n\n      this._cbs[eventName].push(callback);\n\n      return function () {\n        this.removeEventListener(eventName, callback);\n      }.bind(this);\n    },\n    removeEventListener: function removeEventListener(eventName, callback) {\n      if (!callback) {\n        this._cbs[eventName] = null;\n      } else if (this._cbs[eventName]) {\n        var i = 0;\n        var len = this._cbs[eventName].length;\n\n        while (i < len) {\n          if (this._cbs[eventName][i] === callback) {\n            this._cbs[eventName].splice(i, 1);\n\n            i -= 1;\n            len -= 1;\n          }\n\n          i += 1;\n        }\n\n        if (!this._cbs[eventName].length) {\n          this._cbs[eventName] = null;\n        }\n      }\n    }\n  };\n\n  var markerParser = function () {\n    function parsePayloadLines(payload) {\n      var lines = payload.split('\\r\\n');\n      var keys = {};\n      var line;\n      var keysCount = 0;\n\n      for (var i = 0; i < lines.length; i += 1) {\n        line = lines[i].split(':');\n\n        if (line.length === 2) {\n          keys[line[0]] = line[1].trim();\n          keysCount += 1;\n        }\n      }\n\n      if (keysCount === 0) {\n        throw new Error();\n      }\n\n      return keys;\n    }\n\n    return function (_markers) {\n      var markers = [];\n\n      for (var i = 0; i < _markers.length; i += 1) {\n        var _marker = _markers[i];\n        var markerData = {\n          time: _marker.tm,\n          duration: _marker.dr\n        };\n\n        try {\n          markerData.payload = JSON.parse(_markers[i].cm);\n        } catch (_) {\n          try {\n            markerData.payload = parsePayloadLines(_markers[i].cm);\n          } catch (__) {\n            markerData.payload = {\n              name: _markers[i].cm\n            };\n          }\n        }\n\n        markers.push(markerData);\n      }\n\n      return markers;\n    };\n  }();\n\n  var ProjectInterface = function () {\n    function registerComposition(comp) {\n      this.compositions.push(comp);\n    }\n\n    return function () {\n      function _thisProjectFunction(name) {\n        var i = 0;\n        var len = this.compositions.length;\n\n        while (i < len) {\n          if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n            if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n              this.compositions[i].prepareFrame(this.currentFrame);\n            }\n\n            return this.compositions[i].compInterface;\n          }\n\n          i += 1;\n        }\n\n        return null;\n      }\n\n      _thisProjectFunction.compositions = [];\n      _thisProjectFunction.currentFrame = 0;\n      _thisProjectFunction.registerComposition = registerComposition;\n      return _thisProjectFunction;\n    };\n  }();\n\n  var renderers = {};\n\n  var registerRenderer = function registerRenderer(key, value) {\n    renderers[key] = value;\n  };\n\n  function getRenderer(key) {\n    return renderers[key];\n  }\n\n  function getRegisteredRenderer() {\n    // Returns canvas by default for compatibility\n    if (renderers.canvas) {\n      return 'canvas';\n    } // Returns any renderer that is registered\n\n\n    for (var key in renderers) {\n      if (renderers[key]) {\n        return key;\n      }\n    }\n\n    return '';\n  }\n\n  function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n  var AnimationItem = function AnimationItem() {\n    this._cbs = [];\n    this.name = '';\n    this.path = '';\n    this.isLoaded = false;\n    this.currentFrame = 0;\n    this.currentRawFrame = 0;\n    this.firstFrame = 0;\n    this.totalFrames = 0;\n    this.frameRate = 0;\n    this.frameMult = 0;\n    this.playSpeed = 1;\n    this.playDirection = 1;\n    this.playCount = 0;\n    this.animationData = {};\n    this.assets = [];\n    this.isPaused = true;\n    this.autoplay = false;\n    this.loop = true;\n    this.renderer = null;\n    this.animationID = createElementID();\n    this.assetsPath = '';\n    this.timeCompleted = 0;\n    this.segmentPos = 0;\n    this.isSubframeEnabled = getSubframeEnabled();\n    this.segments = [];\n    this._idle = true;\n    this._completedLoop = false;\n    this.projectInterface = ProjectInterface();\n    this.imagePreloader = new ImagePreloader();\n    this.audioController = audioControllerFactory();\n    this.markers = [];\n    this.configAnimation = this.configAnimation.bind(this);\n    this.onSetupError = this.onSetupError.bind(this);\n    this.onSegmentComplete = this.onSegmentComplete.bind(this);\n    this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n    this.expressionsPlugin = getExpressionsPlugin();\n  };\n\n  extendPrototype([BaseEvent], AnimationItem);\n\n  AnimationItem.prototype.setParams = function (params) {\n    if (params.wrapper || params.container) {\n      this.wrapper = params.wrapper || params.container;\n    }\n\n    var animType = 'svg';\n\n    if (params.animType) {\n      animType = params.animType;\n    } else if (params.renderer) {\n      animType = params.renderer;\n    }\n\n    var RendererClass = getRenderer(animType);\n    this.renderer = new RendererClass(this, params.rendererSettings);\n    this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n    this.renderer.setProjectInterface(this.projectInterface);\n    this.animType = animType;\n\n    if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n      this.loop = true;\n    } else if (params.loop === false) {\n      this.loop = false;\n    } else {\n      this.loop = parseInt(params.loop, 10);\n    }\n\n    this.autoplay = 'autoplay' in params ? params.autoplay : true;\n    this.name = params.name ? params.name : '';\n    this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n    this.assetsPath = params.assetsPath;\n    this.initialSegment = params.initialSegment;\n\n    if (params.audioFactory) {\n      this.audioController.setAudioFactory(params.audioFactory);\n    }\n\n    if (params.animationData) {\n      this.setupAnimation(params.animationData);\n    } else if (params.path) {\n      if (params.path.lastIndexOf('\\\\') !== -1) {\n        this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n      } else {\n        this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n      }\n\n      this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n      this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n      dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n    }\n  };\n\n  AnimationItem.prototype.onSetupError = function () {\n    this.trigger('data_failed');\n  };\n\n  AnimationItem.prototype.setupAnimation = function (data) {\n    dataManager.completeAnimation(data, this.configAnimation);\n  };\n\n  AnimationItem.prototype.setData = function (wrapper, animationData) {\n    if (animationData) {\n      if (_typeof$4(animationData) !== 'object') {\n        animationData = JSON.parse(animationData);\n      }\n    }\n\n    var params = {\n      wrapper: wrapper,\n      animationData: animationData\n    };\n    var wrapperAttributes = wrapper.attributes;\n    params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n    params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n    var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n    if (loop === 'false') {\n      params.loop = false;\n    } else if (loop === 'true') {\n      params.loop = true;\n    } else if (loop !== '') {\n      params.loop = parseInt(loop, 10);\n    }\n\n    var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n    params.autoplay = autoplay !== 'false';\n    params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n    var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n    if (prerender === 'false') {\n      params.prerender = false;\n    }\n\n    if (!params.path) {\n      this.trigger('destroy');\n    } else {\n      this.setParams(params);\n    }\n  };\n\n  AnimationItem.prototype.includeLayers = function (data) {\n    if (data.op > this.animationData.op) {\n      this.animationData.op = data.op;\n      this.totalFrames = Math.floor(data.op - this.animationData.ip);\n    }\n\n    var layers = this.animationData.layers;\n    var i;\n    var len = layers.length;\n    var newLayers = data.layers;\n    var j;\n    var jLen = newLayers.length;\n\n    for (j = 0; j < jLen; j += 1) {\n      i = 0;\n\n      while (i < len) {\n        if (layers[i].id === newLayers[j].id) {\n          layers[i] = newLayers[j];\n          break;\n        }\n\n        i += 1;\n      }\n    }\n\n    if (data.chars || data.fonts) {\n      this.renderer.globalData.fontManager.addChars(data.chars);\n      this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n    }\n\n    if (data.assets) {\n      len = data.assets.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.animationData.assets.push(data.assets[i]);\n      }\n    }\n\n    this.animationData.__complete = false;\n    dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n  };\n\n  AnimationItem.prototype.onSegmentComplete = function (data) {\n    this.animationData = data;\n    var expressionsPlugin = getExpressionsPlugin();\n\n    if (expressionsPlugin) {\n      expressionsPlugin.initExpressions(this);\n    }\n\n    this.loadNextSegment();\n  };\n\n  AnimationItem.prototype.loadNextSegment = function () {\n    var segments = this.animationData.segments;\n\n    if (!segments || segments.length === 0 || !this.autoloadSegments) {\n      this.trigger('data_ready');\n      this.timeCompleted = this.totalFrames;\n      return;\n    }\n\n    var segment = segments.shift();\n    this.timeCompleted = segment.time * this.frameRate;\n    var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n    this.segmentPos += 1;\n    dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n      this.trigger('data_failed');\n    }.bind(this));\n  };\n\n  AnimationItem.prototype.loadSegments = function () {\n    var segments = this.animationData.segments;\n\n    if (!segments) {\n      this.timeCompleted = this.totalFrames;\n    }\n\n    this.loadNextSegment();\n  };\n\n  AnimationItem.prototype.imagesLoaded = function () {\n    this.trigger('loaded_images');\n    this.checkLoaded();\n  };\n\n  AnimationItem.prototype.preloadImages = function () {\n    this.imagePreloader.setAssetsPath(this.assetsPath);\n    this.imagePreloader.setPath(this.path);\n    this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n  };\n\n  AnimationItem.prototype.configAnimation = function (animData) {\n    if (!this.renderer) {\n      return;\n    }\n\n    try {\n      this.animationData = animData;\n\n      if (this.initialSegment) {\n        this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n        this.firstFrame = Math.round(this.initialSegment[0]);\n      } else {\n        this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n        this.firstFrame = Math.round(this.animationData.ip);\n      }\n\n      this.renderer.configAnimation(animData);\n\n      if (!animData.assets) {\n        animData.assets = [];\n      }\n\n      this.assets = this.animationData.assets;\n      this.frameRate = this.animationData.fr;\n      this.frameMult = this.animationData.fr / 1000;\n      this.renderer.searchExtraCompositions(animData.assets);\n      this.markers = markerParser(animData.markers || []);\n      this.trigger('config_ready');\n      this.preloadImages();\n      this.loadSegments();\n      this.updaFrameModifier();\n      this.waitForFontsLoaded();\n\n      if (this.isPaused) {\n        this.audioController.pause();\n      }\n    } catch (error) {\n      this.triggerConfigError(error);\n    }\n  };\n\n  AnimationItem.prototype.waitForFontsLoaded = function () {\n    if (!this.renderer) {\n      return;\n    }\n\n    if (this.renderer.globalData.fontManager.isLoaded) {\n      this.checkLoaded();\n    } else {\n      setTimeout(this.waitForFontsLoaded.bind(this), 20);\n    }\n  };\n\n  AnimationItem.prototype.checkLoaded = function () {\n    if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n      this.isLoaded = true;\n      var expressionsPlugin = getExpressionsPlugin();\n\n      if (expressionsPlugin) {\n        expressionsPlugin.initExpressions(this);\n      }\n\n      this.renderer.initItems();\n      setTimeout(function () {\n        this.trigger('DOMLoaded');\n      }.bind(this), 0);\n      this.gotoFrame();\n\n      if (this.autoplay) {\n        this.play();\n      }\n    }\n  };\n\n  AnimationItem.prototype.resize = function (width, height) {\n    // Adding this validation for backwards compatibility in case an event object was being passed down\n    var _width = typeof width === 'number' ? width : undefined;\n\n    var _height = typeof height === 'number' ? height : undefined;\n\n    this.renderer.updateContainerSize(_width, _height);\n  };\n\n  AnimationItem.prototype.setSubframe = function (flag) {\n    this.isSubframeEnabled = !!flag;\n  };\n\n  AnimationItem.prototype.gotoFrame = function () {\n    this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n    if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n      this.currentFrame = this.timeCompleted;\n    }\n\n    this.trigger('enterFrame');\n    this.renderFrame();\n    this.trigger('drawnFrame');\n  };\n\n  AnimationItem.prototype.renderFrame = function () {\n    if (this.isLoaded === false || !this.renderer) {\n      return;\n    }\n\n    try {\n      if (this.expressionsPlugin) {\n        this.expressionsPlugin.resetFrame();\n      }\n\n      this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n    } catch (error) {\n      this.triggerRenderFrameError(error);\n    }\n  };\n\n  AnimationItem.prototype.play = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    if (this.isPaused === true) {\n      this.isPaused = false;\n      this.trigger('_play');\n      this.audioController.resume();\n\n      if (this._idle) {\n        this._idle = false;\n        this.trigger('_active');\n      }\n    }\n  };\n\n  AnimationItem.prototype.pause = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    if (this.isPaused === false) {\n      this.isPaused = true;\n      this.trigger('_pause');\n      this._idle = true;\n      this.trigger('_idle');\n      this.audioController.pause();\n    }\n  };\n\n  AnimationItem.prototype.togglePause = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    if (this.isPaused === true) {\n      this.play();\n    } else {\n      this.pause();\n    }\n  };\n\n  AnimationItem.prototype.stop = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    this.pause();\n    this.playCount = 0;\n    this._completedLoop = false;\n    this.setCurrentRawFrameValue(0);\n  };\n\n  AnimationItem.prototype.getMarkerData = function (markerName) {\n    var marker;\n\n    for (var i = 0; i < this.markers.length; i += 1) {\n      marker = this.markers[i];\n\n      if (marker.payload && marker.payload.name === markerName) {\n        return marker;\n      }\n    }\n\n    return null;\n  };\n\n  AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    var numValue = Number(value);\n\n    if (isNaN(numValue)) {\n      var marker = this.getMarkerData(value);\n\n      if (marker) {\n        this.goToAndStop(marker.time, true);\n      }\n    } else if (isFrame) {\n      this.setCurrentRawFrameValue(value);\n    } else {\n      this.setCurrentRawFrameValue(value * this.frameModifier);\n    }\n\n    this.pause();\n  };\n\n  AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    var numValue = Number(value);\n\n    if (isNaN(numValue)) {\n      var marker = this.getMarkerData(value);\n\n      if (marker) {\n        if (!marker.duration) {\n          this.goToAndStop(marker.time, true);\n        } else {\n          this.playSegments([marker.time, marker.time + marker.duration], true);\n        }\n      }\n    } else {\n      this.goToAndStop(numValue, isFrame, name);\n    }\n\n    this.play();\n  };\n\n  AnimationItem.prototype.advanceTime = function (value) {\n    if (this.isPaused === true || this.isLoaded === false) {\n      return;\n    }\n\n    var nextValue = this.currentRawFrame + value * this.frameModifier;\n    var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n    // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n    if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n      if (!this.loop || this.playCount === this.loop) {\n        if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n          _isComplete = true;\n          nextValue = this.totalFrames - 1;\n        }\n      } else if (nextValue >= this.totalFrames) {\n        this.playCount += 1;\n\n        if (!this.checkSegments(nextValue % this.totalFrames)) {\n          this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n          this._completedLoop = true;\n          this.trigger('loopComplete');\n        }\n      } else {\n        this.setCurrentRawFrameValue(nextValue);\n      }\n    } else if (nextValue < 0) {\n      if (!this.checkSegments(nextValue % this.totalFrames)) {\n        if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n          // eslint-disable-line no-plusplus\n          this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n          if (!this._completedLoop) {\n            this._completedLoop = true;\n          } else {\n            this.trigger('loopComplete');\n          }\n        } else {\n          _isComplete = true;\n          nextValue = 0;\n        }\n      }\n    } else {\n      this.setCurrentRawFrameValue(nextValue);\n    }\n\n    if (_isComplete) {\n      this.setCurrentRawFrameValue(nextValue);\n      this.pause();\n      this.trigger('complete');\n    }\n  };\n\n  AnimationItem.prototype.adjustSegment = function (arr, offset) {\n    this.playCount = 0;\n\n    if (arr[1] < arr[0]) {\n      if (this.frameModifier > 0) {\n        if (this.playSpeed < 0) {\n          this.setSpeed(-this.playSpeed);\n        } else {\n          this.setDirection(-1);\n        }\n      }\n\n      this.totalFrames = arr[0] - arr[1];\n      this.timeCompleted = this.totalFrames;\n      this.firstFrame = arr[1];\n      this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n    } else if (arr[1] > arr[0]) {\n      if (this.frameModifier < 0) {\n        if (this.playSpeed < 0) {\n          this.setSpeed(-this.playSpeed);\n        } else {\n          this.setDirection(1);\n        }\n      }\n\n      this.totalFrames = arr[1] - arr[0];\n      this.timeCompleted = this.totalFrames;\n      this.firstFrame = arr[0];\n      this.setCurrentRawFrameValue(0.001 + offset);\n    }\n\n    this.trigger('segmentStart');\n  };\n\n  AnimationItem.prototype.setSegment = function (init, end) {\n    var pendingFrame = -1;\n\n    if (this.isPaused) {\n      if (this.currentRawFrame + this.firstFrame < init) {\n        pendingFrame = init;\n      } else if (this.currentRawFrame + this.firstFrame > end) {\n        pendingFrame = end - init;\n      }\n    }\n\n    this.firstFrame = init;\n    this.totalFrames = end - init;\n    this.timeCompleted = this.totalFrames;\n\n    if (pendingFrame !== -1) {\n      this.goToAndStop(pendingFrame, true);\n    }\n  };\n\n  AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n    if (forceFlag) {\n      this.segments.length = 0;\n    }\n\n    if (_typeof$4(arr[0]) === 'object') {\n      var i;\n      var len = arr.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.segments.push(arr[i]);\n      }\n    } else {\n      this.segments.push(arr);\n    }\n\n    if (this.segments.length && forceFlag) {\n      this.adjustSegment(this.segments.shift(), 0);\n    }\n\n    if (this.isPaused) {\n      this.play();\n    }\n  };\n\n  AnimationItem.prototype.resetSegments = function (forceFlag) {\n    this.segments.length = 0;\n    this.segments.push([this.animationData.ip, this.animationData.op]);\n\n    if (forceFlag) {\n      this.checkSegments(0);\n    }\n  };\n\n  AnimationItem.prototype.checkSegments = function (offset) {\n    if (this.segments.length) {\n      this.adjustSegment(this.segments.shift(), offset);\n      return true;\n    }\n\n    return false;\n  };\n\n  AnimationItem.prototype.destroy = function (name) {\n    if (name && this.name !== name || !this.renderer) {\n      return;\n    }\n\n    this.renderer.destroy();\n    this.imagePreloader.destroy();\n    this.trigger('destroy');\n    this._cbs = null;\n    this.onEnterFrame = null;\n    this.onLoopComplete = null;\n    this.onComplete = null;\n    this.onSegmentStart = null;\n    this.onDestroy = null;\n    this.renderer = null;\n    this.expressionsPlugin = null;\n    this.imagePreloader = null;\n    this.projectInterface = null;\n  };\n\n  AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n    this.currentRawFrame = value;\n    this.gotoFrame();\n  };\n\n  AnimationItem.prototype.setSpeed = function (val) {\n    this.playSpeed = val;\n    this.updaFrameModifier();\n  };\n\n  AnimationItem.prototype.setDirection = function (val) {\n    this.playDirection = val < 0 ? -1 : 1;\n    this.updaFrameModifier();\n  };\n\n  AnimationItem.prototype.setLoop = function (isLooping) {\n    this.loop = isLooping;\n  };\n\n  AnimationItem.prototype.setVolume = function (val, name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    this.audioController.setVolume(val);\n  };\n\n  AnimationItem.prototype.getVolume = function () {\n    return this.audioController.getVolume();\n  };\n\n  AnimationItem.prototype.mute = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    this.audioController.mute();\n  };\n\n  AnimationItem.prototype.unmute = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n\n    this.audioController.unmute();\n  };\n\n  AnimationItem.prototype.updaFrameModifier = function () {\n    this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n    this.audioController.setRate(this.playSpeed * this.playDirection);\n  };\n\n  AnimationItem.prototype.getPath = function () {\n    return this.path;\n  };\n\n  AnimationItem.prototype.getAssetsPath = function (assetData) {\n    var path = '';\n\n    if (assetData.e) {\n      path = assetData.p;\n    } else if (this.assetsPath) {\n      var imagePath = assetData.p;\n\n      if (imagePath.indexOf('images/') !== -1) {\n        imagePath = imagePath.split('/')[1];\n      }\n\n      path = this.assetsPath + imagePath;\n    } else {\n      path = this.path;\n      path += assetData.u ? assetData.u : '';\n      path += assetData.p;\n    }\n\n    return path;\n  };\n\n  AnimationItem.prototype.getAssetData = function (id) {\n    var i = 0;\n    var len = this.assets.length;\n\n    while (i < len) {\n      if (id === this.assets[i].id) {\n        return this.assets[i];\n      }\n\n      i += 1;\n    }\n\n    return null;\n  };\n\n  AnimationItem.prototype.hide = function () {\n    this.renderer.hide();\n  };\n\n  AnimationItem.prototype.show = function () {\n    this.renderer.show();\n  };\n\n  AnimationItem.prototype.getDuration = function (isFrame) {\n    return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n  };\n\n  AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n    try {\n      var element = this.renderer.getElementByPath(path);\n      element.updateDocumentData(documentData, index);\n    } catch (error) {// TODO: decide how to handle catch case\n    }\n  };\n\n  AnimationItem.prototype.trigger = function (name) {\n    if (this._cbs && this._cbs[name]) {\n      switch (name) {\n        case 'enterFrame':\n          this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n          break;\n\n        case 'drawnFrame':\n          this.drawnFrameEvent.currentTime = this.currentFrame;\n          this.drawnFrameEvent.totalTime = this.totalFrames;\n          this.drawnFrameEvent.direction = this.frameModifier;\n          this.triggerEvent(name, this.drawnFrameEvent);\n          break;\n\n        case 'loopComplete':\n          this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n          break;\n\n        case 'complete':\n          this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n          break;\n\n        case 'segmentStart':\n          this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n          break;\n\n        case 'destroy':\n          this.triggerEvent(name, new BMDestroyEvent(name, this));\n          break;\n\n        default:\n          this.triggerEvent(name);\n      }\n    }\n\n    if (name === 'enterFrame' && this.onEnterFrame) {\n      this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n    }\n\n    if (name === 'loopComplete' && this.onLoopComplete) {\n      this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n    }\n\n    if (name === 'complete' && this.onComplete) {\n      this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n    }\n\n    if (name === 'segmentStart' && this.onSegmentStart) {\n      this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n    }\n\n    if (name === 'destroy' && this.onDestroy) {\n      this.onDestroy.call(this, new BMDestroyEvent(name, this));\n    }\n  };\n\n  AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n    var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n    this.triggerEvent('error', error);\n\n    if (this.onError) {\n      this.onError.call(this, error);\n    }\n  };\n\n  AnimationItem.prototype.triggerConfigError = function (nativeError) {\n    var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n    this.triggerEvent('error', error);\n\n    if (this.onError) {\n      this.onError.call(this, error);\n    }\n  };\n\n  var animationManager = function () {\n    var moduleOb = {};\n    var registeredAnimations = [];\n    var initTime = 0;\n    var len = 0;\n    var playingAnimationsNum = 0;\n    var _stopped = true;\n    var _isFrozen = false;\n\n    function removeElement(ev) {\n      var i = 0;\n      var animItem = ev.target;\n\n      while (i < len) {\n        if (registeredAnimations[i].animation === animItem) {\n          registeredAnimations.splice(i, 1);\n          i -= 1;\n          len -= 1;\n\n          if (!animItem.isPaused) {\n            subtractPlayingCount();\n          }\n        }\n\n        i += 1;\n      }\n    }\n\n    function registerAnimation(element, animationData) {\n      if (!element) {\n        return null;\n      }\n\n      var i = 0;\n\n      while (i < len) {\n        if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n          return registeredAnimations[i].animation;\n        }\n\n        i += 1;\n      }\n\n      var animItem = new AnimationItem();\n      setupAnimation(animItem, element);\n      animItem.setData(element, animationData);\n      return animItem;\n    }\n\n    function getRegisteredAnimations() {\n      var i;\n      var lenAnims = registeredAnimations.length;\n      var animations = [];\n\n      for (i = 0; i < lenAnims; i += 1) {\n        animations.push(registeredAnimations[i].animation);\n      }\n\n      return animations;\n    }\n\n    function addPlayingCount() {\n      playingAnimationsNum += 1;\n      activate();\n    }\n\n    function subtractPlayingCount() {\n      playingAnimationsNum -= 1;\n    }\n\n    function setupAnimation(animItem, element) {\n      animItem.addEventListener('destroy', removeElement);\n      animItem.addEventListener('_active', addPlayingCount);\n      animItem.addEventListener('_idle', subtractPlayingCount);\n      registeredAnimations.push({\n        elem: element,\n        animation: animItem\n      });\n      len += 1;\n    }\n\n    function loadAnimation(params) {\n      var animItem = new AnimationItem();\n      setupAnimation(animItem, null);\n      animItem.setParams(params);\n      return animItem;\n    }\n\n    function setSpeed(val, animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.setSpeed(val, animation);\n      }\n    }\n\n    function setDirection(val, animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.setDirection(val, animation);\n      }\n    }\n\n    function play(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.play(animation);\n      }\n    }\n\n    function resume(nowTime) {\n      var elapsedTime = nowTime - initTime;\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.advanceTime(elapsedTime);\n      }\n\n      initTime = nowTime;\n\n      if (playingAnimationsNum && !_isFrozen) {\n        window.requestAnimationFrame(resume);\n      } else {\n        _stopped = true;\n      }\n    }\n\n    function first(nowTime) {\n      initTime = nowTime;\n      window.requestAnimationFrame(resume);\n    }\n\n    function pause(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.pause(animation);\n      }\n    }\n\n    function goToAndStop(value, isFrame, animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n      }\n    }\n\n    function stop(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.stop(animation);\n      }\n    }\n\n    function togglePause(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.togglePause(animation);\n      }\n    }\n\n    function destroy(animation) {\n      var i;\n\n      for (i = len - 1; i >= 0; i -= 1) {\n        registeredAnimations[i].animation.destroy(animation);\n      }\n    }\n\n    function searchAnimations(animationData, standalone, renderer) {\n      var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n      var i;\n      var lenAnims = animElements.length;\n\n      for (i = 0; i < lenAnims; i += 1) {\n        if (renderer) {\n          animElements[i].setAttribute('data-bm-type', renderer);\n        }\n\n        registerAnimation(animElements[i], animationData);\n      }\n\n      if (standalone && lenAnims === 0) {\n        if (!renderer) {\n          renderer = 'svg';\n        }\n\n        var body = document.getElementsByTagName('body')[0];\n        body.innerText = '';\n        var div = createTag('div');\n        div.style.width = '100%';\n        div.style.height = '100%';\n        div.setAttribute('data-bm-type', renderer);\n        body.appendChild(div);\n        registerAnimation(div, animationData);\n      }\n    }\n\n    function resize() {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.resize();\n      }\n    }\n\n    function activate() {\n      if (!_isFrozen && playingAnimationsNum) {\n        if (_stopped) {\n          window.requestAnimationFrame(first);\n          _stopped = false;\n        }\n      }\n    }\n\n    function freeze() {\n      _isFrozen = true;\n    }\n\n    function unfreeze() {\n      _isFrozen = false;\n      activate();\n    }\n\n    function setVolume(val, animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.setVolume(val, animation);\n      }\n    }\n\n    function mute(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.mute(animation);\n      }\n    }\n\n    function unmute(animation) {\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.unmute(animation);\n      }\n    }\n\n    moduleOb.registerAnimation = registerAnimation;\n    moduleOb.loadAnimation = loadAnimation;\n    moduleOb.setSpeed = setSpeed;\n    moduleOb.setDirection = setDirection;\n    moduleOb.play = play;\n    moduleOb.pause = pause;\n    moduleOb.stop = stop;\n    moduleOb.togglePause = togglePause;\n    moduleOb.searchAnimations = searchAnimations;\n    moduleOb.resize = resize; // moduleOb.start = start;\n\n    moduleOb.goToAndStop = goToAndStop;\n    moduleOb.destroy = destroy;\n    moduleOb.freeze = freeze;\n    moduleOb.unfreeze = unfreeze;\n    moduleOb.setVolume = setVolume;\n    moduleOb.mute = mute;\n    moduleOb.unmute = unmute;\n    moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n    return moduleOb;\n  }();\n\n  /* eslint-disable */\n  var BezierFactory = function () {\n    /**\r\n       * BezierEasing - use bezier curve for transition easing function\r\n       * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n       *\r\n       * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n       * Usage:\r\n       * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n       * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n       *\r\n       */\n    var ob = {};\n    ob.getBezierEasing = getBezierEasing;\n    var beziers = {};\n\n    function getBezierEasing(a, b, c, d, nm) {\n      var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n      if (beziers[str]) {\n        return beziers[str];\n      }\n\n      var bezEasing = new BezierEasing([a, b, c, d]);\n      beziers[str] = bezEasing;\n      return bezEasing;\n    } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n    var NEWTON_ITERATIONS = 4;\n    var NEWTON_MIN_SLOPE = 0.001;\n    var SUBDIVISION_PRECISION = 0.0000001;\n    var SUBDIVISION_MAX_ITERATIONS = 10;\n    var kSplineTableSize = 11;\n    var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n    var float32ArraySupported = typeof Float32Array === 'function';\n\n    function A(aA1, aA2) {\n      return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n    }\n\n    function B(aA1, aA2) {\n      return 3.0 * aA2 - 6.0 * aA1;\n    }\n\n    function C(aA1) {\n      return 3.0 * aA1;\n    } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n    function calcBezier(aT, aA1, aA2) {\n      return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n    } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n    function getSlope(aT, aA1, aA2) {\n      return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n    }\n\n    function binarySubdivide(aX, aA, aB, mX1, mX2) {\n      var currentX,\n          currentT,\n          i = 0;\n\n      do {\n        currentT = aA + (aB - aA) / 2.0;\n        currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n        if (currentX > 0.0) {\n          aB = currentT;\n        } else {\n          aA = currentT;\n        }\n      } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n      return currentT;\n    }\n\n    function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n      for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n        var currentSlope = getSlope(aGuessT, mX1, mX2);\n        if (currentSlope === 0.0) return aGuessT;\n        var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n        aGuessT -= currentX / currentSlope;\n      }\n\n      return aGuessT;\n    }\n    /**\r\n       * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n       */\n\n\n    function BezierEasing(points) {\n      this._p = points;\n      this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n      this._precomputed = false;\n      this.get = this.get.bind(this);\n    }\n\n    BezierEasing.prototype = {\n      get: function get(x) {\n        var mX1 = this._p[0],\n            mY1 = this._p[1],\n            mX2 = this._p[2],\n            mY2 = this._p[3];\n        if (!this._precomputed) this._precompute();\n        if (mX1 === mY1 && mX2 === mY2) return x; // linear\n        // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n        if (x === 0) return 0;\n        if (x === 1) return 1;\n        return calcBezier(this._getTForX(x), mY1, mY2);\n      },\n      // Private part\n      _precompute: function _precompute() {\n        var mX1 = this._p[0],\n            mY1 = this._p[1],\n            mX2 = this._p[2],\n            mY2 = this._p[3];\n        this._precomputed = true;\n\n        if (mX1 !== mY1 || mX2 !== mY2) {\n          this._calcSampleValues();\n        }\n      },\n      _calcSampleValues: function _calcSampleValues() {\n        var mX1 = this._p[0],\n            mX2 = this._p[2];\n\n        for (var i = 0; i < kSplineTableSize; ++i) {\n          this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n        }\n      },\n\n      /**\r\n           * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n           */\n      _getTForX: function _getTForX(aX) {\n        var mX1 = this._p[0],\n            mX2 = this._p[2],\n            mSampleValues = this._mSampleValues;\n        var intervalStart = 0.0;\n        var currentSample = 1;\n        var lastSample = kSplineTableSize - 1;\n\n        for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n          intervalStart += kSampleStepSize;\n        }\n\n        --currentSample; // Interpolate to provide an initial guess for t\n\n        var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n        var guessForT = intervalStart + dist * kSampleStepSize;\n        var initialSlope = getSlope(guessForT, mX1, mX2);\n\n        if (initialSlope >= NEWTON_MIN_SLOPE) {\n          return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n        }\n\n        if (initialSlope === 0.0) {\n          return guessForT;\n        }\n\n        return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n      }\n    };\n    return ob;\n  }();\n\n  var pooling = function () {\n    function _double(arr) {\n      return arr.concat(createSizedArray(arr.length));\n    }\n\n    return {\n      \"double\": _double\n    };\n  }();\n\n  var poolFactory = function () {\n    return function (initialLength, _create, _release) {\n      var _length = 0;\n      var _maxLength = initialLength;\n      var pool = createSizedArray(_maxLength);\n      var ob = {\n        newElement: newElement,\n        release: release\n      };\n\n      function newElement() {\n        var element;\n\n        if (_length) {\n          _length -= 1;\n          element = pool[_length];\n        } else {\n          element = _create();\n        }\n\n        return element;\n      }\n\n      function release(element) {\n        if (_length === _maxLength) {\n          pool = pooling[\"double\"](pool);\n          _maxLength *= 2;\n        }\n\n        if (_release) {\n          _release(element);\n        }\n\n        pool[_length] = element;\n        _length += 1;\n      }\n\n      return ob;\n    };\n  }();\n\n  var bezierLengthPool = function () {\n    function create() {\n      return {\n        addedLength: 0,\n        percents: createTypedArray('float32', getDefaultCurveSegments()),\n        lengths: createTypedArray('float32', getDefaultCurveSegments())\n      };\n    }\n\n    return poolFactory(8, create);\n  }();\n\n  var segmentsLengthPool = function () {\n    function create() {\n      return {\n        lengths: [],\n        totalLength: 0\n      };\n    }\n\n    function release(element) {\n      var i;\n      var len = element.lengths.length;\n\n      for (i = 0; i < len; i += 1) {\n        bezierLengthPool.release(element.lengths[i]);\n      }\n\n      element.lengths.length = 0;\n    }\n\n    return poolFactory(8, create, release);\n  }();\n\n  function bezFunction() {\n    var math = Math;\n\n    function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n      var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n      return det1 > -0.001 && det1 < 0.001;\n    }\n\n    function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n      if (z1 === 0 && z2 === 0 && z3 === 0) {\n        return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n      }\n\n      var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n      var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n      var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n      var diffDist;\n\n      if (dist1 > dist2) {\n        if (dist1 > dist3) {\n          diffDist = dist1 - dist2 - dist3;\n        } else {\n          diffDist = dist3 - dist2 - dist1;\n        }\n      } else if (dist3 > dist2) {\n        diffDist = dist3 - dist2 - dist1;\n      } else {\n        diffDist = dist2 - dist1 - dist3;\n      }\n\n      return diffDist > -0.0001 && diffDist < 0.0001;\n    }\n\n    var getBezierLength = function () {\n      return function (pt1, pt2, pt3, pt4) {\n        var curveSegments = getDefaultCurveSegments();\n        var k;\n        var i;\n        var len;\n        var ptCoord;\n        var perc;\n        var addedLength = 0;\n        var ptDistance;\n        var point = [];\n        var lastPoint = [];\n        var lengthData = bezierLengthPool.newElement();\n        len = pt3.length;\n\n        for (k = 0; k < curveSegments; k += 1) {\n          perc = k / (curveSegments - 1);\n          ptDistance = 0;\n\n          for (i = 0; i < len; i += 1) {\n            ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n            point[i] = ptCoord;\n\n            if (lastPoint[i] !== null) {\n              ptDistance += bmPow(point[i] - lastPoint[i], 2);\n            }\n\n            lastPoint[i] = point[i];\n          }\n\n          if (ptDistance) {\n            ptDistance = bmSqrt(ptDistance);\n            addedLength += ptDistance;\n          }\n\n          lengthData.percents[k] = perc;\n          lengthData.lengths[k] = addedLength;\n        }\n\n        lengthData.addedLength = addedLength;\n        return lengthData;\n      };\n    }();\n\n    function getSegmentsLength(shapeData) {\n      var segmentsLength = segmentsLengthPool.newElement();\n      var closed = shapeData.c;\n      var pathV = shapeData.v;\n      var pathO = shapeData.o;\n      var pathI = shapeData.i;\n      var i;\n      var len = shapeData._length;\n      var lengths = segmentsLength.lengths;\n      var totalLength = 0;\n\n      for (i = 0; i < len - 1; i += 1) {\n        lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n        totalLength += lengths[i].addedLength;\n      }\n\n      if (closed && len) {\n        lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n        totalLength += lengths[i].addedLength;\n      }\n\n      segmentsLength.totalLength = totalLength;\n      return segmentsLength;\n    }\n\n    function BezierData(length) {\n      this.segmentLength = 0;\n      this.points = new Array(length);\n    }\n\n    function PointData(partial, point) {\n      this.partialLength = partial;\n      this.point = point;\n    }\n\n    var buildBezierData = function () {\n      var storedData = {};\n      return function (pt1, pt2, pt3, pt4) {\n        var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n        if (!storedData[bezierName]) {\n          var curveSegments = getDefaultCurveSegments();\n          var k;\n          var i;\n          var len;\n          var ptCoord;\n          var perc;\n          var addedLength = 0;\n          var ptDistance;\n          var point;\n          var lastPoint = null;\n\n          if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n            curveSegments = 2;\n          }\n\n          var bezierData = new BezierData(curveSegments);\n          len = pt3.length;\n\n          for (k = 0; k < curveSegments; k += 1) {\n            point = createSizedArray(len);\n            perc = k / (curveSegments - 1);\n            ptDistance = 0;\n\n            for (i = 0; i < len; i += 1) {\n              ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n              point[i] = ptCoord;\n\n              if (lastPoint !== null) {\n                ptDistance += bmPow(point[i] - lastPoint[i], 2);\n              }\n            }\n\n            ptDistance = bmSqrt(ptDistance);\n            addedLength += ptDistance;\n            bezierData.points[k] = new PointData(ptDistance, point);\n            lastPoint = point;\n          }\n\n          bezierData.segmentLength = addedLength;\n          storedData[bezierName] = bezierData;\n        }\n\n        return storedData[bezierName];\n      };\n    }();\n\n    function getDistancePerc(perc, bezierData) {\n      var percents = bezierData.percents;\n      var lengths = bezierData.lengths;\n      var len = percents.length;\n      var initPos = bmFloor((len - 1) * perc);\n      var lengthPos = perc * bezierData.addedLength;\n      var lPerc = 0;\n\n      if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n        return percents[initPos];\n      }\n\n      var dir = lengths[initPos] > lengthPos ? -1 : 1;\n      var flag = true;\n\n      while (flag) {\n        if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n          lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n          flag = false;\n        } else {\n          initPos += dir;\n        }\n\n        if (initPos < 0 || initPos >= len - 1) {\n          // FIX for TypedArrays that don't store floating point values with enough accuracy\n          if (initPos === len - 1) {\n            return percents[initPos];\n          }\n\n          flag = false;\n        }\n      }\n\n      return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n    }\n\n    function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n      var t1 = getDistancePerc(percent, bezierData);\n      var u1 = 1 - t1;\n      var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n      var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n      return [ptX, ptY];\n    }\n\n    var bezierSegmentPoints = createTypedArray('float32', 8);\n\n    function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n      if (startPerc < 0) {\n        startPerc = 0;\n      } else if (startPerc > 1) {\n        startPerc = 1;\n      }\n\n      var t0 = getDistancePerc(startPerc, bezierData);\n      endPerc = endPerc > 1 ? 1 : endPerc;\n      var t1 = getDistancePerc(endPerc, bezierData);\n      var i;\n      var len = pt1.length;\n      var u0 = 1 - t0;\n      var u1 = 1 - t1;\n      var u0u0u0 = u0 * u0 * u0;\n      var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n      var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n      var t0t0t0 = t0 * t0 * t0; //\n\n      var u0u0u1 = u0 * u0 * u1;\n      var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n      var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n      var t0t0t1 = t0 * t0 * t1; //\n\n      var u0u1u1 = u0 * u1 * u1;\n      var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n      var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n      var t0t1t1 = t0 * t1 * t1; //\n\n      var u1u1u1 = u1 * u1 * u1;\n      var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n      var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n      var t1t1t1 = t1 * t1 * t1;\n\n      for (i = 0; i < len; i += 1) {\n        bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n        bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n        bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n        bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n      }\n\n      return bezierSegmentPoints;\n    }\n\n    return {\n      getSegmentsLength: getSegmentsLength,\n      getNewSegment: getNewSegment,\n      getPointInSegment: getPointInSegment,\n      buildBezierData: buildBezierData,\n      pointOnLine2D: pointOnLine2D,\n      pointOnLine3D: pointOnLine3D\n    };\n  }\n\n  var bez = bezFunction();\n\n  var initFrame = initialDefaultFrame;\n  var mathAbs = Math.abs;\n\n  function interpolateValue(frameNum, caching) {\n    var offsetTime = this.offsetTime;\n    var newValue;\n\n    if (this.propType === 'multidimensional') {\n      newValue = createTypedArray('float32', this.pv.length);\n    }\n\n    var iterationIndex = caching.lastIndex;\n    var i = iterationIndex;\n    var len = this.keyframes.length - 1;\n    var flag = true;\n    var keyData;\n    var nextKeyData;\n    var keyframeMetadata;\n\n    while (flag) {\n      keyData = this.keyframes[i];\n      nextKeyData = this.keyframes[i + 1];\n\n      if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n        if (keyData.h) {\n          keyData = nextKeyData;\n        }\n\n        iterationIndex = 0;\n        break;\n      }\n\n      if (nextKeyData.t - offsetTime > frameNum) {\n        iterationIndex = i;\n        break;\n      }\n\n      if (i < len - 1) {\n        i += 1;\n      } else {\n        iterationIndex = 0;\n        flag = false;\n      }\n    }\n\n    keyframeMetadata = this.keyframesMetadata[i] || {};\n    var k;\n    var kLen;\n    var perc;\n    var jLen;\n    var j;\n    var fnc;\n    var nextKeyTime = nextKeyData.t - offsetTime;\n    var keyTime = keyData.t - offsetTime;\n    var endValue;\n\n    if (keyData.to) {\n      if (!keyframeMetadata.bezierData) {\n        keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n      }\n\n      var bezierData = keyframeMetadata.bezierData;\n\n      if (frameNum >= nextKeyTime || frameNum < keyTime) {\n        var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n        kLen = bezierData.points[ind].point.length;\n\n        for (k = 0; k < kLen; k += 1) {\n          newValue[k] = bezierData.points[ind].point[k];\n        } // caching._lastKeyframeIndex = -1;\n\n      } else {\n        if (keyframeMetadata.__fnct) {\n          fnc = keyframeMetadata.__fnct;\n        } else {\n          fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n          keyframeMetadata.__fnct = fnc;\n        }\n\n        perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n        var distanceInLine = bezierData.segmentLength * perc;\n        var segmentPerc;\n        var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n        j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n        flag = true;\n        jLen = bezierData.points.length;\n\n        while (flag) {\n          addedLength += bezierData.points[j].partialLength;\n\n          if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n            kLen = bezierData.points[j].point.length;\n\n            for (k = 0; k < kLen; k += 1) {\n              newValue[k] = bezierData.points[j].point[k];\n            }\n\n            break;\n          } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n            segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n            kLen = bezierData.points[j].point.length;\n\n            for (k = 0; k < kLen; k += 1) {\n              newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n            }\n\n            break;\n          }\n\n          if (j < jLen - 1) {\n            j += 1;\n          } else {\n            flag = false;\n          }\n        }\n\n        caching._lastPoint = j;\n        caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n        caching._lastKeyframeIndex = i;\n      }\n    } else {\n      var outX;\n      var outY;\n      var inX;\n      var inY;\n      var keyValue;\n      len = keyData.s.length;\n      endValue = nextKeyData.s || keyData.e;\n\n      if (this.sh && keyData.h !== 1) {\n        if (frameNum >= nextKeyTime) {\n          newValue[0] = endValue[0];\n          newValue[1] = endValue[1];\n          newValue[2] = endValue[2];\n        } else if (frameNum <= keyTime) {\n          newValue[0] = keyData.s[0];\n          newValue[1] = keyData.s[1];\n          newValue[2] = keyData.s[2];\n        } else {\n          var quatStart = createQuaternion(keyData.s);\n          var quatEnd = createQuaternion(endValue);\n          var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n          quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n        }\n      } else {\n        for (i = 0; i < len; i += 1) {\n          if (keyData.h !== 1) {\n            if (frameNum >= nextKeyTime) {\n              perc = 1;\n            } else if (frameNum < keyTime) {\n              perc = 0;\n            } else {\n              if (keyData.o.x.constructor === Array) {\n                if (!keyframeMetadata.__fnct) {\n                  keyframeMetadata.__fnct = [];\n                }\n\n                if (!keyframeMetadata.__fnct[i]) {\n                  outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n                  outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n                  inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n                  inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n                  fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n                  keyframeMetadata.__fnct[i] = fnc;\n                } else {\n                  fnc = keyframeMetadata.__fnct[i];\n                }\n              } else if (!keyframeMetadata.__fnct) {\n                outX = keyData.o.x;\n                outY = keyData.o.y;\n                inX = keyData.i.x;\n                inY = keyData.i.y;\n                fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n                keyData.keyframeMetadata = fnc;\n              } else {\n                fnc = keyframeMetadata.__fnct;\n              }\n\n              perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n            }\n          }\n\n          endValue = nextKeyData.s || keyData.e;\n          keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n          if (this.propType === 'multidimensional') {\n            newValue[i] = keyValue;\n          } else {\n            newValue = keyValue;\n          }\n        }\n      }\n    }\n\n    caching.lastIndex = iterationIndex;\n    return newValue;\n  } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n  function slerp(a, b, t) {\n    var out = [];\n    var ax = a[0];\n    var ay = a[1];\n    var az = a[2];\n    var aw = a[3];\n    var bx = b[0];\n    var by = b[1];\n    var bz = b[2];\n    var bw = b[3];\n    var omega;\n    var cosom;\n    var sinom;\n    var scale0;\n    var scale1;\n    cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n    if (cosom < 0.0) {\n      cosom = -cosom;\n      bx = -bx;\n      by = -by;\n      bz = -bz;\n      bw = -bw;\n    }\n\n    if (1.0 - cosom > 0.000001) {\n      omega = Math.acos(cosom);\n      sinom = Math.sin(omega);\n      scale0 = Math.sin((1.0 - t) * omega) / sinom;\n      scale1 = Math.sin(t * omega) / sinom;\n    } else {\n      scale0 = 1.0 - t;\n      scale1 = t;\n    }\n\n    out[0] = scale0 * ax + scale1 * bx;\n    out[1] = scale0 * ay + scale1 * by;\n    out[2] = scale0 * az + scale1 * bz;\n    out[3] = scale0 * aw + scale1 * bw;\n    return out;\n  }\n\n  function quaternionToEuler(out, quat) {\n    var qx = quat[0];\n    var qy = quat[1];\n    var qz = quat[2];\n    var qw = quat[3];\n    var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n    var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n    var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n    out[0] = heading / degToRads;\n    out[1] = attitude / degToRads;\n    out[2] = bank / degToRads;\n  }\n\n  function createQuaternion(values) {\n    var heading = values[0] * degToRads;\n    var attitude = values[1] * degToRads;\n    var bank = values[2] * degToRads;\n    var c1 = Math.cos(heading / 2);\n    var c2 = Math.cos(attitude / 2);\n    var c3 = Math.cos(bank / 2);\n    var s1 = Math.sin(heading / 2);\n    var s2 = Math.sin(attitude / 2);\n    var s3 = Math.sin(bank / 2);\n    var w = c1 * c2 * c3 - s1 * s2 * s3;\n    var x = s1 * s2 * c3 + c1 * c2 * s3;\n    var y = s1 * c2 * c3 + c1 * s2 * s3;\n    var z = c1 * s2 * c3 - s1 * c2 * s3;\n    return [x, y, z, w];\n  }\n\n  function getValueAtCurrentTime() {\n    var frameNum = this.comp.renderedFrame - this.offsetTime;\n    var initTime = this.keyframes[0].t - this.offsetTime;\n    var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n    if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n      if (this._caching.lastFrame >= frameNum) {\n        this._caching._lastKeyframeIndex = -1;\n        this._caching.lastIndex = 0;\n      }\n\n      var renderResult = this.interpolateValue(frameNum, this._caching);\n      this.pv = renderResult;\n    }\n\n    this._caching.lastFrame = frameNum;\n    return this.pv;\n  }\n\n  function setVValue(val) {\n    var multipliedValue;\n\n    if (this.propType === 'unidimensional') {\n      multipliedValue = val * this.mult;\n\n      if (mathAbs(this.v - multipliedValue) > 0.00001) {\n        this.v = multipliedValue;\n        this._mdf = true;\n      }\n    } else {\n      var i = 0;\n      var len = this.v.length;\n\n      while (i < len) {\n        multipliedValue = val[i] * this.mult;\n\n        if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n          this.v[i] = multipliedValue;\n          this._mdf = true;\n        }\n\n        i += 1;\n      }\n    }\n  }\n\n  function processEffectsSequence() {\n    if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n      return;\n    }\n\n    if (this.lock) {\n      this.setVValue(this.pv);\n      return;\n    }\n\n    this.lock = true;\n    this._mdf = this._isFirstFrame;\n    var i;\n    var len = this.effectsSequence.length;\n    var finalValue = this.kf ? this.pv : this.data.k;\n\n    for (i = 0; i < len; i += 1) {\n      finalValue = this.effectsSequence[i](finalValue);\n    }\n\n    this.setVValue(finalValue);\n    this._isFirstFrame = false;\n    this.lock = false;\n    this.frameId = this.elem.globalData.frameId;\n  }\n\n  function addEffect(effectFunction) {\n    this.effectsSequence.push(effectFunction);\n    this.container.addDynamicProperty(this);\n  }\n\n  function ValueProperty(elem, data, mult, container) {\n    this.propType = 'unidimensional';\n    this.mult = mult || 1;\n    this.data = data;\n    this.v = mult ? data.k * mult : data.k;\n    this.pv = data.k;\n    this._mdf = false;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.k = false;\n    this.kf = false;\n    this.vel = 0;\n    this.effectsSequence = [];\n    this._isFirstFrame = true;\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.addEffect = addEffect;\n  }\n\n  function MultiDimensionalProperty(elem, data, mult, container) {\n    this.propType = 'multidimensional';\n    this.mult = mult || 1;\n    this.data = data;\n    this._mdf = false;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.k = false;\n    this.kf = false;\n    this.frameId = -1;\n    var i;\n    var len = data.k.length;\n    this.v = createTypedArray('float32', len);\n    this.pv = createTypedArray('float32', len);\n    this.vel = createTypedArray('float32', len);\n\n    for (i = 0; i < len; i += 1) {\n      this.v[i] = data.k[i] * this.mult;\n      this.pv[i] = data.k[i];\n    }\n\n    this._isFirstFrame = true;\n    this.effectsSequence = [];\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.addEffect = addEffect;\n  }\n\n  function KeyframedValueProperty(elem, data, mult, container) {\n    this.propType = 'unidimensional';\n    this.keyframes = data.k;\n    this.keyframesMetadata = [];\n    this.offsetTime = elem.data.st;\n    this.frameId = -1;\n    this._caching = {\n      lastFrame: initFrame,\n      lastIndex: 0,\n      value: 0,\n      _lastKeyframeIndex: -1\n    };\n    this.k = true;\n    this.kf = true;\n    this.data = data;\n    this.mult = mult || 1;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.v = initFrame;\n    this.pv = initFrame;\n    this._isFirstFrame = true;\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.interpolateValue = interpolateValue;\n    this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n    this.addEffect = addEffect;\n  }\n\n  function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n    this.propType = 'multidimensional';\n    var i;\n    var len = data.k.length;\n    var s;\n    var e;\n    var to;\n    var ti;\n\n    for (i = 0; i < len - 1; i += 1) {\n      if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n        s = data.k[i].s;\n        e = data.k[i + 1].s;\n        to = data.k[i].to;\n        ti = data.k[i].ti;\n\n        if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n          data.k[i].to = null;\n          data.k[i].ti = null;\n        }\n\n        if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n          if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n            data.k[i].to = null;\n            data.k[i].ti = null;\n          }\n        }\n      }\n    }\n\n    this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n    this.data = data;\n    this.keyframes = data.k;\n    this.keyframesMetadata = [];\n    this.offsetTime = elem.data.st;\n    this.k = true;\n    this.kf = true;\n    this._isFirstFrame = true;\n    this.mult = mult || 1;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.interpolateValue = interpolateValue;\n    this.frameId = -1;\n    var arrLen = data.k[0].s.length;\n    this.v = createTypedArray('float32', arrLen);\n    this.pv = createTypedArray('float32', arrLen);\n\n    for (i = 0; i < arrLen; i += 1) {\n      this.v[i] = initFrame;\n      this.pv[i] = initFrame;\n    }\n\n    this._caching = {\n      lastFrame: initFrame,\n      lastIndex: 0,\n      value: createTypedArray('float32', arrLen)\n    };\n    this.addEffect = addEffect;\n  }\n\n  var PropertyFactory = function () {\n    function getProp(elem, data, type, mult, container) {\n      if (data.sid) {\n        data = elem.globalData.slotManager.getProp(data);\n      }\n\n      var p;\n\n      if (!data.k.length) {\n        p = new ValueProperty(elem, data, mult, container);\n      } else if (typeof data.k[0] === 'number') {\n        p = new MultiDimensionalProperty(elem, data, mult, container);\n      } else {\n        switch (type) {\n          case 0:\n            p = new KeyframedValueProperty(elem, data, mult, container);\n            break;\n\n          case 1:\n            p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n            break;\n\n          default:\n            break;\n        }\n      }\n\n      if (p.effectsSequence.length) {\n        container.addDynamicProperty(p);\n      }\n\n      return p;\n    }\n\n    var ob = {\n      getProp: getProp\n    };\n    return ob;\n  }();\n\n  function DynamicPropertyContainer() {}\n\n  DynamicPropertyContainer.prototype = {\n    addDynamicProperty: function addDynamicProperty(prop) {\n      if (this.dynamicProperties.indexOf(prop) === -1) {\n        this.dynamicProperties.push(prop);\n        this.container.addDynamicProperty(this);\n        this._isAnimated = true;\n      }\n    },\n    iterateDynamicProperties: function iterateDynamicProperties() {\n      this._mdf = false;\n      var i;\n      var len = this.dynamicProperties.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.dynamicProperties[i].getValue();\n\n        if (this.dynamicProperties[i]._mdf) {\n          this._mdf = true;\n        }\n      }\n    },\n    initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n      this.container = container;\n      this.dynamicProperties = [];\n      this._mdf = false;\n      this._isAnimated = false;\n    }\n  };\n\n  var pointPool = function () {\n    function create() {\n      return createTypedArray('float32', 2);\n    }\n\n    return poolFactory(8, create);\n  }();\n\n  function ShapePath() {\n    this.c = false;\n    this._length = 0;\n    this._maxLength = 8;\n    this.v = createSizedArray(this._maxLength);\n    this.o = createSizedArray(this._maxLength);\n    this.i = createSizedArray(this._maxLength);\n  }\n\n  ShapePath.prototype.setPathData = function (closed, len) {\n    this.c = closed;\n    this.setLength(len);\n    var i = 0;\n\n    while (i < len) {\n      this.v[i] = pointPool.newElement();\n      this.o[i] = pointPool.newElement();\n      this.i[i] = pointPool.newElement();\n      i += 1;\n    }\n  };\n\n  ShapePath.prototype.setLength = function (len) {\n    while (this._maxLength < len) {\n      this.doubleArrayLength();\n    }\n\n    this._length = len;\n  };\n\n  ShapePath.prototype.doubleArrayLength = function () {\n    this.v = this.v.concat(createSizedArray(this._maxLength));\n    this.i = this.i.concat(createSizedArray(this._maxLength));\n    this.o = this.o.concat(createSizedArray(this._maxLength));\n    this._maxLength *= 2;\n  };\n\n  ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n    var arr;\n    this._length = Math.max(this._length, pos + 1);\n\n    if (this._length >= this._maxLength) {\n      this.doubleArrayLength();\n    }\n\n    switch (type) {\n      case 'v':\n        arr = this.v;\n        break;\n\n      case 'i':\n        arr = this.i;\n        break;\n\n      case 'o':\n        arr = this.o;\n        break;\n\n      default:\n        arr = [];\n        break;\n    }\n\n    if (!arr[pos] || arr[pos] && !replace) {\n      arr[pos] = pointPool.newElement();\n    }\n\n    arr[pos][0] = x;\n    arr[pos][1] = y;\n  };\n\n  ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n    this.setXYAt(vX, vY, 'v', pos, replace);\n    this.setXYAt(oX, oY, 'o', pos, replace);\n    this.setXYAt(iX, iY, 'i', pos, replace);\n  };\n\n  ShapePath.prototype.reverse = function () {\n    var newPath = new ShapePath();\n    newPath.setPathData(this.c, this._length);\n    var vertices = this.v;\n    var outPoints = this.o;\n    var inPoints = this.i;\n    var init = 0;\n\n    if (this.c) {\n      newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n      init = 1;\n    }\n\n    var cnt = this._length - 1;\n    var len = this._length;\n    var i;\n\n    for (i = init; i < len; i += 1) {\n      newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n      cnt -= 1;\n    }\n\n    return newPath;\n  };\n\n  ShapePath.prototype.length = function () {\n    return this._length;\n  };\n\n  var shapePool = function () {\n    function create() {\n      return new ShapePath();\n    }\n\n    function release(shapePath) {\n      var len = shapePath._length;\n      var i;\n\n      for (i = 0; i < len; i += 1) {\n        pointPool.release(shapePath.v[i]);\n        pointPool.release(shapePath.i[i]);\n        pointPool.release(shapePath.o[i]);\n        shapePath.v[i] = null;\n        shapePath.i[i] = null;\n        shapePath.o[i] = null;\n      }\n\n      shapePath._length = 0;\n      shapePath.c = false;\n    }\n\n    function clone(shape) {\n      var cloned = factory.newElement();\n      var i;\n      var len = shape._length === undefined ? shape.v.length : shape._length;\n      cloned.setLength(len);\n      cloned.c = shape.c;\n\n      for (i = 0; i < len; i += 1) {\n        cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n      }\n\n      return cloned;\n    }\n\n    var factory = poolFactory(4, create, release);\n    factory.clone = clone;\n    return factory;\n  }();\n\n  function ShapeCollection() {\n    this._length = 0;\n    this._maxLength = 4;\n    this.shapes = createSizedArray(this._maxLength);\n  }\n\n  ShapeCollection.prototype.addShape = function (shapeData) {\n    if (this._length === this._maxLength) {\n      this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n      this._maxLength *= 2;\n    }\n\n    this.shapes[this._length] = shapeData;\n    this._length += 1;\n  };\n\n  ShapeCollection.prototype.releaseShapes = function () {\n    var i;\n\n    for (i = 0; i < this._length; i += 1) {\n      shapePool.release(this.shapes[i]);\n    }\n\n    this._length = 0;\n  };\n\n  var shapeCollectionPool = function () {\n    var ob = {\n      newShapeCollection: newShapeCollection,\n      release: release\n    };\n    var _length = 0;\n    var _maxLength = 4;\n    var pool = createSizedArray(_maxLength);\n\n    function newShapeCollection() {\n      var shapeCollection;\n\n      if (_length) {\n        _length -= 1;\n        shapeCollection = pool[_length];\n      } else {\n        shapeCollection = new ShapeCollection();\n      }\n\n      return shapeCollection;\n    }\n\n    function release(shapeCollection) {\n      var i;\n      var len = shapeCollection._length;\n\n      for (i = 0; i < len; i += 1) {\n        shapePool.release(shapeCollection.shapes[i]);\n      }\n\n      shapeCollection._length = 0;\n\n      if (_length === _maxLength) {\n        pool = pooling[\"double\"](pool);\n        _maxLength *= 2;\n      }\n\n      pool[_length] = shapeCollection;\n      _length += 1;\n    }\n\n    return ob;\n  }();\n\n  var ShapePropertyFactory = function () {\n    var initFrame = -999999;\n\n    function interpolateShape(frameNum, previousValue, caching) {\n      var iterationIndex = caching.lastIndex;\n      var keyPropS;\n      var keyPropE;\n      var isHold;\n      var j;\n      var k;\n      var jLen;\n      var kLen;\n      var perc;\n      var vertexValue;\n      var kf = this.keyframes;\n\n      if (frameNum < kf[0].t - this.offsetTime) {\n        keyPropS = kf[0].s[0];\n        isHold = true;\n        iterationIndex = 0;\n      } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n        keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n        /* if(kf[kf.length - 1].s){\r\n                  keyPropS = kf[kf.length - 1].s[0];\r\n              }else{\r\n                  keyPropS = kf[kf.length - 2].e[0];\r\n              } */\n\n        isHold = true;\n      } else {\n        var i = iterationIndex;\n        var len = kf.length - 1;\n        var flag = true;\n        var keyData;\n        var nextKeyData;\n        var keyframeMetadata;\n\n        while (flag) {\n          keyData = kf[i];\n          nextKeyData = kf[i + 1];\n\n          if (nextKeyData.t - this.offsetTime > frameNum) {\n            break;\n          }\n\n          if (i < len - 1) {\n            i += 1;\n          } else {\n            flag = false;\n          }\n        }\n\n        keyframeMetadata = this.keyframesMetadata[i] || {};\n        isHold = keyData.h === 1;\n        iterationIndex = i;\n\n        if (!isHold) {\n          if (frameNum >= nextKeyData.t - this.offsetTime) {\n            perc = 1;\n          } else if (frameNum < keyData.t - this.offsetTime) {\n            perc = 0;\n          } else {\n            var fnc;\n\n            if (keyframeMetadata.__fnct) {\n              fnc = keyframeMetadata.__fnct;\n            } else {\n              fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n              keyframeMetadata.__fnct = fnc;\n            }\n\n            perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n          }\n\n          keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n        }\n\n        keyPropS = keyData.s[0];\n      }\n\n      jLen = previousValue._length;\n      kLen = keyPropS.i[0].length;\n      caching.lastIndex = iterationIndex;\n\n      for (j = 0; j < jLen; j += 1) {\n        for (k = 0; k < kLen; k += 1) {\n          vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n          previousValue.i[j][k] = vertexValue;\n          vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n          previousValue.o[j][k] = vertexValue;\n          vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n          previousValue.v[j][k] = vertexValue;\n        }\n      }\n    }\n\n    function interpolateShapeCurrentTime() {\n      var frameNum = this.comp.renderedFrame - this.offsetTime;\n      var initTime = this.keyframes[0].t - this.offsetTime;\n      var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n      var lastFrame = this._caching.lastFrame;\n\n      if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n        /// /\n        this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n        this.interpolateShape(frameNum, this.pv, this._caching); /// /\n      }\n\n      this._caching.lastFrame = frameNum;\n      return this.pv;\n    }\n\n    function resetShape() {\n      this.paths = this.localShapeCollection;\n    }\n\n    function shapesEqual(shape1, shape2) {\n      if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n        return false;\n      }\n\n      var i;\n      var len = shape1._length;\n\n      for (i = 0; i < len; i += 1) {\n        if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n\n    function setVValue(newPath) {\n      if (!shapesEqual(this.v, newPath)) {\n        this.v = shapePool.clone(newPath);\n        this.localShapeCollection.releaseShapes();\n        this.localShapeCollection.addShape(this.v);\n        this._mdf = true;\n        this.paths = this.localShapeCollection;\n      }\n    }\n\n    function processEffectsSequence() {\n      if (this.elem.globalData.frameId === this.frameId) {\n        return;\n      }\n\n      if (!this.effectsSequence.length) {\n        this._mdf = false;\n        return;\n      }\n\n      if (this.lock) {\n        this.setVValue(this.pv);\n        return;\n      }\n\n      this.lock = true;\n      this._mdf = false;\n      var finalValue;\n\n      if (this.kf) {\n        finalValue = this.pv;\n      } else if (this.data.ks) {\n        finalValue = this.data.ks.k;\n      } else {\n        finalValue = this.data.pt.k;\n      }\n\n      var i;\n      var len = this.effectsSequence.length;\n\n      for (i = 0; i < len; i += 1) {\n        finalValue = this.effectsSequence[i](finalValue);\n      }\n\n      this.setVValue(finalValue);\n      this.lock = false;\n      this.frameId = this.elem.globalData.frameId;\n    }\n\n    function ShapeProperty(elem, data, type) {\n      this.propType = 'shape';\n      this.comp = elem.comp;\n      this.container = elem;\n      this.elem = elem;\n      this.data = data;\n      this.k = false;\n      this.kf = false;\n      this._mdf = false;\n      var pathData = type === 3 ? data.pt.k : data.ks.k;\n      this.v = shapePool.clone(pathData);\n      this.pv = shapePool.clone(this.v);\n      this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n      this.paths = this.localShapeCollection;\n      this.paths.addShape(this.v);\n      this.reset = resetShape;\n      this.effectsSequence = [];\n    }\n\n    function addEffect(effectFunction) {\n      this.effectsSequence.push(effectFunction);\n      this.container.addDynamicProperty(this);\n    }\n\n    ShapeProperty.prototype.interpolateShape = interpolateShape;\n    ShapeProperty.prototype.getValue = processEffectsSequence;\n    ShapeProperty.prototype.setVValue = setVValue;\n    ShapeProperty.prototype.addEffect = addEffect;\n\n    function KeyframedShapeProperty(elem, data, type) {\n      this.propType = 'shape';\n      this.comp = elem.comp;\n      this.elem = elem;\n      this.container = elem;\n      this.offsetTime = elem.data.st;\n      this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n      this.keyframesMetadata = [];\n      this.k = true;\n      this.kf = true;\n      var len = this.keyframes[0].s[0].i.length;\n      this.v = shapePool.newElement();\n      this.v.setPathData(this.keyframes[0].s[0].c, len);\n      this.pv = shapePool.clone(this.v);\n      this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n      this.paths = this.localShapeCollection;\n      this.paths.addShape(this.v);\n      this.lastFrame = initFrame;\n      this.reset = resetShape;\n      this._caching = {\n        lastFrame: initFrame,\n        lastIndex: 0\n      };\n      this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n    }\n\n    KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n    KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n    KeyframedShapeProperty.prototype.setVValue = setVValue;\n    KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n    var EllShapeProperty = function () {\n      var cPoint = roundCorner;\n\n      function EllShapePropertyFactory(elem, data) {\n        this.v = shapePool.newElement();\n        this.v.setPathData(true, 4);\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n        this.paths = this.localShapeCollection;\n        this.localShapeCollection.addShape(this.v);\n        this.d = data.d;\n        this.elem = elem;\n        this.comp = elem.comp;\n        this.frameId = -1;\n        this.initDynamicPropertyContainer(elem);\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n        this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n        if (this.dynamicProperties.length) {\n          this.k = true;\n        } else {\n          this.k = false;\n          this.convertEllToPath();\n        }\n      }\n\n      EllShapePropertyFactory.prototype = {\n        reset: resetShape,\n        getValue: function getValue() {\n          if (this.elem.globalData.frameId === this.frameId) {\n            return;\n          }\n\n          this.frameId = this.elem.globalData.frameId;\n          this.iterateDynamicProperties();\n\n          if (this._mdf) {\n            this.convertEllToPath();\n          }\n        },\n        convertEllToPath: function convertEllToPath() {\n          var p0 = this.p.v[0];\n          var p1 = this.p.v[1];\n          var s0 = this.s.v[0] / 2;\n          var s1 = this.s.v[1] / 2;\n\n          var _cw = this.d !== 3;\n\n          var _v = this.v;\n          _v.v[0][0] = p0;\n          _v.v[0][1] = p1 - s1;\n          _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n          _v.v[1][1] = p1;\n          _v.v[2][0] = p0;\n          _v.v[2][1] = p1 + s1;\n          _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n          _v.v[3][1] = p1;\n          _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n          _v.i[0][1] = p1 - s1;\n          _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n          _v.i[1][1] = p1 - s1 * cPoint;\n          _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n          _v.i[2][1] = p1 + s1;\n          _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n          _v.i[3][1] = p1 + s1 * cPoint;\n          _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n          _v.o[0][1] = p1 - s1;\n          _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n          _v.o[1][1] = p1 + s1 * cPoint;\n          _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n          _v.o[2][1] = p1 + s1;\n          _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n          _v.o[3][1] = p1 - s1 * cPoint;\n        }\n      };\n      extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n      return EllShapePropertyFactory;\n    }();\n\n    var StarShapeProperty = function () {\n      function StarShapePropertyFactory(elem, data) {\n        this.v = shapePool.newElement();\n        this.v.setPathData(true, 0);\n        this.elem = elem;\n        this.comp = elem.comp;\n        this.data = data;\n        this.frameId = -1;\n        this.d = data.d;\n        this.initDynamicPropertyContainer(elem);\n\n        if (data.sy === 1) {\n          this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n          this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n          this.convertToPath = this.convertStarToPath;\n        } else {\n          this.convertToPath = this.convertPolygonToPath;\n        }\n\n        this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n        this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n        this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n        this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n        this.localShapeCollection.addShape(this.v);\n        this.paths = this.localShapeCollection;\n\n        if (this.dynamicProperties.length) {\n          this.k = true;\n        } else {\n          this.k = false;\n          this.convertToPath();\n        }\n      }\n\n      StarShapePropertyFactory.prototype = {\n        reset: resetShape,\n        getValue: function getValue() {\n          if (this.elem.globalData.frameId === this.frameId) {\n            return;\n          }\n\n          this.frameId = this.elem.globalData.frameId;\n          this.iterateDynamicProperties();\n\n          if (this._mdf) {\n            this.convertToPath();\n          }\n        },\n        convertStarToPath: function convertStarToPath() {\n          var numPts = Math.floor(this.pt.v) * 2;\n          var angle = Math.PI * 2 / numPts;\n          /* this.v.v.length = numPts;\r\n                  this.v.i.length = numPts;\r\n                  this.v.o.length = numPts; */\n\n          var longFlag = true;\n          var longRad = this.or.v;\n          var shortRad = this.ir.v;\n          var longRound = this.os.v;\n          var shortRound = this.is.v;\n          var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n          var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n          var i;\n          var rad;\n          var roundness;\n          var perimSegment;\n          var currentAng = -Math.PI / 2;\n          currentAng += this.r.v;\n          var dir = this.data.d === 3 ? -1 : 1;\n          this.v._length = 0;\n\n          for (i = 0; i < numPts; i += 1) {\n            rad = longFlag ? longRad : shortRad;\n            roundness = longFlag ? longRound : shortRound;\n            perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n            var x = rad * Math.cos(currentAng);\n            var y = rad * Math.sin(currentAng);\n            var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n            var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n            x += +this.p.v[0];\n            y += +this.p.v[1];\n            this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n            /* this.v.v[i] = [x,y];\r\n                      this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n                      this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n                      this.v._length = numPts; */\n\n            longFlag = !longFlag;\n            currentAng += angle * dir;\n          }\n        },\n        convertPolygonToPath: function convertPolygonToPath() {\n          var numPts = Math.floor(this.pt.v);\n          var angle = Math.PI * 2 / numPts;\n          var rad = this.or.v;\n          var roundness = this.os.v;\n          var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n          var i;\n          var currentAng = -Math.PI * 0.5;\n          var dir = this.data.d === 3 ? -1 : 1;\n          currentAng += this.r.v;\n          this.v._length = 0;\n\n          for (i = 0; i < numPts; i += 1) {\n            var x = rad * Math.cos(currentAng);\n            var y = rad * Math.sin(currentAng);\n            var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n            var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n            x += +this.p.v[0];\n            y += +this.p.v[1];\n            this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n            currentAng += angle * dir;\n          }\n\n          this.paths.length = 0;\n          this.paths[0] = this.v;\n        }\n      };\n      extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n      return StarShapePropertyFactory;\n    }();\n\n    var RectShapeProperty = function () {\n      function RectShapePropertyFactory(elem, data) {\n        this.v = shapePool.newElement();\n        this.v.c = true;\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n        this.localShapeCollection.addShape(this.v);\n        this.paths = this.localShapeCollection;\n        this.elem = elem;\n        this.comp = elem.comp;\n        this.frameId = -1;\n        this.d = data.d;\n        this.initDynamicPropertyContainer(elem);\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n        this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n        this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n        if (this.dynamicProperties.length) {\n          this.k = true;\n        } else {\n          this.k = false;\n          this.convertRectToPath();\n        }\n      }\n\n      RectShapePropertyFactory.prototype = {\n        convertRectToPath: function convertRectToPath() {\n          var p0 = this.p.v[0];\n          var p1 = this.p.v[1];\n          var v0 = this.s.v[0] / 2;\n          var v1 = this.s.v[1] / 2;\n          var round = bmMin(v0, v1, this.r.v);\n          var cPoint = round * (1 - roundCorner);\n          this.v._length = 0;\n\n          if (this.d === 2 || this.d === 1) {\n            this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n            this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n            if (round !== 0) {\n              this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n              this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n              this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n              this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n            } else {\n              this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n              this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n            }\n          } else {\n            this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n            if (round !== 0) {\n              this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n              this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n              this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n              this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n              this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n            } else {\n              this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n              this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n              this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n            }\n          }\n        },\n        getValue: function getValue() {\n          if (this.elem.globalData.frameId === this.frameId) {\n            return;\n          }\n\n          this.frameId = this.elem.globalData.frameId;\n          this.iterateDynamicProperties();\n\n          if (this._mdf) {\n            this.convertRectToPath();\n          }\n        },\n        reset: resetShape\n      };\n      extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n      return RectShapePropertyFactory;\n    }();\n\n    function getShapeProp(elem, data, type) {\n      var prop;\n\n      if (type === 3 || type === 4) {\n        var dataProp = type === 3 ? data.pt : data.ks;\n        var keys = dataProp.k;\n\n        if (keys.length) {\n          prop = new KeyframedShapeProperty(elem, data, type);\n        } else {\n          prop = new ShapeProperty(elem, data, type);\n        }\n      } else if (type === 5) {\n        prop = new RectShapeProperty(elem, data);\n      } else if (type === 6) {\n        prop = new EllShapeProperty(elem, data);\n      } else if (type === 7) {\n        prop = new StarShapeProperty(elem, data);\n      }\n\n      if (prop.k) {\n        elem.addDynamicProperty(prop);\n      }\n\n      return prop;\n    }\n\n    function getConstructorFunction() {\n      return ShapeProperty;\n    }\n\n    function getKeyframedConstructorFunction() {\n      return KeyframedShapeProperty;\n    }\n\n    var ob = {};\n    ob.getShapeProp = getShapeProp;\n    ob.getConstructorFunction = getConstructorFunction;\n    ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n    return ob;\n  }();\n\n  /*!\r\n   Transformation Matrix v2.0\r\n   (c) Epistemex 2014-2015\r\n   www.epistemex.com\r\n   By Ken Fyrstenberg\r\n   Contributions by leeoniya.\r\n   License: MIT, header required.\r\n   */\n\n  /**\r\n   * 2D transformation matrix object initialized with identity matrix.\r\n   *\r\n   * The matrix can synchronize a canvas context by supplying the context\r\n   * as an argument, or later apply current absolute transform to an\r\n   * existing context.\r\n   *\r\n   * All values are handled as floating point values.\r\n   *\r\n   * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n   * @prop {number} a - scale x\r\n   * @prop {number} b - shear y\r\n   * @prop {number} c - shear x\r\n   * @prop {number} d - scale y\r\n   * @prop {number} e - translate x\r\n   * @prop {number} f - translate y\r\n   * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n   * @constructor\r\n   */\n\n  var Matrix = function () {\n    var _cos = Math.cos;\n    var _sin = Math.sin;\n    var _tan = Math.tan;\n    var _rnd = Math.round;\n\n    function reset() {\n      this.props[0] = 1;\n      this.props[1] = 0;\n      this.props[2] = 0;\n      this.props[3] = 0;\n      this.props[4] = 0;\n      this.props[5] = 1;\n      this.props[6] = 0;\n      this.props[7] = 0;\n      this.props[8] = 0;\n      this.props[9] = 0;\n      this.props[10] = 1;\n      this.props[11] = 0;\n      this.props[12] = 0;\n      this.props[13] = 0;\n      this.props[14] = 0;\n      this.props[15] = 1;\n      return this;\n    }\n\n    function rotate(angle) {\n      if (angle === 0) {\n        return this;\n      }\n\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    }\n\n    function rotateX(angle) {\n      if (angle === 0) {\n        return this;\n      }\n\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n    }\n\n    function rotateY(angle) {\n      if (angle === 0) {\n        return this;\n      }\n\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n    }\n\n    function rotateZ(angle) {\n      if (angle === 0) {\n        return this;\n      }\n\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    }\n\n    function shear(sx, sy) {\n      return this._t(1, sy, sx, 1, 0, 0);\n    }\n\n    function skew(ax, ay) {\n      return this.shear(_tan(ax), _tan(ay));\n    }\n\n    function skewFromAxis(ax, angle) {\n      var mCos = _cos(angle);\n\n      var mSin = _sin(angle);\n\n      return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n    }\n\n    function scale(sx, sy, sz) {\n      if (!sz && sz !== 0) {\n        sz = 1;\n      }\n\n      if (sx === 1 && sy === 1 && sz === 1) {\n        return this;\n      }\n\n      return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n    }\n\n    function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n      this.props[0] = a;\n      this.props[1] = b;\n      this.props[2] = c;\n      this.props[3] = d;\n      this.props[4] = e;\n      this.props[5] = f;\n      this.props[6] = g;\n      this.props[7] = h;\n      this.props[8] = i;\n      this.props[9] = j;\n      this.props[10] = k;\n      this.props[11] = l;\n      this.props[12] = m;\n      this.props[13] = n;\n      this.props[14] = o;\n      this.props[15] = p;\n      return this;\n    }\n\n    function translate(tx, ty, tz) {\n      tz = tz || 0;\n\n      if (tx !== 0 || ty !== 0 || tz !== 0) {\n        return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n      }\n\n      return this;\n    }\n\n    function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n      var _p = this.props;\n\n      if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n        // NOTE: commenting this condition because TurboFan deoptimizes code when present\n        // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n        _p[12] = _p[12] * a2 + _p[15] * m2;\n        _p[13] = _p[13] * f2 + _p[15] * n2;\n        _p[14] = _p[14] * k2 + _p[15] * o2;\n        _p[15] *= p2; // }\n\n        this._identityCalculated = false;\n        return this;\n      }\n\n      var a1 = _p[0];\n      var b1 = _p[1];\n      var c1 = _p[2];\n      var d1 = _p[3];\n      var e1 = _p[4];\n      var f1 = _p[5];\n      var g1 = _p[6];\n      var h1 = _p[7];\n      var i1 = _p[8];\n      var j1 = _p[9];\n      var k1 = _p[10];\n      var l1 = _p[11];\n      var m1 = _p[12];\n      var n1 = _p[13];\n      var o1 = _p[14];\n      var p1 = _p[15];\n      /* matrix order (canvas compatible):\r\n           * ace\r\n           * bdf\r\n           * 001\r\n           */\n\n      _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n      _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n      _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n      _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n      _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n      _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n      _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n      _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n      _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n      _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n      _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n      _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n      _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n      _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n      _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n      _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n      this._identityCalculated = false;\n      return this;\n    }\n\n    function multiply(matrix) {\n      var matrixProps = matrix.props;\n      return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n    }\n\n    function isIdentity() {\n      if (!this._identityCalculated) {\n        this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n        this._identityCalculated = true;\n      }\n\n      return this._identity;\n    }\n\n    function equals(matr) {\n      var i = 0;\n\n      while (i < 16) {\n        if (matr.props[i] !== this.props[i]) {\n          return false;\n        }\n\n        i += 1;\n      }\n\n      return true;\n    }\n\n    function clone(matr) {\n      var i;\n\n      for (i = 0; i < 16; i += 1) {\n        matr.props[i] = this.props[i];\n      }\n\n      return matr;\n    }\n\n    function cloneFromProps(props) {\n      var i;\n\n      for (i = 0; i < 16; i += 1) {\n        this.props[i] = props[i];\n      }\n    }\n\n    function applyToPoint(x, y, z) {\n      return {\n        x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n        y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n        z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n      };\n      /* return {\r\n           x: x * me.a + y * me.c + me.e,\r\n           y: x * me.b + y * me.d + me.f\r\n           }; */\n    }\n\n    function applyToX(x, y, z) {\n      return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n    }\n\n    function applyToY(x, y, z) {\n      return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n    }\n\n    function applyToZ(x, y, z) {\n      return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n    }\n\n    function getInverseMatrix() {\n      var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n      var a = this.props[5] / determinant;\n      var b = -this.props[1] / determinant;\n      var c = -this.props[4] / determinant;\n      var d = this.props[0] / determinant;\n      var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n      var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n      var inverseMatrix = new Matrix();\n      inverseMatrix.props[0] = a;\n      inverseMatrix.props[1] = b;\n      inverseMatrix.props[4] = c;\n      inverseMatrix.props[5] = d;\n      inverseMatrix.props[12] = e;\n      inverseMatrix.props[13] = f;\n      return inverseMatrix;\n    }\n\n    function inversePoint(pt) {\n      var inverseMatrix = this.getInverseMatrix();\n      return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n    }\n\n    function inversePoints(pts) {\n      var i;\n      var len = pts.length;\n      var retPts = [];\n\n      for (i = 0; i < len; i += 1) {\n        retPts[i] = inversePoint(pts[i]);\n      }\n\n      return retPts;\n    }\n\n    function applyToTriplePoints(pt1, pt2, pt3) {\n      var arr = createTypedArray('float32', 6);\n\n      if (this.isIdentity()) {\n        arr[0] = pt1[0];\n        arr[1] = pt1[1];\n        arr[2] = pt2[0];\n        arr[3] = pt2[1];\n        arr[4] = pt3[0];\n        arr[5] = pt3[1];\n      } else {\n        var p0 = this.props[0];\n        var p1 = this.props[1];\n        var p4 = this.props[4];\n        var p5 = this.props[5];\n        var p12 = this.props[12];\n        var p13 = this.props[13];\n        arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n        arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n        arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n        arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n        arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n        arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n      }\n\n      return arr;\n    }\n\n    function applyToPointArray(x, y, z) {\n      var arr;\n\n      if (this.isIdentity()) {\n        arr = [x, y, z];\n      } else {\n        arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n      }\n\n      return arr;\n    }\n\n    function applyToPointStringified(x, y) {\n      if (this.isIdentity()) {\n        return x + ',' + y;\n      }\n\n      var _p = this.props;\n      return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n    }\n\n    function toCSS() {\n      // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n      /* if(this.isIdentity()) {\r\n              return '';\r\n          } */\n      var i = 0;\n      var props = this.props;\n      var cssValue = 'matrix3d(';\n      var v = 10000;\n\n      while (i < 16) {\n        cssValue += _rnd(props[i] * v) / v;\n        cssValue += i === 15 ? ')' : ',';\n        i += 1;\n      }\n\n      return cssValue;\n    }\n\n    function roundMatrixProperty(val) {\n      var v = 10000;\n\n      if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n        return _rnd(val * v) / v;\n      }\n\n      return val;\n    }\n\n    function to2dCSS() {\n      // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n      /* if(this.isIdentity()) {\r\n              return '';\r\n          } */\n      var props = this.props;\n\n      var _a = roundMatrixProperty(props[0]);\n\n      var _b = roundMatrixProperty(props[1]);\n\n      var _c = roundMatrixProperty(props[4]);\n\n      var _d = roundMatrixProperty(props[5]);\n\n      var _e = roundMatrixProperty(props[12]);\n\n      var _f = roundMatrixProperty(props[13]);\n\n      return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n    }\n\n    return function () {\n      this.reset = reset;\n      this.rotate = rotate;\n      this.rotateX = rotateX;\n      this.rotateY = rotateY;\n      this.rotateZ = rotateZ;\n      this.skew = skew;\n      this.skewFromAxis = skewFromAxis;\n      this.shear = shear;\n      this.scale = scale;\n      this.setTransform = setTransform;\n      this.translate = translate;\n      this.transform = transform;\n      this.multiply = multiply;\n      this.applyToPoint = applyToPoint;\n      this.applyToX = applyToX;\n      this.applyToY = applyToY;\n      this.applyToZ = applyToZ;\n      this.applyToPointArray = applyToPointArray;\n      this.applyToTriplePoints = applyToTriplePoints;\n      this.applyToPointStringified = applyToPointStringified;\n      this.toCSS = toCSS;\n      this.to2dCSS = to2dCSS;\n      this.clone = clone;\n      this.cloneFromProps = cloneFromProps;\n      this.equals = equals;\n      this.inversePoints = inversePoints;\n      this.inversePoint = inversePoint;\n      this.getInverseMatrix = getInverseMatrix;\n      this._t = this.transform;\n      this.isIdentity = isIdentity;\n      this._identity = true;\n      this._identityCalculated = false;\n      this.props = createTypedArray('float32', 16);\n      this.reset();\n    };\n  }();\n\n  function _typeof$3(obj) { \"@babel/helpers - typeof\"; 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); }\n  var lottie = {};\n  var standalone = '__[STANDALONE]__';\n  var animationData = '__[ANIMATIONDATA]__';\n  var renderer = '';\n\n  function setLocation(href) {\n    setLocationHref(href);\n  }\n\n  function searchAnimations() {\n    if (standalone === true) {\n      animationManager.searchAnimations(animationData, standalone, renderer);\n    } else {\n      animationManager.searchAnimations();\n    }\n  }\n\n  function setSubframeRendering(flag) {\n    setSubframeEnabled(flag);\n  }\n\n  function setPrefix(prefix) {\n    setIdPrefix(prefix);\n  }\n\n  function loadAnimation(params) {\n    if (standalone === true) {\n      params.animationData = JSON.parse(animationData);\n    }\n\n    return animationManager.loadAnimation(params);\n  }\n\n  function setQuality(value) {\n    if (typeof value === 'string') {\n      switch (value) {\n        case 'high':\n          setDefaultCurveSegments(200);\n          break;\n\n        default:\n        case 'medium':\n          setDefaultCurveSegments(50);\n          break;\n\n        case 'low':\n          setDefaultCurveSegments(10);\n          break;\n      }\n    } else if (!isNaN(value) && value > 1) {\n      setDefaultCurveSegments(value);\n    }\n\n    if (getDefaultCurveSegments() >= 50) {\n      roundValues(false);\n    } else {\n      roundValues(true);\n    }\n  }\n\n  function inBrowser() {\n    return typeof navigator !== 'undefined';\n  }\n\n  function installPlugin(type, plugin) {\n    if (type === 'expressions') {\n      setExpressionsPlugin(plugin);\n    }\n  }\n\n  function getFactory(name) {\n    switch (name) {\n      case 'propertyFactory':\n        return PropertyFactory;\n\n      case 'shapePropertyFactory':\n        return ShapePropertyFactory;\n\n      case 'matrix':\n        return Matrix;\n\n      default:\n        return null;\n    }\n  }\n\n  lottie.play = animationManager.play;\n  lottie.pause = animationManager.pause;\n  lottie.setLocationHref = setLocation;\n  lottie.togglePause = animationManager.togglePause;\n  lottie.setSpeed = animationManager.setSpeed;\n  lottie.setDirection = animationManager.setDirection;\n  lottie.stop = animationManager.stop;\n  lottie.searchAnimations = searchAnimations;\n  lottie.registerAnimation = animationManager.registerAnimation;\n  lottie.loadAnimation = loadAnimation;\n  lottie.setSubframeRendering = setSubframeRendering;\n  lottie.resize = animationManager.resize; // lottie.start = start;\n\n  lottie.goToAndStop = animationManager.goToAndStop;\n  lottie.destroy = animationManager.destroy;\n  lottie.setQuality = setQuality;\n  lottie.inBrowser = inBrowser;\n  lottie.installPlugin = installPlugin;\n  lottie.freeze = animationManager.freeze;\n  lottie.unfreeze = animationManager.unfreeze;\n  lottie.setVolume = animationManager.setVolume;\n  lottie.mute = animationManager.mute;\n  lottie.unmute = animationManager.unmute;\n  lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n  lottie.useWebWorker = setWebWorker;\n  lottie.setIDPrefix = setPrefix;\n  lottie.__getFactory = getFactory;\n  lottie.version = '5.12.2';\n\n  function checkReady() {\n    if (document.readyState === 'complete') {\n      clearInterval(readyStateCheckInterval);\n      searchAnimations();\n    }\n  }\n\n  function getQueryVariable(variable) {\n    var vars = queryString.split('&');\n\n    for (var i = 0; i < vars.length; i += 1) {\n      var pair = vars[i].split('=');\n\n      if (decodeURIComponent(pair[0]) == variable) {\n        // eslint-disable-line eqeqeq\n        return decodeURIComponent(pair[1]);\n      }\n    }\n\n    return null;\n  }\n\n  var queryString = '';\n\n  if (standalone) {\n    var scripts = document.getElementsByTagName('script');\n    var index = scripts.length - 1;\n    var myScript = scripts[index] || {\n      src: ''\n    };\n    queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n    renderer = getQueryVariable('renderer');\n  }\n\n  var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n  try {\n    if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n    ) {\n      window.bodymovin = lottie;\n    }\n  } catch (err) {//\n  }\n\n  var ShapeModifiers = function () {\n    var ob = {};\n    var modifiers = {};\n    ob.registerModifier = registerModifier;\n    ob.getModifier = getModifier;\n\n    function registerModifier(nm, factory) {\n      if (!modifiers[nm]) {\n        modifiers[nm] = factory;\n      }\n    }\n\n    function getModifier(nm, elem, data) {\n      return new modifiers[nm](elem, data);\n    }\n\n    return ob;\n  }();\n\n  function ShapeModifier() {}\n\n  ShapeModifier.prototype.initModifierProperties = function () {};\n\n  ShapeModifier.prototype.addShapeToModifier = function () {};\n\n  ShapeModifier.prototype.addShape = function (data) {\n    if (!this.closed) {\n      // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n      data.sh.container.addDynamicProperty(data.sh);\n      var shapeData = {\n        shape: data.sh,\n        data: data,\n        localShapeCollection: shapeCollectionPool.newShapeCollection()\n      };\n      this.shapes.push(shapeData);\n      this.addShapeToModifier(shapeData);\n\n      if (this._isAnimated) {\n        data.setAsAnimated();\n      }\n    }\n  };\n\n  ShapeModifier.prototype.init = function (elem, data) {\n    this.shapes = [];\n    this.elem = elem;\n    this.initDynamicPropertyContainer(elem);\n    this.initModifierProperties(elem, data);\n    this.frameId = initialDefaultFrame;\n    this.closed = false;\n    this.k = false;\n\n    if (this.dynamicProperties.length) {\n      this.k = true;\n    } else {\n      this.getValue(true);\n    }\n  };\n\n  ShapeModifier.prototype.processKeys = function () {\n    if (this.elem.globalData.frameId === this.frameId) {\n      return;\n    }\n\n    this.frameId = this.elem.globalData.frameId;\n    this.iterateDynamicProperties();\n  };\n\n  extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n  function TrimModifier() {}\n\n  extendPrototype([ShapeModifier], TrimModifier);\n\n  TrimModifier.prototype.initModifierProperties = function (elem, data) {\n    this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n    this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n    this.sValue = 0;\n    this.eValue = 0;\n    this.getValue = this.processKeys;\n    this.m = data.m;\n    this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n  };\n\n  TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n    shapeData.pathsData = [];\n  };\n\n  TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n    var segments = [];\n\n    if (e <= 1) {\n      segments.push({\n        s: s,\n        e: e\n      });\n    } else if (s >= 1) {\n      segments.push({\n        s: s - 1,\n        e: e - 1\n      });\n    } else {\n      segments.push({\n        s: s,\n        e: 1\n      });\n      segments.push({\n        s: 0,\n        e: e - 1\n      });\n    }\n\n    var shapeSegments = [];\n    var i;\n    var len = segments.length;\n    var segmentOb;\n\n    for (i = 0; i < len; i += 1) {\n      segmentOb = segments[i];\n\n      if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n        var shapeS;\n        var shapeE;\n\n        if (segmentOb.s * totalModifierLength <= addedLength) {\n          shapeS = 0;\n        } else {\n          shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n        }\n\n        if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n          shapeE = 1;\n        } else {\n          shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n        }\n\n        shapeSegments.push([shapeS, shapeE]);\n      }\n    }\n\n    if (!shapeSegments.length) {\n      shapeSegments.push([0, 0]);\n    }\n\n    return shapeSegments;\n  };\n\n  TrimModifier.prototype.releasePathsData = function (pathsData) {\n    var i;\n    var len = pathsData.length;\n\n    for (i = 0; i < len; i += 1) {\n      segmentsLengthPool.release(pathsData[i]);\n    }\n\n    pathsData.length = 0;\n    return pathsData;\n  };\n\n  TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n    var s;\n    var e;\n\n    if (this._mdf || _isFirstFrame) {\n      var o = this.o.v % 360 / 360;\n\n      if (o < 0) {\n        o += 1;\n      }\n\n      if (this.s.v > 1) {\n        s = 1 + o;\n      } else if (this.s.v < 0) {\n        s = 0 + o;\n      } else {\n        s = this.s.v + o;\n      }\n\n      if (this.e.v > 1) {\n        e = 1 + o;\n      } else if (this.e.v < 0) {\n        e = 0 + o;\n      } else {\n        e = this.e.v + o;\n      }\n\n      if (s > e) {\n        var _s = s;\n        s = e;\n        e = _s;\n      }\n\n      s = Math.round(s * 10000) * 0.0001;\n      e = Math.round(e * 10000) * 0.0001;\n      this.sValue = s;\n      this.eValue = e;\n    } else {\n      s = this.sValue;\n      e = this.eValue;\n    }\n\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var pathsData;\n    var pathData;\n    var totalShapeLength;\n    var totalModifierLength = 0;\n\n    if (e === s) {\n      for (i = 0; i < len; i += 1) {\n        this.shapes[i].localShapeCollection.releaseShapes();\n        this.shapes[i].shape._mdf = true;\n        this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n        if (this._mdf) {\n          this.shapes[i].pathsData.length = 0;\n        }\n      }\n    } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n      var segments = [];\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n        if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n          shapeData.shape.paths = shapeData.localShapeCollection;\n        } else {\n          shapePaths = shapeData.shape.paths;\n          jLen = shapePaths._length;\n          totalShapeLength = 0;\n\n          if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n            totalShapeLength = shapeData.totalShapeLength;\n          } else {\n            pathsData = this.releasePathsData(shapeData.pathsData);\n\n            for (j = 0; j < jLen; j += 1) {\n              pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n              pathsData.push(pathData);\n              totalShapeLength += pathData.totalLength;\n            }\n\n            shapeData.totalShapeLength = totalShapeLength;\n            shapeData.pathsData = pathsData;\n          }\n\n          totalModifierLength += totalShapeLength;\n          shapeData.shape._mdf = true;\n        }\n      }\n\n      var shapeS = s;\n      var shapeE = e;\n      var addedLength = 0;\n      var edges;\n\n      for (i = len - 1; i >= 0; i -= 1) {\n        shapeData = this.shapes[i];\n\n        if (shapeData.shape._mdf) {\n          localShapeCollection = shapeData.localShapeCollection;\n          localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n          if (this.m === 2 && len > 1) {\n            edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n            addedLength += shapeData.totalShapeLength;\n          } else {\n            edges = [[shapeS, shapeE]];\n          }\n\n          jLen = edges.length;\n\n          for (j = 0; j < jLen; j += 1) {\n            shapeS = edges[j][0];\n            shapeE = edges[j][1];\n            segments.length = 0;\n\n            if (shapeE <= 1) {\n              segments.push({\n                s: shapeData.totalShapeLength * shapeS,\n                e: shapeData.totalShapeLength * shapeE\n              });\n            } else if (shapeS >= 1) {\n              segments.push({\n                s: shapeData.totalShapeLength * (shapeS - 1),\n                e: shapeData.totalShapeLength * (shapeE - 1)\n              });\n            } else {\n              segments.push({\n                s: shapeData.totalShapeLength * shapeS,\n                e: shapeData.totalShapeLength\n              });\n              segments.push({\n                s: 0,\n                e: shapeData.totalShapeLength * (shapeE - 1)\n              });\n            }\n\n            var newShapesData = this.addShapes(shapeData, segments[0]);\n\n            if (segments[0].s !== segments[0].e) {\n              if (segments.length > 1) {\n                var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n                if (lastShapeInCollection.c) {\n                  var lastShape = newShapesData.pop();\n                  this.addPaths(newShapesData, localShapeCollection);\n                  newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n                } else {\n                  this.addPaths(newShapesData, localShapeCollection);\n                  newShapesData = this.addShapes(shapeData, segments[1]);\n                }\n              }\n\n              this.addPaths(newShapesData, localShapeCollection);\n            }\n          }\n\n          shapeData.shape.paths = localShapeCollection;\n        }\n      }\n    } else if (this._mdf) {\n      for (i = 0; i < len; i += 1) {\n        // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n        // Don't remove this even if it's losing cached info.\n        this.shapes[i].pathsData.length = 0;\n        this.shapes[i].shape._mdf = true;\n      }\n    }\n  };\n\n  TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n    var i;\n    var len = newPaths.length;\n\n    for (i = 0; i < len; i += 1) {\n      localShapeCollection.addShape(newPaths[i]);\n    }\n  };\n\n  TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n    shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n    shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n    if (newShape) {\n      shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n    }\n\n    shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n  };\n\n  TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n    shapePath.setXYAt(points[1], points[5], 'o', pos);\n    shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n    if (newShape) {\n      shapePath.setXYAt(points[0], points[4], 'v', pos);\n    }\n\n    shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n  };\n\n  TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n    var pathsData = shapeData.pathsData;\n    var shapePaths = shapeData.shape.paths.shapes;\n    var i;\n    var len = shapeData.shape.paths._length;\n    var j;\n    var jLen;\n    var addedLength = 0;\n    var currentLengthData;\n    var segmentCount;\n    var lengths;\n    var segment;\n    var shapes = [];\n    var initPos;\n    var newShape = true;\n\n    if (!shapePath) {\n      shapePath = shapePool.newElement();\n      segmentCount = 0;\n      initPos = 0;\n    } else {\n      segmentCount = shapePath._length;\n      initPos = shapePath._length;\n    }\n\n    shapes.push(shapePath);\n\n    for (i = 0; i < len; i += 1) {\n      lengths = pathsData[i].lengths;\n      shapePath.c = shapePaths[i].c;\n      jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n      for (j = 1; j < jLen; j += 1) {\n        currentLengthData = lengths[j - 1];\n\n        if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n          addedLength += currentLengthData.addedLength;\n          shapePath.c = false;\n        } else if (addedLength > shapeSegment.e) {\n          shapePath.c = false;\n          break;\n        } else {\n          if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n            this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n            newShape = false;\n          } else {\n            segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n            this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n            newShape = false;\n            shapePath.c = false;\n          }\n\n          addedLength += currentLengthData.addedLength;\n          segmentCount += 1;\n        }\n      }\n\n      if (shapePaths[i].c && lengths.length) {\n        currentLengthData = lengths[j - 1];\n\n        if (addedLength <= shapeSegment.e) {\n          var segmentLength = lengths[j - 1].addedLength;\n\n          if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n            this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n            newShape = false;\n          } else {\n            segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n            this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n            newShape = false;\n            shapePath.c = false;\n          }\n        } else {\n          shapePath.c = false;\n        }\n\n        addedLength += currentLengthData.addedLength;\n        segmentCount += 1;\n      }\n\n      if (shapePath._length) {\n        shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n        shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n      }\n\n      if (addedLength > shapeSegment.e) {\n        break;\n      }\n\n      if (i < len - 1) {\n        shapePath = shapePool.newElement();\n        newShape = true;\n        shapes.push(shapePath);\n        segmentCount = 0;\n      }\n    }\n\n    return shapes;\n  };\n\n  function PuckerAndBloatModifier() {}\n\n  extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n  PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n    this._isAnimated = !!this.amount.effectsSequence.length;\n  };\n\n  PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n    var percent = amount / 100;\n    var centerPoint = [0, 0];\n    var pathLength = path._length;\n    var i = 0;\n\n    for (i = 0; i < pathLength; i += 1) {\n      centerPoint[0] += path.v[i][0];\n      centerPoint[1] += path.v[i][1];\n    }\n\n    centerPoint[0] /= pathLength;\n    centerPoint[1] /= pathLength;\n    var clonedPath = shapePool.newElement();\n    clonedPath.c = path.c;\n    var vX;\n    var vY;\n    var oX;\n    var oY;\n    var iX;\n    var iY;\n\n    for (i = 0; i < pathLength; i += 1) {\n      vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n      vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n      oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n      oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n      iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n      iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n      clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n    }\n\n    return clonedPath;\n  };\n\n  PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var amount = this.amount.v;\n\n    if (amount !== 0) {\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n          }\n        }\n\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  var TransformPropertyFactory = function () {\n    var defaultVector = [0, 0];\n\n    function applyToMatrix(mat) {\n      var _mdf = this._mdf;\n      this.iterateDynamicProperties();\n      this._mdf = this._mdf || _mdf;\n\n      if (this.a) {\n        mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n      }\n\n      if (this.s) {\n        mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n      }\n\n      if (this.sk) {\n        mat.skewFromAxis(-this.sk.v, this.sa.v);\n      }\n\n      if (this.r) {\n        mat.rotate(-this.r.v);\n      } else {\n        mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n      }\n\n      if (this.data.p.s) {\n        if (this.data.p.z) {\n          mat.translate(this.px.v, this.py.v, -this.pz.v);\n        } else {\n          mat.translate(this.px.v, this.py.v, 0);\n        }\n      } else {\n        mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n      }\n    }\n\n    function processKeys(forceRender) {\n      if (this.elem.globalData.frameId === this.frameId) {\n        return;\n      }\n\n      if (this._isDirty) {\n        this.precalculateMatrix();\n        this._isDirty = false;\n      }\n\n      this.iterateDynamicProperties();\n\n      if (this._mdf || forceRender) {\n        var frameRate;\n        this.v.cloneFromProps(this.pre.props);\n\n        if (this.appliedTransformations < 1) {\n          this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n        }\n\n        if (this.appliedTransformations < 2) {\n          this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n        }\n\n        if (this.sk && this.appliedTransformations < 3) {\n          this.v.skewFromAxis(-this.sk.v, this.sa.v);\n        }\n\n        if (this.r && this.appliedTransformations < 4) {\n          this.v.rotate(-this.r.v);\n        } else if (!this.r && this.appliedTransformations < 4) {\n          this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n        }\n\n        if (this.autoOriented) {\n          var v1;\n          var v2;\n          frameRate = this.elem.globalData.frameRate;\n\n          if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n            if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n              v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n              v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n            } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n              v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n              v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n            } else {\n              v1 = this.p.pv;\n              v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n            }\n          } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n            v1 = [];\n            v2 = [];\n            var px = this.px;\n            var py = this.py;\n\n            if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n              v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n              v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n              v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n              v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n            } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n              v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n              v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n              v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n              v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n            } else {\n              v1 = [px.pv, py.pv];\n              v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n              v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n            }\n          } else {\n            v2 = defaultVector;\n            v1 = v2;\n          }\n\n          this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n        }\n\n        if (this.data.p && this.data.p.s) {\n          if (this.data.p.z) {\n            this.v.translate(this.px.v, this.py.v, -this.pz.v);\n          } else {\n            this.v.translate(this.px.v, this.py.v, 0);\n          }\n        } else {\n          this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n        }\n      }\n\n      this.frameId = this.elem.globalData.frameId;\n    }\n\n    function precalculateMatrix() {\n      this.appliedTransformations = 0;\n      this.pre.reset();\n\n      if (!this.a.effectsSequence.length) {\n        this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n        this.appliedTransformations = 1;\n      } else {\n        return;\n      }\n\n      if (!this.s.effectsSequence.length) {\n        this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n        this.appliedTransformations = 2;\n      } else {\n        return;\n      }\n\n      if (this.sk) {\n        if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n          this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n          this.appliedTransformations = 3;\n        } else {\n          return;\n        }\n      }\n\n      if (this.r) {\n        if (!this.r.effectsSequence.length) {\n          this.pre.rotate(-this.r.v);\n          this.appliedTransformations = 4;\n        }\n      } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n        this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n        this.appliedTransformations = 4;\n      }\n    }\n\n    function autoOrient() {//\n      // var prevP = this.getValueAtTime();\n    }\n\n    function addDynamicProperty(prop) {\n      this._addDynamicProperty(prop);\n\n      this.elem.addDynamicProperty(prop);\n      this._isDirty = true;\n    }\n\n    function TransformProperty(elem, data, container) {\n      this.elem = elem;\n      this.frameId = -1;\n      this.propType = 'transform';\n      this.data = data;\n      this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n      this.pre = new Matrix();\n      this.appliedTransformations = 0;\n      this.initDynamicPropertyContainer(container || elem);\n\n      if (data.p && data.p.s) {\n        this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n        this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n        if (data.p.z) {\n          this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n        }\n      } else {\n        this.p = PropertyFactory.getProp(elem, data.p || {\n          k: [0, 0, 0]\n        }, 1, 0, this);\n      }\n\n      if (data.rx) {\n        this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n        this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n        this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n        if (data.or.k[0].ti) {\n          var i;\n          var len = data.or.k.length;\n\n          for (i = 0; i < len; i += 1) {\n            data.or.k[i].to = null;\n            data.or.k[i].ti = null;\n          }\n        }\n\n        this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n        this.or.sh = true;\n      } else {\n        this.r = PropertyFactory.getProp(elem, data.r || {\n          k: 0\n        }, 0, degToRads, this);\n      }\n\n      if (data.sk) {\n        this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n        this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n      }\n\n      this.a = PropertyFactory.getProp(elem, data.a || {\n        k: [0, 0, 0]\n      }, 1, 0, this);\n      this.s = PropertyFactory.getProp(elem, data.s || {\n        k: [100, 100, 100]\n      }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n      if (data.o) {\n        this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n      } else {\n        this.o = {\n          _mdf: false,\n          v: 1\n        };\n      }\n\n      this._isDirty = true;\n\n      if (!this.dynamicProperties.length) {\n        this.getValue(true);\n      }\n    }\n\n    TransformProperty.prototype = {\n      applyToMatrix: applyToMatrix,\n      getValue: processKeys,\n      precalculateMatrix: precalculateMatrix,\n      autoOrient: autoOrient\n    };\n    extendPrototype([DynamicPropertyContainer], TransformProperty);\n    TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n    TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n    function getTransformProperty(elem, data, container) {\n      return new TransformProperty(elem, data, container);\n    }\n\n    return {\n      getTransformProperty: getTransformProperty\n    };\n  }();\n\n  function RepeaterModifier() {}\n\n  extendPrototype([ShapeModifier], RepeaterModifier);\n\n  RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n    this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n    this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n    this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n    this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n    this.data = data;\n\n    if (!this.dynamicProperties.length) {\n      this.getValue(true);\n    }\n\n    this._isAnimated = !!this.dynamicProperties.length;\n    this.pMatrix = new Matrix();\n    this.rMatrix = new Matrix();\n    this.sMatrix = new Matrix();\n    this.tMatrix = new Matrix();\n    this.matrix = new Matrix();\n  };\n\n  RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n    var dir = inv ? -1 : 1;\n    var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n    var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n    pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n    rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n    rMatrix.rotate(-transform.r.v * dir * perc);\n    rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n    sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n    sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n    sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n  };\n\n  RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n    this.elem = elem;\n    this.arr = arr;\n    this.pos = pos;\n    this.elemsData = elemsData;\n    this._currentCopies = 0;\n    this._elements = [];\n    this._groups = [];\n    this.frameId = -1;\n    this.initDynamicPropertyContainer(elem);\n    this.initModifierProperties(elem, arr[pos]);\n\n    while (pos > 0) {\n      pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n      this._elements.unshift(arr[pos]);\n    }\n\n    if (this.dynamicProperties.length) {\n      this.k = true;\n    } else {\n      this.getValue(true);\n    }\n  };\n\n  RepeaterModifier.prototype.resetElements = function (elements) {\n    var i;\n    var len = elements.length;\n\n    for (i = 0; i < len; i += 1) {\n      elements[i]._processed = false;\n\n      if (elements[i].ty === 'gr') {\n        this.resetElements(elements[i].it);\n      }\n    }\n  };\n\n  RepeaterModifier.prototype.cloneElements = function (elements) {\n    var newElements = JSON.parse(JSON.stringify(elements));\n    this.resetElements(newElements);\n    return newElements;\n  };\n\n  RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n    var i;\n    var len = elements.length;\n\n    for (i = 0; i < len; i += 1) {\n      elements[i]._render = renderFlag;\n\n      if (elements[i].ty === 'gr') {\n        this.changeGroupRender(elements[i].it, renderFlag);\n      }\n    }\n  };\n\n  RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n    var items;\n    var itemsTransform;\n    var i;\n    var dir;\n    var cont;\n    var hasReloaded = false;\n\n    if (this._mdf || _isFirstFrame) {\n      var copies = Math.ceil(this.c.v);\n\n      if (this._groups.length < copies) {\n        while (this._groups.length < copies) {\n          var group = {\n            it: this.cloneElements(this._elements),\n            ty: 'gr'\n          };\n          group.it.push({\n            a: {\n              a: 0,\n              ix: 1,\n              k: [0, 0]\n            },\n            nm: 'Transform',\n            o: {\n              a: 0,\n              ix: 7,\n              k: 100\n            },\n            p: {\n              a: 0,\n              ix: 2,\n              k: [0, 0]\n            },\n            r: {\n              a: 1,\n              ix: 6,\n              k: [{\n                s: 0,\n                e: 0,\n                t: 0\n              }, {\n                s: 0,\n                e: 0,\n                t: 1\n              }]\n            },\n            s: {\n              a: 0,\n              ix: 3,\n              k: [100, 100]\n            },\n            sa: {\n              a: 0,\n              ix: 5,\n              k: 0\n            },\n            sk: {\n              a: 0,\n              ix: 4,\n              k: 0\n            },\n            ty: 'tr'\n          });\n          this.arr.splice(0, 0, group);\n\n          this._groups.splice(0, 0, group);\n\n          this._currentCopies += 1;\n        }\n\n        this.elem.reloadShapes();\n        hasReloaded = true;\n      }\n\n      cont = 0;\n      var renderFlag;\n\n      for (i = 0; i <= this._groups.length - 1; i += 1) {\n        renderFlag = cont < copies;\n        this._groups[i]._render = renderFlag;\n        this.changeGroupRender(this._groups[i].it, renderFlag);\n\n        if (!renderFlag) {\n          var elems = this.elemsData[i].it;\n          var transformData = elems[elems.length - 1];\n\n          if (transformData.transform.op.v !== 0) {\n            transformData.transform.op._mdf = true;\n            transformData.transform.op.v = 0;\n          } else {\n            transformData.transform.op._mdf = false;\n          }\n        }\n\n        cont += 1;\n      }\n\n      this._currentCopies = copies; /// /\n\n      var offset = this.o.v;\n      var offsetModulo = offset % 1;\n      var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n      var pProps = this.pMatrix.props;\n      var rProps = this.rMatrix.props;\n      var sProps = this.sMatrix.props;\n      this.pMatrix.reset();\n      this.rMatrix.reset();\n      this.sMatrix.reset();\n      this.tMatrix.reset();\n      this.matrix.reset();\n      var iteration = 0;\n\n      if (offset > 0) {\n        while (iteration < roundOffset) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n          iteration += 1;\n        }\n\n        if (offsetModulo) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n          iteration += offsetModulo;\n        }\n      } else if (offset < 0) {\n        while (iteration > roundOffset) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n          iteration -= 1;\n        }\n\n        if (offsetModulo) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n          iteration -= offsetModulo;\n        }\n      }\n\n      i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n      dir = this.data.m === 1 ? 1 : -1;\n      cont = this._currentCopies;\n      var j;\n      var jLen;\n\n      while (cont) {\n        items = this.elemsData[i].it;\n        itemsTransform = items[items.length - 1].transform.mProps.v.props;\n        jLen = itemsTransform.length;\n        items[items.length - 1].transform.mProps._mdf = true;\n        items[items.length - 1].transform.op._mdf = true;\n        items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n        if (iteration !== 0) {\n          if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n            this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n          }\n\n          this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n          this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n          this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n          for (j = 0; j < jLen; j += 1) {\n            itemsTransform[j] = this.matrix.props[j];\n          }\n\n          this.matrix.reset();\n        } else {\n          this.matrix.reset();\n\n          for (j = 0; j < jLen; j += 1) {\n            itemsTransform[j] = this.matrix.props[j];\n          }\n        }\n\n        iteration += 1;\n        cont -= 1;\n        i += dir;\n      }\n    } else {\n      cont = this._currentCopies;\n      i = 0;\n      dir = 1;\n\n      while (cont) {\n        items = this.elemsData[i].it;\n        itemsTransform = items[items.length - 1].transform.mProps.v.props;\n        items[items.length - 1].transform.mProps._mdf = false;\n        items[items.length - 1].transform.op._mdf = false;\n        cont -= 1;\n        i += dir;\n      }\n    }\n\n    return hasReloaded;\n  };\n\n  RepeaterModifier.prototype.addShape = function () {};\n\n  function RoundCornersModifier() {}\n\n  extendPrototype([ShapeModifier], RoundCornersModifier);\n\n  RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n    this._isAnimated = !!this.rd.effectsSequence.length;\n  };\n\n  RoundCornersModifier.prototype.processPath = function (path, round) {\n    var clonedPath = shapePool.newElement();\n    clonedPath.c = path.c;\n    var i;\n    var len = path._length;\n    var currentV;\n    var currentI;\n    var currentO;\n    var closerV;\n    var distance;\n    var newPosPerc;\n    var index = 0;\n    var vX;\n    var vY;\n    var oX;\n    var oY;\n    var iX;\n    var iY;\n\n    for (i = 0; i < len; i += 1) {\n      currentV = path.v[i];\n      currentO = path.o[i];\n      currentI = path.i[i];\n\n      if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n        if ((i === 0 || i === len - 1) && !path.c) {\n          clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n          /* clonedPath.v[index] = currentV;\r\n                  clonedPath.o[index] = currentO;\r\n                  clonedPath.i[index] = currentI; */\n\n          index += 1;\n        } else {\n          if (i === 0) {\n            closerV = path.v[len - 1];\n          } else {\n            closerV = path.v[i - 1];\n          }\n\n          distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n          newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n          iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n          vX = iX;\n          iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n          vY = iY;\n          oX = vX - (vX - currentV[0]) * roundCorner;\n          oY = vY - (vY - currentV[1]) * roundCorner;\n          clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n          index += 1;\n\n          if (i === len - 1) {\n            closerV = path.v[0];\n          } else {\n            closerV = path.v[i + 1];\n          }\n\n          distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n          newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n          oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n          vX = oX;\n          oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n          vY = oY;\n          iX = vX - (vX - currentV[0]) * roundCorner;\n          iY = vY - (vY - currentV[1]) * roundCorner;\n          clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n          index += 1;\n        }\n      } else {\n        clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n        index += 1;\n      }\n    }\n\n    return clonedPath;\n  };\n\n  RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var rd = this.rd.v;\n\n    if (rd !== 0) {\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n          }\n        }\n\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  function floatEqual(a, b) {\n    return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n  }\n\n  function floatZero(f) {\n    return Math.abs(f) <= 0.00001;\n  }\n\n  function lerp(p0, p1, amount) {\n    return p0 * (1 - amount) + p1 * amount;\n  }\n\n  function lerpPoint(p0, p1, amount) {\n    return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n  }\n\n  function quadRoots(a, b, c) {\n    // no root\n    if (a === 0) return [];\n    var s = b * b - 4 * a * c; // Complex roots\n\n    if (s < 0) return [];\n    var singleRoot = -b / (2 * a); // 1 root\n\n    if (s === 0) return [singleRoot];\n    var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n    return [singleRoot - delta, singleRoot + delta];\n  }\n\n  function polynomialCoefficients(p0, p1, p2, p3) {\n    return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n  }\n\n  function singlePoint(p) {\n    return new PolynomialBezier(p, p, p, p, false);\n  }\n\n  function PolynomialBezier(p0, p1, p2, p3, linearize) {\n    if (linearize && pointEqual(p0, p1)) {\n      p1 = lerpPoint(p0, p3, 1 / 3);\n    }\n\n    if (linearize && pointEqual(p2, p3)) {\n      p2 = lerpPoint(p0, p3, 2 / 3);\n    }\n\n    var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n    var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n    this.a = [coeffx[0], coeffy[0]];\n    this.b = [coeffx[1], coeffy[1]];\n    this.c = [coeffx[2], coeffy[2]];\n    this.d = [coeffx[3], coeffy[3]];\n    this.points = [p0, p1, p2, p3];\n  }\n\n  PolynomialBezier.prototype.point = function (t) {\n    return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n  };\n\n  PolynomialBezier.prototype.derivative = function (t) {\n    return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n  };\n\n  PolynomialBezier.prototype.tangentAngle = function (t) {\n    var p = this.derivative(t);\n    return Math.atan2(p[1], p[0]);\n  };\n\n  PolynomialBezier.prototype.normalAngle = function (t) {\n    var p = this.derivative(t);\n    return Math.atan2(p[0], p[1]);\n  };\n\n  PolynomialBezier.prototype.inflectionPoints = function () {\n    var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n    if (floatZero(denom)) return [];\n    var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n    var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n    if (square < 0) return [];\n    var root = Math.sqrt(square);\n\n    if (floatZero(root)) {\n      if (root > 0 && root < 1) return [tcusp];\n      return [];\n    }\n\n    return [tcusp - root, tcusp + root].filter(function (r) {\n      return r > 0 && r < 1;\n    });\n  };\n\n  PolynomialBezier.prototype.split = function (t) {\n    if (t <= 0) return [singlePoint(this.points[0]), this];\n    if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n    var p10 = lerpPoint(this.points[0], this.points[1], t);\n    var p11 = lerpPoint(this.points[1], this.points[2], t);\n    var p12 = lerpPoint(this.points[2], this.points[3], t);\n    var p20 = lerpPoint(p10, p11, t);\n    var p21 = lerpPoint(p11, p12, t);\n    var p3 = lerpPoint(p20, p21, t);\n    return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n  };\n\n  function extrema(bez, comp) {\n    var min = bez.points[0][comp];\n    var max = bez.points[bez.points.length - 1][comp];\n\n    if (min > max) {\n      var e = max;\n      max = min;\n      min = e;\n    } // Derivative roots to find min/max\n\n\n    var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n    for (var i = 0; i < f.length; i += 1) {\n      if (f[i] > 0 && f[i] < 1) {\n        var val = bez.point(f[i])[comp];\n        if (val < min) min = val;else if (val > max) max = val;\n      }\n    }\n\n    return {\n      min: min,\n      max: max\n    };\n  }\n\n  PolynomialBezier.prototype.bounds = function () {\n    return {\n      x: extrema(this, 0),\n      y: extrema(this, 1)\n    };\n  };\n\n  PolynomialBezier.prototype.boundingBox = function () {\n    var bounds = this.bounds();\n    return {\n      left: bounds.x.min,\n      right: bounds.x.max,\n      top: bounds.y.min,\n      bottom: bounds.y.max,\n      width: bounds.x.max - bounds.x.min,\n      height: bounds.y.max - bounds.y.min,\n      cx: (bounds.x.max + bounds.x.min) / 2,\n      cy: (bounds.y.max + bounds.y.min) / 2\n    };\n  };\n\n  function intersectData(bez, t1, t2) {\n    var box = bez.boundingBox();\n    return {\n      cx: box.cx,\n      cy: box.cy,\n      width: box.width,\n      height: box.height,\n      bez: bez,\n      t: (t1 + t2) / 2,\n      t1: t1,\n      t2: t2\n    };\n  }\n\n  function splitData(data) {\n    var split = data.bez.split(0.5);\n    return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n  }\n\n  function boxIntersect(b1, b2) {\n    return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n  }\n\n  function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n    if (!boxIntersect(d1, d2)) return;\n\n    if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n      intersections.push([d1.t, d2.t]);\n      return;\n    }\n\n    var d1s = splitData(d1);\n    var d2s = splitData(d2);\n    intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n    intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n    intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n    intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n  }\n\n  PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n    if (tolerance === undefined) tolerance = 2;\n    if (maxRecursion === undefined) maxRecursion = 7;\n    var intersections = [];\n    intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n    return intersections;\n  };\n\n  PolynomialBezier.shapeSegment = function (shapePath, index) {\n    var nextIndex = (index + 1) % shapePath.length();\n    return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n  };\n\n  PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n    var nextIndex = (index + 1) % shapePath.length();\n    return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n  };\n\n  function crossProduct(a, b) {\n    return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n  }\n\n  function lineIntersection(start1, end1, start2, end2) {\n    var v1 = [start1[0], start1[1], 1];\n    var v2 = [end1[0], end1[1], 1];\n    var v3 = [start2[0], start2[1], 1];\n    var v4 = [end2[0], end2[1], 1];\n    var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n    if (floatZero(r[2])) return null;\n    return [r[0] / r[2], r[1] / r[2]];\n  }\n\n  function polarOffset(p, angle, length) {\n    return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n  }\n\n  function pointDistance(p1, p2) {\n    return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n  }\n\n  function pointEqual(p1, p2) {\n    return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n  }\n\n  function ZigZagModifier() {}\n\n  extendPrototype([ShapeModifier], ZigZagModifier);\n\n  ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n    this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n    this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n    this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n  };\n\n  function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n    var angO = angle - Math.PI / 2;\n    var angI = angle + Math.PI / 2;\n    var px = point[0] + Math.cos(angle) * direction * amplitude;\n    var py = point[1] - Math.sin(angle) * direction * amplitude;\n    outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n  }\n\n  function getPerpendicularVector(pt1, pt2) {\n    var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n    var rot = -Math.PI * 0.5;\n    var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n    return rotatedVector;\n  }\n\n  function getProjectingAngle(path, cur) {\n    var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n    var nextIndex = (cur + 1) % path.length();\n    var prevPoint = path.v[prevIndex];\n    var nextPoint = path.v[nextIndex];\n    var pVector = getPerpendicularVector(prevPoint, nextPoint);\n    return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n  }\n\n  function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n    var angle = getProjectingAngle(path, cur);\n    var point = path.v[cur % path._length];\n    var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n    var nextPoint = path.v[(cur + 1) % path._length];\n    var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n    var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n    setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n  }\n\n  function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n    for (var i = 0; i < frequency; i += 1) {\n      var t = (i + 1) / (frequency + 1);\n      var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n      var angle = segment.normalAngle(t);\n      var point = segment.point(t);\n      setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n      direction = -direction;\n    }\n\n    return direction;\n  }\n\n  ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n    var count = path._length;\n    var clonedPath = shapePool.newElement();\n    clonedPath.c = path.c;\n\n    if (!path.c) {\n      count -= 1;\n    }\n\n    if (count === 0) return clonedPath;\n    var direction = -1;\n    var segment = PolynomialBezier.shapeSegment(path, 0);\n    zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n    for (var i = 0; i < count; i += 1) {\n      direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n      if (i === count - 1 && !path.c) {\n        segment = null;\n      } else {\n        segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n      }\n\n      zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n    }\n\n    return clonedPath;\n  };\n\n  ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var amplitude = this.amplitude.v;\n    var frequency = Math.max(0, Math.round(this.frequency.v));\n    var pointType = this.pointsType.v;\n\n    if (amplitude !== 0) {\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n          }\n        }\n\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  function linearOffset(p1, p2, amount) {\n    var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n    return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n  }\n\n  function offsetSegment(segment, amount) {\n    var p0;\n    var p1a;\n    var p1b;\n    var p2b;\n    var p2a;\n    var p3;\n    var e;\n    e = linearOffset(segment.points[0], segment.points[1], amount);\n    p0 = e[0];\n    p1a = e[1];\n    e = linearOffset(segment.points[1], segment.points[2], amount);\n    p1b = e[0];\n    p2b = e[1];\n    e = linearOffset(segment.points[2], segment.points[3], amount);\n    p2a = e[0];\n    p3 = e[1];\n    var p1 = lineIntersection(p0, p1a, p1b, p2b);\n    if (p1 === null) p1 = p1a;\n    var p2 = lineIntersection(p2a, p3, p1b, p2b);\n    if (p2 === null) p2 = p2a;\n    return new PolynomialBezier(p0, p1, p2, p3);\n  }\n\n  function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n    var p0 = seg1.points[3];\n    var p1 = seg2.points[0]; // Bevel\n\n    if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n    if (pointEqual(p0, p1)) return p0; // Round\n\n    if (lineJoin === 2) {\n      var angleOut = -seg1.tangentAngle(1);\n      var angleIn = -seg2.tangentAngle(0) + Math.PI;\n      var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n      var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n      var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n      outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n      tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n      outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n      return p1;\n    } // Miter\n\n\n    var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n    var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n    var intersection = lineIntersection(t0, p0, p1, t1);\n\n    if (intersection && pointDistance(intersection, p0) < miterLimit) {\n      outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n      return intersection;\n    }\n\n    return p0;\n  }\n\n  function getIntersection(a, b) {\n    var intersect = a.intersections(b);\n    if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n    if (intersect.length) return intersect[0];\n    return null;\n  }\n\n  function pruneSegmentIntersection(a, b) {\n    var outa = a.slice();\n    var outb = b.slice();\n    var intersect = getIntersection(a[a.length - 1], b[0]);\n\n    if (intersect) {\n      outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n      outb[0] = b[0].split(intersect[1])[1];\n    }\n\n    if (a.length > 1 && b.length > 1) {\n      intersect = getIntersection(a[0], b[b.length - 1]);\n\n      if (intersect) {\n        return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n      }\n    }\n\n    return [outa, outb];\n  }\n\n  function pruneIntersections(segments) {\n    var e;\n\n    for (var i = 1; i < segments.length; i += 1) {\n      e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n      segments[i - 1] = e[0];\n      segments[i] = e[1];\n    }\n\n    if (segments.length > 1) {\n      e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n      segments[segments.length - 1] = e[0];\n      segments[0] = e[1];\n    }\n\n    return segments;\n  }\n\n  function offsetSegmentSplit(segment, amount) {\n    /*\r\n      We split each bezier segment into smaller pieces based\r\n      on inflection points, this ensures the control point\r\n      polygon is convex.\r\n        (A cubic bezier can have none, one, or two inflection points)\r\n    */\n    var flex = segment.inflectionPoints();\n    var left;\n    var right;\n    var split;\n    var mid;\n\n    if (flex.length === 0) {\n      return [offsetSegment(segment, amount)];\n    }\n\n    if (flex.length === 1 || floatEqual(flex[1], 1)) {\n      split = segment.split(flex[0]);\n      left = split[0];\n      right = split[1];\n      return [offsetSegment(left, amount), offsetSegment(right, amount)];\n    }\n\n    split = segment.split(flex[0]);\n    left = split[0];\n    var t = (flex[1] - flex[0]) / (1 - flex[0]);\n    split = split[1].split(t);\n    mid = split[0];\n    right = split[1];\n    return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n  }\n\n  function OffsetPathModifier() {}\n\n  extendPrototype([ShapeModifier], OffsetPathModifier);\n\n  OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n    this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n    this.lineJoin = data.lj;\n    this._isAnimated = this.amount.effectsSequence.length !== 0;\n  };\n\n  OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n    var outputBezier = shapePool.newElement();\n    outputBezier.c = inputBezier.c;\n    var count = inputBezier.length();\n\n    if (!inputBezier.c) {\n      count -= 1;\n    }\n\n    var i;\n    var j;\n    var segment;\n    var multiSegments = [];\n\n    for (i = 0; i < count; i += 1) {\n      segment = PolynomialBezier.shapeSegment(inputBezier, i);\n      multiSegments.push(offsetSegmentSplit(segment, amount));\n    }\n\n    if (!inputBezier.c) {\n      for (i = count - 1; i >= 0; i -= 1) {\n        segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n        multiSegments.push(offsetSegmentSplit(segment, amount));\n      }\n    }\n\n    multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n    var lastPoint = null;\n    var lastSeg = null;\n\n    for (i = 0; i < multiSegments.length; i += 1) {\n      var multiSegment = multiSegments[i];\n      if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n      lastSeg = multiSegment[multiSegment.length - 1];\n\n      for (j = 0; j < multiSegment.length; j += 1) {\n        segment = multiSegment[j];\n\n        if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n          outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n        } else {\n          outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n        }\n\n        outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n        lastPoint = segment.points[3];\n      }\n    }\n\n    if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n    return outputBezier;\n  };\n\n  OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var amount = this.amount.v;\n    var miterLimit = this.miterLimit.v;\n    var lineJoin = this.lineJoin;\n\n    if (amount !== 0) {\n      var shapeData;\n      var localShapeCollection;\n\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n          }\n        }\n\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  function getFontProperties(fontData) {\n    var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n    var fWeight = 'normal';\n    var fStyle = 'normal';\n    var len = styles.length;\n    var styleName;\n\n    for (var i = 0; i < len; i += 1) {\n      styleName = styles[i].toLowerCase();\n\n      switch (styleName) {\n        case 'italic':\n          fStyle = 'italic';\n          break;\n\n        case 'bold':\n          fWeight = '700';\n          break;\n\n        case 'black':\n          fWeight = '900';\n          break;\n\n        case 'medium':\n          fWeight = '500';\n          break;\n\n        case 'regular':\n        case 'normal':\n          fWeight = '400';\n          break;\n\n        case 'light':\n        case 'thin':\n          fWeight = '200';\n          break;\n\n        default:\n          break;\n      }\n    }\n\n    return {\n      style: fStyle,\n      weight: fontData.fWeight || fWeight\n    };\n  }\n\n  var FontManager = function () {\n    var maxWaitingTime = 5000;\n    var emptyChar = {\n      w: 0,\n      size: 0,\n      shapes: [],\n      data: {\n        shapes: []\n      }\n    };\n    var combinedCharacters = []; // Hindi characters\n\n    combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n    var BLACK_FLAG_CODE_POINT = 127988;\n    var CANCEL_TAG_CODE_POINT = 917631;\n    var A_TAG_CODE_POINT = 917601;\n    var Z_TAG_CODE_POINT = 917626;\n    var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n    var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n    var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n    var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n    var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n    function trimFontOptions(font) {\n      var familyArray = font.split(',');\n      var i;\n      var len = familyArray.length;\n      var enabledFamilies = [];\n\n      for (i = 0; i < len; i += 1) {\n        if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n          enabledFamilies.push(familyArray[i]);\n        }\n      }\n\n      return enabledFamilies.join(',');\n    }\n\n    function setUpNode(font, family) {\n      var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n      parentNode.setAttribute('aria-hidden', true);\n      parentNode.style.fontFamily = family;\n      var node = createTag('span'); // Characters that vary significantly among different fonts\n\n      node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n      parentNode.style.position = 'absolute';\n      parentNode.style.left = '-10000px';\n      parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n      parentNode.style.fontSize = '300px'; // Reset any font properties\n\n      parentNode.style.fontVariant = 'normal';\n      parentNode.style.fontStyle = 'normal';\n      parentNode.style.fontWeight = 'normal';\n      parentNode.style.letterSpacing = '0';\n      parentNode.appendChild(node);\n      document.body.appendChild(parentNode); // Remember width with no applied web font\n\n      var width = node.offsetWidth;\n      node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n      return {\n        node: node,\n        w: width,\n        parent: parentNode\n      };\n    }\n\n    function checkLoadedFonts() {\n      var i;\n      var len = this.fonts.length;\n      var node;\n      var w;\n      var loadedCount = len;\n\n      for (i = 0; i < len; i += 1) {\n        if (this.fonts[i].loaded) {\n          loadedCount -= 1;\n        } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n          this.fonts[i].loaded = true;\n        } else {\n          node = this.fonts[i].monoCase.node;\n          w = this.fonts[i].monoCase.w;\n\n          if (node.offsetWidth !== w) {\n            loadedCount -= 1;\n            this.fonts[i].loaded = true;\n          } else {\n            node = this.fonts[i].sansCase.node;\n            w = this.fonts[i].sansCase.w;\n\n            if (node.offsetWidth !== w) {\n              loadedCount -= 1;\n              this.fonts[i].loaded = true;\n            }\n          }\n\n          if (this.fonts[i].loaded) {\n            this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n            this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n          }\n        }\n      }\n\n      if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n        setTimeout(this.checkLoadedFontsBinded, 20);\n      } else {\n        setTimeout(this.setIsLoadedBinded, 10);\n      }\n    }\n\n    function createHelper(fontData, def) {\n      var engine = document.body && def ? 'svg' : 'canvas';\n      var helper;\n      var fontProps = getFontProperties(fontData);\n\n      if (engine === 'svg') {\n        var tHelper = createNS('text');\n        tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n        tHelper.setAttribute('font-family', fontData.fFamily);\n        tHelper.setAttribute('font-style', fontProps.style);\n        tHelper.setAttribute('font-weight', fontProps.weight);\n        tHelper.textContent = '1';\n\n        if (fontData.fClass) {\n          tHelper.style.fontFamily = 'inherit';\n          tHelper.setAttribute('class', fontData.fClass);\n        } else {\n          tHelper.style.fontFamily = fontData.fFamily;\n        }\n\n        def.appendChild(tHelper);\n        helper = tHelper;\n      } else {\n        var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n        tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n        helper = tCanvasHelper;\n      }\n\n      function measure(text) {\n        if (engine === 'svg') {\n          helper.textContent = text;\n          return helper.getComputedTextLength();\n        }\n\n        return helper.measureText(text).width;\n      }\n\n      return {\n        measureText: measure\n      };\n    }\n\n    function addFonts(fontData, defs) {\n      if (!fontData) {\n        this.isLoaded = true;\n        return;\n      }\n\n      if (this.chars) {\n        this.isLoaded = true;\n        this.fonts = fontData.list;\n        return;\n      }\n\n      if (!document.body) {\n        this.isLoaded = true;\n        fontData.list.forEach(function (data) {\n          data.helper = createHelper(data);\n          data.cache = {};\n        });\n        this.fonts = fontData.list;\n        return;\n      }\n\n      var fontArr = fontData.list;\n      var i;\n      var len = fontArr.length;\n      var _pendingFonts = len;\n\n      for (i = 0; i < len; i += 1) {\n        var shouldLoadFont = true;\n        var loadedSelector;\n        var j;\n        fontArr[i].loaded = false;\n        fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n        fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n        if (!fontArr[i].fPath) {\n          fontArr[i].loaded = true;\n          _pendingFonts -= 1;\n        } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n          loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n          if (loadedSelector.length > 0) {\n            shouldLoadFont = false;\n          }\n\n          if (shouldLoadFont) {\n            var s = createTag('style');\n            s.setAttribute('f-forigin', fontArr[i].fOrigin);\n            s.setAttribute('f-origin', fontArr[i].origin);\n            s.setAttribute('f-family', fontArr[i].fFamily);\n            s.type = 'text/css';\n            s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n            defs.appendChild(s);\n          }\n        } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n          loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n          for (j = 0; j < loadedSelector.length; j += 1) {\n            if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n              // Font is already loaded\n              shouldLoadFont = false;\n            }\n          }\n\n          if (shouldLoadFont) {\n            var l = createTag('link');\n            l.setAttribute('f-forigin', fontArr[i].fOrigin);\n            l.setAttribute('f-origin', fontArr[i].origin);\n            l.type = 'text/css';\n            l.rel = 'stylesheet';\n            l.href = fontArr[i].fPath;\n            document.body.appendChild(l);\n          }\n        } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n          loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n          for (j = 0; j < loadedSelector.length; j += 1) {\n            if (fontArr[i].fPath === loadedSelector[j].src) {\n              // Font is already loaded\n              shouldLoadFont = false;\n            }\n          }\n\n          if (shouldLoadFont) {\n            var sc = createTag('link');\n            sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n            sc.setAttribute('f-origin', fontArr[i].origin);\n            sc.setAttribute('rel', 'stylesheet');\n            sc.setAttribute('href', fontArr[i].fPath);\n            defs.appendChild(sc);\n          }\n        }\n\n        fontArr[i].helper = createHelper(fontArr[i], defs);\n        fontArr[i].cache = {};\n        this.fonts.push(fontArr[i]);\n      }\n\n      if (_pendingFonts === 0) {\n        this.isLoaded = true;\n      } else {\n        // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n        // Adding this timeout seems to fix it\n        setTimeout(this.checkLoadedFonts.bind(this), 100);\n      }\n    }\n\n    function addChars(chars) {\n      if (!chars) {\n        return;\n      }\n\n      if (!this.chars) {\n        this.chars = [];\n      }\n\n      var i;\n      var len = chars.length;\n      var j;\n      var jLen = this.chars.length;\n      var found;\n\n      for (i = 0; i < len; i += 1) {\n        j = 0;\n        found = false;\n\n        while (j < jLen) {\n          if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n            found = true;\n          }\n\n          j += 1;\n        }\n\n        if (!found) {\n          this.chars.push(chars[i]);\n          jLen += 1;\n        }\n      }\n    }\n\n    function getCharData(_char, style, font) {\n      var i = 0;\n      var len = this.chars.length;\n\n      while (i < len) {\n        if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n          return this.chars[i];\n        }\n\n        i += 1;\n      }\n\n      if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n      && !this._warned) {\n        this._warned = true;\n        console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n      }\n\n      return emptyChar;\n    }\n\n    function measureText(_char2, fontName, size) {\n      var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n      // to avoid collisions between equal chars\n\n      var index = _char2;\n\n      if (!fontData.cache[index]) {\n        var tHelper = fontData.helper;\n\n        if (_char2 === ' ') {\n          var doubleSize = tHelper.measureText('|' + _char2 + '|');\n          var singleSize = tHelper.measureText('||');\n          fontData.cache[index] = (doubleSize - singleSize) / 100;\n        } else {\n          fontData.cache[index] = tHelper.measureText(_char2) / 100;\n        }\n      }\n\n      return fontData.cache[index] * size;\n    }\n\n    function getFontByName(name) {\n      var i = 0;\n      var len = this.fonts.length;\n\n      while (i < len) {\n        if (this.fonts[i].fName === name) {\n          return this.fonts[i];\n        }\n\n        i += 1;\n      }\n\n      return this.fonts[0];\n    }\n\n    function getCodePoint(string) {\n      var codePoint = 0;\n      var first = string.charCodeAt(0);\n\n      if (first >= 0xD800 && first <= 0xDBFF) {\n        var second = string.charCodeAt(1);\n\n        if (second >= 0xDC00 && second <= 0xDFFF) {\n          codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n        }\n      }\n\n      return codePoint;\n    } // Skin tone modifiers\n\n\n    function isModifier(firstCharCode, secondCharCode) {\n      var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n      return surrogateModifiers.indexOf(sum) !== -1;\n    }\n\n    function isZeroWidthJoiner(charCode) {\n      return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n    } // This codepoint may change the appearance of the preceding character.\n    // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n    // as a colorful image as compared to a monochrome text variant.\n\n\n    function isVariationSelector(charCode) {\n      return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n    } // The regional indicator symbols are a set of 26 alphabetic Unicode\n    /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n    // two-letter country codes in a way that allows optional special treatment.\n\n\n    function isRegionalCode(string) {\n      var codePoint = getCodePoint(string);\n\n      if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n        return true;\n      }\n\n      return false;\n    } // Some Emoji implementations represent combinations of\n    // two “regional indicator” letters as a single flag symbol.\n\n\n    function isFlagEmoji(string) {\n      return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n    }\n\n    function isCombinedCharacter(_char3) {\n      return combinedCharacters.indexOf(_char3) !== -1;\n    } // Regional flags start with a BLACK_FLAG_CODE_POINT\n    // folowed by 5 chars in the TAG range\n    // and end with a CANCEL_TAG_CODE_POINT\n\n\n    function isRegionalFlag(text, index) {\n      var codePoint = getCodePoint(text.substr(index, 2));\n\n      if (codePoint !== BLACK_FLAG_CODE_POINT) {\n        return false;\n      }\n\n      var count = 0;\n      index += 2;\n\n      while (count < 5) {\n        codePoint = getCodePoint(text.substr(index, 2));\n\n        if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n          return false;\n        }\n\n        count += 1;\n        index += 2;\n      }\n\n      return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n    }\n\n    function setIsLoaded() {\n      this.isLoaded = true;\n    }\n\n    var Font = function Font() {\n      this.fonts = [];\n      this.chars = null;\n      this.typekitLoaded = 0;\n      this.isLoaded = false;\n      this._warned = false;\n      this.initTime = Date.now();\n      this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n      this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n    };\n\n    Font.isModifier = isModifier;\n    Font.isZeroWidthJoiner = isZeroWidthJoiner;\n    Font.isFlagEmoji = isFlagEmoji;\n    Font.isRegionalCode = isRegionalCode;\n    Font.isCombinedCharacter = isCombinedCharacter;\n    Font.isRegionalFlag = isRegionalFlag;\n    Font.isVariationSelector = isVariationSelector;\n    Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n    var fontPrototype = {\n      addChars: addChars,\n      addFonts: addFonts,\n      getCharData: getCharData,\n      getFontByName: getFontByName,\n      measureText: measureText,\n      checkLoadedFonts: checkLoadedFonts,\n      setIsLoaded: setIsLoaded\n    };\n    Font.prototype = fontPrototype;\n    return Font;\n  }();\n\n  function SlotManager(animationData) {\n    this.animationData = animationData;\n  }\n\n  SlotManager.prototype.getProp = function (data) {\n    if (this.animationData.slots && this.animationData.slots[data.sid]) {\n      return Object.assign(data, this.animationData.slots[data.sid].p);\n    }\n\n    return data;\n  };\n\n  function slotFactory(animationData) {\n    return new SlotManager(animationData);\n  }\n\n  function RenderableElement() {}\n\n  RenderableElement.prototype = {\n    initRenderable: function initRenderable() {\n      // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n      this.isInRange = false; // layer's display state\n\n      this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n      this.isTransparent = false; // list of animated components\n\n      this.renderableComponents = [];\n    },\n    addRenderableComponent: function addRenderableComponent(component) {\n      if (this.renderableComponents.indexOf(component) === -1) {\n        this.renderableComponents.push(component);\n      }\n    },\n    removeRenderableComponent: function removeRenderableComponent(component) {\n      if (this.renderableComponents.indexOf(component) !== -1) {\n        this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n      }\n    },\n    prepareRenderableFrame: function prepareRenderableFrame(num) {\n      this.checkLayerLimits(num);\n    },\n    checkTransparency: function checkTransparency() {\n      if (this.finalTransform.mProp.o.v <= 0) {\n        if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n          this.isTransparent = true;\n          this.hide();\n        }\n      } else if (this.isTransparent) {\n        this.isTransparent = false;\n        this.show();\n      }\n    },\n\n    /**\r\n       * @function\r\n       * Initializes frame related properties.\r\n       *\r\n       * @param {number} num\r\n       * current frame number in Layer's time\r\n       *\r\n       */\n    checkLayerLimits: function checkLayerLimits(num) {\n      if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n        if (this.isInRange !== true) {\n          this.globalData._mdf = true;\n          this._mdf = true;\n          this.isInRange = true;\n          this.show();\n        }\n      } else if (this.isInRange !== false) {\n        this.globalData._mdf = true;\n        this.isInRange = false;\n        this.hide();\n      }\n    },\n    renderRenderable: function renderRenderable() {\n      var i;\n      var len = this.renderableComponents.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.renderableComponents[i].renderFrame(this._isFirstFrame);\n      }\n      /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n          this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n    },\n    sourceRectAtTime: function sourceRectAtTime() {\n      return {\n        top: 0,\n        left: 0,\n        width: 100,\n        height: 100\n      };\n    },\n    getLayerSize: function getLayerSize() {\n      if (this.data.ty === 5) {\n        return {\n          w: this.data.textData.width,\n          h: this.data.textData.height\n        };\n      }\n\n      return {\n        w: this.data.width,\n        h: this.data.height\n      };\n    }\n  };\n\n  var getBlendMode = function () {\n    var blendModeEnums = {\n      0: 'source-over',\n      1: 'multiply',\n      2: 'screen',\n      3: 'overlay',\n      4: 'darken',\n      5: 'lighten',\n      6: 'color-dodge',\n      7: 'color-burn',\n      8: 'hard-light',\n      9: 'soft-light',\n      10: 'difference',\n      11: 'exclusion',\n      12: 'hue',\n      13: 'saturation',\n      14: 'color',\n      15: 'luminosity'\n    };\n    return function (mode) {\n      return blendModeEnums[mode] || '';\n    };\n  }();\n\n  function SliderEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function AngleEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function ColorEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n  }\n\n  function PointEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n  }\n\n  function LayerIndexEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function MaskIndexEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function CheckboxEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n\n  function NoValueEffect() {\n    this.p = {};\n  }\n\n  function EffectsManager(data, element) {\n    var effects = data.ef || [];\n    this.effectElements = [];\n    var i;\n    var len = effects.length;\n    var effectItem;\n\n    for (i = 0; i < len; i += 1) {\n      effectItem = new GroupEffect(effects[i], element);\n      this.effectElements.push(effectItem);\n    }\n  }\n\n  function GroupEffect(data, element) {\n    this.init(data, element);\n  }\n\n  extendPrototype([DynamicPropertyContainer], GroupEffect);\n  GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n  GroupEffect.prototype.init = function (data, element) {\n    this.data = data;\n    this.effectElements = [];\n    this.initDynamicPropertyContainer(element);\n    var i;\n    var len = this.data.ef.length;\n    var eff;\n    var effects = this.data.ef;\n\n    for (i = 0; i < len; i += 1) {\n      eff = null;\n\n      switch (effects[i].ty) {\n        case 0:\n          eff = new SliderEffect(effects[i], element, this);\n          break;\n\n        case 1:\n          eff = new AngleEffect(effects[i], element, this);\n          break;\n\n        case 2:\n          eff = new ColorEffect(effects[i], element, this);\n          break;\n\n        case 3:\n          eff = new PointEffect(effects[i], element, this);\n          break;\n\n        case 4:\n        case 7:\n          eff = new CheckboxEffect(effects[i], element, this);\n          break;\n\n        case 10:\n          eff = new LayerIndexEffect(effects[i], element, this);\n          break;\n\n        case 11:\n          eff = new MaskIndexEffect(effects[i], element, this);\n          break;\n\n        case 5:\n          eff = new EffectsManager(effects[i], element, this);\n          break;\n        // case 6:\n\n        default:\n          eff = new NoValueEffect(effects[i], element, this);\n          break;\n      }\n\n      if (eff) {\n        this.effectElements.push(eff);\n      }\n    }\n  };\n\n  function BaseElement() {}\n\n  BaseElement.prototype = {\n    checkMasks: function checkMasks() {\n      if (!this.data.hasMask) {\n        return false;\n      }\n\n      var i = 0;\n      var len = this.data.masksProperties.length;\n\n      while (i < len) {\n        if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n          return true;\n        }\n\n        i += 1;\n      }\n\n      return false;\n    },\n    initExpressions: function initExpressions() {\n      var expressionsInterfaces = getExpressionInterfaces();\n\n      if (!expressionsInterfaces) {\n        return;\n      }\n\n      var LayerExpressionInterface = expressionsInterfaces('layer');\n      var EffectsExpressionInterface = expressionsInterfaces('effects');\n      var ShapeExpressionInterface = expressionsInterfaces('shape');\n      var TextExpressionInterface = expressionsInterfaces('text');\n      var CompExpressionInterface = expressionsInterfaces('comp');\n      this.layerInterface = LayerExpressionInterface(this);\n\n      if (this.data.hasMask && this.maskManager) {\n        this.layerInterface.registerMaskInterface(this.maskManager);\n      }\n\n      var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n      this.layerInterface.registerEffectsInterface(effectsInterface);\n\n      if (this.data.ty === 0 || this.data.xt) {\n        this.compInterface = CompExpressionInterface(this);\n      } else if (this.data.ty === 4) {\n        this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n        this.layerInterface.content = this.layerInterface.shapeInterface;\n      } else if (this.data.ty === 5) {\n        this.layerInterface.textInterface = TextExpressionInterface(this);\n        this.layerInterface.text = this.layerInterface.textInterface;\n      }\n    },\n    setBlendMode: function setBlendMode() {\n      var blendModeValue = getBlendMode(this.data.bm);\n      var elem = this.baseElement || this.layerElement;\n      elem.style['mix-blend-mode'] = blendModeValue;\n    },\n    initBaseData: function initBaseData(data, globalData, comp) {\n      this.globalData = globalData;\n      this.comp = comp;\n      this.data = data;\n      this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n      if (!this.data.sr) {\n        this.data.sr = 1;\n      } // effects manager\n\n\n      this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n    },\n    getType: function getType() {\n      return this.type;\n    },\n    sourceRectAtTime: function sourceRectAtTime() {}\n  };\n\n  /**\r\n   * @file\r\n   * Handles element's layer frame update.\r\n   * Checks layer in point and out point\r\n   *\r\n   */\n  function FrameElement() {}\n\n  FrameElement.prototype = {\n    /**\r\n       * @function\r\n       * Initializes frame related properties.\r\n       *\r\n       */\n    initFrame: function initFrame() {\n      // set to true when inpoint is rendered\n      this._isFirstFrame = false; // list of animated properties\n\n      this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n      this._mdf = false;\n    },\n\n    /**\r\n       * @function\r\n       * Calculates all dynamic values\r\n       *\r\n       * @param {number} num\r\n       * current frame number in Layer's time\r\n       * @param {boolean} isVisible\r\n       * if layers is currently in range\r\n       *\r\n       */\n    prepareProperties: function prepareProperties(num, isVisible) {\n      var i;\n      var len = this.dynamicProperties.length;\n\n      for (i = 0; i < len; i += 1) {\n        if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n          this.dynamicProperties[i].getValue();\n\n          if (this.dynamicProperties[i]._mdf) {\n            this.globalData._mdf = true;\n            this._mdf = true;\n          }\n        }\n      }\n    },\n    addDynamicProperty: function addDynamicProperty(prop) {\n      if (this.dynamicProperties.indexOf(prop) === -1) {\n        this.dynamicProperties.push(prop);\n      }\n    }\n  };\n\n  function FootageElement(data, globalData, comp) {\n    this.initFrame();\n    this.initRenderable();\n    this.assetData = globalData.getAssetData(data.refId);\n    this.footageData = globalData.imageLoader.getAsset(this.assetData);\n    this.initBaseData(data, globalData, comp);\n  }\n\n  FootageElement.prototype.prepareFrame = function () {};\n\n  extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n  FootageElement.prototype.getBaseElement = function () {\n    return null;\n  };\n\n  FootageElement.prototype.renderFrame = function () {};\n\n  FootageElement.prototype.destroy = function () {};\n\n  FootageElement.prototype.initExpressions = function () {\n    var expressionsInterfaces = getExpressionInterfaces();\n\n    if (!expressionsInterfaces) {\n      return;\n    }\n\n    var FootageInterface = expressionsInterfaces('footage');\n    this.layerInterface = FootageInterface(this);\n  };\n\n  FootageElement.prototype.getFootageData = function () {\n    return this.footageData;\n  };\n\n  function AudioElement(data, globalData, comp) {\n    this.initFrame();\n    this.initRenderable();\n    this.assetData = globalData.getAssetData(data.refId);\n    this.initBaseData(data, globalData, comp);\n    this._isPlaying = false;\n    this._canPlay = false;\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\n    this.audio = this.globalData.audioController.createAudio(assetPath);\n    this._currentTime = 0;\n    this.globalData.audioController.addAudio(this);\n    this._volumeMultiplier = 1;\n    this._volume = 1;\n    this._previousVolume = null;\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n    this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n      k: [100]\n    }, 1, 0.01, this);\n  }\n\n  AudioElement.prototype.prepareFrame = function (num) {\n    this.prepareRenderableFrame(num, true);\n    this.prepareProperties(num, true);\n\n    if (!this.tm._placeholder) {\n      var timeRemapped = this.tm.v;\n      this._currentTime = timeRemapped;\n    } else {\n      this._currentTime = num / this.data.sr;\n    }\n\n    this._volume = this.lv.v[0];\n    var totalVolume = this._volume * this._volumeMultiplier;\n\n    if (this._previousVolume !== totalVolume) {\n      this._previousVolume = totalVolume;\n      this.audio.volume(totalVolume);\n    }\n  };\n\n  extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n  AudioElement.prototype.renderFrame = function () {\n    if (this.isInRange && this._canPlay) {\n      if (!this._isPlaying) {\n        this.audio.play();\n        this.audio.seek(this._currentTime / this.globalData.frameRate);\n        this._isPlaying = true;\n      } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n        this.audio.seek(this._currentTime / this.globalData.frameRate);\n      }\n    }\n  };\n\n  AudioElement.prototype.show = function () {// this.audio.play()\n  };\n\n  AudioElement.prototype.hide = function () {\n    this.audio.pause();\n    this._isPlaying = false;\n  };\n\n  AudioElement.prototype.pause = function () {\n    this.audio.pause();\n    this._isPlaying = false;\n    this._canPlay = false;\n  };\n\n  AudioElement.prototype.resume = function () {\n    this._canPlay = true;\n  };\n\n  AudioElement.prototype.setRate = function (rateValue) {\n    this.audio.rate(rateValue);\n  };\n\n  AudioElement.prototype.volume = function (volumeValue) {\n    this._volumeMultiplier = volumeValue;\n    this._previousVolume = volumeValue * this._volume;\n    this.audio.volume(this._previousVolume);\n  };\n\n  AudioElement.prototype.getBaseElement = function () {\n    return null;\n  };\n\n  AudioElement.prototype.destroy = function () {};\n\n  AudioElement.prototype.sourceRectAtTime = function () {};\n\n  AudioElement.prototype.initExpressions = function () {};\n\n  function BaseRenderer() {}\n\n  BaseRenderer.prototype.checkLayers = function (num) {\n    var i;\n    var len = this.layers.length;\n    var data;\n    this.completeLayers = true;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (!this.elements[i]) {\n        data = this.layers[i];\n\n        if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n          this.buildItem(i);\n        }\n      }\n\n      this.completeLayers = this.elements[i] ? this.completeLayers : false;\n    }\n\n    this.checkPendingElements();\n  };\n\n  BaseRenderer.prototype.createItem = function (layer) {\n    switch (layer.ty) {\n      case 2:\n        return this.createImage(layer);\n\n      case 0:\n        return this.createComp(layer);\n\n      case 1:\n        return this.createSolid(layer);\n\n      case 3:\n        return this.createNull(layer);\n\n      case 4:\n        return this.createShape(layer);\n\n      case 5:\n        return this.createText(layer);\n\n      case 6:\n        return this.createAudio(layer);\n\n      case 13:\n        return this.createCamera(layer);\n\n      case 15:\n        return this.createFootage(layer);\n\n      default:\n        return this.createNull(layer);\n    }\n  };\n\n  BaseRenderer.prototype.createCamera = function () {\n    throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n  };\n\n  BaseRenderer.prototype.createAudio = function (data) {\n    return new AudioElement(data, this.globalData, this);\n  };\n\n  BaseRenderer.prototype.createFootage = function (data) {\n    return new FootageElement(data, this.globalData, this);\n  };\n\n  BaseRenderer.prototype.buildAllItems = function () {\n    var i;\n    var len = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.buildItem(i);\n    }\n\n    this.checkPendingElements();\n  };\n\n  BaseRenderer.prototype.includeLayers = function (newLayers) {\n    this.completeLayers = false;\n    var i;\n    var len = newLayers.length;\n    var j;\n    var jLen = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      j = 0;\n\n      while (j < jLen) {\n        if (this.layers[j].id === newLayers[i].id) {\n          this.layers[j] = newLayers[i];\n          break;\n        }\n\n        j += 1;\n      }\n    }\n  };\n\n  BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n    this.globalData.projectInterface = pInterface;\n  };\n\n  BaseRenderer.prototype.initItems = function () {\n    if (!this.globalData.progressiveLoad) {\n      this.buildAllItems();\n    }\n  };\n\n  BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n    var elements = this.elements;\n    var layers = this.layers;\n    var i = 0;\n    var len = layers.length;\n\n    while (i < len) {\n      if (layers[i].ind == parentName) {\n        // eslint-disable-line eqeqeq\n        if (!elements[i] || elements[i] === true) {\n          this.buildItem(i);\n          this.addPendingElement(element);\n        } else {\n          hierarchy.push(elements[i]);\n          elements[i].setAsParent();\n\n          if (layers[i].parent !== undefined) {\n            this.buildElementParenting(element, layers[i].parent, hierarchy);\n          } else {\n            element.setHierarchy(hierarchy);\n          }\n        }\n      }\n\n      i += 1;\n    }\n  };\n\n  BaseRenderer.prototype.addPendingElement = function (element) {\n    this.pendingElements.push(element);\n  };\n\n  BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n    var i;\n    var len = assets.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (assets[i].xt) {\n        var comp = this.createComp(assets[i]);\n        comp.initExpressions();\n        this.globalData.projectInterface.registerComposition(comp);\n      }\n    }\n  };\n\n  BaseRenderer.prototype.getElementById = function (ind) {\n    var i;\n    var len = this.elements.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i].data.ind === ind) {\n        return this.elements[i];\n      }\n    }\n\n    return null;\n  };\n\n  BaseRenderer.prototype.getElementByPath = function (path) {\n    var pathValue = path.shift();\n    var element;\n\n    if (typeof pathValue === 'number') {\n      element = this.elements[pathValue];\n    } else {\n      var i;\n      var len = this.elements.length;\n\n      for (i = 0; i < len; i += 1) {\n        if (this.elements[i].data.nm === pathValue) {\n          element = this.elements[i];\n          break;\n        }\n      }\n    }\n\n    if (path.length === 0) {\n      return element;\n    }\n\n    return element.getElementByPath(path);\n  };\n\n  BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n    this.globalData.fontManager = new FontManager();\n    this.globalData.slotManager = slotFactory(animData);\n    this.globalData.fontManager.addChars(animData.chars);\n    this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n    this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n    this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n    this.globalData.imageLoader = this.animationItem.imagePreloader;\n    this.globalData.audioController = this.animationItem.audioController;\n    this.globalData.frameId = 0;\n    this.globalData.frameRate = animData.fr;\n    this.globalData.nm = animData.nm;\n    this.globalData.compSize = {\n      w: animData.w,\n      h: animData.h\n    };\n  };\n\n  var effectTypes = {\n    TRANSFORM_EFFECT: 'transformEFfect'\n  };\n\n  function TransformElement() {}\n\n  TransformElement.prototype = {\n    initTransform: function initTransform() {\n      var mat = new Matrix();\n      this.finalTransform = {\n        mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n          o: 0\n        },\n        _matMdf: false,\n        _localMatMdf: false,\n        _opMdf: false,\n        mat: mat,\n        localMat: mat,\n        localOpacity: 1\n      };\n\n      if (this.data.ao) {\n        this.finalTransform.mProp.autoOriented = true;\n      } // TODO: check TYPE 11: Guided elements\n\n\n      if (this.data.ty !== 11) {// this.createElements();\n      }\n    },\n    renderTransform: function renderTransform() {\n      this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n      this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n      if (this.hierarchy) {\n        var mat;\n        var finalMat = this.finalTransform.mat;\n        var i = 0;\n        var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n        if (!this.finalTransform._matMdf) {\n          while (i < len) {\n            if (this.hierarchy[i].finalTransform.mProp._mdf) {\n              this.finalTransform._matMdf = true;\n              break;\n            }\n\n            i += 1;\n          }\n        }\n\n        if (this.finalTransform._matMdf) {\n          mat = this.finalTransform.mProp.v.props;\n          finalMat.cloneFromProps(mat);\n\n          for (i = 0; i < len; i += 1) {\n            finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n          }\n        }\n      }\n\n      if (this.finalTransform._matMdf) {\n        this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n      }\n\n      if (this.finalTransform._opMdf) {\n        this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n      }\n    },\n    renderLocalTransform: function renderLocalTransform() {\n      if (this.localTransforms) {\n        var i = 0;\n        var len = this.localTransforms.length;\n        this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n        if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n          while (i < len) {\n            if (this.localTransforms[i]._mdf) {\n              this.finalTransform._localMatMdf = true;\n            }\n\n            if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n              this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n              this.finalTransform._opMdf = true;\n            }\n\n            i += 1;\n          }\n        }\n\n        if (this.finalTransform._localMatMdf) {\n          var localMat = this.finalTransform.localMat;\n          this.localTransforms[0].matrix.clone(localMat);\n\n          for (i = 1; i < len; i += 1) {\n            var lmat = this.localTransforms[i].matrix;\n            localMat.multiply(lmat);\n          }\n\n          localMat.multiply(this.finalTransform.mat);\n        }\n\n        if (this.finalTransform._opMdf) {\n          var localOp = this.finalTransform.localOpacity;\n\n          for (i = 0; i < len; i += 1) {\n            localOp *= this.localTransforms[i].opacity * 0.01;\n          }\n\n          this.finalTransform.localOpacity = localOp;\n        }\n      }\n    },\n    searchEffectTransforms: function searchEffectTransforms() {\n      if (this.renderableEffectsManager) {\n        var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n        if (transformEffects.length) {\n          this.localTransforms = [];\n          this.finalTransform.localMat = new Matrix();\n          var i = 0;\n          var len = transformEffects.length;\n\n          for (i = 0; i < len; i += 1) {\n            this.localTransforms.push(transformEffects[i]);\n          }\n        }\n      }\n    },\n    globalToLocal: function globalToLocal(pt) {\n      var transforms = [];\n      transforms.push(this.finalTransform);\n      var flag = true;\n      var comp = this.comp;\n\n      while (flag) {\n        if (comp.finalTransform) {\n          if (comp.data.hasMask) {\n            transforms.splice(0, 0, comp.finalTransform);\n          }\n\n          comp = comp.comp;\n        } else {\n          flag = false;\n        }\n      }\n\n      var i;\n      var len = transforms.length;\n      var ptNew;\n\n      for (i = 0; i < len; i += 1) {\n        ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n        pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n      }\n\n      return pt;\n    },\n    mHelper: new Matrix()\n  };\n\n  function MaskElement(data, element, globalData) {\n    this.data = data;\n    this.element = element;\n    this.globalData = globalData;\n    this.storedData = [];\n    this.masksProperties = this.data.masksProperties || [];\n    this.maskElement = null;\n    var defs = this.globalData.defs;\n    var i;\n    var len = this.masksProperties ? this.masksProperties.length : 0;\n    this.viewData = createSizedArray(len);\n    this.solidPath = '';\n    var path;\n    var properties = this.masksProperties;\n    var count = 0;\n    var currentMasks = [];\n    var j;\n    var jLen;\n    var layerId = createElementID();\n    var rect;\n    var expansor;\n    var feMorph;\n    var x;\n    var maskType = 'clipPath';\n    var maskRef = 'clip-path';\n\n    for (i = 0; i < len; i += 1) {\n      if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n        maskType = 'mask';\n        maskRef = 'mask';\n      }\n\n      if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n        rect = createNS('rect');\n        rect.setAttribute('fill', '#ffffff');\n        rect.setAttribute('width', this.element.comp.data.w || 0);\n        rect.setAttribute('height', this.element.comp.data.h || 0);\n        currentMasks.push(rect);\n      } else {\n        rect = null;\n      }\n\n      path = createNS('path');\n\n      if (properties[i].mode === 'n') {\n        // TODO move this to a factory or to a constructor\n        this.viewData[i] = {\n          op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n          prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n          elem: path,\n          lastPath: ''\n        };\n        defs.appendChild(path);\n      } else {\n        count += 1;\n        path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n        path.setAttribute('clip-rule', 'nonzero');\n        var filterID;\n\n        if (properties[i].x.k !== 0) {\n          maskType = 'mask';\n          maskRef = 'mask';\n          x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n          filterID = createElementID();\n          expansor = createNS('filter');\n          expansor.setAttribute('id', filterID);\n          feMorph = createNS('feMorphology');\n          feMorph.setAttribute('operator', 'erode');\n          feMorph.setAttribute('in', 'SourceGraphic');\n          feMorph.setAttribute('radius', '0');\n          expansor.appendChild(feMorph);\n          defs.appendChild(expansor);\n          path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n        } else {\n          feMorph = null;\n          x = null;\n        } // TODO move this to a factory or to a constructor\n\n\n        this.storedData[i] = {\n          elem: path,\n          x: x,\n          expan: feMorph,\n          lastPath: '',\n          lastOperator: '',\n          filterId: filterID,\n          lastRadius: 0\n        };\n\n        if (properties[i].mode === 'i') {\n          jLen = currentMasks.length;\n          var g = createNS('g');\n\n          for (j = 0; j < jLen; j += 1) {\n            g.appendChild(currentMasks[j]);\n          }\n\n          var mask = createNS('mask');\n          mask.setAttribute('mask-type', 'alpha');\n          mask.setAttribute('id', layerId + '_' + count);\n          mask.appendChild(path);\n          defs.appendChild(mask);\n          g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n          currentMasks.length = 0;\n          currentMasks.push(g);\n        } else {\n          currentMasks.push(path);\n        }\n\n        if (properties[i].inv && !this.solidPath) {\n          this.solidPath = this.createLayerSolidPath();\n        } // TODO move this to a factory or to a constructor\n\n\n        this.viewData[i] = {\n          elem: path,\n          lastPath: '',\n          op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n          prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n          invRect: rect\n        };\n\n        if (!this.viewData[i].prop.k) {\n          this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n        }\n      }\n    }\n\n    this.maskElement = createNS(maskType);\n    len = currentMasks.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.maskElement.appendChild(currentMasks[i]);\n    }\n\n    if (count > 0) {\n      this.maskElement.setAttribute('id', layerId);\n      this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n      defs.appendChild(this.maskElement);\n    }\n\n    if (this.viewData.length) {\n      this.element.addRenderableComponent(this);\n    }\n  }\n\n  MaskElement.prototype.getMaskProperty = function (pos) {\n    return this.viewData[pos].prop;\n  };\n\n  MaskElement.prototype.renderFrame = function (isFirstFrame) {\n    var finalMat = this.element.finalTransform.mat;\n    var i;\n    var len = this.masksProperties.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.viewData[i].prop._mdf || isFirstFrame) {\n        this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n      }\n\n      if (this.viewData[i].op._mdf || isFirstFrame) {\n        this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n      }\n\n      if (this.masksProperties[i].mode !== 'n') {\n        if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n          this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n        }\n\n        if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n          var feMorph = this.storedData[i].expan;\n\n          if (this.storedData[i].x.v < 0) {\n            if (this.storedData[i].lastOperator !== 'erode') {\n              this.storedData[i].lastOperator = 'erode';\n              this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n            }\n\n            feMorph.setAttribute('radius', -this.storedData[i].x.v);\n          } else {\n            if (this.storedData[i].lastOperator !== 'dilate') {\n              this.storedData[i].lastOperator = 'dilate';\n              this.storedData[i].elem.setAttribute('filter', null);\n            }\n\n            this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n          }\n        }\n      }\n    }\n  };\n\n  MaskElement.prototype.getMaskelement = function () {\n    return this.maskElement;\n  };\n\n  MaskElement.prototype.createLayerSolidPath = function () {\n    var path = 'M0,0 ';\n    path += ' h' + this.globalData.compSize.w;\n    path += ' v' + this.globalData.compSize.h;\n    path += ' h-' + this.globalData.compSize.w;\n    path += ' v-' + this.globalData.compSize.h + ' ';\n    return path;\n  };\n\n  MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n    var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n    var i;\n    var len;\n    len = pathNodes._length;\n\n    for (i = 1; i < len; i += 1) {\n      // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n      pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n    } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n    if (pathNodes.c && len > 1) {\n      pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n    } // pathNodes.__renderedString = pathString;\n\n\n    if (viewData.lastPath !== pathString) {\n      var pathShapeValue = '';\n\n      if (viewData.elem) {\n        if (pathNodes.c) {\n          pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n        }\n\n        viewData.elem.setAttribute('d', pathShapeValue);\n      }\n\n      viewData.lastPath = pathString;\n    }\n  };\n\n  MaskElement.prototype.destroy = function () {\n    this.element = null;\n    this.globalData = null;\n    this.maskElement = null;\n    this.data = null;\n    this.masksProperties = null;\n  };\n\n  var filtersFactory = function () {\n    var ob = {};\n    ob.createFilter = createFilter;\n    ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n    function createFilter(filId, skipCoordinates) {\n      var fil = createNS('filter');\n      fil.setAttribute('id', filId);\n\n      if (skipCoordinates !== true) {\n        fil.setAttribute('filterUnits', 'objectBoundingBox');\n        fil.setAttribute('x', '0%');\n        fil.setAttribute('y', '0%');\n        fil.setAttribute('width', '100%');\n        fil.setAttribute('height', '100%');\n      }\n\n      return fil;\n    }\n\n    function createAlphaToLuminanceFilter() {\n      var feColorMatrix = createNS('feColorMatrix');\n      feColorMatrix.setAttribute('type', 'matrix');\n      feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n      feColorMatrix.setAttribute('values', '0 0 0 1 0  0 0 0 1 0  0 0 0 1 0  0 0 0 1 1');\n      return feColorMatrix;\n    }\n\n    return ob;\n  }();\n\n  var featureSupport = function () {\n    var ob = {\n      maskType: true,\n      svgLumaHidden: true,\n      offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n    };\n\n    if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n      ob.maskType = false;\n    }\n\n    if (/firefox/i.test(navigator.userAgent)) {\n      ob.svgLumaHidden = false;\n    }\n\n    return ob;\n  }();\n\n  var registeredEffects$1 = {};\n  var idPrefix = 'filter_result_';\n\n  function SVGEffects(elem) {\n    var i;\n    var source = 'SourceGraphic';\n    var len = elem.data.ef ? elem.data.ef.length : 0;\n    var filId = createElementID();\n    var fil = filtersFactory.createFilter(filId, true);\n    var count = 0;\n    this.filters = [];\n    var filterManager;\n\n    for (i = 0; i < len; i += 1) {\n      filterManager = null;\n      var type = elem.data.ef[i].ty;\n\n      if (registeredEffects$1[type]) {\n        var Effect = registeredEffects$1[type].effect;\n        filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n        source = idPrefix + count;\n\n        if (registeredEffects$1[type].countsAsEffect) {\n          count += 1;\n        }\n      }\n\n      if (filterManager) {\n        this.filters.push(filterManager);\n      }\n    }\n\n    if (count) {\n      elem.globalData.defs.appendChild(fil);\n      elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n    }\n\n    if (this.filters.length) {\n      elem.addRenderableComponent(this);\n    }\n  }\n\n  SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n    var i;\n    var len = this.filters.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.filters[i].renderFrame(_isFirstFrame);\n    }\n  };\n\n  SVGEffects.prototype.getEffects = function (type) {\n    var i;\n    var len = this.filters.length;\n    var effects = [];\n\n    for (i = 0; i < len; i += 1) {\n      if (this.filters[i].type === type) {\n        effects.push(this.filters[i]);\n      }\n    }\n\n    return effects;\n  };\n\n  function registerEffect$1(id, effect, countsAsEffect) {\n    registeredEffects$1[id] = {\n      effect: effect,\n      countsAsEffect: countsAsEffect\n    };\n  }\n\n  function SVGBaseElement() {}\n\n  SVGBaseElement.prototype = {\n    initRendererElement: function initRendererElement() {\n      this.layerElement = createNS('g');\n    },\n    createContainerElements: function createContainerElements() {\n      this.matteElement = createNS('g');\n      this.transformedElement = this.layerElement;\n      this.maskedElement = this.layerElement;\n      this._sizeChanged = false;\n      var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n      if (this.data.td) {\n        this.matteMasks = {};\n        var gg = createNS('g');\n        gg.setAttribute('id', this.layerId);\n        gg.appendChild(this.layerElement);\n        layerElementParent = gg;\n        this.globalData.defs.appendChild(gg);\n      } else if (this.data.tt) {\n        this.matteElement.appendChild(this.layerElement);\n        layerElementParent = this.matteElement;\n        this.baseElement = this.matteElement;\n      } else {\n        this.baseElement = this.layerElement;\n      }\n\n      if (this.data.ln) {\n        this.layerElement.setAttribute('id', this.data.ln);\n      }\n\n      if (this.data.cl) {\n        this.layerElement.setAttribute('class', this.data.cl);\n      } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n      if (this.data.ty === 0 && !this.data.hd) {\n        var cp = createNS('clipPath');\n        var pt = createNS('path');\n        pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n        var clipId = createElementID();\n        cp.setAttribute('id', clipId);\n        cp.appendChild(pt);\n        this.globalData.defs.appendChild(cp);\n\n        if (this.checkMasks()) {\n          var cpGroup = createNS('g');\n          cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n          cpGroup.appendChild(this.layerElement);\n          this.transformedElement = cpGroup;\n\n          if (layerElementParent) {\n            layerElementParent.appendChild(this.transformedElement);\n          } else {\n            this.baseElement = this.transformedElement;\n          }\n        } else {\n          this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n        }\n      }\n\n      if (this.data.bm !== 0) {\n        this.setBlendMode();\n      }\n    },\n    renderElement: function renderElement() {\n      if (this.finalTransform._localMatMdf) {\n        this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n      }\n\n      if (this.finalTransform._opMdf) {\n        this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n      }\n    },\n    destroyBaseElement: function destroyBaseElement() {\n      this.layerElement = null;\n      this.matteElement = null;\n      this.maskManager.destroy();\n    },\n    getBaseElement: function getBaseElement() {\n      if (this.data.hd) {\n        return null;\n      }\n\n      return this.baseElement;\n    },\n    createRenderableComponents: function createRenderableComponents() {\n      this.maskManager = new MaskElement(this.data, this, this.globalData);\n      this.renderableEffectsManager = new SVGEffects(this);\n      this.searchEffectTransforms();\n    },\n    getMatte: function getMatte(matteType) {\n      // This should not be a common case. But for backward compatibility, we'll create the matte object.\n      // It solves animations that have two consecutive layers marked as matte masks.\n      // Which is an undefined behavior in AE.\n      if (!this.matteMasks) {\n        this.matteMasks = {};\n      }\n\n      if (!this.matteMasks[matteType]) {\n        var id = this.layerId + '_' + matteType;\n        var filId;\n        var fil;\n        var useElement;\n        var gg;\n\n        if (matteType === 1 || matteType === 3) {\n          var masker = createNS('mask');\n          masker.setAttribute('id', id);\n          masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n          useElement = createNS('use');\n          useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n          masker.appendChild(useElement);\n          this.globalData.defs.appendChild(masker);\n\n          if (!featureSupport.maskType && matteType === 1) {\n            masker.setAttribute('mask-type', 'luminance');\n            filId = createElementID();\n            fil = filtersFactory.createFilter(filId);\n            this.globalData.defs.appendChild(fil);\n            fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n            gg = createNS('g');\n            gg.appendChild(useElement);\n            masker.appendChild(gg);\n            gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n          }\n        } else if (matteType === 2) {\n          var maskGroup = createNS('mask');\n          maskGroup.setAttribute('id', id);\n          maskGroup.setAttribute('mask-type', 'alpha');\n          var maskGrouper = createNS('g');\n          maskGroup.appendChild(maskGrouper);\n          filId = createElementID();\n          fil = filtersFactory.createFilter(filId); /// /\n\n          var feCTr = createNS('feComponentTransfer');\n          feCTr.setAttribute('in', 'SourceGraphic');\n          fil.appendChild(feCTr);\n          var feFunc = createNS('feFuncA');\n          feFunc.setAttribute('type', 'table');\n          feFunc.setAttribute('tableValues', '1.0 0.0');\n          feCTr.appendChild(feFunc); /// /\n\n          this.globalData.defs.appendChild(fil);\n          var alphaRect = createNS('rect');\n          alphaRect.setAttribute('width', this.comp.data.w);\n          alphaRect.setAttribute('height', this.comp.data.h);\n          alphaRect.setAttribute('x', '0');\n          alphaRect.setAttribute('y', '0');\n          alphaRect.setAttribute('fill', '#ffffff');\n          alphaRect.setAttribute('opacity', '0');\n          maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n          maskGrouper.appendChild(alphaRect);\n          useElement = createNS('use');\n          useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n          maskGrouper.appendChild(useElement);\n\n          if (!featureSupport.maskType) {\n            maskGroup.setAttribute('mask-type', 'luminance');\n            fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n            gg = createNS('g');\n            maskGrouper.appendChild(alphaRect);\n            gg.appendChild(this.layerElement);\n            maskGrouper.appendChild(gg);\n          }\n\n          this.globalData.defs.appendChild(maskGroup);\n        }\n\n        this.matteMasks[matteType] = id;\n      }\n\n      return this.matteMasks[matteType];\n    },\n    setMatte: function setMatte(id) {\n      if (!this.matteElement) {\n        return;\n      }\n\n      this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n    }\n  };\n\n  /**\r\n   * @file\r\n   * Handles AE's layer parenting property.\r\n   *\r\n   */\n  function HierarchyElement() {}\n\n  HierarchyElement.prototype = {\n    /**\r\n       * @function\r\n       * Initializes hierarchy properties\r\n       *\r\n       */\n    initHierarchy: function initHierarchy() {\n      // element's parent list\n      this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n      this._isParent = false;\n      this.checkParenting();\n    },\n\n    /**\r\n       * @function\r\n       * Sets layer's hierarchy.\r\n       * @param {array} hierarch\r\n       * layer's parent list\r\n       *\r\n       */\n    setHierarchy: function setHierarchy(hierarchy) {\n      this.hierarchy = hierarchy;\n    },\n\n    /**\r\n       * @function\r\n       * Sets layer as parent.\r\n       *\r\n       */\n    setAsParent: function setAsParent() {\n      this._isParent = true;\n    },\n\n    /**\r\n       * @function\r\n       * Searches layer's parenting chain\r\n       *\r\n       */\n    checkParenting: function checkParenting() {\n      if (this.data.parent !== undefined) {\n        this.comp.buildElementParenting(this, this.data.parent, []);\n      }\n    }\n  };\n\n  function RenderableDOMElement() {}\n\n  (function () {\n    var _prototype = {\n      initElement: function initElement(data, globalData, comp) {\n        this.initFrame();\n        this.initBaseData(data, globalData, comp);\n        this.initTransform(data, globalData, comp);\n        this.initHierarchy();\n        this.initRenderable();\n        this.initRendererElement();\n        this.createContainerElements();\n        this.createRenderableComponents();\n        this.createContent();\n        this.hide();\n      },\n      hide: function hide() {\n        // console.log('HIDE', this);\n        if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n          var elem = this.baseElement || this.layerElement;\n          elem.style.display = 'none';\n          this.hidden = true;\n        }\n      },\n      show: function show() {\n        // console.log('SHOW', this);\n        if (this.isInRange && !this.isTransparent) {\n          if (!this.data.hd) {\n            var elem = this.baseElement || this.layerElement;\n            elem.style.display = 'block';\n          }\n\n          this.hidden = false;\n          this._isFirstFrame = true;\n        }\n      },\n      renderFrame: function renderFrame() {\n        // If it is exported as hidden (data.hd === true) no need to render\n        // If it is not visible no need to render\n        if (this.data.hd || this.hidden) {\n          return;\n        }\n\n        this.renderTransform();\n        this.renderRenderable();\n        this.renderLocalTransform();\n        this.renderElement();\n        this.renderInnerContent();\n\n        if (this._isFirstFrame) {\n          this._isFirstFrame = false;\n        }\n      },\n      renderInnerContent: function renderInnerContent() {},\n      prepareFrame: function prepareFrame(num) {\n        this._mdf = false;\n        this.prepareRenderableFrame(num);\n        this.prepareProperties(num, this.isInRange);\n        this.checkTransparency();\n      },\n      destroy: function destroy() {\n        this.innerElem = null;\n        this.destroyBaseElement();\n      }\n    };\n    extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n  })();\n\n  function IImageElement(data, globalData, comp) {\n    this.assetData = globalData.getAssetData(data.refId);\n\n    if (this.assetData && this.assetData.sid) {\n      this.assetData = globalData.slotManager.getProp(this.assetData);\n    }\n\n    this.initElement(data, globalData, comp);\n    this.sourceRect = {\n      top: 0,\n      left: 0,\n      width: this.assetData.w,\n      height: this.assetData.h\n    };\n  }\n\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n  IImageElement.prototype.createContent = function () {\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\n    this.innerElem = createNS('image');\n    this.innerElem.setAttribute('width', this.assetData.w + 'px');\n    this.innerElem.setAttribute('height', this.assetData.h + 'px');\n    this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n    this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n    this.layerElement.appendChild(this.innerElem);\n  };\n\n  IImageElement.prototype.sourceRectAtTime = function () {\n    return this.sourceRect;\n  };\n\n  function ProcessedElement(element, position) {\n    this.elem = element;\n    this.pos = position;\n  }\n\n  function IShapeElement() {}\n\n  IShapeElement.prototype = {\n    addShapeToModifiers: function addShapeToModifiers(data) {\n      var i;\n      var len = this.shapeModifiers.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.shapeModifiers[i].addShape(data);\n      }\n    },\n    isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n      var i = 0;\n      var len = this.shapeModifiers.length;\n\n      while (i < len) {\n        if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n          return true;\n        }\n      }\n\n      return false;\n    },\n    renderModifiers: function renderModifiers() {\n      if (!this.shapeModifiers.length) {\n        return;\n      }\n\n      var i;\n      var len = this.shapes.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.shapes[i].sh.reset();\n      }\n\n      len = this.shapeModifiers.length;\n      var shouldBreakProcess;\n\n      for (i = len - 1; i >= 0; i -= 1) {\n        shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n        // TODO: find a better solution for this\n\n        if (shouldBreakProcess) {\n          break;\n        }\n      }\n    },\n    searchProcessedElement: function searchProcessedElement(elem) {\n      var elements = this.processedElements;\n      var i = 0;\n      var len = elements.length;\n\n      while (i < len) {\n        if (elements[i].elem === elem) {\n          return elements[i].pos;\n        }\n\n        i += 1;\n      }\n\n      return 0;\n    },\n    addProcessedElement: function addProcessedElement(elem, pos) {\n      var elements = this.processedElements;\n      var i = elements.length;\n\n      while (i) {\n        i -= 1;\n\n        if (elements[i].elem === elem) {\n          elements[i].pos = pos;\n          return;\n        }\n      }\n\n      elements.push(new ProcessedElement(elem, pos));\n    },\n    prepareFrame: function prepareFrame(num) {\n      this.prepareRenderableFrame(num);\n      this.prepareProperties(num, this.isInRange);\n    }\n  };\n\n  var lineCapEnum = {\n    1: 'butt',\n    2: 'round',\n    3: 'square'\n  };\n  var lineJoinEnum = {\n    1: 'miter',\n    2: 'round',\n    3: 'bevel'\n  };\n\n  function SVGShapeData(transformers, level, shape) {\n    this.caches = [];\n    this.styles = [];\n    this.transformers = transformers;\n    this.lStr = '';\n    this.sh = shape;\n    this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n    // For now, since shapes add up with other shapes. They have to be calculated every time.\n    // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n    this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n    var i = 0;\n    var len = transformers.length;\n\n    while (i < len) {\n      if (transformers[i].mProps.dynamicProperties.length) {\n        this._isAnimated = true;\n        break;\n      }\n\n      i += 1;\n    }\n  }\n\n  SVGShapeData.prototype.setAsAnimated = function () {\n    this._isAnimated = true;\n  };\n\n  function SVGStyleData(data, level) {\n    this.data = data;\n    this.type = data.ty;\n    this.d = '';\n    this.lvl = level;\n    this._mdf = false;\n    this.closed = data.hd === true;\n    this.pElem = createNS('path');\n    this.msElem = null;\n  }\n\n  SVGStyleData.prototype.reset = function () {\n    this.d = '';\n    this._mdf = false;\n  };\n\n  function DashProperty(elem, data, renderer, container) {\n    this.elem = elem;\n    this.frameId = -1;\n    this.dataProps = createSizedArray(data.length);\n    this.renderer = renderer;\n    this.k = false;\n    this.dashStr = '';\n    this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n    this.dashoffset = createTypedArray('float32', 1);\n    this.initDynamicPropertyContainer(container);\n    var i;\n    var len = data.length || 0;\n    var prop;\n\n    for (i = 0; i < len; i += 1) {\n      prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n      this.k = prop.k || this.k;\n      this.dataProps[i] = {\n        n: data[i].n,\n        p: prop\n      };\n    }\n\n    if (!this.k) {\n      this.getValue(true);\n    }\n\n    this._isAnimated = this.k;\n  }\n\n  DashProperty.prototype.getValue = function (forceRender) {\n    if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n      return;\n    }\n\n    this.frameId = this.elem.globalData.frameId;\n    this.iterateDynamicProperties();\n    this._mdf = this._mdf || forceRender;\n\n    if (this._mdf) {\n      var i = 0;\n      var len = this.dataProps.length;\n\n      if (this.renderer === 'svg') {\n        this.dashStr = '';\n      }\n\n      for (i = 0; i < len; i += 1) {\n        if (this.dataProps[i].n !== 'o') {\n          if (this.renderer === 'svg') {\n            this.dashStr += ' ' + this.dataProps[i].p.v;\n          } else {\n            this.dashArray[i] = this.dataProps[i].p.v;\n          }\n        } else {\n          this.dashoffset[0] = this.dataProps[i].p.v;\n        }\n      }\n    }\n  };\n\n  extendPrototype([DynamicPropertyContainer], DashProperty);\n\n  function SVGStrokeStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n    this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n    this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n    this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n    this.style = styleOb;\n    this._isAnimated = !!this._isAnimated;\n  }\n\n  extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n  function SVGFillStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n    this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n    this.style = styleOb;\n  }\n\n  extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n  function SVGNoStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.style = styleOb;\n  }\n\n  extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n  function GradientProperty(elem, data, container) {\n    this.data = data;\n    this.c = createTypedArray('uint8c', data.p * 4);\n    var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n    this.o = createTypedArray('float32', cLength);\n    this._cmdf = false;\n    this._omdf = false;\n    this._collapsable = this.checkCollapsable();\n    this._hasOpacity = cLength;\n    this.initDynamicPropertyContainer(container);\n    this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n    this.k = this.prop.k;\n    this.getValue(true);\n  }\n\n  GradientProperty.prototype.comparePoints = function (values, points) {\n    var i = 0;\n    var len = this.o.length / 2;\n    var diff;\n\n    while (i < len) {\n      diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n      if (diff > 0.01) {\n        return false;\n      }\n\n      i += 1;\n    }\n\n    return true;\n  };\n\n  GradientProperty.prototype.checkCollapsable = function () {\n    if (this.o.length / 2 !== this.c.length / 4) {\n      return false;\n    }\n\n    if (this.data.k.k[0].s) {\n      var i = 0;\n      var len = this.data.k.k.length;\n\n      while (i < len) {\n        if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n          return false;\n        }\n\n        i += 1;\n      }\n    } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n      return false;\n    }\n\n    return true;\n  };\n\n  GradientProperty.prototype.getValue = function (forceRender) {\n    this.prop.getValue();\n    this._mdf = false;\n    this._cmdf = false;\n    this._omdf = false;\n\n    if (this.prop._mdf || forceRender) {\n      var i;\n      var len = this.data.p * 4;\n      var mult;\n      var val;\n\n      for (i = 0; i < len; i += 1) {\n        mult = i % 4 === 0 ? 100 : 255;\n        val = Math.round(this.prop.v[i] * mult);\n\n        if (this.c[i] !== val) {\n          this.c[i] = val;\n          this._cmdf = !forceRender;\n        }\n      }\n\n      if (this.o.length) {\n        len = this.prop.v.length;\n\n        for (i = this.data.p * 4; i < len; i += 1) {\n          mult = i % 2 === 0 ? 100 : 1;\n          val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n          if (this.o[i - this.data.p * 4] !== val) {\n            this.o[i - this.data.p * 4] = val;\n            this._omdf = !forceRender;\n          }\n        }\n      }\n\n      this._mdf = !forceRender;\n    }\n  };\n\n  extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n  function SVGGradientFillStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.initGradientData(elem, data, styleOb);\n  }\n\n  SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n    this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n    this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n    this.h = PropertyFactory.getProp(elem, data.h || {\n      k: 0\n    }, 0, 0.01, this);\n    this.a = PropertyFactory.getProp(elem, data.a || {\n      k: 0\n    }, 0, degToRads, this);\n    this.g = new GradientProperty(elem, data.g, this);\n    this.style = styleOb;\n    this.stops = [];\n    this.setGradientData(styleOb.pElem, data);\n    this.setGradientOpacity(data, styleOb);\n    this._isAnimated = !!this._isAnimated;\n  };\n\n  SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n    var gradientId = createElementID();\n    var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n    gfill.setAttribute('id', gradientId);\n    gfill.setAttribute('spreadMethod', 'pad');\n    gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n    var stops = [];\n    var stop;\n    var j;\n    var jLen;\n    jLen = data.g.p * 4;\n\n    for (j = 0; j < jLen; j += 4) {\n      stop = createNS('stop');\n      gfill.appendChild(stop);\n      stops.push(stop);\n    }\n\n    pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n    this.gf = gfill;\n    this.cst = stops;\n  };\n\n  SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n    if (this.g._hasOpacity && !this.g._collapsable) {\n      var stop;\n      var j;\n      var jLen;\n      var mask = createNS('mask');\n      var maskElement = createNS('path');\n      mask.appendChild(maskElement);\n      var opacityId = createElementID();\n      var maskId = createElementID();\n      mask.setAttribute('id', maskId);\n      var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n      opFill.setAttribute('id', opacityId);\n      opFill.setAttribute('spreadMethod', 'pad');\n      opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n      jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n      var stops = this.stops;\n\n      for (j = data.g.p * 4; j < jLen; j += 2) {\n        stop = createNS('stop');\n        stop.setAttribute('stop-color', 'rgb(255,255,255)');\n        opFill.appendChild(stop);\n        stops.push(stop);\n      }\n\n      maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n      if (data.ty === 'gs') {\n        maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n        maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n        if (data.lj === 1) {\n          maskElement.setAttribute('stroke-miterlimit', data.ml);\n        }\n      }\n\n      this.of = opFill;\n      this.ms = mask;\n      this.ost = stops;\n      this.maskId = maskId;\n      styleOb.msElem = maskElement;\n    }\n  };\n\n  extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n  function SVGGradientStrokeStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n    this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n    this.initGradientData(elem, data, styleOb);\n    this._isAnimated = !!this._isAnimated;\n  }\n\n  extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n  function ShapeGroupData() {\n    this.it = [];\n    this.prevViewData = [];\n    this.gr = createNS('g');\n  }\n\n  function SVGTransformData(mProps, op, container) {\n    this.transform = {\n      mProps: mProps,\n      op: op,\n      container: container\n    };\n    this.elements = [];\n    this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n  }\n\n  var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n    if (length === 0) {\n      return '';\n    }\n\n    var _o = pathNodes.o;\n    var _i = pathNodes.i;\n    var _v = pathNodes.v;\n    var i;\n    var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n    for (i = 1; i < length; i += 1) {\n      shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n    }\n\n    if (closed && length) {\n      shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n      shapeString += 'z';\n    }\n\n    return shapeString;\n  };\n\n  var SVGElementsRenderer = function () {\n    var _identityMatrix = new Matrix();\n\n    var _matrixHelper = new Matrix();\n\n    var ob = {\n      createRenderFunction: createRenderFunction\n    };\n\n    function createRenderFunction(data) {\n      switch (data.ty) {\n        case 'fl':\n          return renderFill;\n\n        case 'gf':\n          return renderGradient;\n\n        case 'gs':\n          return renderGradientStroke;\n\n        case 'st':\n          return renderStroke;\n\n        case 'sh':\n        case 'el':\n        case 'rc':\n        case 'sr':\n          return renderPath;\n\n        case 'tr':\n          return renderContentTransform;\n\n        case 'no':\n          return renderNoop;\n\n        default:\n          return null;\n      }\n    }\n\n    function renderContentTransform(styleData, itemData, isFirstFrame) {\n      if (isFirstFrame || itemData.transform.op._mdf) {\n        itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n      }\n\n      if (isFirstFrame || itemData.transform.mProps._mdf) {\n        itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n      }\n    }\n\n    function renderNoop() {}\n\n    function renderPath(styleData, itemData, isFirstFrame) {\n      var j;\n      var jLen;\n      var pathStringTransformed;\n      var redraw;\n      var pathNodes;\n      var l;\n      var lLen = itemData.styles.length;\n      var lvl = itemData.lvl;\n      var paths;\n      var mat;\n      var iterations;\n      var k;\n\n      for (l = 0; l < lLen; l += 1) {\n        redraw = itemData.sh._mdf || isFirstFrame;\n\n        if (itemData.styles[l].lvl < lvl) {\n          mat = _matrixHelper.reset();\n          iterations = lvl - itemData.styles[l].lvl;\n          k = itemData.transformers.length - 1;\n\n          while (!redraw && iterations > 0) {\n            redraw = itemData.transformers[k].mProps._mdf || redraw;\n            iterations -= 1;\n            k -= 1;\n          }\n\n          if (redraw) {\n            iterations = lvl - itemData.styles[l].lvl;\n            k = itemData.transformers.length - 1;\n\n            while (iterations > 0) {\n              mat.multiply(itemData.transformers[k].mProps.v);\n              iterations -= 1;\n              k -= 1;\n            }\n          }\n        } else {\n          mat = _identityMatrix;\n        }\n\n        paths = itemData.sh.paths;\n        jLen = paths._length;\n\n        if (redraw) {\n          pathStringTransformed = '';\n\n          for (j = 0; j < jLen; j += 1) {\n            pathNodes = paths.shapes[j];\n\n            if (pathNodes && pathNodes._length) {\n              pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n            }\n          }\n\n          itemData.caches[l] = pathStringTransformed;\n        } else {\n          pathStringTransformed = itemData.caches[l];\n        }\n\n        itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n        itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n      }\n    }\n\n    function renderFill(styleData, itemData, isFirstFrame) {\n      var styleElem = itemData.style;\n\n      if (itemData.c._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n      }\n\n      if (itemData.o._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n      }\n    }\n\n    function renderGradientStroke(styleData, itemData, isFirstFrame) {\n      renderGradient(styleData, itemData, isFirstFrame);\n      renderStroke(styleData, itemData, isFirstFrame);\n    }\n\n    function renderGradient(styleData, itemData, isFirstFrame) {\n      var gfill = itemData.gf;\n      var hasOpacity = itemData.g._hasOpacity;\n      var pt1 = itemData.s.v;\n      var pt2 = itemData.e.v;\n\n      if (itemData.o._mdf || isFirstFrame) {\n        var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n        itemData.style.pElem.setAttribute(attr, itemData.o.v);\n      }\n\n      if (itemData.s._mdf || isFirstFrame) {\n        var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n        var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n        gfill.setAttribute(attr1, pt1[0]);\n        gfill.setAttribute(attr2, pt1[1]);\n\n        if (hasOpacity && !itemData.g._collapsable) {\n          itemData.of.setAttribute(attr1, pt1[0]);\n          itemData.of.setAttribute(attr2, pt1[1]);\n        }\n      }\n\n      var stops;\n      var i;\n      var len;\n      var stop;\n\n      if (itemData.g._cmdf || isFirstFrame) {\n        stops = itemData.cst;\n        var cValues = itemData.g.c;\n        len = stops.length;\n\n        for (i = 0; i < len; i += 1) {\n          stop = stops[i];\n          stop.setAttribute('offset', cValues[i * 4] + '%');\n          stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n        }\n      }\n\n      if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n        var oValues = itemData.g.o;\n\n        if (itemData.g._collapsable) {\n          stops = itemData.cst;\n        } else {\n          stops = itemData.ost;\n        }\n\n        len = stops.length;\n\n        for (i = 0; i < len; i += 1) {\n          stop = stops[i];\n\n          if (!itemData.g._collapsable) {\n            stop.setAttribute('offset', oValues[i * 2] + '%');\n          }\n\n          stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n        }\n      }\n\n      if (styleData.t === 1) {\n        if (itemData.e._mdf || isFirstFrame) {\n          gfill.setAttribute('x2', pt2[0]);\n          gfill.setAttribute('y2', pt2[1]);\n\n          if (hasOpacity && !itemData.g._collapsable) {\n            itemData.of.setAttribute('x2', pt2[0]);\n            itemData.of.setAttribute('y2', pt2[1]);\n          }\n        }\n      } else {\n        var rad;\n\n        if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n          rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n          gfill.setAttribute('r', rad);\n\n          if (hasOpacity && !itemData.g._collapsable) {\n            itemData.of.setAttribute('r', rad);\n          }\n        }\n\n        if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n          if (!rad) {\n            rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n          }\n\n          var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n          var percent = itemData.h.v;\n\n          if (percent >= 1) {\n            percent = 0.99;\n          } else if (percent <= -1) {\n            percent = -0.99;\n          }\n\n          var dist = rad * percent;\n          var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n          var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n          gfill.setAttribute('fx', x);\n          gfill.setAttribute('fy', y);\n\n          if (hasOpacity && !itemData.g._collapsable) {\n            itemData.of.setAttribute('fx', x);\n            itemData.of.setAttribute('fy', y);\n          }\n        } // gfill.setAttribute('fy','200');\n\n      }\n    }\n\n    function renderStroke(styleData, itemData, isFirstFrame) {\n      var styleElem = itemData.style;\n      var d = itemData.d;\n\n      if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n        styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n        styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n      }\n\n      if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n        styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n      }\n\n      if (itemData.o._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n      }\n\n      if (itemData.w._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n        if (styleElem.msElem) {\n          styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n        }\n      }\n    }\n\n    return ob;\n  }();\n\n  function SVGShapeElement(data, globalData, comp) {\n    // List of drawable elements\n    this.shapes = []; // Full shape data\n\n    this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n    this.stylesList = []; // List of modifiers that will be applied to shapes\n\n    this.shapeModifiers = []; // List of items in shape tree\n\n    this.itemsData = []; // List of items in previous shape tree\n\n    this.processedElements = []; // List of animated components\n\n    this.animatedContents = [];\n    this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n    // List of elements that have been created\n\n    this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n  }\n\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n  SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n  SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n  SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n  SVGShapeElement.prototype.createContent = function () {\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n    this.filterUniqueShapes();\n  };\n  /*\r\n  This method searches for multiple shapes that affect a single element and one of them is animated\r\n  */\n\n\n  SVGShapeElement.prototype.filterUniqueShapes = function () {\n    var i;\n    var len = this.shapes.length;\n    var shape;\n    var j;\n    var jLen = this.stylesList.length;\n    var style;\n    var tempShapes = [];\n    var areAnimated = false;\n\n    for (j = 0; j < jLen; j += 1) {\n      style = this.stylesList[j];\n      areAnimated = false;\n      tempShapes.length = 0;\n\n      for (i = 0; i < len; i += 1) {\n        shape = this.shapes[i];\n\n        if (shape.styles.indexOf(style) !== -1) {\n          tempShapes.push(shape);\n          areAnimated = shape._isAnimated || areAnimated;\n        }\n      }\n\n      if (tempShapes.length > 1 && areAnimated) {\n        this.setShapesAsAnimated(tempShapes);\n      }\n    }\n  };\n\n  SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n    var i;\n    var len = shapes.length;\n\n    for (i = 0; i < len; i += 1) {\n      shapes[i].setAsAnimated();\n    }\n  };\n\n  SVGShapeElement.prototype.createStyleElement = function (data, level) {\n    // TODO: prevent drawing of hidden styles\n    var elementData;\n    var styleOb = new SVGStyleData(data, level);\n    var pathElement = styleOb.pElem;\n\n    if (data.ty === 'st') {\n      elementData = new SVGStrokeStyleData(this, data, styleOb);\n    } else if (data.ty === 'fl') {\n      elementData = new SVGFillStyleData(this, data, styleOb);\n    } else if (data.ty === 'gf' || data.ty === 'gs') {\n      var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n      elementData = new GradientConstructor(this, data, styleOb);\n      this.globalData.defs.appendChild(elementData.gf);\n\n      if (elementData.maskId) {\n        this.globalData.defs.appendChild(elementData.ms);\n        this.globalData.defs.appendChild(elementData.of);\n        pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n      }\n    } else if (data.ty === 'no') {\n      elementData = new SVGNoStyleData(this, data, styleOb);\n    }\n\n    if (data.ty === 'st' || data.ty === 'gs') {\n      pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n      pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n      pathElement.setAttribute('fill-opacity', '0');\n\n      if (data.lj === 1) {\n        pathElement.setAttribute('stroke-miterlimit', data.ml);\n      }\n    }\n\n    if (data.r === 2) {\n      pathElement.setAttribute('fill-rule', 'evenodd');\n    }\n\n    if (data.ln) {\n      pathElement.setAttribute('id', data.ln);\n    }\n\n    if (data.cl) {\n      pathElement.setAttribute('class', data.cl);\n    }\n\n    if (data.bm) {\n      pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n    }\n\n    this.stylesList.push(styleOb);\n    this.addToAnimatedContents(data, elementData);\n    return elementData;\n  };\n\n  SVGShapeElement.prototype.createGroupElement = function (data) {\n    var elementData = new ShapeGroupData();\n\n    if (data.ln) {\n      elementData.gr.setAttribute('id', data.ln);\n    }\n\n    if (data.cl) {\n      elementData.gr.setAttribute('class', data.cl);\n    }\n\n    if (data.bm) {\n      elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n    }\n\n    return elementData;\n  };\n\n  SVGShapeElement.prototype.createTransformElement = function (data, container) {\n    var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n    var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n    this.addToAnimatedContents(data, elementData);\n    return elementData;\n  };\n\n  SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n    var ty = 4;\n\n    if (data.ty === 'rc') {\n      ty = 5;\n    } else if (data.ty === 'el') {\n      ty = 6;\n    } else if (data.ty === 'sr') {\n      ty = 7;\n    }\n\n    var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n    var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n    this.shapes.push(elementData);\n    this.addShapeToModifiers(elementData);\n    this.addToAnimatedContents(data, elementData);\n    return elementData;\n  };\n\n  SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n    var i = 0;\n    var len = this.animatedContents.length;\n\n    while (i < len) {\n      if (this.animatedContents[i].element === element) {\n        return;\n      }\n\n      i += 1;\n    }\n\n    this.animatedContents.push({\n      fn: SVGElementsRenderer.createRenderFunction(data),\n      element: element,\n      data: data\n    });\n  };\n\n  SVGShapeElement.prototype.setElementStyles = function (elementData) {\n    var arr = elementData.styles;\n    var j;\n    var jLen = this.stylesList.length;\n\n    for (j = 0; j < jLen; j += 1) {\n      if (!this.stylesList[j].closed) {\n        arr.push(this.stylesList[j]);\n      }\n    }\n  };\n\n  SVGShapeElement.prototype.reloadShapes = function () {\n    this._isFirstFrame = true;\n    var i;\n    var len = this.itemsData.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.prevViewData[i] = this.itemsData[i];\n    }\n\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n    this.filterUniqueShapes();\n    len = this.dynamicProperties.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.dynamicProperties[i].getValue();\n    }\n\n    this.renderModifiers();\n  };\n\n  SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n    var ownTransformers = [].concat(transformers);\n    var i;\n    var len = arr.length - 1;\n    var j;\n    var jLen;\n    var ownStyles = [];\n    var ownModifiers = [];\n    var currentTransform;\n    var modifier;\n    var processedPos;\n\n    for (i = len; i >= 0; i -= 1) {\n      processedPos = this.searchProcessedElement(arr[i]);\n\n      if (!processedPos) {\n        arr[i]._render = render;\n      } else {\n        itemsData[i] = prevViewData[processedPos - 1];\n      }\n\n      if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n        if (!processedPos) {\n          itemsData[i] = this.createStyleElement(arr[i], level);\n        } else {\n          itemsData[i].style.closed = false;\n        }\n\n        if (arr[i]._render) {\n          if (itemsData[i].style.pElem.parentNode !== container) {\n            container.appendChild(itemsData[i].style.pElem);\n          }\n        }\n\n        ownStyles.push(itemsData[i].style);\n      } else if (arr[i].ty === 'gr') {\n        if (!processedPos) {\n          itemsData[i] = this.createGroupElement(arr[i]);\n        } else {\n          jLen = itemsData[i].it.length;\n\n          for (j = 0; j < jLen; j += 1) {\n            itemsData[i].prevViewData[j] = itemsData[i].it[j];\n          }\n        }\n\n        this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n        if (arr[i]._render) {\n          if (itemsData[i].gr.parentNode !== container) {\n            container.appendChild(itemsData[i].gr);\n          }\n        }\n      } else if (arr[i].ty === 'tr') {\n        if (!processedPos) {\n          itemsData[i] = this.createTransformElement(arr[i], container);\n        }\n\n        currentTransform = itemsData[i].transform;\n        ownTransformers.push(currentTransform);\n      } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n        if (!processedPos) {\n          itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n        }\n\n        this.setElementStyles(itemsData[i]);\n      } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          modifier.init(this, arr[i]);\n          itemsData[i] = modifier;\n          this.shapeModifiers.push(modifier);\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = false;\n        }\n\n        ownModifiers.push(modifier);\n      } else if (arr[i].ty === 'rp') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          itemsData[i] = modifier;\n          modifier.init(this, arr, i, itemsData);\n          this.shapeModifiers.push(modifier);\n          render = false;\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = true;\n        }\n\n        ownModifiers.push(modifier);\n      }\n\n      this.addProcessedElement(arr[i], i + 1);\n    }\n\n    len = ownStyles.length;\n\n    for (i = 0; i < len; i += 1) {\n      ownStyles[i].closed = true;\n    }\n\n    len = ownModifiers.length;\n\n    for (i = 0; i < len; i += 1) {\n      ownModifiers[i].closed = true;\n    }\n  };\n\n  SVGShapeElement.prototype.renderInnerContent = function () {\n    this.renderModifiers();\n    var i;\n    var len = this.stylesList.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.stylesList[i].reset();\n    }\n\n    this.renderShape();\n\n    for (i = 0; i < len; i += 1) {\n      if (this.stylesList[i]._mdf || this._isFirstFrame) {\n        if (this.stylesList[i].msElem) {\n          this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n          this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n        }\n\n        this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n      }\n    }\n  };\n\n  SVGShapeElement.prototype.renderShape = function () {\n    var i;\n    var len = this.animatedContents.length;\n    var animatedContent;\n\n    for (i = 0; i < len; i += 1) {\n      animatedContent = this.animatedContents[i];\n\n      if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n        animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n      }\n    }\n  };\n\n  SVGShapeElement.prototype.destroy = function () {\n    this.destroyBaseElement();\n    this.shapesData = null;\n    this.itemsData = null;\n  };\n\n  function LetterProps(o, sw, sc, fc, m, p) {\n    this.o = o;\n    this.sw = sw;\n    this.sc = sc;\n    this.fc = fc;\n    this.m = m;\n    this.p = p;\n    this._mdf = {\n      o: true,\n      sw: !!sw,\n      sc: !!sc,\n      fc: !!fc,\n      m: true,\n      p: true\n    };\n  }\n\n  LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n    this._mdf.o = false;\n    this._mdf.sw = false;\n    this._mdf.sc = false;\n    this._mdf.fc = false;\n    this._mdf.m = false;\n    this._mdf.p = false;\n    var updated = false;\n\n    if (this.o !== o) {\n      this.o = o;\n      this._mdf.o = true;\n      updated = true;\n    }\n\n    if (this.sw !== sw) {\n      this.sw = sw;\n      this._mdf.sw = true;\n      updated = true;\n    }\n\n    if (this.sc !== sc) {\n      this.sc = sc;\n      this._mdf.sc = true;\n      updated = true;\n    }\n\n    if (this.fc !== fc) {\n      this.fc = fc;\n      this._mdf.fc = true;\n      updated = true;\n    }\n\n    if (this.m !== m) {\n      this.m = m;\n      this._mdf.m = true;\n      updated = true;\n    }\n\n    if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n      this.p = p;\n      this._mdf.p = true;\n      updated = true;\n    }\n\n    return updated;\n  };\n\n  function TextProperty(elem, data) {\n    this._frameId = initialDefaultFrame;\n    this.pv = '';\n    this.v = '';\n    this.kf = false;\n    this._isFirstFrame = true;\n    this._mdf = false;\n\n    if (data.d && data.d.sid) {\n      data.d = elem.globalData.slotManager.getProp(data.d);\n    }\n\n    this.data = data;\n    this.elem = elem;\n    this.comp = this.elem.comp;\n    this.keysIndex = 0;\n    this.canResize = false;\n    this.minimumFontSize = 1;\n    this.effectsSequence = [];\n    this.currentData = {\n      ascent: 0,\n      boxWidth: this.defaultBoxWidth,\n      f: '',\n      fStyle: '',\n      fWeight: '',\n      fc: '',\n      j: '',\n      justifyOffset: '',\n      l: [],\n      lh: 0,\n      lineWidths: [],\n      ls: '',\n      of: '',\n      s: '',\n      sc: '',\n      sw: 0,\n      t: 0,\n      tr: 0,\n      sz: 0,\n      ps: null,\n      fillColorAnim: false,\n      strokeColorAnim: false,\n      strokeWidthAnim: false,\n      yOffset: 0,\n      finalSize: 0,\n      finalText: [],\n      finalLineHeight: 0,\n      __complete: false\n    };\n    this.copyData(this.currentData, this.data.d.k[0].s);\n\n    if (!this.searchProperty()) {\n      this.completeTextData(this.currentData);\n    }\n  }\n\n  TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n  TextProperty.prototype.copyData = function (obj, data) {\n    for (var s in data) {\n      if (Object.prototype.hasOwnProperty.call(data, s)) {\n        obj[s] = data[s];\n      }\n    }\n\n    return obj;\n  };\n\n  TextProperty.prototype.setCurrentData = function (data) {\n    if (!data.__complete) {\n      this.completeTextData(data);\n    }\n\n    this.currentData = data;\n    this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n    this._mdf = true;\n  };\n\n  TextProperty.prototype.searchProperty = function () {\n    return this.searchKeyframes();\n  };\n\n  TextProperty.prototype.searchKeyframes = function () {\n    this.kf = this.data.d.k.length > 1;\n\n    if (this.kf) {\n      this.addEffect(this.getKeyframeValue.bind(this));\n    }\n\n    return this.kf;\n  };\n\n  TextProperty.prototype.addEffect = function (effectFunction) {\n    this.effectsSequence.push(effectFunction);\n    this.elem.addDynamicProperty(this);\n  };\n\n  TextProperty.prototype.getValue = function (_finalValue) {\n    if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n      return;\n    }\n\n    this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n    var currentValue = this.currentData;\n    var currentIndex = this.keysIndex;\n\n    if (this.lock) {\n      this.setCurrentData(this.currentData);\n      return;\n    }\n\n    this.lock = true;\n    this._mdf = false;\n    var i;\n    var len = this.effectsSequence.length;\n    var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n    for (i = 0; i < len; i += 1) {\n      // Checking if index changed to prevent creating a new object every time the expression updates.\n      if (currentIndex !== this.keysIndex) {\n        finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n      } else {\n        finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n      }\n    }\n\n    if (currentValue !== finalValue) {\n      this.setCurrentData(finalValue);\n    }\n\n    this.v = this.currentData;\n    this.pv = this.v;\n    this.lock = false;\n    this.frameId = this.elem.globalData.frameId;\n  };\n\n  TextProperty.prototype.getKeyframeValue = function () {\n    var textKeys = this.data.d.k;\n    var frameNum = this.elem.comp.renderedFrame;\n    var i = 0;\n    var len = textKeys.length;\n\n    while (i <= len - 1) {\n      if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n        break;\n      }\n\n      i += 1;\n    }\n\n    if (this.keysIndex !== i) {\n      this.keysIndex = i;\n    }\n\n    return this.data.d.k[this.keysIndex].s;\n  };\n\n  TextProperty.prototype.buildFinalText = function (text) {\n    var charactersArray = [];\n    var i = 0;\n    var len = text.length;\n    var charCode;\n    var secondCharCode;\n    var shouldCombine = false;\n    var shouldCombineNext = false;\n    var currentChars = '';\n\n    while (i < len) {\n      shouldCombine = shouldCombineNext;\n      shouldCombineNext = false;\n      charCode = text.charCodeAt(i);\n      currentChars = text.charAt(i);\n\n      if (FontManager.isCombinedCharacter(charCode)) {\n        shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n      } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n        if (FontManager.isRegionalFlag(text, i)) {\n          currentChars = text.substr(i, 14);\n        } else {\n          secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n          if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n            if (FontManager.isModifier(charCode, secondCharCode)) {\n              currentChars = text.substr(i, 2);\n              shouldCombine = true;\n            } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n              currentChars = text.substr(i, 4);\n            } else {\n              currentChars = text.substr(i, 2);\n            }\n          }\n        }\n      } else if (charCode > 0xDBFF) {\n        secondCharCode = text.charCodeAt(i + 1);\n\n        if (FontManager.isVariationSelector(charCode)) {\n          shouldCombine = true;\n        }\n      } else if (FontManager.isZeroWidthJoiner(charCode)) {\n        shouldCombine = true;\n        shouldCombineNext = true;\n      }\n\n      if (shouldCombine) {\n        charactersArray[charactersArray.length - 1] += currentChars;\n        shouldCombine = false;\n      } else {\n        charactersArray.push(currentChars);\n      }\n\n      i += currentChars.length;\n    }\n\n    return charactersArray;\n  };\n\n  TextProperty.prototype.completeTextData = function (documentData) {\n    documentData.__complete = true;\n    var fontManager = this.elem.globalData.fontManager;\n    var data = this.data;\n    var letters = [];\n    var i;\n    var len;\n    var newLineFlag;\n    var index = 0;\n    var val;\n    var anchorGrouping = data.m.g;\n    var currentSize = 0;\n    var currentPos = 0;\n    var currentLine = 0;\n    var lineWidths = [];\n    var lineWidth = 0;\n    var maxLineWidth = 0;\n    var j;\n    var jLen;\n    var fontData = fontManager.getFontByName(documentData.f);\n    var charData;\n    var cLength = 0;\n    var fontProps = getFontProperties(fontData);\n    documentData.fWeight = fontProps.weight;\n    documentData.fStyle = fontProps.style;\n    documentData.finalSize = documentData.s;\n    documentData.finalText = this.buildFinalText(documentData.t);\n    len = documentData.finalText.length;\n    documentData.finalLineHeight = documentData.lh;\n    var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n    var charCode;\n\n    if (documentData.sz) {\n      var flag = true;\n      var boxWidth = documentData.sz[0];\n      var boxHeight = documentData.sz[1];\n      var currentHeight;\n      var finalText;\n\n      while (flag) {\n        finalText = this.buildFinalText(documentData.t);\n        currentHeight = 0;\n        lineWidth = 0;\n        len = finalText.length;\n        trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n        var lastSpaceIndex = -1;\n\n        for (i = 0; i < len; i += 1) {\n          charCode = finalText[i].charCodeAt(0);\n          newLineFlag = false;\n\n          if (finalText[i] === ' ') {\n            lastSpaceIndex = i;\n          } else if (charCode === 13 || charCode === 3) {\n            lineWidth = 0;\n            newLineFlag = true;\n            currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n          }\n\n          if (fontManager.chars) {\n            charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n            cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n          } else {\n            // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n            cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n          }\n\n          if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n            if (lastSpaceIndex === -1) {\n              len += 1;\n            } else {\n              i = lastSpaceIndex;\n            }\n\n            currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n            finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n            lastSpaceIndex = -1;\n            lineWidth = 0;\n          } else {\n            lineWidth += cLength;\n            lineWidth += trackingOffset;\n          }\n        }\n\n        currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n        if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n          documentData.finalSize -= 1;\n          documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n        } else {\n          documentData.finalText = finalText;\n          len = documentData.finalText.length;\n          flag = false;\n        }\n      }\n    }\n\n    lineWidth = -trackingOffset;\n    cLength = 0;\n    var uncollapsedSpaces = 0;\n    var currentChar;\n\n    for (i = 0; i < len; i += 1) {\n      newLineFlag = false;\n      currentChar = documentData.finalText[i];\n      charCode = currentChar.charCodeAt(0);\n\n      if (charCode === 13 || charCode === 3) {\n        uncollapsedSpaces = 0;\n        lineWidths.push(lineWidth);\n        maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n        lineWidth = -2 * trackingOffset;\n        val = '';\n        newLineFlag = true;\n        currentLine += 1;\n      } else {\n        val = currentChar;\n      }\n\n      if (fontManager.chars) {\n        charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n        cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n      } else {\n        // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n        // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n        cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n      } //\n\n\n      if (currentChar === ' ') {\n        uncollapsedSpaces += cLength + trackingOffset;\n      } else {\n        lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n        uncollapsedSpaces = 0;\n      }\n\n      letters.push({\n        l: cLength,\n        an: cLength,\n        add: currentSize,\n        n: newLineFlag,\n        anIndexes: [],\n        val: val,\n        line: currentLine,\n        animatorJustifyOffset: 0\n      });\n\n      if (anchorGrouping == 2) {\n        // eslint-disable-line eqeqeq\n        currentSize += cLength;\n\n        if (val === '' || val === ' ' || i === len - 1) {\n          if (val === '' || val === ' ') {\n            currentSize -= cLength;\n          }\n\n          while (currentPos <= i) {\n            letters[currentPos].an = currentSize;\n            letters[currentPos].ind = index;\n            letters[currentPos].extra = cLength;\n            currentPos += 1;\n          }\n\n          index += 1;\n          currentSize = 0;\n        }\n      } else if (anchorGrouping == 3) {\n        // eslint-disable-line eqeqeq\n        currentSize += cLength;\n\n        if (val === '' || i === len - 1) {\n          if (val === '') {\n            currentSize -= cLength;\n          }\n\n          while (currentPos <= i) {\n            letters[currentPos].an = currentSize;\n            letters[currentPos].ind = index;\n            letters[currentPos].extra = cLength;\n            currentPos += 1;\n          }\n\n          currentSize = 0;\n          index += 1;\n        }\n      } else {\n        letters[index].ind = index;\n        letters[index].extra = 0;\n        index += 1;\n      }\n    }\n\n    documentData.l = letters;\n    maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n    lineWidths.push(lineWidth);\n\n    if (documentData.sz) {\n      documentData.boxWidth = documentData.sz[0];\n      documentData.justifyOffset = 0;\n    } else {\n      documentData.boxWidth = maxLineWidth;\n\n      switch (documentData.j) {\n        case 1:\n          documentData.justifyOffset = -documentData.boxWidth;\n          break;\n\n        case 2:\n          documentData.justifyOffset = -documentData.boxWidth / 2;\n          break;\n\n        default:\n          documentData.justifyOffset = 0;\n      }\n    }\n\n    documentData.lineWidths = lineWidths;\n    var animators = data.a;\n    var animatorData;\n    var letterData;\n    jLen = animators.length;\n    var based;\n    var ind;\n    var indexes = [];\n\n    for (j = 0; j < jLen; j += 1) {\n      animatorData = animators[j];\n\n      if (animatorData.a.sc) {\n        documentData.strokeColorAnim = true;\n      }\n\n      if (animatorData.a.sw) {\n        documentData.strokeWidthAnim = true;\n      }\n\n      if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n        documentData.fillColorAnim = true;\n      }\n\n      ind = 0;\n      based = animatorData.s.b;\n\n      for (i = 0; i < len; i += 1) {\n        letterData = letters[i];\n        letterData.anIndexes[j] = ind;\n\n        if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n          // eslint-disable-line eqeqeq\n          if (animatorData.s.rn === 1) {\n            indexes.push(ind);\n          }\n\n          ind += 1;\n        }\n      }\n\n      data.a[j].s.totalChars = ind;\n      var currentInd = -1;\n      var newInd;\n\n      if (animatorData.s.rn === 1) {\n        for (i = 0; i < len; i += 1) {\n          letterData = letters[i];\n\n          if (currentInd != letterData.anIndexes[j]) {\n            // eslint-disable-line eqeqeq\n            currentInd = letterData.anIndexes[j];\n            newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n          }\n\n          letterData.anIndexes[j] = newInd;\n        }\n      }\n    }\n\n    documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n    documentData.ls = documentData.ls || 0;\n    documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n  };\n\n  TextProperty.prototype.updateDocumentData = function (newData, index) {\n    index = index === undefined ? this.keysIndex : index;\n    var dData = this.copyData({}, this.data.d.k[index].s);\n    dData = this.copyData(dData, newData);\n    this.data.d.k[index].s = dData;\n    this.recalculate(index);\n    this.setCurrentData(dData);\n    this.elem.addDynamicProperty(this);\n  };\n\n  TextProperty.prototype.recalculate = function (index) {\n    var dData = this.data.d.k[index].s;\n    dData.__complete = false;\n    this.keysIndex = 0;\n    this._isFirstFrame = true;\n    this.getValue(dData);\n  };\n\n  TextProperty.prototype.canResizeFont = function (_canResize) {\n    this.canResize = _canResize;\n    this.recalculate(this.keysIndex);\n    this.elem.addDynamicProperty(this);\n  };\n\n  TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n    this.minimumFontSize = Math.floor(_fontValue) || 1;\n    this.recalculate(this.keysIndex);\n    this.elem.addDynamicProperty(this);\n  };\n\n  var TextSelectorProp = function () {\n    var max = Math.max;\n    var min = Math.min;\n    var floor = Math.floor;\n\n    function TextSelectorPropFactory(elem, data) {\n      this._currentTextLength = -1;\n      this.k = false;\n      this.data = data;\n      this.elem = elem;\n      this.comp = elem.comp;\n      this.finalS = 0;\n      this.finalE = 0;\n      this.initDynamicPropertyContainer(elem);\n      this.s = PropertyFactory.getProp(elem, data.s || {\n        k: 0\n      }, 0, 0, this);\n\n      if ('e' in data) {\n        this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n      } else {\n        this.e = {\n          v: 100\n        };\n      }\n\n      this.o = PropertyFactory.getProp(elem, data.o || {\n        k: 0\n      }, 0, 0, this);\n      this.xe = PropertyFactory.getProp(elem, data.xe || {\n        k: 0\n      }, 0, 0, this);\n      this.ne = PropertyFactory.getProp(elem, data.ne || {\n        k: 0\n      }, 0, 0, this);\n      this.sm = PropertyFactory.getProp(elem, data.sm || {\n        k: 100\n      }, 0, 0, this);\n      this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n      if (!this.dynamicProperties.length) {\n        this.getValue();\n      }\n    }\n\n    TextSelectorPropFactory.prototype = {\n      getMult: function getMult(ind) {\n        if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n          this.getValue();\n        }\n\n        var x1 = 0;\n        var y1 = 0;\n        var x2 = 1;\n        var y2 = 1;\n\n        if (this.ne.v > 0) {\n          x1 = this.ne.v / 100.0;\n        } else {\n          y1 = -this.ne.v / 100.0;\n        }\n\n        if (this.xe.v > 0) {\n          x2 = 1.0 - this.xe.v / 100.0;\n        } else {\n          y2 = 1.0 + this.xe.v / 100.0;\n        }\n\n        var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n        var mult = 0;\n        var s = this.finalS;\n        var e = this.finalE;\n        var type = this.data.sh;\n\n        if (type === 2) {\n          if (e === s) {\n            mult = ind >= e ? 1 : 0;\n          } else {\n            mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n          }\n\n          mult = easer(mult);\n        } else if (type === 3) {\n          if (e === s) {\n            mult = ind >= e ? 0 : 1;\n          } else {\n            mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n          }\n\n          mult = easer(mult);\n        } else if (type === 4) {\n          if (e === s) {\n            mult = 0;\n          } else {\n            mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n            if (mult < 0.5) {\n              mult *= 2;\n            } else {\n              mult = 1 - 2 * (mult - 0.5);\n            }\n          }\n\n          mult = easer(mult);\n        } else if (type === 5) {\n          if (e === s) {\n            mult = 0;\n          } else {\n            var tot = e - s;\n            /* ind += 0.5;\r\n                      mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n            ind = min(max(0, ind + 0.5 - s), e - s);\n            var x = -tot / 2 + ind;\n            var a = tot / 2;\n            mult = Math.sqrt(1 - x * x / (a * a));\n          }\n\n          mult = easer(mult);\n        } else if (type === 6) {\n          if (e === s) {\n            mult = 0;\n          } else {\n            ind = min(max(0, ind + 0.5 - s), e - s);\n            mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n          }\n\n          mult = easer(mult);\n        } else {\n          if (ind >= floor(s)) {\n            if (ind - s < 0) {\n              mult = max(0, min(min(e, 1) - (s - ind), 1));\n            } else {\n              mult = max(0, min(e - ind, 1));\n            }\n          }\n\n          mult = easer(mult);\n        } // Smoothness implementation.\n        // The smoothness represents a reduced range of the original [0; 1] range.\n        // if smoothness is 25%, the new range will be [0.375; 0.625]\n        // Steps are:\n        // - find the lower value of the new range (threshold)\n        // - if multiplier is smaller than that value, floor it to 0\n        // - if it is larger,\n        //     - subtract the threshold\n        //     - divide it by the smoothness (this will return the range to [0; 1])\n        // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n        if (this.sm.v !== 100) {\n          var smoothness = this.sm.v * 0.01;\n\n          if (smoothness === 0) {\n            smoothness = 0.00000001;\n          }\n\n          var threshold = 0.5 - smoothness * 0.5;\n\n          if (mult < threshold) {\n            mult = 0;\n          } else {\n            mult = (mult - threshold) / smoothness;\n\n            if (mult > 1) {\n              mult = 1;\n            }\n          }\n        }\n\n        return mult * this.a.v;\n      },\n      getValue: function getValue(newCharsFlag) {\n        this.iterateDynamicProperties();\n        this._mdf = newCharsFlag || this._mdf;\n        this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n        if (newCharsFlag && this.data.r === 2) {\n          this.e.v = this._currentTextLength;\n        }\n\n        var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n        var o = this.o.v / divisor;\n        var s = this.s.v / divisor + o;\n        var e = this.e.v / divisor + o;\n\n        if (s > e) {\n          var _s = s;\n          s = e;\n          e = _s;\n        }\n\n        this.finalS = s;\n        this.finalE = e;\n      }\n    };\n    extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n    function getTextSelectorProp(elem, data, arr) {\n      return new TextSelectorPropFactory(elem, data, arr);\n    }\n\n    return {\n      getTextSelectorProp: getTextSelectorProp\n    };\n  }();\n\n  function TextAnimatorDataProperty(elem, animatorProps, container) {\n    var defaultData = {\n      propType: false\n    };\n    var getProp = PropertyFactory.getProp;\n    var textAnimatorAnimatables = animatorProps.a;\n    this.a = {\n      r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n      rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n      ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n      sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n      sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n      s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n      a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n      o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n      p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n      sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n      sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n      fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n      fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n      fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n      fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n      t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n    };\n    this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n    this.s.t = animatorProps.s.t;\n  }\n\n  function TextAnimatorProperty(textData, renderType, elem) {\n    this._isFirstFrame = true;\n    this._hasMaskedPath = false;\n    this._frameId = -1;\n    this._textData = textData;\n    this._renderType = renderType;\n    this._elem = elem;\n    this._animatorsData = createSizedArray(this._textData.a.length);\n    this._pathData = {};\n    this._moreOptions = {\n      alignment: {}\n    };\n    this.renderedLetters = [];\n    this.lettersChangedFlag = false;\n    this.initDynamicPropertyContainer(elem);\n  }\n\n  TextAnimatorProperty.prototype.searchProperties = function () {\n    var i;\n    var len = this._textData.a.length;\n    var animatorProps;\n    var getProp = PropertyFactory.getProp;\n\n    for (i = 0; i < len; i += 1) {\n      animatorProps = this._textData.a[i];\n      this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n    }\n\n    if (this._textData.p && 'm' in this._textData.p) {\n      this._pathData = {\n        a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n        f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n        l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n        r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n        p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n        m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n      };\n      this._hasMaskedPath = true;\n    } else {\n      this._hasMaskedPath = false;\n    }\n\n    this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n  };\n\n  TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n    this.lettersChangedFlag = lettersChangedFlag;\n\n    if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n      return;\n    }\n\n    this._isFirstFrame = false;\n    var alignment = this._moreOptions.alignment.v;\n    var animators = this._animatorsData;\n    var textData = this._textData;\n    var matrixHelper = this.mHelper;\n    var renderType = this._renderType;\n    var renderedLettersCount = this.renderedLetters.length;\n    var xPos;\n    var yPos;\n    var i;\n    var len;\n    var letters = documentData.l;\n    var pathInfo;\n    var currentLength;\n    var currentPoint;\n    var segmentLength;\n    var flag;\n    var pointInd;\n    var segmentInd;\n    var prevPoint;\n    var points;\n    var segments;\n    var partialLength;\n    var totalLength;\n    var perc;\n    var tanAngle;\n    var mask;\n\n    if (this._hasMaskedPath) {\n      mask = this._pathData.m;\n\n      if (!this._pathData.n || this._pathData._mdf) {\n        var paths = mask.v;\n\n        if (this._pathData.r.v) {\n          paths = paths.reverse();\n        } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n        pathInfo = {\n          tLength: 0,\n          segments: []\n        };\n        len = paths._length - 1;\n        var bezierData;\n        totalLength = 0;\n\n        for (i = 0; i < len; i += 1) {\n          bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n          pathInfo.tLength += bezierData.segmentLength;\n          pathInfo.segments.push(bezierData);\n          totalLength += bezierData.segmentLength;\n        }\n\n        i = len;\n\n        if (mask.v.c) {\n          bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n          pathInfo.tLength += bezierData.segmentLength;\n          pathInfo.segments.push(bezierData);\n          totalLength += bezierData.segmentLength;\n        }\n\n        this._pathData.pi = pathInfo;\n      }\n\n      pathInfo = this._pathData.pi;\n      currentLength = this._pathData.f.v;\n      segmentInd = 0;\n      pointInd = 1;\n      segmentLength = 0;\n      flag = true;\n      segments = pathInfo.segments;\n\n      if (currentLength < 0 && mask.v.c) {\n        if (pathInfo.tLength < Math.abs(currentLength)) {\n          currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n        }\n\n        segmentInd = segments.length - 1;\n        points = segments[segmentInd].points;\n        pointInd = points.length - 1;\n\n        while (currentLength < 0) {\n          currentLength += points[pointInd].partialLength;\n          pointInd -= 1;\n\n          if (pointInd < 0) {\n            segmentInd -= 1;\n            points = segments[segmentInd].points;\n            pointInd = points.length - 1;\n          }\n        }\n      }\n\n      points = segments[segmentInd].points;\n      prevPoint = points[pointInd - 1];\n      currentPoint = points[pointInd];\n      partialLength = currentPoint.partialLength;\n    }\n\n    len = letters.length;\n    xPos = 0;\n    yPos = 0;\n    var yOff = documentData.finalSize * 1.2 * 0.714;\n    var firstLine = true;\n    var animatorProps;\n    var animatorSelector;\n    var j;\n    var jLen;\n    var letterValue;\n    jLen = animators.length;\n    var mult;\n    var ind = -1;\n    var offf;\n    var xPathPos;\n    var yPathPos;\n    var initPathPos = currentLength;\n    var initSegmentInd = segmentInd;\n    var initPointInd = pointInd;\n    var currentLine = -1;\n    var elemOpacity;\n    var sc;\n    var sw;\n    var fc;\n    var k;\n    var letterSw;\n    var letterSc;\n    var letterFc;\n    var letterM = '';\n    var letterP = this.defaultPropsArray;\n    var letterO; //\n\n    if (documentData.j === 2 || documentData.j === 1) {\n      var animatorJustifyOffset = 0;\n      var animatorFirstCharOffset = 0;\n      var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n      var lastIndex = 0;\n      var isNewLine = true;\n\n      for (i = 0; i < len; i += 1) {\n        if (letters[i].n) {\n          if (animatorJustifyOffset) {\n            animatorJustifyOffset += animatorFirstCharOffset;\n          }\n\n          while (lastIndex < i) {\n            letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n            lastIndex += 1;\n          }\n\n          animatorJustifyOffset = 0;\n          isNewLine = true;\n        } else {\n          for (j = 0; j < jLen; j += 1) {\n            animatorProps = animators[j].a;\n\n            if (animatorProps.t.propType) {\n              if (isNewLine && documentData.j === 2) {\n                animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n              }\n\n              animatorSelector = animators[j].s;\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n              if (mult.length) {\n                animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n              } else {\n                animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n              }\n            }\n          }\n\n          isNewLine = false;\n        }\n      }\n\n      if (animatorJustifyOffset) {\n        animatorJustifyOffset += animatorFirstCharOffset;\n      }\n\n      while (lastIndex < i) {\n        letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n        lastIndex += 1;\n      }\n    } //\n\n\n    for (i = 0; i < len; i += 1) {\n      matrixHelper.reset();\n      elemOpacity = 1;\n\n      if (letters[i].n) {\n        xPos = 0;\n        yPos += documentData.yOffset;\n        yPos += firstLine ? 1 : 0;\n        currentLength = initPathPos;\n        firstLine = false;\n\n        if (this._hasMaskedPath) {\n          segmentInd = initSegmentInd;\n          pointInd = initPointInd;\n          points = segments[segmentInd].points;\n          prevPoint = points[pointInd - 1];\n          currentPoint = points[pointInd];\n          partialLength = currentPoint.partialLength;\n          segmentLength = 0;\n        }\n\n        letterM = '';\n        letterFc = '';\n        letterSw = '';\n        letterO = '';\n        letterP = this.defaultPropsArray;\n      } else {\n        if (this._hasMaskedPath) {\n          if (currentLine !== letters[i].line) {\n            switch (documentData.j) {\n              case 1:\n                currentLength += totalLength - documentData.lineWidths[letters[i].line];\n                break;\n\n              case 2:\n                currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n                break;\n\n              default:\n                break;\n            }\n\n            currentLine = letters[i].line;\n          }\n\n          if (ind !== letters[i].ind) {\n            if (letters[ind]) {\n              currentLength += letters[ind].extra;\n            }\n\n            currentLength += letters[i].an / 2;\n            ind = letters[i].ind;\n          }\n\n          currentLength += alignment[0] * letters[i].an * 0.005;\n          var animatorOffset = 0;\n\n          for (j = 0; j < jLen; j += 1) {\n            animatorProps = animators[j].a;\n\n            if (animatorProps.p.propType) {\n              animatorSelector = animators[j].s;\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n              if (mult.length) {\n                animatorOffset += animatorProps.p.v[0] * mult[0];\n              } else {\n                animatorOffset += animatorProps.p.v[0] * mult;\n              }\n            }\n\n            if (animatorProps.a.propType) {\n              animatorSelector = animators[j].s;\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n              if (mult.length) {\n                animatorOffset += animatorProps.a.v[0] * mult[0];\n              } else {\n                animatorOffset += animatorProps.a.v[0] * mult;\n              }\n            }\n          }\n\n          flag = true; // Force alignment only works with a single line for now\n\n          if (this._pathData.a.v) {\n            currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n            currentLength += this._pathData.f.v;\n          }\n\n          while (flag) {\n            if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n              perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n              xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n              yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n              matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n              flag = false;\n            } else if (points) {\n              segmentLength += currentPoint.partialLength;\n              pointInd += 1;\n\n              if (pointInd >= points.length) {\n                pointInd = 0;\n                segmentInd += 1;\n\n                if (!segments[segmentInd]) {\n                  if (mask.v.c) {\n                    pointInd = 0;\n                    segmentInd = 0;\n                    points = segments[segmentInd].points;\n                  } else {\n                    segmentLength -= currentPoint.partialLength;\n                    points = null;\n                  }\n                } else {\n                  points = segments[segmentInd].points;\n                }\n              }\n\n              if (points) {\n                prevPoint = currentPoint;\n                currentPoint = points[pointInd];\n                partialLength = currentPoint.partialLength;\n              }\n            }\n          }\n\n          offf = letters[i].an / 2 - letters[i].add;\n          matrixHelper.translate(-offf, 0, 0);\n        } else {\n          offf = letters[i].an / 2 - letters[i].add;\n          matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n          matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n\n          if (animatorProps.t.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n            if (xPos !== 0 || documentData.j !== 0) {\n              if (this._hasMaskedPath) {\n                if (mult.length) {\n                  currentLength += animatorProps.t.v * mult[0];\n                } else {\n                  currentLength += animatorProps.t.v * mult;\n                }\n              } else if (mult.length) {\n                xPos += animatorProps.t.v * mult[0];\n              } else {\n                xPos += animatorProps.t.v * mult;\n              }\n            }\n          }\n        }\n\n        if (documentData.strokeWidthAnim) {\n          sw = documentData.sw || 0;\n        }\n\n        if (documentData.strokeColorAnim) {\n          if (documentData.sc) {\n            sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n          } else {\n            sc = [0, 0, 0];\n          }\n        }\n\n        if (documentData.fillColorAnim && documentData.fc) {\n          fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n\n          if (animatorProps.a.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n            if (mult.length) {\n              matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n            } else {\n              matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n            }\n          }\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n\n          if (animatorProps.s.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n            if (mult.length) {\n              matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n            } else {\n              matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n            }\n          }\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n          animatorSelector = animators[j].s;\n          mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n          if (animatorProps.sk.propType) {\n            if (mult.length) {\n              matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n            } else {\n              matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n            }\n          }\n\n          if (animatorProps.r.propType) {\n            if (mult.length) {\n              matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n            } else {\n              matrixHelper.rotateZ(-animatorProps.r.v * mult);\n            }\n          }\n\n          if (animatorProps.ry.propType) {\n            if (mult.length) {\n              matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n            } else {\n              matrixHelper.rotateY(animatorProps.ry.v * mult);\n            }\n          }\n\n          if (animatorProps.rx.propType) {\n            if (mult.length) {\n              matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n            } else {\n              matrixHelper.rotateX(animatorProps.rx.v * mult);\n            }\n          }\n\n          if (animatorProps.o.propType) {\n            if (mult.length) {\n              elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n            } else {\n              elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n            }\n          }\n\n          if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n            if (mult.length) {\n              sw += animatorProps.sw.v * mult[0];\n            } else {\n              sw += animatorProps.sw.v * mult;\n            }\n          }\n\n          if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n            for (k = 0; k < 3; k += 1) {\n              if (mult.length) {\n                sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n              } else {\n                sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n              }\n            }\n          }\n\n          if (documentData.fillColorAnim && documentData.fc) {\n            if (animatorProps.fc.propType) {\n              for (k = 0; k < 3; k += 1) {\n                if (mult.length) {\n                  fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n                } else {\n                  fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n                }\n              }\n            }\n\n            if (animatorProps.fh.propType) {\n              if (mult.length) {\n                fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n              } else {\n                fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n              }\n            }\n\n            if (animatorProps.fs.propType) {\n              if (mult.length) {\n                fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n              } else {\n                fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n              }\n            }\n\n            if (animatorProps.fb.propType) {\n              if (mult.length) {\n                fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n              } else {\n                fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n              }\n            }\n          }\n        }\n\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n\n          if (animatorProps.p.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n            if (this._hasMaskedPath) {\n              if (mult.length) {\n                matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n              } else {\n                matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n              }\n            } else if (mult.length) {\n              matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n            } else {\n              matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n            }\n          }\n        }\n\n        if (documentData.strokeWidthAnim) {\n          letterSw = sw < 0 ? 0 : sw;\n        }\n\n        if (documentData.strokeColorAnim) {\n          letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n        }\n\n        if (documentData.fillColorAnim && documentData.fc) {\n          letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n        }\n\n        if (this._hasMaskedPath) {\n          matrixHelper.translate(0, -documentData.ls);\n          matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n          if (this._pathData.p.v) {\n            tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n            var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n            if (currentPoint.point[0] < prevPoint.point[0]) {\n              rot += 180;\n            }\n\n            matrixHelper.rotate(-rot * Math.PI / 180);\n          }\n\n          matrixHelper.translate(xPathPos, yPathPos, 0);\n          currentLength -= alignment[0] * letters[i].an * 0.005;\n\n          if (letters[i + 1] && ind !== letters[i + 1].ind) {\n            currentLength += letters[i].an / 2;\n            currentLength += documentData.tr * 0.001 * documentData.finalSize;\n          }\n        } else {\n          matrixHelper.translate(xPos, yPos, 0);\n\n          if (documentData.ps) {\n            // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n            matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n          }\n\n          switch (documentData.j) {\n            case 1:\n              matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n              break;\n\n            case 2:\n              matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n              break;\n\n            default:\n              break;\n          }\n\n          matrixHelper.translate(0, -documentData.ls);\n          matrixHelper.translate(offf, 0, 0);\n          matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n          xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n        }\n\n        if (renderType === 'html') {\n          letterM = matrixHelper.toCSS();\n        } else if (renderType === 'svg') {\n          letterM = matrixHelper.to2dCSS();\n        } else {\n          letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n        }\n\n        letterO = elemOpacity;\n      }\n\n      if (renderedLettersCount <= i) {\n        letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n        this.renderedLetters.push(letterValue);\n        renderedLettersCount += 1;\n        this.lettersChangedFlag = true;\n      } else {\n        letterValue = this.renderedLetters[i];\n        this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n      }\n    }\n  };\n\n  TextAnimatorProperty.prototype.getValue = function () {\n    if (this._elem.globalData.frameId === this._frameId) {\n      return;\n    }\n\n    this._frameId = this._elem.globalData.frameId;\n    this.iterateDynamicProperties();\n  };\n\n  TextAnimatorProperty.prototype.mHelper = new Matrix();\n  TextAnimatorProperty.prototype.defaultPropsArray = [];\n  extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n  function ITextElement() {}\n\n  ITextElement.prototype.initElement = function (data, globalData, comp) {\n    this.lettersChangedFlag = true;\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n    this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n    this.initTransform(data, globalData, comp);\n    this.initHierarchy();\n    this.initRenderable();\n    this.initRendererElement();\n    this.createContainerElements();\n    this.createRenderableComponents();\n    this.createContent();\n    this.hide();\n    this.textAnimator.searchProperties(this.dynamicProperties);\n  };\n\n  ITextElement.prototype.prepareFrame = function (num) {\n    this._mdf = false;\n    this.prepareRenderableFrame(num);\n    this.prepareProperties(num, this.isInRange);\n  };\n\n  ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n    var j;\n    var jLen = shapes.length;\n    var pathNodes;\n    var shapeStr = '';\n\n    for (j = 0; j < jLen; j += 1) {\n      if (shapes[j].ty === 'sh') {\n        pathNodes = shapes[j].ks.k;\n        shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n      }\n    }\n\n    return shapeStr;\n  };\n\n  ITextElement.prototype.updateDocumentData = function (newData, index) {\n    this.textProperty.updateDocumentData(newData, index);\n  };\n\n  ITextElement.prototype.canResizeFont = function (_canResize) {\n    this.textProperty.canResizeFont(_canResize);\n  };\n\n  ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n    this.textProperty.setMinimumFontSize(_fontSize);\n  };\n\n  ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n    if (documentData.ps) {\n      matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n    }\n\n    matrixHelper.translate(0, -documentData.ls, 0);\n\n    switch (documentData.j) {\n      case 1:\n        matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n        break;\n\n      case 2:\n        matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n        break;\n\n      default:\n        break;\n    }\n\n    matrixHelper.translate(xPos, yPos, 0);\n  };\n\n  ITextElement.prototype.buildColor = function (colorData) {\n    return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n  };\n\n  ITextElement.prototype.emptyProp = new LetterProps();\n\n  ITextElement.prototype.destroy = function () {};\n\n  ITextElement.prototype.validateText = function () {\n    if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n      this.buildNewText();\n      this.textProperty._isFirstFrame = false;\n      this.textProperty._mdf = false;\n    }\n  };\n\n  var emptyShapeData = {\n    shapes: []\n  };\n\n  function SVGTextLottieElement(data, globalData, comp) {\n    this.textSpans = [];\n    this.renderType = 'svg';\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n  SVGTextLottieElement.prototype.createContent = function () {\n    if (this.data.singleShape && !this.globalData.fontManager.chars) {\n      this.textContainer = createNS('text');\n    }\n  };\n\n  SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n    var i = 0;\n    var len = textArray.length;\n    var textContents = [];\n    var currentTextContent = '';\n\n    while (i < len) {\n      if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n        textContents.push(currentTextContent);\n        currentTextContent = '';\n      } else {\n        currentTextContent += textArray[i];\n      }\n\n      i += 1;\n    }\n\n    textContents.push(currentTextContent);\n    return textContents;\n  };\n\n  SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n    // data should probably be cloned to apply scale separately to each instance of a text on different layers\n    // but since text internal content gets only rendered once and then it's never rerendered,\n    // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n    // Avoiding cloning is preferred since cloning each character shape data is expensive\n    if (data.shapes && data.shapes.length) {\n      var shape = data.shapes[0];\n\n      if (shape.it) {\n        var shapeItem = shape.it[shape.it.length - 1];\n\n        if (shapeItem.s) {\n          shapeItem.s.k[0] = scale;\n          shapeItem.s.k[1] = scale;\n        }\n      }\n    }\n\n    return data;\n  };\n\n  SVGTextLottieElement.prototype.buildNewText = function () {\n    this.addDynamicProperty(this);\n    var i;\n    var len;\n    var documentData = this.textProperty.currentData;\n    this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n    if (documentData.fc) {\n      this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n    } else {\n      this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n    }\n\n    if (documentData.sc) {\n      this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n      this.layerElement.setAttribute('stroke-width', documentData.sw);\n    }\n\n    this.layerElement.setAttribute('font-size', documentData.finalSize);\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n    if (fontData.fClass) {\n      this.layerElement.setAttribute('class', fontData.fClass);\n    } else {\n      this.layerElement.setAttribute('font-family', fontData.fFamily);\n      var fWeight = documentData.fWeight;\n      var fStyle = documentData.fStyle;\n      this.layerElement.setAttribute('font-style', fStyle);\n      this.layerElement.setAttribute('font-weight', fWeight);\n    }\n\n    this.layerElement.setAttribute('aria-label', documentData.t);\n    var letters = documentData.l || [];\n    var usesGlyphs = !!this.globalData.fontManager.chars;\n    len = letters.length;\n    var tSpan;\n    var matrixHelper = this.mHelper;\n    var shapeStr = '';\n    var singleShape = this.data.singleShape;\n    var xPos = 0;\n    var yPos = 0;\n    var firstLine = true;\n    var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n    if (singleShape && !usesGlyphs && !documentData.sz) {\n      var tElement = this.textContainer;\n      var justify = 'start';\n\n      switch (documentData.j) {\n        case 1:\n          justify = 'end';\n          break;\n\n        case 2:\n          justify = 'middle';\n          break;\n\n        default:\n          justify = 'start';\n          break;\n      }\n\n      tElement.setAttribute('text-anchor', justify);\n      tElement.setAttribute('letter-spacing', trackingOffset);\n      var textContent = this.buildTextContents(documentData.finalText);\n      len = textContent.length;\n      yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n      for (i = 0; i < len; i += 1) {\n        tSpan = this.textSpans[i].span || createNS('tspan');\n        tSpan.textContent = textContent[i];\n        tSpan.setAttribute('x', 0);\n        tSpan.setAttribute('y', yPos);\n        tSpan.style.display = 'inherit';\n        tElement.appendChild(tSpan);\n\n        if (!this.textSpans[i]) {\n          this.textSpans[i] = {\n            span: null,\n            glyph: null\n          };\n        }\n\n        this.textSpans[i].span = tSpan;\n        yPos += documentData.finalLineHeight;\n      }\n\n      this.layerElement.appendChild(tElement);\n    } else {\n      var cachedSpansLength = this.textSpans.length;\n      var charData;\n\n      for (i = 0; i < len; i += 1) {\n        if (!this.textSpans[i]) {\n          this.textSpans[i] = {\n            span: null,\n            childSpan: null,\n            glyph: null\n          };\n        }\n\n        if (!usesGlyphs || !singleShape || i === 0) {\n          tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n          if (cachedSpansLength <= i) {\n            tSpan.setAttribute('stroke-linecap', 'butt');\n            tSpan.setAttribute('stroke-linejoin', 'round');\n            tSpan.setAttribute('stroke-miterlimit', '4');\n            this.textSpans[i].span = tSpan;\n\n            if (usesGlyphs) {\n              var childSpan = createNS('g');\n              tSpan.appendChild(childSpan);\n              this.textSpans[i].childSpan = childSpan;\n            }\n\n            this.textSpans[i].span = tSpan;\n            this.layerElement.appendChild(tSpan);\n          }\n\n          tSpan.style.display = 'inherit';\n        }\n\n        matrixHelper.reset();\n\n        if (singleShape) {\n          if (letters[i].n) {\n            xPos = -trackingOffset;\n            yPos += documentData.yOffset;\n            yPos += firstLine ? 1 : 0;\n            firstLine = false;\n          }\n\n          this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n          xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n          xPos += trackingOffset;\n        }\n\n        if (usesGlyphs) {\n          charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n          var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n          if (charData.t === 1) {\n            glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n          } else {\n            var data = emptyShapeData;\n\n            if (charData.data && charData.data.shapes) {\n              data = this.buildShapeData(charData.data, documentData.finalSize);\n            }\n\n            glyphElement = new SVGShapeElement(data, this.globalData, this);\n          }\n\n          if (this.textSpans[i].glyph) {\n            var glyph = this.textSpans[i].glyph;\n            this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n            glyph.destroy();\n          }\n\n          this.textSpans[i].glyph = glyphElement;\n          glyphElement._debug = true;\n          glyphElement.prepareFrame(0);\n          glyphElement.renderFrame();\n          this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n          // this might have issues with strokes and might need a different solution\n\n          if (charData.t === 1) {\n            this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n          }\n        } else {\n          if (singleShape) {\n            tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n          }\n\n          tSpan.textContent = letters[i].val;\n          tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n        } //\n\n      }\n\n      if (singleShape && tSpan) {\n        tSpan.setAttribute('d', shapeStr);\n      }\n    }\n\n    while (i < this.textSpans.length) {\n      this.textSpans[i].span.style.display = 'none';\n      i += 1;\n    }\n\n    this._sizeChanged = true;\n  };\n\n  SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n    this.prepareFrame(this.comp.renderedFrame - this.data.st);\n    this.renderInnerContent();\n\n    if (this._sizeChanged) {\n      this._sizeChanged = false;\n      var textBox = this.layerElement.getBBox();\n      this.bbox = {\n        top: textBox.y,\n        left: textBox.x,\n        width: textBox.width,\n        height: textBox.height\n      };\n    }\n\n    return this.bbox;\n  };\n\n  SVGTextLottieElement.prototype.getValue = function () {\n    var i;\n    var len = this.textSpans.length;\n    var glyphElement;\n    this.renderedFrame = this.comp.renderedFrame;\n\n    for (i = 0; i < len; i += 1) {\n      glyphElement = this.textSpans[i].glyph;\n\n      if (glyphElement) {\n        glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n        if (glyphElement._mdf) {\n          this._mdf = true;\n        }\n      }\n    }\n  };\n\n  SVGTextLottieElement.prototype.renderInnerContent = function () {\n    this.validateText();\n\n    if (!this.data.singleShape || this._mdf) {\n      this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n      if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n        this._sizeChanged = true;\n        var i;\n        var len;\n        var renderedLetters = this.textAnimator.renderedLetters;\n        var letters = this.textProperty.currentData.l;\n        len = letters.length;\n        var renderedLetter;\n        var textSpan;\n        var glyphElement;\n\n        for (i = 0; i < len; i += 1) {\n          if (!letters[i].n) {\n            renderedLetter = renderedLetters[i];\n            textSpan = this.textSpans[i].span;\n            glyphElement = this.textSpans[i].glyph;\n\n            if (glyphElement) {\n              glyphElement.renderFrame();\n            }\n\n            if (renderedLetter._mdf.m) {\n              textSpan.setAttribute('transform', renderedLetter.m);\n            }\n\n            if (renderedLetter._mdf.o) {\n              textSpan.setAttribute('opacity', renderedLetter.o);\n            }\n\n            if (renderedLetter._mdf.sw) {\n              textSpan.setAttribute('stroke-width', renderedLetter.sw);\n            }\n\n            if (renderedLetter._mdf.sc) {\n              textSpan.setAttribute('stroke', renderedLetter.sc);\n            }\n\n            if (renderedLetter._mdf.fc) {\n              textSpan.setAttribute('fill', renderedLetter.fc);\n            }\n          }\n        }\n      }\n    }\n  };\n\n  function ISolidElement(data, globalData, comp) {\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([IImageElement], ISolidElement);\n\n  ISolidElement.prototype.createContent = function () {\n    var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n    /// /rect.style.height = this.data.sh;\n    /// /rect.style.fill = this.data.sc;\n\n    rect.setAttribute('width', this.data.sw);\n    rect.setAttribute('height', this.data.sh);\n    rect.setAttribute('fill', this.data.sc);\n    this.layerElement.appendChild(rect);\n  };\n\n  function NullElement(data, globalData, comp) {\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.initFrame();\n    this.initTransform(data, globalData, comp);\n    this.initHierarchy();\n  }\n\n  NullElement.prototype.prepareFrame = function (num) {\n    this.prepareProperties(num, true);\n  };\n\n  NullElement.prototype.renderFrame = function () {};\n\n  NullElement.prototype.getBaseElement = function () {\n    return null;\n  };\n\n  NullElement.prototype.destroy = function () {};\n\n  NullElement.prototype.sourceRectAtTime = function () {};\n\n  NullElement.prototype.hide = function () {};\n\n  extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n  function SVGRendererBase() {}\n\n  extendPrototype([BaseRenderer], SVGRendererBase);\n\n  SVGRendererBase.prototype.createNull = function (data) {\n    return new NullElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.createShape = function (data) {\n    return new SVGShapeElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.createText = function (data) {\n    return new SVGTextLottieElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.createImage = function (data) {\n    return new IImageElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.createSolid = function (data) {\n    return new ISolidElement(data, this.globalData, this);\n  };\n\n  SVGRendererBase.prototype.configAnimation = function (animData) {\n    this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n    this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n    if (this.renderConfig.viewBoxSize) {\n      this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n    } else {\n      this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n    }\n\n    if (!this.renderConfig.viewBoxOnly) {\n      this.svgElement.setAttribute('width', animData.w);\n      this.svgElement.setAttribute('height', animData.h);\n      this.svgElement.style.width = '100%';\n      this.svgElement.style.height = '100%';\n      this.svgElement.style.transform = 'translate3d(0,0,0)';\n      this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n    }\n\n    if (this.renderConfig.width) {\n      this.svgElement.setAttribute('width', this.renderConfig.width);\n    }\n\n    if (this.renderConfig.height) {\n      this.svgElement.setAttribute('height', this.renderConfig.height);\n    }\n\n    if (this.renderConfig.className) {\n      this.svgElement.setAttribute('class', this.renderConfig.className);\n    }\n\n    if (this.renderConfig.id) {\n      this.svgElement.setAttribute('id', this.renderConfig.id);\n    }\n\n    if (this.renderConfig.focusable !== undefined) {\n      this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n    }\n\n    this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n    // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n    this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n    var defs = this.globalData.defs;\n    this.setupGlobalData(animData, defs);\n    this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n    this.data = animData;\n    var maskElement = createNS('clipPath');\n    var rect = createNS('rect');\n    rect.setAttribute('width', animData.w);\n    rect.setAttribute('height', animData.h);\n    rect.setAttribute('x', 0);\n    rect.setAttribute('y', 0);\n    var maskId = createElementID();\n    maskElement.setAttribute('id', maskId);\n    maskElement.appendChild(rect);\n    this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n    defs.appendChild(maskElement);\n    this.layers = animData.layers;\n    this.elements = createSizedArray(animData.layers.length);\n  };\n\n  SVGRendererBase.prototype.destroy = function () {\n    if (this.animationItem.wrapper) {\n      this.animationItem.wrapper.innerText = '';\n    }\n\n    this.layerElement = null;\n    this.globalData.defs = null;\n    var i;\n    var len = this.layers ? this.layers.length : 0;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i] && this.elements[i].destroy) {\n        this.elements[i].destroy();\n      }\n    }\n\n    this.elements.length = 0;\n    this.destroyed = true;\n    this.animationItem = null;\n  };\n\n  SVGRendererBase.prototype.updateContainerSize = function () {};\n\n  SVGRendererBase.prototype.findIndexByInd = function (ind) {\n    var i = 0;\n    var len = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.layers[i].ind === ind) {\n        return i;\n      }\n    }\n\n    return -1;\n  };\n\n  SVGRendererBase.prototype.buildItem = function (pos) {\n    var elements = this.elements;\n\n    if (elements[pos] || this.layers[pos].ty === 99) {\n      return;\n    }\n\n    elements[pos] = true;\n    var element = this.createItem(this.layers[pos]);\n    elements[pos] = element;\n\n    if (getExpressionsPlugin()) {\n      if (this.layers[pos].ty === 0) {\n        this.globalData.projectInterface.registerComposition(element);\n      }\n\n      element.initExpressions();\n    }\n\n    this.appendElementInPos(element, pos);\n\n    if (this.layers[pos].tt) {\n      var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n      if (elementIndex === -1) {\n        return;\n      }\n\n      if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n        this.buildItem(elementIndex);\n        this.addPendingElement(element);\n      } else {\n        var matteElement = elements[elementIndex];\n        var matteMask = matteElement.getMatte(this.layers[pos].tt);\n        element.setMatte(matteMask);\n      }\n    }\n  };\n\n  SVGRendererBase.prototype.checkPendingElements = function () {\n    while (this.pendingElements.length) {\n      var element = this.pendingElements.pop();\n      element.checkParenting();\n\n      if (element.data.tt) {\n        var i = 0;\n        var len = this.elements.length;\n\n        while (i < len) {\n          if (this.elements[i] === element) {\n            var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n            var matteElement = this.elements[elementIndex];\n            var matteMask = matteElement.getMatte(this.layers[i].tt);\n            element.setMatte(matteMask);\n            break;\n          }\n\n          i += 1;\n        }\n      }\n    }\n  };\n\n  SVGRendererBase.prototype.renderFrame = function (num) {\n    if (this.renderedFrame === num || this.destroyed) {\n      return;\n    }\n\n    if (num === null) {\n      num = this.renderedFrame;\n    } else {\n      this.renderedFrame = num;\n    } // console.log('-------');\n    // console.log('FRAME ',num);\n\n\n    this.globalData.frameNum = num;\n    this.globalData.frameId += 1;\n    this.globalData.projectInterface.currentFrame = num;\n    this.globalData._mdf = false;\n    var i;\n    var len = this.layers.length;\n\n    if (!this.completeLayers) {\n      this.checkLayers(num);\n    }\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].prepareFrame(num - this.layers[i].st);\n      }\n    }\n\n    if (this.globalData._mdf) {\n      for (i = 0; i < len; i += 1) {\n        if (this.completeLayers || this.elements[i]) {\n          this.elements[i].renderFrame();\n        }\n      }\n    }\n  };\n\n  SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n    var newElement = element.getBaseElement();\n\n    if (!newElement) {\n      return;\n    }\n\n    var i = 0;\n    var nextElement;\n\n    while (i < pos) {\n      if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n        nextElement = this.elements[i].getBaseElement();\n      }\n\n      i += 1;\n    }\n\n    if (nextElement) {\n      this.layerElement.insertBefore(newElement, nextElement);\n    } else {\n      this.layerElement.appendChild(newElement);\n    }\n  };\n\n  SVGRendererBase.prototype.hide = function () {\n    this.layerElement.style.display = 'none';\n  };\n\n  SVGRendererBase.prototype.show = function () {\n    this.layerElement.style.display = 'block';\n  };\n\n  function ICompElement() {}\n\n  extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n  ICompElement.prototype.initElement = function (data, globalData, comp) {\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.initTransform(data, globalData, comp);\n    this.initRenderable();\n    this.initHierarchy();\n    this.initRendererElement();\n    this.createContainerElements();\n    this.createRenderableComponents();\n\n    if (this.data.xt || !globalData.progressiveLoad) {\n      this.buildAllItems();\n    }\n\n    this.hide();\n  };\n  /* ICompElement.prototype.hide = function(){\r\n      if(!this.hidden){\r\n          this.hideElement();\r\n          var i,len = this.elements.length;\r\n          for( i = 0; i < len; i+=1 ){\r\n              if(this.elements[i]){\r\n                  this.elements[i].hide();\r\n              }\r\n          }\r\n      }\r\n  }; */\n\n\n  ICompElement.prototype.prepareFrame = function (num) {\n    this._mdf = false;\n    this.prepareRenderableFrame(num);\n    this.prepareProperties(num, this.isInRange);\n\n    if (!this.isInRange && !this.data.xt) {\n      return;\n    }\n\n    if (!this.tm._placeholder) {\n      var timeRemapped = this.tm.v;\n\n      if (timeRemapped === this.data.op) {\n        timeRemapped = this.data.op - 1;\n      }\n\n      this.renderedFrame = timeRemapped;\n    } else {\n      this.renderedFrame = num / this.data.sr;\n    }\n\n    var i;\n    var len = this.elements.length;\n\n    if (!this.completeLayers) {\n      this.checkLayers(this.renderedFrame);\n    } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n        if (this.elements[i]._mdf) {\n          this._mdf = true;\n        }\n      }\n    }\n  };\n\n  ICompElement.prototype.renderInnerContent = function () {\n    var i;\n    var len = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].renderFrame();\n      }\n    }\n  };\n\n  ICompElement.prototype.setElements = function (elems) {\n    this.elements = elems;\n  };\n\n  ICompElement.prototype.getElements = function () {\n    return this.elements;\n  };\n\n  ICompElement.prototype.destroyElements = function () {\n    var i;\n    var len = this.layers.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i]) {\n        this.elements[i].destroy();\n      }\n    }\n  };\n\n  ICompElement.prototype.destroy = function () {\n    this.destroyElements();\n    this.destroyBaseElement();\n  };\n\n  function SVGCompElement(data, globalData, comp) {\n    this.layers = data.layers;\n    this.supports3d = true;\n    this.completeLayers = false;\n    this.pendingElements = [];\n    this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n    this.initElement(data, globalData, comp);\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n  }\n\n  extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n  SVGCompElement.prototype.createComp = function (data) {\n    return new SVGCompElement(data, this.globalData, this);\n  };\n\n  function SVGRenderer(animationItem, config) {\n    this.animationItem = animationItem;\n    this.layers = null;\n    this.renderedFrame = -1;\n    this.svgElement = createNS('svg');\n    var ariaLabel = '';\n\n    if (config && config.title) {\n      var titleElement = createNS('title');\n      var titleId = createElementID();\n      titleElement.setAttribute('id', titleId);\n      titleElement.textContent = config.title;\n      this.svgElement.appendChild(titleElement);\n      ariaLabel += titleId;\n    }\n\n    if (config && config.description) {\n      var descElement = createNS('desc');\n      var descId = createElementID();\n      descElement.setAttribute('id', descId);\n      descElement.textContent = config.description;\n      this.svgElement.appendChild(descElement);\n      ariaLabel += ' ' + descId;\n    }\n\n    if (ariaLabel) {\n      this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n    }\n\n    var defs = createNS('defs');\n    this.svgElement.appendChild(defs);\n    var maskElement = createNS('g');\n    this.svgElement.appendChild(maskElement);\n    this.layerElement = maskElement;\n    this.renderConfig = {\n      preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      contentVisibility: config && config.contentVisibility || 'visible',\n      progressiveLoad: config && config.progressiveLoad || false,\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\n      viewBoxOnly: config && config.viewBoxOnly || false,\n      viewBoxSize: config && config.viewBoxSize || false,\n      className: config && config.className || '',\n      id: config && config.id || '',\n      focusable: config && config.focusable,\n      filterSize: {\n        width: config && config.filterSize && config.filterSize.width || '100%',\n        height: config && config.filterSize && config.filterSize.height || '100%',\n        x: config && config.filterSize && config.filterSize.x || '0%',\n        y: config && config.filterSize && config.filterSize.y || '0%'\n      },\n      width: config && config.width,\n      height: config && config.height,\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n    };\n    this.globalData = {\n      _mdf: false,\n      frameNum: -1,\n      defs: defs,\n      renderConfig: this.renderConfig\n    };\n    this.elements = [];\n    this.pendingElements = [];\n    this.destroyed = false;\n    this.rendererType = 'svg';\n  }\n\n  extendPrototype([SVGRendererBase], SVGRenderer);\n\n  SVGRenderer.prototype.createComp = function (data) {\n    return new SVGCompElement(data, this.globalData, this);\n  };\n\n  function ShapeTransformManager() {\n    this.sequences = {};\n    this.sequenceList = [];\n    this.transform_key_count = 0;\n  }\n\n  ShapeTransformManager.prototype = {\n    addTransformSequence: function addTransformSequence(transforms) {\n      var i;\n      var len = transforms.length;\n      var key = '_';\n\n      for (i = 0; i < len; i += 1) {\n        key += transforms[i].transform.key + '_';\n      }\n\n      var sequence = this.sequences[key];\n\n      if (!sequence) {\n        sequence = {\n          transforms: [].concat(transforms),\n          finalTransform: new Matrix(),\n          _mdf: false\n        };\n        this.sequences[key] = sequence;\n        this.sequenceList.push(sequence);\n      }\n\n      return sequence;\n    },\n    processSequence: function processSequence(sequence, isFirstFrame) {\n      var i = 0;\n      var len = sequence.transforms.length;\n      var _mdf = isFirstFrame;\n\n      while (i < len && !isFirstFrame) {\n        if (sequence.transforms[i].transform.mProps._mdf) {\n          _mdf = true;\n          break;\n        }\n\n        i += 1;\n      }\n\n      if (_mdf) {\n        sequence.finalTransform.reset();\n\n        for (i = len - 1; i >= 0; i -= 1) {\n          sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n        }\n      }\n\n      sequence._mdf = _mdf;\n    },\n    processSequences: function processSequences(isFirstFrame) {\n      var i;\n      var len = this.sequenceList.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.processSequence(this.sequenceList[i], isFirstFrame);\n      }\n    },\n    getNewKey: function getNewKey() {\n      this.transform_key_count += 1;\n      return '_' + this.transform_key_count;\n    }\n  };\n\n  var lumaLoader = function lumaLoader() {\n    var id = '__lottie_element_luma_buffer';\n    var lumaBuffer = null;\n    var lumaBufferCtx = null;\n    var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n    // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n    // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n    // Naming it solution 2 to mark the extra comment lines.\n\n    /*\r\n    var svgString = [\r\n      '<svg xmlns=\"http://www.w3.org/2000/svg\">',\r\n      '<filter id=\"' + id + '\">',\r\n      '<feColorMatrix type=\"matrix\" color-interpolation-filters=\"sRGB\" values=\"',\r\n      '0.3, 0.3, 0.3, 0, 0, ',\r\n      '0.3, 0.3, 0.3, 0, 0, ',\r\n      '0.3, 0.3, 0.3, 0, 0, ',\r\n      '0.3, 0.3, 0.3, 0, 0',\r\n      '\"/>',\r\n      '</filter>',\r\n      '</svg>',\r\n    ].join('');\r\n    var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n    var url = URL.createObjectURL(blob);\r\n    */\n\n    function createLumaSvgFilter() {\n      var _svg = createNS('svg');\n\n      var fil = createNS('filter');\n      var matrix = createNS('feColorMatrix');\n      fil.setAttribute('id', id);\n      matrix.setAttribute('type', 'matrix');\n      matrix.setAttribute('color-interpolation-filters', 'sRGB');\n      matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n      fil.appendChild(matrix);\n\n      _svg.appendChild(fil);\n\n      _svg.setAttribute('id', id + '_svg');\n\n      if (featureSupport.svgLumaHidden) {\n        _svg.style.display = 'none';\n      }\n\n      return _svg;\n    }\n\n    function loadLuma() {\n      if (!lumaBuffer) {\n        svg = createLumaSvgFilter();\n        document.body.appendChild(svg);\n        lumaBuffer = createTag('canvas');\n        lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n        lumaBufferCtx.filter = 'url(#' + id + ')';\n        lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n        lumaBufferCtx.fillRect(0, 0, 1, 1);\n      }\n    }\n\n    function getLuma(canvas) {\n      if (!lumaBuffer) {\n        loadLuma();\n      }\n\n      lumaBuffer.width = canvas.width;\n      lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n      lumaBufferCtx.filter = 'url(#' + id + ')';\n      return lumaBuffer;\n    }\n\n    return {\n      load: loadLuma,\n      get: getLuma\n    };\n  };\n\n  function createCanvas(width, height) {\n    if (featureSupport.offscreenCanvas) {\n      return new OffscreenCanvas(width, height);\n    }\n\n    var canvas = createTag('canvas');\n    canvas.width = width;\n    canvas.height = height;\n    return canvas;\n  }\n\n  var assetLoader = function () {\n    return {\n      loadLumaCanvas: lumaLoader.load,\n      getLumaCanvas: lumaLoader.get,\n      createCanvas: createCanvas\n    };\n  }();\n\n  var registeredEffects = {};\n\n  function CVEffects(elem) {\n    var i;\n    var len = elem.data.ef ? elem.data.ef.length : 0;\n    this.filters = [];\n    var filterManager;\n\n    for (i = 0; i < len; i += 1) {\n      filterManager = null;\n      var type = elem.data.ef[i].ty;\n\n      if (registeredEffects[type]) {\n        var Effect = registeredEffects[type].effect;\n        filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n      }\n\n      if (filterManager) {\n        this.filters.push(filterManager);\n      }\n    }\n\n    if (this.filters.length) {\n      elem.addRenderableComponent(this);\n    }\n  }\n\n  CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n    var i;\n    var len = this.filters.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.filters[i].renderFrame(_isFirstFrame);\n    }\n  };\n\n  CVEffects.prototype.getEffects = function (type) {\n    var i;\n    var len = this.filters.length;\n    var effects = [];\n\n    for (i = 0; i < len; i += 1) {\n      if (this.filters[i].type === type) {\n        effects.push(this.filters[i]);\n      }\n    }\n\n    return effects;\n  };\n\n  function registerEffect(id, effect) {\n    registeredEffects[id] = {\n      effect: effect\n    };\n  }\n\n  function CVMaskElement(data, element) {\n    this.data = data;\n    this.element = element;\n    this.masksProperties = this.data.masksProperties || [];\n    this.viewData = createSizedArray(this.masksProperties.length);\n    var i;\n    var len = this.masksProperties.length;\n    var hasMasks = false;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.masksProperties[i].mode !== 'n') {\n        hasMasks = true;\n      }\n\n      this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n    }\n\n    this.hasMasks = hasMasks;\n\n    if (hasMasks) {\n      this.element.addRenderableComponent(this);\n    }\n  }\n\n  CVMaskElement.prototype.renderFrame = function () {\n    if (!this.hasMasks) {\n      return;\n    }\n\n    var transform = this.element.finalTransform.mat;\n    var ctx = this.element.canvasContext;\n    var i;\n    var len = this.masksProperties.length;\n    var pt;\n    var pts;\n    var data;\n    ctx.beginPath();\n\n    for (i = 0; i < len; i += 1) {\n      if (this.masksProperties[i].mode !== 'n') {\n        if (this.masksProperties[i].inv) {\n          ctx.moveTo(0, 0);\n          ctx.lineTo(this.element.globalData.compSize.w, 0);\n          ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n          ctx.lineTo(0, this.element.globalData.compSize.h);\n          ctx.lineTo(0, 0);\n        }\n\n        data = this.viewData[i].v;\n        pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n        ctx.moveTo(pt[0], pt[1]);\n        var j;\n        var jLen = data._length;\n\n        for (j = 1; j < jLen; j += 1) {\n          pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n          ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n        }\n\n        pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n        ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n      }\n    }\n\n    this.element.globalData.renderer.save(true);\n    ctx.clip();\n  };\n\n  CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n  CVMaskElement.prototype.destroy = function () {\n    this.element = null;\n  };\n\n  function CVBaseElement() {}\n\n  var operationsMap = {\n    1: 'source-in',\n    2: 'source-out',\n    3: 'source-in',\n    4: 'source-out'\n  };\n  CVBaseElement.prototype = {\n    createElements: function createElements() {},\n    initRendererElement: function initRendererElement() {},\n    createContainerElements: function createContainerElements() {\n      // If the layer is masked we will use two buffers to store each different states of the drawing\n      // This solution is not ideal for several reason. But unfortunately, because of the recursive\n      // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n      // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n      // It might be challenging because the layer most likely is transformed in some way\n      if (this.data.tt >= 1) {\n        this.buffers = [];\n        var canvasContext = this.globalData.canvasContext;\n        var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n        this.buffers.push(bufferCanvas);\n        var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n        this.buffers.push(bufferCanvas2);\n\n        if (this.data.tt >= 3 && !document._isProxy) {\n          assetLoader.loadLumaCanvas();\n        }\n      }\n\n      this.canvasContext = this.globalData.canvasContext;\n      this.transformCanvas = this.globalData.transformCanvas;\n      this.renderableEffectsManager = new CVEffects(this);\n      this.searchEffectTransforms();\n    },\n    createContent: function createContent() {},\n    setBlendMode: function setBlendMode() {\n      var globalData = this.globalData;\n\n      if (globalData.blendMode !== this.data.bm) {\n        globalData.blendMode = this.data.bm;\n        var blendModeValue = getBlendMode(this.data.bm);\n        globalData.canvasContext.globalCompositeOperation = blendModeValue;\n      }\n    },\n    createRenderableComponents: function createRenderableComponents() {\n      this.maskManager = new CVMaskElement(this.data, this);\n      this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n    },\n    hideElement: function hideElement() {\n      if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n        this.hidden = true;\n      }\n    },\n    showElement: function showElement() {\n      if (this.isInRange && !this.isTransparent) {\n        this.hidden = false;\n        this._isFirstFrame = true;\n        this.maskManager._isFirstFrame = true;\n      }\n    },\n    clearCanvas: function clearCanvas(canvasContext) {\n      canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n    },\n    prepareLayer: function prepareLayer() {\n      if (this.data.tt >= 1) {\n        var buffer = this.buffers[0];\n        var bufferCtx = buffer.getContext('2d');\n        this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n        bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n        // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n        this.currentTransform = this.canvasContext.getTransform();\n        this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n        this.clearCanvas(this.canvasContext);\n        this.canvasContext.setTransform(this.currentTransform);\n      }\n    },\n    exitLayer: function exitLayer() {\n      if (this.data.tt >= 1) {\n        var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n        // that only contains the content of this layer\n        // (if it is a composition, it also includes the nested layers)\n\n        var bufferCtx = buffer.getContext('2d');\n        this.clearCanvas(bufferCtx);\n        bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n        this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n        this.clearCanvas(this.canvasContext);\n        this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n        var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n        mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n        this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n        // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n        if (this.data.tt >= 3 && !document._isProxy) {\n          // We copy the painted mask to a buffer that has a color matrix filter applied to it\n          // that applies the rgb values to the alpha channel\n          var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n          var lumaBufferCtx = lumaBuffer.getContext('2d');\n          lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n          this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n          this.canvasContext.drawImage(lumaBuffer, 0, 0);\n        }\n\n        this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n        this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n        // We use destination-over to draw the global drawing below the current layer\n\n        this.canvasContext.globalCompositeOperation = 'destination-over';\n        this.canvasContext.drawImage(this.buffers[0], 0, 0);\n        this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n        this.canvasContext.globalCompositeOperation = 'source-over';\n      }\n    },\n    renderFrame: function renderFrame(forceRender) {\n      if (this.hidden || this.data.hd) {\n        return;\n      }\n\n      if (this.data.td === 1 && !forceRender) {\n        return;\n      }\n\n      this.renderTransform();\n      this.renderRenderable();\n      this.renderLocalTransform();\n      this.setBlendMode();\n      var forceRealStack = this.data.ty === 0;\n      this.prepareLayer();\n      this.globalData.renderer.save(forceRealStack);\n      this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n      this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n      this.renderInnerContent();\n      this.globalData.renderer.restore(forceRealStack);\n      this.exitLayer();\n\n      if (this.maskManager.hasMasks) {\n        this.globalData.renderer.restore(true);\n      }\n\n      if (this._isFirstFrame) {\n        this._isFirstFrame = false;\n      }\n    },\n    destroy: function destroy() {\n      this.canvasContext = null;\n      this.data = null;\n      this.globalData = null;\n      this.maskManager.destroy();\n    },\n    mHelper: new Matrix()\n  };\n  CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n  CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n  function CVShapeData(element, data, styles, transformsManager) {\n    this.styledShapes = [];\n    this.tr = [0, 0, 0, 0, 0, 0];\n    var ty = 4;\n\n    if (data.ty === 'rc') {\n      ty = 5;\n    } else if (data.ty === 'el') {\n      ty = 6;\n    } else if (data.ty === 'sr') {\n      ty = 7;\n    }\n\n    this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n    var i;\n    var len = styles.length;\n    var styledShape;\n\n    for (i = 0; i < len; i += 1) {\n      if (!styles[i].closed) {\n        styledShape = {\n          transforms: transformsManager.addTransformSequence(styles[i].transforms),\n          trNodes: []\n        };\n        this.styledShapes.push(styledShape);\n        styles[i].elements.push(styledShape);\n      }\n    }\n  }\n\n  CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n  function CVShapeElement(data, globalData, comp) {\n    this.shapes = [];\n    this.shapesData = data.shapes;\n    this.stylesList = [];\n    this.itemsData = [];\n    this.prevViewData = [];\n    this.shapeModifiers = [];\n    this.processedElements = [];\n    this.transformsManager = new ShapeTransformManager();\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n  CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n  CVShapeElement.prototype.transformHelper = {\n    opacity: 1,\n    _opMdf: false\n  };\n  CVShapeElement.prototype.dashResetter = [];\n\n  CVShapeElement.prototype.createContent = function () {\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n  };\n\n  CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n    var styleElem = {\n      data: data,\n      type: data.ty,\n      preTransforms: this.transformsManager.addTransformSequence(transforms),\n      transforms: [],\n      elements: [],\n      closed: data.hd === true\n    };\n    var elementData = {};\n\n    if (data.ty === 'fl' || data.ty === 'st') {\n      elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n      if (!elementData.c.k) {\n        styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n      }\n    } else if (data.ty === 'gf' || data.ty === 'gs') {\n      elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n      elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n      elementData.h = PropertyFactory.getProp(this, data.h || {\n        k: 0\n      }, 0, 0.01, this);\n      elementData.a = PropertyFactory.getProp(this, data.a || {\n        k: 0\n      }, 0, degToRads, this);\n      elementData.g = new GradientProperty(this, data.g, this);\n    }\n\n    elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n    if (data.ty === 'st' || data.ty === 'gs') {\n      styleElem.lc = lineCapEnum[data.lc || 2];\n      styleElem.lj = lineJoinEnum[data.lj || 2];\n\n      if (data.lj == 1) {\n        // eslint-disable-line eqeqeq\n        styleElem.ml = data.ml;\n      }\n\n      elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n      if (!elementData.w.k) {\n        styleElem.wi = elementData.w.v;\n      }\n\n      if (data.d) {\n        var d = new DashProperty(this, data.d, 'canvas', this);\n        elementData.d = d;\n\n        if (!elementData.d.k) {\n          styleElem.da = elementData.d.dashArray;\n          styleElem[\"do\"] = elementData.d.dashoffset[0];\n        }\n      }\n    } else {\n      styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n    }\n\n    this.stylesList.push(styleElem);\n    elementData.style = styleElem;\n    return elementData;\n  };\n\n  CVShapeElement.prototype.createGroupElement = function () {\n    var elementData = {\n      it: [],\n      prevViewData: []\n    };\n    return elementData;\n  };\n\n  CVShapeElement.prototype.createTransformElement = function (data) {\n    var elementData = {\n      transform: {\n        opacity: 1,\n        _opMdf: false,\n        key: this.transformsManager.getNewKey(),\n        op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n        mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n      }\n    };\n    return elementData;\n  };\n\n  CVShapeElement.prototype.createShapeElement = function (data) {\n    var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n    this.shapes.push(elementData);\n    this.addShapeToModifiers(elementData);\n    return elementData;\n  };\n\n  CVShapeElement.prototype.reloadShapes = function () {\n    this._isFirstFrame = true;\n    var i;\n    var len = this.itemsData.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.prevViewData[i] = this.itemsData[i];\n    }\n\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n    len = this.dynamicProperties.length;\n\n    for (i = 0; i < len; i += 1) {\n      this.dynamicProperties[i].getValue();\n    }\n\n    this.renderModifiers();\n    this.transformsManager.processSequences(this._isFirstFrame);\n  };\n\n  CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n    var i;\n    var len = this.stylesList.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (!this.stylesList[i].closed) {\n        this.stylesList[i].transforms.push(transform);\n      }\n    }\n  };\n\n  CVShapeElement.prototype.removeTransformFromStyleList = function () {\n    var i;\n    var len = this.stylesList.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (!this.stylesList[i].closed) {\n        this.stylesList[i].transforms.pop();\n      }\n    }\n  };\n\n  CVShapeElement.prototype.closeStyles = function (styles) {\n    var i;\n    var len = styles.length;\n\n    for (i = 0; i < len; i += 1) {\n      styles[i].closed = true;\n    }\n  };\n\n  CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n    var i;\n    var len = arr.length - 1;\n    var j;\n    var jLen;\n    var ownStyles = [];\n    var ownModifiers = [];\n    var processedPos;\n    var modifier;\n    var currentTransform;\n    var ownTransforms = [].concat(transforms);\n\n    for (i = len; i >= 0; i -= 1) {\n      processedPos = this.searchProcessedElement(arr[i]);\n\n      if (!processedPos) {\n        arr[i]._shouldRender = shouldRender;\n      } else {\n        itemsData[i] = prevViewData[processedPos - 1];\n      }\n\n      if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n        if (!processedPos) {\n          itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n        } else {\n          itemsData[i].style.closed = false;\n        }\n\n        ownStyles.push(itemsData[i].style);\n      } else if (arr[i].ty === 'gr') {\n        if (!processedPos) {\n          itemsData[i] = this.createGroupElement(arr[i]);\n        } else {\n          jLen = itemsData[i].it.length;\n\n          for (j = 0; j < jLen; j += 1) {\n            itemsData[i].prevViewData[j] = itemsData[i].it[j];\n          }\n        }\n\n        this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n      } else if (arr[i].ty === 'tr') {\n        if (!processedPos) {\n          currentTransform = this.createTransformElement(arr[i]);\n          itemsData[i] = currentTransform;\n        }\n\n        ownTransforms.push(itemsData[i]);\n        this.addTransformToStyleList(itemsData[i]);\n      } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n        if (!processedPos) {\n          itemsData[i] = this.createShapeElement(arr[i]);\n        }\n      } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          modifier.init(this, arr[i]);\n          itemsData[i] = modifier;\n          this.shapeModifiers.push(modifier);\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = false;\n        }\n\n        ownModifiers.push(modifier);\n      } else if (arr[i].ty === 'rp') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          itemsData[i] = modifier;\n          modifier.init(this, arr, i, itemsData);\n          this.shapeModifiers.push(modifier);\n          shouldRender = false;\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = true;\n        }\n\n        ownModifiers.push(modifier);\n      }\n\n      this.addProcessedElement(arr[i], i + 1);\n    }\n\n    this.removeTransformFromStyleList();\n    this.closeStyles(ownStyles);\n    len = ownModifiers.length;\n\n    for (i = 0; i < len; i += 1) {\n      ownModifiers[i].closed = true;\n    }\n  };\n\n  CVShapeElement.prototype.renderInnerContent = function () {\n    this.transformHelper.opacity = 1;\n    this.transformHelper._opMdf = false;\n    this.renderModifiers();\n    this.transformsManager.processSequences(this._isFirstFrame);\n    this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n  };\n\n  CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n    if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n      groupTransform.opacity = parentTransform.opacity;\n      groupTransform.opacity *= groupTransform.op.v;\n      groupTransform._opMdf = true;\n    }\n  };\n\n  CVShapeElement.prototype.drawLayer = function () {\n    var i;\n    var len = this.stylesList.length;\n    var j;\n    var jLen;\n    var k;\n    var kLen;\n    var elems;\n    var nodes;\n    var renderer = this.globalData.renderer;\n    var ctx = this.globalData.canvasContext;\n    var type;\n    var currentStyle;\n\n    for (i = 0; i < len; i += 1) {\n      currentStyle = this.stylesList[i];\n      type = currentStyle.type; // Skipping style when\n      // Stroke width equals 0\n      // style should not be rendered (extra unused repeaters)\n      // current opacity equals 0\n      // global opacity equals 0\n\n      if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n        renderer.save();\n        elems = currentStyle.elements;\n\n        if (type === 'st' || type === 'gs') {\n          renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n          renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n          renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n          renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n          renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n        } else {\n          renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n        }\n\n        renderer.ctxOpacity(currentStyle.coOp);\n\n        if (type !== 'st' && type !== 'gs') {\n          ctx.beginPath();\n        }\n\n        renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n        jLen = elems.length;\n\n        for (j = 0; j < jLen; j += 1) {\n          if (type === 'st' || type === 'gs') {\n            ctx.beginPath();\n\n            if (currentStyle.da) {\n              ctx.setLineDash(currentStyle.da);\n              ctx.lineDashOffset = currentStyle[\"do\"];\n            }\n          }\n\n          nodes = elems[j].trNodes;\n          kLen = nodes.length;\n\n          for (k = 0; k < kLen; k += 1) {\n            if (nodes[k].t === 'm') {\n              ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n            } else if (nodes[k].t === 'c') {\n              ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n            } else {\n              ctx.closePath();\n            }\n          }\n\n          if (type === 'st' || type === 'gs') {\n            // ctx.stroke();\n            renderer.ctxStroke();\n\n            if (currentStyle.da) {\n              ctx.setLineDash(this.dashResetter);\n            }\n          }\n        }\n\n        if (type !== 'st' && type !== 'gs') {\n          // ctx.fill(currentStyle.r);\n          this.globalData.renderer.ctxFill(currentStyle.r);\n        }\n\n        renderer.restore();\n      }\n    }\n  };\n\n  CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n    var i;\n    var len = items.length - 1;\n    var groupTransform;\n    groupTransform = parentTransform;\n\n    for (i = len; i >= 0; i -= 1) {\n      if (items[i].ty === 'tr') {\n        groupTransform = data[i].transform;\n        this.renderShapeTransform(parentTransform, groupTransform);\n      } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n        this.renderPath(items[i], data[i]);\n      } else if (items[i].ty === 'fl') {\n        this.renderFill(items[i], data[i], groupTransform);\n      } else if (items[i].ty === 'st') {\n        this.renderStroke(items[i], data[i], groupTransform);\n      } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n        this.renderGradientFill(items[i], data[i], groupTransform);\n      } else if (items[i].ty === 'gr') {\n        this.renderShape(groupTransform, items[i].it, data[i].it);\n      } else if (items[i].ty === 'tm') {//\n      }\n    }\n\n    if (isMain) {\n      this.drawLayer();\n    }\n  };\n\n  CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n    if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n      var shapeNodes = styledShape.trNodes;\n      var paths = shape.paths;\n      var i;\n      var len;\n      var j;\n      var jLen = paths._length;\n      shapeNodes.length = 0;\n      var groupTransformMat = styledShape.transforms.finalTransform;\n\n      for (j = 0; j < jLen; j += 1) {\n        var pathNodes = paths.shapes[j];\n\n        if (pathNodes && pathNodes.v) {\n          len = pathNodes._length;\n\n          for (i = 1; i < len; i += 1) {\n            if (i === 1) {\n              shapeNodes.push({\n                t: 'm',\n                p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n              });\n            }\n\n            shapeNodes.push({\n              t: 'c',\n              pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n            });\n          }\n\n          if (len === 1) {\n            shapeNodes.push({\n              t: 'm',\n              p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n            });\n          }\n\n          if (pathNodes.c && len) {\n            shapeNodes.push({\n              t: 'c',\n              pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n            });\n            shapeNodes.push({\n              t: 'z'\n            });\n          }\n        }\n      }\n\n      styledShape.trNodes = shapeNodes;\n    }\n  };\n\n  CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n    if (pathData.hd !== true && pathData._shouldRender) {\n      var i;\n      var len = itemData.styledShapes.length;\n\n      for (i = 0; i < len; i += 1) {\n        this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n      }\n    }\n  };\n\n  CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n    var styleElem = itemData.style;\n\n    if (itemData.c._mdf || this._isFirstFrame) {\n      styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n    }\n\n    if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n      styleElem.coOp = itemData.o.v * groupTransform.opacity;\n    }\n  };\n\n  CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n    var styleElem = itemData.style;\n    var grd;\n\n    if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n      var ctx = this.globalData.canvasContext;\n      var pt1 = itemData.s.v;\n      var pt2 = itemData.e.v;\n\n      if (styleData.t === 1) {\n        grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n      } else {\n        var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n        var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n        var percent = itemData.h.v;\n\n        if (percent >= 1) {\n          percent = 0.99;\n        } else if (percent <= -1) {\n          percent = -0.99;\n        }\n\n        var dist = rad * percent;\n        var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n        var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n        grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n      }\n\n      var i;\n      var len = styleData.g.p;\n      var cValues = itemData.g.c;\n      var opacity = 1;\n\n      for (i = 0; i < len; i += 1) {\n        if (itemData.g._hasOpacity && itemData.g._collapsable) {\n          opacity = itemData.g.o[i * 2 + 1];\n        }\n\n        grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n      }\n\n      styleElem.grd = grd;\n    }\n\n    styleElem.coOp = itemData.o.v * groupTransform.opacity;\n  };\n\n  CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n    var styleElem = itemData.style;\n    var d = itemData.d;\n\n    if (d && (d._mdf || this._isFirstFrame)) {\n      styleElem.da = d.dashArray;\n      styleElem[\"do\"] = d.dashoffset[0];\n    }\n\n    if (itemData.c._mdf || this._isFirstFrame) {\n      styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n    }\n\n    if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n      styleElem.coOp = itemData.o.v * groupTransform.opacity;\n    }\n\n    if (itemData.w._mdf || this._isFirstFrame) {\n      styleElem.wi = itemData.w.v;\n    }\n  };\n\n  CVShapeElement.prototype.destroy = function () {\n    this.shapesData = null;\n    this.globalData = null;\n    this.canvasContext = null;\n    this.stylesList.length = 0;\n    this.itemsData.length = 0;\n  };\n\n  function CVTextElement(data, globalData, comp) {\n    this.textSpans = [];\n    this.yOffset = 0;\n    this.fillColorAnim = false;\n    this.strokeColorAnim = false;\n    this.strokeWidthAnim = false;\n    this.stroke = false;\n    this.fill = false;\n    this.justifyOffset = 0;\n    this.currentRender = null;\n    this.renderType = 'canvas';\n    this.values = {\n      fill: 'rgba(0,0,0,0)',\n      stroke: 'rgba(0,0,0,0)',\n      sWidth: 0,\n      fValue: ''\n    };\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n  CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n  CVTextElement.prototype.buildNewText = function () {\n    var documentData = this.textProperty.currentData;\n    this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n    var hasFill = false;\n\n    if (documentData.fc) {\n      hasFill = true;\n      this.values.fill = this.buildColor(documentData.fc);\n    } else {\n      this.values.fill = 'rgba(0,0,0,0)';\n    }\n\n    this.fill = hasFill;\n    var hasStroke = false;\n\n    if (documentData.sc) {\n      hasStroke = true;\n      this.values.stroke = this.buildColor(documentData.sc);\n      this.values.sWidth = documentData.sw;\n    }\n\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n    var i;\n    var len;\n    var letters = documentData.l;\n    var matrixHelper = this.mHelper;\n    this.stroke = hasStroke;\n    this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n    len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n    var charData;\n    var shapeData;\n    var k;\n    var kLen;\n    var shapes;\n    var j;\n    var jLen;\n    var pathNodes;\n    var commands;\n    var pathArr;\n    var singleShape = this.data.singleShape;\n    var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n    var xPos = 0;\n    var yPos = 0;\n    var firstLine = true;\n    var cnt = 0;\n\n    for (i = 0; i < len; i += 1) {\n      charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n      shapeData = charData && charData.data || {};\n      matrixHelper.reset();\n\n      if (singleShape && letters[i].n) {\n        xPos = -trackingOffset;\n        yPos += documentData.yOffset;\n        yPos += firstLine ? 1 : 0;\n        firstLine = false;\n      }\n\n      shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n      jLen = shapes.length;\n      matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n      if (singleShape) {\n        this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n      }\n\n      commands = createSizedArray(jLen - 1);\n      var commandsCounter = 0;\n\n      for (j = 0; j < jLen; j += 1) {\n        if (shapes[j].ty === 'sh') {\n          kLen = shapes[j].ks.k.i.length;\n          pathNodes = shapes[j].ks.k;\n          pathArr = [];\n\n          for (k = 1; k < kLen; k += 1) {\n            if (k === 1) {\n              pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n            }\n\n            pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n          }\n\n          pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n          commands[commandsCounter] = pathArr;\n          commandsCounter += 1;\n        }\n      }\n\n      if (singleShape) {\n        xPos += letters[i].l;\n        xPos += trackingOffset;\n      }\n\n      if (this.textSpans[cnt]) {\n        this.textSpans[cnt].elem = commands;\n      } else {\n        this.textSpans[cnt] = {\n          elem: commands\n        };\n      }\n\n      cnt += 1;\n    }\n  };\n\n  CVTextElement.prototype.renderInnerContent = function () {\n    this.validateText();\n    var ctx = this.canvasContext;\n    ctx.font = this.values.fValue;\n    this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n    this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n    this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n    if (!this.data.singleShape) {\n      this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n    }\n\n    var i;\n    var len;\n    var j;\n    var jLen;\n    var k;\n    var kLen;\n    var renderedLetters = this.textAnimator.renderedLetters;\n    var letters = this.textProperty.currentData.l;\n    len = letters.length;\n    var renderedLetter;\n    var lastFill = null;\n    var lastStroke = null;\n    var lastStrokeW = null;\n    var commands;\n    var pathArr;\n    var renderer = this.globalData.renderer;\n\n    for (i = 0; i < len; i += 1) {\n      if (!letters[i].n) {\n        renderedLetter = renderedLetters[i];\n\n        if (renderedLetter) {\n          renderer.save();\n          renderer.ctxTransform(renderedLetter.p);\n          renderer.ctxOpacity(renderedLetter.o);\n        }\n\n        if (this.fill) {\n          if (renderedLetter && renderedLetter.fc) {\n            if (lastFill !== renderedLetter.fc) {\n              renderer.ctxFillStyle(renderedLetter.fc);\n              lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n            }\n          } else if (lastFill !== this.values.fill) {\n            lastFill = this.values.fill;\n            renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n          }\n\n          commands = this.textSpans[i].elem;\n          jLen = commands.length;\n          this.globalData.canvasContext.beginPath();\n\n          for (j = 0; j < jLen; j += 1) {\n            pathArr = commands[j];\n            kLen = pathArr.length;\n            this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n            for (k = 2; k < kLen; k += 6) {\n              this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n            }\n          }\n\n          this.globalData.canvasContext.closePath();\n          renderer.ctxFill(); // this.globalData.canvasContext.fill();\n          /// ctx.fillText(this.textSpans[i].val,0,0);\n        }\n\n        if (this.stroke) {\n          if (renderedLetter && renderedLetter.sw) {\n            if (lastStrokeW !== renderedLetter.sw) {\n              lastStrokeW = renderedLetter.sw;\n              renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n            }\n          } else if (lastStrokeW !== this.values.sWidth) {\n            lastStrokeW = this.values.sWidth;\n            renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n          }\n\n          if (renderedLetter && renderedLetter.sc) {\n            if (lastStroke !== renderedLetter.sc) {\n              lastStroke = renderedLetter.sc;\n              renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n            }\n          } else if (lastStroke !== this.values.stroke) {\n            lastStroke = this.values.stroke;\n            renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n          }\n\n          commands = this.textSpans[i].elem;\n          jLen = commands.length;\n          this.globalData.canvasContext.beginPath();\n\n          for (j = 0; j < jLen; j += 1) {\n            pathArr = commands[j];\n            kLen = pathArr.length;\n            this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n            for (k = 2; k < kLen; k += 6) {\n              this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n            }\n          }\n\n          this.globalData.canvasContext.closePath();\n          renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n          /// ctx.strokeText(letters[i].val,0,0);\n        }\n\n        if (renderedLetter) {\n          this.globalData.renderer.restore();\n        }\n      }\n    }\n  };\n\n  function CVImageElement(data, globalData, comp) {\n    this.assetData = globalData.getAssetData(data.refId);\n    this.img = globalData.imageLoader.getAsset(this.assetData);\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n  CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n  CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n  CVImageElement.prototype.createContent = function () {\n    if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n      var canvas = createTag('canvas');\n      canvas.width = this.assetData.w;\n      canvas.height = this.assetData.h;\n      var ctx = canvas.getContext('2d');\n      var imgW = this.img.width;\n      var imgH = this.img.height;\n      var imgRel = imgW / imgH;\n      var canvasRel = this.assetData.w / this.assetData.h;\n      var widthCrop;\n      var heightCrop;\n      var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n      if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n        heightCrop = imgH;\n        widthCrop = heightCrop * canvasRel;\n      } else {\n        widthCrop = imgW;\n        heightCrop = widthCrop / canvasRel;\n      }\n\n      ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n      this.img = canvas;\n    }\n  };\n\n  CVImageElement.prototype.renderInnerContent = function () {\n    this.canvasContext.drawImage(this.img, 0, 0);\n  };\n\n  CVImageElement.prototype.destroy = function () {\n    this.img = null;\n  };\n\n  function CVSolidElement(data, globalData, comp) {\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n  CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n  CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n  CVSolidElement.prototype.renderInnerContent = function () {\n    // var ctx = this.canvasContext;\n    this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n    this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n    //\n  };\n\n  function CanvasRendererBase() {}\n\n  extendPrototype([BaseRenderer], CanvasRendererBase);\n\n  CanvasRendererBase.prototype.createShape = function (data) {\n    return new CVShapeElement(data, this.globalData, this);\n  };\n\n  CanvasRendererBase.prototype.createText = function (data) {\n    return new CVTextElement(data, this.globalData, this);\n  };\n\n  CanvasRendererBase.prototype.createImage = function (data) {\n    return new CVImageElement(data, this.globalData, this);\n  };\n\n  CanvasRendererBase.prototype.createSolid = function (data) {\n    return new CVSolidElement(data, this.globalData, this);\n  };\n\n  CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n  CanvasRendererBase.prototype.ctxTransform = function (props) {\n    if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n      return;\n    }\n\n    this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n  };\n\n  CanvasRendererBase.prototype.ctxOpacity = function (op) {\n    this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n  };\n\n  CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n    this.canvasContext.fillStyle = value;\n  };\n\n  CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n    this.canvasContext.strokeStyle = value;\n  };\n\n  CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n    this.canvasContext.lineWidth = value;\n  };\n\n  CanvasRendererBase.prototype.ctxLineCap = function (value) {\n    this.canvasContext.lineCap = value;\n  };\n\n  CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n    this.canvasContext.lineJoin = value;\n  };\n\n  CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n    this.canvasContext.miterLimit = value;\n  };\n\n  CanvasRendererBase.prototype.ctxFill = function (rule) {\n    this.canvasContext.fill(rule);\n  };\n\n  CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n    this.canvasContext.fillRect(x, y, w, h);\n  };\n\n  CanvasRendererBase.prototype.ctxStroke = function () {\n    this.canvasContext.stroke();\n  };\n\n  CanvasRendererBase.prototype.reset = function () {\n    if (!this.renderConfig.clearCanvas) {\n      this.canvasContext.restore();\n      return;\n    }\n\n    this.contextData.reset();\n  };\n\n  CanvasRendererBase.prototype.save = function () {\n    this.canvasContext.save();\n  };\n\n  CanvasRendererBase.prototype.restore = function (actionFlag) {\n    if (!this.renderConfig.clearCanvas) {\n      this.canvasContext.restore();\n      return;\n    }\n\n    if (actionFlag) {\n      this.globalData.blendMode = 'source-over';\n    }\n\n    this.contextData.restore(actionFlag);\n  };\n\n  CanvasRendererBase.prototype.configAnimation = function (animData) {\n    if (this.animationItem.wrapper) {\n      this.animationItem.container = createTag('canvas');\n      var containerStyle = this.animationItem.container.style;\n      containerStyle.width = '100%';\n      containerStyle.height = '100%';\n      var origin = '0px 0px 0px';\n      containerStyle.transformOrigin = origin;\n      containerStyle.mozTransformOrigin = origin;\n      containerStyle.webkitTransformOrigin = origin;\n      containerStyle['-webkit-transform'] = origin;\n      containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n      this.animationItem.wrapper.appendChild(this.animationItem.container);\n      this.canvasContext = this.animationItem.container.getContext('2d');\n\n      if (this.renderConfig.className) {\n        this.animationItem.container.setAttribute('class', this.renderConfig.className);\n      }\n\n      if (this.renderConfig.id) {\n        this.animationItem.container.setAttribute('id', this.renderConfig.id);\n      }\n    } else {\n      this.canvasContext = this.renderConfig.context;\n    }\n\n    this.contextData.setContext(this.canvasContext);\n    this.data = animData;\n    this.layers = animData.layers;\n    this.transformCanvas = {\n      w: animData.w,\n      h: animData.h,\n      sx: 0,\n      sy: 0,\n      tx: 0,\n      ty: 0\n    };\n    this.setupGlobalData(animData, document.body);\n    this.globalData.canvasContext = this.canvasContext;\n    this.globalData.renderer = this;\n    this.globalData.isDashed = false;\n    this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n    this.globalData.transformCanvas = this.transformCanvas;\n    this.elements = createSizedArray(animData.layers.length);\n    this.updateContainerSize();\n  };\n\n  CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n    this.reset();\n    var elementWidth;\n    var elementHeight;\n\n    if (width) {\n      elementWidth = width;\n      elementHeight = height;\n      this.canvasContext.canvas.width = elementWidth;\n      this.canvasContext.canvas.height = elementHeight;\n    } else {\n      if (this.animationItem.wrapper && this.animationItem.container) {\n        elementWidth = this.animationItem.wrapper.offsetWidth;\n        elementHeight = this.animationItem.wrapper.offsetHeight;\n      } else {\n        elementWidth = this.canvasContext.canvas.width;\n        elementHeight = this.canvasContext.canvas.height;\n      }\n\n      this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n      this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n    }\n\n    var elementRel;\n    var animationRel;\n\n    if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n      var par = this.renderConfig.preserveAspectRatio.split(' ');\n      var fillType = par[1] || 'meet';\n      var pos = par[0] || 'xMidYMid';\n      var xPos = pos.substr(0, 4);\n      var yPos = pos.substr(4);\n      elementRel = elementWidth / elementHeight;\n      animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n      if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n        this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n        this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n      } else {\n        this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n        this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n      }\n\n      if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n        this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n      } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n        this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n      } else {\n        this.transformCanvas.tx = 0;\n      }\n\n      if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n        this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n      } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n        this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n      } else {\n        this.transformCanvas.ty = 0;\n      }\n    } else if (this.renderConfig.preserveAspectRatio === 'none') {\n      this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n      this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n      this.transformCanvas.tx = 0;\n      this.transformCanvas.ty = 0;\n    } else {\n      this.transformCanvas.sx = this.renderConfig.dpr;\n      this.transformCanvas.sy = this.renderConfig.dpr;\n      this.transformCanvas.tx = 0;\n      this.transformCanvas.ty = 0;\n    }\n\n    this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n    /* var i, len = this.elements.length;\r\n      for(i=0;i<len;i+=1){\r\n          if(this.elements[i] && this.elements[i].data.ty === 0){\r\n              this.elements[i].resize(this.globalData.transformCanvas);\r\n          }\r\n      } */\n\n    this.ctxTransform(this.transformCanvas.props);\n    this.canvasContext.beginPath();\n    this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n    this.canvasContext.closePath();\n    this.canvasContext.clip();\n    this.renderFrame(this.renderedFrame, true);\n  };\n\n  CanvasRendererBase.prototype.destroy = function () {\n    if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\n      this.animationItem.wrapper.innerText = '';\n    }\n\n    var i;\n    var len = this.layers ? this.layers.length : 0;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.elements[i] && this.elements[i].destroy) {\n        this.elements[i].destroy();\n      }\n    }\n\n    this.elements.length = 0;\n    this.globalData.canvasContext = null;\n    this.animationItem.container = null;\n    this.destroyed = true;\n  };\n\n  CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n    if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n      return;\n    }\n\n    this.renderedFrame = num;\n    this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n    this.globalData.frameId += 1;\n    this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n    this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n    // console.log('NEW: ',num);\n\n    var i;\n    var len = this.layers.length;\n\n    if (!this.completeLayers) {\n      this.checkLayers(num);\n    }\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].prepareFrame(num - this.layers[i].st);\n      }\n    }\n\n    if (this.globalData._mdf) {\n      if (this.renderConfig.clearCanvas === true) {\n        this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n      } else {\n        this.save();\n      }\n\n      for (i = len - 1; i >= 0; i -= 1) {\n        if (this.completeLayers || this.elements[i]) {\n          this.elements[i].renderFrame();\n        }\n      }\n\n      if (this.renderConfig.clearCanvas !== true) {\n        this.restore();\n      }\n    }\n  };\n\n  CanvasRendererBase.prototype.buildItem = function (pos) {\n    var elements = this.elements;\n\n    if (elements[pos] || this.layers[pos].ty === 99) {\n      return;\n    }\n\n    var element = this.createItem(this.layers[pos], this, this.globalData);\n    elements[pos] = element;\n    element.initExpressions();\n    /* if(this.layers[pos].ty === 0){\r\n          element.resize(this.globalData.transformCanvas);\r\n      } */\n  };\n\n  CanvasRendererBase.prototype.checkPendingElements = function () {\n    while (this.pendingElements.length) {\n      var element = this.pendingElements.pop();\n      element.checkParenting();\n    }\n  };\n\n  CanvasRendererBase.prototype.hide = function () {\n    this.animationItem.container.style.display = 'none';\n  };\n\n  CanvasRendererBase.prototype.show = function () {\n    this.animationItem.container.style.display = 'block';\n  };\n\n  function CanvasContext() {\n    this.opacity = -1;\n    this.transform = createTypedArray('float32', 16);\n    this.fillStyle = '';\n    this.strokeStyle = '';\n    this.lineWidth = '';\n    this.lineCap = '';\n    this.lineJoin = '';\n    this.miterLimit = '';\n    this.id = Math.random();\n  }\n\n  function CVContextData() {\n    this.stack = [];\n    this.cArrPos = 0;\n    this.cTr = new Matrix();\n    var i;\n    var len = 15;\n\n    for (i = 0; i < len; i += 1) {\n      var canvasContext = new CanvasContext();\n      this.stack[i] = canvasContext;\n    }\n\n    this._length = len;\n    this.nativeContext = null;\n    this.transformMat = new Matrix();\n    this.currentOpacity = 1; //\n\n    this.currentFillStyle = '';\n    this.appliedFillStyle = ''; //\n\n    this.currentStrokeStyle = '';\n    this.appliedStrokeStyle = ''; //\n\n    this.currentLineWidth = '';\n    this.appliedLineWidth = ''; //\n\n    this.currentLineCap = '';\n    this.appliedLineCap = ''; //\n\n    this.currentLineJoin = '';\n    this.appliedLineJoin = ''; //\n\n    this.appliedMiterLimit = '';\n    this.currentMiterLimit = '';\n  }\n\n  CVContextData.prototype.duplicate = function () {\n    var newLength = this._length * 2;\n    var i = 0;\n\n    for (i = this._length; i < newLength; i += 1) {\n      this.stack[i] = new CanvasContext();\n    }\n\n    this._length = newLength;\n  };\n\n  CVContextData.prototype.reset = function () {\n    this.cArrPos = 0;\n    this.cTr.reset();\n    this.stack[this.cArrPos].opacity = 1;\n  };\n\n  CVContextData.prototype.restore = function (forceRestore) {\n    this.cArrPos -= 1;\n    var currentContext = this.stack[this.cArrPos];\n    var transform = currentContext.transform;\n    var i;\n    var arr = this.cTr.props;\n\n    for (i = 0; i < 16; i += 1) {\n      arr[i] = transform[i];\n    }\n\n    if (forceRestore) {\n      this.nativeContext.restore();\n      var prevStack = this.stack[this.cArrPos + 1];\n      this.appliedFillStyle = prevStack.fillStyle;\n      this.appliedStrokeStyle = prevStack.strokeStyle;\n      this.appliedLineWidth = prevStack.lineWidth;\n      this.appliedLineCap = prevStack.lineCap;\n      this.appliedLineJoin = prevStack.lineJoin;\n      this.appliedMiterLimit = prevStack.miterLimit;\n    }\n\n    this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n    if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n      this.nativeContext.globalAlpha = currentContext.opacity;\n      this.currentOpacity = currentContext.opacity;\n    }\n\n    this.currentFillStyle = currentContext.fillStyle;\n    this.currentStrokeStyle = currentContext.strokeStyle;\n    this.currentLineWidth = currentContext.lineWidth;\n    this.currentLineCap = currentContext.lineCap;\n    this.currentLineJoin = currentContext.lineJoin;\n    this.currentMiterLimit = currentContext.miterLimit;\n  };\n\n  CVContextData.prototype.save = function (saveOnNativeFlag) {\n    if (saveOnNativeFlag) {\n      this.nativeContext.save();\n    }\n\n    var props = this.cTr.props;\n\n    if (this._length <= this.cArrPos) {\n      this.duplicate();\n    }\n\n    var currentStack = this.stack[this.cArrPos];\n    var i;\n\n    for (i = 0; i < 16; i += 1) {\n      currentStack.transform[i] = props[i];\n    }\n\n    this.cArrPos += 1;\n    var newStack = this.stack[this.cArrPos];\n    newStack.opacity = currentStack.opacity;\n    newStack.fillStyle = currentStack.fillStyle;\n    newStack.strokeStyle = currentStack.strokeStyle;\n    newStack.lineWidth = currentStack.lineWidth;\n    newStack.lineCap = currentStack.lineCap;\n    newStack.lineJoin = currentStack.lineJoin;\n    newStack.miterLimit = currentStack.miterLimit;\n  };\n\n  CVContextData.prototype.setOpacity = function (value) {\n    this.stack[this.cArrPos].opacity = value;\n  };\n\n  CVContextData.prototype.setContext = function (value) {\n    this.nativeContext = value;\n  };\n\n  CVContextData.prototype.fillStyle = function (value) {\n    if (this.stack[this.cArrPos].fillStyle !== value) {\n      this.currentFillStyle = value;\n      this.stack[this.cArrPos].fillStyle = value;\n    }\n  };\n\n  CVContextData.prototype.strokeStyle = function (value) {\n    if (this.stack[this.cArrPos].strokeStyle !== value) {\n      this.currentStrokeStyle = value;\n      this.stack[this.cArrPos].strokeStyle = value;\n    }\n  };\n\n  CVContextData.prototype.lineWidth = function (value) {\n    if (this.stack[this.cArrPos].lineWidth !== value) {\n      this.currentLineWidth = value;\n      this.stack[this.cArrPos].lineWidth = value;\n    }\n  };\n\n  CVContextData.prototype.lineCap = function (value) {\n    if (this.stack[this.cArrPos].lineCap !== value) {\n      this.currentLineCap = value;\n      this.stack[this.cArrPos].lineCap = value;\n    }\n  };\n\n  CVContextData.prototype.lineJoin = function (value) {\n    if (this.stack[this.cArrPos].lineJoin !== value) {\n      this.currentLineJoin = value;\n      this.stack[this.cArrPos].lineJoin = value;\n    }\n  };\n\n  CVContextData.prototype.miterLimit = function (value) {\n    if (this.stack[this.cArrPos].miterLimit !== value) {\n      this.currentMiterLimit = value;\n      this.stack[this.cArrPos].miterLimit = value;\n    }\n  };\n\n  CVContextData.prototype.transform = function (props) {\n    this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n    var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n    this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n    currentTransform.cloneFromProps(this.transformMat.props);\n    var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n    this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n  };\n\n  CVContextData.prototype.opacity = function (op) {\n    var currentOpacity = this.stack[this.cArrPos].opacity;\n    currentOpacity *= op < 0 ? 0 : op;\n\n    if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n      if (this.currentOpacity !== op) {\n        this.nativeContext.globalAlpha = op;\n        this.currentOpacity = op;\n      }\n\n      this.stack[this.cArrPos].opacity = currentOpacity;\n    }\n  };\n\n  CVContextData.prototype.fill = function (rule) {\n    if (this.appliedFillStyle !== this.currentFillStyle) {\n      this.appliedFillStyle = this.currentFillStyle;\n      this.nativeContext.fillStyle = this.appliedFillStyle;\n    }\n\n    this.nativeContext.fill(rule);\n  };\n\n  CVContextData.prototype.fillRect = function (x, y, w, h) {\n    if (this.appliedFillStyle !== this.currentFillStyle) {\n      this.appliedFillStyle = this.currentFillStyle;\n      this.nativeContext.fillStyle = this.appliedFillStyle;\n    }\n\n    this.nativeContext.fillRect(x, y, w, h);\n  };\n\n  CVContextData.prototype.stroke = function () {\n    if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n      this.appliedStrokeStyle = this.currentStrokeStyle;\n      this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n    }\n\n    if (this.appliedLineWidth !== this.currentLineWidth) {\n      this.appliedLineWidth = this.currentLineWidth;\n      this.nativeContext.lineWidth = this.appliedLineWidth;\n    }\n\n    if (this.appliedLineCap !== this.currentLineCap) {\n      this.appliedLineCap = this.currentLineCap;\n      this.nativeContext.lineCap = this.appliedLineCap;\n    }\n\n    if (this.appliedLineJoin !== this.currentLineJoin) {\n      this.appliedLineJoin = this.currentLineJoin;\n      this.nativeContext.lineJoin = this.appliedLineJoin;\n    }\n\n    if (this.appliedMiterLimit !== this.currentMiterLimit) {\n      this.appliedMiterLimit = this.currentMiterLimit;\n      this.nativeContext.miterLimit = this.appliedMiterLimit;\n    }\n\n    this.nativeContext.stroke();\n  };\n\n  function CVCompElement(data, globalData, comp) {\n    this.completeLayers = false;\n    this.layers = data.layers;\n    this.pendingElements = [];\n    this.elements = createSizedArray(this.layers.length);\n    this.initElement(data, globalData, comp);\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n  }\n\n  extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n  CVCompElement.prototype.renderInnerContent = function () {\n    var ctx = this.canvasContext;\n    ctx.beginPath();\n    ctx.moveTo(0, 0);\n    ctx.lineTo(this.data.w, 0);\n    ctx.lineTo(this.data.w, this.data.h);\n    ctx.lineTo(0, this.data.h);\n    ctx.lineTo(0, 0);\n    ctx.clip();\n    var i;\n    var len = this.layers.length;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].renderFrame();\n      }\n    }\n  };\n\n  CVCompElement.prototype.destroy = function () {\n    var i;\n    var len = this.layers.length;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.elements[i]) {\n        this.elements[i].destroy();\n      }\n    }\n\n    this.layers = null;\n    this.elements = null;\n  };\n\n  CVCompElement.prototype.createComp = function (data) {\n    return new CVCompElement(data, this.globalData, this);\n  };\n\n  function CanvasRenderer(animationItem, config) {\n    this.animationItem = animationItem;\n    this.renderConfig = {\n      clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n      context: config && config.context || null,\n      progressiveLoad: config && config.progressiveLoad || false,\n      preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      contentVisibility: config && config.contentVisibility || 'visible',\n      className: config && config.className || '',\n      id: config && config.id || '',\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n    };\n    this.renderConfig.dpr = config && config.dpr || 1;\n\n    if (this.animationItem.wrapper) {\n      this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n    }\n\n    this.renderedFrame = -1;\n    this.globalData = {\n      frameNum: -1,\n      _mdf: false,\n      renderConfig: this.renderConfig,\n      currentGlobalAlpha: -1\n    };\n    this.contextData = new CVContextData();\n    this.elements = [];\n    this.pendingElements = [];\n    this.transformMat = new Matrix();\n    this.completeLayers = false;\n    this.rendererType = 'canvas';\n\n    if (this.renderConfig.clearCanvas) {\n      this.ctxTransform = this.contextData.transform.bind(this.contextData);\n      this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n      this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n      this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n      this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n      this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n      this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n      this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n      this.ctxFill = this.contextData.fill.bind(this.contextData);\n      this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n      this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n      this.save = this.contextData.save.bind(this.contextData);\n    }\n  }\n\n  extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n  CanvasRenderer.prototype.createComp = function (data) {\n    return new CVCompElement(data, this.globalData, this);\n  };\n\n  function HBaseElement() {}\n\n  HBaseElement.prototype = {\n    checkBlendMode: function checkBlendMode() {},\n    initRendererElement: function initRendererElement() {\n      this.baseElement = createTag(this.data.tg || 'div');\n\n      if (this.data.hasMask) {\n        this.svgElement = createNS('svg');\n        this.layerElement = createNS('g');\n        this.maskedElement = this.layerElement;\n        this.svgElement.appendChild(this.layerElement);\n        this.baseElement.appendChild(this.svgElement);\n      } else {\n        this.layerElement = this.baseElement;\n      }\n\n      styleDiv(this.baseElement);\n    },\n    createContainerElements: function createContainerElements() {\n      this.renderableEffectsManager = new CVEffects(this);\n      this.transformedElement = this.baseElement;\n      this.maskedElement = this.layerElement;\n\n      if (this.data.ln) {\n        this.layerElement.setAttribute('id', this.data.ln);\n      }\n\n      if (this.data.cl) {\n        this.layerElement.setAttribute('class', this.data.cl);\n      }\n\n      if (this.data.bm !== 0) {\n        this.setBlendMode();\n      }\n    },\n    renderElement: function renderElement() {\n      var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n      if (this.finalTransform._matMdf) {\n        var matrixValue = this.finalTransform.mat.toCSS();\n        transformedElementStyle.transform = matrixValue;\n        transformedElementStyle.webkitTransform = matrixValue;\n      }\n\n      if (this.finalTransform._opMdf) {\n        transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n      }\n    },\n    renderFrame: function renderFrame() {\n      // If it is exported as hidden (data.hd === true) no need to render\n      // If it is not visible no need to render\n      if (this.data.hd || this.hidden) {\n        return;\n      }\n\n      this.renderTransform();\n      this.renderRenderable();\n      this.renderElement();\n      this.renderInnerContent();\n\n      if (this._isFirstFrame) {\n        this._isFirstFrame = false;\n      }\n    },\n    destroy: function destroy() {\n      this.layerElement = null;\n      this.transformedElement = null;\n\n      if (this.matteElement) {\n        this.matteElement = null;\n      }\n\n      if (this.maskManager) {\n        this.maskManager.destroy();\n        this.maskManager = null;\n      }\n    },\n    createRenderableComponents: function createRenderableComponents() {\n      this.maskManager = new MaskElement(this.data, this, this.globalData);\n    },\n    addEffects: function addEffects() {},\n    setMatte: function setMatte() {}\n  };\n  HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n  HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n  HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n  function HSolidElement(data, globalData, comp) {\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n  HSolidElement.prototype.createContent = function () {\n    var rect;\n\n    if (this.data.hasMask) {\n      rect = createNS('rect');\n      rect.setAttribute('width', this.data.sw);\n      rect.setAttribute('height', this.data.sh);\n      rect.setAttribute('fill', this.data.sc);\n      this.svgElement.setAttribute('width', this.data.sw);\n      this.svgElement.setAttribute('height', this.data.sh);\n    } else {\n      rect = createTag('div');\n      rect.style.width = this.data.sw + 'px';\n      rect.style.height = this.data.sh + 'px';\n      rect.style.backgroundColor = this.data.sc;\n    }\n\n    this.layerElement.appendChild(rect);\n  };\n\n  function HShapeElement(data, globalData, comp) {\n    // List of drawable elements\n    this.shapes = []; // Full shape data\n\n    this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n    this.stylesList = []; // List of modifiers that will be applied to shapes\n\n    this.shapeModifiers = []; // List of items in shape tree\n\n    this.itemsData = []; // List of items in previous shape tree\n\n    this.processedElements = []; // List of animated components\n\n    this.animatedContents = [];\n    this.shapesContainer = createNS('g');\n    this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n    // List of elements that have been created\n\n    this.prevViewData = [];\n    this.currentBBox = {\n      x: 999999,\n      y: -999999,\n      h: 0,\n      w: 0\n    };\n  }\n\n  extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n  HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n  HShapeElement.prototype.createContent = function () {\n    var cont;\n    this.baseElement.style.fontSize = 0;\n\n    if (this.data.hasMask) {\n      this.layerElement.appendChild(this.shapesContainer);\n      cont = this.svgElement;\n    } else {\n      cont = createNS('svg');\n      var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n      cont.setAttribute('width', size.w);\n      cont.setAttribute('height', size.h);\n      cont.appendChild(this.shapesContainer);\n      this.layerElement.appendChild(cont);\n    }\n\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n    this.filterUniqueShapes();\n    this.shapeCont = cont;\n  };\n\n  HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n    var i;\n    var len = transformers.length;\n\n    for (i = 0; i < len; i += 1) {\n      point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n    }\n\n    return point;\n  };\n\n  HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n    var shape = item.sh.v;\n    var transformers = item.transformers;\n    var i;\n    var len = shape._length;\n    var vPoint;\n    var oPoint;\n    var nextIPoint;\n    var nextVPoint;\n\n    if (len <= 1) {\n      return;\n    }\n\n    for (i = 0; i < len - 1; i += 1) {\n      vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n      oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n      nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n      nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n      this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n    }\n\n    if (shape.c) {\n      vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n      oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n      nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n      nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n      this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n    }\n  };\n\n  HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n    this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n    var bounds = this.shapeBoundingBox;\n    boundingBox.x = bmMin(bounds.left, boundingBox.x);\n    boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n    boundingBox.y = bmMin(bounds.top, boundingBox.y);\n    boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n  };\n\n  HShapeElement.prototype.shapeBoundingBox = {\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0\n  };\n  HShapeElement.prototype.tempBoundingBox = {\n    x: 0,\n    xMax: 0,\n    y: 0,\n    yMax: 0,\n    width: 0,\n    height: 0\n  };\n\n  HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n    var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n    for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n      // eslint-disable-line no-plusplus\n      b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n      a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n      c = 3 * p1[i] - 3 * p0[i];\n      b |= 0; // eslint-disable-line no-bitwise\n\n      a |= 0; // eslint-disable-line no-bitwise\n\n      c |= 0; // eslint-disable-line no-bitwise\n\n      if (a === 0 && b === 0) {//\n      } else if (a === 0) {\n        t = -c / b;\n\n        if (t > 0 && t < 1) {\n          bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n        }\n      } else {\n        b2ac = b * b - 4 * c * a;\n\n        if (b2ac >= 0) {\n          t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n          if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n          t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n          if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n        }\n      }\n    }\n\n    this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n    this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n    this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n    this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n  };\n\n  HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n    return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n  };\n\n  HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n    var i;\n    var len = itemsData.length;\n\n    for (i = 0; i < len; i += 1) {\n      if (itemsData[i] && itemsData[i].sh) {\n        this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n      } else if (itemsData[i] && itemsData[i].it) {\n        this.calculateBoundingBox(itemsData[i].it, boundingBox);\n      } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n        this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n      }\n    }\n  };\n\n  HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n    var width = 0;\n\n    if (widthProperty.keyframes) {\n      for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n        var kfw = widthProperty.keyframes[i].s;\n\n        if (kfw > width) {\n          width = kfw;\n        }\n      }\n\n      width *= widthProperty.mult;\n    } else {\n      width = widthProperty.v * widthProperty.mult;\n    }\n\n    boundingBox.x -= width;\n    boundingBox.xMax += width;\n    boundingBox.y -= width;\n    boundingBox.yMax += width;\n  };\n\n  HShapeElement.prototype.currentBoxContains = function (box) {\n    return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n  };\n\n  HShapeElement.prototype.renderInnerContent = function () {\n    this._renderShapeFrame();\n\n    if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n      var tempBoundingBox = this.tempBoundingBox;\n      var max = 999999;\n      tempBoundingBox.x = max;\n      tempBoundingBox.xMax = -max;\n      tempBoundingBox.y = max;\n      tempBoundingBox.yMax = -max;\n      this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n      tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n      tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n      if (this.currentBoxContains(tempBoundingBox)) {\n        return;\n      }\n\n      var changed = false;\n\n      if (this.currentBBox.w !== tempBoundingBox.width) {\n        this.currentBBox.w = tempBoundingBox.width;\n        this.shapeCont.setAttribute('width', tempBoundingBox.width);\n        changed = true;\n      }\n\n      if (this.currentBBox.h !== tempBoundingBox.height) {\n        this.currentBBox.h = tempBoundingBox.height;\n        this.shapeCont.setAttribute('height', tempBoundingBox.height);\n        changed = true;\n      }\n\n      if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n        this.currentBBox.w = tempBoundingBox.width;\n        this.currentBBox.h = tempBoundingBox.height;\n        this.currentBBox.x = tempBoundingBox.x;\n        this.currentBBox.y = tempBoundingBox.y;\n        this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n        var shapeStyle = this.shapeCont.style;\n        var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n        shapeStyle.transform = shapeTransform;\n        shapeStyle.webkitTransform = shapeTransform;\n      }\n    }\n  };\n\n  function HTextElement(data, globalData, comp) {\n    this.textSpans = [];\n    this.textPaths = [];\n    this.currentBBox = {\n      x: 999999,\n      y: -999999,\n      h: 0,\n      w: 0\n    };\n    this.renderType = 'svg';\n    this.isMasked = false;\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n  HTextElement.prototype.createContent = function () {\n    this.isMasked = this.checkMasks();\n\n    if (this.isMasked) {\n      this.renderType = 'svg';\n      this.compW = this.comp.data.w;\n      this.compH = this.comp.data.h;\n      this.svgElement.setAttribute('width', this.compW);\n      this.svgElement.setAttribute('height', this.compH);\n      var g = createNS('g');\n      this.maskedElement.appendChild(g);\n      this.innerElem = g;\n    } else {\n      this.renderType = 'html';\n      this.innerElem = this.layerElement;\n    }\n\n    this.checkParenting();\n  };\n\n  HTextElement.prototype.buildNewText = function () {\n    var documentData = this.textProperty.currentData;\n    this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n    var innerElemStyle = this.innerElem.style;\n    var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n    innerElemStyle.fill = textColor;\n    innerElemStyle.color = textColor;\n\n    if (documentData.sc) {\n      innerElemStyle.stroke = this.buildColor(documentData.sc);\n      innerElemStyle.strokeWidth = documentData.sw + 'px';\n    }\n\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n    if (!this.globalData.fontManager.chars) {\n      innerElemStyle.fontSize = documentData.finalSize + 'px';\n      innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n      if (fontData.fClass) {\n        this.innerElem.className = fontData.fClass;\n      } else {\n        innerElemStyle.fontFamily = fontData.fFamily;\n        var fWeight = documentData.fWeight;\n        var fStyle = documentData.fStyle;\n        innerElemStyle.fontStyle = fStyle;\n        innerElemStyle.fontWeight = fWeight;\n      }\n    }\n\n    var i;\n    var len;\n    var letters = documentData.l;\n    len = letters.length;\n    var tSpan;\n    var tParent;\n    var tCont;\n    var matrixHelper = this.mHelper;\n    var shapes;\n    var shapeStr = '';\n    var cnt = 0;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.globalData.fontManager.chars) {\n        if (!this.textPaths[cnt]) {\n          tSpan = createNS('path');\n          tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n          tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n          tSpan.setAttribute('stroke-miterlimit', '4');\n        } else {\n          tSpan = this.textPaths[cnt];\n        }\n\n        if (!this.isMasked) {\n          if (this.textSpans[cnt]) {\n            tParent = this.textSpans[cnt];\n            tCont = tParent.children[0];\n          } else {\n            tParent = createTag('div');\n            tParent.style.lineHeight = 0;\n            tCont = createNS('svg');\n            tCont.appendChild(tSpan);\n            styleDiv(tParent);\n          }\n        }\n      } else if (!this.isMasked) {\n        if (this.textSpans[cnt]) {\n          tParent = this.textSpans[cnt];\n          tSpan = this.textPaths[cnt];\n        } else {\n          tParent = createTag('span');\n          styleDiv(tParent);\n          tSpan = createTag('span');\n          styleDiv(tSpan);\n          tParent.appendChild(tSpan);\n        }\n      } else {\n        tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n      } // tSpan.setAttribute('visibility', 'hidden');\n\n\n      if (this.globalData.fontManager.chars) {\n        var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n        var shapeData;\n\n        if (charData) {\n          shapeData = charData.data;\n        } else {\n          shapeData = null;\n        }\n\n        matrixHelper.reset();\n\n        if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n          shapes = shapeData.shapes[0].it;\n          matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n          shapeStr = this.createPathShape(matrixHelper, shapes);\n          tSpan.setAttribute('d', shapeStr);\n        }\n\n        if (!this.isMasked) {\n          this.innerElem.appendChild(tParent);\n\n          if (shapeData && shapeData.shapes) {\n            // document.body.appendChild is needed to get exact measure of shape\n            document.body.appendChild(tCont);\n            var boundingBox = tCont.getBBox();\n            tCont.setAttribute('width', boundingBox.width + 2);\n            tCont.setAttribute('height', boundingBox.height + 2);\n            tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n            var tContStyle = tCont.style;\n            var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n            tContStyle.transform = tContTranslation;\n            tContStyle.webkitTransform = tContTranslation;\n            letters[i].yOffset = boundingBox.y - 1;\n          } else {\n            tCont.setAttribute('width', 1);\n            tCont.setAttribute('height', 1);\n          }\n\n          tParent.appendChild(tCont);\n        } else {\n          this.innerElem.appendChild(tSpan);\n        }\n      } else {\n        tSpan.textContent = letters[i].val;\n        tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n        if (!this.isMasked) {\n          this.innerElem.appendChild(tParent); //\n\n          var tStyle = tSpan.style;\n          var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n          tStyle.transform = tSpanTranslation;\n          tStyle.webkitTransform = tSpanTranslation;\n        } else {\n          this.innerElem.appendChild(tSpan);\n        }\n      } //\n\n\n      if (!this.isMasked) {\n        this.textSpans[cnt] = tParent;\n      } else {\n        this.textSpans[cnt] = tSpan;\n      }\n\n      this.textSpans[cnt].style.display = 'block';\n      this.textPaths[cnt] = tSpan;\n      cnt += 1;\n    }\n\n    while (cnt < this.textSpans.length) {\n      this.textSpans[cnt].style.display = 'none';\n      cnt += 1;\n    }\n  };\n\n  HTextElement.prototype.renderInnerContent = function () {\n    this.validateText();\n    var svgStyle;\n\n    if (this.data.singleShape) {\n      if (!this._isFirstFrame && !this.lettersChangedFlag) {\n        return;\n      }\n\n      if (this.isMasked && this.finalTransform._matMdf) {\n        // Todo Benchmark if using this is better than getBBox\n        this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n        svgStyle = this.svgElement.style;\n        var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n        svgStyle.transform = translation;\n        svgStyle.webkitTransform = translation;\n      }\n    }\n\n    this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n    if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n      return;\n    }\n\n    var i;\n    var len;\n    var count = 0;\n    var renderedLetters = this.textAnimator.renderedLetters;\n    var letters = this.textProperty.currentData.l;\n    len = letters.length;\n    var renderedLetter;\n    var textSpan;\n    var textPath;\n\n    for (i = 0; i < len; i += 1) {\n      if (letters[i].n) {\n        count += 1;\n      } else {\n        textSpan = this.textSpans[i];\n        textPath = this.textPaths[i];\n        renderedLetter = renderedLetters[count];\n        count += 1;\n\n        if (renderedLetter._mdf.m) {\n          if (!this.isMasked) {\n            textSpan.style.webkitTransform = renderedLetter.m;\n            textSpan.style.transform = renderedLetter.m;\n          } else {\n            textSpan.setAttribute('transform', renderedLetter.m);\n          }\n        } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n        textSpan.style.opacity = renderedLetter.o;\n\n        if (renderedLetter.sw && renderedLetter._mdf.sw) {\n          textPath.setAttribute('stroke-width', renderedLetter.sw);\n        }\n\n        if (renderedLetter.sc && renderedLetter._mdf.sc) {\n          textPath.setAttribute('stroke', renderedLetter.sc);\n        }\n\n        if (renderedLetter.fc && renderedLetter._mdf.fc) {\n          textPath.setAttribute('fill', renderedLetter.fc);\n          textPath.style.color = renderedLetter.fc;\n        }\n      }\n    }\n\n    if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n      var boundingBox = this.innerElem.getBBox();\n\n      if (this.currentBBox.w !== boundingBox.width) {\n        this.currentBBox.w = boundingBox.width;\n        this.svgElement.setAttribute('width', boundingBox.width);\n      }\n\n      if (this.currentBBox.h !== boundingBox.height) {\n        this.currentBBox.h = boundingBox.height;\n        this.svgElement.setAttribute('height', boundingBox.height);\n      }\n\n      var margin = 1;\n\n      if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n        this.currentBBox.w = boundingBox.width + margin * 2;\n        this.currentBBox.h = boundingBox.height + margin * 2;\n        this.currentBBox.x = boundingBox.x - margin;\n        this.currentBBox.y = boundingBox.y - margin;\n        this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n        svgStyle = this.svgElement.style;\n        var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n        svgStyle.transform = svgTransform;\n        svgStyle.webkitTransform = svgTransform;\n      }\n    }\n  };\n\n  function HCameraElement(data, globalData, comp) {\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.initHierarchy();\n    var getProp = PropertyFactory.getProp;\n    this.pe = getProp(this, data.pe, 0, 0, this);\n\n    if (data.ks.p.s) {\n      this.px = getProp(this, data.ks.p.x, 1, 0, this);\n      this.py = getProp(this, data.ks.p.y, 1, 0, this);\n      this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n    } else {\n      this.p = getProp(this, data.ks.p, 1, 0, this);\n    }\n\n    if (data.ks.a) {\n      this.a = getProp(this, data.ks.a, 1, 0, this);\n    }\n\n    if (data.ks.or.k.length && data.ks.or.k[0].to) {\n      var i;\n      var len = data.ks.or.k.length;\n\n      for (i = 0; i < len; i += 1) {\n        data.ks.or.k[i].to = null;\n        data.ks.or.k[i].ti = null;\n      }\n    }\n\n    this.or = getProp(this, data.ks.or, 1, degToRads, this);\n    this.or.sh = true;\n    this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n    this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n    this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n    this.mat = new Matrix();\n    this._prevMat = new Matrix();\n    this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n    this.finalTransform = {\n      mProp: this\n    };\n  }\n\n  extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n  HCameraElement.prototype.setup = function () {\n    var i;\n    var len = this.comp.threeDElements.length;\n    var comp;\n    var perspectiveStyle;\n    var containerStyle;\n\n    for (i = 0; i < len; i += 1) {\n      // [perspectiveElem,container]\n      comp = this.comp.threeDElements[i];\n\n      if (comp.type === '3d') {\n        perspectiveStyle = comp.perspectiveElem.style;\n        containerStyle = comp.container.style;\n        var perspective = this.pe.v + 'px';\n        var origin = '0px 0px 0px';\n        var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n        perspectiveStyle.perspective = perspective;\n        perspectiveStyle.webkitPerspective = perspective;\n        containerStyle.transformOrigin = origin;\n        containerStyle.mozTransformOrigin = origin;\n        containerStyle.webkitTransformOrigin = origin;\n        perspectiveStyle.transform = matrix;\n        perspectiveStyle.webkitTransform = matrix;\n      }\n    }\n  };\n\n  HCameraElement.prototype.createElements = function () {};\n\n  HCameraElement.prototype.hide = function () {};\n\n  HCameraElement.prototype.renderFrame = function () {\n    var _mdf = this._isFirstFrame;\n    var i;\n    var len;\n\n    if (this.hierarchy) {\n      len = this.hierarchy.length;\n\n      for (i = 0; i < len; i += 1) {\n        _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n      }\n    }\n\n    if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n      this.mat.reset();\n\n      if (this.hierarchy) {\n        len = this.hierarchy.length - 1;\n\n        for (i = len; i >= 0; i -= 1) {\n          var mTransf = this.hierarchy[i].finalTransform.mProp;\n          this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n          this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n          this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n          this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n          this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n        }\n      }\n\n      if (this.p) {\n        this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n      } else {\n        this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n      }\n\n      if (this.a) {\n        var diffVector;\n\n        if (this.p) {\n          diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n        } else {\n          diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n        }\n\n        var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n        var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n        var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n        var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n        var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n        this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n      }\n\n      this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n      this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n      this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n      this.mat.translate(0, 0, this.pe.v);\n      var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n      if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n        len = this.comp.threeDElements.length;\n        var comp;\n        var perspectiveStyle;\n        var containerStyle;\n\n        for (i = 0; i < len; i += 1) {\n          comp = this.comp.threeDElements[i];\n\n          if (comp.type === '3d') {\n            if (hasMatrixChanged) {\n              var matValue = this.mat.toCSS();\n              containerStyle = comp.container.style;\n              containerStyle.transform = matValue;\n              containerStyle.webkitTransform = matValue;\n            }\n\n            if (this.pe._mdf) {\n              perspectiveStyle = comp.perspectiveElem.style;\n              perspectiveStyle.perspective = this.pe.v + 'px';\n              perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n            }\n          }\n        }\n\n        this.mat.clone(this._prevMat);\n      }\n    }\n\n    this._isFirstFrame = false;\n  };\n\n  HCameraElement.prototype.prepareFrame = function (num) {\n    this.prepareProperties(num, true);\n  };\n\n  HCameraElement.prototype.destroy = function () {};\n\n  HCameraElement.prototype.getBaseElement = function () {\n    return null;\n  };\n\n  function HImageElement(data, globalData, comp) {\n    this.assetData = globalData.getAssetData(data.refId);\n    this.initElement(data, globalData, comp);\n  }\n\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n  HImageElement.prototype.createContent = function () {\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\n    var img = new Image();\n\n    if (this.data.hasMask) {\n      this.imageElem = createNS('image');\n      this.imageElem.setAttribute('width', this.assetData.w + 'px');\n      this.imageElem.setAttribute('height', this.assetData.h + 'px');\n      this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n      this.layerElement.appendChild(this.imageElem);\n      this.baseElement.setAttribute('width', this.assetData.w);\n      this.baseElement.setAttribute('height', this.assetData.h);\n    } else {\n      this.layerElement.appendChild(img);\n    }\n\n    img.crossOrigin = 'anonymous';\n    img.src = assetPath;\n\n    if (this.data.ln) {\n      this.baseElement.setAttribute('id', this.data.ln);\n    }\n  };\n\n  function HybridRendererBase(animationItem, config) {\n    this.animationItem = animationItem;\n    this.layers = null;\n    this.renderedFrame = -1;\n    this.renderConfig = {\n      className: config && config.className || '',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\n      filterSize: {\n        width: config && config.filterSize && config.filterSize.width || '400%',\n        height: config && config.filterSize && config.filterSize.height || '400%',\n        x: config && config.filterSize && config.filterSize.x || '-100%',\n        y: config && config.filterSize && config.filterSize.y || '-100%'\n      }\n    };\n    this.globalData = {\n      _mdf: false,\n      frameNum: -1,\n      renderConfig: this.renderConfig\n    };\n    this.pendingElements = [];\n    this.elements = [];\n    this.threeDElements = [];\n    this.destroyed = false;\n    this.camera = null;\n    this.supports3d = true;\n    this.rendererType = 'html';\n  }\n\n  extendPrototype([BaseRenderer], HybridRendererBase);\n  HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n  HybridRendererBase.prototype.checkPendingElements = function () {\n    while (this.pendingElements.length) {\n      var element = this.pendingElements.pop();\n      element.checkParenting();\n    }\n  };\n\n  HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n    var newDOMElement = element.getBaseElement();\n\n    if (!newDOMElement) {\n      return;\n    }\n\n    var layer = this.layers[pos];\n\n    if (!layer.ddd || !this.supports3d) {\n      if (this.threeDElements) {\n        this.addTo3dContainer(newDOMElement, pos);\n      } else {\n        var i = 0;\n        var nextDOMElement;\n        var nextLayer;\n        var tmpDOMElement;\n\n        while (i < pos) {\n          if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n            nextLayer = this.elements[i];\n            tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n            nextDOMElement = tmpDOMElement || nextDOMElement;\n          }\n\n          i += 1;\n        }\n\n        if (nextDOMElement) {\n          if (!layer.ddd || !this.supports3d) {\n            this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n          }\n        } else if (!layer.ddd || !this.supports3d) {\n          this.layerElement.appendChild(newDOMElement);\n        }\n      }\n    } else {\n      this.addTo3dContainer(newDOMElement, pos);\n    }\n  };\n\n  HybridRendererBase.prototype.createShape = function (data) {\n    if (!this.supports3d) {\n      return new SVGShapeElement(data, this.globalData, this);\n    }\n\n    return new HShapeElement(data, this.globalData, this);\n  };\n\n  HybridRendererBase.prototype.createText = function (data) {\n    if (!this.supports3d) {\n      return new SVGTextLottieElement(data, this.globalData, this);\n    }\n\n    return new HTextElement(data, this.globalData, this);\n  };\n\n  HybridRendererBase.prototype.createCamera = function (data) {\n    this.camera = new HCameraElement(data, this.globalData, this);\n    return this.camera;\n  };\n\n  HybridRendererBase.prototype.createImage = function (data) {\n    if (!this.supports3d) {\n      return new IImageElement(data, this.globalData, this);\n    }\n\n    return new HImageElement(data, this.globalData, this);\n  };\n\n  HybridRendererBase.prototype.createSolid = function (data) {\n    if (!this.supports3d) {\n      return new ISolidElement(data, this.globalData, this);\n    }\n\n    return new HSolidElement(data, this.globalData, this);\n  };\n\n  HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n  HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n    var i = 0;\n    var len = this.threeDElements.length;\n\n    while (i < len) {\n      if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n        return this.threeDElements[i].perspectiveElem;\n      }\n\n      i += 1;\n    }\n\n    return null;\n  };\n\n  HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n    var perspectiveElem = createTag('div');\n    var style;\n    var containerStyle;\n    styleDiv(perspectiveElem);\n    var container = createTag('div');\n    styleDiv(container);\n\n    if (type === '3d') {\n      style = perspectiveElem.style;\n      style.width = this.globalData.compSize.w + 'px';\n      style.height = this.globalData.compSize.h + 'px';\n      var center = '50% 50%';\n      style.webkitTransformOrigin = center;\n      style.mozTransformOrigin = center;\n      style.transformOrigin = center;\n      containerStyle = container.style;\n      var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n      containerStyle.transform = matrix;\n      containerStyle.webkitTransform = matrix;\n    }\n\n    perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n    var threeDContainerData = {\n      container: container,\n      perspectiveElem: perspectiveElem,\n      startPos: pos,\n      endPos: pos,\n      type: type\n    };\n    this.threeDElements.push(threeDContainerData);\n    return threeDContainerData;\n  };\n\n  HybridRendererBase.prototype.build3dContainers = function () {\n    var i;\n    var len = this.layers.length;\n    var lastThreeDContainerData;\n    var currentContainer = '';\n\n    for (i = 0; i < len; i += 1) {\n      if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n        if (currentContainer !== '3d') {\n          currentContainer = '3d';\n          lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n        }\n\n        lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n      } else {\n        if (currentContainer !== '2d') {\n          currentContainer = '2d';\n          lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n        }\n\n        lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n      }\n    }\n\n    len = this.threeDElements.length;\n\n    for (i = len - 1; i >= 0; i -= 1) {\n      this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n    }\n  };\n\n  HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n    var i = 0;\n    var len = this.threeDElements.length;\n\n    while (i < len) {\n      if (pos <= this.threeDElements[i].endPos) {\n        var j = this.threeDElements[i].startPos;\n        var nextElement;\n\n        while (j < pos) {\n          if (this.elements[j] && this.elements[j].getBaseElement) {\n            nextElement = this.elements[j].getBaseElement();\n          }\n\n          j += 1;\n        }\n\n        if (nextElement) {\n          this.threeDElements[i].container.insertBefore(elem, nextElement);\n        } else {\n          this.threeDElements[i].container.appendChild(elem);\n        }\n\n        break;\n      }\n\n      i += 1;\n    }\n  };\n\n  HybridRendererBase.prototype.configAnimation = function (animData) {\n    var resizerElem = createTag('div');\n    var wrapper = this.animationItem.wrapper;\n    var style = resizerElem.style;\n    style.width = animData.w + 'px';\n    style.height = animData.h + 'px';\n    this.resizerElem = resizerElem;\n    styleDiv(resizerElem);\n    style.transformStyle = 'flat';\n    style.mozTransformStyle = 'flat';\n    style.webkitTransformStyle = 'flat';\n\n    if (this.renderConfig.className) {\n      resizerElem.setAttribute('class', this.renderConfig.className);\n    }\n\n    wrapper.appendChild(resizerElem);\n    style.overflow = 'hidden';\n    var svg = createNS('svg');\n    svg.setAttribute('width', '1');\n    svg.setAttribute('height', '1');\n    styleDiv(svg);\n    this.resizerElem.appendChild(svg);\n    var defs = createNS('defs');\n    svg.appendChild(defs);\n    this.data = animData; // Mask animation\n\n    this.setupGlobalData(animData, svg);\n    this.globalData.defs = defs;\n    this.layers = animData.layers;\n    this.layerElement = this.resizerElem;\n    this.build3dContainers();\n    this.updateContainerSize();\n  };\n\n  HybridRendererBase.prototype.destroy = function () {\n    if (this.animationItem.wrapper) {\n      this.animationItem.wrapper.innerText = '';\n    }\n\n    this.animationItem.container = null;\n    this.globalData.defs = null;\n    var i;\n    var len = this.layers ? this.layers.length : 0;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i] && this.elements[i].destroy) {\n        this.elements[i].destroy();\n      }\n    }\n\n    this.elements.length = 0;\n    this.destroyed = true;\n    this.animationItem = null;\n  };\n\n  HybridRendererBase.prototype.updateContainerSize = function () {\n    var elementWidth = this.animationItem.wrapper.offsetWidth;\n    var elementHeight = this.animationItem.wrapper.offsetHeight;\n    var elementRel = elementWidth / elementHeight;\n    var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n    var sx;\n    var sy;\n    var tx;\n    var ty;\n\n    if (animationRel > elementRel) {\n      sx = elementWidth / this.globalData.compSize.w;\n      sy = elementWidth / this.globalData.compSize.w;\n      tx = 0;\n      ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n    } else {\n      sx = elementHeight / this.globalData.compSize.h;\n      sy = elementHeight / this.globalData.compSize.h;\n      tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n      ty = 0;\n    }\n\n    var style = this.resizerElem.style;\n    style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n    style.transform = style.webkitTransform;\n  };\n\n  HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n  HybridRendererBase.prototype.hide = function () {\n    this.resizerElem.style.display = 'none';\n  };\n\n  HybridRendererBase.prototype.show = function () {\n    this.resizerElem.style.display = 'block';\n  };\n\n  HybridRendererBase.prototype.initItems = function () {\n    this.buildAllItems();\n\n    if (this.camera) {\n      this.camera.setup();\n    } else {\n      var cWidth = this.globalData.compSize.w;\n      var cHeight = this.globalData.compSize.h;\n      var i;\n      var len = this.threeDElements.length;\n\n      for (i = 0; i < len; i += 1) {\n        var style = this.threeDElements[i].perspectiveElem.style;\n        style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n        style.perspective = style.webkitPerspective;\n      }\n    }\n  };\n\n  HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n    var i;\n    var len = assets.length;\n    var floatingContainer = createTag('div');\n\n    for (i = 0; i < len; i += 1) {\n      if (assets[i].xt) {\n        var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n        comp.initExpressions();\n        this.globalData.projectInterface.registerComposition(comp);\n      }\n    }\n  };\n\n  function HCompElement(data, globalData, comp) {\n    this.layers = data.layers;\n    this.supports3d = !data.hasMask;\n    this.completeLayers = false;\n    this.pendingElements = [];\n    this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n    this.initElement(data, globalData, comp);\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n  }\n\n  extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n  HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n  HCompElement.prototype.createContainerElements = function () {\n    this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n    if (this.data.hasMask) {\n      this.svgElement.setAttribute('width', this.data.w);\n      this.svgElement.setAttribute('height', this.data.h);\n      this.transformedElement = this.baseElement;\n    } else {\n      this.transformedElement = this.layerElement;\n    }\n  };\n\n  HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n    var j = 0;\n    var nextElement;\n\n    while (j < pos) {\n      if (this.elements[j] && this.elements[j].getBaseElement) {\n        nextElement = this.elements[j].getBaseElement();\n      }\n\n      j += 1;\n    }\n\n    if (nextElement) {\n      this.layerElement.insertBefore(elem, nextElement);\n    } else {\n      this.layerElement.appendChild(elem);\n    }\n  };\n\n  HCompElement.prototype.createComp = function (data) {\n    if (!this.supports3d) {\n      return new SVGCompElement(data, this.globalData, this);\n    }\n\n    return new HCompElement(data, this.globalData, this);\n  };\n\n  function HybridRenderer(animationItem, config) {\n    this.animationItem = animationItem;\n    this.layers = null;\n    this.renderedFrame = -1;\n    this.renderConfig = {\n      className: config && config.className || '',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\n      filterSize: {\n        width: config && config.filterSize && config.filterSize.width || '400%',\n        height: config && config.filterSize && config.filterSize.height || '400%',\n        x: config && config.filterSize && config.filterSize.x || '-100%',\n        y: config && config.filterSize && config.filterSize.y || '-100%'\n      },\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n    };\n    this.globalData = {\n      _mdf: false,\n      frameNum: -1,\n      renderConfig: this.renderConfig\n    };\n    this.pendingElements = [];\n    this.elements = [];\n    this.threeDElements = [];\n    this.destroyed = false;\n    this.camera = null;\n    this.supports3d = true;\n    this.rendererType = 'html';\n  }\n\n  extendPrototype([HybridRendererBase], HybridRenderer);\n\n  HybridRenderer.prototype.createComp = function (data) {\n    if (!this.supports3d) {\n      return new SVGCompElement(data, this.globalData, this);\n    }\n\n    return new HCompElement(data, this.globalData, this);\n  };\n\n  var CompExpressionInterface = function () {\n    return function (comp) {\n      function _thisLayerFunction(name) {\n        var i = 0;\n        var len = comp.layers.length;\n\n        while (i < len) {\n          if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n            return comp.elements[i].layerInterface;\n          }\n\n          i += 1;\n        }\n\n        return null; // return {active:false};\n      }\n\n      Object.defineProperty(_thisLayerFunction, '_name', {\n        value: comp.data.nm\n      });\n      _thisLayerFunction.layer = _thisLayerFunction;\n      _thisLayerFunction.pixelAspect = 1;\n      _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n      _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n      _thisLayerFunction.pixelAspect = 1;\n      _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n      _thisLayerFunction.displayStartTime = 0;\n      _thisLayerFunction.numLayers = comp.layers.length;\n      return _thisLayerFunction;\n    };\n  }();\n\n  function _typeof$2(obj) { \"@babel/helpers - typeof\"; 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); }\n\n  /* eslint-disable */\n\n  /*\r\n   Copyright 2014 David Bau.\r\n\r\n   Permission is hereby granted, free of charge, to any person obtaining\r\n   a copy of this software and associated documentation files (the\r\n   \"Software\"), to deal in the Software without restriction, including\r\n   without limitation the rights to use, copy, modify, merge, publish,\r\n   distribute, sublicense, and/or sell copies of the Software, and to\r\n   permit persons to whom the Software is furnished to do so, subject to\r\n   the following conditions:\r\n\r\n   The above copyright notice and this permission notice shall be\r\n   included in all copies or substantial portions of the Software.\r\n\r\n   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n   */\n  function seedRandom(pool, math) {\n    //\n    // The following constants are related to IEEE 754 limits.\n    //\n    var global = this,\n        width = 256,\n        // each RC4 output is 0 <= x < 256\n    chunks = 6,\n        // at least six RC4 outputs for each double\n    digits = 52,\n        // there are 52 significant digits in a double\n    rngname = 'random',\n        // rngname: name for Math.random and Math.seedrandom\n    startdenom = math.pow(width, chunks),\n        significance = math.pow(2, digits),\n        overflow = significance * 2,\n        mask = width - 1,\n        nodecrypto; // node.js crypto module, initialized at the bottom.\n    //\n    // seedrandom()\n    // This is the seedrandom function described above.\n    //\n\n    function seedrandom(seed, options, callback) {\n      var key = [];\n      options = options === true ? {\n        entropy: true\n      } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n      var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n      var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n      // randomness in every bit of the mantissa of the IEEE 754 value.\n\n      var prng = function prng() {\n        var n = arc4.g(chunks),\n            // Start with a numerator n < 2 ^ 48\n        d = startdenom,\n            //   and denominator d = 2 ^ 48.\n        x = 0; //   and no 'extra last byte'.\n\n        while (n < significance) {\n          // Fill up all significant digits by\n          n = (n + x) * width; //   shifting numerator and\n\n          d *= width; //   denominator and generating a\n\n          x = arc4.g(1); //   new least-significant-byte.\n        }\n\n        while (n >= overflow) {\n          // To avoid rounding up, before adding\n          n /= 2; //   last byte, shift everything\n\n          d /= 2; //   right using integer math until\n\n          x >>>= 1; //   we have exactly the desired bits.\n        }\n\n        return (n + x) / d; // Form the number within [0, 1).\n      };\n\n      prng.int32 = function () {\n        return arc4.g(4) | 0;\n      };\n\n      prng.quick = function () {\n        return arc4.g(4) / 0x100000000;\n      };\n\n      prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n      mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n      return (options.pass || callback || function (prng, seed, is_math_call, state) {\n        if (state) {\n          // Load the arc4 state from the given state if it has an S array.\n          if (state.S) {\n            copy(state, arc4);\n          } // Only provide the .state method if requested via options.state.\n\n\n          prng.state = function () {\n            return copy(arc4, {});\n          };\n        } // If called as a method of Math (Math.seedrandom()), mutate\n        // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n        if (is_math_call) {\n          math[rngname] = prng;\n          return seed;\n        } // Otherwise, it is a newer calling convention, so return the\n        // prng directly.\n        else return prng;\n      })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n    }\n\n    math['seed' + rngname] = seedrandom; //\n    // ARC4\n    //\n    // An ARC4 implementation.  The constructor takes a key in the form of\n    // an array of at most (width) integers that should be 0 <= x < (width).\n    //\n    // The g(count) method returns a pseudorandom integer that concatenates\n    // the next (count) outputs from ARC4.  Its return value is a number x\n    // that is in the range 0 <= x < (width ^ count).\n    //\n\n    function ARC4(key) {\n      var t,\n          keylen = key.length,\n          me = this,\n          i = 0,\n          j = me.i = me.j = 0,\n          s = me.S = []; // The empty key [] is treated as [0].\n\n      if (!keylen) {\n        key = [keylen++];\n      } // Set up S using the standard key scheduling algorithm.\n\n\n      while (i < width) {\n        s[i] = i++;\n      }\n\n      for (i = 0; i < width; i++) {\n        s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n        s[j] = t;\n      } // The \"g\" method returns the next (count) outputs as one number.\n\n\n      me.g = function (count) {\n        // Using instance members instead of closure state nearly doubles speed.\n        var t,\n            r = 0,\n            i = me.i,\n            j = me.j,\n            s = me.S;\n\n        while (count--) {\n          t = s[i = mask & i + 1];\n          r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n        }\n\n        me.i = i;\n        me.j = j;\n        return r; // For robust unpredictability, the function call below automatically\n        // discards an initial batch of values.  This is called RC4-drop[256].\n        // See http://google.com/search?q=rsa+fluhrer+response&btnI\n      };\n    } //\n    // copy()\n    // Copies internal state of ARC4 to or from a plain object.\n    //\n\n\n    function copy(f, t) {\n      t.i = f.i;\n      t.j = f.j;\n      t.S = f.S.slice();\n      return t;\n    } //\n    // flatten()\n    // Converts an object tree to nested arrays of strings.\n    //\n\n\n    function flatten(obj, depth) {\n      var result = [],\n          typ = _typeof$2(obj),\n          prop;\n\n      if (depth && typ == 'object') {\n        for (prop in obj) {\n          try {\n            result.push(flatten(obj[prop], depth - 1));\n          } catch (e) {}\n        }\n      }\n\n      return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n    } //\n    // mixkey()\n    // Mixes a string seed into a key that is an array of integers, and\n    // returns a shortened string seed that is equivalent to the result key.\n    //\n\n\n    function mixkey(seed, key) {\n      var stringseed = seed + '',\n          smear,\n          j = 0;\n\n      while (j < stringseed.length) {\n        key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n      }\n\n      return tostring(key);\n    } //\n    // autoseed()\n    // Returns an object for autoseeding, using window.crypto and Node crypto\n    // module if available.\n    //\n\n\n    function autoseed() {\n      try {\n        if (nodecrypto) {\n          return tostring(nodecrypto.randomBytes(width));\n        }\n\n        var out = new Uint8Array(width);\n        (global.crypto || global.msCrypto).getRandomValues(out);\n        return tostring(out);\n      } catch (e) {\n        var browser = global.navigator,\n            plugins = browser && browser.plugins;\n        return [+new Date(), global, plugins, global.screen, tostring(pool)];\n      }\n    } //\n    // tostring()\n    // Converts an array of charcodes to a string\n    //\n\n\n    function tostring(a) {\n      return String.fromCharCode.apply(0, a);\n    } //\n    // When seedrandom.js is loaded, we immediately mix a few bits\n    // from the built-in RNG into the entropy pool.  Because we do\n    // not want to interfere with deterministic PRNG state later,\n    // seedrandom will not call math.random on its own again after\n    // initialization.\n    //\n\n\n    mixkey(math.random(), pool); //\n    // Nodejs and AMD support: export the implementation as a module using\n    // either convention.\n    //\n    // End anonymous scope, and pass initial values.\n  }\n\n  ;\n\n  function initialize$2(BMMath) {\n    seedRandom([], BMMath);\n  }\n\n  var propTypes = {\n    SHAPE: 'shape'\n  };\n\n  function _typeof$1(obj) { \"@babel/helpers - typeof\"; 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); }\n\n  var ExpressionManager = function () {\n    'use strict';\n\n    var ob = {};\n    var Math = BMMath;\n    var window = null;\n    var document = null;\n    var XMLHttpRequest = null;\n    var fetch = null;\n    var frames = null;\n    var _lottieGlobal = {};\n    initialize$2(BMMath);\n\n    function resetFrame() {\n      _lottieGlobal = {};\n    }\n\n    function $bm_isInstanceOfArray(arr) {\n      return arr.constructor === Array || arr.constructor === Float32Array;\n    }\n\n    function isNumerable(tOfV, v) {\n      return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n    }\n\n    function $bm_neg(a) {\n      var tOfA = _typeof$1(a);\n\n      if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n        return -a;\n      }\n\n      if ($bm_isInstanceOfArray(a)) {\n        var i;\n        var lenA = a.length;\n        var retArr = [];\n\n        for (i = 0; i < lenA; i += 1) {\n          retArr[i] = -a[i];\n        }\n\n        return retArr;\n      }\n\n      if (a.propType) {\n        return a.v;\n      }\n\n      return -a;\n    }\n\n    var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n    var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n    var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n    function sum(a, b) {\n      var tOfA = _typeof$1(a);\n\n      var tOfB = _typeof$1(b);\n\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n        return a + b;\n      }\n\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        a = a.slice(0);\n        a[0] += b;\n        return a;\n      }\n\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        b = b.slice(0);\n        b[0] = a + b[0];\n        return b;\n      }\n\n      if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n        var i = 0;\n        var lenA = a.length;\n        var lenB = b.length;\n        var retArr = [];\n\n        while (i < lenA || i < lenB) {\n          if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n            retArr[i] = a[i] + b[i];\n          } else {\n            retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n          }\n\n          i += 1;\n        }\n\n        return retArr;\n      }\n\n      return 0;\n    }\n\n    var add = sum;\n\n    function sub(a, b) {\n      var tOfA = _typeof$1(a);\n\n      var tOfB = _typeof$1(b);\n\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n        if (tOfA === 'string') {\n          a = parseInt(a, 10);\n        }\n\n        if (tOfB === 'string') {\n          b = parseInt(b, 10);\n        }\n\n        return a - b;\n      }\n\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        a = a.slice(0);\n        a[0] -= b;\n        return a;\n      }\n\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        b = b.slice(0);\n        b[0] = a - b[0];\n        return b;\n      }\n\n      if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n        var i = 0;\n        var lenA = a.length;\n        var lenB = b.length;\n        var retArr = [];\n\n        while (i < lenA || i < lenB) {\n          if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n            retArr[i] = a[i] - b[i];\n          } else {\n            retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n          }\n\n          i += 1;\n        }\n\n        return retArr;\n      }\n\n      return 0;\n    }\n\n    function mul(a, b) {\n      var tOfA = _typeof$1(a);\n\n      var tOfB = _typeof$1(b);\n\n      var arr;\n\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n        return a * b;\n      }\n\n      var i;\n      var len;\n\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        len = a.length;\n        arr = createTypedArray('float32', len);\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a[i] * b;\n        }\n\n        return arr;\n      }\n\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        len = b.length;\n        arr = createTypedArray('float32', len);\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a * b[i];\n        }\n\n        return arr;\n      }\n\n      return 0;\n    }\n\n    function div(a, b) {\n      var tOfA = _typeof$1(a);\n\n      var tOfB = _typeof$1(b);\n\n      var arr;\n\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n        return a / b;\n      }\n\n      var i;\n      var len;\n\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        len = a.length;\n        arr = createTypedArray('float32', len);\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a[i] / b;\n        }\n\n        return arr;\n      }\n\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        len = b.length;\n        arr = createTypedArray('float32', len);\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a / b[i];\n        }\n\n        return arr;\n      }\n\n      return 0;\n    }\n\n    function mod(a, b) {\n      if (typeof a === 'string') {\n        a = parseInt(a, 10);\n      }\n\n      if (typeof b === 'string') {\n        b = parseInt(b, 10);\n      }\n\n      return a % b;\n    }\n\n    var $bm_sum = sum;\n    var $bm_sub = sub;\n    var $bm_mul = mul;\n    var $bm_div = div;\n    var $bm_mod = mod;\n\n    function clamp(num, min, max) {\n      if (min > max) {\n        var mm = max;\n        max = min;\n        min = mm;\n      }\n\n      return Math.min(Math.max(num, min), max);\n    }\n\n    function radiansToDegrees(val) {\n      return val / degToRads;\n    }\n\n    var radians_to_degrees = radiansToDegrees;\n\n    function degreesToRadians(val) {\n      return val * degToRads;\n    }\n\n    var degrees_to_radians = radiansToDegrees;\n    var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n    function length(arr1, arr2) {\n      if (typeof arr1 === 'number' || arr1 instanceof Number) {\n        arr2 = arr2 || 0;\n        return Math.abs(arr1 - arr2);\n      }\n\n      if (!arr2) {\n        arr2 = helperLengthArray;\n      }\n\n      var i;\n      var len = Math.min(arr1.length, arr2.length);\n      var addedLength = 0;\n\n      for (i = 0; i < len; i += 1) {\n        addedLength += Math.pow(arr2[i] - arr1[i], 2);\n      }\n\n      return Math.sqrt(addedLength);\n    }\n\n    function normalize(vec) {\n      return div(vec, length(vec));\n    }\n\n    function rgbToHsl(val) {\n      var r = val[0];\n      var g = val[1];\n      var b = val[2];\n      var max = Math.max(r, g, b);\n      var min = Math.min(r, g, b);\n      var h;\n      var s;\n      var l = (max + min) / 2;\n\n      if (max === min) {\n        h = 0; // achromatic\n\n        s = 0; // achromatic\n      } else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n        switch (max) {\n          case r:\n            h = (g - b) / d + (g < b ? 6 : 0);\n            break;\n\n          case g:\n            h = (b - r) / d + 2;\n            break;\n\n          case b:\n            h = (r - g) / d + 4;\n            break;\n\n          default:\n            break;\n        }\n\n        h /= 6;\n      }\n\n      return [h, s, l, val[3]];\n    }\n\n    function hue2rgb(p, q, t) {\n      if (t < 0) t += 1;\n      if (t > 1) t -= 1;\n      if (t < 1 / 6) return p + (q - p) * 6 * t;\n      if (t < 1 / 2) return q;\n      if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n      return p;\n    }\n\n    function hslToRgb(val) {\n      var h = val[0];\n      var s = val[1];\n      var l = val[2];\n      var r;\n      var g;\n      var b;\n\n      if (s === 0) {\n        r = l; // achromatic\n\n        b = l; // achromatic\n\n        g = l; // achromatic\n      } else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1 / 3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1 / 3);\n      }\n\n      return [r, g, b, val[3]];\n    }\n\n    function linear(t, tMin, tMax, value1, value2) {\n      if (value1 === undefined || value2 === undefined) {\n        value1 = tMin;\n        value2 = tMax;\n        tMin = 0;\n        tMax = 1;\n      }\n\n      if (tMax < tMin) {\n        var _tMin = tMax;\n        tMax = tMin;\n        tMin = _tMin;\n      }\n\n      if (t <= tMin) {\n        return value1;\n      }\n\n      if (t >= tMax) {\n        return value2;\n      }\n\n      var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n      if (!value1.length) {\n        return value1 + (value2 - value1) * perc;\n      }\n\n      var i;\n      var len = value1.length;\n      var arr = createTypedArray('float32', len);\n\n      for (i = 0; i < len; i += 1) {\n        arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n      }\n\n      return arr;\n    }\n\n    function random(min, max) {\n      if (max === undefined) {\n        if (min === undefined) {\n          min = 0;\n          max = 1;\n        } else {\n          max = min;\n          min = undefined;\n        }\n      }\n\n      if (max.length) {\n        var i;\n        var len = max.length;\n\n        if (!min) {\n          min = createTypedArray('float32', len);\n        }\n\n        var arr = createTypedArray('float32', len);\n        var rnd = BMMath.random();\n\n        for (i = 0; i < len; i += 1) {\n          arr[i] = min[i] + rnd * (max[i] - min[i]);\n        }\n\n        return arr;\n      }\n\n      if (min === undefined) {\n        min = 0;\n      }\n\n      var rndm = BMMath.random();\n      return min + rndm * (max - min);\n    }\n\n    function createPath(points, inTangents, outTangents, closed) {\n      var i;\n      var len = points.length;\n      var path = shapePool.newElement();\n      path.setPathData(!!closed, len);\n      var arrPlaceholder = [0, 0];\n      var inVertexPoint;\n      var outVertexPoint;\n\n      for (i = 0; i < len; i += 1) {\n        inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n        outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n        path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n      }\n\n      return path;\n    }\n\n    function initiateExpression(elem, data, property) {\n      // Bail out if we don't want expressions\n      function noOp(_value) {\n        return _value;\n      }\n\n      if (!elem.globalData.renderConfig.runExpressions) {\n        return noOp;\n      }\n\n      var val = data.x;\n      var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n      var _needsRandom = val.indexOf('random') !== -1;\n\n      var elemType = elem.data.ty;\n      var transform;\n      var $bm_transform;\n      var content;\n      var effect;\n      var thisProperty = property;\n      thisProperty.valueAtTime = thisProperty.getValueAtTime;\n      Object.defineProperty(thisProperty, 'value', {\n        get: function get() {\n          return thisProperty.v;\n        }\n      });\n      elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n      elem.comp.displayStartTime = 0;\n      var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n      var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n      var width = elem.data.sw ? elem.data.sw : 0;\n      var height = elem.data.sh ? elem.data.sh : 0;\n      var name = elem.data.nm;\n      var loopIn;\n      var loop_in;\n      var loopOut;\n      var loop_out;\n      var smooth;\n      var toWorld;\n      var fromWorld;\n      var fromComp;\n      var toComp;\n      var fromCompToSurface;\n      var position;\n      var rotation;\n      var anchorPoint;\n      var scale;\n      var thisLayer;\n      var thisComp;\n      var mask;\n      var valueAtTime;\n      var velocityAtTime;\n      var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n      var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n      var numKeys = property.kf ? data.k.length : 0;\n      var active = !this.data || this.data.hd !== true;\n\n      var wiggle = function wiggle(freq, amp) {\n        var iWiggle;\n        var j;\n        var lenWiggle = this.pv.length ? this.pv.length : 1;\n        var addedAmps = createTypedArray('float32', lenWiggle);\n        freq = 5;\n        var iterations = Math.floor(time * freq);\n        iWiggle = 0;\n        j = 0;\n\n        while (iWiggle < iterations) {\n          // var rnd = BMMath.random();\n          for (j = 0; j < lenWiggle; j += 1) {\n            addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n          }\n\n          iWiggle += 1;\n        } // var rnd2 = BMMath.random();\n\n\n        var periods = time * freq;\n        var perc = periods - Math.floor(periods);\n        var arr = createTypedArray('float32', lenWiggle);\n\n        if (lenWiggle > 1) {\n          for (j = 0; j < lenWiggle; j += 1) {\n            arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n            // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n          }\n\n          return arr;\n        }\n\n        return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n      }.bind(this);\n\n      if (thisProperty.loopIn) {\n        loopIn = thisProperty.loopIn.bind(thisProperty);\n        loop_in = loopIn;\n      }\n\n      if (thisProperty.loopOut) {\n        loopOut = thisProperty.loopOut.bind(thisProperty);\n        loop_out = loopOut;\n      }\n\n      if (thisProperty.smooth) {\n        smooth = thisProperty.smooth.bind(thisProperty);\n      }\n\n      function loopInDuration(type, duration) {\n        return loopIn(type, duration, true);\n      }\n\n      function loopOutDuration(type, duration) {\n        return loopOut(type, duration, true);\n      }\n\n      if (this.getValueAtTime) {\n        valueAtTime = this.getValueAtTime.bind(this);\n      }\n\n      if (this.getVelocityAtTime) {\n        velocityAtTime = this.getVelocityAtTime.bind(this);\n      }\n\n      var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n      function lookAt(elem1, elem2) {\n        var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n        var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n        var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n        return [yaw, pitch, 0];\n      }\n\n      function easeOut(t, tMin, tMax, val1, val2) {\n        return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n      }\n\n      function easeIn(t, tMin, tMax, val1, val2) {\n        return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n      }\n\n      function ease(t, tMin, tMax, val1, val2) {\n        return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n      }\n\n      function applyEase(fn, t, tMin, tMax, val1, val2) {\n        if (val1 === undefined) {\n          val1 = tMin;\n          val2 = tMax;\n        } else {\n          t = (t - tMin) / (tMax - tMin);\n        }\n\n        if (t > 1) {\n          t = 1;\n        } else if (t < 0) {\n          t = 0;\n        }\n\n        var mult = fn(t);\n\n        if ($bm_isInstanceOfArray(val1)) {\n          var iKey;\n          var lenKey = val1.length;\n          var arr = createTypedArray('float32', lenKey);\n\n          for (iKey = 0; iKey < lenKey; iKey += 1) {\n            arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n          }\n\n          return arr;\n        }\n\n        return (val2 - val1) * mult + val1;\n      }\n\n      function nearestKey(time) {\n        var iKey;\n        var lenKey = data.k.length;\n        var index;\n        var keyTime;\n\n        if (!data.k.length || typeof data.k[0] === 'number') {\n          index = 0;\n          keyTime = 0;\n        } else {\n          index = -1;\n          time *= elem.comp.globalData.frameRate;\n\n          if (time < data.k[0].t) {\n            index = 1;\n            keyTime = data.k[0].t;\n          } else {\n            for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n              if (time === data.k[iKey].t) {\n                index = iKey + 1;\n                keyTime = data.k[iKey].t;\n                break;\n              } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n                if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n                  index = iKey + 2;\n                  keyTime = data.k[iKey + 1].t;\n                } else {\n                  index = iKey + 1;\n                  keyTime = data.k[iKey].t;\n                }\n\n                break;\n              }\n            }\n\n            if (index === -1) {\n              index = iKey + 1;\n              keyTime = data.k[iKey].t;\n            }\n          }\n        }\n\n        var obKey = {};\n        obKey.index = index;\n        obKey.time = keyTime / elem.comp.globalData.frameRate;\n        return obKey;\n      }\n\n      function key(ind) {\n        var obKey;\n        var iKey;\n        var lenKey;\n\n        if (!data.k.length || typeof data.k[0] === 'number') {\n          throw new Error('The property has no keyframe at index ' + ind);\n        }\n\n        ind -= 1;\n        obKey = {\n          time: data.k[ind].t / elem.comp.globalData.frameRate,\n          value: []\n        };\n        var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n        lenKey = arr.length;\n\n        for (iKey = 0; iKey < lenKey; iKey += 1) {\n          obKey[iKey] = arr[iKey];\n          obKey.value[iKey] = arr[iKey];\n        }\n\n        return obKey;\n      }\n\n      function framesToTime(fr, fps) {\n        if (!fps) {\n          fps = elem.comp.globalData.frameRate;\n        }\n\n        return fr / fps;\n      }\n\n      function timeToFrames(t, fps) {\n        if (!t && t !== 0) {\n          t = time;\n        }\n\n        if (!fps) {\n          fps = elem.comp.globalData.frameRate;\n        }\n\n        return t * fps;\n      }\n\n      function seedRandom(seed) {\n        BMMath.seedrandom(randSeed + seed);\n      }\n\n      function sourceRectAtTime() {\n        return elem.sourceRectAtTime();\n      }\n\n      function substring(init, end) {\n        if (typeof value === 'string') {\n          if (end === undefined) {\n            return value.substring(init);\n          }\n\n          return value.substring(init, end);\n        }\n\n        return '';\n      }\n\n      function substr(init, end) {\n        if (typeof value === 'string') {\n          if (end === undefined) {\n            return value.substr(init);\n          }\n\n          return value.substr(init, end);\n        }\n\n        return '';\n      }\n\n      function posterizeTime(framesPerSecond) {\n        time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n        value = valueAtTime(time);\n      }\n\n      var time;\n      var velocity;\n      var value;\n      var text;\n      var textIndex;\n      var textTotal;\n      var selectorValue;\n      var index = elem.data.ind;\n      var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n      var parent;\n      var randSeed = Math.floor(Math.random() * 1000000);\n      var globalData = elem.globalData;\n\n      function executeExpression(_value) {\n        // globalData.pushExpression();\n        value = _value;\n\n        if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n          return value;\n        }\n\n        if (this.propType === 'textSelector') {\n          textIndex = this.textIndex;\n          textTotal = this.textTotal;\n          selectorValue = this.selectorValue;\n        }\n\n        if (!thisLayer) {\n          text = elem.layerInterface.text;\n          thisLayer = elem.layerInterface;\n          thisComp = elem.comp.compInterface;\n          toWorld = thisLayer.toWorld.bind(thisLayer);\n          fromWorld = thisLayer.fromWorld.bind(thisLayer);\n          fromComp = thisLayer.fromComp.bind(thisLayer);\n          toComp = thisLayer.toComp.bind(thisLayer);\n          mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n          fromCompToSurface = fromComp;\n        }\n\n        if (!transform) {\n          transform = elem.layerInterface('ADBE Transform Group');\n          $bm_transform = transform;\n\n          if (transform) {\n            anchorPoint = transform.anchorPoint;\n            /* position = transform.position;\r\n                      rotation = transform.rotation;\r\n                      scale = transform.scale; */\n          }\n        }\n\n        if (elemType === 4 && !content) {\n          content = thisLayer('ADBE Root Vectors Group');\n        }\n\n        if (!effect) {\n          effect = thisLayer(4);\n        }\n\n        hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n        if (hasParent && !parent) {\n          parent = elem.hierarchy[0].layerInterface;\n        }\n\n        time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n        if (_needsRandom) {\n          seedRandom(randSeed + time);\n        }\n\n        if (needsVelocity) {\n          velocity = velocityAtTime(time);\n        }\n\n        expression_function();\n        this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n        // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n        scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n        return scoped_bm_rt;\n      } // Bundlers will see these as dead code and unless we reference them\n\n\n      executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n      return executeExpression;\n    }\n\n    ob.initiateExpression = initiateExpression;\n    ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n    ob.resetFrame = resetFrame;\n    return ob;\n  }();\n\n  var Expressions = function () {\n    var ob = {};\n    ob.initExpressions = initExpressions;\n    ob.resetFrame = ExpressionManager.resetFrame;\n\n    function initExpressions(animation) {\n      var stackCount = 0;\n      var registers = [];\n\n      function pushExpression() {\n        stackCount += 1;\n      }\n\n      function popExpression() {\n        stackCount -= 1;\n\n        if (stackCount === 0) {\n          releaseInstances();\n        }\n      }\n\n      function registerExpressionProperty(expression) {\n        if (registers.indexOf(expression) === -1) {\n          registers.push(expression);\n        }\n      }\n\n      function releaseInstances() {\n        var i;\n        var len = registers.length;\n\n        for (i = 0; i < len; i += 1) {\n          registers[i].release();\n        }\n\n        registers.length = 0;\n      }\n\n      animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n      animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n      animation.renderer.globalData.pushExpression = pushExpression;\n      animation.renderer.globalData.popExpression = popExpression;\n      animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n    }\n\n    return ob;\n  }();\n\n  var MaskManagerInterface = function () {\n    function MaskInterface(mask, data) {\n      this._mask = mask;\n      this._data = data;\n    }\n\n    Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n      get: function get() {\n        if (this._mask.prop.k) {\n          this._mask.prop.getValue();\n        }\n\n        return this._mask.prop;\n      }\n    });\n    Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n      get: function get() {\n        if (this._mask.op.k) {\n          this._mask.op.getValue();\n        }\n\n        return this._mask.op.v * 100;\n      }\n    });\n\n    var MaskManager = function MaskManager(maskManager) {\n      var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n      var i;\n      var len = maskManager.viewData.length;\n\n      for (i = 0; i < len; i += 1) {\n        _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n      }\n\n      var maskFunction = function maskFunction(name) {\n        i = 0;\n\n        while (i < len) {\n          if (maskManager.masksProperties[i].nm === name) {\n            return _masksInterfaces[i];\n          }\n\n          i += 1;\n        }\n\n        return null;\n      };\n\n      return maskFunction;\n    };\n\n    return MaskManager;\n  }();\n\n  var ExpressionPropertyInterface = function () {\n    var defaultUnidimensionalValue = {\n      pv: 0,\n      v: 0,\n      mult: 1\n    };\n    var defaultMultidimensionalValue = {\n      pv: [0, 0, 0],\n      v: [0, 0, 0],\n      mult: 1\n    };\n\n    function completeProperty(expressionValue, property, type) {\n      Object.defineProperty(expressionValue, 'velocity', {\n        get: function get() {\n          return property.getVelocityAtTime(property.comp.currentFrame);\n        }\n      });\n      expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n      expressionValue.key = function (pos) {\n        if (!expressionValue.numKeys) {\n          return 0;\n        }\n\n        var value = '';\n\n        if ('s' in property.keyframes[pos - 1]) {\n          value = property.keyframes[pos - 1].s;\n        } else if ('e' in property.keyframes[pos - 2]) {\n          value = property.keyframes[pos - 2].e;\n        } else {\n          value = property.keyframes[pos - 2].s;\n        }\n\n        var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n        valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n        valueProp.value = type === 'unidimensional' ? value[0] : value;\n        return valueProp;\n      };\n\n      expressionValue.valueAtTime = property.getValueAtTime;\n      expressionValue.speedAtTime = property.getSpeedAtTime;\n      expressionValue.velocityAtTime = property.getVelocityAtTime;\n      expressionValue.propertyGroup = property.propertyGroup;\n    }\n\n    function UnidimensionalPropertyInterface(property) {\n      if (!property || !('pv' in property)) {\n        property = defaultUnidimensionalValue;\n      }\n\n      var mult = 1 / property.mult;\n      var val = property.pv * mult;\n      var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n      expressionValue.value = val;\n      completeProperty(expressionValue, property, 'unidimensional');\n      return function () {\n        if (property.k) {\n          property.getValue();\n        }\n\n        val = property.v * mult;\n\n        if (expressionValue.value !== val) {\n          expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n          expressionValue.value = val;\n          completeProperty(expressionValue, property, 'unidimensional');\n        }\n\n        return expressionValue;\n      };\n    }\n\n    function MultidimensionalPropertyInterface(property) {\n      if (!property || !('pv' in property)) {\n        property = defaultMultidimensionalValue;\n      }\n\n      var mult = 1 / property.mult;\n      var len = property.data && property.data.l || property.pv.length;\n      var expressionValue = createTypedArray('float32', len);\n      var arrValue = createTypedArray('float32', len);\n      expressionValue.value = arrValue;\n      completeProperty(expressionValue, property, 'multidimensional');\n      return function () {\n        if (property.k) {\n          property.getValue();\n        }\n\n        for (var i = 0; i < len; i += 1) {\n          arrValue[i] = property.v[i] * mult;\n          expressionValue[i] = arrValue[i];\n        }\n\n        return expressionValue;\n      };\n    } // TODO: try to avoid using this getter\n\n\n    function defaultGetter() {\n      return defaultUnidimensionalValue;\n    }\n\n    return function (property) {\n      if (!property) {\n        return defaultGetter;\n      }\n\n      if (property.propType === 'unidimensional') {\n        return UnidimensionalPropertyInterface(property);\n      }\n\n      return MultidimensionalPropertyInterface(property);\n    };\n  }();\n\n  var TransformExpressionInterface = function () {\n    return function (transform) {\n      function _thisFunction(name) {\n        switch (name) {\n          case 'scale':\n          case 'Scale':\n          case 'ADBE Scale':\n          case 6:\n            return _thisFunction.scale;\n\n          case 'rotation':\n          case 'Rotation':\n          case 'ADBE Rotation':\n          case 'ADBE Rotate Z':\n          case 10:\n            return _thisFunction.rotation;\n\n          case 'ADBE Rotate X':\n            return _thisFunction.xRotation;\n\n          case 'ADBE Rotate Y':\n            return _thisFunction.yRotation;\n\n          case 'position':\n          case 'Position':\n          case 'ADBE Position':\n          case 2:\n            return _thisFunction.position;\n\n          case 'ADBE Position_0':\n            return _thisFunction.xPosition;\n\n          case 'ADBE Position_1':\n            return _thisFunction.yPosition;\n\n          case 'ADBE Position_2':\n            return _thisFunction.zPosition;\n\n          case 'anchorPoint':\n          case 'AnchorPoint':\n          case 'Anchor Point':\n          case 'ADBE AnchorPoint':\n          case 1:\n            return _thisFunction.anchorPoint;\n\n          case 'opacity':\n          case 'Opacity':\n          case 11:\n            return _thisFunction.opacity;\n\n          default:\n            return null;\n        }\n      }\n\n      Object.defineProperty(_thisFunction, 'rotation', {\n        get: ExpressionPropertyInterface(transform.r || transform.rz)\n      });\n      Object.defineProperty(_thisFunction, 'zRotation', {\n        get: ExpressionPropertyInterface(transform.rz || transform.r)\n      });\n      Object.defineProperty(_thisFunction, 'xRotation', {\n        get: ExpressionPropertyInterface(transform.rx)\n      });\n      Object.defineProperty(_thisFunction, 'yRotation', {\n        get: ExpressionPropertyInterface(transform.ry)\n      });\n      Object.defineProperty(_thisFunction, 'scale', {\n        get: ExpressionPropertyInterface(transform.s)\n      });\n\n      var _px;\n\n      var _py;\n\n      var _pz;\n\n      var _transformFactory;\n\n      if (transform.p) {\n        _transformFactory = ExpressionPropertyInterface(transform.p);\n      } else {\n        _px = ExpressionPropertyInterface(transform.px);\n        _py = ExpressionPropertyInterface(transform.py);\n\n        if (transform.pz) {\n          _pz = ExpressionPropertyInterface(transform.pz);\n        }\n      }\n\n      Object.defineProperty(_thisFunction, 'position', {\n        get: function get() {\n          if (transform.p) {\n            return _transformFactory();\n          }\n\n          return [_px(), _py(), _pz ? _pz() : 0];\n        }\n      });\n      Object.defineProperty(_thisFunction, 'xPosition', {\n        get: ExpressionPropertyInterface(transform.px)\n      });\n      Object.defineProperty(_thisFunction, 'yPosition', {\n        get: ExpressionPropertyInterface(transform.py)\n      });\n      Object.defineProperty(_thisFunction, 'zPosition', {\n        get: ExpressionPropertyInterface(transform.pz)\n      });\n      Object.defineProperty(_thisFunction, 'anchorPoint', {\n        get: ExpressionPropertyInterface(transform.a)\n      });\n      Object.defineProperty(_thisFunction, 'opacity', {\n        get: ExpressionPropertyInterface(transform.o)\n      });\n      Object.defineProperty(_thisFunction, 'skew', {\n        get: ExpressionPropertyInterface(transform.sk)\n      });\n      Object.defineProperty(_thisFunction, 'skewAxis', {\n        get: ExpressionPropertyInterface(transform.sa)\n      });\n      Object.defineProperty(_thisFunction, 'orientation', {\n        get: ExpressionPropertyInterface(transform.or)\n      });\n      return _thisFunction;\n    };\n  }();\n\n  var LayerExpressionInterface = function () {\n    function getMatrix(time) {\n      var toWorldMat = new Matrix();\n\n      if (time !== undefined) {\n        var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n        propMatrix.clone(toWorldMat);\n      } else {\n        var transformMat = this._elem.finalTransform.mProp;\n        transformMat.applyToMatrix(toWorldMat);\n      }\n\n      return toWorldMat;\n    }\n\n    function toWorldVec(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      toWorldMat.props[12] = 0;\n      toWorldMat.props[13] = 0;\n      toWorldMat.props[14] = 0;\n      return this.applyPoint(toWorldMat, arr);\n    }\n\n    function toWorld(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      return this.applyPoint(toWorldMat, arr);\n    }\n\n    function fromWorldVec(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      toWorldMat.props[12] = 0;\n      toWorldMat.props[13] = 0;\n      toWorldMat.props[14] = 0;\n      return this.invertPoint(toWorldMat, arr);\n    }\n\n    function fromWorld(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      return this.invertPoint(toWorldMat, arr);\n    }\n\n    function applyPoint(matrix, arr) {\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\n        var i;\n        var len = this._elem.hierarchy.length;\n\n        for (i = 0; i < len; i += 1) {\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n        }\n      }\n\n      return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n    }\n\n    function invertPoint(matrix, arr) {\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\n        var i;\n        var len = this._elem.hierarchy.length;\n\n        for (i = 0; i < len; i += 1) {\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n        }\n      }\n\n      return matrix.inversePoint(arr);\n    }\n\n    function fromComp(arr) {\n      var toWorldMat = new Matrix();\n      toWorldMat.reset();\n\n      this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\n        var i;\n        var len = this._elem.hierarchy.length;\n\n        for (i = 0; i < len; i += 1) {\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n        }\n\n        return toWorldMat.inversePoint(arr);\n      }\n\n      return toWorldMat.inversePoint(arr);\n    }\n\n    function sampleImage() {\n      return [1, 1, 1, 1];\n    }\n\n    return function (elem) {\n      var transformInterface;\n\n      function _registerMaskInterface(maskManager) {\n        _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n      }\n\n      function _registerEffectsInterface(effects) {\n        _thisLayerFunction.effect = effects;\n      }\n\n      function _thisLayerFunction(name) {\n        switch (name) {\n          case 'ADBE Root Vectors Group':\n          case 'Contents':\n          case 2:\n            return _thisLayerFunction.shapeInterface;\n\n          case 1:\n          case 6:\n          case 'Transform':\n          case 'transform':\n          case 'ADBE Transform Group':\n            return transformInterface;\n\n          case 4:\n          case 'ADBE Effect Parade':\n          case 'effects':\n          case 'Effects':\n            return _thisLayerFunction.effect;\n\n          case 'ADBE Text Properties':\n            return _thisLayerFunction.textInterface;\n\n          default:\n            return null;\n        }\n      }\n\n      _thisLayerFunction.getMatrix = getMatrix;\n      _thisLayerFunction.invertPoint = invertPoint;\n      _thisLayerFunction.applyPoint = applyPoint;\n      _thisLayerFunction.toWorld = toWorld;\n      _thisLayerFunction.toWorldVec = toWorldVec;\n      _thisLayerFunction.fromWorld = fromWorld;\n      _thisLayerFunction.fromWorldVec = fromWorldVec;\n      _thisLayerFunction.toComp = toWorld;\n      _thisLayerFunction.fromComp = fromComp;\n      _thisLayerFunction.sampleImage = sampleImage;\n      _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n      _thisLayerFunction._elem = elem;\n      transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n      var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n      Object.defineProperties(_thisLayerFunction, {\n        hasParent: {\n          get: function get() {\n            return elem.hierarchy.length;\n          }\n        },\n        parent: {\n          get: function get() {\n            return elem.hierarchy[0].layerInterface;\n          }\n        },\n        rotation: getDescriptor(transformInterface, 'rotation'),\n        scale: getDescriptor(transformInterface, 'scale'),\n        position: getDescriptor(transformInterface, 'position'),\n        opacity: getDescriptor(transformInterface, 'opacity'),\n        anchorPoint: anchorPointDescriptor,\n        anchor_point: anchorPointDescriptor,\n        transform: {\n          get: function get() {\n            return transformInterface;\n          }\n        },\n        active: {\n          get: function get() {\n            return elem.isInRange;\n          }\n        }\n      });\n      _thisLayerFunction.startTime = elem.data.st;\n      _thisLayerFunction.index = elem.data.ind;\n      _thisLayerFunction.source = elem.data.refId;\n      _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n      _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n      _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n      _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n      _thisLayerFunction._name = elem.data.nm;\n      _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n      _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n      return _thisLayerFunction;\n    };\n  }();\n\n  var propertyGroupFactory = function () {\n    return function (interfaceFunction, parentPropertyGroup) {\n      return function (val) {\n        val = val === undefined ? 1 : val;\n\n        if (val <= 0) {\n          return interfaceFunction;\n        }\n\n        return parentPropertyGroup(val - 1);\n      };\n    };\n  }();\n\n  var PropertyInterface = function () {\n    return function (propertyName, propertyGroup) {\n      var interfaceFunction = {\n        _name: propertyName\n      };\n\n      function _propertyGroup(val) {\n        val = val === undefined ? 1 : val;\n\n        if (val <= 0) {\n          return interfaceFunction;\n        }\n\n        return propertyGroup(val - 1);\n      }\n\n      return _propertyGroup;\n    };\n  }();\n\n  var EffectsExpressionInterface = function () {\n    var ob = {\n      createEffectsInterface: createEffectsInterface\n    };\n\n    function createEffectsInterface(elem, propertyGroup) {\n      if (elem.effectsManager) {\n        var effectElements = [];\n        var effectsData = elem.data.ef;\n        var i;\n        var len = elem.effectsManager.effectElements.length;\n\n        for (i = 0; i < len; i += 1) {\n          effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n        }\n\n        var effects = elem.data.ef || [];\n\n        var groupInterface = function groupInterface(name) {\n          i = 0;\n          len = effects.length;\n\n          while (i < len) {\n            if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n              return effectElements[i];\n            }\n\n            i += 1;\n          }\n\n          return null;\n        };\n\n        Object.defineProperty(groupInterface, 'numProperties', {\n          get: function get() {\n            return effects.length;\n          }\n        });\n        return groupInterface;\n      }\n\n      return null;\n    }\n\n    function createGroupInterface(data, elements, propertyGroup, elem) {\n      function groupInterface(name) {\n        var effects = data.ef;\n        var i = 0;\n        var len = effects.length;\n\n        while (i < len) {\n          if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n            if (effects[i].ty === 5) {\n              return effectElements[i];\n            }\n\n            return effectElements[i]();\n          }\n\n          i += 1;\n        }\n\n        throw new Error();\n      }\n\n      var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n      var effectElements = [];\n      var i;\n      var len = data.ef.length;\n\n      for (i = 0; i < len; i += 1) {\n        if (data.ef[i].ty === 5) {\n          effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n        } else {\n          effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n        }\n      }\n\n      if (data.mn === 'ADBE Color Control') {\n        Object.defineProperty(groupInterface, 'color', {\n          get: function get() {\n            return effectElements[0]();\n          }\n        });\n      }\n\n      Object.defineProperties(groupInterface, {\n        numProperties: {\n          get: function get() {\n            return data.np;\n          }\n        },\n        _name: {\n          value: data.nm\n        },\n        propertyGroup: {\n          value: _propertyGroup\n        }\n      });\n      groupInterface.enabled = data.en !== 0;\n      groupInterface.active = groupInterface.enabled;\n      return groupInterface;\n    }\n\n    function createValueInterface(element, type, elem, propertyGroup) {\n      var expressionProperty = ExpressionPropertyInterface(element.p);\n\n      function interfaceFunction() {\n        if (type === 10) {\n          return elem.comp.compInterface(element.p.v);\n        }\n\n        return expressionProperty();\n      }\n\n      if (element.p.setGroupProperty) {\n        element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n      }\n\n      return interfaceFunction;\n    }\n\n    return ob;\n  }();\n\n  var ShapePathInterface = function () {\n    return function pathInterfaceFactory(shape, view, propertyGroup) {\n      var prop = view.sh;\n\n      function interfaceFunction(val) {\n        if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n          return interfaceFunction.path;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        path: {\n          get: function get() {\n            if (prop.k) {\n              prop.getValue();\n            }\n\n            return prop;\n          }\n        },\n        shape: {\n          get: function get() {\n            if (prop.k) {\n              prop.getValue();\n            }\n\n            return prop;\n          }\n        },\n        _name: {\n          value: shape.nm\n        },\n        ix: {\n          value: shape.ix\n        },\n        propertyIndex: {\n          value: shape.ix\n        },\n        mn: {\n          value: shape.mn\n        },\n        propertyGroup: {\n          value: propertyGroup\n        }\n      });\n      return interfaceFunction;\n    };\n  }();\n\n  var ShapeExpressionInterface = function () {\n    function iterateElements(shapes, view, propertyGroup) {\n      var arr = [];\n      var i;\n      var len = shapes ? shapes.length : 0;\n\n      for (i = 0; i < len; i += 1) {\n        if (shapes[i].ty === 'gr') {\n          arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'fl') {\n          arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'st') {\n          arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'tm') {\n          arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n        } else if (shapes[i].ty === 'el') {\n          arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'sr') {\n          arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'sh') {\n          arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'rc') {\n          arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'rd') {\n          arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'rp') {\n          arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'gf') {\n          arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else {\n          arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n        }\n      }\n\n      return arr;\n    }\n\n    function contentsInterfaceFactory(shape, view, propertyGroup) {\n      var interfaces;\n\n      var interfaceFunction = function _interfaceFunction(value) {\n        var i = 0;\n        var len = interfaces.length;\n\n        while (i < len) {\n          if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n            return interfaces[i];\n          }\n\n          i += 1;\n        }\n\n        if (typeof value === 'number') {\n          return interfaces[value - 1];\n        }\n\n        return null;\n      };\n\n      interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n      interfaceFunction.numProperties = interfaces.length;\n      var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n      interfaceFunction.transform = transformInterface;\n      interfaceFunction.propertyIndex = shape.cix;\n      interfaceFunction._name = shape.nm;\n      return interfaceFunction;\n    }\n\n    function groupInterfaceFactory(shape, view, propertyGroup) {\n      var interfaceFunction = function _interfaceFunction(value) {\n        switch (value) {\n          case 'ADBE Vectors Group':\n          case 'Contents':\n          case 2:\n            return interfaceFunction.content;\n          // Not necessary for now. Keeping them here in case a new case appears\n          // case 'ADBE Vector Transform Group':\n          // case 3:\n\n          default:\n            return interfaceFunction.transform;\n        }\n      };\n\n      interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n      var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n      interfaceFunction.content = content;\n      interfaceFunction.transform = transformInterface;\n      Object.defineProperty(interfaceFunction, '_name', {\n        get: function get() {\n          return shape.nm;\n        }\n      }); // interfaceFunction.content = interfaceFunction;\n\n      interfaceFunction.numProperties = shape.np;\n      interfaceFunction.propertyIndex = shape.ix;\n      interfaceFunction.nm = shape.nm;\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function fillInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(val) {\n        if (val === 'Color' || val === 'color') {\n          return interfaceFunction.color;\n        }\n\n        if (val === 'Opacity' || val === 'opacity') {\n          return interfaceFunction.opacity;\n        }\n\n        return null;\n      }\n\n      Object.defineProperties(interfaceFunction, {\n        color: {\n          get: ExpressionPropertyInterface(view.c)\n        },\n        opacity: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        _name: {\n          value: shape.nm\n        },\n        mn: {\n          value: shape.mn\n        }\n      });\n      view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n      return interfaceFunction;\n    }\n\n    function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(val) {\n        if (val === 'Start Point' || val === 'start point') {\n          return interfaceFunction.startPoint;\n        }\n\n        if (val === 'End Point' || val === 'end point') {\n          return interfaceFunction.endPoint;\n        }\n\n        if (val === 'Opacity' || val === 'opacity') {\n          return interfaceFunction.opacity;\n        }\n\n        return null;\n      }\n\n      Object.defineProperties(interfaceFunction, {\n        startPoint: {\n          get: ExpressionPropertyInterface(view.s)\n        },\n        endPoint: {\n          get: ExpressionPropertyInterface(view.e)\n        },\n        opacity: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        type: {\n          get: function get() {\n            return 'a';\n          }\n        },\n        _name: {\n          value: shape.nm\n        },\n        mn: {\n          value: shape.mn\n        }\n      });\n      view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n      view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n      return interfaceFunction;\n    }\n\n    function defaultInterfaceFactory() {\n      function interfaceFunction() {\n        return null;\n      }\n\n      return interfaceFunction;\n    }\n\n    function strokeInterfaceFactory(shape, view, propertyGroup) {\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n      function addPropertyToDashOb(i) {\n        Object.defineProperty(dashOb, shape.d[i].nm, {\n          get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n        });\n      }\n\n      var i;\n      var len = shape.d ? shape.d.length : 0;\n      var dashOb = {};\n\n      for (i = 0; i < len; i += 1) {\n        addPropertyToDashOb(i);\n        view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n      }\n\n      function interfaceFunction(val) {\n        if (val === 'Color' || val === 'color') {\n          return interfaceFunction.color;\n        }\n\n        if (val === 'Opacity' || val === 'opacity') {\n          return interfaceFunction.opacity;\n        }\n\n        if (val === 'Stroke Width' || val === 'stroke width') {\n          return interfaceFunction.strokeWidth;\n        }\n\n        return null;\n      }\n\n      Object.defineProperties(interfaceFunction, {\n        color: {\n          get: ExpressionPropertyInterface(view.c)\n        },\n        opacity: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        strokeWidth: {\n          get: ExpressionPropertyInterface(view.w)\n        },\n        dash: {\n          get: function get() {\n            return dashOb;\n          }\n        },\n        _name: {\n          value: shape.nm\n        },\n        mn: {\n          value: shape.mn\n        }\n      });\n      view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n      view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n      return interfaceFunction;\n    }\n\n    function trimInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(val) {\n        if (val === shape.e.ix || val === 'End' || val === 'end') {\n          return interfaceFunction.end;\n        }\n\n        if (val === shape.s.ix) {\n          return interfaceFunction.start;\n        }\n\n        if (val === shape.o.ix) {\n          return interfaceFunction.offset;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      interfaceFunction.propertyIndex = shape.ix;\n      view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n      view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n      interfaceFunction.propertyIndex = shape.ix;\n      interfaceFunction.propertyGroup = propertyGroup;\n      Object.defineProperties(interfaceFunction, {\n        start: {\n          get: ExpressionPropertyInterface(view.s)\n        },\n        end: {\n          get: ExpressionPropertyInterface(view.e)\n        },\n        offset: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function transformInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.a.ix === value || value === 'Anchor Point') {\n          return interfaceFunction.anchorPoint;\n        }\n\n        if (shape.o.ix === value || value === 'Opacity') {\n          return interfaceFunction.opacity;\n        }\n\n        if (shape.p.ix === value || value === 'Position') {\n          return interfaceFunction.position;\n        }\n\n        if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n          return interfaceFunction.rotation;\n        }\n\n        if (shape.s.ix === value || value === 'Scale') {\n          return interfaceFunction.scale;\n        }\n\n        if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n          return interfaceFunction.skew;\n        }\n\n        if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n          return interfaceFunction.skewAxis;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n      view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n      view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n      view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n      if (view.transform.mProps.sk) {\n        view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n        view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n      }\n\n      view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        opacity: {\n          get: ExpressionPropertyInterface(view.transform.mProps.o)\n        },\n        position: {\n          get: ExpressionPropertyInterface(view.transform.mProps.p)\n        },\n        anchorPoint: {\n          get: ExpressionPropertyInterface(view.transform.mProps.a)\n        },\n        scale: {\n          get: ExpressionPropertyInterface(view.transform.mProps.s)\n        },\n        rotation: {\n          get: ExpressionPropertyInterface(view.transform.mProps.r)\n        },\n        skew: {\n          get: ExpressionPropertyInterface(view.transform.mProps.sk)\n        },\n        skewAxis: {\n          get: ExpressionPropertyInterface(view.transform.mProps.sa)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.ty = 'tr';\n      interfaceFunction.mn = shape.mn;\n      interfaceFunction.propertyGroup = propertyGroup;\n      return interfaceFunction;\n    }\n\n    function ellipseInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.p.ix === value) {\n          return interfaceFunction.position;\n        }\n\n        if (shape.s.ix === value) {\n          return interfaceFunction.size;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      interfaceFunction.propertyIndex = shape.ix;\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n      prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        size: {\n          get: ExpressionPropertyInterface(prop.s)\n        },\n        position: {\n          get: ExpressionPropertyInterface(prop.p)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function starInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.p.ix === value) {\n          return interfaceFunction.position;\n        }\n\n        if (shape.r.ix === value) {\n          return interfaceFunction.rotation;\n        }\n\n        if (shape.pt.ix === value) {\n          return interfaceFunction.points;\n        }\n\n        if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n          return interfaceFunction.outerRadius;\n        }\n\n        if (shape.os.ix === value) {\n          return interfaceFunction.outerRoundness;\n        }\n\n        if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n          return interfaceFunction.innerRadius;\n        }\n\n        if (shape.is && shape.is.ix === value) {\n          return interfaceFunction.innerRoundness;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n      prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n      prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n      if (shape.ir) {\n        prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n        prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n      }\n\n      Object.defineProperties(interfaceFunction, {\n        position: {\n          get: ExpressionPropertyInterface(prop.p)\n        },\n        rotation: {\n          get: ExpressionPropertyInterface(prop.r)\n        },\n        points: {\n          get: ExpressionPropertyInterface(prop.pt)\n        },\n        outerRadius: {\n          get: ExpressionPropertyInterface(prop.or)\n        },\n        outerRoundness: {\n          get: ExpressionPropertyInterface(prop.os)\n        },\n        innerRadius: {\n          get: ExpressionPropertyInterface(prop.ir)\n        },\n        innerRoundness: {\n          get: ExpressionPropertyInterface(prop.is)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function rectInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.p.ix === value) {\n          return interfaceFunction.position;\n        }\n\n        if (shape.r.ix === value) {\n          return interfaceFunction.roundness;\n        }\n\n        if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n          return interfaceFunction.size;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n      prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        position: {\n          get: ExpressionPropertyInterface(prop.p)\n        },\n        roundness: {\n          get: ExpressionPropertyInterface(prop.r)\n        },\n        size: {\n          get: ExpressionPropertyInterface(prop.s)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function roundedInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.r.ix === value || value === 'Round Corners 1') {\n          return interfaceFunction.radius;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var prop = view;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        radius: {\n          get: ExpressionPropertyInterface(prop.rd)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    function repeaterInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.c.ix === value || value === 'Copies') {\n          return interfaceFunction.copies;\n        }\n\n        if (shape.o.ix === value || value === 'Offset') {\n          return interfaceFunction.offset;\n        }\n\n        return null;\n      }\n\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n      var prop = view;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n      prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        copies: {\n          get: ExpressionPropertyInterface(prop.c)\n        },\n        offset: {\n          get: ExpressionPropertyInterface(prop.o)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n\n    return function (shapes, view, propertyGroup) {\n      var interfaces;\n\n      function _interfaceFunction(value) {\n        if (typeof value === 'number') {\n          value = value === undefined ? 1 : value;\n\n          if (value === 0) {\n            return propertyGroup;\n          }\n\n          return interfaces[value - 1];\n        }\n\n        var i = 0;\n        var len = interfaces.length;\n\n        while (i < len) {\n          if (interfaces[i]._name === value) {\n            return interfaces[i];\n          }\n\n          i += 1;\n        }\n\n        return null;\n      }\n\n      function parentGroupWrapper() {\n        return propertyGroup;\n      }\n\n      _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n      interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n      _interfaceFunction.numProperties = interfaces.length;\n      _interfaceFunction._name = 'Contents';\n      return _interfaceFunction;\n    };\n  }();\n\n  var TextExpressionInterface = function () {\n    return function (elem) {\n      var _sourceText;\n\n      function _thisLayerFunction(name) {\n        switch (name) {\n          case 'ADBE Text Document':\n            return _thisLayerFunction.sourceText;\n\n          default:\n            return null;\n        }\n      }\n\n      Object.defineProperty(_thisLayerFunction, 'sourceText', {\n        get: function get() {\n          elem.textProperty.getValue();\n          var stringValue = elem.textProperty.currentData.t;\n\n          if (!_sourceText || stringValue !== _sourceText.value) {\n            _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n            // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n            _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n            Object.defineProperty(_sourceText, 'style', {\n              get: function get() {\n                return {\n                  fillColor: elem.textProperty.currentData.fc\n                };\n              }\n            });\n          }\n\n          return _sourceText;\n        }\n      });\n      return _thisLayerFunction;\n    };\n  }();\n\n  function _typeof(obj) { \"@babel/helpers - typeof\"; 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); }\n\n  var FootageInterface = function () {\n    var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n      var currentPropertyName = '';\n      var currentProperty = elem.getFootageData();\n\n      function init() {\n        currentPropertyName = '';\n        currentProperty = elem.getFootageData();\n        return searchProperty;\n      }\n\n      function searchProperty(value) {\n        if (currentProperty[value]) {\n          currentPropertyName = value;\n          currentProperty = currentProperty[value];\n\n          if (_typeof(currentProperty) === 'object') {\n            return searchProperty;\n          }\n\n          return currentProperty;\n        }\n\n        var propertyNameIndex = value.indexOf(currentPropertyName);\n\n        if (propertyNameIndex !== -1) {\n          var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n          currentProperty = currentProperty[index];\n\n          if (_typeof(currentProperty) === 'object') {\n            return searchProperty;\n          }\n\n          return currentProperty;\n        }\n\n        return '';\n      }\n\n      return init;\n    };\n\n    var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n      function interfaceFunction(value) {\n        if (value === 'Outline') {\n          return interfaceFunction.outlineInterface();\n        }\n\n        return null;\n      }\n\n      interfaceFunction._name = 'Outline';\n      interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n      return interfaceFunction;\n    };\n\n    return function (elem) {\n      function _interfaceFunction(value) {\n        if (value === 'Data') {\n          return _interfaceFunction.dataInterface;\n        }\n\n        return null;\n      }\n\n      _interfaceFunction._name = 'Data';\n      _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n      return _interfaceFunction;\n    };\n  }();\n\n  var interfaces = {\n    layer: LayerExpressionInterface,\n    effects: EffectsExpressionInterface,\n    comp: CompExpressionInterface,\n    shape: ShapeExpressionInterface,\n    text: TextExpressionInterface,\n    footage: FootageInterface\n  };\n\n  function getInterface(type) {\n    return interfaces[type] || null;\n  }\n\n  var expressionHelpers = function () {\n    function searchExpressions(elem, data, prop) {\n      if (data.x) {\n        prop.k = true;\n        prop.x = true;\n        prop.initiateExpression = ExpressionManager.initiateExpression;\n        prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n      }\n    }\n\n    function getValueAtTime(frameNum) {\n      frameNum *= this.elem.globalData.frameRate;\n      frameNum -= this.offsetTime;\n\n      if (frameNum !== this._cachingAtTime.lastFrame) {\n        this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n        this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n        this._cachingAtTime.lastFrame = frameNum;\n      }\n\n      return this._cachingAtTime.value;\n    }\n\n    function getSpeedAtTime(frameNum) {\n      var delta = -0.01;\n      var v1 = this.getValueAtTime(frameNum);\n      var v2 = this.getValueAtTime(frameNum + delta);\n      var speed = 0;\n\n      if (v1.length) {\n        var i;\n\n        for (i = 0; i < v1.length; i += 1) {\n          speed += Math.pow(v2[i] - v1[i], 2);\n        }\n\n        speed = Math.sqrt(speed) * 100;\n      } else {\n        speed = 0;\n      }\n\n      return speed;\n    }\n\n    function getVelocityAtTime(frameNum) {\n      if (this.vel !== undefined) {\n        return this.vel;\n      }\n\n      var delta = -0.001; // frameNum += this.elem.data.st;\n\n      var v1 = this.getValueAtTime(frameNum);\n      var v2 = this.getValueAtTime(frameNum + delta);\n      var velocity;\n\n      if (v1.length) {\n        velocity = createTypedArray('float32', v1.length);\n        var i;\n\n        for (i = 0; i < v1.length; i += 1) {\n          // removing frameRate\n          // if needed, don't add it here\n          // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n          velocity[i] = (v2[i] - v1[i]) / delta;\n        }\n      } else {\n        velocity = (v2 - v1) / delta;\n      }\n\n      return velocity;\n    }\n\n    function getStaticValueAtTime() {\n      return this.pv;\n    }\n\n    function setGroupProperty(propertyGroup) {\n      this.propertyGroup = propertyGroup;\n    }\n\n    return {\n      searchExpressions: searchExpressions,\n      getSpeedAtTime: getSpeedAtTime,\n      getVelocityAtTime: getVelocityAtTime,\n      getValueAtTime: getValueAtTime,\n      getStaticValueAtTime: getStaticValueAtTime,\n      setGroupProperty: setGroupProperty\n    };\n  }();\n\n  function addPropertyDecorator() {\n    function loopOut(type, duration, durationFlag) {\n      if (!this.k || !this.keyframes) {\n        return this.pv;\n      }\n\n      type = type ? type.toLowerCase() : '';\n      var currentFrame = this.comp.renderedFrame;\n      var keyframes = this.keyframes;\n      var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n      if (currentFrame <= lastKeyFrame) {\n        return this.pv;\n      }\n\n      var cycleDuration;\n      var firstKeyFrame;\n\n      if (!durationFlag) {\n        if (!duration || duration > keyframes.length - 1) {\n          duration = keyframes.length - 1;\n        }\n\n        firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n        cycleDuration = lastKeyFrame - firstKeyFrame;\n      } else {\n        if (!duration) {\n          cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n        } else {\n          cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n        }\n\n        firstKeyFrame = lastKeyFrame - cycleDuration;\n      }\n\n      var i;\n      var len;\n      var ret;\n\n      if (type === 'pingpong') {\n        var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n        if (iterations % 2 !== 0) {\n          return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n        }\n      } else if (type === 'offset') {\n        var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n        var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n        var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n        var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n        if (this.pv.length) {\n          ret = new Array(initV.length);\n          len = ret.length;\n\n          for (i = 0; i < len; i += 1) {\n            ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n          }\n\n          return ret;\n        }\n\n        return (endV - initV) * repeats + current;\n      } else if (type === 'continue') {\n        var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n        var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n        if (this.pv.length) {\n          ret = new Array(lastValue.length);\n          len = ret.length;\n\n          for (i = 0; i < len; i += 1) {\n            ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n          }\n\n          return ret;\n        }\n\n        return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n      }\n\n      return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n    }\n\n    function loopIn(type, duration, durationFlag) {\n      if (!this.k) {\n        return this.pv;\n      }\n\n      type = type ? type.toLowerCase() : '';\n      var currentFrame = this.comp.renderedFrame;\n      var keyframes = this.keyframes;\n      var firstKeyFrame = keyframes[0].t;\n\n      if (currentFrame >= firstKeyFrame) {\n        return this.pv;\n      }\n\n      var cycleDuration;\n      var lastKeyFrame;\n\n      if (!durationFlag) {\n        if (!duration || duration > keyframes.length - 1) {\n          duration = keyframes.length - 1;\n        }\n\n        lastKeyFrame = keyframes[duration].t;\n        cycleDuration = lastKeyFrame - firstKeyFrame;\n      } else {\n        if (!duration) {\n          cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n        } else {\n          cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n        }\n\n        lastKeyFrame = firstKeyFrame + cycleDuration;\n      }\n\n      var i;\n      var len;\n      var ret;\n\n      if (type === 'pingpong') {\n        var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n        if (iterations % 2 === 0) {\n          return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n        }\n      } else if (type === 'offset') {\n        var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n        var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n        var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n        var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n        if (this.pv.length) {\n          ret = new Array(initV.length);\n          len = ret.length;\n\n          for (i = 0; i < len; i += 1) {\n            ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n          }\n\n          return ret;\n        }\n\n        return current - (endV - initV) * repeats;\n      } else if (type === 'continue') {\n        var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n        var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n        if (this.pv.length) {\n          ret = new Array(firstValue.length);\n          len = ret.length;\n\n          for (i = 0; i < len; i += 1) {\n            ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n          }\n\n          return ret;\n        }\n\n        return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n      }\n\n      return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n    }\n\n    function smooth(width, samples) {\n      if (!this.k) {\n        return this.pv;\n      }\n\n      width = (width || 0.4) * 0.5;\n      samples = Math.floor(samples || 5);\n\n      if (samples <= 1) {\n        return this.pv;\n      }\n\n      var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n      var initFrame = currentTime - width;\n      var endFrame = currentTime + width;\n      var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n      var i = 0;\n      var j = 0;\n      var value;\n\n      if (this.pv.length) {\n        value = createTypedArray('float32', this.pv.length);\n      } else {\n        value = 0;\n      }\n\n      var sampleValue;\n\n      while (i < samples) {\n        sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n        if (this.pv.length) {\n          for (j = 0; j < this.pv.length; j += 1) {\n            value[j] += sampleValue[j];\n          }\n        } else {\n          value += sampleValue;\n        }\n\n        i += 1;\n      }\n\n      if (this.pv.length) {\n        for (j = 0; j < this.pv.length; j += 1) {\n          value[j] /= samples;\n        }\n      } else {\n        value /= samples;\n      }\n\n      return value;\n    }\n\n    function getTransformValueAtTime(time) {\n      if (!this._transformCachingAtTime) {\n        this._transformCachingAtTime = {\n          v: new Matrix()\n        };\n      } /// /\n\n\n      var matrix = this._transformCachingAtTime.v;\n      matrix.cloneFromProps(this.pre.props);\n\n      if (this.appliedTransformations < 1) {\n        var anchor = this.a.getValueAtTime(time);\n        matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n      }\n\n      if (this.appliedTransformations < 2) {\n        var scale = this.s.getValueAtTime(time);\n        matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n      }\n\n      if (this.sk && this.appliedTransformations < 3) {\n        var skew = this.sk.getValueAtTime(time);\n        var skewAxis = this.sa.getValueAtTime(time);\n        matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n      }\n\n      if (this.r && this.appliedTransformations < 4) {\n        var rotation = this.r.getValueAtTime(time);\n        matrix.rotate(-rotation * this.r.mult);\n      } else if (!this.r && this.appliedTransformations < 4) {\n        var rotationZ = this.rz.getValueAtTime(time);\n        var rotationY = this.ry.getValueAtTime(time);\n        var rotationX = this.rx.getValueAtTime(time);\n        var orientation = this.or.getValueAtTime(time);\n        matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n      }\n\n      if (this.data.p && this.data.p.s) {\n        var positionX = this.px.getValueAtTime(time);\n        var positionY = this.py.getValueAtTime(time);\n\n        if (this.data.p.z) {\n          var positionZ = this.pz.getValueAtTime(time);\n          matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n        } else {\n          matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n        }\n      } else {\n        var position = this.p.getValueAtTime(time);\n        matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n      }\n\n      return matrix; /// /\n    }\n\n    function getTransformStaticValueAtTime() {\n      return this.v.clone(new Matrix());\n    }\n\n    var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n    TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n      var prop = getTransformProperty(elem, data, container);\n\n      if (prop.dynamicProperties.length) {\n        prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n      } else {\n        prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n      }\n\n      prop.setGroupProperty = expressionHelpers.setGroupProperty;\n      return prop;\n    };\n\n    var propertyGetProp = PropertyFactory.getProp;\n\n    PropertyFactory.getProp = function (elem, data, type, mult, container) {\n      var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n      // prop.loopOut = loopOut;\n      // prop.loopIn = loopIn;\n\n      if (prop.kf) {\n        prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n      } else {\n        prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n      }\n\n      prop.setGroupProperty = expressionHelpers.setGroupProperty;\n      prop.loopOut = loopOut;\n      prop.loopIn = loopIn;\n      prop.smooth = smooth;\n      prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n      prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n      prop.numKeys = data.a === 1 ? data.k.length : 0;\n      prop.propertyIndex = data.ix;\n      var value = 0;\n\n      if (type !== 0) {\n        value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n      }\n\n      prop._cachingAtTime = {\n        lastFrame: initialDefaultFrame,\n        lastIndex: 0,\n        value: value\n      };\n      expressionHelpers.searchExpressions(elem, data, prop);\n\n      if (prop.k) {\n        container.addDynamicProperty(prop);\n      }\n\n      return prop;\n    };\n\n    function getShapeValueAtTime(frameNum) {\n      // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n      if (!this._cachingAtTime) {\n        this._cachingAtTime = {\n          shapeValue: shapePool.clone(this.pv),\n          lastIndex: 0,\n          lastTime: initialDefaultFrame\n        };\n      }\n\n      frameNum *= this.elem.globalData.frameRate;\n      frameNum -= this.offsetTime;\n\n      if (frameNum !== this._cachingAtTime.lastTime) {\n        this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n        this._cachingAtTime.lastTime = frameNum;\n        this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n      }\n\n      return this._cachingAtTime.shapeValue;\n    }\n\n    var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n    var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n    function ShapeExpressions() {}\n\n    ShapeExpressions.prototype = {\n      vertices: function vertices(prop, time) {\n        if (this.k) {\n          this.getValue();\n        }\n\n        var shapePath = this.v;\n\n        if (time !== undefined) {\n          shapePath = this.getValueAtTime(time, 0);\n        }\n\n        var i;\n        var len = shapePath._length;\n        var vertices = shapePath[prop];\n        var points = shapePath.v;\n        var arr = createSizedArray(len);\n\n        for (i = 0; i < len; i += 1) {\n          if (prop === 'i' || prop === 'o') {\n            arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n          } else {\n            arr[i] = [vertices[i][0], vertices[i][1]];\n          }\n        }\n\n        return arr;\n      },\n      points: function points(time) {\n        return this.vertices('v', time);\n      },\n      inTangents: function inTangents(time) {\n        return this.vertices('i', time);\n      },\n      outTangents: function outTangents(time) {\n        return this.vertices('o', time);\n      },\n      isClosed: function isClosed() {\n        return this.v.c;\n      },\n      pointOnPath: function pointOnPath(perc, time) {\n        var shapePath = this.v;\n\n        if (time !== undefined) {\n          shapePath = this.getValueAtTime(time, 0);\n        }\n\n        if (!this._segmentsLength) {\n          this._segmentsLength = bez.getSegmentsLength(shapePath);\n        }\n\n        var segmentsLength = this._segmentsLength;\n        var lengths = segmentsLength.lengths;\n        var lengthPos = segmentsLength.totalLength * perc;\n        var i = 0;\n        var len = lengths.length;\n        var accumulatedLength = 0;\n        var pt;\n\n        while (i < len) {\n          if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n            var initIndex = i;\n            var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n            var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n            pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n            break;\n          } else {\n            accumulatedLength += lengths[i].addedLength;\n          }\n\n          i += 1;\n        }\n\n        if (!pt) {\n          pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n        }\n\n        return pt;\n      },\n      vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n        // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n        if (perc == 1) {\n          // eslint-disable-line eqeqeq\n          perc = this.v.c;\n        } else if (perc == 0) {\n          // eslint-disable-line eqeqeq\n          perc = 0.999;\n        }\n\n        var pt1 = this.pointOnPath(perc, time);\n        var pt2 = this.pointOnPath(perc + 0.001, time);\n        var xLength = pt2[0] - pt1[0];\n        var yLength = pt2[1] - pt1[1];\n        var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n        if (magnitude === 0) {\n          return [0, 0];\n        }\n\n        var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n        return unitVector;\n      },\n      tangentOnPath: function tangentOnPath(perc, time) {\n        return this.vectorOnPath(perc, time, 'tangent');\n      },\n      normalOnPath: function normalOnPath(perc, time) {\n        return this.vectorOnPath(perc, time, 'normal');\n      },\n      setGroupProperty: expressionHelpers.setGroupProperty,\n      getValueAtTime: expressionHelpers.getStaticValueAtTime\n    };\n    extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n    extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n    KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n    KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n    var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n    ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n      var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n      prop.propertyIndex = data.ix;\n      prop.lock = false;\n\n      if (type === 3) {\n        expressionHelpers.searchExpressions(elem, data.pt, prop);\n      } else if (type === 4) {\n        expressionHelpers.searchExpressions(elem, data.ks, prop);\n      }\n\n      if (prop.k) {\n        elem.addDynamicProperty(prop);\n      }\n\n      return prop;\n    };\n  }\n\n  function initialize$1() {\n    addPropertyDecorator();\n  }\n\n  function addDecorator() {\n    function searchExpressions() {\n      if (this.data.d.x) {\n        this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n        this.addEffect(this.getExpressionValue.bind(this));\n        return true;\n      }\n\n      return null;\n    }\n\n    TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n      var newValue = this.calculateExpression(text);\n\n      if (currentValue.t !== newValue) {\n        var newData = {};\n        this.copyData(newData, currentValue);\n        newData.t = newValue.toString();\n        newData.__complete = false;\n        return newData;\n      }\n\n      return currentValue;\n    };\n\n    TextProperty.prototype.searchProperty = function () {\n      var isKeyframed = this.searchKeyframes();\n      var hasExpressions = this.searchExpressions();\n      this.kf = isKeyframed || hasExpressions;\n      return this.kf;\n    };\n\n    TextProperty.prototype.searchExpressions = searchExpressions;\n  }\n\n  function initialize() {\n    addDecorator();\n  }\n\n  function SVGComposableEffect() {}\n\n  SVGComposableEffect.prototype = {\n    createMergeNode: function createMergeNode(resultId, ins) {\n      var feMerge = createNS('feMerge');\n      feMerge.setAttribute('result', resultId);\n      var feMergeNode;\n      var i;\n\n      for (i = 0; i < ins.length; i += 1) {\n        feMergeNode = createNS('feMergeNode');\n        feMergeNode.setAttribute('in', ins[i]);\n        feMerge.appendChild(feMergeNode);\n        feMerge.appendChild(feMergeNode);\n      }\n\n      return feMerge;\n    }\n  };\n\n  var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n  function SVGTintFilter(filter, filterManager, elem, id, source) {\n    this.filterManager = filterManager;\n    var feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n    feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n    this.linearFilter = feColorMatrix;\n    feColorMatrix.setAttribute('result', id + '_tint_1');\n    filter.appendChild(feColorMatrix);\n    feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n    feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n    feColorMatrix.setAttribute('result', id + '_tint_2');\n    filter.appendChild(feColorMatrix);\n    this.matrixFilter = feColorMatrix;\n    var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n    filter.appendChild(feMerge);\n  }\n\n  extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n  SVGTintFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var colorBlack = this.filterManager.effectElements[0].p.v;\n      var colorWhite = this.filterManager.effectElements[1].p.v;\n      var opacity = this.filterManager.effectElements[2].p.v / 100;\n      this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n      this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n    }\n  };\n\n  function SVGFillFilter(filter, filterManager, elem, id) {\n    this.filterManager = filterManager;\n    var feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n    feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n    feColorMatrix.setAttribute('result', id);\n    filter.appendChild(feColorMatrix);\n    this.matrixFilter = feColorMatrix;\n  }\n\n  SVGFillFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var color = this.filterManager.effectElements[2].p.v;\n      var opacity = this.filterManager.effectElements[6].p.v;\n      this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n    }\n  };\n\n  function SVGStrokeEffect(fil, filterManager, elem) {\n    this.initialized = false;\n    this.filterManager = filterManager;\n    this.elem = elem;\n    this.paths = [];\n  }\n\n  SVGStrokeEffect.prototype.initialize = function () {\n    var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n    var path;\n    var groupPath;\n    var i;\n    var len;\n\n    if (this.filterManager.effectElements[1].p.v === 1) {\n      len = this.elem.maskManager.masksProperties.length;\n      i = 0;\n    } else {\n      i = this.filterManager.effectElements[0].p.v - 1;\n      len = i + 1;\n    }\n\n    groupPath = createNS('g');\n    groupPath.setAttribute('fill', 'none');\n    groupPath.setAttribute('stroke-linecap', 'round');\n    groupPath.setAttribute('stroke-dashoffset', 1);\n\n    for (i; i < len; i += 1) {\n      path = createNS('path');\n      groupPath.appendChild(path);\n      this.paths.push({\n        p: path,\n        m: i\n      });\n    }\n\n    if (this.filterManager.effectElements[10].p.v === 3) {\n      var mask = createNS('mask');\n      var id = createElementID();\n      mask.setAttribute('id', id);\n      mask.setAttribute('mask-type', 'alpha');\n      mask.appendChild(groupPath);\n      this.elem.globalData.defs.appendChild(mask);\n      var g = createNS('g');\n      g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n      while (elemChildren[0]) {\n        g.appendChild(elemChildren[0]);\n      }\n\n      this.elem.layerElement.appendChild(g);\n      this.masker = mask;\n      groupPath.setAttribute('stroke', '#fff');\n    } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n      if (this.filterManager.effectElements[10].p.v === 2) {\n        elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n        while (elemChildren.length) {\n          this.elem.layerElement.removeChild(elemChildren[0]);\n        }\n      }\n\n      this.elem.layerElement.appendChild(groupPath);\n      this.elem.layerElement.removeAttribute('mask');\n      groupPath.setAttribute('stroke', '#fff');\n    }\n\n    this.initialized = true;\n    this.pathMasker = groupPath;\n  };\n\n  SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n    if (!this.initialized) {\n      this.initialize();\n    }\n\n    var i;\n    var len = this.paths.length;\n    var mask;\n    var path;\n\n    for (i = 0; i < len; i += 1) {\n      if (this.paths[i].m !== -1) {\n        mask = this.elem.maskManager.viewData[this.paths[i].m];\n        path = this.paths[i].p;\n\n        if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n          path.setAttribute('d', mask.lastPath);\n        }\n\n        if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n          var dasharrayValue;\n\n          if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n            var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n            var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n            var l = path.getTotalLength();\n            dasharrayValue = '0 0 0 ' + l * s + ' ';\n            var lineLength = l * (e - s);\n            var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n            var units = Math.floor(lineLength / segment);\n            var j;\n\n            for (j = 0; j < units; j += 1) {\n              dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n            }\n\n            dasharrayValue += '0 ' + l * 10 + ' 0 0';\n          } else {\n            dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n          }\n\n          path.setAttribute('stroke-dasharray', dasharrayValue);\n        }\n      }\n    }\n\n    if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n      this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n    }\n\n    if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n      this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n    }\n\n    if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n      if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n        var color = this.filterManager.effectElements[3].p.v;\n        this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n      }\n    }\n  };\n\n  function SVGTritoneFilter(filter, filterManager, elem, id) {\n    this.filterManager = filterManager;\n    var feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n    feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n    filter.appendChild(feColorMatrix);\n    var feComponentTransfer = createNS('feComponentTransfer');\n    feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n    feComponentTransfer.setAttribute('result', id);\n    this.matrixFilter = feComponentTransfer;\n    var feFuncR = createNS('feFuncR');\n    feFuncR.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFuncR);\n    this.feFuncR = feFuncR;\n    var feFuncG = createNS('feFuncG');\n    feFuncG.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFuncG);\n    this.feFuncG = feFuncG;\n    var feFuncB = createNS('feFuncB');\n    feFuncB.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFuncB);\n    this.feFuncB = feFuncB;\n    filter.appendChild(feComponentTransfer);\n  }\n\n  SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var color1 = this.filterManager.effectElements[0].p.v;\n      var color2 = this.filterManager.effectElements[1].p.v;\n      var color3 = this.filterManager.effectElements[2].p.v;\n      var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n      var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n      var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n      this.feFuncR.setAttribute('tableValues', tableR);\n      this.feFuncG.setAttribute('tableValues', tableG);\n      this.feFuncB.setAttribute('tableValues', tableB);\n    }\n  };\n\n  function SVGProLevelsFilter(filter, filterManager, elem, id) {\n    this.filterManager = filterManager;\n    var effectElements = this.filterManager.effectElements;\n    var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n    if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n      this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n    } // Green\n\n\n    if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n      this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n    } // Blue\n\n\n    if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n      this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n    } // Alpha\n\n\n    if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n      this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n    } // RGB\n\n\n    if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n      feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n      filter.appendChild(feComponentTransfer);\n    }\n\n    if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n      feComponentTransfer = createNS('feComponentTransfer');\n      feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n      feComponentTransfer.setAttribute('result', id);\n      filter.appendChild(feComponentTransfer);\n      this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n      this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n      this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n    }\n  }\n\n  SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n    var feFunc = createNS(type);\n    feFunc.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFunc);\n    return feFunc;\n  };\n\n  SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n    var cnt = 0;\n    var segments = 256;\n    var perc;\n    var min = Math.min(inputBlack, inputWhite);\n    var max = Math.max(inputBlack, inputWhite);\n    var table = Array.call(null, {\n      length: segments\n    });\n    var colorValue;\n    var pos = 0;\n    var outputDelta = outputWhite - outputBlack;\n    var inputDelta = inputWhite - inputBlack;\n\n    while (cnt <= 256) {\n      perc = cnt / 256;\n\n      if (perc <= min) {\n        colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n      } else if (perc >= max) {\n        colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n      } else {\n        colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n      }\n\n      table[pos] = colorValue;\n      pos += 1;\n      cnt += 256 / (segments - 1);\n    }\n\n    return table.join(' ');\n  };\n\n  SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var val;\n      var effectElements = this.filterManager.effectElements;\n\n      if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n        val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n        this.feFuncRComposed.setAttribute('tableValues', val);\n        this.feFuncGComposed.setAttribute('tableValues', val);\n        this.feFuncBComposed.setAttribute('tableValues', val);\n      }\n\n      if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n        val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n        this.feFuncR.setAttribute('tableValues', val);\n      }\n\n      if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n        val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n        this.feFuncG.setAttribute('tableValues', val);\n      }\n\n      if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n        val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n        this.feFuncB.setAttribute('tableValues', val);\n      }\n\n      if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n        val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n        this.feFuncA.setAttribute('tableValues', val);\n      }\n    }\n  };\n\n  function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n    var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n    var filterSize = filterManager.data.fs || globalFilterSize;\n    filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n    filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n    filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n    filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n    this.filterManager = filterManager;\n    var feGaussianBlur = createNS('feGaussianBlur');\n    feGaussianBlur.setAttribute('in', 'SourceAlpha');\n    feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n    feGaussianBlur.setAttribute('stdDeviation', '0');\n    this.feGaussianBlur = feGaussianBlur;\n    filter.appendChild(feGaussianBlur);\n    var feOffset = createNS('feOffset');\n    feOffset.setAttribute('dx', '25');\n    feOffset.setAttribute('dy', '0');\n    feOffset.setAttribute('in', id + '_drop_shadow_1');\n    feOffset.setAttribute('result', id + '_drop_shadow_2');\n    this.feOffset = feOffset;\n    filter.appendChild(feOffset);\n    var feFlood = createNS('feFlood');\n    feFlood.setAttribute('flood-color', '#00ff00');\n    feFlood.setAttribute('flood-opacity', '1');\n    feFlood.setAttribute('result', id + '_drop_shadow_3');\n    this.feFlood = feFlood;\n    filter.appendChild(feFlood);\n    var feComposite = createNS('feComposite');\n    feComposite.setAttribute('in', id + '_drop_shadow_3');\n    feComposite.setAttribute('in2', id + '_drop_shadow_2');\n    feComposite.setAttribute('operator', 'in');\n    feComposite.setAttribute('result', id + '_drop_shadow_4');\n    filter.appendChild(feComposite);\n    var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n    filter.appendChild(feMerge); //\n  }\n\n  extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n  SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n        this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n      }\n\n      if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n        var col = this.filterManager.effectElements[0].p.v;\n        this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n      }\n\n      if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n        this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n      }\n\n      if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n        var distance = this.filterManager.effectElements[3].p.v;\n        var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n        var x = distance * Math.cos(angle);\n        var y = distance * Math.sin(angle);\n        this.feOffset.setAttribute('dx', x);\n        this.feOffset.setAttribute('dy', y);\n      }\n    }\n  };\n\n  var _svgMatteSymbols = [];\n\n  function SVGMatte3Effect(filterElem, filterManager, elem) {\n    this.initialized = false;\n    this.filterManager = filterManager;\n    this.filterElem = filterElem;\n    this.elem = elem;\n    elem.matteElement = createNS('g');\n    elem.matteElement.appendChild(elem.layerElement);\n    elem.matteElement.appendChild(elem.transformedElement);\n    elem.baseElement = elem.matteElement;\n  }\n\n  SVGMatte3Effect.prototype.findSymbol = function (mask) {\n    var i = 0;\n    var len = _svgMatteSymbols.length;\n\n    while (i < len) {\n      if (_svgMatteSymbols[i] === mask) {\n        return _svgMatteSymbols[i];\n      }\n\n      i += 1;\n    }\n\n    return null;\n  };\n\n  SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n    var parentNode = mask.layerElement.parentNode;\n\n    if (!parentNode) {\n      return;\n    }\n\n    var children = parentNode.children;\n    var i = 0;\n    var len = children.length;\n\n    while (i < len) {\n      if (children[i] === mask.layerElement) {\n        break;\n      }\n\n      i += 1;\n    }\n\n    var nextChild;\n\n    if (i <= len - 2) {\n      nextChild = children[i + 1];\n    }\n\n    var useElem = createNS('use');\n    useElem.setAttribute('href', '#' + symbolId);\n\n    if (nextChild) {\n      parentNode.insertBefore(useElem, nextChild);\n    } else {\n      parentNode.appendChild(useElem);\n    }\n  };\n\n  SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n    if (!this.findSymbol(mask)) {\n      var symbolId = createElementID();\n      var masker = createNS('mask');\n      masker.setAttribute('id', mask.layerId);\n      masker.setAttribute('mask-type', 'alpha');\n\n      _svgMatteSymbols.push(mask);\n\n      var defs = elem.globalData.defs;\n      defs.appendChild(masker);\n      var symbol = createNS('symbol');\n      symbol.setAttribute('id', symbolId);\n      this.replaceInParent(mask, symbolId);\n      symbol.appendChild(mask.layerElement);\n      defs.appendChild(symbol);\n      var useElem = createNS('use');\n      useElem.setAttribute('href', '#' + symbolId);\n      masker.appendChild(useElem);\n      mask.data.hd = false;\n      mask.show();\n    }\n\n    elem.setMatte(mask.layerId);\n  };\n\n  SVGMatte3Effect.prototype.initialize = function () {\n    var ind = this.filterManager.effectElements[0].p.v;\n    var elements = this.elem.comp.elements;\n    var i = 0;\n    var len = elements.length;\n\n    while (i < len) {\n      if (elements[i] && elements[i].data.ind === ind) {\n        this.setElementAsMask(this.elem, elements[i]);\n      }\n\n      i += 1;\n    }\n\n    this.initialized = true;\n  };\n\n  SVGMatte3Effect.prototype.renderFrame = function () {\n    if (!this.initialized) {\n      this.initialize();\n    }\n  };\n\n  function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n    // Outset the filter region by 100% on all sides to accommodate blur expansion.\n    filter.setAttribute('x', '-100%');\n    filter.setAttribute('y', '-100%');\n    filter.setAttribute('width', '300%');\n    filter.setAttribute('height', '300%');\n    this.filterManager = filterManager;\n    var feGaussianBlur = createNS('feGaussianBlur');\n    feGaussianBlur.setAttribute('result', id);\n    filter.appendChild(feGaussianBlur);\n    this.feGaussianBlur = feGaussianBlur;\n  }\n\n  SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      // Empirical value, matching AE's blur appearance.\n      var kBlurrinessToSigma = 0.3;\n      var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n      //\n      //   1 -> horizontal & vertical\n      //   2 -> horizontal only\n      //   3 -> vertical only\n      //\n\n      var dimensions = this.filterManager.effectElements[1].p.v;\n      var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n      var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n      this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n      //\n      //   0 -> off -> duplicate\n      //   1 -> on  -> wrap\n\n      var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n      this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n    }\n  };\n\n  function TransformEffect() {}\n\n  TransformEffect.prototype.init = function (effectsManager) {\n    this.effectsManager = effectsManager;\n    this.type = effectTypes.TRANSFORM_EFFECT;\n    this.matrix = new Matrix();\n    this.opacity = -1;\n    this._mdf = false;\n    this._opMdf = false;\n  };\n\n  TransformEffect.prototype.renderFrame = function (forceFrame) {\n    this._opMdf = false;\n    this._mdf = false;\n\n    if (forceFrame || this.effectsManager._mdf) {\n      var effectElements = this.effectsManager.effectElements;\n      var anchor = effectElements[0].p.v;\n      var position = effectElements[1].p.v;\n      var isUniformScale = effectElements[2].p.v === 1;\n      var scaleHeight = effectElements[3].p.v;\n      var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n      var skew = effectElements[5].p.v;\n      var skewAxis = effectElements[6].p.v;\n      var rotation = effectElements[7].p.v;\n      this.matrix.reset();\n      this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n      this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n      this.matrix.rotate(-rotation * degToRads);\n      this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n      this.matrix.translate(position[0], position[1], 0);\n      this._mdf = true;\n\n      if (this.opacity !== effectElements[8].p.v) {\n        this.opacity = effectElements[8].p.v;\n        this._opMdf = true;\n      }\n    }\n  };\n\n  function SVGTransformEffect(_, filterManager) {\n    this.init(filterManager);\n  }\n\n  extendPrototype([TransformEffect], SVGTransformEffect);\n\n  function CVTransformEffect(effectsManager) {\n    this.init(effectsManager);\n  }\n\n  extendPrototype([TransformEffect], CVTransformEffect);\n\n  registerRenderer('canvas', CanvasRenderer);\n  registerRenderer('html', HybridRenderer);\n  registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n  ShapeModifiers.registerModifier('tm', TrimModifier);\n  ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n  ShapeModifiers.registerModifier('rp', RepeaterModifier);\n  ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n  ShapeModifiers.registerModifier('zz', ZigZagModifier);\n  ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n  setExpressionsPlugin(Expressions);\n  setExpressionInterfaces(getInterface);\n  initialize$1();\n  initialize(); // Registering svg effects\n\n  registerEffect$1(20, SVGTintFilter, true);\n  registerEffect$1(21, SVGFillFilter, true);\n  registerEffect$1(22, SVGStrokeEffect, false);\n  registerEffect$1(23, SVGTritoneFilter, true);\n  registerEffect$1(24, SVGProLevelsFilter, true);\n  registerEffect$1(25, SVGDropShadowEffect, true);\n  registerEffect$1(28, SVGMatte3Effect, false);\n  registerEffect$1(29, SVGGaussianBlurEffect, true);\n  registerEffect$1(35, SVGTransformEffect, false);\n  registerEffect(35, CVTransformEffect);\n\n  return lottie;\n\n}));\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","/**\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    bigint: 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\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","/**\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","/**\n * @license React\n * react-dom.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 Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){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;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(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(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(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 jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(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\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=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(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===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\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(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 Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(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 Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(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(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!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<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=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=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();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=Xa(a.document)}return b}function Ne(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)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;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}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;\nfunction Lg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction Mg(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function Ng(a){var b=a._init;return b(a._payload)}\nfunction Og(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Pg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Qg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&Ng(f)===b.type))return d=e(b,c.props),d.ref=Lg(a,b,c),d.return=a,d;d=Rg(c.type,c.key,c.props,null,a.mode,d);d.ref=Lg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=Sg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Tg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=Qg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=Rg(b.type,b.key,b.props,null,a.mode,c),\nc.ref=Lg(a,null,b),c.return=a,c;case wa:return b=Sg(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Tg(b,a.mode,c,null),b.return=a,b;Mg(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);Mg(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);Mg(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)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=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var th={},uh=Uf(th),vh=Uf(th),wh=Uf(th);function xh(a){if(a===th)throw Error(p(174));return a}\nfunction yh(a,b){G(wh,b);G(vh,a);G(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(uh);G(uh,b)}function zh(){E(uh);E(vh);E(wh)}function Ah(a){xh(wh.current);var b=xh(uh.current);var c=lb(b,a.type);b!==c&&(G(vh,a),G(uh,c))}function Bh(a){vh.current===a&&(E(uh),E(vh))}var L=Uf(0);\nfunction Ch(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||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))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}var Dh=[];\nfunction Eh(){for(var a=0;a<Dh.length;a++)Dh[a]._workInProgressVersionPrimary=null;Dh.length=0}var Fh=ua.ReactCurrentDispatcher,Gh=ua.ReactCurrentBatchConfig,Hh=0,M=null,N=null,O=null,Ih=!1,Jh=!1,Kh=0,Lh=0;function P(){throw Error(p(321));}function Mh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Nh(a,b,c,d,e,f){Hh=f;M=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Fh.current=null===a||null===a.memoizedState?Oh:Ph;a=c(d,e);if(Jh){f=0;do{Jh=!1;Kh=0;if(25<=f)throw Error(p(301));f+=1;O=N=null;b.updateQueue=null;Fh.current=Qh;a=c(d,e)}while(Jh)}Fh.current=Rh;b=null!==N&&null!==N.next;Hh=0;O=N=M=null;Ih=!1;if(b)throw Error(p(300));return a}function Sh(){var a=0!==Kh;Kh=0;return a}\nfunction Th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===O?M.memoizedState=O=a:O=O.next=a;return O}function Uh(){if(null===N){var a=M.alternate;a=null!==a?a.memoizedState:null}else a=N.next;var b=null===O?M.memoizedState:O.next;if(null!==b)O=b,N=a;else{if(null===a)throw Error(p(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===O?M.memoizedState=O=a:O=O.next=a}return O}\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(p(311));c.lastRenderedReducer=a;var d=N,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){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Hh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;M.lanes|=m;rh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(dh=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,M.lanes|=f,rh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction Xh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(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);He(f,b.memoizedState)||(dh=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function Yh(){}\nfunction Zh(a,b){var c=M,d=Uh(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,dh=!0);d=d.queue;$h(ai.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==O&&O.memoizedState.tag&1){c.flags|=2048;bi(9,ci.bind(null,c,d,e,b),void 0,null);if(null===Q)throw Error(p(349));0!==(Hh&30)||di(c,b,e)}return e}function di(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction ci(a,b,c,d){b.value=c;b.getSnapshot=d;ei(b)&&fi(a)}function ai(a,b,c){return c(function(){ei(b)&&fi(a)})}function ei(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function fi(a){var b=ih(a,1);null!==b&&gi(b,a,1,-1)}\nfunction hi(a){var b=Th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:a};b.queue=a;a=a.dispatch=ii.bind(null,M,a);return[b.memoizedState,a]}\nfunction bi(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.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}function ji(){return Uh().memoizedState}function ki(a,b,c,d){var e=Th();M.flags|=a;e.memoizedState=bi(1|b,c,void 0,void 0===d?null:d)}\nfunction li(a,b,c,d){var e=Uh();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&Mh(d,g.deps)){e.memoizedState=bi(b,c,f,d);return}}M.flags|=a;e.memoizedState=bi(1|b,c,f,d)}function mi(a,b){return ki(8390656,8,a,b)}function $h(a,b){return li(2048,8,a,b)}function ni(a,b){return li(4,2,a,b)}function oi(a,b){return li(4,4,a,b)}\nfunction pi(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 qi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return li(4,4,pi.bind(null,b,a),c)}function ri(){}function si(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction ti(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function ui(a,b,c){if(0===(Hh&21))return a.baseState&&(a.baseState=!1,dh=!0),a.memoizedState=c;He(c,b)||(c=yc(),M.lanes|=c,rh|=c,a.baseState=!0);return b}function vi(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Lh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Ph={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},\nuseDebugValue:ri,useDeferredValue:function(a){var b=Uh();return ui(b,N.memoizedState,a)},useTransition:function(){var a=Wh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},Qh={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(a){var b=Uh();return null===\nN?b.memoizedState=a:ui(b,N.memoizedState,a)},useTransition:function(){var a=Xh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}function Di(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Ei={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=R(),d=\nyi(a),e=mh(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=nh(a,e,d);null!==b&&(gi(b,a,d,c),oh(b,a,d))}};function Fi(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction Gi(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=eh(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Ei;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Hi(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Ei.enqueueReplaceState(b,b.state,null)}\nfunction Ii(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs={};kh(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=eh(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Di(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Ei.enqueueReplaceState(e,e.state,null),qh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}function Ji(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}\nfunction Ki(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}function Li(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Mi=\"function\"===typeof WeakMap?WeakMap:Map;function Ni(a,b,c){c=mh(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Oi||(Oi=!0,Pi=d);Li(a,b)};return c}\nfunction Qi(a,b,c){c=mh(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Li(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Li(a,b);\"function\"!==typeof d&&(null===Ri?Ri=new Set([this]):Ri.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Si(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Mi;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ti.bind(null,a,b,c),b.then(a,a))}function Ui(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Vi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=mh(-1,1),b.tag=2,nh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Wi=ua.ReactCurrentOwner,dh=!1;function Xi(a,b,c,d){b.child=null===a?Vg(b,null,c,d):Ug(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ch(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&c&&vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=Rg(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=Pg(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(dh=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(dh=!0);else return b.lanes=a.lanes,Zi(a,b,e)}return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(ej,fj),fj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(ej,fj),fj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(ej,fj);fj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(ej,fj),fj|=d;Xi(a,b,e,c);return b.child}function gj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);ch(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&d&&vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction hj(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;ch(b,e);if(null===b.stateNode)ij(a,b),Gi(b,c,d),Ii(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=eh(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&Hi(b,g,d,l);jh=!1;var r=b.memoizedState;g.state=r;qh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||jh?(\"function\"===typeof m&&(Di(b,c,m,d),k=b.memoizedState),(h=jh||Fi(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;lh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Ci(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=eh(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&Hi(b,g,d,k);jh=!1;r=b.memoizedState;g.state=r;qh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||jh?(\"function\"===typeof y&&(Di(b,c,y,d),n=b.memoizedState),(l=jh||Fi(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return jj(a,b,c,d,f,e)}\nfunction jj(a,b,c,d,e,f){gj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Ug(b,a.child,null,f),b.child=Ug(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function kj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);yh(a,b.containerInfo)}\nfunction lj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Xi(a,b,c,d);return b.child}var mj={dehydrated:null,treeContext:null,retryLane:0};function nj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction oj(a,b,c){var d=b.pendingProps,e=L.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(L,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=pj(g,d,0,null),a=Tg(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=nj(c),b.memoizedState=mj,a):qj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return rj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=Pg(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=Pg(h,f):(f=Tg(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?nj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=mj;return d}f=a.child;a=f.sibling;d=Pg(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction qj(a,b){b=pj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){null!==d&&Jg(d);Ug(b,a.child,null,c);a=qj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction rj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Ki(Error(p(422))),sj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=pj({mode:\"visible\",children:d.children},e,0,null);f=Tg(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Ug(b,a.child,null,g);b.child.memoizedState=nj(g);b.memoizedState=mj;return f}if(0===(b.mode&1))return sj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Ki(f,d,void 0);return sj(a,b,g,d)}h=0!==(g&a.childLanes);if(dh||h){d=Q;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,ih(a,e),gi(d,a,e,-1))}tj();d=Ki(Error(p(421)));return sj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=uj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=qj(b,d.children);b.flags|=4096;return b}function vj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);bh(a.return,b,c)}\nfunction wj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction xj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=L.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&vj(a,c,b);else if(19===a.tag)vj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(L,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);wj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}wj(b,!0,c,null,f);break;case \"together\":wj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction ij(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);rh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=Pg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Pg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction yj(a,b,c){switch(b.tag){case 3:kj(b);Ig();break;case 5:Ah(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Wg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(L,L.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return oj(a,b,c);G(L,L.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}G(L,L.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return xj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(L,L.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}var zj,Aj,Bj,Cj;\nzj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Aj=function(){};\nBj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;xh(uh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Cj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Dj(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Ej(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;zh();E(Wf);E(H);Eh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Fj(zg),zg=null));Aj(a,b);S(b);return null;case 5:Bh(b);var e=xh(wh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Bj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Cj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=xh(wh.current);xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(L);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Fj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(L.current&1)?0===T&&(T=3):tj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return zh(),\nAj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return ah(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(L);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Dj(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Ch(a);if(null!==g){b.flags|=128;Dj(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(L,L.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Gj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Xj=!1;break a;case 3:X=h.stateNode.containerInfo;Xj=!0;break a;case 4:X=h.stateNode.containerInfo;Xj=!0;break a}h=h.return}if(null===X)throw Error(p(160));Zj(f,g,e);X=null;Xj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)dk(b,a),b=b.sibling}\nfunction dk(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:ck(b,a);ek(a);if(d&4){try{Pj(3,a,a.return),Qj(3,a)}catch(t){W(a,a.return,t)}try{Pj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);break;case 5:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:ck(b,a);ek(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:ck(b,a);ek(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:ck(b,a);ek(a);break;case 13:ck(b,a);ek(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(fk=B()));d&4&&ak(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,ck(b,a),U=l):ck(b,a);ek(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Pj(4,r,r.return);break;case 1:Lj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Lj(r,r.return);break;case 22:if(null!==r.memoizedState){gk(q);continue}}null!==y?(y.return=r,V=y):gk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:ck(b,a);ek(a);d&4&&ak(a);break;case 21:break;default:ck(b,\na),ek(a)}}function ek(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Tj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Uj(a);Wj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Uj(a);Vj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function hk(a,b,c){V=a;ik(a,b,c)}\nfunction ik(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Jj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Jj;var l=U;Jj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?jk(e):null!==k?(k.return=g,V=k):jk(e);for(;null!==f;)V=f,ik(f,b,c),f=f.sibling;V=e;Jj=h;U=l}kk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):kk(a,b,c)}}\nfunction kk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Qj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Ci(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&sh(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}sh(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Rj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function gk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction jk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Qj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Rj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Rj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar lk=Math.ceil,mk=ua.ReactCurrentDispatcher,nk=ua.ReactCurrentOwner,ok=ua.ReactCurrentBatchConfig,K=0,Q=null,Y=null,Z=0,fj=0,ej=Uf(0),T=0,pk=null,rh=0,qk=0,rk=0,sk=null,tk=null,fk=0,Gj=Infinity,uk=null,Oi=!1,Pi=null,Ri=null,vk=!1,wk=null,xk=0,yk=0,zk=null,Ak=-1,Bk=0;function R(){return 0!==(K&6)?B():-1!==Ak?Ak:Ak=B()}\nfunction yi(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Bk&&(Bk=yc()),Bk;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function gi(a,b,c,d){if(50<yk)throw yk=0,zk=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==Q)a===Q&&(0===(K&2)&&(qk|=c),4===T&&Ck(a,Z)),Dk(a,d),1===c&&0===K&&0===(b.mode&1)&&(Gj=B()+500,fg&&jg())}\nfunction Dk(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===Q?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Ek.bind(null,a)):hg(Ek.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Fk(c,Gk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Gk(a,b){Ak=-1;Bk=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Hk()&&a.callbackNode!==c)return null;var d=uc(a,a===Q?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Ik(a,d);else{b=d;var e=K;K|=2;var f=Jk();if(Q!==a||Z!==b)uk=null,Gj=B()+500,Kk(a,b);do try{Lk();break}catch(h){Mk(a,h)}while(1);$g();mk.current=f;K=e;null!==Y?b=0:(Q=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Nk(a,e)));if(1===b)throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;if(6===b)Ck(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Ok(e)&&(b=Ik(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Nk(a,f))),1===b))throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Pk(a,tk,uk);break;case 3:Ck(a,d);if((d&130023424)===d&&(b=fk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){R();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),b);break}Pk(a,tk,uk);break;case 4:Ck(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),d);break}Pk(a,tk,uk);break;case 5:Pk(a,tk,uk);break;default:throw Error(p(329));}}}Dk(a,B());return a.callbackNode===c?Gk.bind(null,a):null}\nfunction Nk(a,b){var c=sk;a.current.memoizedState.isDehydrated&&(Kk(a,b).flags|=256);a=Ik(a,b);2!==a&&(b=tk,tk=c,null!==b&&Fj(b));return a}function Fj(a){null===tk?tk=a:tk.push.apply(tk,a)}\nfunction Ok(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Ck(a,b){b&=~rk;b&=~qk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Ek(a){if(0!==(K&6))throw Error(p(327));Hk();var b=uc(a,0);if(0===(b&1))return Dk(a,B()),null;var c=Ik(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Nk(a,d))}if(1===c)throw c=pk,Kk(a,0),Ck(a,b),Dk(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Pk(a,tk,uk);Dk(a,B());return null}\nfunction Qk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Gj=B()+500,fg&&jg())}}function Rk(a){null!==wk&&0===wk.tag&&0===(K&6)&&Hk();var b=K;K|=1;var c=ok.transition,d=C;try{if(ok.transition=null,C=1,a)return a()}finally{C=d,ok.transition=c,K=b,0===(K&6)&&jg()}}function Hj(){fj=ej.current;E(ej)}\nfunction Kk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:zh();E(Wf);E(H);Eh();break;case 5:Bh(d);break;case 4:zh();break;case 13:E(L);break;case 19:E(L);break;case 10:ah(d.type._context);break;case 22:case 23:Hj()}c=c.return}Q=a;Y=a=Pg(a.current,null);Z=fj=b;T=0;pk=null;rk=qk=rh=0;tk=sk=null;if(null!==fh){for(b=\n0;b<fh.length;b++)if(c=fh[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}fh=null}return a}\nfunction Mk(a,b){do{var c=Y;try{$g();Fh.current=Rh;if(Ih){for(var d=M.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Ih=!1}Hh=0;O=N=M=null;Jh=!1;Kh=0;nk.current=null;if(null===c||null===c.return){T=1;pk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Ui(g);if(null!==y){y.flags&=-257;Vi(y,g,h,f,b);y.mode&1&&Si(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Si(f,l,b);tj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Ui(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Vi(J,g,h,f,b);Jg(Ji(k,h));break a}}f=k=Ji(k,h);4!==T&&(T=2);null===sk?sk=[f]:sk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Ni(f,k,b);ph(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ri||!Ri.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Qi(f,h,b);ph(f,F);break a}}f=f.return}while(null!==f)}Sk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Jk(){var a=mk.current;mk.current=Rh;return null===a?Rh:a}\nfunction tj(){if(0===T||3===T||2===T)T=4;null===Q||0===(rh&268435455)&&0===(qk&268435455)||Ck(Q,Z)}function Ik(a,b){var c=K;K|=2;var d=Jk();if(Q!==a||Z!==b)uk=null,Kk(a,b);do try{Tk();break}catch(e){Mk(a,e)}while(1);$g();K=c;mk.current=d;if(null!==Y)throw Error(p(261));Q=null;Z=0;return T}function Tk(){for(;null!==Y;)Uk(Y)}function Lk(){for(;null!==Y&&!cc();)Uk(Y)}function Uk(a){var b=Vk(a.alternate,a,fj);a.memoizedProps=a.pendingProps;null===b?Sk(a):Y=b;nk.current=null}\nfunction Sk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Ej(c,b,fj),null!==c){Y=c;return}}else{c=Ij(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Pk(a,b,c){var d=C,e=ok.transition;try{ok.transition=null,C=1,Wk(a,b,c,d)}finally{ok.transition=e,C=d}return null}\nfunction Wk(a,b,c,d){do Hk();while(null!==wk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===Q&&(Y=Q=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||vk||(vk=!0,Fk(hc,function(){Hk();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=ok.transition;ok.transition=null;\nvar g=C;C=1;var h=K;K|=4;nk.current=null;Oj(a,c);dk(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;hk(c,a,e);dc();K=h;C=g;ok.transition=f}else a.current=c;vk&&(vk=!1,wk=a,xk=e);f=a.pendingLanes;0===f&&(Ri=null);mc(c.stateNode,d);Dk(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Oi)throw Oi=!1,a=Pi,Pi=null,a;0!==(xk&1)&&0!==a.tag&&Hk();f=a.pendingLanes;0!==(f&1)?a===zk?yk++:(yk=0,zk=a):yk=0;jg();return null}\nfunction Hk(){if(null!==wk){var a=Dc(xk),b=ok.transition,c=C;try{ok.transition=null;C=16>a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Pj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Sj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Pj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Qj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,ok.transition=b}}return!1}function Xk(a,b,c){b=Ji(c,b);b=Ni(a,b,1);a=nh(a,b,1);b=R();null!==a&&(Ac(a,1,b),Dk(a,b))}\nfunction W(a,b,c){if(3===a.tag)Xk(a,a,c);else for(;null!==b;){if(3===b.tag){Xk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ri||!Ri.has(d))){a=Ji(c,a);a=Qi(b,a,1);b=nh(b,a,1);a=R();null!==b&&(Ac(b,1,a),Dk(b,a));break}}b=b.return}}\nfunction Ti(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=R();a.pingedLanes|=a.suspendedLanes&c;Q===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction dl(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction el(a,b,c,d,e,f,g,h,k){a=bl(c,d,!0,a,e,f,g,h,k);a.context=dl(null);c=a.current;d=R();e=yi(c);f=mh(d,e);f.callback=void 0!==b&&null!==b?b:null;nh(c,f,e);a.current.lanes=e;Ac(a,e,d);Dk(a,d);return a}function fl(a,b,c,d){var e=b.current,f=R(),g=yi(e);c=dl(c);null===b.context?b.context=c:b.pendingContext=c;b=mh(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=nh(e,b,g);null!==a&&(gi(a,e,g,f),oh(a,e,g));return g}\nfunction gl(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 hl(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function il(a,b){hl(a,b);(a=a.alternate)&&hl(a,b)}function jl(){return null}var kl=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ll(a){this._internalRoot=a}\nml.prototype.render=ll.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));fl(a,b,null,null)};ml.prototype.unmount=ll.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Rk(function(){fl(null,a,null,null)});b[uf]=null}};function ml(a){this._internalRoot=a}\nml.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function nl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function pl(){}\nfunction ql(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=gl(g);f.call(a)}}var g=el(b,d,a,0,null,!1,!1,\"\",pl);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Rk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=gl(k);h.call(a)}}var k=bl(a,0,!1,null,null,!1,!1,\"\",pl);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Rk(function(){fl(b,k,c,d)});return k}\nfunction rl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=gl(g);h.call(a)}}fl(b,g,a,e)}else g=ql(c,b,a,e,d);return gl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Dk(b,B()),0===(K&6)&&(Gj=B()+500,jg()))}break;case 13:Rk(function(){var b=ih(a,1);if(null!==b){var c=R();gi(b,a,1,c)}}),il(a,1)}};\nFc=function(a){if(13===a.tag){var b=ih(a,134217728);if(null!==b){var c=R();gi(b,a,134217728,c)}il(a,134217728)}};Gc=function(a){if(13===a.tag){var b=yi(a),c=ih(a,b);if(null!==c){var d=R();gi(c,a,b,d)}il(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Qk;Hb=Rk;\nvar sl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},tl={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"};\nvar ul={bundleType:tl.bundleType,version:tl.version,rendererPackageName:tl.rendererPackageName,rendererConfig:tl.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:tl.findFiberByHostInstance||\njl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var vl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!vl.isDisabled&&vl.supportsFiber)try{kc=vl.inject(ul),lc=vl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(b))throw Error(p(200));return cl(a,b,null,c)};exports.createRoot=function(a,b){if(!nl(a))throw Error(p(299));var c=!1,d=\"\",e=kl;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=bl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ll(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Rk(a)};exports.hydrate=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!nl(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=kl;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=el(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new ml(b)};exports.render=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!ol(a))throw Error(p(40));return a._reactRootContainer?(Rk(function(){rl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Qk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!ol(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return rl(a,b,c,!1,d)};exports.version=\"18.3.1-next-f1338f8080-20240426\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n  exports.createRoot = m.createRoot;\n  exports.hydrateRoot = m.hydrateRoot;\n} else {\n  var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  exports.createRoot = function(c, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.createRoot(c, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n  exports.hydrateRoot = function(c, h, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.hydrateRoot(c, h, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n}\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","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n  // START: fast-deep-equal es6/index.js 3.1.3\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n    // START: Modifications:\n    // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n    //    to co-exist with es5.\n    // 2. Replace `for of` with es5 compliant iteration using `for`.\n    //    Basically, take:\n    //\n    //    ```js\n    //    for (i of a.entries())\n    //      if (!b.has(i[0])) return false;\n    //    ```\n    //\n    //    ... and convert to:\n    //\n    //    ```js\n    //    it = a.entries();\n    //    while (!(i = it.next()).done)\n    //      if (!b.has(i.value[0])) return false;\n    //    ```\n    //\n    //    **Note**: `i` access switches to `i.value`.\n    var it;\n    if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!b.has(i.value[0])) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!equal(i.value[1], b.get(i.value[0]))) return false;\n      return true;\n    }\n\n    if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!b.has(i.value[0])) return false;\n      return true;\n    }\n    // END: Modifications\n\n    if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (a[i] !== b[i]) return false;\n      return true;\n    }\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    // START: Modifications:\n    // Apply guards for `Object.create(null)` handling. See:\n    // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n    // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n    if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n    // END: Modifications\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n    // END: fast-deep-equal\n\n    // START: react-fast-compare\n    // custom handling for DOM elements\n    if (hasElementType && a instanceof Element) return false;\n\n    // custom handling for React/Preact\n    for (i = length; i-- !== 0;) {\n      if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner\n        // Preact-specific: avoid traversing Preact elements' __v and __o\n        //    __v = $_original / $_vnode\n        //    __o = $_owner\n        // These properties contain circular references and are not needed when\n        // comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of elements\n\n        continue;\n      }\n\n      // all other properties should be traversed as usual\n      if (!equal(a[keys[i]], b[keys[i]])) return false;\n    }\n    // END: react-fast-compare\n\n    // START: fast-deep-equal\n    return true;\n  }\n\n  return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (((error.message || '').match(/stack|recursion/i))) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('react-fast-compare cannot handle circular refs');\n      return false;\n    }\n    // some other error. we should definitely know about these\n    throw error;\n  }\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _isEqual = _interopRequireDefault(require(\"lodash/isEqual\"));\n\nvar _react = require(\"react\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar isDeepEquals = function isDeepEquals(toCompare, reference) {\n  return (0, _isEqual.default)(toCompare, reference);\n};\n\nvar useDeepCompareMemo = function useDeepCompareMemo(dependencies) {\n  var ref = (0, _react.useRef)(null);\n\n  if (isDeepEquals(dependencies, ref.current)) {\n    ref.current = dependencies;\n  }\n\n  return ref.current;\n}; // this function compares deeply new dependencies with old one\n// It works like useEffect but we are using isEqual from lodash to compares deeply\n\n\nvar useDeepCompareEffect = function useDeepCompareEffect(callback, dependencies) {\n  (0, _react.useEffect)(callback, [useDeepCompareMemo(dependencies), callback]);\n};\n\nvar _default = useDeepCompareEffect;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.drawNeedle = void 0;\n\nvar _d = require(\"d3\");\n\nvar _utils = require(\"./utils\");\n\n//If 'resize' is true then the animation does not play\nvar drawNeedle = function drawNeedle(resize, prevProps, props, width, needle, container, outerRadius, g) {\n  var percent = props.percent,\n      needleColor = props.needleColor,\n      needleBaseColor = props.needleBaseColor,\n      hideText = props.hideText,\n      animate = props.animate,\n      needleScale = props.needleScale,\n      textComponent = props.textComponent;\n  var needleRadius = 15 * (width.current / 500),\n      // Make the needle radius responsive\n  centerPoint = [0, -needleRadius / 2]; //Remove the old stuff\n\n  needle.current.selectAll(\"*\").remove(); //Translate the needle starting point to the middle of the arc\n\n  needle.current.attr(\"transform\", \"translate(\" + outerRadius.current + \", \" + outerRadius.current + \")\"); //Draw the triangle\n  //let pathStr = `M ${leftPoint[0]} ${leftPoint[1]} L ${topPoint[0]} ${topPoint[1]} L ${rightPoint[0]} ${rightPoint[1]}`;\n\n  var prevPercent = prevProps ? prevProps.percent : 0;\n  var pathStr = (0, _utils.calculateRotation)(prevPercent || percent, outerRadius, width, needleScale);\n  needle.current.append(\"path\").attr(\"d\", pathStr).attr(\"fill\", needleColor); //Add a circle at the bottom of needle\n\n  needle.current.append(\"circle\").attr(\"cx\", centerPoint[0]).attr(\"cy\", centerPoint[1]).attr(\"r\", needleRadius).attr(\"fill\", needleBaseColor);\n\n  if (!hideText && !textComponent) {\n    (0, _utils.addText)(percent, props, outerRadius, width, g);\n  } //Rotate the needle\n\n\n  if (!resize && animate) {\n    needle.current.transition().delay(props.animDelay).ease(_d.easeElastic).duration(props.animateDuration).tween(\"progress\", function () {\n      var currentPercent = (0, _d.interpolateNumber)(prevPercent, percent);\n      return function (percentOfPercent) {\n        var progress = currentPercent(percentOfPercent);\n        return container.current.select(\".needle path\").attr(\"d\", (0, _utils.calculateRotation)(progress, outerRadius, width, needleScale));\n      };\n    });\n  } else {\n    container.current.select(\".needle path\").attr(\"d\", (0, _utils.calculateRotation)(percent, outerRadius, width, needleScale));\n  }\n};\n\nexports.drawNeedle = drawNeedle;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _d = require(\"d3\");\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _utils = require(\"./utils\");\n\nvar _renderChart = require(\"./renderChart\");\n\nvar _drawNeedle = require(\"./drawNeedle\");\n\nvar _customHooks = _interopRequireDefault(require(\"./customHooks\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\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; }\n\n/*\nGaugeChart creates a gauge chart using D3\nThe chart is responsive and will have the same width as the \"container\"\nThe radius of the gauge depends on the width and height of the container\nIt will use whichever is smallest of width or height\nThe svg element surrounding the gauge will always be square\n\"container\" is the div where the chart should be placed\n*/\n//Constants\nvar startAngle = -Math.PI / 2; //Negative x-axis\n\nvar endAngle = Math.PI / 2; //Positive x-axis\n\nvar defaultStyle = {\n  width: \"100%\"\n}; // Props that should cause an animation on update\n\nvar animateNeedleProps = [\"marginInPercent\", \"arcPadding\", \"percent\", \"nrOfLevels\", \"animDelay\"];\nvar defaultProps = {\n  style: defaultStyle,\n  marginInPercent: 0.05,\n  cornerRadius: 6,\n  nrOfLevels: 3,\n  percent: 0.4,\n  arcPadding: 0.05,\n  //The padding between arcs, in rad\n  arcWidth: 0.2,\n  //The width of the arc given in percent of the radius\n  colors: [\"#00FF00\", \"#FF0000\"],\n  //Default defined colors\n  textColor: \"#fff\",\n  needleColor: \"#464A4F\",\n  needleBaseColor: \"#464A4F\",\n  hideText: false,\n  animate: true,\n  animDelay: 500,\n  formatTextValue: null,\n  fontSize: null,\n  animateDuration: 3000,\n  textComponent: undefined,\n  needleScale: 0.55,\n  customNeedleComponent: null\n};\n\nvar GaugeChart = function GaugeChart(initialProps) {\n  var props = (0, _react.useMemo)(function () {\n    return _objectSpread(_objectSpread({}, defaultProps), initialProps);\n  }, [initialProps]);\n  var svg = (0, _react.useRef)({});\n  var g = (0, _react.useRef)({});\n  var width = (0, _react.useRef)({});\n  var height = (0, _react.useRef)({});\n  var doughnut = (0, _react.useRef)({});\n  var needle = (0, _react.useRef)({});\n  var outerRadius = (0, _react.useRef)({});\n  var margin = (0, _react.useRef)({}); // = {top: 20, right: 50, bottom: 50, left: 50},\n\n  var container = (0, _react.useRef)({});\n  var nbArcsToDisplay = (0, _react.useRef)(0);\n  var colorArray = (0, _react.useRef)([]);\n  var arcChart = (0, _react.useRef)((0, _d.arc)());\n  var arcData = (0, _react.useRef)([]);\n  var pieChart = (0, _react.useRef)((0, _d.pie)());\n  var prevProps = (0, _react.useRef)(props);\n  var selectedRef = (0, _react.useRef)({});\n  var initChart = (0, _react.useCallback)(function (update) {\n    var resize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var prevProps = arguments.length > 2 ? arguments[2] : undefined;\n\n    if (update) {\n      (0, _renderChart.renderChart)(resize, prevProps, width, margin, height, outerRadius, g, doughnut, arcChart, needle, pieChart, svg, props, container, arcData);\n      !customNeedleComponent && (0, _drawNeedle.drawNeedle)(resize, prevProps, props, width, needle, container, outerRadius, g);\n      return;\n    }\n\n    container.current.select(\"svg\").remove();\n    svg.current = container.current.append(\"svg\");\n    g.current = svg.current.append(\"g\"); //Used for margins\n\n    doughnut.current = g.current.append(\"g\").attr(\"class\", \"doughnut\"); //Set up the pie generator\n    //Each arc should be of equal length (or should they?)\n\n    pieChart.current.value(function (d) {\n      return d.value;\n    }) //.padAngle(arcPadding)\n    .startAngle(startAngle).endAngle(endAngle).sort(null); //Add the needle element\n\n    needle.current = g.current.append(\"g\").attr(\"class\", \"needle\");\n    (0, _renderChart.renderChart)(resize, prevProps, width, margin, height, outerRadius, g, doughnut, arcChart, needle, pieChart, svg, props, container, arcData);\n    !customNeedleComponent && (0, _drawNeedle.drawNeedle)(resize, prevProps, props, width, needle, container, outerRadius, g);\n  }, [props]);\n  (0, _react.useLayoutEffect)(function () {\n    (0, _utils.setArcData)(props, nbArcsToDisplay, colorArray, arcData);\n    container.current = (0, _d.select)(selectedRef); //Initialize chart\n\n    initChart();\n  }, [props, initChart]);\n  (0, _customHooks.default)(function () {\n    if (props.nrOfLevels || prevProps.current.arcsLength.every(function (a) {\n      return props.arcsLength.includes(a);\n    }) || prevProps.current.colors.every(function (a) {\n      return props.colors.includes(a);\n    })) {\n      (0, _utils.setArcData)(props, nbArcsToDisplay, colorArray, arcData);\n    } //Initialize chart\n    // Always redraw the chart, but potentially do not animate it\n\n\n    var resize = !animateNeedleProps.some(function (key) {\n      return prevProps.current[key] !== props[key];\n    });\n    initChart(true, resize, prevProps.current);\n    prevProps.current = props;\n  }, [props.nrOfLevels, props.arcsLength, props.colors, props.percent, props.needleColor, props.needleBaseColor]);\n  (0, _react.useEffect)(function () {\n    var handleResize = function handleResize() {\n      var resize = true;\n      (0, _renderChart.renderChart)(resize, prevProps, width, margin, height, outerRadius, g, doughnut, arcChart, needle, pieChart, svg, props, container, arcData);\n      !customNeedleComponent && (0, _drawNeedle.drawNeedle)(resize, prevProps, props, width, needle, container, outerRadius, g);\n    }; //Set up resize event listener to re-render the chart everytime the window is resized\n\n\n    window.addEventListener(\"resize\", handleResize);\n    return function () {\n      window.removeEventListener(\"resize\", handleResize);\n    }; // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [props]);\n  var id = props.id,\n      style = props.style,\n      className = props.className,\n      textComponent = props.textComponent,\n      textComponentContainerClassName = props.textComponentContainerClassName,\n      customNeedleComponent = props.customNeedleComponent,\n      customNeedleStyle = props.customNeedleStyle,\n      customNeedleComponentClassName = props.customNeedleComponentClassName;\n  return /*#__PURE__*/_react.default.createElement(\"div\", {\n    id: id,\n    className: className,\n    style: style\n  }, /*#__PURE__*/_react.default.createElement(\"div\", {\n    ref: function ref(svg) {\n      return selectedRef = svg;\n    }\n  }, /*#__PURE__*/_react.default.createElement(\"div\", {\n    className: textComponentContainerClassName,\n    style: {\n      position: \"relative\",\n      top: \"50%\"\n    }\n  }, textComponent)), customNeedleComponent && /*#__PURE__*/_react.default.createElement(\"div\", {\n    className: customNeedleComponentClassName,\n    style: _objectSpread({\n      position: \"relative\"\n    }, customNeedleStyle)\n  }, customNeedleComponent));\n};\n\nvar _default = GaugeChart;\nexports.default = _default;\nGaugeChart.propTypes = {\n  id: _propTypes.default.string,\n  className: _propTypes.default.string,\n  style: _propTypes.default.object,\n  marginInPercent: _propTypes.default.number,\n  cornerRadius: _propTypes.default.number,\n  nrOfLevels: _propTypes.default.number,\n  percent: _propTypes.default.number,\n  arcPadding: _propTypes.default.number,\n  arcWidth: _propTypes.default.number,\n  arcsLength: _propTypes.default.array,\n  colors: _propTypes.default.array,\n  textColor: _propTypes.default.string,\n  needleColor: _propTypes.default.string,\n  needleBaseColor: _propTypes.default.string,\n  hideText: _propTypes.default.bool,\n  animate: _propTypes.default.bool,\n  formatTextValue: _propTypes.default.func,\n  fontSize: _propTypes.default.string,\n  animateDuration: _propTypes.default.number,\n  animDelay: _propTypes.default.number,\n  textComponent: _propTypes.default.element,\n  textComponentContainerClassName: _propTypes.default.string,\n  needleScale: _propTypes.default.number,\n  customNeedleComponent: _propTypes.default.element,\n  customNeedleComponentClassName: _propTypes.default.string,\n  customNeedleStyle: _propTypes.default.object\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.renderChart = void 0;\n\nvar _utils = require(\"./utils\");\n\n//Renders the chart, should be called every time the window is resized\nvar renderChart = function renderChart(resize, prevProps, width, margin, height, outerRadius, g, doughnut, arcChart, needle, pieChart, svg, props, container, arcData) {\n  (0, _utils.updateDimensions)(props, container, margin, width, height); //Set dimensions of svg element and translations\n\n  svg.current.attr(\"width\", width.current + margin.current.left + margin.current.right).attr(\"height\", height.current + margin.current.top + margin.current.bottom);\n  g.current.attr(\"transform\", \"translate(\" + margin.current.left + \", \" + margin.current.top + \")\"); //Set the radius to lesser of width or height and remove the margins\n  //Calculate the new radius\n\n  (0, _utils.calculateRadius)(width, height, outerRadius, margin, g);\n  doughnut.current.attr(\"transform\", \"translate(\" + outerRadius.current + \", \" + outerRadius.current + \")\"); //Setup the arc\n\n  arcChart.current.outerRadius(outerRadius.current).innerRadius(outerRadius.current * (1 - props.arcWidth)).cornerRadius(props.cornerRadius).padAngle(props.arcPadding); //Remove the old stuff\n\n  doughnut.current.selectAll(\".arc\").remove();\n  g.current.selectAll(\".text-group\").remove(); //Draw the arc\n\n  var arcPaths = doughnut.current.selectAll(\".arc\").data(pieChart.current(arcData.current)).enter().append(\"g\").attr(\"class\", \"arc\");\n  arcPaths.append(\"path\").attr(\"d\", arcChart.current).style(\"fill\", function (d) {\n    return d.data.color;\n  });\n};\n\nexports.renderChart = renderChart;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.setArcData = exports.addText = exports.calculateRotation = exports.updateDimensions = exports.centerGraph = exports.calculateRadius = void 0;\n\nvar _d = require(\"d3\");\n\nvar calculateRadius = function calculateRadius(width, height, outerRadius, margin, g) {\n  //The radius needs to be constrained by the containing div\n  //Since it is a half circle we are dealing with the height of the div\n  //Only needs to be half of the width, because the width needs to be 2 * radius\n  //For the whole arc to fit\n  //First check if it is the width or the height that is the \"limiting\" dimension\n  if (width.current < 2 * height.current) {\n    //Then the width limits the size of the chart\n    //Set the radius to the width - the horizontal margins\n    outerRadius.current = (width.current - margin.current.left - margin.current.right) / 2;\n  } else {\n    outerRadius.current = height.current - margin.current.top - margin.current.bottom;\n  }\n\n  centerGraph(width, g, outerRadius, margin);\n}; //Calculates new margins to make the graph centered\n\n\nexports.calculateRadius = calculateRadius;\n\nvar centerGraph = function centerGraph(width, g, outerRadius, margin) {\n  margin.current.left = width.current / 2 - outerRadius.current + margin.current.right;\n  g.current.attr(\"transform\", \"translate(\" + margin.current.left + \", \" + margin.current.top + \")\");\n};\n\nexports.centerGraph = centerGraph;\n\nvar updateDimensions = function updateDimensions(props, container, margin, width, height) {\n  //TODO: Fix so that the container is included in the component\n  var marginInPercent = props.marginInPercent;\n  var divDimensions = container.current.node().getBoundingClientRect(),\n      divWidth = divDimensions.width,\n      divHeight = divDimensions.height; //Set the new width and horizontal margins\n\n  margin.current.left = divWidth * marginInPercent;\n  margin.current.right = divWidth * marginInPercent;\n  width.current = divWidth - margin.current.left - margin.current.right;\n  margin.current.top = divHeight * marginInPercent;\n  margin.current.bottom = divHeight * marginInPercent;\n  height.current = width.current / 2 - margin.current.top - margin.current.bottom; //height.current = divHeight - margin.current.top - margin.current.bottom;\n};\n\nexports.updateDimensions = updateDimensions;\n\nvar calculateRotation = function calculateRotation(percent, outerRadius, width, needleScale) {\n  var needleLength = outerRadius.current * needleScale,\n      //TODO: Maybe it should be specified as a percentage of the arc radius?\n  needleRadius = 15 * (width.current / 500),\n      theta = percentToRad(percent),\n      centerPoint = [0, -needleRadius / 2],\n      topPoint = [centerPoint[0] - needleLength * Math.cos(theta), centerPoint[1] - needleLength * Math.sin(theta)],\n      leftPoint = [centerPoint[0] - needleRadius * Math.cos(theta - Math.PI / 2), centerPoint[1] - needleRadius * Math.sin(theta - Math.PI / 2)],\n      rightPoint = [centerPoint[0] - needleRadius * Math.cos(theta + Math.PI / 2), centerPoint[1] - needleRadius * Math.sin(theta + Math.PI / 2)];\n  var pathStr = \"M \".concat(leftPoint[0], \" \").concat(leftPoint[1], \" L \").concat(topPoint[0], \" \").concat(topPoint[1], \" L \").concat(rightPoint[0], \" \").concat(rightPoint[1]);\n  return pathStr;\n}; //Adds text undeneath the graft to display which percentage is the current one\n\n\nexports.calculateRotation = calculateRotation;\n\nvar addText = function addText(percentage, props, outerRadius, width, g) {\n  var formatTextValue = props.formatTextValue,\n      fontSize = props.fontSize;\n  var textPadding = 20;\n  var text = formatTextValue ? formatTextValue(floatingNumber(percentage)) : floatingNumber(percentage) + \"%\";\n  g.current.append(\"g\").attr(\"class\", \"text-group\").attr(\"transform\", \"translate(\".concat(outerRadius.current, \", \").concat(outerRadius.current / 2 + textPadding, \")\")).append(\"text\").text(text) // this computation avoid text overflow. When formatted value is over 10 characters, we should reduce font size\n  .style(\"font-size\", function () {\n    return fontSize ? fontSize : \"\".concat(width.current / 11 / (text.length > 10 ? text.length / 10 : 1), \"px\");\n  }).style(\"fill\", props.textColor).style(\"text-anchor\", \"middle\");\n}; // This function update arc's datas when component is mounting or when one of arc's props is updated\n\n\nexports.addText = addText;\n\nvar setArcData = function setArcData(props, nbArcsToDisplay, colorArray, arcData) {\n  // We have to make a decision about number of arcs to display\n  // If arcsLength is setted, we choose arcsLength length instead of nrOfLevels\n  nbArcsToDisplay.current = props.arcsLength ? props.arcsLength.length : props.nrOfLevels; //Check if the number of colors equals the number of levels\n  //Otherwise make an interpolation\n\n  if (nbArcsToDisplay.current === props.colors.length) {\n    colorArray.current = props.colors;\n  } else {\n    colorArray.current = getColors(props, nbArcsToDisplay);\n  } //The data that is used to create the arc\n  // Each arc could have hiw own value width arcsLength prop\n\n\n  arcData.current = [];\n\n  for (var i = 0; i < nbArcsToDisplay.current; i++) {\n    var arcDatum = {\n      value: props.arcsLength && props.arcsLength.length > i ? props.arcsLength[i] : 1,\n      color: colorArray.current[i]\n    };\n    arcData.current.push(arcDatum);\n  }\n}; //Depending on the number of levels in the chart\n//This function returns the same number of colors\n\n\nexports.setArcData = setArcData;\n\nvar getColors = function getColors(props, nbArcsToDisplay) {\n  var colors = props.colors;\n  var colorScale = (0, _d.scaleLinear)().domain([1, nbArcsToDisplay.current]).range([colors[0], colors[colors.length - 1]]) //Use the first and the last color as range\n  .interpolate(_d.interpolateHsl);\n  var colorArray = [];\n\n  for (var i = 1; i <= nbArcsToDisplay.current; i++) {\n    colorArray.push(colorScale(i));\n  }\n\n  return colorArray;\n};\n\nvar floatingNumber = function floatingNumber(value) {\n  var maxDigits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n  return Math.round(value * 100 * Math.pow(10, maxDigits)) / Math.pow(10, maxDigits);\n}; //Returns the angle (in rad) for the given 'percent' value where percent = 1 means 100% and is 180 degree angle\n\n\nvar percentToRad = function percentToRad(percent) {\n  return percent * Math.PI;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _GaugeChart = _interopRequireDefault(require(\"./GaugeChart\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = _GaugeChart.default;\nexports.default = _default;","/** @license React v17.0.2\n * react-is.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'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nfunction _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\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n  if (typeof reducePropsToState !== 'function') {\n    throw new Error('Expected reducePropsToState to be a function.');\n  }\n\n  if (typeof handleStateChangeOnClient !== 'function') {\n    throw new Error('Expected handleStateChangeOnClient to be a function.');\n  }\n\n  if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n    throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n  }\n\n  function getDisplayName(WrappedComponent) {\n    return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n  }\n\n  return function wrap(WrappedComponent) {\n    if (typeof WrappedComponent !== 'function') {\n      throw new Error('Expected WrappedComponent to be a React component.');\n    }\n\n    var mountedInstances = [];\n    var state;\n\n    function emitChange() {\n      state = reducePropsToState(mountedInstances.map(function (instance) {\n        return instance.props;\n      }));\n\n      if (SideEffect.canUseDOM) {\n        handleStateChangeOnClient(state);\n      } else if (mapStateOnServer) {\n        state = mapStateOnServer(state);\n      }\n    }\n\n    var SideEffect =\n    /*#__PURE__*/\n    function (_PureComponent) {\n      _inheritsLoose(SideEffect, _PureComponent);\n\n      function SideEffect() {\n        return _PureComponent.apply(this, arguments) || this;\n      }\n\n      // Try to use displayName of wrapped component\n      // Expose canUseDOM so tests can monkeypatch it\n      SideEffect.peek = function peek() {\n        return state;\n      };\n\n      SideEffect.rewind = function rewind() {\n        if (SideEffect.canUseDOM) {\n          throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n        }\n\n        var recordedState = state;\n        state = undefined;\n        mountedInstances = [];\n        return recordedState;\n      };\n\n      var _proto = SideEffect.prototype;\n\n      _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n        mountedInstances.push(this);\n        emitChange();\n      };\n\n      _proto.componentDidUpdate = function componentDidUpdate() {\n        emitChange();\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        var index = mountedInstances.indexOf(this);\n        mountedInstances.splice(index, 1);\n        emitChange();\n      };\n\n      _proto.render = function render() {\n        return React__default.createElement(WrappedComponent, this.props);\n      };\n\n      return SideEffect;\n    }(React.PureComponent);\n\n    _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n    _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n    return SideEffect;\n  };\n}\n\nmodule.exports = withSideEffect;\n","/**\n * @license React\n * react-jsx-runtime.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'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\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'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\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","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * scheduler.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'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.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(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n  \"area\": true,\n  \"base\": true,\n  \"br\": true,\n  \"col\": true,\n  \"embed\": true,\n  \"hr\": true,\n  \"img\": true,\n  \"input\": true,\n  \"link\": true,\n  \"meta\": true,\n  \"param\": true,\n  \"source\": true,\n  \"track\": true,\n  \"wbr\": true\n};\n","export default function ascending(a, b) {\n  return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n  return a == null || b == null ? NaN\n    : b < a ? -1\n    : b > a ? 1\n    : b >= a ? 0\n    : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n  let compare1, compare2, delta;\n\n  // If an accessor is specified, promote it to a comparator. In this case we\n  // can test whether the search value is (self-) comparable. We can’t do this\n  // for a comparator (except for specific, known comparators) because we can’t\n  // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n  // used to test whether a single value is comparable.\n  if (f.length !== 2) {\n    compare1 = ascending;\n    compare2 = (d, x) => ascending(f(d), x);\n    delta = (d, x) => f(d) - x;\n  } else {\n    compare1 = f === ascending || f === descending ? f : zero;\n    compare2 = f;\n    delta = f;\n  }\n\n  function left(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function right(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) <= 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function center(a, x, lo = 0, 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 zero() {\n  return 0;\n}\n","export default function number(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","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 function blur(values, r) {\n  if (!((r = +r) >= 0)) throw new RangeError(\"invalid r\");\n  let length = values.length;\n  if (!((length = Math.floor(length)) >= 0)) throw new RangeError(\"invalid length\");\n  if (!length || !r) return values;\n  const blur = blurf(r);\n  const temp = values.slice();\n  blur(values, temp, 0, length, 1);\n  blur(temp, values, 0, length, 1);\n  blur(values, temp, 0, length, 1);\n  return values;\n}\n\nexport const blur2 = Blur2(blurf);\n\nexport const blurImage = Blur2(blurfImage);\n\nfunction Blur2(blur) {\n  return function(data, rx, ry = rx) {\n    if (!((rx = +rx) >= 0)) throw new RangeError(\"invalid rx\");\n    if (!((ry = +ry) >= 0)) throw new RangeError(\"invalid ry\");\n    let {data: values, width, height} = data;\n    if (!((width = Math.floor(width)) >= 0)) throw new RangeError(\"invalid width\");\n    if (!((height = Math.floor(height !== undefined ? height : values.length / width)) >= 0)) throw new RangeError(\"invalid height\");\n    if (!width || !height || (!rx && !ry)) return data;\n    const blurx = rx && blur(rx);\n    const blury = ry && blur(ry);\n    const temp = values.slice();\n    if (blurx && blury) {\n      blurh(blurx, temp, values, width, height);\n      blurh(blurx, values, temp, width, height);\n      blurh(blurx, temp, values, width, height);\n      blurv(blury, values, temp, width, height);\n      blurv(blury, temp, values, width, height);\n      blurv(blury, values, temp, width, height);\n    } else if (blurx) {\n      blurh(blurx, values, temp, width, height);\n      blurh(blurx, temp, values, width, height);\n      blurh(blurx, values, temp, width, height);\n    } else if (blury) {\n      blurv(blury, values, temp, width, height);\n      blurv(blury, temp, values, width, height);\n      blurv(blury, values, temp, width, height);\n    }\n    return data;\n  };\n}\n\nfunction blurh(blur, T, S, w, h) {\n  for (let y = 0, n = w * h; y < n;) {\n    blur(T, S, y, y += w, 1);\n  }\n}\n\nfunction blurv(blur, T, S, w, h) {\n  for (let x = 0, n = w * h; x < w; ++x) {\n    blur(T, S, x, x + n, w);\n  }\n}\n\nfunction blurfImage(radius) {\n  const blur = blurf(radius);\n  return (T, S, start, stop, step) => {\n    start <<= 2, stop <<= 2, step <<= 2;\n    blur(T, S, start + 0, stop + 0, step);\n    blur(T, S, start + 1, stop + 1, step);\n    blur(T, S, start + 2, stop + 2, step);\n    blur(T, S, start + 3, stop + 3, step);\n  };\n}\n\n// Given a target array T, a source array S, sets each value T[i] to the average\n// of {S[i - r], …, S[i], …, S[i + r]}, where r = ⌊radius⌋, start <= i < stop,\n// for each i, i + step, i + 2 * step, etc., and where S[j] is clamped between\n// S[start] (inclusive) and S[stop] (exclusive). If the given radius is not an\n// integer, S[i - r - 1] and S[i + r + 1] are added to the sum, each weighted\n// according to r - ⌊radius⌋.\nfunction blurf(radius) {\n  const radius0 = Math.floor(radius);\n  if (radius0 === radius) return bluri(radius);\n  const t = radius - radius0;\n  const w = 2 * radius + 1;\n  return (T, S, start, stop, step) => { // stop must be aligned!\n    if (!((stop -= step) >= start)) return; // inclusive stop\n    let sum = radius0 * S[start];\n    const s0 = step * radius0;\n    const s1 = s0 + step;\n    for (let i = start, j = start + s0; i < j; i += step) {\n      sum += S[Math.min(stop, i)];\n    }\n    for (let i = start, j = stop; i <= j; i += step) {\n      sum += S[Math.min(stop, i + s0)];\n      T[i] = (sum + t * (S[Math.max(start, i - s1)] + S[Math.min(stop, i + s1)])) / w;\n      sum -= S[Math.max(start, i - s0)];\n    }\n  };\n}\n\n// Like blurf, but optimized for integer radius.\nfunction bluri(radius) {\n  const w = 2 * radius + 1;\n  return (T, S, start, stop, step) => { // stop must be aligned!\n    if (!((stop -= step) >= start)) return; // inclusive stop\n    let sum = radius * S[start];\n    const s = step * radius;\n    for (let i = start, j = start + s; i < j; i += step) {\n      sum += S[Math.min(stop, i)];\n    }\n    for (let i = start, j = stop; i <= j; i += step) {\n      sum += S[Math.min(stop, i + s)];\n      T[i] = sum / w;\n      sum -= S[Math.max(start, i - s)];\n    }\n  };\n}\n","export default function count(values, valueof) {\n  let count = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        ++count;\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        ++count;\n      }\n    }\n  }\n  return count;\n}\n","function length(array) {\n  return array.length | 0;\n}\n\nfunction empty(length) {\n  return !(length > 0);\n}\n\nfunction arrayify(values) {\n  return typeof values !== \"object\" || \"length\" in values ? values : Array.from(values);\n}\n\nfunction reducer(reduce) {\n  return values => reduce(...values);\n}\n\nexport default function cross(...values) {\n  const reduce = typeof values[values.length - 1] === \"function\" && reducer(values.pop());\n  values = values.map(arrayify);\n  const lengths = values.map(length);\n  const j = values.length - 1;\n  const index = new Array(j + 1).fill(0);\n  const product = [];\n  if (j < 0 || lengths.some(empty)) return product;\n  while (true) {\n    product.push(index.map((j, i) => values[i][j]));\n    let i = j;\n    while (++index[i] === lengths[i]) {\n      if (i === 0) return reduce ? product.map(reduce) : product;\n      index[i--] = 0;\n    }\n  }\n}\n","export default function cumsum(values, valueof) {\n  var sum = 0, index = 0;\n  return Float64Array.from(values, valueof === undefined\n    ? v => (sum += +v || 0)\n    : v => (sum += +valueof(v, index++, values) || 0));\n}","export default function variance(values, valueof) {\n  let count = 0;\n  let delta;\n  let mean = 0;\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        delta = value - mean;\n        mean += delta / ++count;\n        sum += delta * (value - mean);\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        delta = value - mean;\n        mean += delta / ++count;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n  if (count > 1) return sum / (count - 1);\n}\n","import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n  const v = variance(values, valueof);\n  return v ? Math.sqrt(v) : v;\n}\n","export default function extent(values, valueof) {\n  let min;\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  }\n  return [min, max];\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n  constructor() {\n    this._partials = new Float64Array(32);\n    this._n = 0;\n  }\n  add(x) {\n    const p = this._partials;\n    let i = 0;\n    for (let j = 0; j < this._n && j < 32; j++) {\n      const y = p[j],\n        hi = x + y,\n        lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n      if (lo) p[i++] = lo;\n      x = hi;\n    }\n    p[i] = x;\n    this._n = i + 1;\n    return this;\n  }\n  valueOf() {\n    const p = this._partials;\n    let n = this._n, x, y, lo, hi = 0;\n    if (n > 0) {\n      hi = p[--n];\n      while (n > 0) {\n        x = hi;\n        y = p[--n];\n        hi = x + y;\n        lo = y - (hi - x);\n        if (lo) break;\n      }\n      if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n        y = lo * 2;\n        x = hi + y;\n        if (y == x - hi) hi = x;\n      }\n    }\n    return hi;\n  }\n}\n\nexport function fsum(values, valueof) {\n  const adder = new Adder();\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value = +value) {\n        adder.add(value);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if (value = +valueof(value, ++index, values)) {\n        adder.add(value);\n      }\n    }\n  }\n  return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n  const adder = new Adder();\n  let index = -1;\n  return Float64Array.from(values, valueof === undefined\n      ? v => adder.add(+v || 0)\n      : v => adder.add(+valueof(v, ++index, values) || 0)\n  );\n}\n","export class InternMap extends Map {\n  constructor(entries, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (entries != null) for (const [key, value] of entries) this.set(key, value);\n  }\n  get(key) {\n    return super.get(intern_get(this, key));\n  }\n  has(key) {\n    return super.has(intern_get(this, key));\n  }\n  set(key, value) {\n    return super.set(intern_set(this, key), value);\n  }\n  delete(key) {\n    return super.delete(intern_delete(this, key));\n  }\n}\n\nexport class InternSet extends Set {\n  constructor(values, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (values != null) for (const value of values) this.add(value);\n  }\n  has(value) {\n    return super.has(intern_get(this, value));\n  }\n  add(value) {\n    return super.add(intern_set(this, value));\n  }\n  delete(value) {\n    return super.delete(intern_delete(this, value));\n  }\n}\n\nfunction intern_get({_intern, _key}, value) {\n  const key = _key(value);\n  return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) return _intern.get(key);\n  _intern.set(key, value);\n  return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) {\n    value = _intern.get(key);\n    _intern.delete(key);\n  }\n  return value;\n}\n\nfunction keyof(value) {\n  return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","export default function identity(x) {\n  return x;\n}\n","import {InternMap} from \"internmap\";\nimport identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n  return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n  return nest(values, Array.from, identity, keys);\n}\n\nfunction flatten(groups, keys) {\n  for (let i = 1, n = keys.length; i < n; ++i) {\n    groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n  }\n  return groups;\n}\n\nexport function flatGroup(values, ...keys) {\n  return flatten(groups(values, ...keys), keys);\n}\n\nexport function flatRollup(values, reduce, ...keys) {\n  return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n  return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n  return nest(values, Array.from, reduce, keys);\n}\n\nexport function index(values, ...keys) {\n  return nest(values, identity, unique, keys);\n}\n\nexport function indexes(values, ...keys) {\n  return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n  if (values.length !== 1) throw new Error(\"duplicate key\");\n  return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n  return (function regroup(values, i) {\n    if (i >= keys.length) return reduce(values);\n    const groups = new InternMap();\n    const keyof = keys[i++];\n    let index = -1;\n    for (const value of values) {\n      const key = keyof(value, ++index, values);\n      const group = groups.get(key);\n      if (group) group.push(value);\n      else groups.set(key, [value]);\n    }\n    for (const [key, values] of groups) {\n      groups.set(key, regroup(values, i));\n    }\n    return map(groups);\n  })(values, 0);\n}\n","export default function permute(source, keys) {\n  return Array.from(keys, key => source[key]);\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  values = Array.from(values);\n  let [f] = F;\n  if ((f && f.length !== 2) || F.length > 1) {\n    const index = Uint32Array.from(values, (d, i) => i);\n    if (F.length > 1) {\n      F = F.map(f => values.map(f));\n      index.sort((i, j) => {\n        for (const f of F) {\n          const c = ascendingDefined(f[i], f[j]);\n          if (c) return c;\n        }\n      });\n    } else {\n      f = values.map(f);\n      index.sort((i, j) => ascendingDefined(f[i], f[j]));\n    }\n    return permute(values, index);\n  }\n  return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n  if (compare === ascending) return ascendingDefined;\n  if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n  return (a, b) => {\n    const x = compare(a, b);\n    if (x || x === 0) return x;\n    return (compare(b, b) === 0) - (compare(a, a) === 0);\n  };\n}\n\nexport function ascendingDefined(a, b) {\n  return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import ascending from \"./ascending.js\";\nimport group, {rollup} from \"./group.js\";\nimport sort from \"./sort.js\";\n\nexport default function groupSort(values, reduce, key) {\n  return (reduce.length !== 2\n    ? sort(rollup(values, reduce, key), (([ak, av], [bk, bv]) => ascending(av, bv) || ascending(ak, bk)))\n    : sort(group(values, key), (([ak, av], [bk, bv]) => reduce(av, bv) || ascending(ak, bk))))\n    .map(([key]) => key);\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function constant(x) {\n  return () => x;\n}\n","const e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n  const step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log10(step)),\n      error = step / Math.pow(10, power),\n      factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n  let i1, i2, inc;\n  if (power < 0) {\n    inc = Math.pow(10, -power) / factor;\n    i1 = Math.round(start * inc);\n    i2 = Math.round(stop * inc);\n    if (i1 / inc < start) ++i1;\n    if (i2 / inc > stop) --i2;\n    inc = -inc;\n  } else {\n    inc = Math.pow(10, power) * factor;\n    i1 = Math.round(start / inc);\n    i2 = Math.round(stop / inc);\n    if (i1 * inc < start) ++i1;\n    if (i2 * inc > stop) --i2;\n  }\n  if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n  return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  if (!(count > 0)) return [];\n  if (start === stop) return [start];\n  const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n  if (!(i2 >= i1)) return [];\n  const n = i2 - i1 + 1, ticks = new Array(n);\n  if (reverse) {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n  } else {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n  }\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n  return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","import {tickIncrement} from \"./ticks.js\";\n\nexport default function nice(start, stop, count) {\n  let prestep;\n  while (true) {\n    const step = tickIncrement(start, stop, count);\n    if (step === prestep || step === 0 || !isFinite(step)) {\n      return [start, stop];\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    }\n    prestep = step;\n  }\n}\n","import count from \"../count.js\";\n\nexport default function thresholdSturges(values) {\n  return Math.max(1, Math.ceil(Math.log(count(values)) / Math.LN2) + 1);\n}\n","import {slice} from \"./array.js\";\nimport bisect from \"./bisect.js\";\nimport constant from \"./constant.js\";\nimport extent from \"./extent.js\";\nimport identity from \"./identity.js\";\nimport nice from \"./nice.js\";\nimport ticks, {tickIncrement} from \"./ticks.js\";\nimport sturges from \"./threshold/sturges.js\";\n\nexport default function bin() {\n  var value = identity,\n      domain = extent,\n      threshold = sturges;\n\n  function histogram(data) {\n    if (!Array.isArray(data)) data = Array.from(data);\n\n    var i,\n        n = data.length,\n        x,\n        step,\n        values = new Array(n);\n\n    for (i = 0; i < n; ++i) {\n      values[i] = value(data[i], i, data);\n    }\n\n    var xz = domain(values),\n        x0 = xz[0],\n        x1 = xz[1],\n        tz = threshold(values, x0, x1);\n\n    // Convert number of thresholds into uniform thresholds, and nice the\n    // default domain accordingly.\n    if (!Array.isArray(tz)) {\n      const max = x1, tn = +tz;\n      if (domain === extent) [x0, x1] = nice(x0, x1, tn);\n      tz = ticks(x0, x1, tn);\n\n      // If the domain is aligned with the first tick (which it will by\n      // default), then we can use quantization rather than bisection to bin\n      // values, which is substantially faster.\n      if (tz[0] <= x0) step = tickIncrement(x0, x1, tn);\n\n      // If the last threshold is coincident with the domain’s upper bound, the\n      // last bin will be zero-width. If the default domain is used, and this\n      // last threshold is coincident with the maximum input value, we can\n      // extend the niced upper bound by one tick to ensure uniform bin widths;\n      // otherwise, we simply remove the last threshold. Note that we don’t\n      // coerce values or the domain to numbers, and thus must be careful to\n      // compare order (>=) rather than strict equality (===)!\n      if (tz[tz.length - 1] >= x1) {\n        if (max >= x1 && domain === extent) {\n          const step = tickIncrement(x0, x1, tn);\n          if (isFinite(step)) {\n            if (step > 0) {\n              x1 = (Math.floor(x1 / step) + 1) * step;\n            } else if (step < 0) {\n              x1 = (Math.ceil(x1 * -step) + 1) / -step;\n            }\n          }\n        } else {\n          tz.pop();\n        }\n      }\n    }\n\n    // Remove any thresholds outside the domain.\n    // Be careful not to mutate an array owned by the user!\n    var m = tz.length, a = 0, b = m;\n    while (tz[a] <= x0) ++a;\n    while (tz[b - 1] > x1) --b;\n    if (a || b < m) tz = tz.slice(a, b), m = b - a;\n\n    var bins = new Array(m + 1),\n        bin;\n\n    // Initialize bins.\n    for (i = 0; i <= m; ++i) {\n      bin = bins[i] = [];\n      bin.x0 = i > 0 ? tz[i - 1] : x0;\n      bin.x1 = i < m ? tz[i] : x1;\n    }\n\n    // Assign data to bins by value, ignoring any outside the domain.\n    if (isFinite(step)) {\n      if (step > 0) {\n        for (i = 0; i < n; ++i) {\n          if ((x = values[i]) != null && x0 <= x && x <= x1) {\n            bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]);\n          }\n        }\n      } else if (step < 0) {\n        for (i = 0; i < n; ++i) {\n          if ((x = values[i]) != null && x0 <= x && x <= x1) {\n            const j = Math.floor((x0 - x) * step);\n            bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding\n          }\n        }\n      }\n    } else {\n      for (i = 0; i < n; ++i) {\n        if ((x = values[i]) != null && x0 <= x && x <= x1) {\n          bins[bisect(tz, x, 0, m)].push(data[i]);\n        }\n      }\n    }\n\n    return bins;\n  }\n\n  histogram.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n  };\n\n  histogram.domain = function(_) {\n    return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n  };\n\n  histogram.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : constant(Array.isArray(_) ? slice.call(_) : _), histogram) : threshold;\n  };\n\n  return histogram;\n}\n","export default function max(values, valueof) {\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  }\n  return max;\n}\n","export default function maxIndex(values, valueof) {\n  let max;\n  let maxIndex = -1;\n  let index = -1;\n  if (valueof === undefined) {\n    for (const value of values) {\n      ++index;\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value, maxIndex = index;\n      }\n    }\n  } else {\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value, maxIndex = index;\n      }\n    }\n  }\n  return maxIndex;\n}\n","export default function min(values, valueof) {\n  let min;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  }\n  return min;\n}\n","export default function minIndex(values, valueof) {\n  let min;\n  let minIndex = -1;\n  let index = -1;\n  if (valueof === undefined) {\n    for (const value of values) {\n      ++index;\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value, minIndex = index;\n      }\n    }\n  } else {\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value, minIndex = index;\n      }\n    }\n  }\n  return minIndex;\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n  k = Math.floor(k);\n  left = Math.floor(Math.max(0, left));\n  right = Math.floor(Math.min(array.length - 1, right));\n\n  if (!(left <= k && k <= right)) return array;\n\n  compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n  while (right > left) {\n    if (right - left > 600) {\n      const n = right - left + 1;\n      const m = k - left + 1;\n      const z = Math.log(n);\n      const s = 0.5 * Math.exp(2 * z / 3);\n      const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n      const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n      const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n      quickselect(array, k, newLeft, newRight, compare);\n    }\n\n    const t = array[k];\n    let i = left;\n    let j = right;\n\n    swap(array, left, k);\n    if (compare(array[right], t) > 0) swap(array, left, right);\n\n    while (i < j) {\n      swap(array, i, j), ++i, --j;\n      while (compare(array[i], t) < 0) ++i;\n      while (compare(array[j], t) > 0) --j;\n    }\n\n    if (compare(array[left], t) === 0) swap(array, left, j);\n    else ++j, swap(array, j, right);\n\n    if (j <= k) left = j + 1;\n    if (k <= j) right = j - 1;\n  }\n\n  return array;\n}\n\nfunction swap(array, i, j) {\n  const t = array[i];\n  array[i] = array[j];\n  array[j] = t;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function greatest(values, compare = ascending) {\n  let max;\n  let defined = false;\n  if (compare.length === 1) {\n    let maxValue;\n    for (const element of values) {\n      const value = compare(element);\n      if (defined\n          ? ascending(value, maxValue) > 0\n          : ascending(value, value) === 0) {\n        max = element;\n        maxValue = value;\n        defined = true;\n      }\n    }\n  } else {\n    for (const value of values) {\n      if (defined\n          ? compare(value, max) > 0\n          : compare(value, value) === 0) {\n        max = value;\n        defined = true;\n      }\n    }\n  }\n  return max;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n  values = Float64Array.from(numbers(values, valueof));\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p <= 0 || n < 2) return min(values);\n  if (p >= 1) return max(values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n      value1 = min(values.subarray(i0 + 1));\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n  if (isNaN(p = +p)) return;\n  numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n  if (p <= 0) return minIndex(numbers);\n  if (p >= 1) return maxIndex(numbers);\n  var numbers,\n      index = Uint32Array.from(values, (_, i) => i),\n      j = numbers.length - 1,\n      i = Math.floor(j * p);\n  quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n  i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n  return i >= 0 ? i : -1;\n}\n","import count from \"../count.js\";\nimport quantile from \"../quantile.js\";\n\nexport default function thresholdFreedmanDiaconis(values, min, max) {\n  const c = count(values), d = quantile(values, 0.75) - quantile(values, 0.25);\n  return c && d ? Math.ceil((max - min) / (2 * d * Math.pow(c, -1 / 3))) : 1;\n}\n","import count from \"../count.js\";\nimport deviation from \"../deviation.js\";\n\nexport default function thresholdScott(values, min, max) {\n  const c = count(values), d = deviation(values);\n  return c && d ? Math.ceil((max - min) * Math.cbrt(c) / (3.49 * d)) : 1;\n}\n","export default function mean(values, valueof) {\n  let count = 0;\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        ++count, sum += 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        ++count, sum += value;\n      }\n    }\n  }\n  if (count) return sum / count;\n}\n","import quantile, {quantileIndex} from \"./quantile.js\";\n\nexport default function median(values, valueof) {\n  return quantile(values, 0.5, valueof);\n}\n\nexport function medianIndex(values, valueof) {\n  return quantileIndex(values, 0.5, valueof);\n}\n","function* flatten(arrays) {\n  for (const array of arrays) {\n    yield* array;\n  }\n}\n\nexport default function merge(arrays) {\n  return Array.from(flatten(arrays));\n}\n","import {InternMap} from \"internmap\";\n\nexport default function mode(values, valueof) {\n  const counts = new InternMap();\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && value >= value) {\n        counts.set(value, (counts.get(value) || 0) + 1);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && value >= value) {\n        counts.set(value, (counts.get(value) || 0) + 1);\n      }\n    }\n  }\n  let modeValue;\n  let modeCount = 0;\n  for (const [value, count] of counts) {\n    if (count > modeCount) {\n      modeCount = count;\n      modeValue = value;\n    }\n  }\n  return modeValue;\n}\n","export default function pairs(values, pairof = pair) {\n  const pairs = [];\n  let previous;\n  let first = false;\n  for (const value of values) {\n    if (first) pairs.push(pairof(previous, value));\n    previous = value;\n    first = true;\n  }\n  return pairs;\n}\n\nexport function pair(a, b) {\n  return [a, b];\n}\n","export default function range(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 ascending from \"./ascending.js\";\nimport {ascendingDefined, compareDefined} from \"./sort.js\";\n\nexport default function rank(values, valueof = ascending) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  let V = Array.from(values);\n  const R = new Float64Array(V.length);\n  if (valueof.length !== 2) V = V.map(valueof), valueof = ascending;\n  const compareIndex = (i, j) => valueof(V[i], V[j]);\n  let k, r;\n  values = Uint32Array.from(V, (_, i) => i);\n  // Risky chaining due to Safari 14 https://github.com/d3/d3-array/issues/123\n  values.sort(valueof === ascending ? (i, j) => ascendingDefined(V[i], V[j]) : compareDefined(compareIndex));\n  values.forEach((j, i) => {\n      const c = compareIndex(j, k === undefined ? j : k);\n      if (c >= 0) {\n        if (k === undefined || c > 0) k = j, r = i;\n        R[j] = r;\n      } else {\n        R[j] = NaN;\n      }\n    });\n  return R;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function least(values, compare = ascending) {\n  let min;\n  let defined = false;\n  if (compare.length === 1) {\n    let minValue;\n    for (const element of values) {\n      const value = compare(element);\n      if (defined\n          ? ascending(value, minValue) < 0\n          : ascending(value, value) === 0) {\n        min = element;\n        minValue = value;\n        defined = true;\n      }\n    }\n  } else {\n    for (const value of values) {\n      if (defined\n          ? compare(value, min) < 0\n          : compare(value, value) === 0) {\n        min = value;\n        defined = true;\n      }\n    }\n  }\n  return min;\n}\n","import ascending from \"./ascending.js\";\nimport minIndex from \"./minIndex.js\";\n\nexport default function leastIndex(values, compare = ascending) {\n  if (compare.length === 1) return minIndex(values, compare);\n  let minValue;\n  let min = -1;\n  let index = -1;\n  for (const value of values) {\n    ++index;\n    if (min < 0\n        ? compare(value, value) === 0\n        : compare(value, minValue) < 0) {\n      minValue = value;\n      min = index;\n    }\n  }\n  return min;\n}\n","import ascending from \"./ascending.js\";\nimport maxIndex from \"./maxIndex.js\";\n\nexport default function greatestIndex(values, compare = ascending) {\n  if (compare.length === 1) return maxIndex(values, compare);\n  let maxValue;\n  let max = -1;\n  let index = -1;\n  for (const value of values) {\n    ++index;\n    if (max < 0\n        ? compare(value, value) === 0\n        : compare(value, maxValue) > 0) {\n      maxValue = value;\n      max = index;\n    }\n  }\n  return max;\n}\n","import leastIndex from \"./leastIndex.js\";\n\nexport default function scan(values, compare) {\n  const index = leastIndex(values, compare);\n  return index < 0 ? undefined : index;\n}\n","export default shuffler(Math.random);\n\nexport function shuffler(random) {\n  return function shuffle(array, i0 = 0, i1 = array.length) {\n    let m = i1 - (i0 = +i0);\n    while (m) {\n      const i = random() * m-- | 0, t = array[m + i0];\n      array[m + i0] = array[i + i0];\n      array[i + i0] = t;\n    }\n    return array;\n  };\n}\n","export default function sum(values, valueof) {\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value = +value) {\n        sum += value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if (value = +valueof(value, ++index, values)) {\n        sum += value;\n      }\n    }\n  }\n  return sum;\n}\n","import min from \"./min.js\";\n\nexport default function transpose(matrix) {\n  if (!(n = matrix.length)) return [];\n  for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n    for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n      row[j] = matrix[j][i];\n    }\n  }\n  return transpose;\n}\n\nfunction length(d) {\n  return d.length;\n}\n","import transpose from \"./transpose.js\";\n\nexport default function zip() {\n  return transpose(arguments);\n}\n","export default function every(values, test) {\n  if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n  let index = -1;\n  for (const value of values) {\n    if (!test(value, ++index, values)) {\n      return false;\n    }\n  }\n  return true;\n}\n","export default function some(values, test) {\n  if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n  let index = -1;\n  for (const value of values) {\n    if (test(value, ++index, values)) {\n      return true;\n    }\n  }\n  return false;\n}\n","export default function filter(values, test) {\n  if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n  const array = [];\n  let index = -1;\n  for (const value of values) {\n    if (test(value, ++index, values)) {\n      array.push(value);\n    }\n  }\n  return array;\n}\n","export default function map(values, mapper) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  if (typeof mapper !== \"function\") throw new TypeError(\"mapper is not a function\");\n  return Array.from(values, (value, index) => mapper(value, index, values));\n}\n","export default function reduce(values, reducer, value) {\n  if (typeof reducer !== \"function\") throw new TypeError(\"reducer is not a function\");\n  const iterator = values[Symbol.iterator]();\n  let done, next, index = -1;\n  if (arguments.length < 3) {\n    ({done, value} = iterator.next());\n    if (done) return;\n    ++index;\n  }\n  while (({done, value: next} = iterator.next()), !done) {\n    value = reducer(value, next, ++index, values);\n  }\n  return value;\n}\n","export default function reverse(values) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  return Array.from(values).reverse();\n}\n","import {InternSet} from \"internmap\";\n\nexport default function difference(values, ...others) {\n  values = new InternSet(values);\n  for (const other of others) {\n    for (const value of other) {\n      values.delete(value);\n    }\n  }\n  return values;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function disjoint(values, other) {\n  const iterator = other[Symbol.iterator](), set = new InternSet();\n  for (const v of values) {\n    if (set.has(v)) return false;\n    let value, done;\n    while (({value, done} = iterator.next())) {\n      if (done) break;\n      if (Object.is(v, value)) return false;\n      set.add(value);\n    }\n  }\n  return true;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function intersection(values, ...others) {\n  values = new InternSet(values);\n  others = others.map(set);\n  out: for (const value of values) {\n    for (const other of others) {\n      if (!other.has(value)) {\n        values.delete(value);\n        continue out;\n      }\n    }\n  }\n  return values;\n}\n\nfunction set(values) {\n  return values instanceof InternSet ? values : new InternSet(values);\n}\n","export default function superset(values, other) {\n  const iterator = values[Symbol.iterator](), set = new Set();\n  for (const o of other) {\n    const io = intern(o);\n    if (set.has(io)) continue;\n    let value, done;\n    while (({value, done} = iterator.next())) {\n      if (done) return false;\n      const ivalue = intern(value);\n      set.add(ivalue);\n      if (Object.is(io, ivalue)) break;\n    }\n  }\n  return true;\n}\n\nfunction intern(value) {\n  return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import superset from \"./superset.js\";\n\nexport default function subset(values, other) {\n  return superset(other, values);\n}\n","import {InternSet} from \"internmap\";\n\nexport default function union(...others) {\n  const set = new InternSet();\n  for (const other of others) {\n    for (const o of other) {\n      set.add(o);\n    }\n  }\n  return set;\n}\n","export default function(x) {\n  return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n    right = 2,\n    bottom = 3,\n    left = 4,\n    epsilon = 1e-6;\n\nfunction translateX(x) {\n  return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n  return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n  return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n  offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n  if (scale.round()) offset = Math.round(offset);\n  return d => +scale(d) + offset;\n}\n\nfunction entering() {\n  return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n  var tickArguments = [],\n      tickValues = null,\n      tickFormat = null,\n      tickSizeInner = 6,\n      tickSizeOuter = 6,\n      tickPadding = 3,\n      offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n      k = orient === top || orient === left ? -1 : 1,\n      x = orient === left || orient === right ? \"x\" : \"y\",\n      transform = orient === top || orient === bottom ? translateX : translateY;\n\n  function axis(context) {\n    var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n        format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n        spacing = Math.max(tickSizeInner, 0) + tickPadding,\n        range = scale.range(),\n        range0 = +range[0] + offset,\n        range1 = +range[range.length - 1] + offset,\n        position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n        selection = context.selection ? context.selection() : context,\n        path = selection.selectAll(\".domain\").data([null]),\n        tick = selection.selectAll(\".tick\").data(values, scale).order(),\n        tickExit = tick.exit(),\n        tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n        line = tick.select(\"line\"),\n        text = tick.select(\"text\");\n\n    path = path.merge(path.enter().insert(\"path\", \".tick\")\n        .attr(\"class\", \"domain\")\n        .attr(\"stroke\", \"currentColor\"));\n\n    tick = tick.merge(tickEnter);\n\n    line = line.merge(tickEnter.append(\"line\")\n        .attr(\"stroke\", \"currentColor\")\n        .attr(x + \"2\", k * tickSizeInner));\n\n    text = text.merge(tickEnter.append(\"text\")\n        .attr(\"fill\", \"currentColor\")\n        .attr(x, k * spacing)\n        .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n    if (context !== selection) {\n      path = path.transition(context);\n      tick = tick.transition(context);\n      line = line.transition(context);\n      text = text.transition(context);\n\n      tickExit = tickExit.transition(context)\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n      tickEnter\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n    }\n\n    tickExit.remove();\n\n    path\n        .attr(\"d\", orient === left || orient === right\n            ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n            : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n    tick\n        .attr(\"opacity\", 1)\n        .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n    line\n        .attr(x + \"2\", k * tickSizeInner);\n\n    text\n        .attr(x, k * spacing)\n        .text(format);\n\n    selection.filter(entering)\n        .attr(\"fill\", \"none\")\n        .attr(\"font-size\", 10)\n        .attr(\"font-family\", \"sans-serif\")\n        .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n    selection\n        .each(function() { this.__axis = position; });\n  }\n\n  axis.scale = function(_) {\n    return arguments.length ? (scale = _, axis) : scale;\n  };\n\n  axis.ticks = function() {\n    return tickArguments = Array.from(arguments), axis;\n  };\n\n  axis.tickArguments = function(_) {\n    return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n  };\n\n  axis.tickValues = function(_) {\n    return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n  };\n\n  axis.tickFormat = function(_) {\n    return arguments.length ? (tickFormat = _, axis) : tickFormat;\n  };\n\n  axis.tickSize = function(_) {\n    return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeInner = function(_) {\n    return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeOuter = function(_) {\n    return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n  };\n\n  axis.tickPadding = function(_) {\n    return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n  };\n\n  axis.offset = function(_) {\n    return arguments.length ? (offset = +_, axis) : offset;\n  };\n\n  return axis;\n}\n\nexport function axisTop(scale) {\n  return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n  return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n  return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n  return axis(left, scale);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n  return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n\nexport function childMatcher(selector) {\n  return function(node) {\n    return node.matches(selector);\n  };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n  return function() {\n    return find.call(this.children, match);\n  };\n}\n\nfunction childFirst() {\n  return this.firstElementChild;\n}\n\nexport default function(match) {\n  return this.select(match == null ? childFirst\n      : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n  return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n  return function() {\n    return filter.call(this.children, match);\n  };\n}\n\nexport default function(match) {\n  return this.selectAll(match == null ? children\n      : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n  return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = new Map,\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n      if (nodeByKeyValue.has(keyValue)) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue.set(keyValue, node);\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = key.call(parent, data[i], i, data) + \"\";\n    if (node = nodeByKeyValue.get(keyValue)) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue.delete(keyValue);\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction datum(node) {\n  return node.__data__;\n}\n\nexport default function(value, key) {\n  if (!arguments.length) return Array.from(this, datum);\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n  return typeof data === \"object\" && \"length\" in data\n    ? data // Array, TypedArray, NodeList, array-like\n    : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n  return function(event) {\n    listener.call(this, event, this.__data__);\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, options) {\n  return function() {\n    var on = this.__on, o, listener = contextListener(value);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n        this.addEventListener(o.type, o.listener = listener, o.options = options);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, options);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, options) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n  return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n  return this;\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  selectChild: selection_selectChild,\n  selectChildren: selection_selectChildren,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  selection: selection_selection,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch,\n  [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n  return function() {\n    return array(select.apply(this, arguments));\n  };\n}\n\nexport default function(select) {\n  if (typeof select === \"function\") select = arrayAll(select);\n  else select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  if (typeof onenter === \"function\") {\n    enter = onenter(enter);\n    if (enter) enter = enter.selection();\n  } else {\n    enter = enter.append(onenter + \"\");\n  }\n  if (onupdate != null) {\n    update = onupdate(update);\n    if (update) update = update.selection();\n  }\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n  var selection = context.selection ? context.selection() : context;\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","export default function() {\n  return Array.from(this);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  let size = 0;\n  for (const node of this) ++size; // eslint-disable-line no-unused-vars\n  return size;\n}\n","export default function() {\n  return !this.node();\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","export default function*() {\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) yield node;\n    }\n  }\n}\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n  } else {\n    root.__noselect = root.style.MozUserSelect;\n    root.style.MozUserSelect = \"none\";\n  }\n}\n\nexport function yesdrag(view, noclick) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", null);\n  if (noclick) {\n    selection.on(\"click.drag\", noevent, nonpassivecapture);\n    setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n  }\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", null);\n  } else {\n    root.style.MozUserSelect = root.__noselect;\n    delete root.__noselect;\n  }\n}\n","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","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(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\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_formatHex8() {\n  return this.rgb().formatHex8();\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(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(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() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\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  formatHex8: rgb_formatHex8,\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_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\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(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(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() {\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  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\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() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\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","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 {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 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","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","export default function(event) {\n  let sourceEvent;\n  while (sourceEvent = event.sourceEvent) event = sourceEvent;\n  return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n  event = sourceEvent(event);\n  if (node === undefined) node = event.currentTarget;\n  if (node) {\n    var svg = node.ownerSVGElement || node;\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      point.x = event.clientX, point.y = event.clientY;\n      point = point.matrixTransform(node.getScreenCTM().inverse());\n      return [point.x, point.y];\n    }\n    if (node.getBoundingClientRect) {\n      var rect = node.getBoundingClientRect();\n      return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n    }\n  }\n  return [event.pageX, event.pageY];\n}\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed => {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  selectChild: selection_prototype.selectChild,\n  selectChildren: selection_prototype.selectChildren,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n\n    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      throw new Error(`transition ${id} not found`);\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      i;\n\n  if (schedules) {\n    name = name == null ? null : name + \"\";\n    for (i in schedules) {\n      if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n        return new Transition([[node]], root, name, +i);\n      }\n    }\n  }\n\n  return null;\n}\n","export default x => () => x;\n","export default function BrushEvent(type, {\n  sourceEvent,\n  target,\n  selection,\n  mode,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    selection: {value: selection, enumerable: true, configurable: true},\n    mode: {value: mode, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\n}\n","export function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection, event) {\n    if (group.tween) {\n      group\n          .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n          .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null && selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start(event).brush(event).end(event);\n          });\n    }\n  };\n\n  brush.clear = function(group, event) {\n    brush.move(group, null, event);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    var emit = that.__brush.emitter;\n    return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n  }\n\n  function Emitter(that, args, clean) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n    this.clean = clean;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function(event, mode) {\n      if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n      else this.emit(\"brush\", event);\n      return this;\n    },\n    brush: function(event, mode) {\n      this.emit(\"brush\", event, mode);\n      return this;\n    },\n    end: function(event, mode) {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n      return this;\n    },\n    emit: function(type, event, mode) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new BrushEvent(type, {\n          sourceEvent: event,\n          target: brush,\n          selection: dim.output(this.state.selection),\n          mode,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function started(event) {\n    if (touchending && !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX && signY && keys && event.shiftKey,\n        lockX,\n        lockY,\n        points = Array.from(event.touches || [event], t => {\n          const i = t.identifier;\n          t = pointer(t, that);\n          t.point0 = t.slice();\n          t.identifier = i;\n          return t;\n        });\n\n    interrupt(that);\n    var emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      const pts = [points[0], points[1] || points[0]];\n      state.selection = selection = [[\n          w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n          n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n        ], [\n          e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n          s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n        ]];\n      if (points.length > 1) move(event);\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    redraw.call(that);\n    emit.start(event, mode.name);\n\n    function moved(event) {\n      for (const p of event.changedTouches || [event]) {\n        for (const d of points)\n          if (d.identifier === p.identifier) d.cur = pointer(p, that);\n      }\n      if (shifting && !lockX && !lockY && points.length === 1) {\n        const point = points[0];\n        if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n          lockY = true;\n        else\n          lockX = true;\n      }\n      for (const point of points)\n        if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n      moving = true;\n      noevent(event);\n      move(event);\n    }\n\n    function move(event) {\n      const point = points[0], point0 = point.point0;\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (points[1]) {\n            if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n            if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n          } else {\n            if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n            else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n            if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n            else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          }\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n          if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush(event, mode.name);\n      }\n    }\n\n    function ended(event) {\n      nopropagation(event);\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end(event, mode.name);\n    }\n\n    function keydowned(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n\n    function keyupped(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move(event);\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n  }\n\n  function touchmoved(event) {\n    emitter(this, arguments).moved(event);\n  }\n\n  function touchended(event) {\n    emitter(this, arguments).ended(event);\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n","export var abs = Math.abs;\nexport var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\nexport var epsilon = 1e-12;\n","import {max, tau} from \"./math.js\";\n\nfunction range(i, j) {\n  return Array.from({length: j - i}, (_, k) => i + k);\n}\n\nfunction compareValue(compare) {\n  return function(a, b) {\n    return compare(\n      a.source.value + a.target.value,\n      b.source.value + b.target.value\n    );\n  };\n}\n\nexport default function() {\n  return chord(false, false);\n}\n\nexport function chordTranspose() {\n  return chord(false, true);\n}\n\nexport function chordDirected() {\n  return chord(true, false);\n}\n\nfunction chord(directed, transpose) {\n  var padAngle = 0,\n      sortGroups = null,\n      sortSubgroups = null,\n      sortChords = null;\n\n  function chord(matrix) {\n    var n = matrix.length,\n        groupSums = new Array(n),\n        groupIndex = range(0, n),\n        chords = new Array(n * n),\n        groups = new Array(n),\n        k = 0, dx;\n\n    matrix = Float64Array.from({length: n * n}, transpose\n        ? (_, i) => matrix[i % n][i / n | 0]\n        : (_, i) => matrix[i / n | 0][i % n]);\n\n    // Compute the scaling factor from value to angle in [0, 2pi].\n    for (let i = 0; i < n; ++i) {\n      let x = 0;\n      for (let j = 0; j < n; ++j) x += matrix[i * n + j] + directed * matrix[j * n + i];\n      k += groupSums[i] = x;\n    }\n    k = max(0, tau - padAngle * n) / k;\n    dx = k ? padAngle : tau / n;\n\n    // Compute the angles for each group and constituent chord.\n    {\n      let x = 0;\n      if (sortGroups) groupIndex.sort((a, b) => sortGroups(groupSums[a], groupSums[b]));\n      for (const i of groupIndex) {\n        const x0 = x;\n        if (directed) {\n          const subgroupIndex = range(~n + 1, n).filter(j => j < 0 ? matrix[~j * n + i] : matrix[i * n + j]);\n          if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(a < 0 ? -matrix[~a * n + i] : matrix[i * n + a], b < 0 ? -matrix[~b * n + i] : matrix[i * n + b]));\n          for (const j of subgroupIndex) {\n            if (j < 0) {\n              const chord = chords[~j * n + i] || (chords[~j * n + i] = {source: null, target: null});\n              chord.target = {index: i, startAngle: x, endAngle: x += matrix[~j * n + i] * k, value: matrix[~j * n + i]};\n            } else {\n              const chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n              chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n            }\n          }\n          groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n        } else {\n          const subgroupIndex = range(0, n).filter(j => matrix[i * n + j] || matrix[j * n + i]);\n          if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(matrix[i * n + a], matrix[i * n + b]));\n          for (const j of subgroupIndex) {\n            let chord;\n            if (i < j) {\n              chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n              chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n            } else {\n              chord = chords[j * n + i] || (chords[j * n + i] = {source: null, target: null});\n              chord.target = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n              if (i === j) chord.source = chord.target;\n            }\n            if (chord.source && chord.target && chord.source.value < chord.target.value) {\n              const source = chord.source;\n              chord.source = chord.target;\n              chord.target = source;\n            }\n          }\n          groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n        }\n        x += dx;\n      }\n    }\n\n    // Remove empty chords.\n    chords = Object.values(chords);\n    chords.groups = groups;\n    return sortChords ? chords.sort(sortChords) : chords;\n  }\n\n  chord.padAngle = function(_) {\n    return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n  };\n\n  chord.sortGroups = function(_) {\n    return arguments.length ? (sortGroups = _, chord) : sortGroups;\n  };\n\n  chord.sortSubgroups = function(_) {\n    return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n  };\n\n  chord.sortChords = function(_) {\n    return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n  };\n\n  return chord;\n}\n","const pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n  this._ += strings[0];\n  for (let i = 1, n = strings.length; i < n; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  let d = Math.floor(digits);\n  if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n  if (d > 15) return append;\n  const k = 10 ** d;\n  return function(strings) {\n    this._ += strings[0];\n    for (let i = 1, n = strings.length; i < n; ++i) {\n      this._ += Math.round(arguments[i] * k) / k + strings[i];\n    }\n  };\n}\n\nexport class Path {\n  constructor(digits) {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n    this._append = digits == null ? append : appendRound(digits);\n  }\n  moveTo(x, y) {\n    this._append`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._append`Z`;\n    }\n  }\n  lineTo(x, y) {\n    this._append`L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  quadraticCurveTo(x1, y1, x, y) {\n    this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  bezierCurveTo(x1, y1, x2, y2, x, y) {\n    this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arcTo(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let 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 this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._append`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._append`L${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      let 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._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n      }\n\n      this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n    }\n  }\n  arc(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let 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 this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._append`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._append`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._append`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._append`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(x, y, w, h) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n  }\n  toString() {\n    return this._;\n  }\n}\n\nexport function path() {\n  return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n  return new Path(+digits);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {abs, cos, epsilon, halfPi, sin} from \"./math.js\";\n\nfunction defaultSource(d) {\n  return d.source;\n}\n\nfunction defaultTarget(d) {\n  return d.target;\n}\n\nfunction defaultRadius(d) {\n  return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction defaultPadAngle() {\n  return 0;\n}\n\nfunction defaultArrowheadRadius() {\n  return 10;\n}\n\nfunction ribbon(headRadius) {\n  var source = defaultSource,\n      target = defaultTarget,\n      sourceRadius = defaultRadius,\n      targetRadius = defaultRadius,\n      startAngle = defaultStartAngle,\n      endAngle = defaultEndAngle,\n      padAngle = defaultPadAngle,\n      context = null;\n\n  function ribbon() {\n    var buffer,\n        s = source.apply(this, arguments),\n        t = target.apply(this, arguments),\n        ap = padAngle.apply(this, arguments) / 2,\n        argv = slice.call(arguments),\n        sr = +sourceRadius.apply(this, (argv[0] = s, argv)),\n        sa0 = startAngle.apply(this, argv) - halfPi,\n        sa1 = endAngle.apply(this, argv) - halfPi,\n        tr = +targetRadius.apply(this, (argv[0] = t, argv)),\n        ta0 = startAngle.apply(this, argv) - halfPi,\n        ta1 = endAngle.apply(this, argv) - halfPi;\n\n    if (!context) context = buffer = path();\n\n    if (ap > epsilon) {\n      if (abs(sa1 - sa0) > ap * 2 + epsilon) sa1 > sa0 ? (sa0 += ap, sa1 -= ap) : (sa0 -= ap, sa1 += ap);\n      else sa0 = sa1 = (sa0 + sa1) / 2;\n      if (abs(ta1 - ta0) > ap * 2 + epsilon) ta1 > ta0 ? (ta0 += ap, ta1 -= ap) : (ta0 -= ap, ta1 += ap);\n      else ta0 = ta1 = (ta0 + ta1) / 2;\n    }\n\n    context.moveTo(sr * cos(sa0), sr * sin(sa0));\n    context.arc(0, 0, sr, sa0, sa1);\n    if (sa0 !== ta0 || sa1 !== ta1) {\n      if (headRadius) {\n        var hr = +headRadius.apply(this, arguments), tr2 = tr - hr, ta2 = (ta0 + ta1) / 2;\n        context.quadraticCurveTo(0, 0, tr2 * cos(ta0), tr2 * sin(ta0));\n        context.lineTo(tr * cos(ta2), tr * sin(ta2));\n        context.lineTo(tr2 * cos(ta1), tr2 * sin(ta1));\n      } else {\n        context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n        context.arc(0, 0, tr, ta0, ta1);\n      }\n    }\n    context.quadraticCurveTo(0, 0, sr * cos(sa0), sr * sin(sa0));\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  if (headRadius) ribbon.headRadius = function(_) {\n    return arguments.length ? (headRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : headRadius;\n  };\n\n  ribbon.radius = function(_) {\n    return arguments.length ? (sourceRadius = targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n  };\n\n  ribbon.sourceRadius = function(_) {\n    return arguments.length ? (sourceRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n  };\n\n  ribbon.targetRadius = function(_) {\n    return arguments.length ? (targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : targetRadius;\n  };\n\n  ribbon.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n  };\n\n  ribbon.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n  };\n\n  ribbon.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : padAngle;\n  };\n\n  ribbon.source = function(_) {\n    return arguments.length ? (source = _, ribbon) : source;\n  };\n\n  ribbon.target = function(_) {\n    return arguments.length ? (target = _, ribbon) : target;\n  };\n\n  ribbon.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n  };\n\n  return ribbon;\n}\n\nexport default function() {\n  return ribbon();\n}\n\nexport function ribbonArrow() {\n  return ribbon(defaultArrowheadRadius);\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n    Xn = 0.96422,\n    Yn = 1,\n    Zn = 0.82521,\n    t0 = 4 / 29,\n    t1 = 6 / 29,\n    t2 = 3 * t1 * t1,\n    t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n  if (o instanceof Hcl) return hcl2lab(o);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = rgb2lrgb(o.r),\n      g = rgb2lrgb(o.g),\n      b = rgb2lrgb(o.b),\n      y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n  if (r === g && g === b) x = z = y; else {\n    x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n    z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n  }\n  return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n  return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n  return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n  this.l = +l;\n  this.a = +a;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n  brighter(k) {\n    return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  darker(k) {\n    return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  rgb() {\n    var y = (this.l + 16) / 116,\n        x = isNaN(this.a) ? y : y + this.a / 500,\n        z = isNaN(this.b) ? y : y - this.b / 200;\n    x = Xn * lab2xyz(x);\n    y = Yn * lab2xyz(y);\n    z = Zn * lab2xyz(z);\n    return new Rgb(\n      lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n      lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n      lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n      this.opacity\n    );\n  }\n}));\n\nfunction xyz2lab(t) {\n  return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n  return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n  return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n  return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n  if (!(o instanceof Lab)) o = labConvert(o);\n  if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n  var h = Math.atan2(o.b, o.a) * degrees;\n  return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n  return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n  return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n  this.h = +h;\n  this.c = +c;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n  if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n  var h = o.h * radians;\n  return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n  brighter(k) {\n    return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n  },\n  darker(k) {\n    return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n  },\n  rgb() {\n    return hcl2lab(this).rgb();\n  }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} 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) * degrees - 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(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(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() {\n    var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\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","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n  return a - b;\n}\n","export default x => () => x;\n","export default function(ring, hole) {\n  var i = -1, n = hole.length, c;\n  while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n  return 0;\n}\n\nfunction ringContains(ring, point) {\n  var x = point[0], y = point[1], contains = -1;\n  for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n    var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n    if (segmentContains(pi, pj, point)) return 0;\n    if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n  }\n  return contains;\n}\n\nfunction segmentContains(a, b, c) {\n  var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n  return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, nice, thresholdSturges, ticks} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport ascending from \"./ascending.js\";\nimport area from \"./area.js\";\nimport constant from \"./constant.js\";\nimport contains from \"./contains.js\";\nimport noop from \"./noop.js\";\n\nvar cases = [\n  [],\n  [[[1.0, 1.5], [0.5, 1.0]]],\n  [[[1.5, 1.0], [1.0, 1.5]]],\n  [[[1.5, 1.0], [0.5, 1.0]]],\n  [[[1.0, 0.5], [1.5, 1.0]]],\n  [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n  [[[1.0, 0.5], [1.0, 1.5]]],\n  [[[1.0, 0.5], [0.5, 1.0]]],\n  [[[0.5, 1.0], [1.0, 0.5]]],\n  [[[1.0, 1.5], [1.0, 0.5]]],\n  [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n  [[[1.5, 1.0], [1.0, 0.5]]],\n  [[[0.5, 1.0], [1.5, 1.0]]],\n  [[[1.0, 1.5], [1.5, 1.0]]],\n  [[[0.5, 1.0], [1.0, 1.5]]],\n  []\n];\n\nexport default function() {\n  var dx = 1,\n      dy = 1,\n      threshold = thresholdSturges,\n      smooth = smoothLinear;\n\n  function contours(values) {\n    var tz = threshold(values);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      const e = extent(values, finite);\n      tz = ticks(...nice(e[0], e[1], tz), tz);\n      while (tz[tz.length - 1] >= e[1]) tz.pop();\n      while (tz[1] < e[0]) tz.shift();\n    } else {\n      tz = tz.slice().sort(ascending);\n    }\n\n    return tz.map(value => contour(values, value));\n  }\n\n  // Accumulate, smooth contour rings, assign holes to exterior rings.\n  // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n  function contour(values, value) {\n    const v = value == null ? NaN : +value;\n    if (isNaN(v)) throw new Error(`invalid value: ${value}`);\n\n    var polygons = [],\n        holes = [];\n\n    isorings(values, v, function(ring) {\n      smooth(ring, values, v);\n      if (area(ring) > 0) polygons.push([ring]);\n      else holes.push(ring);\n    });\n\n    holes.forEach(function(hole) {\n      for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n        if (contains((polygon = polygons[i])[0], hole) !== -1) {\n          polygon.push(hole);\n          return;\n        }\n      }\n    });\n\n    return {\n      type: \"MultiPolygon\",\n      value: value,\n      coordinates: polygons\n    };\n  }\n\n  // Marching squares with isolines stitched into rings.\n  // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n  function isorings(values, value, callback) {\n    var fragmentByStart = new Array,\n        fragmentByEnd = new Array,\n        x, y, t0, t1, t2, t3;\n\n    // Special case for the first row (y = -1, t2 = t3 = 0).\n    x = y = -1;\n    t1 = above(values[0], value);\n    cases[t1 << 1].forEach(stitch);\n    while (++x < dx - 1) {\n      t0 = t1, t1 = above(values[x + 1], value);\n      cases[t0 | t1 << 1].forEach(stitch);\n    }\n    cases[t1 << 0].forEach(stitch);\n\n    // General case for the intermediate rows.\n    while (++y < dy - 1) {\n      x = -1;\n      t1 = above(values[y * dx + dx], value);\n      t2 = above(values[y * dx], value);\n      cases[t1 << 1 | t2 << 2].forEach(stitch);\n      while (++x < dx - 1) {\n        t0 = t1, t1 = above(values[y * dx + dx + x + 1], value);\n        t3 = t2, t2 = above(values[y * dx + x + 1], value);\n        cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n      }\n      cases[t1 | t2 << 3].forEach(stitch);\n    }\n\n    // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n    x = -1;\n    t2 = values[y * dx] >= value;\n    cases[t2 << 2].forEach(stitch);\n    while (++x < dx - 1) {\n      t3 = t2, t2 = above(values[y * dx + x + 1], value);\n      cases[t2 << 2 | t3 << 3].forEach(stitch);\n    }\n    cases[t2 << 3].forEach(stitch);\n\n    function stitch(line) {\n      var start = [line[0][0] + x, line[0][1] + y],\n          end = [line[1][0] + x, line[1][1] + y],\n          startIndex = index(start),\n          endIndex = index(end),\n          f, g;\n      if (f = fragmentByEnd[startIndex]) {\n        if (g = fragmentByStart[endIndex]) {\n          delete fragmentByEnd[f.end];\n          delete fragmentByStart[g.start];\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n          }\n        } else {\n          delete fragmentByEnd[f.end];\n          f.ring.push(end);\n          fragmentByEnd[f.end = endIndex] = f;\n        }\n      } else if (f = fragmentByStart[endIndex]) {\n        if (g = fragmentByEnd[startIndex]) {\n          delete fragmentByStart[f.start];\n          delete fragmentByEnd[g.end];\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n          }\n        } else {\n          delete fragmentByStart[f.start];\n          f.ring.unshift(start);\n          fragmentByStart[f.start = startIndex] = f;\n        }\n      } else {\n        fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n      }\n    }\n  }\n\n  function index(point) {\n    return point[0] * 2 + point[1] * (dx + 1) * 4;\n  }\n\n  function smoothLinear(ring, values, value) {\n    ring.forEach(function(point) {\n      var x = point[0],\n          y = point[1],\n          xt = x | 0,\n          yt = y | 0,\n          v1 = valid(values[yt * dx + xt]);\n      if (x > 0 && x < dx && xt === x) {\n        point[0] = smooth1(x, valid(values[yt * dx + xt - 1]), v1, value);\n      }\n      if (y > 0 && y < dy && yt === y) {\n        point[1] = smooth1(y, valid(values[(yt - 1) * dx + xt]), v1, value);\n      }\n    });\n  }\n\n  contours.contour = contour;\n\n  contours.size = function(_) {\n    if (!arguments.length) return [dx, dy];\n    var _0 = Math.floor(_[0]), _1 = Math.floor(_[1]);\n    if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n    return dx = _0, dy = _1, contours;\n  };\n\n  contours.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n  };\n\n  contours.smooth = function(_) {\n    return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n  };\n\n  return contours;\n}\n\n// When computing the extent, ignore infinite values (as well as invalid ones).\nfunction finite(x) {\n  return isFinite(x) ? x : NaN;\n}\n\n// Is the (possibly invalid) x greater than or equal to the (known valid) value?\n// Treat any invalid value as below negative infinity.\nfunction above(x, value) {\n  return x == null ? false : +x >= value;\n}\n\n// During smoothing, treat any invalid value as negative infinity.\nfunction valid(v) {\n  return v == null || isNaN(v = +v) ? -Infinity : v;\n}\n\nfunction smooth1(x, v0, v1, value) {\n  const a = value - v0;\n  const b = v1 - v0;\n  const d = isFinite(a) || isFinite(b) ? a / b : Math.sign(a) / Math.sign(b);\n  return isNaN(d) ? x : x + d - 0.5;\n}\n","export default function(ring) {\n  var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n  while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n  return area;\n}\n","import {blur2, max, ticks} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport Contours from \"./contours.js\";\n\nfunction defaultX(d) {\n  return d[0];\n}\n\nfunction defaultY(d) {\n  return d[1];\n}\n\nfunction defaultWeight() {\n  return 1;\n}\n\nexport default function() {\n  var x = defaultX,\n      y = defaultY,\n      weight = defaultWeight,\n      dx = 960,\n      dy = 500,\n      r = 20, // blur radius\n      k = 2, // log2(grid cell size)\n      o = r * 3, // grid offset, to pad for blur\n      n = (dx + o * 2) >> k, // grid width\n      m = (dy + o * 2) >> k, // grid height\n      threshold = constant(20);\n\n  function grid(data) {\n    var values = new Float32Array(n * m),\n        pow2k = Math.pow(2, -k),\n        i = -1;\n\n    for (const d of data) {\n      var xi = (x(d, ++i, data) + o) * pow2k,\n          yi = (y(d, i, data) + o) * pow2k,\n          wi = +weight(d, i, data);\n      if (wi && xi >= 0 && xi < n && yi >= 0 && yi < m) {\n        var x0 = Math.floor(xi),\n            y0 = Math.floor(yi),\n            xt = xi - x0 - 0.5,\n            yt = yi - y0 - 0.5;\n        values[x0 + y0 * n] += (1 - xt) * (1 - yt) * wi;\n        values[x0 + 1 + y0 * n] += xt * (1 - yt) * wi;\n        values[x0 + 1 + (y0 + 1) * n] += xt * yt * wi;\n        values[x0 + (y0 + 1) * n] += (1 - xt) * yt * wi;\n      }\n    }\n\n    blur2({data: values, width: n, height: m}, r * pow2k);\n    return values;\n  }\n\n  function density(data) {\n    var values = grid(data),\n        tz = threshold(values),\n        pow4k = Math.pow(2, 2 * k);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      tz = ticks(Number.MIN_VALUE, max(values) / pow4k, tz);\n    }\n\n    return Contours()\n        .size([n, m])\n        .thresholds(tz.map(d => d * pow4k))\n      (values)\n        .map((c, i) => (c.value = +tz[i], transform(c)));\n  }\n\n  density.contours = function(data) {\n    var values = grid(data),\n        contours = Contours().size([n, m]),\n        pow4k = Math.pow(2, 2 * k),\n        contour = value => {\n          value = +value;\n          var c = transform(contours.contour(values, value * pow4k));\n          c.value = value; // preserve exact threshold value\n          return c;\n        };\n    Object.defineProperty(contour, \"max\", {get: () => max(values) / pow4k});\n    return contour;\n  };\n\n  function transform(geometry) {\n    geometry.coordinates.forEach(transformPolygon);\n    return geometry;\n  }\n\n  function transformPolygon(coordinates) {\n    coordinates.forEach(transformRing);\n  }\n\n  function transformRing(coordinates) {\n    coordinates.forEach(transformPoint);\n  }\n\n  // TODO Optimize.\n  function transformPoint(coordinates) {\n    coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n    coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n  }\n\n  function resize() {\n    o = r * 3;\n    n = (dx + o * 2) >> k;\n    m = (dy + o * 2) >> k;\n    return density;\n  }\n\n  density.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n  };\n\n  density.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n  };\n\n  density.weight = function(_) {\n    return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n  };\n\n  density.size = function(_) {\n    if (!arguments.length) return [dx, dy];\n    var _0 = +_[0], _1 = +_[1];\n    if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n    return dx = _0, dy = _1, resize();\n  };\n\n  density.cellSize = function(_) {\n    if (!arguments.length) return 1 << k;\n    if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n    return k = Math.floor(Math.log(_) / Math.LN2), resize();\n  };\n\n  density.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n  };\n\n  density.bandwidth = function(_) {\n    if (!arguments.length) return Math.sqrt(r * (r + 1));\n    if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n    return r = (Math.sqrt(4 * _ * _ + 1) - 1) / 2, resize();\n  };\n\n  return density;\n}\n","export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n    let Q, Qnew, hh, bvirt;\n    let enow = e[0];\n    let fnow = f[0];\n    let eindex = 0;\n    let findex = 0;\n    if ((fnow > enow) === (fnow > -enow)) {\n        Q = enow;\n        enow = e[++eindex];\n    } else {\n        Q = fnow;\n        fnow = f[++findex];\n    }\n    let hindex = 0;\n    if (eindex < elen && findex < flen) {\n        if ((fnow > enow) === (fnow > -enow)) {\n            Qnew = enow + Q;\n            hh = Q - (Qnew - enow);\n            enow = e[++eindex];\n        } else {\n            Qnew = fnow + Q;\n            hh = Q - (Qnew - fnow);\n            fnow = f[++findex];\n        }\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n        while (eindex < elen && findex < flen) {\n            if ((fnow > enow) === (fnow > -enow)) {\n                Qnew = Q + enow;\n                bvirt = Qnew - Q;\n                hh = Q - (Qnew - bvirt) + (enow - bvirt);\n                enow = e[++eindex];\n            } else {\n                Qnew = Q + fnow;\n                bvirt = Qnew - Q;\n                hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n                fnow = f[++findex];\n            }\n            Q = Qnew;\n            if (hh !== 0) {\n                h[hindex++] = hh;\n            }\n        }\n    }\n    while (eindex < elen) {\n        Qnew = Q + enow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (enow - bvirt);\n        enow = e[++eindex];\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    while (findex < flen) {\n        Qnew = Q + fnow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n        fnow = f[++findex];\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n    }\n    return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n    return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n    let Q, sum, hh, product1, product0;\n    let bvirt, c, ahi, alo, bhi, blo;\n\n    c = splitter * b;\n    bhi = c - (c - b);\n    blo = b - bhi;\n    let enow = e[0];\n    Q = enow * b;\n    c = splitter * enow;\n    ahi = c - (c - enow);\n    alo = enow - ahi;\n    hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n    let hindex = 0;\n    if (hh !== 0) {\n        h[hindex++] = hh;\n    }\n    for (let i = 1; i < elen; i++) {\n        enow = e[i];\n        product1 = enow * b;\n        c = splitter * enow;\n        ahi = c - (c - enow);\n        alo = enow - ahi;\n        product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n        sum = Q + product0;\n        bvirt = sum - Q;\n        hh = Q - (sum - bvirt) + (product0 - bvirt);\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n        Q = product1 + sum;\n        hh = sum - (Q - product1);\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n    }\n    return hindex;\n}\n\nexport function negate(elen, e) {\n    for (let i = 0; i < elen; i++) e[i] = -e[i];\n    return elen;\n}\n\nexport function estimate(elen, e) {\n    let Q = e[0];\n    for (let i = 1; i < elen; i++) Q += e[i];\n    return Q;\n}\n\nexport function vec(n) {\n    return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n    let acxtail, acytail, bcxtail, bcytail;\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n    const acx = ax - cx;\n    const bcx = bx - cx;\n    const acy = ay - cy;\n    const bcy = by - cy;\n\n    s1 = acx * bcy;\n    c = splitter * acx;\n    ahi = c - (c - acx);\n    alo = acx - ahi;\n    c = splitter * bcy;\n    bhi = c - (c - bcy);\n    blo = bcy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acy * bcx;\n    c = splitter * acy;\n    ahi = c - (c - acy);\n    alo = acy - ahi;\n    c = splitter * bcx;\n    bhi = c - (c - bcx);\n    blo = bcx - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    B[3] = u3;\n\n    let det = estimate(4, B);\n    let errbound = ccwerrboundB * detsum;\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    bvirt = ax - acx;\n    acxtail = ax - (acx + bvirt) + (bvirt - cx);\n    bvirt = bx - bcx;\n    bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n    bvirt = ay - acy;\n    acytail = ay - (acy + bvirt) + (bvirt - cy);\n    bvirt = by - bcy;\n    bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n    if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n        return det;\n    }\n\n    errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n    det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n    if (det >= errbound || -det >= errbound) return det;\n\n    s1 = acxtail * bcy;\n    c = splitter * acxtail;\n    ahi = c - (c - acxtail);\n    alo = acxtail - ahi;\n    c = splitter * bcy;\n    bhi = c - (c - bcy);\n    blo = bcy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acytail * bcx;\n    c = splitter * acytail;\n    ahi = c - (c - acytail);\n    alo = acytail - ahi;\n    c = splitter * bcx;\n    bhi = c - (c - bcx);\n    blo = bcx - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const C1len = sum(4, B, 4, u, C1);\n\n    s1 = acx * bcytail;\n    c = splitter * acx;\n    ahi = c - (c - acx);\n    alo = acx - ahi;\n    c = splitter * bcytail;\n    bhi = c - (c - bcytail);\n    blo = bcytail - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acy * bcxtail;\n    c = splitter * acy;\n    ahi = c - (c - acy);\n    alo = acy - ahi;\n    c = splitter * bcxtail;\n    bhi = c - (c - bcxtail);\n    blo = bcxtail - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const C2len = sum(C1len, C1, 4, u, C2);\n\n    s1 = acxtail * bcytail;\n    c = splitter * acxtail;\n    ahi = c - (c - acxtail);\n    alo = acxtail - ahi;\n    c = splitter * bcytail;\n    bhi = c - (c - bcytail);\n    blo = bcytail - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acytail * bcxtail;\n    c = splitter * acytail;\n    ahi = c - (c - acytail);\n    alo = acytail - ahi;\n    c = splitter * bcxtail;\n    bhi = c - (c - bcxtail);\n    blo = bcxtail - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const Dlen = sum(C2len, C2, 4, u, D);\n\n    return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n    const detleft = (ay - cy) * (bx - cx);\n    const detright = (ax - cx) * (by - cy);\n    const det = detleft - detright;\n\n    const detsum = Math.abs(detleft + detright);\n    if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n    return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n    return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, scale} from './util.js';\n\nconst o3derrboundA = (7 + 56 * epsilon) * epsilon;\nconst o3derrboundB = (3 + 28 * epsilon) * epsilon;\nconst o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;\n\nconst bc = vec(4);\nconst ca = vec(4);\nconst ab = vec(4);\nconst at_b = vec(4);\nconst at_c = vec(4);\nconst bt_c = vec(4);\nconst bt_a = vec(4);\nconst ct_a = vec(4);\nconst ct_b = vec(4);\nconst bct = vec(8);\nconst cat = vec(8);\nconst abt = vec(8);\nconst u = vec(4);\n\nconst _8 = vec(8);\nconst _8b = vec(8);\nconst _16 = vec(8);\nconst _12 = vec(12);\n\nlet fin = vec(192);\nlet fin2 = vec(192);\n\nfunction finadd(finlen, alen, a) {\n    finlen = sum(finlen, fin, alen, a, fin2);\n    const tmp = fin; fin = fin2; fin2 = tmp;\n    return finlen;\n}\n\nfunction tailinit(xtail, ytail, ax, ay, bx, by, a, b) {\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate;\n    if (xtail === 0) {\n        if (ytail === 0) {\n            a[0] = 0;\n            b[0] = 0;\n            return 1;\n        } else {\n            negate = -ytail;\n            s1 = negate * ax;\n            c = splitter * negate;\n            ahi = c - (c - negate);\n            alo = negate - ahi;\n            c = splitter * ax;\n            bhi = c - (c - ax);\n            blo = ax - bhi;\n            a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            a[1] = s1;\n            s1 = ytail * bx;\n            c = splitter * ytail;\n            ahi = c - (c - ytail);\n            alo = ytail - ahi;\n            c = splitter * bx;\n            bhi = c - (c - bx);\n            blo = bx - bhi;\n            b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            b[1] = s1;\n            return 2;\n        }\n    } else {\n        if (ytail === 0) {\n            s1 = xtail * ay;\n            c = splitter * xtail;\n            ahi = c - (c - xtail);\n            alo = xtail - ahi;\n            c = splitter * ay;\n            bhi = c - (c - ay);\n            blo = ay - bhi;\n            a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            a[1] = s1;\n            negate = -xtail;\n            s1 = negate * by;\n            c = splitter * negate;\n            ahi = c - (c - negate);\n            alo = negate - ahi;\n            c = splitter * by;\n            bhi = c - (c - by);\n            blo = by - bhi;\n            b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            b[1] = s1;\n            return 2;\n        } else {\n            s1 = xtail * ay;\n            c = splitter * xtail;\n            ahi = c - (c - xtail);\n            alo = xtail - ahi;\n            c = splitter * ay;\n            bhi = c - (c - ay);\n            blo = ay - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = ytail * ax;\n            c = splitter * ytail;\n            ahi = c - (c - ytail);\n            alo = ytail - ahi;\n            c = splitter * ax;\n            bhi = c - (c - ax);\n            blo = ax - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            a[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            a[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            a[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            a[3] = u3;\n            s1 = ytail * bx;\n            c = splitter * ytail;\n            ahi = c - (c - ytail);\n            alo = ytail - ahi;\n            c = splitter * bx;\n            bhi = c - (c - bx);\n            blo = bx - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = xtail * by;\n            c = splitter * xtail;\n            ahi = c - (c - xtail);\n            alo = xtail - ahi;\n            c = splitter * by;\n            bhi = c - (c - by);\n            blo = by - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            b[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            b[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            b[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            b[3] = u3;\n            return 4;\n        }\n    }\n}\n\nfunction tailadd(finlen, a, b, k, z) {\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3;\n    s1 = a * b;\n    c = splitter * a;\n    ahi = c - (c - a);\n    alo = a - ahi;\n    c = splitter * b;\n    bhi = c - (c - b);\n    blo = b - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    c = splitter * k;\n    bhi = c - (c - k);\n    blo = k - bhi;\n    _i = s0 * k;\n    c = splitter * s0;\n    ahi = c - (c - s0);\n    alo = s0 - ahi;\n    u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n    _j = s1 * k;\n    c = splitter * s1;\n    ahi = c - (c - s1);\n    alo = s1 - ahi;\n    _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n    _k = _i + _0;\n    bvirt = _k - _i;\n    u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n    u3 = _j + _k;\n    u[2] = _k - (u3 - _j);\n    u[3] = u3;\n    finlen = finadd(finlen, 4, u);\n    if (z !== 0) {\n        c = splitter * z;\n        bhi = c - (c - z);\n        blo = z - bhi;\n        _i = s0 * z;\n        c = splitter * s0;\n        ahi = c - (c - s0);\n        alo = s0 - ahi;\n        u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n        _j = s1 * z;\n        c = splitter * s1;\n        ahi = c - (c - s1);\n        alo = s1 - ahi;\n        _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n        _k = _i + _0;\n        bvirt = _k - _i;\n        u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n        u3 = _j + _k;\n        u[2] = _k - (u3 - _j);\n        u[3] = u3;\n        finlen = finadd(finlen, 4, u);\n    }\n    return finlen;\n}\n\nfunction orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {\n    let finlen;\n    let adxtail, bdxtail, cdxtail;\n    let adytail, bdytail, cdytail;\n    let adztail, bdztail, cdztail;\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3;\n\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n    const adz = az - dz;\n    const bdz = bz - dz;\n    const cdz = cz - dz;\n\n    s1 = bdx * cdy;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cdx * bdy;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bc[3] = u3;\n    s1 = cdx * ady;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = adx * cdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ca[3] = u3;\n    s1 = adx * bdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bdx * ady;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ab[3] = u3;\n\n    finlen = sum(\n        sum(\n            scale(4, bc, adz, _8), _8,\n            scale(4, ca, bdz, _8b), _8b, _16), _16,\n        scale(4, ab, cdz, _8), _8, fin);\n\n    let det = estimate(finlen, fin);\n    let errbound = o3derrboundB * permanent;\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    bvirt = ax - adx;\n    adxtail = ax - (adx + bvirt) + (bvirt - dx);\n    bvirt = bx - bdx;\n    bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n    bvirt = cx - cdx;\n    cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n    bvirt = ay - ady;\n    adytail = ay - (ady + bvirt) + (bvirt - dy);\n    bvirt = by - bdy;\n    bdytail = by - (bdy + bvirt) + (bvirt - dy);\n    bvirt = cy - cdy;\n    cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n    bvirt = az - adz;\n    adztail = az - (adz + bvirt) + (bvirt - dz);\n    bvirt = bz - bdz;\n    bdztail = bz - (bdz + bvirt) + (bvirt - dz);\n    bvirt = cz - cdz;\n    cdztail = cz - (cdz + bvirt) + (bvirt - dz);\n\n    if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 &&\n        adytail === 0 && bdytail === 0 && cdytail === 0 &&\n        adztail === 0 && bdztail === 0 && cdztail === 0) {\n        return det;\n    }\n\n    errbound = o3derrboundC * permanent + resulterrbound * Math.abs(det);\n    det +=\n        adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) +\n        bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) +\n        cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx);\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c);\n    const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);\n    const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);\n\n    const bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct);\n    finlen = finadd(finlen, scale(bctlen, bct, adz, _16), _16);\n\n    const catlen = sum(ct_len, ct_a, at_len, at_c, cat);\n    finlen = finadd(finlen, scale(catlen, cat, bdz, _16), _16);\n\n    const abtlen = sum(at_len, at_b, bt_len, bt_a, abt);\n    finlen = finadd(finlen, scale(abtlen, abt, cdz, _16), _16);\n\n    if (adztail !== 0) {\n        finlen = finadd(finlen, scale(4, bc, adztail, _12), _12);\n        finlen = finadd(finlen, scale(bctlen, bct, adztail, _16), _16);\n    }\n    if (bdztail !== 0) {\n        finlen = finadd(finlen, scale(4, ca, bdztail, _12), _12);\n        finlen = finadd(finlen, scale(catlen, cat, bdztail, _16), _16);\n    }\n    if (cdztail !== 0) {\n        finlen = finadd(finlen, scale(4, ab, cdztail, _12), _12);\n        finlen = finadd(finlen, scale(abtlen, abt, cdztail, _16), _16);\n    }\n\n    if (adxtail !== 0) {\n        if (bdytail !== 0) {\n            finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail);\n        }\n        if (cdytail !== 0) {\n            finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail);\n        }\n    }\n    if (bdxtail !== 0) {\n        if (cdytail !== 0) {\n            finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail);\n        }\n        if (adytail !== 0) {\n            finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail);\n        }\n    }\n    if (cdxtail !== 0) {\n        if (adytail !== 0) {\n            finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail);\n        }\n        if (bdytail !== 0) {\n            finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail);\n        }\n    }\n\n    return fin[finlen - 1];\n}\n\nexport function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n    const adz = az - dz;\n    const bdz = bz - dz;\n    const cdz = cz - dz;\n\n    const bdxcdy = bdx * cdy;\n    const cdxbdy = cdx * bdy;\n\n    const cdxady = cdx * ady;\n    const adxcdy = adx * cdy;\n\n    const adxbdy = adx * bdy;\n    const bdxady = bdx * ady;\n\n    const det =\n        adz * (bdxcdy - cdxbdy) +\n        bdz * (cdxady - adxcdy) +\n        cdz * (adxbdy - bdxady);\n\n    const permanent =\n        (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) +\n        (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) +\n        (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz);\n\n    const errbound = o3derrboundA * permanent;\n    if (det > errbound || -det > errbound) {\n        return det;\n    }\n\n    return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent);\n}\n\nexport function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n    const adz = az - dz;\n    const bdz = bz - dz;\n    const cdz = cz - dz;\n\n    return adx * (bdy * cdz - bdz * cdy) +\n        bdx * (cdy * adz - cdz * ady) +\n        cdx * (ady * bdz - adz * bdy);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale} from './util.js';\n\nconst iccerrboundA = (10 + 96 * epsilon) * epsilon;\nconst iccerrboundB = (4 + 48 * epsilon) * epsilon;\nconst iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;\n\nconst bc = vec(4);\nconst ca = vec(4);\nconst ab = vec(4);\nconst aa = vec(4);\nconst bb = vec(4);\nconst cc = vec(4);\nconst u = vec(4);\nconst v = vec(4);\nconst axtbc = vec(8);\nconst aytbc = vec(8);\nconst bxtca = vec(8);\nconst bytca = vec(8);\nconst cxtab = vec(8);\nconst cytab = vec(8);\nconst abt = vec(8);\nconst bct = vec(8);\nconst cat = vec(8);\nconst abtt = vec(4);\nconst bctt = vec(4);\nconst catt = vec(4);\n\nconst _8 = vec(8);\nconst _16 = vec(16);\nconst _16b = vec(16);\nconst _16c = vec(16);\nconst _32 = vec(32);\nconst _32b = vec(32);\nconst _48 = vec(48);\nconst _64 = vec(64);\n\nlet fin = vec(1152);\nlet fin2 = vec(1152);\n\nfunction finadd(finlen, a, alen) {\n    finlen = sum(finlen, fin, a, alen, fin2);\n    const tmp = fin; fin = fin2; fin2 = tmp;\n    return finlen;\n}\n\nfunction incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {\n    let finlen;\n    let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;\n    let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;\n    let abtlen, bctlen, catlen;\n    let abttlen, bcttlen, cattlen;\n    let n1, n0;\n\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n\n    s1 = bdx * cdy;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cdx * bdy;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bc[3] = u3;\n    s1 = cdx * ady;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = adx * cdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ca[3] = u3;\n    s1 = adx * bdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bdx * ady;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ab[3] = u3;\n\n    finlen = sum(\n        sum(\n            sum(\n                scale(scale(4, bc, adx, _8), _8, adx, _16), _16,\n                scale(scale(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32,\n            sum(\n                scale(scale(4, ca, bdx, _8), _8, bdx, _16), _16,\n                scale(scale(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64,\n        sum(\n            scale(scale(4, ab, cdx, _8), _8, cdx, _16), _16,\n            scale(scale(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);\n\n    let det = estimate(finlen, fin);\n    let errbound = iccerrboundB * permanent;\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    bvirt = ax - adx;\n    adxtail = ax - (adx + bvirt) + (bvirt - dx);\n    bvirt = ay - ady;\n    adytail = ay - (ady + bvirt) + (bvirt - dy);\n    bvirt = bx - bdx;\n    bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n    bvirt = by - bdy;\n    bdytail = by - (bdy + bvirt) + (bvirt - dy);\n    bvirt = cx - cdx;\n    cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n    bvirt = cy - cdy;\n    cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n    if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) {\n        return det;\n    }\n\n    errbound = iccerrboundC * permanent + resulterrbound * Math.abs(det);\n    det += ((adx * adx + ady * ady) * ((bdx * cdytail + cdy * bdxtail) - (bdy * cdxtail + cdx * bdytail)) +\n        2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx)) +\n        ((bdx * bdx + bdy * bdy) * ((cdx * adytail + ady * cdxtail) - (cdy * adxtail + adx * cdytail)) +\n        2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) +\n        ((cdx * cdx + cdy * cdy) * ((adx * bdytail + bdy * adxtail) - (ady * bdxtail + bdx * adytail)) +\n        2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx));\n\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n        s1 = adx * adx;\n        c = splitter * adx;\n        ahi = c - (c - adx);\n        alo = adx - ahi;\n        s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n        t1 = ady * ady;\n        c = splitter * ady;\n        ahi = c - (c - ady);\n        alo = ady - ahi;\n        t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n        _i = s0 + t0;\n        bvirt = _i - s0;\n        aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n        _j = s1 + _i;\n        bvirt = _j - s1;\n        _0 = s1 - (_j - bvirt) + (_i - bvirt);\n        _i = _0 + t1;\n        bvirt = _i - _0;\n        aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n        u3 = _j + _i;\n        bvirt = u3 - _j;\n        aa[2] = _j - (u3 - bvirt) + (_i - bvirt);\n        aa[3] = u3;\n    }\n    if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n        s1 = bdx * bdx;\n        c = splitter * bdx;\n        ahi = c - (c - bdx);\n        alo = bdx - ahi;\n        s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n        t1 = bdy * bdy;\n        c = splitter * bdy;\n        ahi = c - (c - bdy);\n        alo = bdy - ahi;\n        t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n        _i = s0 + t0;\n        bvirt = _i - s0;\n        bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n        _j = s1 + _i;\n        bvirt = _j - s1;\n        _0 = s1 - (_j - bvirt) + (_i - bvirt);\n        _i = _0 + t1;\n        bvirt = _i - _0;\n        bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n        u3 = _j + _i;\n        bvirt = u3 - _j;\n        bb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n        bb[3] = u3;\n    }\n    if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n        s1 = cdx * cdx;\n        c = splitter * cdx;\n        ahi = c - (c - cdx);\n        alo = cdx - ahi;\n        s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n        t1 = cdy * cdy;\n        c = splitter * cdy;\n        ahi = c - (c - cdy);\n        alo = cdy - ahi;\n        t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n        _i = s0 + t0;\n        bvirt = _i - s0;\n        cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n        _j = s1 + _i;\n        bvirt = _j - s1;\n        _0 = s1 - (_j - bvirt) + (_i - bvirt);\n        _i = _0 + t1;\n        bvirt = _i - _0;\n        cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n        u3 = _j + _i;\n        bvirt = u3 - _j;\n        cc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n        cc[3] = u3;\n    }\n\n    if (adxtail !== 0) {\n        axtbclen = scale(4, bc, adxtail, axtbc);\n        finlen = finadd(finlen, sum_three(\n            scale(axtbclen, axtbc, 2 * adx, _16), _16,\n            scale(scale(4, cc, adxtail, _8), _8, bdy, _16b), _16b,\n            scale(scale(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);\n    }\n    if (adytail !== 0) {\n        aytbclen = scale(4, bc, adytail, aytbc);\n        finlen = finadd(finlen, sum_three(\n            scale(aytbclen, aytbc, 2 * ady, _16), _16,\n            scale(scale(4, bb, adytail, _8), _8, cdx, _16b), _16b,\n            scale(scale(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);\n    }\n    if (bdxtail !== 0) {\n        bxtcalen = scale(4, ca, bdxtail, bxtca);\n        finlen = finadd(finlen, sum_three(\n            scale(bxtcalen, bxtca, 2 * bdx, _16), _16,\n            scale(scale(4, aa, bdxtail, _8), _8, cdy, _16b), _16b,\n            scale(scale(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);\n    }\n    if (bdytail !== 0) {\n        bytcalen = scale(4, ca, bdytail, bytca);\n        finlen = finadd(finlen, sum_three(\n            scale(bytcalen, bytca, 2 * bdy, _16), _16,\n            scale(scale(4, cc, bdytail, _8), _8, adx, _16b), _16b,\n            scale(scale(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);\n    }\n    if (cdxtail !== 0) {\n        cxtablen = scale(4, ab, cdxtail, cxtab);\n        finlen = finadd(finlen, sum_three(\n            scale(cxtablen, cxtab, 2 * cdx, _16), _16,\n            scale(scale(4, bb, cdxtail, _8), _8, ady, _16b), _16b,\n            scale(scale(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);\n    }\n    if (cdytail !== 0) {\n        cytablen = scale(4, ab, cdytail, cytab);\n        finlen = finadd(finlen, sum_three(\n            scale(cytablen, cytab, 2 * cdy, _16), _16,\n            scale(scale(4, aa, cdytail, _8), _8, bdx, _16b), _16b,\n            scale(scale(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);\n    }\n\n    if (adxtail !== 0 || adytail !== 0) {\n        if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n            s1 = bdxtail * cdy;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * cdy;\n            bhi = c - (c - cdy);\n            blo = cdy - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = bdx * cdytail;\n            c = splitter * bdx;\n            ahi = c - (c - bdx);\n            alo = bdx - ahi;\n            c = splitter * cdytail;\n            bhi = c - (c - cdytail);\n            blo = cdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            u[3] = u3;\n            s1 = cdxtail * -bdy;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * -bdy;\n            bhi = c - (c - -bdy);\n            blo = -bdy - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = cdx * -bdytail;\n            c = splitter * cdx;\n            ahi = c - (c - cdx);\n            alo = cdx - ahi;\n            c = splitter * -bdytail;\n            bhi = c - (c - -bdytail);\n            blo = -bdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            v[3] = u3;\n            bctlen = sum(4, u, 4, v, bct);\n            s1 = bdxtail * cdytail;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * cdytail;\n            bhi = c - (c - cdytail);\n            blo = cdytail - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = cdxtail * bdytail;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * bdytail;\n            bhi = c - (c - bdytail);\n            blo = bdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            bctt[3] = u3;\n            bcttlen = 4;\n        } else {\n            bct[0] = 0;\n            bctlen = 1;\n            bctt[0] = 0;\n            bcttlen = 1;\n        }\n        if (adxtail !== 0) {\n            const len = scale(bctlen, bct, adxtail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(axtbclen, axtbc, adxtail, _16), _16,\n                scale(len, _16c, 2 * adx, _32), _32, _48), _48);\n\n            const len2 = scale(bcttlen, bctt, adxtail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * adx, _16), _16,\n                scale(len2, _8, adxtail, _16b), _16b,\n                scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);\n\n            if (bdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8), _8, bdytail, _16), _16);\n            }\n            if (cdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8), _8, cdytail, _16), _16);\n            }\n        }\n        if (adytail !== 0) {\n            const len = scale(bctlen, bct, adytail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(aytbclen, aytbc, adytail, _16), _16,\n                scale(len, _16c, 2 * ady, _32), _32, _48), _48);\n\n            const len2 = scale(bcttlen, bctt, adytail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * ady, _16), _16,\n                scale(len2, _8, adytail, _16b), _16b,\n                scale(len, _16c, adytail, _32), _32, _32b, _64), _64);\n        }\n    }\n    if (bdxtail !== 0 || bdytail !== 0) {\n        if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n            s1 = cdxtail * ady;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * ady;\n            bhi = c - (c - ady);\n            blo = ady - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = cdx * adytail;\n            c = splitter * cdx;\n            ahi = c - (c - cdx);\n            alo = cdx - ahi;\n            c = splitter * adytail;\n            bhi = c - (c - adytail);\n            blo = adytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            u[3] = u3;\n            n1 = -cdy;\n            n0 = -cdytail;\n            s1 = adxtail * n1;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * n1;\n            bhi = c - (c - n1);\n            blo = n1 - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = adx * n0;\n            c = splitter * adx;\n            ahi = c - (c - adx);\n            alo = adx - ahi;\n            c = splitter * n0;\n            bhi = c - (c - n0);\n            blo = n0 - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            v[3] = u3;\n            catlen = sum(4, u, 4, v, cat);\n            s1 = cdxtail * adytail;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * adytail;\n            bhi = c - (c - adytail);\n            blo = adytail - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = adxtail * cdytail;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * cdytail;\n            bhi = c - (c - cdytail);\n            blo = cdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            catt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            catt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            catt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            catt[3] = u3;\n            cattlen = 4;\n        } else {\n            cat[0] = 0;\n            catlen = 1;\n            catt[0] = 0;\n            cattlen = 1;\n        }\n        if (bdxtail !== 0) {\n            const len = scale(catlen, cat, bdxtail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(bxtcalen, bxtca, bdxtail, _16), _16,\n                scale(len, _16c, 2 * bdx, _32), _32, _48), _48);\n\n            const len2 = scale(cattlen, catt, bdxtail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * bdx, _16), _16,\n                scale(len2, _8, bdxtail, _16b), _16b,\n                scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64);\n\n            if (cdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8), _8, cdytail, _16), _16);\n            }\n            if (adytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8), _8, adytail, _16), _16);\n            }\n        }\n        if (bdytail !== 0) {\n            const len = scale(catlen, cat, bdytail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(bytcalen, bytca, bdytail, _16), _16,\n                scale(len, _16c, 2 * bdy, _32), _32, _48), _48);\n\n            const len2 = scale(cattlen, catt, bdytail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * bdy, _16), _16,\n                scale(len2, _8, bdytail, _16b), _16b,\n                scale(len, _16c, bdytail, _32), _32,  _32b, _64), _64);\n        }\n    }\n    if (cdxtail !== 0 || cdytail !== 0) {\n        if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n            s1 = adxtail * bdy;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * bdy;\n            bhi = c - (c - bdy);\n            blo = bdy - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = adx * bdytail;\n            c = splitter * adx;\n            ahi = c - (c - adx);\n            alo = adx - ahi;\n            c = splitter * bdytail;\n            bhi = c - (c - bdytail);\n            blo = bdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            u[3] = u3;\n            n1 = -ady;\n            n0 = -adytail;\n            s1 = bdxtail * n1;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * n1;\n            bhi = c - (c - n1);\n            blo = n1 - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = bdx * n0;\n            c = splitter * bdx;\n            ahi = c - (c - bdx);\n            alo = bdx - ahi;\n            c = splitter * n0;\n            bhi = c - (c - n0);\n            blo = n0 - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            v[3] = u3;\n            abtlen = sum(4, u, 4, v, abt);\n            s1 = adxtail * bdytail;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * bdytail;\n            bhi = c - (c - bdytail);\n            blo = bdytail - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = bdxtail * adytail;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * adytail;\n            bhi = c - (c - adytail);\n            blo = adytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            abtt[3] = u3;\n            abttlen = 4;\n        } else {\n            abt[0] = 0;\n            abtlen = 1;\n            abtt[0] = 0;\n            abttlen = 1;\n        }\n        if (cdxtail !== 0) {\n            const len = scale(abtlen, abt, cdxtail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(cxtablen, cxtab, cdxtail, _16), _16,\n                scale(len, _16c, 2 * cdx, _32), _32, _48), _48);\n\n            const len2 = scale(abttlen, abtt, cdxtail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * cdx, _16), _16,\n                scale(len2, _8, cdxtail, _16b), _16b,\n                scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64);\n\n            if (adytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8), _8, adytail, _16), _16);\n            }\n            if (bdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);\n            }\n        }\n        if (cdytail !== 0) {\n            const len = scale(abtlen, abt, cdytail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(cytablen, cytab, cdytail, _16), _16,\n                scale(len, _16c, 2 * cdy, _32), _32, _48), _48);\n\n            const len2 = scale(abttlen, abtt, cdytail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * cdy, _16), _16,\n                scale(len2, _8, cdytail, _16b), _16b,\n                scale(len, _16c, cdytail, _32), _32, _32b, _64), _64);\n        }\n    }\n\n    return fin[finlen - 1];\n}\n\nexport function incircle(ax, ay, bx, by, cx, cy, dx, dy) {\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n\n    const bdxcdy = bdx * cdy;\n    const cdxbdy = cdx * bdy;\n    const alift = adx * adx + ady * ady;\n\n    const cdxady = cdx * ady;\n    const adxcdy = adx * cdy;\n    const blift = bdx * bdx + bdy * bdy;\n\n    const adxbdy = adx * bdy;\n    const bdxady = bdx * ady;\n    const clift = cdx * cdx + cdy * cdy;\n\n    const det =\n        alift * (bdxcdy - cdxbdy) +\n        blift * (cdxady - adxcdy) +\n        clift * (adxbdy - bdxady);\n\n    const permanent =\n        (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift +\n        (Math.abs(cdxady) + Math.abs(adxcdy)) * blift +\n        (Math.abs(adxbdy) + Math.abs(bdxady)) * clift;\n\n    const errbound = iccerrboundA * permanent;\n\n    if (det > errbound || -det > errbound) {\n        return det;\n    }\n    return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent);\n}\n\nexport function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) {\n    const adx = ax - dx;\n    const ady = ay - dy;\n    const bdx = bx - dx;\n    const bdy = by - dy;\n    const cdx = cx - dx;\n    const cdy = cy - dy;\n\n    const abdet = adx * bdy - bdx * ady;\n    const bcdet = bdx * cdy - cdx * bdy;\n    const cadet = cdx * ady - adx * cdy;\n    const alift = adx * adx + ady * ady;\n    const blift = bdx * bdx + bdy * bdy;\n    const clift = cdx * cdx + cdy * cdy;\n\n    return alift * bcdet + blift * cadet + clift * abdet;\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale, negate} from './util.js';\n\nconst isperrboundA = (16 + 224 * epsilon) * epsilon;\nconst isperrboundB = (5 + 72 * epsilon) * epsilon;\nconst isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;\n\nconst ab = vec(4);\nconst bc = vec(4);\nconst cd = vec(4);\nconst de = vec(4);\nconst ea = vec(4);\nconst ac = vec(4);\nconst bd = vec(4);\nconst ce = vec(4);\nconst da = vec(4);\nconst eb = vec(4);\n\nconst abc = vec(24);\nconst bcd = vec(24);\nconst cde = vec(24);\nconst dea = vec(24);\nconst eab = vec(24);\nconst abd = vec(24);\nconst bce = vec(24);\nconst cda = vec(24);\nconst deb = vec(24);\nconst eac = vec(24);\n\nconst adet = vec(1152);\nconst bdet = vec(1152);\nconst cdet = vec(1152);\nconst ddet = vec(1152);\nconst edet = vec(1152);\nconst abdet = vec(2304);\nconst cddet = vec(2304);\nconst cdedet = vec(3456);\nconst deter = vec(5760);\n\nconst _8 = vec(8);\nconst _8b = vec(8);\nconst _8c = vec(8);\nconst _16 = vec(16);\nconst _24 = vec(24);\nconst _48 = vec(48);\nconst _48b = vec(48);\nconst _96 = vec(96);\nconst _192 = vec(192);\nconst _384x = vec(384);\nconst _384y = vec(384);\nconst _384z = vec(384);\nconst _768 = vec(768);\n\nfunction sum_three_scale(a, b, c, az, bz, cz, out) {\n    return sum_three(\n        scale(4, a, az, _8), _8,\n        scale(4, b, bz, _8b), _8b,\n        scale(4, c, cz, _8c), _8c, _16, out);\n}\n\nfunction liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {\n    const len = sum(\n        sum(alen, a, blen, b, _48), _48,\n        negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);\n\n    return sum_three(\n        scale(scale(len, _96, x, _192), _192, x, _384x), _384x,\n        scale(scale(len, _96, y, _192), _192, y, _384y), _384y,\n        scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out);\n}\n\nfunction insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n    s1 = ax * by;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bx * ay;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ab[3] = u3;\n    s1 = bx * cy;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cx * by;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bc[3] = u3;\n    s1 = cx * dy;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dx * cy;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    cd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    cd[3] = u3;\n    s1 = dx * ey;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ex * dy;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    de[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    de[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    de[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    de[3] = u3;\n    s1 = ex * ay;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ax * ey;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ea[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ea[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ea[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ea[3] = u3;\n    s1 = ax * cy;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cx * ay;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ac[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ac[3] = u3;\n    s1 = bx * dy;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dx * by;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bd[3] = u3;\n    s1 = cx * ey;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ex * cy;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ce[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ce[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ce[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ce[3] = u3;\n    s1 = dx * ay;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ax * dy;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    da[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    da[3] = u3;\n    s1 = ex * by;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bx * ey;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    eb[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    eb[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    eb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    eb[3] = u3;\n\n    const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);\n    const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);\n    const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);\n    const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);\n    const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);\n    const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);\n    const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);\n    const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);\n    const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);\n    const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);\n\n    const deterlen = sum_three(\n        liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet,\n        liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet,\n        sum_three(\n            liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet,\n            liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet,\n            liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);\n\n    return deter[deterlen - 1];\n}\n\nconst xdet = vec(96);\nconst ydet = vec(96);\nconst zdet = vec(96);\nconst fin = vec(1152);\n\nfunction liftadapt(a, b, c, az, bz, cz, x, y, z, out) {\n    const len = sum_three_scale(a, b, c, az, bz, cz, _24);\n    return sum_three(\n        scale(scale(len, _24, x, _48), _48, x, xdet), xdet,\n        scale(scale(len, _24, y, _48), _48, y, ydet), ydet,\n        scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);\n}\n\nfunction insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {\n    let ab3, bc3, cd3, da3, ac3, bd3;\n\n    let aextail, bextail, cextail, dextail;\n    let aeytail, beytail, ceytail, deytail;\n    let aeztail, beztail, ceztail, deztail;\n\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;\n\n    const aex = ax - ex;\n    const bex = bx - ex;\n    const cex = cx - ex;\n    const dex = dx - ex;\n    const aey = ay - ey;\n    const bey = by - ey;\n    const cey = cy - ey;\n    const dey = dy - ey;\n    const aez = az - ez;\n    const bez = bz - ez;\n    const cez = cz - ez;\n    const dez = dz - ez;\n\n    s1 = aex * bey;\n    c = splitter * aex;\n    ahi = c - (c - aex);\n    alo = aex - ahi;\n    c = splitter * bey;\n    bhi = c - (c - bey);\n    blo = bey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bex * aey;\n    c = splitter * bex;\n    ahi = c - (c - bex);\n    alo = bex - ahi;\n    c = splitter * aey;\n    bhi = c - (c - aey);\n    blo = aey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    ab3 = _j + _i;\n    bvirt = ab3 - _j;\n    ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);\n    ab[3] = ab3;\n    s1 = bex * cey;\n    c = splitter * bex;\n    ahi = c - (c - bex);\n    alo = bex - ahi;\n    c = splitter * cey;\n    bhi = c - (c - cey);\n    blo = cey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cex * bey;\n    c = splitter * cex;\n    ahi = c - (c - cex);\n    alo = cex - ahi;\n    c = splitter * bey;\n    bhi = c - (c - bey);\n    blo = bey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    bc3 = _j + _i;\n    bvirt = bc3 - _j;\n    bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);\n    bc[3] = bc3;\n    s1 = cex * dey;\n    c = splitter * cex;\n    ahi = c - (c - cex);\n    alo = cex - ahi;\n    c = splitter * dey;\n    bhi = c - (c - dey);\n    blo = dey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dex * cey;\n    c = splitter * dex;\n    ahi = c - (c - dex);\n    alo = dex - ahi;\n    c = splitter * cey;\n    bhi = c - (c - cey);\n    blo = cey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    cd3 = _j + _i;\n    bvirt = cd3 - _j;\n    cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);\n    cd[3] = cd3;\n    s1 = dex * aey;\n    c = splitter * dex;\n    ahi = c - (c - dex);\n    alo = dex - ahi;\n    c = splitter * aey;\n    bhi = c - (c - aey);\n    blo = aey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = aex * dey;\n    c = splitter * aex;\n    ahi = c - (c - aex);\n    alo = aex - ahi;\n    c = splitter * dey;\n    bhi = c - (c - dey);\n    blo = dey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    da3 = _j + _i;\n    bvirt = da3 - _j;\n    da[2] = _j - (da3 - bvirt) + (_i - bvirt);\n    da[3] = da3;\n    s1 = aex * cey;\n    c = splitter * aex;\n    ahi = c - (c - aex);\n    alo = aex - ahi;\n    c = splitter * cey;\n    bhi = c - (c - cey);\n    blo = cey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cex * aey;\n    c = splitter * cex;\n    ahi = c - (c - cex);\n    alo = cex - ahi;\n    c = splitter * aey;\n    bhi = c - (c - aey);\n    blo = aey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    ac3 = _j + _i;\n    bvirt = ac3 - _j;\n    ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);\n    ac[3] = ac3;\n    s1 = bex * dey;\n    c = splitter * bex;\n    ahi = c - (c - bex);\n    alo = bex - ahi;\n    c = splitter * dey;\n    bhi = c - (c - dey);\n    blo = dey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dex * bey;\n    c = splitter * dex;\n    ahi = c - (c - dex);\n    alo = dex - ahi;\n    c = splitter * bey;\n    bhi = c - (c - bey);\n    blo = bey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    bd3 = _j + _i;\n    bvirt = bd3 - _j;\n    bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);\n    bd[3] = bd3;\n\n    const finlen = sum(\n        sum(\n            negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet,\n            liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet,\n        sum(\n            negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet,\n            liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);\n\n    let det = estimate(finlen, fin);\n    let errbound = isperrboundB * permanent;\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    bvirt = ax - aex;\n    aextail = ax - (aex + bvirt) + (bvirt - ex);\n    bvirt = ay - aey;\n    aeytail = ay - (aey + bvirt) + (bvirt - ey);\n    bvirt = az - aez;\n    aeztail = az - (aez + bvirt) + (bvirt - ez);\n    bvirt = bx - bex;\n    bextail = bx - (bex + bvirt) + (bvirt - ex);\n    bvirt = by - bey;\n    beytail = by - (bey + bvirt) + (bvirt - ey);\n    bvirt = bz - bez;\n    beztail = bz - (bez + bvirt) + (bvirt - ez);\n    bvirt = cx - cex;\n    cextail = cx - (cex + bvirt) + (bvirt - ex);\n    bvirt = cy - cey;\n    ceytail = cy - (cey + bvirt) + (bvirt - ey);\n    bvirt = cz - cez;\n    ceztail = cz - (cez + bvirt) + (bvirt - ez);\n    bvirt = dx - dex;\n    dextail = dx - (dex + bvirt) + (bvirt - ex);\n    bvirt = dy - dey;\n    deytail = dy - (dey + bvirt) + (bvirt - ey);\n    bvirt = dz - dez;\n    deztail = dz - (dez + bvirt) + (bvirt - ez);\n    if (aextail === 0 && aeytail === 0 && aeztail === 0 &&\n        bextail === 0 && beytail === 0 && beztail === 0 &&\n        cextail === 0 && ceytail === 0 && ceztail === 0 &&\n        dextail === 0 && deytail === 0 && deztail === 0) {\n        return det;\n    }\n\n    errbound = isperrboundC * permanent + resulterrbound * Math.abs(det);\n\n    const abeps = (aex * beytail + bey * aextail) - (aey * bextail + bex * aeytail);\n    const bceps = (bex * ceytail + cey * bextail) - (bey * cextail + cex * beytail);\n    const cdeps = (cex * deytail + dey * cextail) - (cey * dextail + dex * ceytail);\n    const daeps = (dex * aeytail + aey * dextail) - (dey * aextail + aex * deytail);\n    const aceps = (aex * ceytail + cey * aextail) - (aey * cextail + cex * aeytail);\n    const bdeps = (bex * deytail + dey * bextail) - (bey * dextail + dex * beytail);\n    det +=\n        (((bex * bex + bey * bey + bez * bez) * ((cez * daeps + dez * aceps + aez * cdeps) +\n        (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) *\n        ((aez * bceps - bez * aceps + cez * abeps) + (aeztail * bc3 - beztail * ac3 + ceztail * ab3))) -\n        ((aex * aex + aey * aey + aez * aez) * ((bez * cdeps - cez * bdeps + dez * bceps) +\n        (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) *\n        ((dez * abeps + aez * bdeps + bez * daeps) + (deztail * ab3 + aeztail * bd3 + beztail * da3)))) +\n        2 * (((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) +\n        (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3)) -\n        ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) +\n        (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3)));\n\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez);\n}\n\nexport function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n    const aex = ax - ex;\n    const bex = bx - ex;\n    const cex = cx - ex;\n    const dex = dx - ex;\n    const aey = ay - ey;\n    const bey = by - ey;\n    const cey = cy - ey;\n    const dey = dy - ey;\n    const aez = az - ez;\n    const bez = bz - ez;\n    const cez = cz - ez;\n    const dez = dz - ez;\n\n    const aexbey = aex * bey;\n    const bexaey = bex * aey;\n    const ab = aexbey - bexaey;\n    const bexcey = bex * cey;\n    const cexbey = cex * bey;\n    const bc = bexcey - cexbey;\n    const cexdey = cex * dey;\n    const dexcey = dex * cey;\n    const cd = cexdey - dexcey;\n    const dexaey = dex * aey;\n    const aexdey = aex * dey;\n    const da = dexaey - aexdey;\n    const aexcey = aex * cey;\n    const cexaey = cex * aey;\n    const ac = aexcey - cexaey;\n    const bexdey = bex * dey;\n    const dexbey = dex * bey;\n    const bd = bexdey - dexbey;\n\n    const alift = aex * aex + aey * aey + aez * aez;\n    const blift = bex * bex + bey * bey + bez * bez;\n    const clift = cex * cex + cey * cey + cez * cez;\n    const dlift = dex * dex + dey * dey + dez * dez;\n\n    const det =\n        (clift * (dez * ab + aez * bd + bez * da) - dlift * (aez * bc - bez * ac + cez * ab)) +\n        (alift * (bez * cd - cez * bd + dez * bc) - blift * (cez * da + dez * ac + aez * cd));\n\n    const aezplus = Math.abs(aez);\n    const bezplus = Math.abs(bez);\n    const cezplus = Math.abs(cez);\n    const dezplus = Math.abs(dez);\n    const aexbeyplus = Math.abs(aexbey) + Math.abs(bexaey);\n    const bexceyplus = Math.abs(bexcey) + Math.abs(cexbey);\n    const cexdeyplus = Math.abs(cexdey) + Math.abs(dexcey);\n    const dexaeyplus = Math.abs(dexaey) + Math.abs(aexdey);\n    const aexceyplus = Math.abs(aexcey) + Math.abs(cexaey);\n    const bexdeyplus = Math.abs(bexdey) + Math.abs(dexbey);\n    const permanent =\n        (cexdeyplus * bezplus + bexdeyplus * cezplus + bexceyplus * dezplus) * alift +\n        (dexaeyplus * cezplus + aexceyplus * dezplus + cexdeyplus * aezplus) * blift +\n        (aexbeyplus * dezplus + bexdeyplus * aezplus + dexaeyplus * bezplus) * clift +\n        (bexceyplus * aezplus + aexceyplus * bezplus + aexbeyplus * cezplus) * dlift;\n\n    const errbound = isperrboundA * permanent;\n    if (det > errbound || -det > errbound) {\n        return det;\n    }\n    return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent);\n}\n\nexport function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) {\n    const aex = pax - pex;\n    const bex = pbx - pex;\n    const cex = pcx - pex;\n    const dex = pdx - pex;\n    const aey = pay - pey;\n    const bey = pby - pey;\n    const cey = pcy - pey;\n    const dey = pdy - pey;\n    const aez = paz - pez;\n    const bez = pbz - pez;\n    const cez = pcz - pez;\n    const dez = pdz - pez;\n\n    const ab = aex * bey - bex * aey;\n    const bc = bex * cey - cex * bey;\n    const cd = cex * dey - dex * cey;\n    const da = dex * aey - aex * dey;\n    const ac = aex * cey - cex * aey;\n    const bd = bex * dey - dex * bey;\n\n    const abc = aez * bc - bez * ac + cez * ab;\n    const bcd = bez * cd - cez * bd + dez * bc;\n    const cda = cez * da + dez * ac + aez * cd;\n    const dab = dez * ab + aez * bd + bez * da;\n\n    const alift = aex * aex + aey * aey + aez * aez;\n    const blift = bex * bex + bey * bey + bez * bez;\n    const clift = cex * cex + cey * cey + cez * cez;\n    const dlift = dex * dex + dey * dey + dez * dez;\n\n    return (clift * dab - dlift * abc) + (alift * bcd - blift * cda);\n}\n","\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nimport {orient2d} from 'robust-predicates';\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); // 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 i0, i1, i2;\n\n        // pick a seed point close to the center\n        for (let i = 0, minDist = Infinity; 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        // find the point closest to the seed\n        for (let i = 0, minDist = Infinity; 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                const d = this._dists[id];\n                if (d > d0) {\n                    hull[j++] = id;\n                    d0 = d;\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 (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {\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], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {\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], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {\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], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {\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\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    let bx, by; // lazily computed barycenter of the hull\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 ab = (dx * ey - dy * ex) * 2;\n\n      if (Math.abs(ab) < 1e-9) {\n        // For a degenerate triangle, the circumcenter is at the infinity, in a\n        // direction orthogonal to the halfedge and away from the “center” of\n        // the diagram <bx, by>, defined as the hull’s barycenter.\n        if (bx === undefined) {\n          bx = by = 0;\n          for (const i of hull) bx += points[i * 2], by += points[i * 2 + 1];\n          bx /= hull.length, by /= hull.length;\n        }\n        const a = 1e9 * Math.sign((bx - x1) * ey - (by - y1) * ex);\n        x = (x1 + x3) / 2 - a * ey;\n        y = (y1 + y3) / 2 + a * ex;\n      } else {\n        const d = 1 / ab;\n        const bl = dx * dx + dy * dy;\n        const cl = ex * ex + ey * ey;\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            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 this._simplify(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 = 0;\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    // for more robustness, always consider the segment in the same order\n    const flip = c0 < c1;\n    if (flip) [x0, y0, x1, y1, c0, c1] = [x1, y1, x0, y0, c1, c0];\n    while (true) {\n      if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [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      // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n      // undefined, the conditional statement will be executed.\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    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  _simplify(P) {\n    if (P && 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] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) {\n          P.splice(j, 2), i -= 2;\n        }\n      }\n      if (!P.length) P = null;\n    }\n    return P;\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      inedges[hull[0]] = 1;\n      if (hull.length === 2) {\n        inedges[hull[1]] = 0;\n        this.triangles[1] = hull[1];\n        this.triangles[2] = hull[1];\n      }\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) {\n    if (r === undefined && (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n    r = r == undefined ? 2 : +r;\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","export default x => () => x;\n","export default function DragEvent(type, {\n  sourceEvent,\n  subject,\n  target,\n  identifier,\n  active,\n  x, y, dx, dy,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    subject: {value: subject, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    identifier: {value: identifier, enumerable: true, configurable: true},\n    active: {value: active, enumerable: true, configurable: true},\n    x: {value: x, enumerable: true, configurable: true},\n    y: {value: y, enumerable: true, configurable: true},\n    dx: {value: dx, enumerable: true, configurable: true},\n    dy: {value: dy, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\n}\n\nDragEvent.prototype.on = function() {\n  var value = this._.on.apply(this._, arguments);\n  return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n  return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n  return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      container = defaultContainer,\n      subject = defaultSubject,\n      touchable = defaultTouchable,\n      gestures = {},\n      listeners = dispatch(\"start\", \"drag\", \"end\"),\n      active = 0,\n      mousedownx,\n      mousedowny,\n      mousemoving,\n      touchending,\n      clickDistance2 = 0;\n\n  function drag(selection) {\n    selection\n        .on(\"mousedown.drag\", mousedowned)\n      .filter(touchable)\n        .on(\"touchstart.drag\", touchstarted)\n        .on(\"touchmove.drag\", touchmoved, nonpassive)\n        .on(\"touchend.drag touchcancel.drag\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  function mousedowned(event, d) {\n    if (touchending || !filter.call(this, event, d)) return;\n    var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n    if (!gesture) return;\n    select(event.view)\n      .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n      .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n    nodrag(event.view);\n    nopropagation(event);\n    mousemoving = false;\n    mousedownx = event.clientX;\n    mousedowny = event.clientY;\n    gesture(\"start\", event);\n  }\n\n  function mousemoved(event) {\n    noevent(event);\n    if (!mousemoving) {\n      var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n      mousemoving = dx * dx + dy * dy > clickDistance2;\n    }\n    gestures.mouse(\"drag\", event);\n  }\n\n  function mouseupped(event) {\n    select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n    yesdrag(event.view, mousemoving);\n    noevent(event);\n    gestures.mouse(\"end\", event);\n  }\n\n  function touchstarted(event, d) {\n    if (!filter.call(this, event, d)) return;\n    var touches = event.changedTouches,\n        c = container.call(this, event, d),\n        n = touches.length, i, gesture;\n\n    for (i = 0; i < n; ++i) {\n      if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n        nopropagation(event);\n        gesture(\"start\", event, touches[i]);\n      }\n    }\n  }\n\n  function touchmoved(event) {\n    var touches = event.changedTouches,\n        n = touches.length, i, gesture;\n\n    for (i = 0; i < n; ++i) {\n      if (gesture = gestures[touches[i].identifier]) {\n        noevent(event);\n        gesture(\"drag\", event, touches[i]);\n      }\n    }\n  }\n\n  function touchended(event) {\n    var touches = event.changedTouches,\n        n = touches.length, i, gesture;\n\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n    for (i = 0; i < n; ++i) {\n      if (gesture = gestures[touches[i].identifier]) {\n        nopropagation(event);\n        gesture(\"end\", event, touches[i]);\n      }\n    }\n  }\n\n  function beforestart(that, container, event, d, identifier, touch) {\n    var dispatch = listeners.copy(),\n        p = pointer(touch || event, container), dx, dy,\n        s;\n\n    if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n        sourceEvent: event,\n        target: drag,\n        identifier,\n        active,\n        x: p[0],\n        y: p[1],\n        dx: 0,\n        dy: 0,\n        dispatch\n      }), d)) == null) return;\n\n    dx = s.x - p[0] || 0;\n    dy = s.y - p[1] || 0;\n\n    return function gesture(type, event, touch) {\n      var p0 = p, n;\n      switch (type) {\n        case \"start\": gestures[identifier] = gesture, n = active++; break;\n        case \"end\": delete gestures[identifier], --active; // falls through\n        case \"drag\": p = pointer(touch || event, container), n = active; break;\n      }\n      dispatch.call(\n        type,\n        that,\n        new DragEvent(type, {\n          sourceEvent: event,\n          subject: s,\n          target: drag,\n          identifier,\n          active: n,\n          x: p[0] + dx,\n          y: p[1] + dy,\n          dx: p[0] - p0[0],\n          dy: p[1] - p0[1],\n          dispatch\n        }),\n        d\n      );\n    };\n  }\n\n  drag.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n  };\n\n  drag.container = function(_) {\n    return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n  };\n\n  drag.subject = function(_) {\n    return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n  };\n\n  drag.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n  };\n\n  drag.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? drag : value;\n  };\n\n  drag.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n  };\n\n  return drag;\n}\n","var EOL = {},\n    EOF = {},\n    QUOTE = 34,\n    NEWLINE = 10,\n    RETURN = 13;\n\nfunction objectConverter(columns) {\n  return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n    return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n  }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n  var object = objectConverter(columns);\n  return function(row, i) {\n    return f(object(row), i, columns);\n  };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n  var columnSet = Object.create(null),\n      columns = [];\n\n  rows.forEach(function(row) {\n    for (var column in row) {\n      if (!(column in columnSet)) {\n        columns.push(columnSet[column] = column);\n      }\n    }\n  });\n\n  return columns;\n}\n\nfunction pad(value, width) {\n  var s = value + \"\", length = s.length;\n  return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n  return year < 0 ? \"-\" + pad(-year, 6)\n    : year > 9999 ? \"+\" + pad(year, 6)\n    : pad(year, 4);\n}\n\nfunction formatDate(date) {\n  var hours = date.getUTCHours(),\n      minutes = date.getUTCMinutes(),\n      seconds = date.getUTCSeconds(),\n      milliseconds = date.getUTCMilliseconds();\n  return isNaN(date) ? \"Invalid Date\"\n      : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n      + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n      : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n      : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n      : \"\");\n}\n\nexport default function(delimiter) {\n  var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n      DELIMITER = delimiter.charCodeAt(0);\n\n  function parse(text, f) {\n    var convert, columns, rows = parseRows(text, function(row, i) {\n      if (convert) return convert(row, i - 1);\n      columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n    });\n    rows.columns = columns || [];\n    return rows;\n  }\n\n  function parseRows(text, f) {\n    var rows = [], // output rows\n        N = text.length,\n        I = 0, // current character index\n        n = 0, // current line number\n        t, // current token\n        eof = N <= 0, // current token followed by EOF?\n        eol = false; // current token followed by EOL?\n\n    // Strip the trailing newline.\n    if (text.charCodeAt(N - 1) === NEWLINE) --N;\n    if (text.charCodeAt(N - 1) === RETURN) --N;\n\n    function token() {\n      if (eof) return EOF;\n      if (eol) return eol = false, EOL;\n\n      // Unescape quotes.\n      var i, j = I, c;\n      if (text.charCodeAt(j) === QUOTE) {\n        while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n        if ((i = I) >= N) eof = true;\n        else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n      }\n\n      // Find next delimiter or newline.\n      while (I < N) {\n        if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        else if (c !== DELIMITER) continue;\n        return text.slice(j, i);\n      }\n\n      // Return last token before EOF.\n      return eof = true, text.slice(j, N);\n    }\n\n    while ((t = token()) !== EOF) {\n      var row = [];\n      while (t !== EOL && t !== EOF) row.push(t), t = token();\n      if (f && (row = f(row, n++)) == null) continue;\n      rows.push(row);\n    }\n\n    return rows;\n  }\n\n  function preformatBody(rows, columns) {\n    return rows.map(function(row) {\n      return columns.map(function(column) {\n        return formatValue(row[column]);\n      }).join(delimiter);\n    });\n  }\n\n  function format(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n  }\n\n  function formatBody(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return preformatBody(rows, columns).join(\"\\n\");\n  }\n\n  function formatRows(rows) {\n    return rows.map(formatRow).join(\"\\n\");\n  }\n\n  function formatRow(row) {\n    return row.map(formatValue).join(delimiter);\n  }\n\n  function formatValue(value) {\n    return value == null ? \"\"\n        : value instanceof Date ? formatDate(value)\n        : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n        : value;\n  }\n\n  return {\n    parse: parse,\n    parseRows: parseRows,\n    format: format,\n    formatBody: formatBody,\n    formatRows: formatRows,\n    formatRow: formatRow,\n    formatValue: formatValue\n  };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n  for (var key in object) {\n    var value = object[key].trim(), number, m;\n    if (!value) value = null;\n    else if (value === \"true\") value = true;\n    else if (value === \"false\") value = false;\n    else if (value === \"NaN\") value = NaN;\n    else if (!isNaN(number = +value)) value = number;\n    else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n      if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n      value = new Date(value);\n    }\n    else continue;\n    object[key] = value;\n  }\n  return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nconst fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","export const linear = t => +t;\n","export function quadIn(t) {\n  return t * t;\n}\n\nexport function quadOut(t) {\n  return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n  return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n  e = +e;\n\n  function polyIn(t) {\n    return Math.pow(t, e);\n  }\n\n  polyIn.exponent = custom;\n\n  return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n  e = +e;\n\n  function polyOut(t) {\n    return 1 - Math.pow(1 - t, e);\n  }\n\n  polyOut.exponent = custom;\n\n  return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n  e = +e;\n\n  function polyInOut(t) {\n    return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n  }\n\n  polyInOut.exponent = custom;\n\n  return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n    halfPi = pi / 2;\n\nexport function sinIn(t) {\n  return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n  return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n  return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n  return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n  return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n  return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n  return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n  return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n  return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n  return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n    b2 = 6 / 11,\n    b3 = 8 / 11,\n    b4 = 3 / 4,\n    b5 = 9 / 11,\n    b6 = 10 / 11,\n    b7 = 15 / 16,\n    b8 = 21 / 22,\n    b9 = 63 / 64,\n    b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n  return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n  return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n  return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n  s = +s;\n\n  function backIn(t) {\n    return (t = +t) * t * (s * (t - 1) + t);\n  }\n\n  backIn.overshoot = custom;\n\n  return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n  s = +s;\n\n  function backOut(t) {\n    return --t * t * ((t + 1) * s + t) + 1;\n  }\n\n  backOut.overshoot = custom;\n\n  return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n  s = +s;\n\n  function backInOut(t) {\n    return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n  }\n\n  backInOut.overshoot = custom;\n\n  return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n    amplitude = 1,\n    period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticIn(t) {\n    return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n  }\n\n  elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n  elasticIn.period = function(p) { return custom(a, p); };\n\n  return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticOut(t) {\n    return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n  }\n\n  elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticOut.period = function(p) { return custom(a, p); };\n\n  return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticInOut(t) {\n    return ((t = t * 2 - 1) < 0\n        ? a * tpmt(-t) * Math.sin((s - t) / p)\n        : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n  }\n\n  elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticInOut.period = function(p) { return custom(a, p); };\n\n  return elasticInOut;\n})(amplitude, period);\n","function responseBlob(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.blob();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.text();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text.js\";\n\nfunction dsvParse(parse) {\n  return function(input, init, row) {\n    if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n    return text(input, init).then(function(response) {\n      return parse(response, row);\n    });\n  };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n  if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n  var format = dsvFormat(delimiter);\n  return text(input, init).then(function(response) {\n    return format.parse(response, row);\n  });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n  return new Promise(function(resolve, reject) {\n    var image = new Image;\n    for (var key in init) image[key] = init[key];\n    image.onerror = reject;\n    image.onload = function() { resolve(image); };\n    image.src = input;\n  });\n}\n","function responseJson(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  if (response.status === 204 || response.status === 205) return;\n  return response.json();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseJson);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n  return (input, init) => text(input, init)\n    .then(text => (new DOMParser).parseFromString(text, type));\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n  var nodes, strength = 1;\n\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force() {\n    var i,\n        n = nodes.length,\n        node,\n        sx = 0,\n        sy = 0;\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i], sx += node.x, sy += node.y;\n    }\n\n    for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n      node = nodes[i], node.x -= sx, node.y -= sy;\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  return force;\n}\n","export default function(d) {\n  const x = +this._x.call(null, d),\n      y = +this._y.call(null, d);\n  return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n  if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n  var parent,\n      node = tree._root,\n      leaf = {data: d},\n      x0 = tree._x0,\n      y0 = tree._y0,\n      x1 = tree._x1,\n      y1 = tree._y1,\n      xm,\n      ym,\n      xp,\n      yp,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return tree._root = leaf, tree;\n\n  // Find the existing leaf for the new point, or add it.\n  while (node.length) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n  }\n\n  // Is the new point is exactly coincident with the existing point?\n  xp = +tree._x.call(null, node.data);\n  yp = +tree._y.call(null, node.data);\n  if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n  // Otherwise, split the leaf node until the old and new point are separated.\n  do {\n    parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n  } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n  return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n  var d, i, n = data.length,\n      x,\n      y,\n      xz = new Array(n),\n      yz = new Array(n),\n      x0 = Infinity,\n      y0 = Infinity,\n      x1 = -Infinity,\n      y1 = -Infinity;\n\n  // Compute the points and their extent.\n  for (i = 0; i < n; ++i) {\n    if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n    xz[i] = x;\n    yz[i] = y;\n    if (x < x0) x0 = x;\n    if (x > x1) x1 = x;\n    if (y < y0) y0 = y;\n    if (y > y1) y1 = y;\n  }\n\n  // If there were no (valid) points, abort.\n  if (x0 > x1 || y0 > y1) return this;\n\n  // Expand the tree to cover the new points.\n  this.cover(x0, y0).cover(x1, y1);\n\n  // Add the new points.\n  for (i = 0; i < n; ++i) {\n    add(this, xz[i], yz[i], data[i]);\n  }\n\n  return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n  this.node = node;\n  this.x0 = x0;\n  this.y0 = y0;\n  this.x1 = x1;\n  this.y1 = y1;\n}\n","export function defaultX(d) {\n  return d[0];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n  return d[1];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n  var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n  return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n  this._x = x;\n  this._y = y;\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n  var copy = {data: leaf.data}, next = copy;\n  while (leaf = leaf.next) next = next.next = {data: leaf.data};\n  return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n  var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n      node = this._root,\n      nodes,\n      child;\n\n  if (!node) return copy;\n\n  if (!node.length) return copy._root = leaf_copy(node), copy;\n\n  nodes = [{source: node, target: copy._root = new Array(4)}];\n  while (node = nodes.pop()) {\n    for (var i = 0; i < 4; ++i) {\n      if (child = node.source[i]) {\n        if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n        else node.target[i] = leaf_copy(child);\n      }\n    }\n  }\n\n  return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(random) {\n  return (random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n  return d.x + d.vx;\n}\n\nfunction y(d) {\n  return d.y + d.vy;\n}\n\nexport default function(radius) {\n  var nodes,\n      radii,\n      random,\n      strength = 1,\n      iterations = 1;\n\n  if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n  function force() {\n    var i, n = nodes.length,\n        tree,\n        node,\n        xi,\n        yi,\n        ri,\n        ri2;\n\n    for (var k = 0; k < iterations; ++k) {\n      tree = quadtree(nodes, x, y).visitAfter(prepare);\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        ri = radii[node.index], ri2 = ri * ri;\n        xi = node.x + node.vx;\n        yi = node.y + node.vy;\n        tree.visit(apply);\n      }\n    }\n\n    function apply(quad, x0, y0, x1, y1) {\n      var data = quad.data, rj = quad.r, r = ri + rj;\n      if (data) {\n        if (data.index > node.index) {\n          var x = xi - data.x - data.vx,\n              y = yi - data.y - data.vy,\n              l = x * x + y * y;\n          if (l < r * r) {\n            if (x === 0) x = jiggle(random), l += x * x;\n            if (y === 0) y = jiggle(random), l += y * y;\n            l = (r - (l = Math.sqrt(l))) / l * strength;\n            node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n            node.vy += (y *= l) * r;\n            data.vx -= x * (r = 1 - r);\n            data.vy -= y * r;\n          }\n        }\n        return;\n      }\n      return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n    }\n  }\n\n  function prepare(quad) {\n    if (quad.data) return quad.r = radii[quad.data.index];\n    for (var i = quad.r = 0; i < 4; ++i) {\n      if (quad[i] && quad[i].r > quad.r) {\n        quad.r = quad[i].r;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    radii = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n  return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n  var node = nodeById.get(nodeId);\n  if (!node) throw new Error(\"node not found: \" + nodeId);\n  return node;\n}\n\nexport default function(links) {\n  var id = index,\n      strength = defaultStrength,\n      strengths,\n      distance = constant(30),\n      distances,\n      nodes,\n      count,\n      bias,\n      random,\n      iterations = 1;\n\n  if (links == null) links = [];\n\n  function defaultStrength(link) {\n    return 1 / Math.min(count[link.source.index], count[link.target.index]);\n  }\n\n  function force(alpha) {\n    for (var k = 0, n = links.length; k < iterations; ++k) {\n      for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n        link = links[i], source = link.source, target = link.target;\n        x = target.x + target.vx - source.x - source.vx || jiggle(random);\n        y = target.y + target.vy - source.y - source.vy || jiggle(random);\n        l = Math.sqrt(x * x + y * y);\n        l = (l - distances[i]) / l * alpha * strengths[i];\n        x *= l, y *= l;\n        target.vx -= x * (b = bias[i]);\n        target.vy -= y * b;\n        source.vx += x * (b = 1 - b);\n        source.vy += y * b;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n\n    var i,\n        n = nodes.length,\n        m = links.length,\n        nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n        link;\n\n    for (i = 0, count = new Array(n); i < m; ++i) {\n      link = links[i], link.index = i;\n      if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n      if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n      count[link.source.index] = (count[link.source.index] || 0) + 1;\n      count[link.target.index] = (count[link.target.index] || 0) + 1;\n    }\n\n    for (i = 0, bias = new Array(m); i < m; ++i) {\n      link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n    }\n\n    strengths = new Array(m), initializeStrength();\n    distances = new Array(m), initializeDistance();\n  }\n\n  function initializeStrength() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      strengths[i] = +strength(links[i], i, links);\n    }\n  }\n\n  function initializeDistance() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      distances[i] = +distance(links[i], i, links);\n    }\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.links = function(_) {\n    return arguments.length ? (links = _, initialize(), force) : links;\n  };\n\n  force.id = function(_) {\n    return arguments.length ? (id = _, force) : id;\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n  };\n\n  force.distance = function(_) {\n    return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n  };\n\n  return force;\n}\n","export default function(x, y) {\n  if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n  var x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1;\n\n  // If the quadtree has no extent, initialize them.\n  // Integer extent are necessary so that if we later double the extent,\n  // the existing quadrant boundaries don’t change due to floating point error!\n  if (isNaN(x0)) {\n    x1 = (x0 = Math.floor(x)) + 1;\n    y1 = (y0 = Math.floor(y)) + 1;\n  }\n\n  // Otherwise, double repeatedly to cover.\n  else {\n    var z = x1 - x0 || 1,\n        node = this._root,\n        parent,\n        i;\n\n    while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n      i = (y < y0) << 1 | (x < x0);\n      parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n      switch (i) {\n        case 0: x1 = x0 + z, y1 = y0 + z; break;\n        case 1: x0 = x1 - z, y1 = y0 + z; break;\n        case 2: x1 = x0 + z, y0 = y1 - z; break;\n        case 3: x0 = x1 - z, y0 = y1 - z; break;\n      }\n    }\n\n    if (this._root && this._root.length) this._root = node;\n  }\n\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  return this;\n}\n","export default function() {\n  var data = [];\n  this.visit(function(node) {\n    if (!node.length) do data.push(node.data); while (node = node.next)\n  });\n  return data;\n}\n","export default function(_) {\n  return arguments.length\n      ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n      : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n  var data,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1,\n      y1,\n      x2,\n      y2,\n      x3 = this._x1,\n      y3 = this._y1,\n      quads = [],\n      node = this._root,\n      q,\n      i;\n\n  if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n  if (radius == null) radius = Infinity;\n  else {\n    x0 = x - radius, y0 = y - radius;\n    x3 = x + radius, y3 = y + radius;\n    radius *= radius;\n  }\n\n  while (q = quads.pop()) {\n\n    // Stop searching if this quadrant can’t contain a closer node.\n    if (!(node = q.node)\n        || (x1 = q.x0) > x3\n        || (y1 = q.y0) > y3\n        || (x2 = q.x1) < x0\n        || (y2 = q.y1) < y0) continue;\n\n    // Bisect the current quadrant.\n    if (node.length) {\n      var xm = (x1 + x2) / 2,\n          ym = (y1 + y2) / 2;\n\n      quads.push(\n        new Quad(node[3], xm, ym, x2, y2),\n        new Quad(node[2], x1, ym, xm, y2),\n        new Quad(node[1], xm, y1, x2, ym),\n        new Quad(node[0], x1, y1, xm, ym)\n      );\n\n      // Visit the closest quadrant first.\n      if (i = (y >= ym) << 1 | (x >= xm)) {\n        q = quads[quads.length - 1];\n        quads[quads.length - 1] = quads[quads.length - 1 - i];\n        quads[quads.length - 1 - i] = q;\n      }\n    }\n\n    // Visit this point. (Visiting coincident points isn’t necessary!)\n    else {\n      var dx = x - +this._x.call(null, node.data),\n          dy = y - +this._y.call(null, node.data),\n          d2 = dx * dx + dy * dy;\n      if (d2 < radius) {\n        var d = Math.sqrt(radius = d2);\n        x0 = x - d, y0 = y - d;\n        x3 = x + d, y3 = y + d;\n        data = node.data;\n      }\n    }\n  }\n\n  return data;\n}\n","export default function(d) {\n  if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n  var parent,\n      node = this._root,\n      retainer,\n      previous,\n      next,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1,\n      x,\n      y,\n      xm,\n      ym,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return this;\n\n  // Find the leaf node for the point.\n  // While descending, also retain the deepest parent with a non-removed sibling.\n  if (node.length) while (true) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n    if (!node.length) break;\n    if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n  }\n\n  // Find the point to remove.\n  while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n  if (next = node.next) delete node.next;\n\n  // If there are multiple coincident points, remove just the point.\n  if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n  // If this is the root point, remove it.\n  if (!parent) return this._root = next, this;\n\n  // Remove this leaf.\n  next ? parent[i] = next : delete parent[i];\n\n  // If the parent now contains exactly one leaf, collapse superfluous parents.\n  if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n      && node === (parent[3] || parent[2] || parent[1] || parent[0])\n      && !node.length) {\n    if (retainer) retainer[j] = node;\n    else this._root = node;\n  }\n\n  return this;\n}\n\nexport function removeAll(data) {\n  for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n  return this;\n}\n","export default function() {\n  return this._root;\n}\n","export default function() {\n  var size = 0;\n  this.visit(function(node) {\n    if (!node.length) do ++size; while (node = node.next)\n  });\n  return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n  if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n      var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n    }\n  }\n  return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], next = [], q;\n  if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    var node = q.node;\n    if (node.length) {\n      var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n    }\n    next.push(q);\n  }\n  while (q = next.pop()) {\n    callback(q.node, q.x0, q.y0, q.x1, q.y1);\n  }\n  return this;\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n  let s = 1;\n  return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n  return d.x;\n}\n\nexport function y(d) {\n  return d.y;\n}\n\nvar initialRadius = 10,\n    initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n  var simulation,\n      alpha = 1,\n      alphaMin = 0.001,\n      alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n      alphaTarget = 0,\n      velocityDecay = 0.6,\n      forces = new Map(),\n      stepper = timer(step),\n      event = dispatch(\"tick\", \"end\"),\n      random = lcg();\n\n  if (nodes == null) nodes = [];\n\n  function step() {\n    tick();\n    event.call(\"tick\", simulation);\n    if (alpha < alphaMin) {\n      stepper.stop();\n      event.call(\"end\", simulation);\n    }\n  }\n\n  function tick(iterations) {\n    var i, n = nodes.length, node;\n\n    if (iterations === undefined) iterations = 1;\n\n    for (var k = 0; k < iterations; ++k) {\n      alpha += (alphaTarget - alpha) * alphaDecay;\n\n      forces.forEach(function(force) {\n        force(alpha);\n      });\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        if (node.fx == null) node.x += node.vx *= velocityDecay;\n        else node.x = node.fx, node.vx = 0;\n        if (node.fy == null) node.y += node.vy *= velocityDecay;\n        else node.y = node.fy, node.vy = 0;\n      }\n    }\n\n    return simulation;\n  }\n\n  function initializeNodes() {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.index = i;\n      if (node.fx != null) node.x = node.fx;\n      if (node.fy != null) node.y = node.fy;\n      if (isNaN(node.x) || isNaN(node.y)) {\n        var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n        node.x = radius * Math.cos(angle);\n        node.y = radius * Math.sin(angle);\n      }\n      if (isNaN(node.vx) || isNaN(node.vy)) {\n        node.vx = node.vy = 0;\n      }\n    }\n  }\n\n  function initializeForce(force) {\n    if (force.initialize) force.initialize(nodes, random);\n    return force;\n  }\n\n  initializeNodes();\n\n  return simulation = {\n    tick: tick,\n\n    restart: function() {\n      return stepper.restart(step), simulation;\n    },\n\n    stop: function() {\n      return stepper.stop(), simulation;\n    },\n\n    nodes: function(_) {\n      return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n    },\n\n    alpha: function(_) {\n      return arguments.length ? (alpha = +_, simulation) : alpha;\n    },\n\n    alphaMin: function(_) {\n      return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n    },\n\n    alphaDecay: function(_) {\n      return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n    },\n\n    alphaTarget: function(_) {\n      return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n    },\n\n    velocityDecay: function(_) {\n      return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n    },\n\n    randomSource: function(_) {\n      return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n    },\n\n    force: function(name, _) {\n      return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n    },\n\n    find: function(x, y, radius) {\n      var i = 0,\n          n = nodes.length,\n          dx,\n          dy,\n          d2,\n          node,\n          closest;\n\n      if (radius == null) radius = Infinity;\n      else radius *= radius;\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        dx = x - node.x;\n        dy = y - node.y;\n        d2 = dx * dx + dy * dy;\n        if (d2 < radius) closest = node, radius = d2;\n      }\n\n      return closest;\n    },\n\n    on: function(name, _) {\n      return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n    }\n  };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n  var nodes,\n      node,\n      random,\n      alpha,\n      strength = constant(-30),\n      strengths,\n      distanceMin2 = 1,\n      distanceMax2 = Infinity,\n      theta2 = 0.81;\n\n  function force(_) {\n    var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n    for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    strengths = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n  }\n\n  function accumulate(quad) {\n    var strength = 0, q, c, weight = 0, x, y, i;\n\n    // For internal nodes, accumulate forces from child quadrants.\n    if (quad.length) {\n      for (x = y = i = 0; i < 4; ++i) {\n        if ((q = quad[i]) && (c = Math.abs(q.value))) {\n          strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n        }\n      }\n      quad.x = x / weight;\n      quad.y = y / weight;\n    }\n\n    // For leaf nodes, accumulate forces from coincident quadrants.\n    else {\n      q = quad;\n      q.x = q.data.x;\n      q.y = q.data.y;\n      do strength += strengths[q.data.index];\n      while (q = q.next);\n    }\n\n    quad.value = strength;\n  }\n\n  function apply(quad, x1, _, x2) {\n    if (!quad.value) return true;\n\n    var x = quad.x - node.x,\n        y = quad.y - node.y,\n        w = x2 - x1,\n        l = x * x + y * y;\n\n    // Apply the Barnes-Hut approximation if possible.\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (w * w / theta2 < l) {\n      if (l < distanceMax2) {\n        if (x === 0) x = jiggle(random), l += x * x;\n        if (y === 0) y = jiggle(random), l += y * y;\n        if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n        node.vx += x * quad.value * alpha / l;\n        node.vy += y * quad.value * alpha / l;\n      }\n      return true;\n    }\n\n    // Otherwise, process points directly.\n    else if (quad.length || l >= distanceMax2) return;\n\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (quad.data !== node || quad.next) {\n      if (x === 0) x = jiggle(random), l += x * x;\n      if (y === 0) y = jiggle(random), l += y * y;\n      if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n    }\n\n    do if (quad.data !== node) {\n      w = strengths[quad.data.index] * alpha / l;\n      node.vx += x * w;\n      node.vy += y * w;\n    } while (quad = quad.next);\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.distanceMin = function(_) {\n    return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n  };\n\n  force.distanceMax = function(_) {\n    return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n  };\n\n  force.theta = function(_) {\n    return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(radius, x, y) {\n  var nodes,\n      strength = constant(0.1),\n      strengths,\n      radiuses;\n\n  if (typeof radius !== \"function\") radius = constant(+radius);\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length; i < n; ++i) {\n      var node = nodes[i],\n          dx = node.x - x || 1e-6,\n          dy = node.y - y || 1e-6,\n          r = Math.sqrt(dx * dx + dy * dy),\n          k = (radiuses[i] - r) * strengths[i] * alpha / r;\n      node.vx += dx * k;\n      node.vy += dy * k;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    radiuses = new Array(n);\n    for (i = 0; i < n; ++i) {\n      radiuses[i] = +radius(nodes[i], i, nodes);\n      strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _, initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(x) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      xz;\n\n  if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    xz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(y) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      yz;\n\n  if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    yz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n  };\n\n  return force;\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","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 {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","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","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","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\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","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\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\nexport function haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n}\n","import {Adder} from \"d3-array\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = new Adder();\n\n// hello?\n\nvar areaSum = new Adder(),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nexport var areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaRingSum = new Adder();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = noop;\n  },\n  sphere: function() {\n    areaSum.add(tau);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = cos(phi),\n      sinPhi = sin(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * cos(adLambda),\n      v = k * sdLambda * sin(adLambda);\n  areaRingSum.add(atan2(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n  areaSum = new Adder();\n  stream(object, areaStream);\n  return areaSum * 2;\n}\n","import {Adder} from \"d3-array\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum,\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum = new Adder();\n    areaStream.polygonStart();\n  },\n  polygonEnd: function() {\n    areaStream.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > epsilon) phi1 = 90;\n    else if (deltaSum < -epsilon) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  },\n  sphere: function() {\n    lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = cartesian([lambda * radians, phi * radians]);\n  if (p0) {\n    var normal = cartesianCross(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = cartesianCross(equatorial, normal);\n    cartesianNormalizeInPlace(inflection);\n    inflection = spherical(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * degrees * sign,\n        phii,\n        antimeridian = abs(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * degrees;\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * degrees;\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  areaStream.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  areaStream.lineEnd();\n  if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  stream(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n  return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n  return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n  var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import {Adder} from \"d3-array\";\nimport {asin, atan2, cos, degrees, epsilon, epsilon2, hypot, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n    X0, Y0, Z0,\n    X1, Y1, Z1,\n    X2, Y2, Z2,\n    lambda00, phi00, // first point\n    x0, y0, z0; // previous point\n\nvar centroidStream = {\n  sphere: noop,\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00, phi00);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = hypot(cx, cy, cz),\n      w = asin(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2.add(v * cx);\n  Y2.add(v * cy);\n  Z2.add(v * cz);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 = 0;\n  X2 = new Adder();\n  Y2 = new Adder();\n  Z2 = new Adder();\n  stream(object, centroidStream);\n\n  var x = +X2,\n      y = +Y2,\n      z = +Z2,\n      m = hypot(x, y, z);\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m < epsilon2) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n    m = hypot(x, y, z);\n    // If the feature still has an undefined ccentroid, then return.\n    if (m < epsilon2) return [NaN, NaN];\n  }\n\n  return [atan2(y, x) * degrees, asin(z / m) * degrees];\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert && b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n  };\n\n  return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n  if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n  return [lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    lambda += deltaLambda;\n    if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n    return [lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = cos(deltaPhi),\n      sinDeltaPhi = sin(deltaPhi),\n      cosDeltaGamma = cos(deltaGamma),\n      sinDeltaGamma = sin(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      asin(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      asin(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\nexport default function(rotate) {\n  rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  };\n\n  return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = cos(radius),\n      sinRadius = sin(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * tau;\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = cartesian(point), point[0] -= cosRadius;\n  cartesianNormalizeInPlace(point);\n  var radius = acos(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n  var center = constant([0, 0]),\n      radius = constant(90),\n      precision = constant(2),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= degrees, x[1] *= degrees;\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * radians,\n        p = precision.apply(this, arguments) * radians;\n    ring = [];\n    rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n  };\n\n  return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y, m) {\n      line.push([x, y, m]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: noop,\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n  return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    if (pointEqual(p0, p1)) {\n      if (!p0[2] && !p1[2]) {\n        stream.lineStart();\n        for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n        stream.lineEnd();\n        return;\n      }\n      // handle degenerate cases by moving the point\n      p1[0] += 2 * epsilon;\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n","import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n  return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n  var lambda = longitude(point),\n      phi = point[1],\n      sinPhi = sin(phi),\n      normal = [sin(lambda), -cos(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  var sum = new Adder();\n\n  if (sinPhi === 1) phi = halfPi + epsilon;\n  else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = longitude(point0),\n        phi0 = point0[1] / 2 + quarterPi,\n        sinPhi0 = sin(phi0),\n        cosPhi0 = cos(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = longitude(point1),\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin(phi1),\n          cosPhi1 = cos(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n      angle += antimeridian ? delta + sign * tau : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n  return function(sink) {\n    var line = clipLine(sink),\n        ringBuffer = clipBuffer(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = merge(segments);\n        var startInside = polygonContains(polygon, start);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      line.point(lambda, phi);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      ringSink.point(lambda, phi);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n}\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? pi : -pi,\n          delta = abs(lambda1 - lambda0);\n      if (abs(delta - pi) < epsilon) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n        if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n        if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = sin(lambda0 - lambda1);\n  return abs(sinLambda0Lambda1) > epsilon\n      ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n          - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * halfPi;\n    stream.point(-pi, phi);\n    stream.point(0, phi);\n    stream.point(pi, phi);\n    stream.point(pi, 0);\n    stream.point(pi, -phi);\n    stream.point(0, -phi);\n    stream.point(-pi, -phi);\n    stream.point(-pi, 0);\n    stream.point(-pi, phi);\n  } else if (abs(from[0] - to[0]) > epsilon) {\n    var lambda = from[0] < to[0] ? pi : -pi;\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n  var cr = cos(radius),\n      delta = 2 * radians,\n      smallRadius = cr > 0,\n      notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    circleStream(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return cos(lambda) * cos(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n            point1[2] = 1;\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1], 2);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1], 3);\n            }\n          }\n        }\n        if (v && (!point0 || !pointEqual(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = cartesian(a),\n        pb = cartesian(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = cartesianCross(pa, pb),\n        n2n2 = cartesianDot(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = cartesianCross(n1, n2),\n        A = cartesianScale(n1, c1),\n        B = cartesianScale(n2, c2);\n    cartesianAddInPlace(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = cartesianDot(A, u),\n        uu = cartesianDot(u, u),\n        t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = sqrt(t2),\n        q = cartesianScale(u, (-w - t) / uu);\n    cartesianAddInPlace(q, A);\n    q = spherical(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = abs(delta - pi) < epsilon,\n        meridian = polar || delta < epsilon;\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = cartesianScale(u, (-w + t) / uu);\n      cartesianAddInPlace(q1, A);\n      return [q, spherical(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : pi - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n        : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n        : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = clipBuffer(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = merge(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (clipLine(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n","import {Adder} from \"d3-array\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum,\n    lambda0,\n    sinPhi0,\n    cosPhi0;\n\nvar lengthStream = {\n  sphere: noop,\n  point: noop,\n  lineStart: lengthLineStart,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var sinPhi = sin(phi),\n      cosPhi = cos(phi),\n      delta = abs(lambda - lambda0),\n      cosDelta = cos(delta),\n      sinDelta = sin(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n  lengthSum.add(atan2(sqrt(x * x + y * y), z));\n  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n  lengthSum = new Adder();\n  stream(object, lengthStream);\n  return +lengthSum;\n}\n","export default function(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n  var x0 = 0,\n      y0 = 0,\n      x1 = 960,\n      y1 = 500,\n      cache,\n      cacheStream,\n      clip;\n\n  return clip = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n    },\n    extent: function(_) {\n      return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n    }\n  };\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n    object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n  coordinates[0] = a;\n  coordinates[1] = b;\n  return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n  Feature: function(object, point) {\n    return containsGeometry(object.geometry, point);\n  },\n  FeatureCollection: function(object, point) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n    return false;\n  }\n};\n\nvar containsGeometryType = {\n  Sphere: function() {\n    return true;\n  },\n  Point: function(object, point) {\n    return containsPoint(object.coordinates, point);\n  },\n  MultiPoint: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n    return false;\n  },\n  LineString: function(object, point) {\n    return containsLine(object.coordinates, point);\n  },\n  MultiLineString: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsLine(coordinates[i], point)) return true;\n    return false;\n  },\n  Polygon: function(object, point) {\n    return containsPolygon(object.coordinates, point);\n  },\n  MultiPolygon: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n    return false;\n  },\n  GeometryCollection: function(object, point) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n    return false;\n  }\n};\n\nfunction containsGeometry(geometry, point) {\n  return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n      ? containsGeometryType[geometry.type](geometry, point)\n      : false;\n}\n\nfunction containsPoint(coordinates, point) {\n  return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n  var ao, bo, ab;\n  for (var i = 0, n = coordinates.length; i < n; i++) {\n    bo = distance(coordinates[i], point);\n    if (bo === 0) return true;\n    if (i > 0) {\n      ab = distance(coordinates[i], coordinates[i - 1]);\n      if (\n        ab > 0 &&\n        ao <= ab &&\n        bo <= ab &&\n        (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n      )\n        return true;\n    }\n    ao = bo;\n  }\n  return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n  return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n  return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n  return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n  return (object && containsObjectType.hasOwnProperty(object.type)\n      ? containsObjectType[object.type]\n      : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n  var y = range(y0, y1 - epsilon, dy).concat(y1);\n  return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n  var x = range(x0, x1 - epsilon, dx).concat(x1);\n  return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n  var x1, x0, X1, X0,\n      y1, y0, Y1, Y0,\n      dx = 10, dy = dx, DX = 90, DY = 360,\n      x, y, X, Y,\n      precision = 2.5;\n\n  function graticule() {\n    return {type: \"MultiLineString\", coordinates: lines()};\n  }\n\n  function lines() {\n    return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n        .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n        .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n        .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n  }\n\n  graticule.lines = function() {\n    return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n  };\n\n  graticule.outline = function() {\n    return {\n      type: \"Polygon\",\n      coordinates: [\n        X(X0).concat(\n        Y(Y1).slice(1),\n        X(X1).reverse().slice(1),\n        Y(Y0).reverse().slice(1))\n      ]\n    };\n  };\n\n  graticule.extent = function(_) {\n    if (!arguments.length) return graticule.extentMinor();\n    return graticule.extentMajor(_).extentMinor(_);\n  };\n\n  graticule.extentMajor = function(_) {\n    if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n    X0 = +_[0][0], X1 = +_[1][0];\n    Y0 = +_[0][1], Y1 = +_[1][1];\n    if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n    if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.extentMinor = function(_) {\n    if (!arguments.length) return [[x0, y0], [x1, y1]];\n    x0 = +_[0][0], x1 = +_[1][0];\n    y0 = +_[0][1], y1 = +_[1][1];\n    if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n    if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.step = function(_) {\n    if (!arguments.length) return graticule.stepMinor();\n    return graticule.stepMajor(_).stepMinor(_);\n  };\n\n  graticule.stepMajor = function(_) {\n    if (!arguments.length) return [DX, DY];\n    DX = +_[0], DY = +_[1];\n    return graticule;\n  };\n\n  graticule.stepMinor = function(_) {\n    if (!arguments.length) return [dx, dy];\n    dx = +_[0], dy = +_[1];\n    return graticule;\n  };\n\n  graticule.precision = function(_) {\n    if (!arguments.length) return precision;\n    precision = +_;\n    x = graticuleX(y0, y1, 90);\n    y = graticuleY(x0, x1, precision);\n    X = graticuleX(Y0, Y1, 90);\n    Y = graticuleY(X0, X1, precision);\n    return graticule;\n  };\n\n  return graticule\n      .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n      .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n  return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n  var x0 = a[0] * radians,\n      y0 = a[1] * radians,\n      x1 = b[0] * radians,\n      y1 = b[1] * radians,\n      cy0 = cos(y0),\n      sy0 = sin(y0),\n      cy1 = cos(y1),\n      sy1 = sin(y1),\n      kx0 = cy0 * cos(x0),\n      ky0 = cy0 * sin(x0),\n      kx1 = cy1 * cos(x1),\n      ky1 = cy1 * sin(x1),\n      d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n      k = sin(d);\n\n  var interpolate = d ? function(t) {\n    var B = sin(t *= d) / k,\n        A = sin(d - t) / k,\n        x = A * kx0 + B * kx1,\n        y = A * ky0 + B * ky1,\n        z = A * sy0 + B * sy1;\n    return [\n      atan2(y, x) * degrees,\n      atan2(z, sqrt(x * x + y * y)) * degrees\n    ];\n  } : function() {\n    return [x0 * degrees, y0 * degrees];\n  };\n\n  interpolate.distance = d;\n\n  return interpolate;\n}\n","export default x => x;\n","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n    areaRingSum = new Adder(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n    areaSum.add(abs(areaRingSum));\n    areaRingSum = new Adder();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum = new Adder();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop,\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x < x0) x0 = x;\n  if (x > x1) x1 = x;\n  if (y < y0) y0 = y;\n  if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n    Y0 = 0,\n    Z0 = 0,\n    X1 = 0,\n    Y1 = 0,\n    Z1 = 0,\n    X2 = 0,\n    Y2 = 0,\n    Z2 = 0,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar centroidStream = {\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.point = centroidPoint;\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  },\n  result: function() {\n    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n        : Z1 ? [X1 / Z1, Y1 / Z1]\n        : Z0 ? [X0 / Z0, Y0 / Z0]\n        : [NaN, NaN];\n    X0 = Y0 = Z0 =\n    X1 = Y1 = Z1 =\n    X2 = Y2 = Z2 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint(x, y) {\n  X0 += x;\n  Y0 += y;\n  ++Z0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream.point = centroidPointLine;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n  centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n  centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream.point = centroidPointRing;\n  centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - x0,\n      dy = y - y0,\n      z = sqrt(dx * dx + dy * dy);\n\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n\n  z = y0 * x - x0 * y;\n  X2 += z * (x0 + x);\n  Y2 += z * (y0 + y);\n  Z2 += z * 3;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, tau);\n        break;\n      }\n    }\n  },\n  result: noop\n};\n","import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: noop,\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = noop;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum = new Adder();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","// Simple caching for constant-radius points.\nlet cacheDigits, cacheAppend, cacheRadius, cacheCircle;\n\nexport default class PathString {\n  constructor(digits) {\n    this._append = digits == null ? append : appendRound(digits);\n    this._radius = 4.5;\n    this._ = \"\";\n  }\n  pointRadius(_) {\n    this._radius = +_;\n    return this;\n  }\n  polygonStart() {\n    this._line = 0;\n  }\n  polygonEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line === 0) this._ += \"Z\";\n    this._point = NaN;\n  }\n  point(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._append`M${x},${y}`;\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._append`L${x},${y}`;\n        break;\n      }\n      default: {\n        this._append`M${x},${y}`;\n        if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n          const r = this._radius;\n          const s = this._;\n          this._ = \"\"; // stash the old string so we can cache the circle path fragment\n          this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`;\n          cacheRadius = r;\n          cacheAppend = this._append;\n          cacheCircle = this._;\n          this._ = s;\n        }\n        this._ += cacheCircle;\n        break;\n      }\n    }\n  }\n  result() {\n    const result = this._;\n    this._ = \"\";\n    return result.length ? result : null;\n  }\n}\n\nfunction append(strings) {\n  let i = 1;\n  this._ += strings[0];\n  for (const j = strings.length; i < j; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  const d = Math.floor(digits);\n  if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`);\n  if (d > 15) return append;\n  if (d !== cacheDigits) {\n    const k = 10 ** d;\n    cacheDigits = d;\n    cacheAppend = function append(strings) {\n      let i = 1;\n      this._ += strings[0];\n      for (const j = strings.length; i < j; ++i) {\n        this._ += Math.round(arguments[i] * k) / k + strings[i];\n      }\n    };\n  }\n  return cacheAppend;\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n  let digits = 3,\n      pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      stream(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    stream(object, projectionStream(pathArea));\n    return pathArea.result();\n  };\n\n  path.measure = function(object) {\n    stream(object, projectionStream(pathMeasure));\n    return pathMeasure.result();\n  };\n\n  path.bounds = function(object) {\n    stream(object, projectionStream(pathBounds));\n    return pathBounds.result();\n  };\n\n  path.centroid = function(object) {\n    stream(object, projectionStream(pathCentroid));\n    return pathCentroid.result();\n  };\n\n  path.projection = function(_) {\n    if (!arguments.length) return projection;\n    projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n    return path;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  path.digits = function(_) {\n    if (!arguments.length) return digits;\n    if (_ == null) digits = null;\n    else {\n      const d = Math.floor(_);\n      if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n      digits = d;\n    }\n    if (context === null) contextStream = new PathString(digits);\n    return path;\n  };\n\n  return path.projection(projection).digits(digits).context(context);\n}\n","export default function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nexport function transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n  var clip = projection.clipExtent && projection.clipExtent();\n  projection.scale(150).translate([0, 0]);\n  if (clip != null) projection.clipExtent(null);\n  geoStream(object, projection.stream(boundsStream));\n  fitBounds(boundsStream.result());\n  if (clip != null) projection.clipExtent(clip);\n  return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n  return fit(projection, function(b) {\n    var w = extent[1][0] - extent[0][0],\n        h = extent[1][1] - extent[0][1],\n        k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n        x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n        y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n  return fit(projection, function(b) {\n    var w = +width,\n        k = w / (b[1][0] - b[0][0]),\n        x = (w - k * (b[1][0] + b[0][0])) / 2,\n        y = -k * b[0][1];\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n  return fit(projection, function(b) {\n    var h = +height,\n        k = h / (b[1][1] - b[0][1]),\n        x = -k * b[0][0],\n        y = (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return transformer({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = sqrt(a * a + b * b + c * c),\n          phi2 = asin(c /= m),\n          lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = cartesian([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n  point: function(x, y) {\n    this.stream.point(x * radians, y * radians);\n  }\n});\n\nfunction transformRotate(rotate) {\n  return transformer({\n    point: function(x, y) {\n      var r = rotate(x, y);\n      return this.stream.point(r[0], r[1]);\n    }\n  });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [dx + k * x, dy - k * y];\n  }\n  transform.invert = function(x, y) {\n    return [(x - dx) / k * sx, (dy - y) / k * sy];\n  };\n  return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n  if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n  var cosAlpha = cos(alpha),\n      sinAlpha = sin(alpha),\n      a = cosAlpha * k,\n      b = sinAlpha * k,\n      ai = cosAlpha / k,\n      bi = sinAlpha / k,\n      ci = (sinAlpha * dy - cosAlpha * dx) / k,\n      fi = (sinAlpha * dx + cosAlpha * dy) / k;\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [a * x - b * y + dx, dy - b * x - a * y];\n  }\n  transform.invert = function(x, y) {\n    return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n  };\n  return transform;\n}\n\nexport default function projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n      alpha = 0, // post-rotate angle\n      sx = 1, // reflectX\n      sy = 1, // reflectX\n      theta = null, preclip = clipAntimeridian, // pre-clip angle\n      x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n      delta2 = 0.5, // precision\n      projectResample,\n      projectTransform,\n      projectRotateTransform,\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    return projectRotateTransform(point[0] * radians, point[1] * radians);\n  }\n\n  function invert(point) {\n    point = projectRotateTransform.invert(point[0], point[1]);\n    return point && [point[0] * degrees, point[1] * degrees];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n  };\n\n  projection.preclip = function(_) {\n    return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n  };\n\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n  };\n\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n  };\n\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n  };\n\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  function recenter() {\n    var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n        transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n    rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n    projectTransform = compose(project, transform);\n    projectRotateTransform = compose(rotate, projectTransform);\n    projectResample = resample(projectTransform, delta2);\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = pi / 3,\n      m = projectionMutator(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n  };\n\n  return p;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n  var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n  function project(x, y) {\n    var r = sqrt(c - 2 * n * sin(y)) / n;\n    return [r * sin(x *= n), r0 - r * cos(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y,\n        l = atan2(x, abs(r0y)) * sign(r0y);\n    if (r0y * n < 0)\n      l -= pi * sign(x) * sign(r0y);\n    return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = cos(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, sin(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, asin(y * cosPhi0)];\n  };\n\n  return forward;\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n  return conicEqualArea()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n  var cache,\n      cacheStream,\n      lower48 = albers(), lower48Point,\n      alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null,\n        (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return fitExtent(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return fitSize(albersUsa, size, object);\n  };\n\n  albersUsa.fitWidth = function(width, object) {\n    return fitWidth(albersUsa, width, object);\n  };\n\n  albersUsa.fitHeight = function(height, object) {\n    return fitHeight(albersUsa, height, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos(x),\n        cy = cos(y),\n        k = scale(cx * cy);\n        if (k === Infinity) return [2, 0];\n    return [\n      k * cy * sin(x),\n      k * sin(y)\n    ];\n  }\n}\n\nexport function azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin(c),\n        cc = cos(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z && y * sc / z)\n    ];\n  }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n  return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n  return 2 * asin(z / 2);\n});\n\nexport default function() {\n  return projection(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n  return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n  return z;\n});\n\nexport default function() {\n  return projection(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n  return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n  var m = projection(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = pi * scale(),\n        t = m(rotation(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n  return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n      f = cy0 * pow(tany(y0), n) / n;\n\n  if (!n) return mercatorRaw;\n\n  function project(x, y) {\n    if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n    else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n    var r = f / pow(tany(y), n);\n    return [r * sin(n * x), f - r * cos(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n      l = atan2(x, abs(fy)) * sign(fy);\n    if (fy * n < 0)\n      l -= pi * sign(x) * sign(fy);\n    return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n  return projection(equirectangularRaw)\n      .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if (abs(n) < epsilon) return equirectangularRaw;\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * sin(nx), g - gy * cos(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y,\n        l = atan2(x, abs(gy)) * sign(gy);\n    if (gy * n < 0)\n      l -= pi * sign(x) * sign(gy);\n    return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n    A2 = -0.081106,\n    A3 = 0.000893,\n    A4 = 0.003796,\n    M = sqrt(3) / 2,\n    iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n  var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n  return [\n    lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n    l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n  ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n  var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n  for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n    fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n    fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n    l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n    if (abs(delta) < epsilon2) break;\n  }\n  return [\n    M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n    asin(sin(l) / M)\n  ];\n};\n\nexport default function() {\n  return projection(equalEarthRaw)\n      .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n  var cy = cos(y), k = cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n  return projection(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n      alpha = 0, ca, sa, // angle\n      x0 = null, y0, x1, y1, // clip extent\n      kx = 1, ky = 1,\n      transform = transformer({\n        point: function(x, y) {\n          var p = projection([x, y])\n          this.stream.point(p[0], p[1]);\n        }\n      }),\n      postclip = identity,\n      cache,\n      cacheStream;\n\n  function reset() {\n    kx = k * sx;\n    ky = k * sy;\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  function projection (p) {\n    var x = p[0] * kx, y = p[1] * ky;\n    if (alpha) {\n      var t = y * ca - x * sa;\n      x = x * ca + y * sa;\n      y = t;\n    }    \n    return [x + tx, y + ty];\n  }\n  projection.invert = function(p) {\n    var x = p[0] - tx, y = p[1] - ty;\n    if (alpha) {\n      var t = y * ca + x * sa;\n      x = x * ca - y * sa;\n      y = t;\n    }\n    return [x / kx, y / ky];\n  };\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n  };\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, reset()) : k;\n  };\n  projection.translate = function(_) {\n    return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n  }\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n  };\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n  };\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n  };\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  return projection;\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2;\n  return [\n    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n  ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta;\n  do {\n    var phi2 = phi * phi, phi4 = phi2 * phi2;\n    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n  } while (abs(delta) > epsilon && --i > 0);\n  return [\n    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n    phi\n  ];\n};\n\nexport default function() {\n  return projection(naturalEarth1Raw)\n      .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n  return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n  return projection(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n  var cy = cos(y), k = 1 + cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n  return 2 * atan(z);\n});\n\nexport default function() {\n  return projection(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n  return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n  var m = mercatorProjection(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n  return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n  return x + c.x;\n}\n\nfunction maxY(children) {\n  return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n  return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n  var children;\n  while (children = node.children) node = children[0];\n  return node;\n}\n\nfunction leafRight(node) {\n  var children;\n  while (children = node.children) node = children[children.length - 1];\n  return node;\n}\n\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = false;\n\n  function cluster(root) {\n    var previousNode,\n        x = 0;\n\n    // First walk, computing the initial x & y values.\n    root.eachAfter(function(node) {\n      var children = node.children;\n      if (children) {\n        node.x = meanX(children);\n        node.y = maxY(children);\n      } else {\n        node.x = previousNode ? x += separation(node, previousNode) : 0;\n        node.y = 0;\n        previousNode = node;\n      }\n    });\n\n    var left = leafLeft(root),\n        right = leafRight(root),\n        x0 = left.x - separation(left, right) / 2,\n        x1 = right.x + separation(right, left) / 2;\n\n    // Second walk, normalizing x & y to the desired size.\n    return root.eachAfter(nodeSize ? function(node) {\n      node.x = (node.x - root.x) * dx;\n      node.y = (root.y - node.y) * dy;\n    } : function(node) {\n      node.x = (node.x - x0) / (x1 - x0) * dx;\n      node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n    });\n  }\n\n  cluster.separation = function(x) {\n    return arguments.length ? (separation = x, cluster) : separation;\n  };\n\n  cluster.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n  };\n\n  cluster.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return cluster;\n}\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_find from \"./find.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\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n  if (data instanceof Map) {\n    data = [undefined, data];\n    if (children === undefined) children = mapChildren;\n  } else if (children === undefined) {\n    children = objectChildren;\n  }\n\n  var root = new Node(data),\n      node,\n      nodes = [root],\n      child,\n      childs,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n      node.children = childs;\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = childs[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 objectChildren(d) {\n  return d.children;\n}\n\nfunction mapChildren(d) {\n  return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n  if (node.data.value !== undefined) node.value = node.data.value;\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  find: node_find,\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  [Symbol.iterator]: node_iterator\n};\n","export function optional(f) {\n  return f == null ? null : required(f);\n}\n\nexport function required(f) {\n  if (typeof f !== \"function\") throw new Error;\n  return f;\n}\n","export function constantZero() {\n  return 0;\n}\n\nexport default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(callback, that) {\n  let index = -1;\n  for (const node of this) {\n    callback.call(that, node, ++index, this);\n  }\n  return this;\n}\n","export default function(callback, that) {\n  var node = this, nodes = [node], next = [], children, i, n, index = -1;\n  while (node = nodes.pop()) {\n    next.push(node);\n    if (children = node.children) {\n      for (i = 0, n = children.length; i < n; ++i) {\n        nodes.push(children[i]);\n      }\n    }\n  }\n  while (node = next.pop()) {\n    callback.call(that, node, ++index, this);\n  }\n  return this;\n}\n","export default function(callback, that) {\n  var node = this, nodes = [node], children, i, index = -1;\n  while (node = nodes.pop()) {\n    callback.call(that, node, ++index, this);\n    if (children = node.children) {\n      for (i = children.length - 1; i >= 0; --i) {\n        nodes.push(children[i]);\n      }\n    }\n  }\n  return this;\n}\n","export default function(callback, that) {\n  let index = -1;\n  for (const node of this) {\n    if (callback.call(that, node, ++index, this)) {\n      return node;\n    }\n  }\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  return Array.from(this);\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*() {\n  var node = this, current, next = [node], children, i, n;\n  do {\n    current = next.reverse(), next = [];\n    while (node = current.pop()) {\n      yield node;\n      if (children = node.children) {\n        for (i = 0, n = children.length; i < n; ++i) {\n          next.push(children[i]);\n        }\n      }\n    }\n  } while (next.length);\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n  let s = 1;\n  return () => (s = (a * s + c) % m) / m;\n}\n","import {shuffle} from \"../array.js\";\nimport lcg from \"../lcg.js\";\n\nexport default function(circles) {\n  return packEncloseRandom(circles, lcg());\n}\n\nexport function packEncloseRandom(circles, random) {\n  var i = 0, n = (circles = shuffle(Array.from(circles), random)).length, B = [], p, e;\n\n  while (i < n) {\n    p = circles[i];\n    if (e && enclosesWeak(e, p)) ++i;\n    else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n  }\n\n  return e;\n}\n\nfunction extendBasis(B, p) {\n  var i, j;\n\n  if (enclosesWeakAll(p, B)) return [p];\n\n  // If we get here then B must have at least one element.\n  for (i = 0; i < B.length; ++i) {\n    if (enclosesNot(p, B[i])\n        && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n      return [B[i], p];\n    }\n  }\n\n  // If we get here then B must have at least two elements.\n  for (i = 0; i < B.length - 1; ++i) {\n    for (j = i + 1; j < B.length; ++j) {\n      if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n          && enclosesNot(encloseBasis2(B[i], p), B[j])\n          && enclosesNot(encloseBasis2(B[j], p), B[i])\n          && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n        return [B[i], B[j], p];\n      }\n    }\n  }\n\n  // If we get here then something is very wrong.\n  throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n  var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n  return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n  var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n  for (var i = 0; i < B.length; ++i) {\n    if (!enclosesWeak(a, B[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction encloseBasis(B) {\n  switch (B.length) {\n    case 1: return encloseBasis1(B[0]);\n    case 2: return encloseBasis2(B[0], B[1]);\n    case 3: return encloseBasis3(B[0], B[1], B[2]);\n  }\n}\n\nfunction encloseBasis1(a) {\n  return {\n    x: a.x,\n    y: a.y,\n    r: a.r\n  };\n}\n\nfunction encloseBasis2(a, b) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n      l = Math.sqrt(x21 * x21 + y21 * y21);\n  return {\n    x: (x1 + x2 + x21 / l * r21) / 2,\n    y: (y1 + y2 + y21 / l * r21) / 2,\n    r: (l + r1 + r2) / 2\n  };\n}\n\nfunction encloseBasis3(a, b, c) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x3 = c.x, y3 = c.y, r3 = c.r,\n      a2 = x1 - x2,\n      a3 = x1 - x3,\n      b2 = y1 - y2,\n      b3 = y1 - y3,\n      c2 = r2 - r1,\n      c3 = r3 - r1,\n      d1 = x1 * x1 + y1 * y1 - r1 * r1,\n      d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n      d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n      ab = a3 * b2 - a2 * b3,\n      xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n      xb = (b3 * c2 - b2 * c3) / ab,\n      ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n      yb = (a2 * c3 - a3 * c2) / ab,\n      A = xb * xb + yb * yb - 1,\n      B = 2 * (r1 + xa * xb + ya * yb),\n      C = xa * xa + ya * ya - r1 * r1,\n      r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n  return {\n    x: x1 + xa + xb * r,\n    y: y1 + ya + yb * r,\n    r: r\n  };\n}\n","export default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array, random) {\n  let m = array.length,\n      t,\n      i;\n\n  while (m) {\n    i = random() * m-- | 0;\n    t = array[m];\n    array[m] = array[i];\n    array[i] = t;\n  }\n\n  return array;\n}\n","import array from \"../array.js\";\nimport lcg from \"../lcg.js\";\nimport {packEncloseRandom} from \"./enclose.js\";\n\nfunction place(b, a, c) {\n  var dx = b.x - a.x, x, a2,\n      dy = b.y - a.y, y, b2,\n      d2 = dx * dx + dy * dy;\n  if (d2) {\n    a2 = a.r + c.r, a2 *= a2;\n    b2 = b.r + c.r, b2 *= b2;\n    if (a2 > b2) {\n      x = (d2 + b2 - a2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n      c.x = b.x - x * dx - y * dy;\n      c.y = b.y - x * dy + y * dx;\n    } else {\n      x = (d2 + a2 - b2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n      c.x = a.x + x * dx - y * dy;\n      c.y = a.y + x * dy + y * dx;\n    }\n  } else {\n    c.x = a.x + c.r;\n    c.y = a.y;\n  }\n}\n\nfunction intersects(a, b) {\n  var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n  var a = node._,\n      b = node.next._,\n      ab = a.r + b.r,\n      dx = (a.x * b.r + b.x * a.r) / ab,\n      dy = (a.y * b.r + b.y * a.r) / ab;\n  return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n  this._ = circle;\n  this.next = null;\n  this.previous = null;\n}\n\nexport function packSiblingsRandom(circles, random) {\n  if (!(n = (circles = array(circles)).length)) return 0;\n\n  var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n  // Place the first circle.\n  a = circles[0], a.x = 0, a.y = 0;\n  if (!(n > 1)) return a.r;\n\n  // Place the second circle.\n  b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n  if (!(n > 2)) return a.r + b.r;\n\n  // Place the third circle.\n  place(b, a, c = circles[2]);\n\n  // Initialize the front-chain using the first three circles a, b and c.\n  a = new Node(a), b = new Node(b), c = new Node(c);\n  a.next = c.previous = b;\n  b.next = a.previous = c;\n  c.next = b.previous = a;\n\n  // Attempt to place each remaining circle…\n  pack: for (i = 3; i < n; ++i) {\n    place(a._, b._, c = circles[i]), c = new Node(c);\n\n    // Find the closest intersecting circle on the front-chain, if any.\n    // “Closeness” is determined by linear distance along the front-chain.\n    // “Ahead” or “behind” is likewise determined by linear distance.\n    j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n    do {\n      if (sj <= sk) {\n        if (intersects(j._, c._)) {\n          b = j, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sj += j._.r, j = j.next;\n      } else {\n        if (intersects(k._, c._)) {\n          a = k, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sk += k._.r, k = k.previous;\n      }\n    } while (j !== k.next);\n\n    // Success! Insert the new circle c between a and b.\n    c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n    // Compute the new closest circle pair to the centroid.\n    aa = score(a);\n    while ((c = c.next) !== b) {\n      if ((ca = score(c)) < aa) {\n        a = c, aa = ca;\n      }\n    }\n    b = a.next;\n  }\n\n  // Compute the enclosing circle of the front chain.\n  a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = packEncloseRandom(a, random);\n\n  // Translate the circles to put the enclosing circle around the origin.\n  for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n  return c.r;\n}\n\nexport default function(circles) {\n  packSiblingsRandom(circles, lcg());\n  return circles;\n}\n","import {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\nimport lcg from \"../lcg.js\";\nimport {packSiblingsRandom} from \"./siblings.js\";\n\nfunction defaultRadius(d) {\n  return Math.sqrt(d.value);\n}\n\nexport default function() {\n  var radius = null,\n      dx = 1,\n      dy = 1,\n      padding = constantZero;\n\n  function pack(root) {\n    const random = lcg();\n    root.x = dx / 2, root.y = dy / 2;\n    if (radius) {\n      root.eachBefore(radiusLeaf(radius))\n          .eachAfter(packChildrenRandom(padding, 0.5, random))\n          .eachBefore(translateChild(1));\n    } else {\n      root.eachBefore(radiusLeaf(defaultRadius))\n          .eachAfter(packChildrenRandom(constantZero, 1, random))\n          .eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random))\n          .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n    }\n    return root;\n  }\n\n  pack.radius = function(x) {\n    return arguments.length ? (radius = optional(x), pack) : radius;\n  };\n\n  pack.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n  };\n\n  pack.padding = function(x) {\n    return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n  };\n\n  return pack;\n}\n\nfunction radiusLeaf(radius) {\n  return function(node) {\n    if (!node.children) {\n      node.r = Math.max(0, +radius(node) || 0);\n    }\n  };\n}\n\nfunction packChildrenRandom(padding, k, random) {\n  return function(node) {\n    if (children = node.children) {\n      var children,\n          i,\n          n = children.length,\n          r = padding(node) * k || 0,\n          e;\n\n      if (r) for (i = 0; i < n; ++i) children[i].r += r;\n      e = packSiblingsRandom(children, random);\n      if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n      node.r = e + r;\n    }\n  };\n}\n\nfunction translateChild(k) {\n  return function(node) {\n    var parent = node.parent;\n    node.r *= k;\n    if (parent) {\n      node.x = parent.x + k * node.x;\n      node.y = parent.y + k * node.y;\n    }\n  };\n}\n","export default function(node) {\n  node.x0 = Math.round(node.x0);\n  node.y0 = Math.round(node.y0);\n  node.x1 = Math.round(node.x1);\n  node.y1 = Math.round(node.y1);\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","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n  var dx = 1,\n      dy = 1,\n      padding = 0,\n      round = false;\n\n  function partition(root) {\n    var n = root.height + 1;\n    root.x0 =\n    root.y0 = padding;\n    root.x1 = dx;\n    root.y1 = dy / n;\n    root.eachBefore(positionNode(dy, n));\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(dy, n) {\n    return function(node) {\n      if (node.children) {\n        treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n      }\n      var x0 = node.x0,\n          y0 = node.y0,\n          x1 = node.x1 - padding,\n          y1 = node.y1 - padding;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      node.x0 = x0;\n      node.y0 = y0;\n      node.x1 = x1;\n      node.y1 = y1;\n    };\n  }\n\n  partition.round = function(x) {\n    return arguments.length ? (round = !!x, partition) : round;\n  };\n\n  partition.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n  };\n\n  partition.padding = function(x) {\n    return arguments.length ? (padding = +x, partition) : padding;\n  };\n\n  return partition;\n}\n","import {optional} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar preroot = {depth: -1},\n    ambiguous = {},\n    imputed = {};\n\nfunction defaultId(d) {\n  return d.id;\n}\n\nfunction defaultParentId(d) {\n  return d.parentId;\n}\n\nexport default function() {\n  var id = defaultId,\n      parentId = defaultParentId,\n      path;\n\n  function stratify(data) {\n    var nodes = Array.from(data),\n        currentId = id,\n        currentParentId = parentId,\n        n,\n        d,\n        i,\n        root,\n        parent,\n        node,\n        nodeId,\n        nodeKey,\n        nodeByKey = new Map;\n\n    if (path != null) {\n      const I = nodes.map((d, i) => normalize(path(d, i, data)));\n      const P = I.map(parentof);\n      const S = new Set(I).add(\"\");\n      for (const i of P) {\n        if (!S.has(i)) {\n          S.add(i);\n          I.push(i);\n          P.push(parentof(i));\n          nodes.push(imputed);\n        }\n      }\n      currentId = (_, i) => I[i];\n      currentParentId = (_, i) => P[i];\n    }\n\n    for (i = 0, n = nodes.length; i < n; ++i) {\n      d = nodes[i], node = nodes[i] = new Node(d);\n      if ((nodeId = currentId(d, i, data)) != null && (nodeId += \"\")) {\n        nodeKey = node.id = nodeId;\n        nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n      }\n      if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += \"\")) {\n        node.parent = nodeId;\n      }\n    }\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i];\n      if (nodeId = node.parent) {\n        parent = nodeByKey.get(nodeId);\n        if (!parent) throw new Error(\"missing: \" + nodeId);\n        if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n        if (parent.children) parent.children.push(node);\n        else parent.children = [node];\n        node.parent = parent;\n      } else {\n        if (root) throw new Error(\"multiple roots\");\n        root = node;\n      }\n    }\n\n    if (!root) throw new Error(\"no root\");\n\n    // When imputing internal nodes, only introduce roots if needed.\n    // Then replace the imputed marker data with null.\n    if (path != null) {\n      while (root.data === imputed && root.children.length === 1) {\n        root = root.children[0], --n;\n      }\n      for (let i = nodes.length - 1; i >= 0; --i) {\n        node = nodes[i];\n        if (node.data !== imputed) break;\n        node.data = null;\n      }\n    }\n\n    root.parent = preroot;\n    root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n    root.parent = null;\n    if (n > 0) throw new Error(\"cycle\");\n\n    return root;\n  }\n\n  stratify.id = function(x) {\n    return arguments.length ? (id = optional(x), stratify) : id;\n  };\n\n  stratify.parentId = function(x) {\n    return arguments.length ? (parentId = optional(x), stratify) : parentId;\n  };\n\n  stratify.path = function(x) {\n    return arguments.length ? (path = optional(x), stratify) : path;\n  };\n\n  return stratify;\n}\n\n// To normalize a path, we coerce to a string, strip the trailing slash if any\n// (as long as the trailing slash is not immediately preceded by another slash),\n// and add leading slash if missing.\nfunction normalize(path) {\n  path = `${path}`;\n  let i = path.length;\n  if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1);\n  return path[0] === \"/\" ? path : `/${path}`;\n}\n\n// Walk backwards to find the first slash that is not the leading slash, e.g.:\n// \"/foo/bar\" ⇥ \"/foo\", \"/foo\" ⇥ \"/\", \"/\" ↦ \"\". (The root is special-cased\n// because the id of the root must be a truthy value.)\nfunction parentof(path) {\n  let i = path.length;\n  if (i < 2) return \"\";\n  while (--i > 1) if (slash(path, i)) break;\n  return path.slice(0, i);\n}\n\n// Slashes can be escaped; to determine whether a slash is a path delimiter, we\n// count the number of preceding backslashes escaping the forward slash: an odd\n// number indicates an escaped forward slash.\nfunction slash(path, i) {\n  if (path[i] === \"/\") {\n    let k = 0;\n    while (i > 0 && path[--i] === \"\\\\\") ++k;\n    if ((k & 1) === 0) return true;\n  }\n  return false;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n//   return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n  var children = v.children;\n  return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n  var children = v.children;\n  return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n  var change = shift / (wp.i - wm.i);\n  wp.c -= change;\n  wp.s += shift;\n  wm.c += change;\n  wp.z += shift;\n  wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n  var shift = 0,\n      change = 0,\n      children = v.children,\n      i = children.length,\n      w;\n  while (--i >= 0) {\n    w = children[i];\n    w.z += shift;\n    w.m += shift;\n    shift += w.s + (change += w.c);\n  }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n  return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n  this._ = node;\n  this.parent = null;\n  this.children = null;\n  this.A = null; // default ancestor\n  this.a = this; // ancestor\n  this.z = 0; // prelim\n  this.m = 0; // mod\n  this.c = 0; // change\n  this.s = 0; // shift\n  this.t = null; // thread\n  this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n  var tree = new TreeNode(root, 0),\n      node,\n      nodes = [tree],\n      child,\n      children,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if (children = node._.children) {\n      node.children = new Array(n = children.length);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n        child.parent = node;\n      }\n    }\n  }\n\n  (tree.parent = new TreeNode(null, 0)).children = [tree];\n  return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = null;\n\n  function tree(root) {\n    var t = treeRoot(root);\n\n    // Compute the layout using Buchheim et al.’s algorithm.\n    t.eachAfter(firstWalk), t.parent.m = -t.z;\n    t.eachBefore(secondWalk);\n\n    // If a fixed node size is specified, scale x and y.\n    if (nodeSize) root.eachBefore(sizeNode);\n\n    // If a fixed tree size is specified, scale x and y based on the extent.\n    // Compute the left-most, right-most, and depth-most nodes for extents.\n    else {\n      var left = root,\n          right = root,\n          bottom = root;\n      root.eachBefore(function(node) {\n        if (node.x < left.x) left = node;\n        if (node.x > right.x) right = node;\n        if (node.depth > bottom.depth) bottom = node;\n      });\n      var s = left === right ? 1 : separation(left, right) / 2,\n          tx = s - left.x,\n          kx = dx / (right.x + s + tx),\n          ky = dy / (bottom.depth || 1);\n      root.eachBefore(function(node) {\n        node.x = (node.x + tx) * kx;\n        node.y = node.depth * ky;\n      });\n    }\n\n    return root;\n  }\n\n  // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n  // applied recursively to the children of v, as well as the function\n  // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n  // node v is placed to the midpoint of its outermost children.\n  function firstWalk(v) {\n    var children = v.children,\n        siblings = v.parent.children,\n        w = v.i ? siblings[v.i - 1] : null;\n    if (children) {\n      executeShifts(v);\n      var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n      if (w) {\n        v.z = w.z + separation(v._, w._);\n        v.m = v.z - midpoint;\n      } else {\n        v.z = midpoint;\n      }\n    } else if (w) {\n      v.z = w.z + separation(v._, w._);\n    }\n    v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n  }\n\n  // Computes all real x-coordinates by summing up the modifiers recursively.\n  function secondWalk(v) {\n    v._.x = v.z + v.parent.m;\n    v.m += v.parent.m;\n  }\n\n  // The core of the algorithm. Here, a new subtree is combined with the\n  // previous subtrees. Threads are used to traverse the inside and outside\n  // contours of the left and right subtree up to the highest common level. The\n  // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n  // superscript o means outside and i means inside, the subscript - means left\n  // subtree and + means right subtree. For summing up the modifiers along the\n  // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n  // nodes of the inside contours conflict, we compute the left one of the\n  // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n  // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n  // Finally, we add a new thread (if necessary).\n  function apportion(v, w, ancestor) {\n    if (w) {\n      var vip = v,\n          vop = v,\n          vim = w,\n          vom = vip.parent.children[0],\n          sip = vip.m,\n          sop = vop.m,\n          sim = vim.m,\n          som = vom.m,\n          shift;\n      while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n        vom = nextLeft(vom);\n        vop = nextRight(vop);\n        vop.a = v;\n        shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n        if (shift > 0) {\n          moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n          sip += shift;\n          sop += shift;\n        }\n        sim += vim.m;\n        sip += vip.m;\n        som += vom.m;\n        sop += vop.m;\n      }\n      if (vim && !nextRight(vop)) {\n        vop.t = vim;\n        vop.m += sim - sop;\n      }\n      if (vip && !nextLeft(vom)) {\n        vom.t = vip;\n        vom.m += sip - som;\n        ancestor = v;\n      }\n    }\n    return ancestor;\n  }\n\n  function sizeNode(node) {\n    node.x *= dx;\n    node.y = node.depth * dy;\n  }\n\n  tree.separation = function(x) {\n    return arguments.length ? (separation = x, tree) : separation;\n  };\n\n  tree.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n  };\n\n  tree.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return tree;\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 roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n  var tile = squarify,\n      round = false,\n      dx = 1,\n      dy = 1,\n      paddingStack = [0],\n      paddingInner = constantZero,\n      paddingTop = constantZero,\n      paddingRight = constantZero,\n      paddingBottom = constantZero,\n      paddingLeft = constantZero;\n\n  function treemap(root) {\n    root.x0 =\n    root.y0 = 0;\n    root.x1 = dx;\n    root.y1 = dy;\n    root.eachBefore(positionNode);\n    paddingStack = [0];\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(node) {\n    var p = paddingStack[node.depth],\n        x0 = node.x0 + p,\n        y0 = node.y0 + p,\n        x1 = node.x1 - p,\n        y1 = node.y1 - p;\n    if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n    if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n    node.x0 = x0;\n    node.y0 = y0;\n    node.x1 = x1;\n    node.y1 = y1;\n    if (node.children) {\n      p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n      x0 += paddingLeft(node) - p;\n      y0 += paddingTop(node) - p;\n      x1 -= paddingRight(node) - p;\n      y1 -= paddingBottom(node) - p;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      tile(node, x0, y0, x1, y1);\n    }\n  }\n\n  treemap.round = function(x) {\n    return arguments.length ? (round = !!x, treemap) : round;\n  };\n\n  treemap.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n  };\n\n  treemap.tile = function(x) {\n    return arguments.length ? (tile = required(x), treemap) : tile;\n  };\n\n  treemap.padding = function(x) {\n    return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n  };\n\n  treemap.paddingInner = function(x) {\n    return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n  };\n\n  treemap.paddingOuter = function(x) {\n    return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n  };\n\n  treemap.paddingTop = function(x) {\n    return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n  };\n\n  treemap.paddingRight = function(x) {\n    return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n  };\n\n  treemap.paddingBottom = function(x) {\n    return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n  };\n\n  treemap.paddingLeft = function(x) {\n    return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n  };\n\n  return treemap;\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 = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n      partition(i, k, valueLeft, x0, y0, xk, y1);\n      partition(k, j, valueRight, xk, y0, x1, y1);\n    } else {\n      var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\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","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, value ? y0 += (y1 - y0) * row.value / value : y1);\n        else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, 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","export default function(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","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n  var i = hue(+a, +b);\n  return function(t) {\n    var x = i(t);\n    return x - 360 * Math.floor(x / 360);\n  };\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","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n  // p0 = [ux0, uy0, w0]\n  // p1 = [ux1, uy1, w1]\n  function zoom(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n        ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n        dx = ux1 - ux0,\n        dy = uy1 - uy0,\n        d2 = dx * dx + dy * dy,\n        i,\n        S;\n\n    // Special case for u0 ≅ u1.\n    if (d2 < epsilon2) {\n      S = Math.log(w1 / w0) / rho;\n      i = function(t) {\n        return [\n          ux0 + t * dx,\n          uy0 + t * dy,\n          w0 * Math.exp(rho * t * S)\n        ];\n      }\n    }\n\n    // General case.\n    else {\n      var d1 = Math.sqrt(d2),\n          b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n          b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n          r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n          r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / rho;\n      i = function(t) {\n        var s = t * S,\n            coshr0 = cosh(r0),\n            u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n        return [\n          ux0 + u * dx,\n          uy0 + u * dy,\n          w0 * coshr0 / cosh(rho * s + r0)\n        ];\n      }\n    }\n\n    i.duration = S * 1000 * rho / Math.SQRT2;\n\n    return i;\n  }\n\n  zoom.rho = function(_) {\n    var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n    return zoomRho(_1, _2, _4);\n  };\n\n  return zoom;\n})(Math.SQRT2, 2, 4);\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHsl(start)).h, (end = colorHsl(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(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n  var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n      a = color(start.a, end.a),\n      b = color(start.b, end.b),\n      opacity = color(start.opacity, end.opacity);\n  return function(t) {\n    start.l = l(t);\n    start.a = a(t);\n    start.b = b(t);\n    start.opacity = opacity(t);\n    return start + \"\";\n  };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n        c = color(start.c, end.c),\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.c = c(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\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","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n  if (values === undefined) values = interpolate, interpolate = value;\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n  while (i < n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\n}\n","export default function(interpolator, n) {\n  var samples = new Array(n);\n  for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n  return samples;\n}\n","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      a,\n      b = polygon[n - 1],\n      area = 0;\n\n  while (++i < n) {\n    a = b;\n    b = polygon[i];\n    area += a[1] * b[0] - a[0] * b[1];\n  }\n\n  return area / 2;\n}\n","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      x = 0,\n      y = 0,\n      a,\n      b = polygon[n - 1],\n      c,\n      k = 0;\n\n  while (++i < n) {\n    a = b;\n    b = polygon[i];\n    k += c = a[0] * b[1] - b[0] * a[1];\n    x += (a[0] + b[0]) * c;\n    y += (a[1] + b[1]) * c;\n  }\n\n  return k *= 3, [x / k, y / k];\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n  return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n  const n = points.length,\n      indexes = [0, 1];\n  let size = 2, i;\n\n  for (i = 2; i < n; ++i) {\n    while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n    indexes[size++] = i;\n  }\n\n  return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n  if ((n = points.length) < 3) return null;\n\n  var i,\n      n,\n      sortedPoints = new Array(n),\n      flippedPoints = new Array(n);\n\n  for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n  sortedPoints.sort(lexicographicOrder);\n  for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n  var upperIndexes = computeUpperHullIndexes(sortedPoints),\n      lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n  // Construct the hull polygon, removing possible duplicate endpoints.\n  var skipLeft = lowerIndexes[0] === upperIndexes[0],\n      skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n      hull = [];\n\n  // Add upper hull in right-to-l order.\n  // Then add lower hull in left-to-right order.\n  for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n  for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n  return hull;\n}\n","export default function(polygon, point) {\n  var n = polygon.length,\n      p = polygon[n - 1],\n      x = point[0], y = point[1],\n      x0 = p[0], y0 = p[1],\n      x1, y1,\n      inside = false;\n\n  for (var i = 0; i < n; ++i) {\n    p = polygon[i], x1 = p[0], y1 = p[1];\n    if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n    x0 = x1, y0 = y1;\n  }\n\n  return inside;\n}\n","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      b = polygon[n - 1],\n      xa,\n      ya,\n      xb = b[0],\n      yb = b[1],\n      perimeter = 0;\n\n  while (++i < n) {\n    xa = xb;\n    ya = yb;\n    b = polygon[i];\n    xb = b[0];\n    yb = b[1];\n    xa -= xb;\n    ya -= yb;\n    perimeter += Math.hypot(xa, ya);\n  }\n\n  return perimeter;\n}\n","export default Math.random;\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomUniform(source) {\n  function randomUniform(min, max) {\n    min = min == null ? 0 : +min;\n    max = max == null ? 1 : +max;\n    if (arguments.length === 1) max = min, min = 0;\n    else max -= min;\n    return function() {\n      return source() * max + min;\n    };\n  }\n\n  randomUniform.source = sourceRandomUniform;\n\n  return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomInt(source) {\n  function randomInt(min, max) {\n    if (arguments.length < 2) max = min, min = 0;\n    min = Math.floor(min);\n    max = Math.floor(max) - min;\n    return function() {\n      return Math.floor(source() * max + min);\n    };\n  }\n\n  randomInt.source = sourceRandomInt;\n\n  return randomInt;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomNormal(source) {\n  function randomNormal(mu, sigma) {\n    var x, r;\n    mu = mu == null ? 0 : +mu;\n    sigma = sigma == null ? 1 : +sigma;\n    return function() {\n      var y;\n\n      // If available, use the second previously-generated uniform random.\n      if (x != null) y = x, x = null;\n\n      // Otherwise, generate a new x and y.\n      else do {\n        x = source() * 2 - 1;\n        y = source() * 2 - 1;\n        r = x * x + y * y;\n      } while (!r || r > 1);\n\n      return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n    };\n  }\n\n  randomNormal.source = sourceRandomNormal;\n\n  return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport normal from \"./normal.js\";\n\nexport default (function sourceRandomLogNormal(source) {\n  var N = normal.source(source);\n\n  function randomLogNormal() {\n    var randomNormal = N.apply(this, arguments);\n    return function() {\n      return Math.exp(randomNormal());\n    };\n  }\n\n  randomLogNormal.source = sourceRandomLogNormal;\n\n  return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomIrwinHall(source) {\n  function randomIrwinHall(n) {\n    if ((n = +n) <= 0) return () => 0;\n    return function() {\n      for (var sum = 0, i = n; i > 1; --i) sum += source();\n      return sum + i * source();\n    };\n  }\n\n  randomIrwinHall.source = sourceRandomIrwinHall;\n\n  return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport irwinHall from \"./irwinHall.js\";\n\nexport default (function sourceRandomBates(source) {\n  var I = irwinHall.source(source);\n\n  function randomBates(n) {\n    // use limiting distribution at n === 0\n    if ((n = +n) === 0) return source;\n    var randomIrwinHall = I(n);\n    return function() {\n      return randomIrwinHall() / n;\n    };\n  }\n\n  randomBates.source = sourceRandomBates;\n\n  return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomExponential(source) {\n  function randomExponential(lambda) {\n    return function() {\n      return -Math.log1p(-source()) / lambda;\n    };\n  }\n\n  randomExponential.source = sourceRandomExponential;\n\n  return randomExponential;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomPareto(source) {\n  function randomPareto(alpha) {\n    if ((alpha = +alpha) < 0) throw new RangeError(\"invalid alpha\");\n    alpha = 1 / -alpha;\n    return function() {\n      return Math.pow(1 - source(), alpha);\n    };\n  }\n\n  randomPareto.source = sourceRandomPareto;\n\n  return randomPareto;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomBernoulli(source) {\n  function randomBernoulli(p) {\n    if ((p = +p) < 0 || p > 1) throw new RangeError(\"invalid p\");\n    return function() {\n      return Math.floor(source() + p);\n    };\n  }\n\n  randomBernoulli.source = sourceRandomBernoulli;\n\n  return randomBernoulli;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomGeometric(source) {\n  function randomGeometric(p) {\n    if ((p = +p) < 0 || p > 1) throw new RangeError(\"invalid p\");\n    if (p === 0) return () => Infinity;\n    if (p === 1) return () => 1;\n    p = Math.log1p(-p);\n    return function() {\n      return 1 + Math.floor(Math.log1p(-source()) / p);\n    };\n  }\n\n  randomGeometric.source = sourceRandomGeometric;\n\n  return randomGeometric;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport normal from \"./normal.js\";\n\nexport default (function sourceRandomGamma(source) {\n  var randomNormal = normal.source(source)();\n\n  function randomGamma(k, theta) {\n    if ((k = +k) < 0) throw new RangeError(\"invalid k\");\n    // degenerate distribution if k === 0\n    if (k === 0) return () => 0;\n    theta = theta == null ? 1 : +theta;\n    // exponential distribution if k === 1\n    if (k === 1) return () => -Math.log1p(-source()) * theta;\n\n    var d = (k < 1 ? k + 1 : k) - 1 / 3,\n        c = 1 / (3 * Math.sqrt(d)),\n        multiplier = k < 1 ? () => Math.pow(source(), 1 / k) : () => 1;\n    return function() {\n      do {\n        do {\n          var x = randomNormal(),\n              v = 1 + c * x;\n        } while (v <= 0);\n        v *= v * v;\n        var u = 1 - source();\n      } while (u >= 1 - 0.0331 * x * x * x * x && Math.log(u) >= 0.5 * x * x + d * (1 - v + Math.log(v)));\n      return d * v * multiplier() * theta;\n    };\n  }\n\n  randomGamma.source = sourceRandomGamma;\n\n  return randomGamma;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport gamma from \"./gamma.js\";\n\nexport default (function sourceRandomBeta(source) {\n  var G = gamma.source(source);\n\n  function randomBeta(alpha, beta) {\n    var X = G(alpha),\n        Y = G(beta);\n    return function() {\n      var x = X();\n      return x === 0 ? 0 : x / (x + Y());\n    };\n  }\n\n  randomBeta.source = sourceRandomBeta;\n\n  return randomBeta;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport beta from \"./beta.js\";\nimport geometric from \"./geometric.js\";\n\nexport default (function sourceRandomBinomial(source) {\n  var G = geometric.source(source),\n      B = beta.source(source);\n\n  function randomBinomial(n, p) {\n    n = +n;\n    if ((p = +p) >= 1) return () => n;\n    if (p <= 0) return () => 0;\n    return function() {\n      var acc = 0, nn = n, pp = p;\n      while (nn * pp > 16 && nn * (1 - pp) > 16) {\n        var i = Math.floor((nn + 1) * pp),\n            y = B(i, nn - i + 1)();\n        if (y <= pp) {\n          acc += i;\n          nn -= i;\n          pp = (pp - y) / (1 - y);\n        } else {\n          nn = i - 1;\n          pp /= y;\n        }\n      }\n      var sign = pp < 0.5,\n          pFinal = sign ? pp : 1 - pp,\n          g = G(pFinal);\n      for (var s = g(), k = 0; s <= nn; ++k) s += g();\n      return acc + (sign ? k : nn - k);\n    };\n  }\n\n  randomBinomial.source = sourceRandomBinomial;\n\n  return randomBinomial;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomWeibull(source) {\n  function randomWeibull(k, a, b) {\n    var outerFunc;\n    if ((k = +k) === 0) {\n      outerFunc = x => -Math.log(x);\n    } else {\n      k = 1 / k;\n      outerFunc = x => Math.pow(x, k);\n    }\n    a = a == null ? 0 : +a;\n    b = b == null ? 1 : +b;\n    return function() {\n      return a + b * outerFunc(-Math.log1p(-source()));\n    };\n  }\n\n  randomWeibull.source = sourceRandomWeibull;\n\n  return randomWeibull;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomCauchy(source) {\n  function randomCauchy(a, b) {\n    a = a == null ? 0 : +a;\n    b = b == null ? 1 : +b;\n    return function() {\n      return a + b * Math.tan(Math.PI * source());\n    };\n  }\n\n  randomCauchy.source = sourceRandomCauchy;\n\n  return randomCauchy;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomLogistic(source) {\n  function randomLogistic(a, b) {\n    a = a == null ? 0 : +a;\n    b = b == null ? 1 : +b;\n    return function() {\n      var u = source();\n      return a + b * Math.log(u / (1 - u));\n    };\n  }\n\n  randomLogistic.source = sourceRandomLogistic;\n\n  return randomLogistic;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport binomial from \"./binomial.js\";\nimport gamma from \"./gamma.js\";\n\nexport default (function sourceRandomPoisson(source) {\n  var G = gamma.source(source),\n      B = binomial.source(source);\n\n  function randomPoisson(lambda) {\n    return function() {\n      var acc = 0, l = lambda;\n      while (l > 16) {\n        var n = Math.floor(0.875 * l),\n            t = G(n)();\n        if (t > l) return acc + B(n - 1, l / t)();\n        acc += n;\n        l -= t;\n      }\n      for (var s = -Math.log1p(-source()), k = 0; s <= l; ++k) s -= Math.log1p(-source());\n      return acc + k;\n    };\n  }\n\n  randomPoisson.source = sourceRandomPoisson;\n\n  return randomPoisson;\n})(defaultSource);\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst mul = 0x19660D;\nconst inc = 0x3C6EF35F;\nconst eps = 1 / 0x100000000;\n\nexport default function lcg(seed = Math.random()) {\n  let state = (0 <= seed && seed < 1 ? seed / eps : Math.abs(seed)) | 0;\n  return () => (state = mul * state + inc | 0, eps * (state >>> 0));\n}\n","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 {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n  var index = new InternMap(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    let i = index.get(d);\n    if (i === undefined) {\n      if (unknown !== implicit) return unknown;\n      index.set(d, i = domain.push(d) - 1);\n    }\n    return range[i % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new InternMap();\n    for (const value of _) {\n      if (index.has(value)) continue;\n      index.set(value, domain.push(value) - 1);\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","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","export default function number(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 x == null || 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 constants(x) {\n  return function() {\n    return x;\n  };\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(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 {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","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n  var unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return identity(domain).unknown(unknown);\n  };\n\n  domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n  return linearish(scale);\n}\n","export default function nice(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","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} 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      : x => 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), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n  return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n  const scale = transform(transformLog, transformExp);\n  const domain = scale.domain;\n  let base = 10;\n  let logs;\n  let 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 = count => {\n    const d = domain();\n    let u = d[0];\n    let v = d[d.length - 1];\n    const r = v < u;\n\n    if (r) ([u, v] = [v, u]);\n\n    let i = logs(u);\n    let j = logs(v);\n    let k;\n    let t;\n    const n = count == null ? 10 : +count;\n    let 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; k < base; ++k) {\n          t = i < 0 ? k / pows(-i) : k * pows(i);\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; k >= 1; --k) {\n          t = i > 0 ? k / pows(-i) : k * pows(i);\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    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = (count, specifier) => {\n    if (count == null) count = 10;\n    if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n    if (typeof specifier !== \"function\") {\n      if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n      specifier = format(specifier);\n    }\n    if (count === Infinity) return specifier;\n    const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return d => {\n      let 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 = () => {\n    return domain(nice(domain(), {\n      floor: x => pows(Math.floor(logs(x))),\n      ceil: x => pows(Math.ceil(logs(x)))\n    }));\n  };\n\n  return scale;\n}\n\nexport default function log() {\n  const scale = loggish(transformer()).domain([1, 10]);\n  scale.copy = () => copy(scale, log()).base(scale.base());\n  initRange.apply(scale, arguments);\n  return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n  return function(x) {\n    return Math.sign(x) * Math.log1p(Math.abs(x / c));\n  };\n}\n\nfunction transformSymexp(c) {\n  return function(x) {\n    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n  };\n}\n\nexport function symlogish(transform) {\n  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n  scale.constant = function(_) {\n    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n  };\n\n  return linearish(scale);\n}\n\nexport default function symlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, symlog()).constant(scale.constant());\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n  var scale = transform(identity, identity),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(identity, identity)\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return linearish(scale);\n}\n\nexport default function pow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, pow()).exponent(scale.exponent());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n\nexport function sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n  return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n  return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n  var squared = continuous(),\n      range = [0, 1],\n      round = false,\n      unknown;\n\n  function scale(x) {\n    var y = unsquare(squared(x));\n    return isNaN(y) ? unknown : round ? Math.round(y) : y;\n  }\n\n  scale.invert = function(y) {\n    return squared.invert(square(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (squared.domain(_), scale) : squared.domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return scale.range(_).round(true);\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, scale) : round;\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return radial(squared.domain(), range)\n        .round(round)\n        .clamp(squared.clamp())\n        .unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n  var domain = [],\n      range = [],\n      thresholds = [],\n      unknown;\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN] : [\n      i > 0 ? thresholds[i - 1] : domain[0],\n      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(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 = (date) => {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = (date) => {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = (date) => {\n    const d0 = interval(date), d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = (date, step) => {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = (start, stop, step) => {\n    const range = [];\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    let previous;\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 = (test) => {\n    return timeInterval((date) => {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, (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 = (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 = (step) => {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? (d) => field(d) % step === 0\n              : (d) => interval.count(0, d) % step === 0);\n    };\n  }\n\n  return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n  // noop\n}, (date, step) => {\n  date.setTime(+date + step);\n}, (start, end) => {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return timeInterval((date) => {\n    date.setTime(Math.floor(date / k) * k);\n  }, (date, step) => {\n    date.setTime(+date + step * k);\n  }, (start, end) => {\n    return (end - start) / k;\n  });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n  date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n  return (end - start) / durationSecond;\n}, (date) => {\n  return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n  date.setUTCSeconds(0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n  date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\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 const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n  return timeInterval((date) => {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setDate(date.getDate() + step * 7);\n  }, (start, end) => {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n  return timeInterval((date) => {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, (start, end) => {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n  return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n  return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n  return end.getFullYear() - start.getFullYear();\n}, (date) => {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const 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 ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = bisector(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n    if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\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 {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} 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\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(ticks, tickInterval, year, month, week, day, hour, minute, second, 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  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  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    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\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    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(nice(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nexport default function time() {\n  return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n  return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = identity,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1;\n      return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport default function sequential() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n  var domain = [],\n      interpolator = identity;\n\n  function scale(x) {\n    if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return scale;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.range = function() {\n    return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n  };\n\n  scale.quantiles = function(n) {\n    return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n  };\n\n  scale.copy = function() {\n    return sequentialQuantile(interpolator).domain(domain);\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 0.5,\n      x2 = 1,\n      s = 1,\n      t0,\n      t1,\n      t2,\n      k10,\n      k21,\n      interpolator = identity,\n      transform,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1, r2;\n      return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n    return scale;\n  };\n}\n\nexport default function diverging() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, diverging());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n  var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, divergingLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n  return divergingPow.apply(null, arguments).exponent(0.5);\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","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(\"4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0\");\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 colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default scheme => interpolateRgbBasis(scheme[scheme.length - 1]);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"d8b365f5f5f55ab4ac\",\n  \"a6611adfc27d80cdc1018571\",\n  \"a6611adfc27df5f5f580cdc1018571\",\n  \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n  \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n  \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n  \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n  \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n  \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"af8dc3f7f7f77fbf7b\",\n  \"7b3294c2a5cfa6dba0008837\",\n  \"7b3294c2a5cff7f7f7a6dba0008837\",\n  \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n  \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n  \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n  \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n  \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n  \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e9a3c9f7f7f7a1d76a\",\n  \"d01c8bf1b6dab8e1864dac26\",\n  \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n  \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n  \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n  \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n  \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n  \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n  \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"998ec3f7f7f7f1a340\",\n  \"5e3c99b2abd2fdb863e66101\",\n  \"5e3c99b2abd2f7f7f7fdb863e66101\",\n  \"542788998ec3d8daebfee0b6f1a340b35806\",\n  \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n  \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n  \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n  \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n  \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ef8a62f7f7f767a9cf\",\n  \"ca0020f4a58292c5de0571b0\",\n  \"ca0020f4a582f7f7f792c5de0571b0\",\n  \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n  \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n  \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n  \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n  \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n  \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ef8a62ffffff999999\",\n  \"ca0020f4a582bababa404040\",\n  \"ca0020f4a582ffffffbababa404040\",\n  \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n  \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n  \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n  \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n  \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n  \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf91bfdb\",\n  \"d7191cfdae61abd9e92c7bb6\",\n  \"d7191cfdae61ffffbfabd9e92c7bb6\",\n  \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n  \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n  \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n  \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n  \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n  \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf91cf60\",\n  \"d7191cfdae61a6d96a1a9641\",\n  \"d7191cfdae61ffffbfa6d96a1a9641\",\n  \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n  \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n  \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n  \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n  \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n  \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf99d594\",\n  \"d7191cfdae61abdda42b83ba\",\n  \"d7191cfdae61ffffbfabdda42b83ba\",\n  \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n  \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n  \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n  \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n  \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n  \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e5f5f999d8c92ca25f\",\n  \"edf8fbb2e2e266c2a4238b45\",\n  \"edf8fbb2e2e266c2a42ca25f006d2c\",\n  \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n  \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n  \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n  \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e0ecf49ebcda8856a7\",\n  \"edf8fbb3cde38c96c688419d\",\n  \"edf8fbb3cde38c96c68856a7810f7c\",\n  \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n  \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n  \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n  \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e0f3dba8ddb543a2ca\",\n  \"f0f9e8bae4bc7bccc42b8cbe\",\n  \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n  \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n  \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n  \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n  \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee8c8fdbb84e34a33\",\n  \"fef0d9fdcc8afc8d59d7301f\",\n  \"fef0d9fdcc8afc8d59e34a33b30000\",\n  \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n  \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n  \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n  \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ece2f0a6bddb1c9099\",\n  \"f6eff7bdc9e167a9cf02818a\",\n  \"f6eff7bdc9e167a9cf1c9099016c59\",\n  \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n  \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n  \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n  \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ece7f2a6bddb2b8cbe\",\n  \"f1eef6bdc9e174a9cf0570b0\",\n  \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n  \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n  \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n  \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n  \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e7e1efc994c7dd1c77\",\n  \"f1eef6d7b5d8df65b0ce1256\",\n  \"f1eef6d7b5d8df65b0dd1c77980043\",\n  \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n  \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n  \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n  \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fde0ddfa9fb5c51b8a\",\n  \"feebe2fbb4b9f768a1ae017e\",\n  \"feebe2fbb4b9f768a1c51b8a7a0177\",\n  \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n  \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n  \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n  \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"edf8b17fcdbb2c7fb8\",\n  \"ffffcca1dab441b6c4225ea8\",\n  \"ffffcca1dab441b6c42c7fb8253494\",\n  \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n  \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n  \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n  \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"f7fcb9addd8e31a354\",\n  \"ffffccc2e69978c679238443\",\n  \"ffffccc2e69978c67931a354006837\",\n  \"ffffccd9f0a3addd8e78c67931a354006837\",\n  \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n  \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n  \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fff7bcfec44fd95f0e\",\n  \"ffffd4fed98efe9929cc4c02\",\n  \"ffffd4fed98efe9929d95f0e993404\",\n  \"ffffd4fee391fec44ffe9929d95f0e993404\",\n  \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n  \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n  \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ffeda0feb24cf03b20\",\n  \"ffffb2fecc5cfd8d3ce31a1c\",\n  \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n  \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n  \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n  \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n  \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"deebf79ecae13182bd\",\n  \"eff3ffbdd7e76baed62171b5\",\n  \"eff3ffbdd7e76baed63182bd08519c\",\n  \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n  \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n  \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n  \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e5f5e0a1d99b31a354\",\n  \"edf8e9bae4b374c476238b45\",\n  \"edf8e9bae4b374c47631a354006d2c\",\n  \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n  \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n  \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n  \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"f0f0f0bdbdbd636363\",\n  \"f7f7f7cccccc969696525252\",\n  \"f7f7f7cccccc969696636363252525\",\n  \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n  \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n  \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n  \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"efedf5bcbddc756bb1\",\n  \"f2f0f7cbc9e29e9ac86a51a3\",\n  \"f2f0f7cbc9e29e9ac8756bb154278f\",\n  \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n  \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n  \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n  \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee0d2fc9272de2d26\",\n  \"fee5d9fcae91fb6a4acb181d\",\n  \"fee5d9fcae91fb6a4ade2d26a50f15\",\n  \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n  \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n  \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n  \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee6cefdae6be6550d\",\n  \"feeddefdbe85fd8d3cd94701\",\n  \"feeddefdbe85fd8d3ce6550da63603\",\n  \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n  \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n  \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n  \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n  t = Math.max(0, Math.min(1, t));\n  return \"rgb(\"\n      + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n      + \")\";\n}\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 {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n  if (t < 0 || t > 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 {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","export default function(t) {\n  t = Math.max(0, Math.min(1, t));\n  return \"rgb(\"\n      + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n      + \")\";\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","import creator from \"./creator.js\";\nimport select from \"./select.js\";\n\nexport default function(name) {\n  return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n  return new Local;\n}\n\nfunction Local() {\n  this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n  constructor: Local,\n  get: function(node) {\n    var id = this._;\n    while (!(id in node)) if (!(node = node.parentNode)) return;\n    return node[id];\n  },\n  set: function(node, value) {\n    return node[this._] = value;\n  },\n  remove: function(node) {\n    return this._ in node && delete node[this._];\n  },\n  toString: function() {\n    return this._;\n  }\n};\n","import pointer from \"./pointer.js\";\nimport sourceEvent from \"./sourceEvent.js\";\n\nexport default function(events, node) {\n  if (events.target) { // i.e., instanceof Event, not TouchList or iterable\n    events = sourceEvent(events);\n    if (node === undefined) node = events.currentTarget;\n    events = events.touches || [events];\n  }\n  return Array.from(events, event => pointer(event, node));\n}\n","import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n      : new Selection([array(selector)], root);\n}\n","export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const 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 {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n  let digits = 3;\n\n  shape.digits = function(_) {\n    if (!arguments.length) return digits;\n    if (_ == null) {\n      digits = null;\n    } else {\n      const d = Math.floor(_);\n      if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n      digits = d;\n    }\n    return shape;\n  };\n\n  return () => new Path(digits);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n  return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n  return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n  return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n  var x10 = x1 - x0, y10 = y1 - y0,\n      x32 = x3 - x2, y32 = y3 - y2,\n      t = y32 * x10 - x32 * y10;\n  if (t * t < epsilon) return;\n  t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n  return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n  var x01 = x0 - x1,\n      y01 = y0 - y1,\n      lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n      ox = lo * y01,\n      oy = -lo * x01,\n      x11 = x0 + ox,\n      y11 = y0 + oy,\n      x10 = x1 + ox,\n      y10 = y1 + oy,\n      x00 = (x11 + x10) / 2,\n      y00 = (y11 + y10) / 2,\n      dx = x10 - x11,\n      dy = y10 - y11,\n      d2 = dx * dx + dy * dy,\n      r = r1 - rc,\n      D = x11 * y10 - x10 * y11,\n      d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n      cx0 = (D * dy - dx * d) / d2,\n      cy0 = (-D * dx - dy * d) / d2,\n      cx1 = (D * dy + dx * d) / d2,\n      cy1 = (-D * dx + dy * d) / d2,\n      dx0 = cx0 - x00,\n      dy0 = cy0 - y00,\n      dx1 = cx1 - x00,\n      dy1 = cy1 - y00;\n\n  // Pick the closer of the two intersection points.\n  // TODO Is there a faster way to determine which intersection to use?\n  if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n  return {\n    cx: cx0,\n    cy: cy0,\n    x01: -ox,\n    y01: -oy,\n    x11: cx0 * (r1 / r - 1),\n    y11: cy0 * (r1 / r - 1)\n  };\n}\n\nexport default function() {\n  var innerRadius = arcInnerRadius,\n      outerRadius = arcOuterRadius,\n      cornerRadius = constant(0),\n      padRadius = null,\n      startAngle = arcStartAngle,\n      endAngle = arcEndAngle,\n      padAngle = arcPadAngle,\n      context = null,\n      path = withPath(arc);\n\n  function arc() {\n    var buffer,\n        r,\n        r0 = +innerRadius.apply(this, arguments),\n        r1 = +outerRadius.apply(this, arguments),\n        a0 = startAngle.apply(this, arguments) - halfPi,\n        a1 = endAngle.apply(this, arguments) - halfPi,\n        da = abs(a1 - a0),\n        cw = a1 > a0;\n\n    if (!context) context = buffer = path();\n\n    // Ensure that the outer radius is always larger than the inner radius.\n    if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n    // Is it a point?\n    if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n    // Or is it a circle or annulus?\n    else if (da > tau - epsilon) {\n      context.moveTo(r1 * cos(a0), r1 * sin(a0));\n      context.arc(0, 0, r1, a0, a1, !cw);\n      if (r0 > epsilon) {\n        context.moveTo(r0 * cos(a1), r0 * sin(a1));\n        context.arc(0, 0, r0, a1, a0, cw);\n      }\n    }\n\n    // Or is it a circular or annular sector?\n    else {\n      var a01 = a0,\n          a11 = a1,\n          a00 = a0,\n          a10 = a1,\n          da0 = da,\n          da1 = da,\n          ap = padAngle.apply(this, arguments) / 2,\n          rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n          rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n          rc0 = rc,\n          rc1 = rc,\n          t0,\n          t1;\n\n      // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n      if (rp > epsilon) {\n        var p0 = asin(rp / r0 * sin(ap)),\n            p1 = asin(rp / r1 * sin(ap));\n        if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n        else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n        if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n        else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n      }\n\n      var x01 = r1 * cos(a01),\n          y01 = r1 * sin(a01),\n          x10 = r0 * cos(a10),\n          y10 = r0 * sin(a10);\n\n      // Apply rounded corners?\n      if (rc > epsilon) {\n        var x11 = r1 * cos(a11),\n            y11 = r1 * sin(a11),\n            x00 = r0 * cos(a00),\n            y00 = r0 * sin(a00),\n            oc;\n\n        // Restrict the corner radius according to the sector angle. If this\n        // intersection fails, it’s probably because the arc is too small, so\n        // disable the corner radius entirely.\n        if (da < pi) {\n          if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n            var ax = x01 - oc[0],\n                ay = y01 - oc[1],\n                bx = x11 - oc[0],\n                by = y11 - oc[1],\n                kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n                lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n            rc0 = min(rc, (r0 - lc) / (kc - 1));\n            rc1 = min(rc, (r1 - lc) / (kc + 1));\n          } else {\n            rc0 = rc1 = 0;\n          }\n        }\n      }\n\n      // Is the sector collapsed to a line?\n      if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n      // Does the sector’s outer ring have rounded corners?\n      else if (rc1 > epsilon) {\n        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n          context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the outer ring just a circular arc?\n      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n      // Is there no inner ring, and it’s a circular sector?\n      // Or perhaps it’s an annular sector collapsed due to padding?\n      if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n      // Does the sector’s inner ring (or point) have rounded corners?\n      else if (rc0 > epsilon) {\n        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n          context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the inner ring just a circular arc?\n      else context.arc(0, 0, r0, a10, a00, cw);\n    }\n\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  arc.centroid = function() {\n    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n    return [cos(a) * r, sin(a) * r];\n  };\n\n  arc.innerRadius = function(_) {\n    return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n  };\n\n  arc.outerRadius = function(_) {\n    return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n  };\n\n  arc.cornerRadius = function(_) {\n    return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n  };\n\n  arc.padRadius = function(_) {\n    return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n  };\n\n  arc.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n  };\n\n  arc.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n  };\n\n  arc.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n  };\n\n  arc.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n  };\n\n  return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\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; // falls through\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\nexport default function(context) {\n  return new Linear(context);\n}\n","export function x(p) {\n  return p[0];\n}\n\nexport function y(p) {\n  return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n  var defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(line);\n\n  x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n  y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n  function line(data) {\n    var i,\n        n = (data = array(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","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n  var x1 = null,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(area);\n\n  x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n  y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n  y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = (data = array(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","export default function(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n  return d;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n  var value = identity,\n      sortValues = descending,\n      sort = null,\n      startAngle = constant(0),\n      endAngle = constant(tau),\n      padAngle = constant(0);\n\n  function pie(data) {\n    var i,\n        n = (data = array(data)).length,\n        j,\n        k,\n        sum = 0,\n        index = new Array(n),\n        arcs = new Array(n),\n        a0 = +startAngle.apply(this, arguments),\n        da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n        a1,\n        p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n        pa = p * (da < 0 ? -1 : 1),\n        v;\n\n    for (i = 0; i < n; ++i) {\n      if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n        sum += v;\n      }\n    }\n\n    // Optionally sort the arcs by previously-computed values or by data.\n    if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n    else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n    // Compute the arcs! They are stored in the original data's order.\n    for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n      j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n        data: data[j],\n        index: i,\n        value: v,\n        startAngle: a0,\n        endAngle: a1,\n        padAngle: p\n      };\n    }\n\n    return arcs;\n  }\n\n  pie.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n  };\n\n  pie.sortValues = function(_) {\n    return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n  };\n\n  pie.sort = function(_) {\n    return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n  };\n\n  pie.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n  };\n\n  pie.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n  };\n\n  pie.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n  };\n\n  return pie;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n  this._curve = curve;\n}\n\nRadial.prototype = {\n  areaStart: function() {\n    this._curve.areaStart();\n  },\n  areaEnd: function() {\n    this._curve.areaEnd();\n  },\n  lineStart: function() {\n    this._curve.lineStart();\n  },\n  lineEnd: function() {\n    this._curve.lineEnd();\n  },\n  point: function(a, r) {\n    this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n  }\n};\n\nexport default function curveRadial(curve) {\n\n  function radial(context) {\n    return new Radial(curve(context));\n  }\n\n  radial._curve = curve;\n\n  return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n  var c = l.curve;\n\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n\n  l.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return l;\n}\n\nexport default function() {\n  return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n  var a = area().curve(curveRadialLinear),\n      c = a.curve,\n      x0 = a.lineX0,\n      x1 = a.lineX1,\n      y0 = a.lineY0,\n      y1 = a.lineY1;\n\n  a.angle = a.x, delete a.x;\n  a.startAngle = a.x0, delete a.x0;\n  a.endAngle = a.x1, delete a.x1;\n  a.radius = a.y, delete a.y;\n  a.innerRadius = a.y0, delete a.y0;\n  a.outerRadius = a.y1, delete a.y1;\n  a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n  a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n  a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n  a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n  a.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return a;\n}\n","export default function(x, y) {\n  return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n  constructor(context, x) {\n    this._context = context;\n    this._x = x;\n  }\n  areaStart() {\n    this._line = 0;\n  }\n  areaEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  }\n  point(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: {\n        this._point = 1;\n        if (this._line) this._context.lineTo(x, y);\n        else this._context.moveTo(x, y);\n        break;\n      }\n      case 1: this._point = 2; // falls through\n      default: {\n        if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n        else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n        break;\n      }\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nclass BumpRadial {\n  constructor(context) {\n    this._context = context;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {}\n  point(x, y) {\n    x = +x, y = +y;\n    if (this._point === 0) {\n      this._point = 1;\n    } else {\n      const p0 = pointRadial(this._x0, this._y0);\n      const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n      const p2 = pointRadial(x, this._y0);\n      const p3 = pointRadial(x, y);\n      this._context.moveTo(...p0);\n      this._context.bezierCurveTo(...p1, ...p2, ...p3);\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nexport function bumpX(context) {\n  return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n  return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n  return new BumpRadial(context);\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {bumpX, bumpY, bumpRadial} from \"./curve/bump.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nfunction linkSource(d) {\n  return d.source;\n}\n\nfunction linkTarget(d) {\n  return d.target;\n}\n\nexport function link(curve) {\n  let source = linkSource,\n      target = linkTarget,\n      x = pointX,\n      y = pointY,\n      context = null,\n      output = null,\n      path = withPath(link);\n\n  function link() {\n    let buffer;\n    const argv = slice.call(arguments);\n    const s = source.apply(this, argv);\n    const t = target.apply(this, argv);\n    if (context == null) output = curve(buffer = path());\n    output.lineStart();\n    argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv));\n    argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv));\n    output.lineEnd();\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  link.source = function(_) {\n    return arguments.length ? (source = _, link) : source;\n  };\n\n  link.target = function(_) {\n    return arguments.length ? (target = _, link) : target;\n  };\n\n  link.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n  };\n\n  link.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n  };\n\n  link.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context;\n  };\n\n  return link;\n}\n\nexport function linkHorizontal() {\n  return link(bumpX);\n}\n\nexport function linkVertical() {\n  return link(bumpY);\n}\n\nexport function linkRadial() {\n  const l = link(bumpRadial);\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n  return l;\n}\n","import {min, sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n    const t = r / 2;\n    const u = t * sqrt3;\n    context.moveTo(0, r);\n    context.lineTo(0, -r);\n    context.moveTo(-u, -t);\n    context.lineTo(u, t);\n    context.moveTo(-u, t);\n    context.lineTo(u, -t);\n  }\n};\n","import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / pi);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, tau);\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / 5) / 2;\n    context.moveTo(-3 * r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, -3 * r);\n    context.lineTo(r, -3 * r);\n    context.lineTo(r, -r);\n    context.lineTo(3 * r, -r);\n    context.lineTo(3 * r, r);\n    context.lineTo(r, r);\n    context.lineTo(r, 3 * r);\n    context.lineTo(-r, 3 * r);\n    context.lineTo(-r, r);\n    context.lineTo(-3 * r, r);\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n  draw(context, size) {\n    const y = sqrt(size / tan30_2);\n    const x = y * tan30;\n    context.moveTo(0, -y);\n    context.lineTo(x, 0);\n    context.lineTo(0, y);\n    context.lineTo(-x, 0);\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size) * 0.62625;\n    context.moveTo(0, -r);\n    context.lineTo(r, 0);\n    context.lineTo(0, r);\n    context.lineTo(-r, 0);\n    context.closePath();\n  }\n};\n","import {min, sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size - min(size / 7, 2)) * 0.87559;\n    context.moveTo(-r, 0);\n    context.lineTo(r, 0);\n    context.moveTo(0, r);\n    context.lineTo(0, -r);\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const w = sqrt(size);\n    const x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size) * 0.4431;\n    context.moveTo(r, r);\n    context.lineTo(r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, r);\n    context.closePath();\n  }\n};\n","import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size * ka);\n    const x = kx * r;\n    const y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (let i = 1; i < 5; ++i) {\n      const a = tau * i / 5;\n      const c = cos(a);\n      const s = sin(a);\n      context.lineTo(s * r, -c * r);\n      context.lineTo(c * x - s * y, s * x + c * y);\n    }\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const y = -sqrt(size / (sqrt3 * 3));\n    context.moveTo(0, y * 2);\n    context.lineTo(-sqrt3 * y, -y);\n    context.lineTo(sqrt3 * y, -y);\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const s = sqrt(size) * 0.6824;\n    const t = s  / 2;\n    const u = (s * sqrt3) / 2; // cos(Math.PI / 6)\n    context.moveTo(0, -s);\n    context.lineTo(u, t);\n    context.lineTo(-u, t);\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / a);\n    const x0 = r / 2, y0 = r * k;\n    const x1 = x0, y1 = r * k + r;\n    const x2 = -x1, y2 = y1;\n    context.moveTo(x0, y0);\n    context.lineTo(x1, y1);\n    context.lineTo(x2, y2);\n    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n    context.closePath();\n  }\n};\n","import {min, sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size - min(size / 6, 1.7)) * 0.6189;\n    context.moveTo(-r, -r);\n    context.lineTo(r, r);\n    context.moveTo(-r, r);\n    context.lineTo(r, -r);\n  }\n};\n","import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n  circle,\n  cross,\n  diamond,\n  square,\n  star,\n  triangle,\n  wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n  circle,\n  plus,\n  times,\n  triangle2,\n  asterisk,\n  square2,\n  diamond2\n];\n\nexport default function Symbol(type, size) {\n  let context = null,\n      path = withPath(symbol);\n\n  type = typeof type === \"function\" ? type : constant(type || circle);\n  size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n  function symbol() {\n    let buffer;\n    if (!context) context = buffer = path();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n}\n","export default function() {}\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); // falls through\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); // falls through\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","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; // falls through\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; // falls through\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; // falls through\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","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; // falls through\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; // falls through\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; // falls through\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, 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(series) {\n  var n = series.length, o = new Array(n);\n  while (--n >= 0) o[n] = n;\n  return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n  return d[key];\n}\n\nfunction stackSeries(key) {\n  const series = [];\n  series.key = key;\n  return series;\n}\n\nexport default function() {\n  var keys = constant([]),\n      order = orderNone,\n      offset = offsetNone,\n      value = stackValue;\n\n  function stack(data) {\n    var sz = Array.from(keys.apply(this, arguments), stackSeries),\n        i, n = sz.length, j = -1,\n        oz;\n\n    for (const d of data) {\n      for (i = 0, ++j; i < n; ++i) {\n        (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n      }\n    }\n\n    for (i = 0, oz = array(order(sz)); i < n; ++i) {\n      sz[oz[i]].index = i;\n    }\n\n    offset(sz, oz);\n    return sz;\n  }\n\n  stack.keys = function(_) {\n    return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n  };\n\n  stack.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n  };\n\n  stack.order = function(_) {\n    return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n  };\n\n  stack.offset = function(_) {\n    return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n  };\n\n  return stack;\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","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 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 ascending from \"./ascending.js\";\n\nexport default function(series) {\n  return ascending(series).reverse();\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","import none from \"./none.js\";\n\nexport default function(series) {\n  return none(series).reverse();\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer, total = delay;\n  if (delay == null) return t.restart(callback, delay, time), t;\n  t._restart = t.restart;\n  t.restart = function(callback, delay, time) {\n    delay = +delay, time = time == null ? now() : +time;\n    t._restart(function tick(elapsed) {\n      elapsed += total;\n      t._restart(tick, total += delay, time);\n      callback(elapsed);\n    }, delay, time);\n  }\n  t.restart(callback, delay, time);\n  return t;\n}\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n  sourceEvent,\n  target,\n  transform,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    transform: {value: transform, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\n}\n","export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\n","export function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n  return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n  var e = this;\n  if (e instanceof SVGElement) {\n    e = e.ownerSVGElement || e;\n    if (e.hasAttribute(\"viewBox\")) {\n      e = e.viewBox.baseVal;\n      return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n    }\n    return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n  }\n  return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n  return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n  return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n  var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n      dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n      dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n      dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n  return transform.translate(\n    dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n    dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n  );\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      extent = defaultExtent,\n      constrain = defaultConstrain,\n      wheelDelta = defaultWheelDelta,\n      touchable = defaultTouchable,\n      scaleExtent = [0, Infinity],\n      translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n      duration = 250,\n      interpolate = interpolateZoom,\n      listeners = dispatch(\"start\", \"zoom\", \"end\"),\n      touchstarting,\n      touchfirst,\n      touchending,\n      touchDelay = 500,\n      wheelDelay = 150,\n      clickDistance2 = 0,\n      tapDistance = 10;\n\n  function zoom(selection) {\n    selection\n        .property(\"__zoom\", defaultTransform)\n        .on(\"wheel.zoom\", wheeled, {passive: false})\n        .on(\"mousedown.zoom\", mousedowned)\n        .on(\"dblclick.zoom\", dblclicked)\n      .filter(touchable)\n        .on(\"touchstart.zoom\", touchstarted)\n        .on(\"touchmove.zoom\", touchmoved)\n        .on(\"touchend.zoom touchcancel.zoom\", touchended)\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  zoom.transform = function(collection, transform, point, event) {\n    var selection = collection.selection ? collection.selection() : collection;\n    selection.property(\"__zoom\", defaultTransform);\n    if (collection !== selection) {\n      schedule(collection, transform, point, event);\n    } else {\n      selection.interrupt().each(function() {\n        gesture(this, arguments)\n          .event(event)\n          .start()\n          .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n          .end();\n      });\n    }\n  };\n\n  zoom.scaleBy = function(selection, k, p, event) {\n    zoom.scaleTo(selection, function() {\n      var k0 = this.__zoom.k,\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return k0 * k1;\n    }, p, event);\n  };\n\n  zoom.scaleTo = function(selection, k, p, event) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t0 = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n          p1 = t0.invert(p0),\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n    }, p, event);\n  };\n\n  zoom.translateBy = function(selection, x, y, event) {\n    zoom.transform(selection, function() {\n      return constrain(this.__zoom.translate(\n        typeof x === \"function\" ? x.apply(this, arguments) : x,\n        typeof y === \"function\" ? y.apply(this, arguments) : y\n      ), extent.apply(this, arguments), translateExtent);\n    }, null, event);\n  };\n\n  zoom.translateTo = function(selection, x, y, p, event) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n      return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n        typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n        typeof y === \"function\" ? -y.apply(this, arguments) : -y\n      ), e, translateExtent);\n    }, p, event);\n  };\n\n  function scale(transform, k) {\n    k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n    return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n  }\n\n  function translate(transform, p0, p1) {\n    var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n    return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n  }\n\n  function centroid(extent) {\n    return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n  }\n\n  function schedule(transition, transform, point, event) {\n    transition\n        .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n        .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n        .tween(\"zoom\", function() {\n          var that = this,\n              args = arguments,\n              g = gesture(that, args).event(event),\n              e = extent.apply(that, args),\n              p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n              w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n              a = that.__zoom,\n              b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n              i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n          return function(t) {\n            if (t === 1) t = b; // Avoid rounding error on end.\n            else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n            g.zoom(null, t);\n          };\n        });\n  }\n\n  function gesture(that, args, clean) {\n    return (!clean && that.__zooming) || new Gesture(that, args);\n  }\n\n  function Gesture(that, args) {\n    this.that = that;\n    this.args = args;\n    this.active = 0;\n    this.sourceEvent = null;\n    this.extent = extent.apply(that, args);\n    this.taps = 0;\n  }\n\n  Gesture.prototype = {\n    event: function(event) {\n      if (event) this.sourceEvent = event;\n      return this;\n    },\n    start: function() {\n      if (++this.active === 1) {\n        this.that.__zooming = this;\n        this.emit(\"start\");\n      }\n      return this;\n    },\n    zoom: function(key, transform) {\n      if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n      if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n      if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n      this.that.__zoom = transform;\n      this.emit(\"zoom\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) {\n        delete this.that.__zooming;\n        this.emit(\"end\");\n      }\n      return this;\n    },\n    emit: function(type) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new ZoomEvent(type, {\n          sourceEvent: this.sourceEvent,\n          target: zoom,\n          type,\n          transform: this.that.__zoom,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function wheeled(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var g = gesture(this, args).event(event),\n        t = this.__zoom,\n        k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n        p = pointer(event);\n\n    // If the mouse is in the same location as before, reuse it.\n    // If there were recent wheel events, reset the wheel idle timeout.\n    if (g.wheel) {\n      if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n        g.mouse[1] = t.invert(g.mouse[0] = p);\n      }\n      clearTimeout(g.wheel);\n    }\n\n    // If this wheel event won’t trigger a transform change, ignore it.\n    else if (t.k === k) return;\n\n    // Otherwise, capture the mouse point and location at the start.\n    else {\n      g.mouse = [p, t.invert(p)];\n      interrupt(this);\n      g.start();\n    }\n\n    noevent(event);\n    g.wheel = setTimeout(wheelidled, wheelDelay);\n    g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n    function wheelidled() {\n      g.wheel = null;\n      g.end();\n    }\n  }\n\n  function mousedowned(event, ...args) {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var currentTarget = event.currentTarget,\n        g = gesture(this, args, true).event(event),\n        v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n        p = pointer(event, currentTarget),\n        x0 = event.clientX,\n        y0 = event.clientY;\n\n    dragDisable(event.view);\n    nopropagation(event);\n    g.mouse = [p, this.__zoom.invert(p)];\n    interrupt(this);\n    g.start();\n\n    function mousemoved(event) {\n      noevent(event);\n      if (!g.moved) {\n        var dx = event.clientX - x0, dy = event.clientY - y0;\n        g.moved = dx * dx + dy * dy > clickDistance2;\n      }\n      g.event(event)\n       .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n    }\n\n    function mouseupped(event) {\n      v.on(\"mousemove.zoom mouseup.zoom\", null);\n      dragEnable(event.view, g.moved);\n      noevent(event);\n      g.event(event).end();\n    }\n  }\n\n  function dblclicked(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var t0 = this.__zoom,\n        p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n        p1 = t0.invert(p0),\n        k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n        t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n    noevent(event);\n    if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n    else select(this).call(zoom.transform, t1, p0, event);\n  }\n\n  function touchstarted(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var touches = event.touches,\n        n = touches.length,\n        g = gesture(this, args, event.changedTouches.length === n).event(event),\n        started, i, t, p;\n\n    nopropagation(event);\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = pointer(t, this);\n      p = [p, this.__zoom.invert(p), t.identifier];\n      if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n      else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n    }\n\n    if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n    if (started) {\n      if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n      interrupt(this);\n      g.start();\n    }\n  }\n\n  function touchmoved(event, ...args) {\n    if (!this.__zooming) return;\n    var g = gesture(this, args).event(event),\n        touches = event.changedTouches,\n        n = touches.length, i, t, p, l;\n\n    noevent(event);\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = pointer(t, this);\n      if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n      else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n    }\n    t = g.that.__zoom;\n    if (g.touch1) {\n      var p0 = g.touch0[0], l0 = g.touch0[1],\n          p1 = g.touch1[0], l1 = g.touch1[1],\n          dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n          dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n      t = scale(t, Math.sqrt(dp / dl));\n      p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n      l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n    }\n    else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n    else return;\n\n    g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n  }\n\n  function touchended(event, ...args) {\n    if (!this.__zooming) return;\n    var g = gesture(this, args).event(event),\n        touches = event.changedTouches,\n        n = touches.length, i, t;\n\n    nopropagation(event);\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, touchDelay);\n    for (i = 0; i < n; ++i) {\n      t = touches[i];\n      if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n      else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n    }\n    if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n    if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n    else {\n      g.end();\n      // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n      if (g.taps === 2) {\n        t = pointer(t, this);\n        if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n          var p = select(this).on(\"dblclick.zoom\");\n          if (p) p.apply(this, arguments);\n        }\n      }\n    }\n  }\n\n  zoom.wheelDelta = function(_) {\n    return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n  };\n\n  zoom.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n  };\n\n  zoom.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n  };\n\n  zoom.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n  };\n\n  zoom.scaleExtent = function(_) {\n    return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n  };\n\n  zoom.translateExtent = function(_) {\n    return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n  };\n\n  zoom.constrain = function(_) {\n    return arguments.length ? (constrain = _, zoom) : constrain;\n  };\n\n  zoom.duration = function(_) {\n    return arguments.length ? (duration = +_, zoom) : duration;\n  };\n\n  zoom.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, zoom) : interpolate;\n  };\n\n  zoom.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? zoom : value;\n  };\n\n  zoom.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n  };\n\n  zoom.tapDistance = function(_) {\n    return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n  };\n\n  return zoom;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"64f9692b\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"Zenpivot:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkZenpivot\"] = self[\"webpackChunkZenpivot\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n  /**\n   * A POP indicates a change to an arbitrary index in the history stack, such\n   * as a back or forward navigation. It does not describe the direction of the\n   * navigation, only that the current index changed.\n   *\n   * Note: This is the default action for newly created history objects.\n   */\n  Pop = \"POP\",\n\n  /**\n   * A PUSH indicates a new entry being added to the history stack, such as when\n   * a link is clicked and a new page loads. When this happens, all subsequent\n   * entries in the stack are lost.\n   */\n  Push = \"PUSH\",\n\n  /**\n   * A REPLACE indicates the entry at the current index in the history stack\n   * being replaced by a new one.\n   */\n  Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n  /**\n   * A URL pathname, beginning with a /.\n   */\n  pathname: string;\n\n  /**\n   * A URL search string, beginning with a ?.\n   */\n  search: string;\n\n  /**\n   * A URL fragment identifier, beginning with a #.\n   */\n  hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location<State = any> extends Path {\n  /**\n   * A value of arbitrary data associated with this location.\n   */\n  state: State;\n\n  /**\n   * A unique string associated with this location. May be used to safely store\n   * and retrieve data in some other storage API, like `localStorage`.\n   *\n   * Note: This value is always \"default\" on the initial location.\n   */\n  key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n  /**\n   * The action that triggered the change.\n   */\n  action: Action;\n\n  /**\n   * The new location.\n   */\n  location: Location;\n\n  /**\n   * The delta between this location and the former location in the history stack\n   */\n  delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n  (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial<Path>;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n  /**\n   * The last action that modified the current location. This will always be\n   * Action.Pop when a history instance is first created. This value is mutable.\n   */\n  readonly action: Action;\n\n  /**\n   * The current location. This value is mutable.\n   */\n  readonly location: Location;\n\n  /**\n   * Returns a valid href for the given `to` value that may be used as\n   * the value of an <a href> attribute.\n   *\n   * @param to - The destination URL\n   */\n  createHref(to: To): string;\n\n  /**\n   * Returns a URL for the given `to` value\n   *\n   * @param to - The destination URL\n   */\n  createURL(to: To): URL;\n\n  /**\n   * Encode a location the same way window.history would do (no-op for memory\n   * history) so we ensure our PUSH/REPLACE navigations for data routers\n   * behave the same as POP\n   *\n   * @param to Unencoded path\n   */\n  encodeLocation(to: To): Path;\n\n  /**\n   * Pushes a new location onto the history stack, increasing its length by one.\n   * If there were any entries in the stack after the current one, they are\n   * lost.\n   *\n   * @param to - The new URL\n   * @param state - Data to associate with the new location\n   */\n  push(to: To, state?: any): void;\n\n  /**\n   * Replaces the current location in the history stack with a new one.  The\n   * location that was replaced will no longer be available.\n   *\n   * @param to - The new URL\n   * @param state - Data to associate with the new location\n   */\n  replace(to: To, state?: any): void;\n\n  /**\n   * Navigates `n` entries backward/forward in the history stack relative to the\n   * current index. For example, a \"back\" navigation would use go(-1).\n   *\n   * @param delta - The delta in the stack index\n   */\n  go(delta: number): void;\n\n  /**\n   * Sets up a listener that will be called whenever the current location\n   * changes.\n   *\n   * @param listener - A function that will be called when the location changes\n   * @returns unlisten - A function that may be used to stop listening\n   */\n  listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n  usr: any;\n  key?: string;\n  idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial<Location>;\n\nexport type MemoryHistoryOptions = {\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n  /**\n   * The current index in the history stack.\n   */\n  readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n  options: MemoryHistoryOptions = {}\n): MemoryHistory {\n  let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n  let entries: Location[]; // Declare so we can access from createMemoryLocation\n  entries = initialEntries.map((entry, index) =>\n    createMemoryLocation(\n      entry,\n      typeof entry === \"string\" ? null : entry.state,\n      index === 0 ? \"default\" : undefined\n    )\n  );\n  let index = clampIndex(\n    initialIndex == null ? entries.length - 1 : initialIndex\n  );\n  let action = Action.Pop;\n  let listener: Listener | null = null;\n\n  function clampIndex(n: number): number {\n    return Math.min(Math.max(n, 0), entries.length - 1);\n  }\n  function getCurrentLocation(): Location {\n    return entries[index];\n  }\n  function createMemoryLocation(\n    to: To,\n    state: any = null,\n    key?: string\n  ): Location {\n    let location = createLocation(\n      entries ? getCurrentLocation().pathname : \"/\",\n      to,\n      state,\n      key\n    );\n    warning(\n      location.pathname.charAt(0) === \"/\",\n      `relative pathnames are not supported in memory history: ${JSON.stringify(\n        to\n      )}`\n    );\n    return location;\n  }\n\n  function createHref(to: To) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n\n  let history: MemoryHistory = {\n    get index() {\n      return index;\n    },\n    get action() {\n      return action;\n    },\n    get location() {\n      return getCurrentLocation();\n    },\n    createHref,\n    createURL(to) {\n      return new URL(createHref(to), \"http://localhost\");\n    },\n    encodeLocation(to: To) {\n      let path = typeof to === \"string\" ? parsePath(to) : to;\n      return {\n        pathname: path.pathname || \"\",\n        search: path.search || \"\",\n        hash: path.hash || \"\",\n      };\n    },\n    push(to, state) {\n      action = Action.Push;\n      let nextLocation = createMemoryLocation(to, state);\n      index += 1;\n      entries.splice(index, entries.length, nextLocation);\n      if (v5Compat && listener) {\n        listener({ action, location: nextLocation, delta: 1 });\n      }\n    },\n    replace(to, state) {\n      action = Action.Replace;\n      let nextLocation = createMemoryLocation(to, state);\n      entries[index] = nextLocation;\n      if (v5Compat && listener) {\n        listener({ action, location: nextLocation, delta: 0 });\n      }\n    },\n    go(delta) {\n      action = Action.Pop;\n      let nextIndex = clampIndex(index + delta);\n      let nextLocation = entries[nextIndex];\n      index = nextIndex;\n      if (listener) {\n        listener({ action, location: nextLocation, delta });\n      }\n    },\n    listen(fn: Listener) {\n      listener = fn;\n      return () => {\n        listener = null;\n      };\n    },\n  };\n\n  return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n  options: BrowserHistoryOptions = {}\n): BrowserHistory {\n  function createBrowserLocation(\n    window: Window,\n    globalHistory: Window[\"history\"]\n  ) {\n    let { pathname, search, hash } = window.location;\n    return createLocation(\n      \"\",\n      { pathname, search, hash },\n      // state defaults to `null` because `window.history.state` does\n      (globalHistory.state && globalHistory.state.usr) || null,\n      (globalHistory.state && globalHistory.state.key) || \"default\"\n    );\n  }\n\n  function createBrowserHref(window: Window, to: To) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n\n  return getUrlBasedHistory(\n    createBrowserLocation,\n    createBrowserHref,\n    null,\n    options\n  );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n  options: HashHistoryOptions = {}\n): HashHistory {\n  function createHashLocation(\n    window: Window,\n    globalHistory: Window[\"history\"]\n  ) {\n    let {\n      pathname = \"/\",\n      search = \"\",\n      hash = \"\",\n    } = parsePath(window.location.hash.substr(1));\n\n    // Hash URL should always have a leading / just like window.location.pathname\n    // does, so if an app ends up at a route like /#something then we add a\n    // leading slash so all of our path-matching behaves the same as if it would\n    // in a browser router.  This is particularly important when there exists a\n    // root splat route (<Route path=\"*\">) since that matches internally against\n    // \"/*\" and we'd expect /#something to 404 in a hash router app.\n    if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n      pathname = \"/\" + pathname;\n    }\n\n    return createLocation(\n      \"\",\n      { pathname, search, hash },\n      // state defaults to `null` because `window.history.state` does\n      (globalHistory.state && globalHistory.state.usr) || null,\n      (globalHistory.state && globalHistory.state.key) || \"default\"\n    );\n  }\n\n  function createHashHref(window: Window, to: To) {\n    let base = window.document.querySelector(\"base\");\n    let href = \"\";\n\n    if (base && base.getAttribute(\"href\")) {\n      let url = window.location.href;\n      let hashIndex = url.indexOf(\"#\");\n      href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n    }\n\n    return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n  }\n\n  function validateHashLocation(location: Location, to: To) {\n    warning(\n      location.pathname.charAt(0) === \"/\",\n      `relative pathnames are not supported in hash history.push(${JSON.stringify(\n        to\n      )})`\n    );\n  }\n\n  return getUrlBasedHistory(\n    createHashLocation,\n    createHashHref,\n    validateHashLocation,\n    options\n  );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant<T>(\n  value: T | null | undefined,\n  message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n  if (value === false || value === null || typeof value === \"undefined\") {\n    throw new Error(message);\n  }\n}\n\nexport function warning(cond: any, message: string) {\n  if (!cond) {\n    // eslint-disable-next-line no-console\n    if (typeof console !== \"undefined\") console.warn(message);\n\n    try {\n      // Welcome to debugging history!\n      //\n      // This error is thrown as a convenience, so you can more easily\n      // find the source for a warning that appears in the console by\n      // enabling \"pause on exceptions\" in your JavaScript debugger.\n      throw new Error(message);\n      // eslint-disable-next-line no-empty\n    } catch (e) {}\n  }\n}\n\nfunction createKey() {\n  return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n  return {\n    usr: location.state,\n    key: location.key,\n    idx: index,\n  };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n  current: string | Location,\n  to: To,\n  state: any = null,\n  key?: string\n): Readonly<Location> {\n  let location: Readonly<Location> = {\n    pathname: typeof current === \"string\" ? current : current.pathname,\n    search: \"\",\n    hash: \"\",\n    ...(typeof to === \"string\" ? parsePath(to) : to),\n    state,\n    // TODO: This could be cleaned up.  push/replace should probably just take\n    // full Locations now and avoid the need to run through this flow at all\n    // But that's a pretty big refactor to the current test suite so going to\n    // keep as is for the time being and just let any incoming keys take precedence\n    key: (to && (to as Location).key) || key || createKey(),\n  };\n  return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n  pathname = \"/\",\n  search = \"\",\n  hash = \"\",\n}: Partial<Path>) {\n  if (search && search !== \"?\")\n    pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n  if (hash && hash !== \"#\")\n    pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n  return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial<Path> {\n  let parsedPath: Partial<Path> = {};\n\n  if (path) {\n    let hashIndex = path.indexOf(\"#\");\n    if (hashIndex >= 0) {\n      parsedPath.hash = path.substr(hashIndex);\n      path = path.substr(0, hashIndex);\n    }\n\n    let searchIndex = path.indexOf(\"?\");\n    if (searchIndex >= 0) {\n      parsedPath.search = path.substr(searchIndex);\n      path = path.substr(0, searchIndex);\n    }\n\n    if (path) {\n      parsedPath.pathname = path;\n    }\n  }\n\n  return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n  window?: Window;\n  v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n  getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n  createHref: (window: Window, to: To) => string,\n  validateLocation: ((location: Location, to: To) => void) | null,\n  options: UrlHistoryOptions = {}\n): UrlHistory {\n  let { window = document.defaultView!, v5Compat = false } = options;\n  let globalHistory = window.history;\n  let action = Action.Pop;\n  let listener: Listener | null = null;\n\n  let index = getIndex()!;\n  // Index should only be null when we initialize. If not, it's because the\n  // user called history.pushState or history.replaceState directly, in which\n  // case we should log a warning as it will result in bugs.\n  if (index == null) {\n    index = 0;\n    globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n  }\n\n  function getIndex(): number {\n    let state = globalHistory.state || { idx: null };\n    return state.idx;\n  }\n\n  function handlePop() {\n    action = Action.Pop;\n    let nextIndex = getIndex();\n    let delta = nextIndex == null ? null : nextIndex - index;\n    index = nextIndex;\n    if (listener) {\n      listener({ action, location: history.location, delta });\n    }\n  }\n\n  function push(to: To, state?: any) {\n    action = Action.Push;\n    let location = createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n\n    index = getIndex() + 1;\n    let historyState = getHistoryState(location, index);\n    let url = history.createHref(location);\n\n    // try...catch because iOS limits us to 100 pushState calls :/\n    try {\n      globalHistory.pushState(historyState, \"\", url);\n    } catch (error) {\n      // If the exception is because `state` can't be serialized, let that throw\n      // outwards just like a replace call would so the dev knows the cause\n      // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n      // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n      if (error instanceof DOMException && error.name === \"DataCloneError\") {\n        throw error;\n      }\n      // They are going to lose state here, but there is no real\n      // way to warn them about it since the page will refresh...\n      window.location.assign(url);\n    }\n\n    if (v5Compat && listener) {\n      listener({ action, location: history.location, delta: 1 });\n    }\n  }\n\n  function replace(to: To, state?: any) {\n    action = Action.Replace;\n    let location = createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n\n    index = getIndex();\n    let historyState = getHistoryState(location, index);\n    let url = history.createHref(location);\n    globalHistory.replaceState(historyState, \"\", url);\n\n    if (v5Compat && listener) {\n      listener({ action, location: history.location, delta: 0 });\n    }\n  }\n\n  function createURL(to: To): URL {\n    // window.location.origin is \"null\" (the literal string value) in Firefox\n    // under certain conditions, notably when serving from a local HTML file\n    // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n    let base =\n      window.location.origin !== \"null\"\n        ? window.location.origin\n        : window.location.href;\n\n    let href = typeof to === \"string\" ? to : createPath(to);\n    // Treating this as a full URL will strip any trailing spaces so we need to\n    // pre-encode them since they might be part of a matching splat param from\n    // an ancestor route\n    href = href.replace(/ $/, \"%20\");\n    invariant(\n      base,\n      `No window.location.(origin|href) available to create URL for href: ${href}`\n    );\n    return new URL(href, base);\n  }\n\n  let history: History = {\n    get action() {\n      return action;\n    },\n    get location() {\n      return getLocation(window, globalHistory);\n    },\n    listen(fn: Listener) {\n      if (listener) {\n        throw new Error(\"A history only accepts one active listener\");\n      }\n      window.addEventListener(PopStateEventType, handlePop);\n      listener = fn;\n\n      return () => {\n        window.removeEventListener(PopStateEventType, handlePop);\n        listener = null;\n      };\n    },\n    createHref(to) {\n      return createHref(window, to);\n    },\n    createURL,\n    encodeLocation(to) {\n      // Encode a Location the same way window.location would\n      let url = createURL(to);\n      return {\n        pathname: url.pathname,\n        search: url.search,\n        hash: url.hash,\n      };\n    },\n    push,\n    replace,\n    go(n) {\n      return globalHistory.go(n);\n    },\n  };\n\n  return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n  [routeId: string]: any;\n}\n\nexport enum ResultType {\n  data = \"data\",\n  deferred = \"deferred\",\n  redirect = \"redirect\",\n  error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n  type: ResultType.data;\n  data: unknown;\n  statusCode?: number;\n  headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n  type: ResultType.deferred;\n  deferredData: DeferredData;\n  statusCode?: number;\n  headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n  type: ResultType.redirect;\n  // We keep the raw Response for redirects so we can return it verbatim\n  response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n  type: ResultType.error;\n  error: unknown;\n  statusCode?: number;\n  headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n  | SuccessResult\n  | DeferredResult\n  | RedirectResult\n  | ErrorResult;\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface HandlerResult {\n  type: \"data\" | \"error\";\n  result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase<LowerCaseFormMethod>;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `<Form>`,\n * useSubmit(), `<fetcher.Form>`, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude<FormMethod, \"get\">;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState.  This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude<V7_FormMethod, \"GET\">;\n\nexport type FormEncType =\n  | \"application/x-www-form-urlencoded\"\n  | \"multipart/form-data\"\n  | \"application/json\"\n  | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n  [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n  | {\n      formMethod: FormMethod | V7_FormMethod;\n      formAction: string;\n      formEncType: FormEncType;\n      formData: FormData;\n      json: undefined;\n      text: undefined;\n    }\n  | {\n      formMethod: FormMethod | V7_FormMethod;\n      formAction: string;\n      formEncType: FormEncType;\n      formData: undefined;\n      json: JsonValue;\n      text: undefined;\n    }\n  | {\n      formMethod: FormMethod | V7_FormMethod;\n      formAction: string;\n      formEncType: FormEncType;\n      formData: undefined;\n      json: undefined;\n      text: string;\n    };\n\n/**\n * @private\n * Arguments passed to route loader/action functions.  Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs<Context> {\n  request: Request;\n  params: Params;\n  context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n//   ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n//   Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs<Context = any>\n  extends DataFunctionArgs<Context> {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs<Context = any>\n  extends DataFunctionArgs<Context> {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return).  Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable<unknown> | null;\n\ntype DataFunctionReturnValue = Promise<DataFunctionValue> | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction<Context = any> = {\n  (\n    args: LoaderFunctionArgs<Context>,\n    handlerCtx?: unknown\n  ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction<Context = any> {\n  (\n    args: ActionFunctionArgs<Context>,\n    handlerCtx?: unknown\n  ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n  currentUrl: URL;\n  currentParams: AgnosticDataRouteMatch[\"params\"];\n  nextUrl: URL;\n  nextParams: AgnosticDataRouteMatch[\"params\"];\n  formMethod?: Submission[\"formMethod\"];\n  formAction?: Submission[\"formAction\"];\n  formEncType?: Submission[\"formEncType\"];\n  text?: Submission[\"text\"];\n  formData?: Submission[\"formData\"];\n  json?: Submission[\"json\"];\n  actionStatus?: number;\n  actionResult?: any;\n  defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature.  This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments.  It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n  (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n  (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n  extends AgnosticRouteMatch<string, AgnosticDataRouteObject> {\n  shouldLoad: boolean;\n  resolve: (\n    handlerOverride?: (\n      handler: (ctx?: unknown) => DataFunctionReturnValue\n    ) => Promise<HandlerResult>\n  ) => Promise<HandlerResult>;\n}\n\nexport interface DataStrategyFunctionArgs<Context = any>\n  extends DataFunctionArgs<Context> {\n  matches: DataStrategyMatch[];\n}\n\nexport interface DataStrategyFunction {\n  (args: DataStrategyFunctionArgs): Promise<HandlerResult[]>;\n}\n\nexport interface AgnosticPatchRoutesOnMissFunction<\n  M extends AgnosticRouteMatch = AgnosticRouteMatch\n> {\n  (opts: {\n    path: string;\n    matches: M[];\n    patch: (routeId: string | null, children: AgnosticRouteObject[]) => void;\n  }): void | Promise<void>;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n  (route: AgnosticRouteObject): {\n    hasErrorBoundary: boolean;\n  } & Record<string, any>;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n  | \"lazy\"\n  | \"caseSensitive\"\n  | \"path\"\n  | \"id\"\n  | \"index\"\n  | \"children\";\n\nexport const immutableRouteKeys = new Set<ImmutableRouteKey>([\n  \"lazy\",\n  \"caseSensitive\",\n  \"path\",\n  \"id\",\n  \"index\",\n  \"children\",\n]);\n\ntype RequireOne<T, Key = keyof T> = Exclude<\n  {\n    [K in keyof T]: K extends Key ? Omit<T, K> & Required<Pick<T, K>> : never;\n  }[keyof T],\n  undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction<R extends AgnosticRouteObject> {\n  (): Promise<RequireOne<Omit<R, ImmutableRouteKey>>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n  caseSensitive?: boolean;\n  path?: string;\n  id?: string;\n  loader?: LoaderFunction | boolean;\n  action?: ActionFunction | boolean;\n  hasErrorBoundary?: boolean;\n  shouldRevalidate?: ShouldRevalidateFunction;\n  handle?: any;\n  lazy?: LazyRouteFunction<AgnosticBaseRouteObject>;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n  children?: undefined;\n  index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n  children?: AgnosticRouteObject[];\n  index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n  | AgnosticIndexRouteObject\n  | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n  id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n  children?: AgnosticDataRouteObject[];\n  id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n  | AgnosticDataIndexRouteObject\n  | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record<string, AgnosticDataRouteObject | undefined>;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam<Path extends string> =\n  // split path into individual path segments\n  Path extends `${infer L}/${infer R}`\n    ? _PathParam<L> | _PathParam<R>\n    : // find params after `:`\n    Path extends `:${infer Param}`\n    ? Param extends `${infer Optional}?`\n      ? Optional\n      : Param\n    : // otherwise, there aren't any params present\n      never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam<Path extends string> =\n  // check if path is just a wildcard\n  Path extends \"*\" | \"/*\"\n    ? \"*\"\n    : // look for wildcard at the end of the path\n    Path extends `${infer Rest}/*`\n    ? \"*\" | _PathParam<Rest>\n    : // look for params in the absence of wildcards\n      _PathParam<Path>;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey<Segment extends string> =\n  // if you could not find path params, fallback to `string`\n  [PathParam<Segment>] extends [never] ? string : PathParam<Segment>;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params<Key extends string = string> = {\n  readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n  /**\n   * The names and values of dynamic parameters in the URL.\n   */\n  params: Params<ParamKey>;\n  /**\n   * The portion of the URL pathname that was matched.\n   */\n  pathname: string;\n  /**\n   * The portion of the URL pathname that was matched before child routes.\n   */\n  pathnameBase: string;\n  /**\n   * The route object that was used to match.\n   */\n  route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n  extends AgnosticRouteMatch<string, AgnosticDataRouteObject> {}\n\nfunction isIndexRoute(\n  route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n  return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n  routes: AgnosticRouteObject[],\n  mapRouteProperties: MapRoutePropertiesFunction,\n  parentPath: string[] = [],\n  manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n  return routes.map((route, index) => {\n    let treePath = [...parentPath, String(index)];\n    let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n    invariant(\n      route.index !== true || !route.children,\n      `Cannot specify children on an index route`\n    );\n    invariant(\n      !manifest[id],\n      `Found a route id collision on id \"${id}\".  Route ` +\n        \"id's must be globally unique within Data Router usages\"\n    );\n\n    if (isIndexRoute(route)) {\n      let indexRoute: AgnosticDataIndexRouteObject = {\n        ...route,\n        ...mapRouteProperties(route),\n        id,\n      };\n      manifest[id] = indexRoute;\n      return indexRoute;\n    } else {\n      let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n        ...route,\n        ...mapRouteProperties(route),\n        id,\n        children: undefined,\n      };\n      manifest[id] = pathOrLayoutRoute;\n\n      if (route.children) {\n        pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n          route.children,\n          mapRouteProperties,\n          treePath,\n          manifest\n        );\n      }\n\n      return pathOrLayoutRoute;\n    }\n  });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n  routes: RouteObjectType[],\n  locationArg: Partial<Location> | string,\n  basename = \"/\"\n): AgnosticRouteMatch<string, RouteObjectType>[] | null {\n  return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n  routes: RouteObjectType[],\n  locationArg: Partial<Location> | string,\n  basename: string,\n  allowPartial: boolean\n): AgnosticRouteMatch<string, RouteObjectType>[] | null {\n  let location =\n    typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n  let pathname = stripBasename(location.pathname || \"/\", basename);\n\n  if (pathname == null) {\n    return null;\n  }\n\n  let branches = flattenRoutes(routes);\n  rankRouteBranches(branches);\n\n  let matches = null;\n  for (let i = 0; matches == null && i < branches.length; ++i) {\n    // Incoming pathnames are generally encoded from either window.location\n    // or from router.navigate, but we want to match against the unencoded\n    // paths in the route definitions.  Memory router locations won't be\n    // encoded here but there also shouldn't be anything to decode so this\n    // should be a safe operation.  This avoids needing matchRoutes to be\n    // history-aware.\n    let decoded = decodePath(pathname);\n    matches = matchRouteBranch<string, RouteObjectType>(\n      branches[i],\n      decoded,\n      allowPartial\n    );\n  }\n\n  return matches;\n}\n\nexport interface UIMatch<Data = unknown, Handle = unknown> {\n  id: string;\n  pathname: string;\n  params: AgnosticRouteMatch[\"params\"];\n  data: Data;\n  handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n  match: AgnosticDataRouteMatch,\n  loaderData: RouteData\n): UIMatch {\n  let { route, pathname, params } = match;\n  return {\n    id: route.id,\n    pathname,\n    params,\n    data: loaderData[route.id],\n    handle: route.handle,\n  };\n}\n\ninterface RouteMeta<\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n  relativePath: string;\n  caseSensitive: boolean;\n  childrenIndex: number;\n  route: RouteObjectType;\n}\n\ninterface RouteBranch<\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n  path: string;\n  score: number;\n  routesMeta: RouteMeta<RouteObjectType>[];\n}\n\nfunction flattenRoutes<\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n  routes: RouteObjectType[],\n  branches: RouteBranch<RouteObjectType>[] = [],\n  parentsMeta: RouteMeta<RouteObjectType>[] = [],\n  parentPath = \"\"\n): RouteBranch<RouteObjectType>[] {\n  let flattenRoute = (\n    route: RouteObjectType,\n    index: number,\n    relativePath?: string\n  ) => {\n    let meta: RouteMeta<RouteObjectType> = {\n      relativePath:\n        relativePath === undefined ? route.path || \"\" : relativePath,\n      caseSensitive: route.caseSensitive === true,\n      childrenIndex: index,\n      route,\n    };\n\n    if (meta.relativePath.startsWith(\"/\")) {\n      invariant(\n        meta.relativePath.startsWith(parentPath),\n        `Absolute route path \"${meta.relativePath}\" nested under path ` +\n          `\"${parentPath}\" is not valid. An absolute child route path ` +\n          `must start with the combined path of all its parent routes.`\n      );\n\n      meta.relativePath = meta.relativePath.slice(parentPath.length);\n    }\n\n    let path = joinPaths([parentPath, meta.relativePath]);\n    let routesMeta = parentsMeta.concat(meta);\n\n    // Add the children before adding this route to the array, so we traverse the\n    // route tree depth-first and child routes appear before their parents in\n    // the \"flattened\" version.\n    if (route.children && route.children.length > 0) {\n      invariant(\n        // Our types know better, but runtime JS may not!\n        // @ts-expect-error\n        route.index !== true,\n        `Index routes must not have child routes. Please remove ` +\n          `all child routes from route path \"${path}\".`\n      );\n      flattenRoutes(route.children, branches, routesMeta, path);\n    }\n\n    // Routes without a path shouldn't ever match by themselves unless they are\n    // index routes, so don't add them to the list of possible branches.\n    if (route.path == null && !route.index) {\n      return;\n    }\n\n    branches.push({\n      path,\n      score: computeScore(path, route.index),\n      routesMeta,\n    });\n  };\n  routes.forEach((route, index) => {\n    // coarse-grain check for optional params\n    if (route.path === \"\" || !route.path?.includes(\"?\")) {\n      flattenRoute(route, index);\n    } else {\n      for (let exploded of explodeOptionalSegments(route.path)) {\n        flattenRoute(route, index, exploded);\n      }\n    }\n  });\n\n  return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n  let segments = path.split(\"/\");\n  if (segments.length === 0) return [];\n\n  let [first, ...rest] = segments;\n\n  // Optional path segments are denoted by a trailing `?`\n  let isOptional = first.endsWith(\"?\");\n  // Compute the corresponding required segment: `foo?` -> `foo`\n  let required = first.replace(/\\?$/, \"\");\n\n  if (rest.length === 0) {\n    // Intepret empty string as omitting an optional segment\n    // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n    return isOptional ? [required, \"\"] : [required];\n  }\n\n  let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n  let result: string[] = [];\n\n  // All child paths with the prefix.  Do this for all children before the\n  // optional version for all children, so we get consistent ordering where the\n  // parent optional aspect is preferred as required.  Otherwise, we can get\n  // child sections interspersed where deeper optional segments are higher than\n  // parent optional segments, where for example, /:two would explode _earlier_\n  // then /:one.  By always including the parent as required _for all children_\n  // first, we avoid this issue\n  result.push(\n    ...restExploded.map((subpath) =>\n      subpath === \"\" ? required : [required, subpath].join(\"/\")\n    )\n  );\n\n  // Then, if this is an optional value, add all child versions without\n  if (isOptional) {\n    result.push(...restExploded);\n  }\n\n  // for absolute paths, ensure `/` instead of empty segment\n  return result.map((exploded) =>\n    path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n  );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n  branches.sort((a, b) =>\n    a.score !== b.score\n      ? b.score - a.score // Higher score first\n      : compareIndexes(\n          a.routesMeta.map((meta) => meta.childrenIndex),\n          b.routesMeta.map((meta) => meta.childrenIndex)\n        )\n  );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n  let segments = path.split(\"/\");\n  let initialScore = segments.length;\n  if (segments.some(isSplat)) {\n    initialScore += splatPenalty;\n  }\n\n  if (index) {\n    initialScore += indexRouteValue;\n  }\n\n  return segments\n    .filter((s) => !isSplat(s))\n    .reduce(\n      (score, segment) =>\n        score +\n        (paramRe.test(segment)\n          ? dynamicSegmentValue\n          : segment === \"\"\n          ? emptySegmentValue\n          : staticSegmentValue),\n      initialScore\n    );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n  let siblings =\n    a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n  return siblings\n    ? // If two routes are siblings, we should try to match the earlier sibling\n      // first. This allows people to have fine-grained control over the matching\n      // behavior by simply putting routes with identical paths in the order they\n      // want them tried.\n      a[a.length - 1] - b[b.length - 1]\n    : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n      // so they sort equally.\n      0;\n}\n\nfunction matchRouteBranch<\n  ParamKey extends string = string,\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n  branch: RouteBranch<RouteObjectType>,\n  pathname: string,\n  allowPartial = false\n): AgnosticRouteMatch<ParamKey, RouteObjectType>[] | null {\n  let { routesMeta } = branch;\n\n  let matchedParams = {};\n  let matchedPathname = \"/\";\n  let matches: AgnosticRouteMatch<ParamKey, RouteObjectType>[] = [];\n  for (let i = 0; i < routesMeta.length; ++i) {\n    let meta = routesMeta[i];\n    let end = i === routesMeta.length - 1;\n    let remainingPathname =\n      matchedPathname === \"/\"\n        ? pathname\n        : pathname.slice(matchedPathname.length) || \"/\";\n    let match = matchPath(\n      { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n      remainingPathname\n    );\n\n    let route = meta.route;\n\n    if (\n      !match &&\n      end &&\n      allowPartial &&\n      !routesMeta[routesMeta.length - 1].route.index\n    ) {\n      match = matchPath(\n        {\n          path: meta.relativePath,\n          caseSensitive: meta.caseSensitive,\n          end: false,\n        },\n        remainingPathname\n      );\n    }\n\n    if (!match) {\n      return null;\n    }\n\n    Object.assign(matchedParams, match.params);\n\n    matches.push({\n      // TODO: Can this as be avoided?\n      params: matchedParams as Params<ParamKey>,\n      pathname: joinPaths([matchedPathname, match.pathname]),\n      pathnameBase: normalizePathname(\n        joinPaths([matchedPathname, match.pathnameBase])\n      ),\n      route,\n    });\n\n    if (match.pathnameBase !== \"/\") {\n      matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n    }\n  }\n\n  return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath<Path extends string>(\n  originalPath: Path,\n  params: {\n    [key in PathParam<Path>]: string | null;\n  } = {} as any\n): string {\n  let path: string = originalPath;\n  if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n    warning(\n      false,\n      `Route path \"${path}\" will be treated as if it were ` +\n        `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n        `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n        `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n    );\n    path = path.replace(/\\*$/, \"/*\") as Path;\n  }\n\n  // ensure `/` is added at the beginning if the path is absolute\n  const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n  const stringify = (p: any) =>\n    p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n  const segments = path\n    .split(/\\/+/)\n    .map((segment, index, array) => {\n      const isLastSegment = index === array.length - 1;\n\n      // only apply the splat if it's the last segment\n      if (isLastSegment && segment === \"*\") {\n        const star = \"*\" as PathParam<Path>;\n        // Apply the splat\n        return stringify(params[star]);\n      }\n\n      const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n      if (keyMatch) {\n        const [, key, optional] = keyMatch;\n        let param = params[key as PathParam<Path>];\n        invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n        return stringify(param);\n      }\n\n      // Remove any optional markers from optional static segments\n      return segment.replace(/\\?$/g, \"\");\n    })\n    // Remove empty segments\n    .filter((segment) => !!segment);\n\n  return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern<Path extends string = string> {\n  /**\n   * A string to match against a URL pathname. May contain `:id`-style segments\n   * to indicate placeholders for dynamic parameters. May also end with `/*` to\n   * indicate matching the rest of the URL pathname.\n   */\n  path: Path;\n  /**\n   * Should be `true` if the static portions of the `path` should be matched in\n   * the same case.\n   */\n  caseSensitive?: boolean;\n  /**\n   * Should be `true` if this pattern should match the entire URL pathname.\n   */\n  end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch<ParamKey extends string = string> {\n  /**\n   * The names and values of dynamic parameters in the URL.\n   */\n  params: Params<ParamKey>;\n  /**\n   * The portion of the URL pathname that was matched.\n   */\n  pathname: string;\n  /**\n   * The portion of the URL pathname that was matched before child routes.\n   */\n  pathnameBase: string;\n  /**\n   * The pattern that was used to match.\n   */\n  pattern: PathPattern;\n}\n\ntype Mutable<T> = {\n  -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(\n  pattern: PathPattern<Path> | Path,\n  pathname: string\n): PathMatch<ParamKey> | null {\n  if (typeof pattern === \"string\") {\n    pattern = { path: pattern, caseSensitive: false, end: true };\n  }\n\n  let [matcher, compiledParams] = compilePath(\n    pattern.path,\n    pattern.caseSensitive,\n    pattern.end\n  );\n\n  let match = pathname.match(matcher);\n  if (!match) return null;\n\n  let matchedPathname = match[0];\n  let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n  let captureGroups = match.slice(1);\n  let params: Params = compiledParams.reduce<Mutable<Params>>(\n    (memo, { paramName, isOptional }, index) => {\n      // We need to compute the pathnameBase here using the raw splat value\n      // instead of using params[\"*\"] later because it will be decoded then\n      if (paramName === \"*\") {\n        let splatValue = captureGroups[index] || \"\";\n        pathnameBase = matchedPathname\n          .slice(0, matchedPathname.length - splatValue.length)\n          .replace(/(.)\\/+$/, \"$1\");\n      }\n\n      const value = captureGroups[index];\n      if (isOptional && !value) {\n        memo[paramName] = undefined;\n      } else {\n        memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n      }\n      return memo;\n    },\n    {}\n  );\n\n  return {\n    params,\n    pathname: matchedPathname,\n    pathnameBase,\n    pattern,\n  };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n  path: string,\n  caseSensitive = false,\n  end = true\n): [RegExp, CompiledPathParam[]] {\n  warning(\n    path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n    `Route path \"${path}\" will be treated as if it were ` +\n      `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n      `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n      `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n  );\n\n  let params: CompiledPathParam[] = [];\n  let regexpSource =\n    \"^\" +\n    path\n      .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n      .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n      .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n      .replace(\n        /\\/:([\\w-]+)(\\?)?/g,\n        (_: string, paramName: string, isOptional) => {\n          params.push({ paramName, isOptional: isOptional != null });\n          return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n        }\n      );\n\n  if (path.endsWith(\"*\")) {\n    params.push({ paramName: \"*\" });\n    regexpSource +=\n      path === \"*\" || path === \"/*\"\n        ? \"(.*)$\" // Already matched the initial /, just match the rest\n        : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n  } else if (end) {\n    // When matching to the end, ignore trailing slashes\n    regexpSource += \"\\\\/*$\";\n  } else if (path !== \"\" && path !== \"/\") {\n    // If our path is non-empty and contains anything beyond an initial slash,\n    // then we have _some_ form of path in our regex, so we should expect to\n    // match only if we find the end of this path segment.  Look for an optional\n    // non-captured trailing slash (to match a portion of the URL) or the end\n    // of the path (if we've matched to the end).  We used to do this with a\n    // word boundary but that gives false positives on routes like\n    // /user-preferences since `-` counts as a word boundary.\n    regexpSource += \"(?:(?=\\\\/|$))\";\n  } else {\n    // Nothing to match for \"\" or \"/\"\n  }\n\n  let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n  return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n  try {\n    return value\n      .split(\"/\")\n      .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n      .join(\"/\");\n  } catch (error) {\n    warning(\n      false,\n      `The URL path \"${value}\" could not be decoded because it is is a ` +\n        `malformed URL segment. This is probably due to a bad percent ` +\n        `encoding (${error}).`\n    );\n\n    return value;\n  }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n  pathname: string,\n  basename: string\n): string | null {\n  if (basename === \"/\") return pathname;\n\n  if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n    return null;\n  }\n\n  // We want to leave trailing slash behavior in the user's control, so if they\n  // specify a basename with a trailing slash, we should support it\n  let startIndex = basename.endsWith(\"/\")\n    ? basename.length - 1\n    : basename.length;\n  let nextChar = pathname.charAt(startIndex);\n  if (nextChar && nextChar !== \"/\") {\n    // pathname does not start with basename/\n    return null;\n  }\n\n  return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n  let {\n    pathname: toPathname,\n    search = \"\",\n    hash = \"\",\n  } = typeof to === \"string\" ? parsePath(to) : to;\n\n  let pathname = toPathname\n    ? toPathname.startsWith(\"/\")\n      ? toPathname\n      : resolvePathname(toPathname, fromPathname)\n    : fromPathname;\n\n  return {\n    pathname,\n    search: normalizeSearch(search),\n    hash: normalizeHash(hash),\n  };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n  let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n  let relativeSegments = relativePath.split(\"/\");\n\n  relativeSegments.forEach((segment) => {\n    if (segment === \"..\") {\n      // Keep the root \"\" segment so the pathname starts at /\n      if (segments.length > 1) segments.pop();\n    } else if (segment !== \".\") {\n      segments.push(segment);\n    }\n  });\n\n  return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n  char: string,\n  field: string,\n  dest: string,\n  path: Partial<Path>\n) {\n  return (\n    `Cannot include a '${char}' character in a manually specified ` +\n    `\\`to.${field}\\` field [${JSON.stringify(\n      path\n    )}].  Please separate it out to the ` +\n    `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n    `a string in <Link to=\"...\"> and the router will parse it for you.`\n  );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same.  Both of the following examples should link back to the root:\n *\n *   <Route path=\"/\">\n *     <Route path=\"accounts\" element={<Link to=\"..\"}>\n *   </Route>\n *\n *   <Route path=\"/\">\n *     <Route path=\"accounts\">\n *       <Route element={<AccountsLayout />}>       // <-- Does not contribute\n *         <Route index element={<Link to=\"..\"} />  // <-- Does not contribute\n *       </Route\n *     </Route>\n *   </Route>\n */\nexport function getPathContributingMatches<\n  T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n  return matches.filter(\n    (match, index) =>\n      index === 0 || (match.route.path && match.route.path.length > 0)\n  );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n  T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n  let pathMatches = getPathContributingMatches(matches);\n\n  // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n  // match so we include splat values for \".\" links.  See:\n  // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n  if (v7_relativeSplatPath) {\n    return pathMatches.map((match, idx) =>\n      idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n    );\n  }\n\n  return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n  toArg: To,\n  routePathnames: string[],\n  locationPathname: string,\n  isPathRelative = false\n): Path {\n  let to: Partial<Path>;\n  if (typeof toArg === \"string\") {\n    to = parsePath(toArg);\n  } else {\n    to = { ...toArg };\n\n    invariant(\n      !to.pathname || !to.pathname.includes(\"?\"),\n      getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n    );\n    invariant(\n      !to.pathname || !to.pathname.includes(\"#\"),\n      getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n    );\n    invariant(\n      !to.search || !to.search.includes(\"#\"),\n      getInvalidPathError(\"#\", \"search\", \"hash\", to)\n    );\n  }\n\n  let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n  let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n  let from: string;\n\n  // Routing is relative to the current pathname if explicitly requested.\n  //\n  // If a pathname is explicitly provided in `to`, it should be relative to the\n  // route context. This is explained in `Note on `<Link to>` values` in our\n  // migration guide from v5 as a means of disambiguation between `to` values\n  // that begin with `/` and those that do not. However, this is problematic for\n  // `to` values that do not provide a pathname. `to` can simply be a search or\n  // hash string, in which case we should assume that the navigation is relative\n  // to the current location's pathname and *not* the route pathname.\n  if (toPathname == null) {\n    from = locationPathname;\n  } else {\n    let routePathnameIndex = routePathnames.length - 1;\n\n    // With relative=\"route\" (the default), each leading .. segment means\n    // \"go up one route\" instead of \"go up one URL segment\".  This is a key\n    // difference from how <a href> works and a major reason we call this a\n    // \"to\" value instead of a \"href\".\n    if (!isPathRelative && toPathname.startsWith(\"..\")) {\n      let toSegments = toPathname.split(\"/\");\n\n      while (toSegments[0] === \"..\") {\n        toSegments.shift();\n        routePathnameIndex -= 1;\n      }\n\n      to.pathname = toSegments.join(\"/\");\n    }\n\n    from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n  }\n\n  let path = resolvePath(to, from);\n\n  // Ensure the pathname has a trailing slash if the original \"to\" had one\n  let hasExplicitTrailingSlash =\n    toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n  // Or if this was a link to the current path which has a trailing slash\n  let hasCurrentTrailingSlash =\n    (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n  if (\n    !path.pathname.endsWith(\"/\") &&\n    (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n  ) {\n    path.pathname += \"/\";\n  }\n\n  return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n  // Empty strings should be treated the same as / paths\n  return to === \"\" || (to as Path).pathname === \"\"\n    ? \"/\"\n    : typeof to === \"string\"\n    ? parsePath(to).pathname\n    : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n  paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n  pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n  !search || search === \"?\"\n    ? \"\"\n    : search.startsWith(\"?\")\n    ? search\n    : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n  !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = <Data>(\n  data: Data,\n  init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n  let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n  let headers = new Headers(responseInit.headers);\n  if (!headers.has(\"Content-Type\")) {\n    headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n  }\n\n  return new Response(JSON.stringify(data), {\n    ...responseInit,\n    headers,\n  });\n};\n\nexport class DataWithResponseInit<D> {\n  type: string = \"DataWithResponseInit\";\n  data: D;\n  init: ResponseInit | null;\n\n  constructor(data: D, init?: ResponseInit) {\n    this.data = data;\n    this.init = init || null;\n  }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data<D>(data: D, init?: number | ResponseInit) {\n  return new DataWithResponseInit(\n    data,\n    typeof init === \"number\" ? { status: init } : init\n  );\n}\n\nexport interface TrackedPromise extends Promise<any> {\n  _tracked?: boolean;\n  _data?: any;\n  _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n  private pendingKeysSet: Set<string> = new Set<string>();\n  private controller: AbortController;\n  private abortPromise: Promise<void>;\n  private unlistenAbortSignal: () => void;\n  private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n    new Set();\n  data: Record<string, unknown>;\n  init?: ResponseInit;\n  deferredKeys: string[] = [];\n\n  constructor(data: Record<string, unknown>, responseInit?: ResponseInit) {\n    invariant(\n      data && typeof data === \"object\" && !Array.isArray(data),\n      \"defer() only accepts plain objects\"\n    );\n\n    // Set up an AbortController + Promise we can race against to exit early\n    // cancellation\n    let reject: (e: AbortedDeferredError) => void;\n    this.abortPromise = new Promise((_, r) => (reject = r));\n    this.controller = new AbortController();\n    let onAbort = () =>\n      reject(new AbortedDeferredError(\"Deferred data aborted\"));\n    this.unlistenAbortSignal = () =>\n      this.controller.signal.removeEventListener(\"abort\", onAbort);\n    this.controller.signal.addEventListener(\"abort\", onAbort);\n\n    this.data = Object.entries(data).reduce(\n      (acc, [key, value]) =>\n        Object.assign(acc, {\n          [key]: this.trackPromise(key, value),\n        }),\n      {}\n    );\n\n    if (this.done) {\n      // All incoming values were resolved\n      this.unlistenAbortSignal();\n    }\n\n    this.init = responseInit;\n  }\n\n  private trackPromise(\n    key: string,\n    value: Promise<unknown> | unknown\n  ): TrackedPromise | unknown {\n    if (!(value instanceof Promise)) {\n      return value;\n    }\n\n    this.deferredKeys.push(key);\n    this.pendingKeysSet.add(key);\n\n    // We store a little wrapper promise that will be extended with\n    // _data/_error props upon resolve/reject\n    let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n      (data) => this.onSettle(promise, key, undefined, data as unknown),\n      (error) => this.onSettle(promise, key, error as unknown)\n    );\n\n    // Register rejection listeners to avoid uncaught promise rejections on\n    // errors or aborted deferred values\n    promise.catch(() => {});\n\n    Object.defineProperty(promise, \"_tracked\", { get: () => true });\n    return promise;\n  }\n\n  private onSettle(\n    promise: TrackedPromise,\n    key: string,\n    error: unknown,\n    data?: unknown\n  ): unknown {\n    if (\n      this.controller.signal.aborted &&\n      error instanceof AbortedDeferredError\n    ) {\n      this.unlistenAbortSignal();\n      Object.defineProperty(promise, \"_error\", { get: () => error });\n      return Promise.reject(error);\n    }\n\n    this.pendingKeysSet.delete(key);\n\n    if (this.done) {\n      // Nothing left to abort!\n      this.unlistenAbortSignal();\n    }\n\n    // If the promise was resolved/rejected with undefined, we'll throw an error as you\n    // should always resolve with a value or null\n    if (error === undefined && data === undefined) {\n      let undefinedError = new Error(\n        `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n          `you must resolve/reject with a value or \\`null\\`.`\n      );\n      Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n      this.emit(false, key);\n      return Promise.reject(undefinedError);\n    }\n\n    if (data === undefined) {\n      Object.defineProperty(promise, \"_error\", { get: () => error });\n      this.emit(false, key);\n      return Promise.reject(error);\n    }\n\n    Object.defineProperty(promise, \"_data\", { get: () => data });\n    this.emit(false, key);\n    return data;\n  }\n\n  private emit(aborted: boolean, settledKey?: string) {\n    this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n  }\n\n  subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n    this.subscribers.add(fn);\n    return () => this.subscribers.delete(fn);\n  }\n\n  cancel() {\n    this.controller.abort();\n    this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n    this.emit(true);\n  }\n\n  async resolveData(signal: AbortSignal) {\n    let aborted = false;\n    if (!this.done) {\n      let onAbort = () => this.cancel();\n      signal.addEventListener(\"abort\", onAbort);\n      aborted = await new Promise((resolve) => {\n        this.subscribe((aborted) => {\n          signal.removeEventListener(\"abort\", onAbort);\n          if (aborted || this.done) {\n            resolve(aborted);\n          }\n        });\n      });\n    }\n    return aborted;\n  }\n\n  get done() {\n    return this.pendingKeysSet.size === 0;\n  }\n\n  get unwrappedData() {\n    invariant(\n      this.data !== null && this.done,\n      \"Can only unwrap data on initialized and settled deferreds\"\n    );\n\n    return Object.entries(this.data).reduce(\n      (acc, [key, value]) =>\n        Object.assign(acc, {\n          [key]: unwrapTrackedPromise(value),\n        }),\n      {}\n    );\n  }\n\n  get pendingKeys() {\n    return Array.from(this.pendingKeysSet);\n  }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n  return (\n    value instanceof Promise && (value as TrackedPromise)._tracked === true\n  );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n  if (!isTrackedPromise(value)) {\n    return value;\n  }\n\n  if (value._error) {\n    throw value._error;\n  }\n  return value._data;\n}\n\nexport type DeferFunction = (\n  data: Record<string, unknown>,\n  init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n  let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n  return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n  url: string,\n  init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n  let responseInit = init;\n  if (typeof responseInit === \"number\") {\n    responseInit = { status: responseInit };\n  } else if (typeof responseInit.status === \"undefined\") {\n    responseInit.status = 302;\n  }\n\n  let headers = new Headers(responseInit.headers);\n  headers.set(\"Location\", url);\n\n  return new Response(null, {\n    ...responseInit,\n    headers,\n  });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n  let response = redirect(url, init);\n  response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n  return response;\n};\n\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n  let response = redirect(url, init);\n  response.headers.set(\"X-Remix-Replace\", \"true\");\n  return response;\n};\n\nexport type ErrorResponse = {\n  status: number;\n  statusText: string;\n  data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n  status: number;\n  statusText: string;\n  data: any;\n  private error?: Error;\n  private internal: boolean;\n\n  constructor(\n    status: number,\n    statusText: string | undefined,\n    data: any,\n    internal = false\n  ) {\n    this.status = status;\n    this.statusText = statusText || \"\";\n    this.internal = internal;\n    if (data instanceof Error) {\n      this.data = data.toString();\n      this.error = data;\n    } else {\n      this.data = data;\n    }\n  }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n  return (\n    error != null &&\n    typeof error.status === \"number\" &&\n    typeof error.statusText === \"string\" &&\n    typeof error.internal === \"boolean\" &&\n    \"data\" in error\n  );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n  Action as HistoryAction,\n  createLocation,\n  createPath,\n  invariant,\n  parsePath,\n  warning,\n} from \"./history\";\nimport type {\n  AgnosticDataRouteMatch,\n  AgnosticDataRouteObject,\n  DataStrategyMatch,\n  AgnosticRouteObject,\n  DataResult,\n  DataStrategyFunction,\n  DataStrategyFunctionArgs,\n  DeferredData,\n  DeferredResult,\n  DetectErrorBoundaryFunction,\n  ErrorResult,\n  FormEncType,\n  FormMethod,\n  HTMLFormMethod,\n  HandlerResult,\n  ImmutableRouteKey,\n  MapRoutePropertiesFunction,\n  MutationFormMethod,\n  RedirectResult,\n  RouteData,\n  RouteManifest,\n  ShouldRevalidateFunctionArgs,\n  Submission,\n  SuccessResult,\n  UIMatch,\n  V7_FormMethod,\n  V7_MutationFormMethod,\n  AgnosticPatchRoutesOnMissFunction,\n  DataWithResponseInit,\n} from \"./utils\";\nimport {\n  ErrorResponseImpl,\n  ResultType,\n  convertRouteMatchToUiMatch,\n  convertRoutesToDataRoutes,\n  getPathContributingMatches,\n  getResolveToMatches,\n  immutableRouteKeys,\n  isRouteErrorResponse,\n  joinPaths,\n  matchRoutes,\n  matchRoutesImpl,\n  resolveTo,\n  stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Return the basename for the router\n   */\n  get basename(): RouterInit[\"basename\"];\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Return the future config for the router\n   */\n  get future(): FutureConfig;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Return the current state of the router\n   */\n  get state(): RouterState;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Return the routes for this router instance\n   */\n  get routes(): AgnosticDataRouteObject[];\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Return the window associated with the router\n   */\n  get window(): RouterInit[\"window\"];\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Initialize the router, including adding history listeners and kicking off\n   * initial data fetches.  Returns a function to cleanup listeners and abort\n   * any in-progress loads\n   */\n  initialize(): Router;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Subscribe to router.state updates\n   *\n   * @param fn function to call with the new state\n   */\n  subscribe(fn: RouterSubscriber): () => void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Enable scroll restoration behavior in the router\n   *\n   * @param savedScrollPositions Object that will manage positions, in case\n   *                             it's being restored from sessionStorage\n   * @param getScrollPosition    Function to get the active Y scroll position\n   * @param getKey               Function to get the key to use for restoration\n   */\n  enableScrollRestoration(\n    savedScrollPositions: Record<string, number>,\n    getScrollPosition: GetScrollPositionFunction,\n    getKey?: GetScrollRestorationKeyFunction\n  ): () => void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Navigate forward/backward in the history stack\n   * @param to Delta to move in the history stack\n   */\n  navigate(to: number): Promise<void>;\n\n  /**\n   * Navigate to the given path\n   * @param to Path to navigate to\n   * @param opts Navigation options (method, submission, etc.)\n   */\n  navigate(to: To | null, opts?: RouterNavigateOptions): Promise<void>;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Trigger a fetcher load/submission\n   *\n   * @param key     Fetcher key\n   * @param routeId Route that owns the fetcher\n   * @param href    href to fetch\n   * @param opts    Fetcher options, (method, submission, etc.)\n   */\n  fetch(\n    key: string,\n    routeId: string,\n    href: string | null,\n    opts?: RouterFetchOptions\n  ): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Trigger a revalidation of all current route loaders and fetcher loads\n   */\n  revalidate(): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Utility function to create an href for the given location\n   * @param location\n   */\n  createHref(location: Location | URL): string;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Utility function to URL encode a destination path according to the internal\n   * history implementation\n   * @param to\n   */\n  encodeLocation(to: To): Path;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Get/create a fetcher for the given key\n   * @param key\n   */\n  getFetcher<TData = any>(key: string): Fetcher<TData>;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Delete the fetcher for a given key\n   * @param key\n   */\n  deleteFetcher(key: string): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Cleanup listeners and abort any in-progress loads\n   */\n  dispose(): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Get a navigation blocker\n   * @param key The identifier for the blocker\n   * @param fn The blocker function implementation\n   */\n  getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Delete a navigation blocker\n   * @param key The identifier for the blocker\n   */\n  deleteBlocker(key: string): void;\n\n  /**\n   * @internal\n   * PRIVATE DO NOT USE\n   *\n   * Patch additional children routes into an existing parent route\n   * @param routeId The parent route id or a callback function accepting `patch`\n   *                to perform batch patching\n   * @param children The additional children routes\n   */\n  patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * HMR needs to pass in-flight route updates to React Router\n   * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n   */\n  _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Internal fetch AbortControllers accessed by unit tests\n   */\n  _internalFetchControllers: Map<string, AbortController>;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Internal pending DeferredData instances accessed by unit tests\n   */\n  _internalActiveDeferreds: Map<string, DeferredData>;\n}\n\n/**\n * State maintained internally by the router.  During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n  /**\n   * The action of the most recent navigation\n   */\n  historyAction: HistoryAction;\n\n  /**\n   * The current location reflected by the router\n   */\n  location: Location;\n\n  /**\n   * The current set of route matches\n   */\n  matches: AgnosticDataRouteMatch[];\n\n  /**\n   * Tracks whether we've completed our initial data load\n   */\n  initialized: boolean;\n\n  /**\n   * Current scroll position we should start at for a new view\n   *  - number -> scroll position to restore to\n   *  - false -> do not restore scroll at all (used during submissions)\n   *  - null -> don't have a saved position, scroll to hash or top of page\n   */\n  restoreScrollPosition: number | false | null;\n\n  /**\n   * Indicate whether this navigation should skip resetting the scroll position\n   * if we are unable to restore the scroll position\n   */\n  preventScrollReset: boolean;\n\n  /**\n   * Tracks the state of the current navigation\n   */\n  navigation: Navigation;\n\n  /**\n   * Tracks any in-progress revalidations\n   */\n  revalidation: RevalidationState;\n\n  /**\n   * Data from the loaders for the current matches\n   */\n  loaderData: RouteData;\n\n  /**\n   * Data from the action for the current matches\n   */\n  actionData: RouteData | null;\n\n  /**\n   * Errors caught from loaders for the current matches\n   */\n  errors: RouteData | null;\n\n  /**\n   * Map of current fetchers\n   */\n  fetchers: Map<string, Fetcher>;\n\n  /**\n   * Map of current blockers\n   */\n  blockers: Map<string, Blocker>;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n  Pick<RouterState, \"loaderData\" | \"actionData\" | \"errors\">\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n  v7_fetcherPersist: boolean;\n  v7_normalizeFormMethod: boolean;\n  v7_partialHydration: boolean;\n  v7_prependBasename: boolean;\n  v7_relativeSplatPath: boolean;\n  v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n  routes: AgnosticRouteObject[];\n  history: History;\n  basename?: string;\n  /**\n   * @deprecated Use `mapRouteProperties` instead\n   */\n  detectErrorBoundary?: DetectErrorBoundaryFunction;\n  mapRouteProperties?: MapRoutePropertiesFunction;\n  future?: Partial<FutureConfig>;\n  hydrationData?: HydrationState;\n  window?: Window;\n  unstable_patchRoutesOnMiss?: AgnosticPatchRoutesOnMissFunction;\n  unstable_dataStrategy?: DataStrategyFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n  basename: Router[\"basename\"];\n  location: RouterState[\"location\"];\n  matches: RouterState[\"matches\"];\n  loaderData: RouterState[\"loaderData\"];\n  actionData: RouterState[\"actionData\"];\n  errors: RouterState[\"errors\"];\n  statusCode: number;\n  loaderHeaders: Record<string, Headers>;\n  actionHeaders: Record<string, Headers>;\n  activeDeferreds: Record<string, DeferredData> | null;\n  _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n  dataRoutes: AgnosticDataRouteObject[];\n  query(\n    request: Request,\n    opts?: {\n      requestContext?: unknown;\n      skipLoaderErrorBubbling?: boolean;\n      unstable_dataStrategy?: DataStrategyFunction;\n    }\n  ): Promise<StaticHandlerContext | Response>;\n  queryRoute(\n    request: Request,\n    opts?: {\n      routeId?: string;\n      requestContext?: unknown;\n      unstable_dataStrategy?: DataStrategyFunction;\n    }\n  ): Promise<any>;\n}\n\ntype ViewTransitionOpts = {\n  currentLocation: Location;\n  nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n  (\n    state: RouterState,\n    opts: {\n      deletedFetchers: string[];\n      unstable_viewTransitionOpts?: ViewTransitionOpts;\n      unstable_flushSync: boolean;\n    }\n  ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n  (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n  (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n  replace?: boolean;\n  state?: any;\n  fromRouteId?: string;\n  unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n  formMethod?: HTMLFormMethod;\n  formEncType?: FormEncType;\n} & (\n  | { formData: FormData; body?: undefined }\n  | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n  | LinkNavigateOptions\n  | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n  Idle: {\n    state: \"idle\";\n    location: undefined;\n    formMethod: undefined;\n    formAction: undefined;\n    formEncType: undefined;\n    formData: undefined;\n    json: undefined;\n    text: undefined;\n  };\n  Loading: {\n    state: \"loading\";\n    location: Location;\n    formMethod: Submission[\"formMethod\"] | undefined;\n    formAction: Submission[\"formAction\"] | undefined;\n    formEncType: Submission[\"formEncType\"] | undefined;\n    formData: Submission[\"formData\"] | undefined;\n    json: Submission[\"json\"] | undefined;\n    text: Submission[\"text\"] | undefined;\n  };\n  Submitting: {\n    state: \"submitting\";\n    location: Location;\n    formMethod: Submission[\"formMethod\"];\n    formAction: Submission[\"formAction\"];\n    formEncType: Submission[\"formEncType\"];\n    formData: Submission[\"formData\"];\n    json: Submission[\"json\"];\n    text: Submission[\"text\"];\n  };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates<TData = any> = {\n  Idle: {\n    state: \"idle\";\n    formMethod: undefined;\n    formAction: undefined;\n    formEncType: undefined;\n    text: undefined;\n    formData: undefined;\n    json: undefined;\n    data: TData | undefined;\n  };\n  Loading: {\n    state: \"loading\";\n    formMethod: Submission[\"formMethod\"] | undefined;\n    formAction: Submission[\"formAction\"] | undefined;\n    formEncType: Submission[\"formEncType\"] | undefined;\n    text: Submission[\"text\"] | undefined;\n    formData: Submission[\"formData\"] | undefined;\n    json: Submission[\"json\"] | undefined;\n    data: TData | undefined;\n  };\n  Submitting: {\n    state: \"submitting\";\n    formMethod: Submission[\"formMethod\"];\n    formAction: Submission[\"formAction\"];\n    formEncType: Submission[\"formEncType\"];\n    text: Submission[\"text\"];\n    formData: Submission[\"formData\"];\n    json: Submission[\"json\"];\n    data: TData | undefined;\n  };\n};\n\nexport type Fetcher<TData = any> =\n  FetcherStates<TData>[keyof FetcherStates<TData>];\n\ninterface BlockerBlocked {\n  state: \"blocked\";\n  reset(): void;\n  proceed(): void;\n  location: Location;\n}\n\ninterface BlockerUnblocked {\n  state: \"unblocked\";\n  reset: undefined;\n  proceed: undefined;\n  location: undefined;\n}\n\ninterface BlockerProceeding {\n  state: \"proceeding\";\n  reset: undefined;\n  proceed: undefined;\n  location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n  currentLocation: Location;\n  nextLocation: Location;\n  historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n  /**\n   * startNavigation does not need to complete the navigation because we\n   * redirected or got interrupted\n   */\n  shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n  /**\n   * Route matches which may have been updated from fog of war discovery\n   */\n  matches?: RouterState[\"matches\"];\n  /**\n   * Tuple for the returned or thrown value from the current action.  The routeId\n   * is the action route for success and the bubbled boundary route for errors.\n   */\n  pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n  /**\n   * Route matches which may have been updated from fog of war discovery\n   */\n  matches?: RouterState[\"matches\"];\n  /**\n   * loaderData returned from the current set of loaders\n   */\n  loaderData?: RouterState[\"loaderData\"];\n  /**\n   * errors thrown from the current set of loaders\n   */\n  errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n  routeId: string;\n  path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n  key: string;\n  match: AgnosticDataRouteMatch | null;\n  matches: AgnosticDataRouteMatch[] | null;\n  controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n  \"post\",\n  \"put\",\n  \"patch\",\n  \"delete\",\n];\nconst validMutationMethods = new Set<MutationFormMethod>(\n  validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n  \"get\",\n  ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set<FormMethod>(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n  state: \"idle\",\n  location: undefined,\n  formMethod: undefined,\n  formAction: undefined,\n  formEncType: undefined,\n  formData: undefined,\n  json: undefined,\n  text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n  state: \"idle\",\n  data: undefined,\n  formMethod: undefined,\n  formAction: undefined,\n  formEncType: undefined,\n  formData: undefined,\n  json: undefined,\n  text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n  state: \"unblocked\",\n  proceed: undefined,\n  reset: undefined,\n  location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n  hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n  const routerWindow = init.window\n    ? init.window\n    : typeof window !== \"undefined\"\n    ? window\n    : undefined;\n  const isBrowser =\n    typeof routerWindow !== \"undefined\" &&\n    typeof routerWindow.document !== \"undefined\" &&\n    typeof routerWindow.document.createElement !== \"undefined\";\n  const isServer = !isBrowser;\n\n  invariant(\n    init.routes.length > 0,\n    \"You must provide a non-empty routes array to createRouter\"\n  );\n\n  let mapRouteProperties: MapRoutePropertiesFunction;\n  if (init.mapRouteProperties) {\n    mapRouteProperties = init.mapRouteProperties;\n  } else if (init.detectErrorBoundary) {\n    // If they are still using the deprecated version, wrap it with the new API\n    let detectErrorBoundary = init.detectErrorBoundary;\n    mapRouteProperties = (route) => ({\n      hasErrorBoundary: detectErrorBoundary(route),\n    });\n  } else {\n    mapRouteProperties = defaultMapRouteProperties;\n  }\n\n  // Routes keyed by ID\n  let manifest: RouteManifest = {};\n  // Routes in tree format for matching\n  let dataRoutes = convertRoutesToDataRoutes(\n    init.routes,\n    mapRouteProperties,\n    undefined,\n    manifest\n  );\n  let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n  let basename = init.basename || \"/\";\n  let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n  let patchRoutesOnMissImpl = init.unstable_patchRoutesOnMiss;\n\n  // Config driven behavior flags\n  let future: FutureConfig = {\n    v7_fetcherPersist: false,\n    v7_normalizeFormMethod: false,\n    v7_partialHydration: false,\n    v7_prependBasename: false,\n    v7_relativeSplatPath: false,\n    v7_skipActionErrorRevalidation: false,\n    ...init.future,\n  };\n  // Cleanup function for history\n  let unlistenHistory: (() => void) | null = null;\n  // Externally-provided functions to call on all state changes\n  let subscribers = new Set<RouterSubscriber>();\n  // Externally-provided object to hold scroll restoration locations during routing\n  let savedScrollPositions: Record<string, number> | null = null;\n  // Externally-provided function to get scroll restoration keys\n  let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n  // Externally-provided function to get current scroll position\n  let getScrollPosition: GetScrollPositionFunction | null = null;\n  // One-time flag to control the initial hydration scroll restoration.  Because\n  // we don't get the saved positions from <ScrollRestoration /> until _after_\n  // the initial render, we need to manually trigger a separate updateState to\n  // send along the restoreScrollPosition\n  // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n  // SSR did the initial scroll restoration.\n  let initialScrollRestored = init.hydrationData != null;\n\n  let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n  let initialErrors: RouteData | null = null;\n\n  if (initialMatches == null && !patchRoutesOnMissImpl) {\n    // If we do not match a user-provided-route, fall back to the root\n    // to allow the error boundary to take over\n    let error = getInternalRouterError(404, {\n      pathname: init.history.location.pathname,\n    });\n    let { matches, route } = getShortCircuitMatches(dataRoutes);\n    initialMatches = matches;\n    initialErrors = { [route.id]: error };\n  }\n\n  // In SPA apps, if the user provided a patchRoutesOnMiss implementation and\n  // our initial match is a splat route, clear them out so we run through lazy\n  // discovery on hydration in case there's a more accurate lazy route match.\n  // In SSR apps (with `hydrationData`), we expect that the server will send\n  // up the proper matched routes so we don't want to run lazy discovery on\n  // initial hydration and want to hydrate into the splat route.\n  if (initialMatches && !init.hydrationData) {\n    let fogOfWar = checkFogOfWar(\n      initialMatches,\n      dataRoutes,\n      init.history.location.pathname\n    );\n    if (fogOfWar.active) {\n      initialMatches = null;\n    }\n  }\n\n  let initialized: boolean;\n  if (!initialMatches) {\n    initialized = false;\n    initialMatches = [];\n\n    // If partial hydration and fog of war is enabled, we will be running\n    // `patchRoutesOnMiss` during hydration so include any partial matches as\n    // the initial matches so we can properly render `HydrateFallback`'s\n    if (future.v7_partialHydration) {\n      let fogOfWar = checkFogOfWar(\n        null,\n        dataRoutes,\n        init.history.location.pathname\n      );\n      if (fogOfWar.active && fogOfWar.matches) {\n        initialMatches = fogOfWar.matches;\n      }\n    }\n  } else if (initialMatches.some((m) => m.route.lazy)) {\n    // All initialMatches need to be loaded before we're ready.  If we have lazy\n    // functions around still then we'll need to run them in initialize()\n    initialized = false;\n  } else if (!initialMatches.some((m) => m.route.loader)) {\n    // If we've got no loaders to run, then we're good to go\n    initialized = true;\n  } else if (future.v7_partialHydration) {\n    // If partial hydration is enabled, we're initialized so long as we were\n    // provided with hydrationData for every route with a loader, and no loaders\n    // were marked for explicit hydration\n    let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n    let errors = init.hydrationData ? init.hydrationData.errors : null;\n    let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n      // No loader, nothing to initialize\n      if (!m.route.loader) {\n        return true;\n      }\n      // Explicitly opting-in to running on hydration\n      if (\n        typeof m.route.loader === \"function\" &&\n        m.route.loader.hydrate === true\n      ) {\n        return false;\n      }\n      // Otherwise, initialized if hydrated with data or an error\n      return (\n        (loaderData && loaderData[m.route.id] !== undefined) ||\n        (errors && errors[m.route.id] !== undefined)\n      );\n    };\n\n    // If errors exist, don't consider routes below the boundary\n    if (errors) {\n      let idx = initialMatches.findIndex(\n        (m) => errors![m.route.id] !== undefined\n      );\n      initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n    } else {\n      initialized = initialMatches.every(isRouteInitialized);\n    }\n  } else {\n    // Without partial hydration - we're initialized if we were provided any\n    // hydrationData - which is expected to be complete\n    initialized = init.hydrationData != null;\n  }\n\n  let router: Router;\n  let state: RouterState = {\n    historyAction: init.history.action,\n    location: init.history.location,\n    matches: initialMatches,\n    initialized,\n    navigation: IDLE_NAVIGATION,\n    // Don't restore on initial updateState() if we were SSR'd\n    restoreScrollPosition: init.hydrationData != null ? false : null,\n    preventScrollReset: false,\n    revalidation: \"idle\",\n    loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n    actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n    errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n    fetchers: new Map(),\n    blockers: new Map(),\n  };\n\n  // -- Stateful internal variables to manage navigations --\n  // Current navigation in progress (to be committed in completeNavigation)\n  let pendingAction: HistoryAction = HistoryAction.Pop;\n\n  // Should the current navigation prevent the scroll reset if scroll cannot\n  // be restored?\n  let pendingPreventScrollReset = false;\n\n  // AbortController for the active navigation\n  let pendingNavigationController: AbortController | null;\n\n  // Should the current navigation enable document.startViewTransition?\n  let pendingViewTransitionEnabled = false;\n\n  // Store applied view transitions so we can apply them on POP\n  let appliedViewTransitions: Map<string, Set<string>> = new Map<\n    string,\n    Set<string>\n  >();\n\n  // Cleanup function for persisting applied transitions to sessionStorage\n  let removePageHideEventListener: (() => void) | null = null;\n\n  // We use this to avoid touching history in completeNavigation if a\n  // revalidation is entirely uninterrupted\n  let isUninterruptedRevalidation = false;\n\n  // Use this internal flag to force revalidation of all loaders:\n  //  - submissions (completed or interrupted)\n  //  - useRevalidator()\n  //  - X-Remix-Revalidate (from redirect)\n  let isRevalidationRequired = false;\n\n  // Use this internal array to capture routes that require revalidation due\n  // to a cancelled deferred on action submission\n  let cancelledDeferredRoutes: string[] = [];\n\n  // Use this internal array to capture fetcher loads that were cancelled by an\n  // action navigation and require revalidation\n  let cancelledFetcherLoads: Set<string> = new Set();\n\n  // AbortControllers for any in-flight fetchers\n  let fetchControllers = new Map<string, AbortController>();\n\n  // Track loads based on the order in which they started\n  let incrementingLoadId = 0;\n\n  // Track the outstanding pending navigation data load to be compared against\n  // the globally incrementing load when a fetcher load lands after a completed\n  // navigation\n  let pendingNavigationLoadId = -1;\n\n  // Fetchers that triggered data reloads as a result of their actions\n  let fetchReloadIds = new Map<string, number>();\n\n  // Fetchers that triggered redirect navigations\n  let fetchRedirectIds = new Set<string>();\n\n  // Most recent href/match for fetcher.load calls for fetchers\n  let fetchLoadMatches = new Map<string, FetchLoadMatch>();\n\n  // Ref-count mounted fetchers so we know when it's ok to clean them up\n  let activeFetchers = new Map<string, number>();\n\n  // Fetchers that have requested a delete when using v7_fetcherPersist,\n  // they'll be officially removed after they return to idle\n  let deletedFetchers = new Set<string>();\n\n  // Store DeferredData instances for active route matches.  When a\n  // route loader returns defer() we stick one in here.  Then, when a nested\n  // promise resolves we update loaderData.  If a new navigation starts we\n  // cancel active deferreds for eliminated routes.\n  let activeDeferreds = new Map<string, DeferredData>();\n\n  // Store blocker functions in a separate Map outside of router state since\n  // we don't need to update UI state if they change\n  let blockerFunctions = new Map<string, BlockerFunction>();\n\n  // Map of pending patchRoutesOnMiss() promises (keyed by path/matches) so\n  // that we only kick them off once for a given combo\n  let pendingPatchRoutes = new Map<\n    string,\n    ReturnType<AgnosticPatchRoutesOnMissFunction>\n  >();\n\n  // Flag to ignore the next history update, so we can revert the URL change on\n  // a POP navigation that was blocked by the user without touching router state\n  let ignoreNextHistoryUpdate = false;\n\n  // Initialize the router, all side effects should be kicked off from here.\n  // Implemented as a Fluent API for ease of:\n  //   let router = createRouter(init).initialize();\n  function initialize() {\n    // If history informs us of a POP navigation, start the navigation but do not update\n    // state.  We'll update our own state once the navigation completes\n    unlistenHistory = init.history.listen(\n      ({ action: historyAction, location, delta }) => {\n        // Ignore this event if it was just us resetting the URL from a\n        // blocked POP navigation\n        if (ignoreNextHistoryUpdate) {\n          ignoreNextHistoryUpdate = false;\n          return;\n        }\n\n        warning(\n          blockerFunctions.size === 0 || delta != null,\n          \"You are trying to use a blocker on a POP navigation to a location \" +\n            \"that was not created by @remix-run/router. This will fail silently in \" +\n            \"production. This can happen if you are navigating outside the router \" +\n            \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n            \"router navigation APIs.  This can also happen if you are using \" +\n            \"createHashRouter and the user manually changes the URL.\"\n        );\n\n        let blockerKey = shouldBlockNavigation({\n          currentLocation: state.location,\n          nextLocation: location,\n          historyAction,\n        });\n\n        if (blockerKey && delta != null) {\n          // Restore the URL to match the current UI, but don't update router state\n          ignoreNextHistoryUpdate = true;\n          init.history.go(delta * -1);\n\n          // Put the blocker into a blocked state\n          updateBlocker(blockerKey, {\n            state: \"blocked\",\n            location,\n            proceed() {\n              updateBlocker(blockerKey!, {\n                state: \"proceeding\",\n                proceed: undefined,\n                reset: undefined,\n                location,\n              });\n              // Re-do the same POP navigation we just blocked\n              init.history.go(delta);\n            },\n            reset() {\n              let blockers = new Map(state.blockers);\n              blockers.set(blockerKey!, IDLE_BLOCKER);\n              updateState({ blockers });\n            },\n          });\n          return;\n        }\n\n        return startNavigation(historyAction, location);\n      }\n    );\n\n    if (isBrowser) {\n      // FIXME: This feels gross.  How can we cleanup the lines between\n      // scrollRestoration/appliedTransitions persistance?\n      restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n      let _saveAppliedTransitions = () =>\n        persistAppliedTransitions(routerWindow, appliedViewTransitions);\n      routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n      removePageHideEventListener = () =>\n        routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n    }\n\n    // Kick off initial data load if needed.  Use Pop to avoid modifying history\n    // Note we don't do any handling of lazy here.  For SPA's it'll get handled\n    // in the normal navigation flow.  For SSR it's expected that lazy modules are\n    // resolved prior to router creation since we can't go into a fallbackElement\n    // UI for SSR'd apps\n    if (!state.initialized) {\n      startNavigation(HistoryAction.Pop, state.location, {\n        initialHydration: true,\n      });\n    }\n\n    return router;\n  }\n\n  // Clean up a router and it's side effects\n  function dispose() {\n    if (unlistenHistory) {\n      unlistenHistory();\n    }\n    if (removePageHideEventListener) {\n      removePageHideEventListener();\n    }\n    subscribers.clear();\n    pendingNavigationController && pendingNavigationController.abort();\n    state.fetchers.forEach((_, key) => deleteFetcher(key));\n    state.blockers.forEach((_, key) => deleteBlocker(key));\n  }\n\n  // Subscribe to state updates for the router\n  function subscribe(fn: RouterSubscriber) {\n    subscribers.add(fn);\n    return () => subscribers.delete(fn);\n  }\n\n  // Update our state and notify the calling context of the change\n  function updateState(\n    newState: Partial<RouterState>,\n    opts: {\n      flushSync?: boolean;\n      viewTransitionOpts?: ViewTransitionOpts;\n    } = {}\n  ): void {\n    state = {\n      ...state,\n      ...newState,\n    };\n\n    // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n    // can be removed\n    let completedFetchers: string[] = [];\n    let deletedFetchersKeys: string[] = [];\n\n    if (future.v7_fetcherPersist) {\n      state.fetchers.forEach((fetcher, key) => {\n        if (fetcher.state === \"idle\") {\n          if (deletedFetchers.has(key)) {\n            // Unmounted from the UI and can be totally removed\n            deletedFetchersKeys.push(key);\n          } else {\n            // Returned to idle but still mounted in the UI, so semi-remains for\n            // revalidations and such\n            completedFetchers.push(key);\n          }\n        }\n      });\n    }\n\n    // Iterate over a local copy so that if flushSync is used and we end up\n    // removing and adding a new subscriber due to the useCallback dependencies,\n    // we don't get ourselves into a loop calling the new subscriber immediately\n    [...subscribers].forEach((subscriber) =>\n      subscriber(state, {\n        deletedFetchers: deletedFetchersKeys,\n        unstable_viewTransitionOpts: opts.viewTransitionOpts,\n        unstable_flushSync: opts.flushSync === true,\n      })\n    );\n\n    // Remove idle fetchers from state since we only care about in-flight fetchers.\n    if (future.v7_fetcherPersist) {\n      completedFetchers.forEach((key) => state.fetchers.delete(key));\n      deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n    }\n  }\n\n  // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n  // and setting state.[historyAction/location/matches] to the new route.\n  // - Location is a required param\n  // - Navigation will always be set to IDLE_NAVIGATION\n  // - Can pass any other state in newState\n  function completeNavigation(\n    location: Location,\n    newState: Partial<Omit<RouterState, \"action\" | \"location\" | \"navigation\">>,\n    { flushSync }: { flushSync?: boolean } = {}\n  ): void {\n    // Deduce if we're in a loading/actionReload state:\n    // - We have committed actionData in the store\n    // - The current navigation was a mutation submission\n    // - We're past the submitting state and into the loading state\n    // - The location being loaded is not the result of a redirect\n    let isActionReload =\n      state.actionData != null &&\n      state.navigation.formMethod != null &&\n      isMutationMethod(state.navigation.formMethod) &&\n      state.navigation.state === \"loading\" &&\n      location.state?._isRedirect !== true;\n\n    let actionData: RouteData | null;\n    if (newState.actionData) {\n      if (Object.keys(newState.actionData).length > 0) {\n        actionData = newState.actionData;\n      } else {\n        // Empty actionData -> clear prior actionData due to an action error\n        actionData = null;\n      }\n    } else if (isActionReload) {\n      // Keep the current data if we're wrapping up the action reload\n      actionData = state.actionData;\n    } else {\n      // Clear actionData on any other completed navigations\n      actionData = null;\n    }\n\n    // Always preserve any existing loaderData from re-used routes\n    let loaderData = newState.loaderData\n      ? mergeLoaderData(\n          state.loaderData,\n          newState.loaderData,\n          newState.matches || [],\n          newState.errors\n        )\n      : state.loaderData;\n\n    // On a successful navigation we can assume we got through all blockers\n    // so we can start fresh\n    let blockers = state.blockers;\n    if (blockers.size > 0) {\n      blockers = new Map(blockers);\n      blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n    }\n\n    // Always respect the user flag.  Otherwise don't reset on mutation\n    // submission navigations unless they redirect\n    let preventScrollReset =\n      pendingPreventScrollReset === true ||\n      (state.navigation.formMethod != null &&\n        isMutationMethod(state.navigation.formMethod) &&\n        location.state?._isRedirect !== true);\n\n    // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n    if (inFlightDataRoutes) {\n      dataRoutes = inFlightDataRoutes;\n      inFlightDataRoutes = undefined;\n    }\n\n    if (isUninterruptedRevalidation) {\n      // If this was an uninterrupted revalidation then do not touch history\n    } else if (pendingAction === HistoryAction.Pop) {\n      // Do nothing for POP - URL has already been updated\n    } else if (pendingAction === HistoryAction.Push) {\n      init.history.push(location, location.state);\n    } else if (pendingAction === HistoryAction.Replace) {\n      init.history.replace(location, location.state);\n    }\n\n    let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n    // On POP, enable transitions if they were enabled on the original navigation\n    if (pendingAction === HistoryAction.Pop) {\n      // Forward takes precedence so they behave like the original navigation\n      let priorPaths = appliedViewTransitions.get(state.location.pathname);\n      if (priorPaths && priorPaths.has(location.pathname)) {\n        viewTransitionOpts = {\n          currentLocation: state.location,\n          nextLocation: location,\n        };\n      } else if (appliedViewTransitions.has(location.pathname)) {\n        // If we don't have a previous forward nav, assume we're popping back to\n        // the new location and enable if that location previously enabled\n        viewTransitionOpts = {\n          currentLocation: location,\n          nextLocation: state.location,\n        };\n      }\n    } else if (pendingViewTransitionEnabled) {\n      // Store the applied transition on PUSH/REPLACE\n      let toPaths = appliedViewTransitions.get(state.location.pathname);\n      if (toPaths) {\n        toPaths.add(location.pathname);\n      } else {\n        toPaths = new Set<string>([location.pathname]);\n        appliedViewTransitions.set(state.location.pathname, toPaths);\n      }\n      viewTransitionOpts = {\n        currentLocation: state.location,\n        nextLocation: location,\n      };\n    }\n\n    updateState(\n      {\n        ...newState, // matches, errors, fetchers go through as-is\n        actionData,\n        loaderData,\n        historyAction: pendingAction,\n        location,\n        initialized: true,\n        navigation: IDLE_NAVIGATION,\n        revalidation: \"idle\",\n        restoreScrollPosition: getSavedScrollPosition(\n          location,\n          newState.matches || state.matches\n        ),\n        preventScrollReset,\n        blockers,\n      },\n      {\n        viewTransitionOpts,\n        flushSync: flushSync === true,\n      }\n    );\n\n    // Reset stateful navigation vars\n    pendingAction = HistoryAction.Pop;\n    pendingPreventScrollReset = false;\n    pendingViewTransitionEnabled = false;\n    isUninterruptedRevalidation = false;\n    isRevalidationRequired = false;\n    cancelledDeferredRoutes = [];\n  }\n\n  // Trigger a navigation event, which can either be a numerical POP or a PUSH\n  // replace with an optional submission\n  async function navigate(\n    to: number | To | null,\n    opts?: RouterNavigateOptions\n  ): Promise<void> {\n    if (typeof to === \"number\") {\n      init.history.go(to);\n      return;\n    }\n\n    let normalizedPath = normalizeTo(\n      state.location,\n      state.matches,\n      basename,\n      future.v7_prependBasename,\n      to,\n      future.v7_relativeSplatPath,\n      opts?.fromRouteId,\n      opts?.relative\n    );\n    let { path, submission, error } = normalizeNavigateOptions(\n      future.v7_normalizeFormMethod,\n      false,\n      normalizedPath,\n      opts\n    );\n\n    let currentLocation = state.location;\n    let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n    // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n    // URL from window.location, so we need to encode it here so the behavior\n    // remains the same as POP and non-data-router usages.  new URL() does all\n    // the same encoding we'd get from a history.pushState/window.location read\n    // without having to touch history\n    nextLocation = {\n      ...nextLocation,\n      ...init.history.encodeLocation(nextLocation),\n    };\n\n    let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n    let historyAction = HistoryAction.Push;\n\n    if (userReplace === true) {\n      historyAction = HistoryAction.Replace;\n    } else if (userReplace === false) {\n      // no-op\n    } else if (\n      submission != null &&\n      isMutationMethod(submission.formMethod) &&\n      submission.formAction === state.location.pathname + state.location.search\n    ) {\n      // By default on submissions to the current location we REPLACE so that\n      // users don't have to double-click the back button to get to the prior\n      // location.  If the user redirects to a different location from the\n      // action/loader this will be ignored and the redirect will be a PUSH\n      historyAction = HistoryAction.Replace;\n    }\n\n    let preventScrollReset =\n      opts && \"preventScrollReset\" in opts\n        ? opts.preventScrollReset === true\n        : undefined;\n\n    let flushSync = (opts && opts.unstable_flushSync) === true;\n\n    let blockerKey = shouldBlockNavigation({\n      currentLocation,\n      nextLocation,\n      historyAction,\n    });\n\n    if (blockerKey) {\n      // Put the blocker into a blocked state\n      updateBlocker(blockerKey, {\n        state: \"blocked\",\n        location: nextLocation,\n        proceed() {\n          updateBlocker(blockerKey!, {\n            state: \"proceeding\",\n            proceed: undefined,\n            reset: undefined,\n            location: nextLocation,\n          });\n          // Send the same navigation through\n          navigate(to, opts);\n        },\n        reset() {\n          let blockers = new Map(state.blockers);\n          blockers.set(blockerKey!, IDLE_BLOCKER);\n          updateState({ blockers });\n        },\n      });\n      return;\n    }\n\n    return await startNavigation(historyAction, nextLocation, {\n      submission,\n      // Send through the formData serialization error if we have one so we can\n      // render at the right error boundary after we match routes\n      pendingError: error,\n      preventScrollReset,\n      replace: opts && opts.replace,\n      enableViewTransition: opts && opts.unstable_viewTransition,\n      flushSync,\n    });\n  }\n\n  // Revalidate all current loaders.  If a navigation is in progress or if this\n  // is interrupted by a navigation, allow this to \"succeed\" by calling all\n  // loaders during the next loader round\n  function revalidate() {\n    interruptActiveLoads();\n    updateState({ revalidation: \"loading\" });\n\n    // If we're currently submitting an action, we don't need to start a new\n    // navigation, we'll just let the follow up loader execution call all loaders\n    if (state.navigation.state === \"submitting\") {\n      return;\n    }\n\n    // If we're currently in an idle state, start a new navigation for the current\n    // action/location and mark it as uninterrupted, which will skip the history\n    // update in completeNavigation\n    if (state.navigation.state === \"idle\") {\n      startNavigation(state.historyAction, state.location, {\n        startUninterruptedRevalidation: true,\n      });\n      return;\n    }\n\n    // Otherwise, if we're currently in a loading state, just start a new\n    // navigation to the navigation.location but do not trigger an uninterrupted\n    // revalidation so that history correctly updates once the navigation completes\n    startNavigation(\n      pendingAction || state.historyAction,\n      state.navigation.location,\n      { overrideNavigation: state.navigation }\n    );\n  }\n\n  // Start a navigation to the given action/location.  Can optionally provide a\n  // overrideNavigation which will override the normalLoad in the case of a redirect\n  // navigation\n  async function startNavigation(\n    historyAction: HistoryAction,\n    location: Location,\n    opts?: {\n      initialHydration?: boolean;\n      submission?: Submission;\n      fetcherSubmission?: Submission;\n      overrideNavigation?: Navigation;\n      pendingError?: ErrorResponseImpl;\n      startUninterruptedRevalidation?: boolean;\n      preventScrollReset?: boolean;\n      replace?: boolean;\n      enableViewTransition?: boolean;\n      flushSync?: boolean;\n    }\n  ): Promise<void> {\n    // Abort any in-progress navigations and start a new one. Unset any ongoing\n    // uninterrupted revalidations unless told otherwise, since we want this\n    // new navigation to update history normally\n    pendingNavigationController && pendingNavigationController.abort();\n    pendingNavigationController = null;\n    pendingAction = historyAction;\n    isUninterruptedRevalidation =\n      (opts && opts.startUninterruptedRevalidation) === true;\n\n    // Save the current scroll position every time we start a new navigation,\n    // and track whether we should reset scroll on completion\n    saveScrollPosition(state.location, state.matches);\n    pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n    pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let loadingNavigation = opts && opts.overrideNavigation;\n    let matches = matchRoutes(routesToUse, location, basename);\n    let flushSync = (opts && opts.flushSync) === true;\n\n    let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n    if (fogOfWar.active && fogOfWar.matches) {\n      matches = fogOfWar.matches;\n    }\n\n    // Short circuit with a 404 on the root error boundary if we match nothing\n    if (!matches) {\n      let { error, notFoundMatches, route } = handleNavigational404(\n        location.pathname\n      );\n      completeNavigation(\n        location,\n        {\n          matches: notFoundMatches,\n          loaderData: {},\n          errors: {\n            [route.id]: error,\n          },\n        },\n        { flushSync }\n      );\n      return;\n    }\n\n    // Short circuit if it's only a hash change and not a revalidation or\n    // mutation submission.\n    //\n    // Ignore on initial page loads because since the initial load will always\n    // be \"same hash\".  For example, on /page#hash and submit a <Form method=\"post\">\n    // which will default to a navigation to /page\n    if (\n      state.initialized &&\n      !isRevalidationRequired &&\n      isHashChangeOnly(state.location, location) &&\n      !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n    ) {\n      completeNavigation(location, { matches }, { flushSync });\n      return;\n    }\n\n    // Create a controller/Request for this navigation\n    pendingNavigationController = new AbortController();\n    let request = createClientSideRequest(\n      init.history,\n      location,\n      pendingNavigationController.signal,\n      opts && opts.submission\n    );\n    let pendingActionResult: PendingActionResult | undefined;\n\n    if (opts && opts.pendingError) {\n      // If we have a pendingError, it means the user attempted a GET submission\n      // with binary FormData so assign here and skip to handleLoaders.  That\n      // way we handle calling loaders above the boundary etc.  It's not really\n      // different from an actionError in that sense.\n      pendingActionResult = [\n        findNearestBoundary(matches).route.id,\n        { type: ResultType.error, error: opts.pendingError },\n      ];\n    } else if (\n      opts &&\n      opts.submission &&\n      isMutationMethod(opts.submission.formMethod)\n    ) {\n      // Call action if we received an action submission\n      let actionResult = await handleAction(\n        request,\n        location,\n        opts.submission,\n        matches,\n        fogOfWar.active,\n        { replace: opts.replace, flushSync }\n      );\n\n      if (actionResult.shortCircuited) {\n        return;\n      }\n\n      // If we received a 404 from handleAction, it's because we couldn't lazily\n      // discover the destination route so we don't want to call loaders\n      if (actionResult.pendingActionResult) {\n        let [routeId, result] = actionResult.pendingActionResult;\n        if (\n          isErrorResult(result) &&\n          isRouteErrorResponse(result.error) &&\n          result.error.status === 404\n        ) {\n          pendingNavigationController = null;\n\n          completeNavigation(location, {\n            matches: actionResult.matches,\n            loaderData: {},\n            errors: {\n              [routeId]: result.error,\n            },\n          });\n          return;\n        }\n      }\n\n      matches = actionResult.matches || matches;\n      pendingActionResult = actionResult.pendingActionResult;\n      loadingNavigation = getLoadingNavigation(location, opts.submission);\n      flushSync = false;\n      // No need to do fog of war matching again on loader execution\n      fogOfWar.active = false;\n\n      // Create a GET request for the loaders\n      request = createClientSideRequest(\n        init.history,\n        request.url,\n        request.signal\n      );\n    }\n\n    // Call loaders\n    let {\n      shortCircuited,\n      matches: updatedMatches,\n      loaderData,\n      errors,\n    } = await handleLoaders(\n      request,\n      location,\n      matches,\n      fogOfWar.active,\n      loadingNavigation,\n      opts && opts.submission,\n      opts && opts.fetcherSubmission,\n      opts && opts.replace,\n      opts && opts.initialHydration === true,\n      flushSync,\n      pendingActionResult\n    );\n\n    if (shortCircuited) {\n      return;\n    }\n\n    // Clean up now that the action/loaders have completed.  Don't clean up if\n    // we short circuited because pendingNavigationController will have already\n    // been assigned to a new controller for the next navigation\n    pendingNavigationController = null;\n\n    completeNavigation(location, {\n      matches: updatedMatches || matches,\n      ...getActionDataForCommit(pendingActionResult),\n      loaderData,\n      errors,\n    });\n  }\n\n  // Call the action matched by the leaf route for this navigation and handle\n  // redirects/errors\n  async function handleAction(\n    request: Request,\n    location: Location,\n    submission: Submission,\n    matches: AgnosticDataRouteMatch[],\n    isFogOfWar: boolean,\n    opts: { replace?: boolean; flushSync?: boolean } = {}\n  ): Promise<HandleActionResult> {\n    interruptActiveLoads();\n\n    // Put us in a submitting state\n    let navigation = getSubmittingNavigation(location, submission);\n    updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(\n        matches,\n        location.pathname,\n        request.signal\n      );\n      if (discoverResult.type === \"aborted\") {\n        return { shortCircuited: true };\n      } else if (discoverResult.type === \"error\") {\n        let { boundaryId, error } = handleDiscoverRouteError(\n          location.pathname,\n          discoverResult\n        );\n        return {\n          matches: discoverResult.partialMatches,\n          pendingActionResult: [\n            boundaryId,\n            {\n              type: ResultType.error,\n              error,\n            },\n          ],\n        };\n      } else if (!discoverResult.matches) {\n        let { notFoundMatches, error, route } = handleNavigational404(\n          location.pathname\n        );\n        return {\n          matches: notFoundMatches,\n          pendingActionResult: [\n            route.id,\n            {\n              type: ResultType.error,\n              error,\n            },\n          ],\n        };\n      } else {\n        matches = discoverResult.matches;\n      }\n    }\n\n    // Call our action and get the result\n    let result: DataResult;\n    let actionMatch = getTargetMatch(matches, location);\n\n    if (!actionMatch.route.action && !actionMatch.route.lazy) {\n      result = {\n        type: ResultType.error,\n        error: getInternalRouterError(405, {\n          method: request.method,\n          pathname: location.pathname,\n          routeId: actionMatch.route.id,\n        }),\n      };\n    } else {\n      let results = await callDataStrategy(\n        \"action\",\n        request,\n        [actionMatch],\n        matches\n      );\n      result = results[0];\n\n      if (request.signal.aborted) {\n        return { shortCircuited: true };\n      }\n    }\n\n    if (isRedirectResult(result)) {\n      let replace: boolean;\n      if (opts && opts.replace != null) {\n        replace = opts.replace;\n      } else {\n        // If the user didn't explicity indicate replace behavior, replace if\n        // we redirected to the exact same location we're currently at to avoid\n        // double back-buttons\n        let location = normalizeRedirectLocation(\n          result.response.headers.get(\"Location\")!,\n          new URL(request.url),\n          basename\n        );\n        replace = location === state.location.pathname + state.location.search;\n      }\n      await startRedirectNavigation(request, result, {\n        submission,\n        replace,\n      });\n      return { shortCircuited: true };\n    }\n\n    if (isDeferredResult(result)) {\n      throw getInternalRouterError(400, { type: \"defer-action\" });\n    }\n\n    if (isErrorResult(result)) {\n      // Store off the pending error - we use it to determine which loaders\n      // to call and will commit it when we complete the navigation\n      let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n      // By default, all submissions to the current location are REPLACE\n      // navigations, but if the action threw an error that'll be rendered in\n      // an errorElement, we fall back to PUSH so that the user can use the\n      // back button to get back to the pre-submission form location to try\n      // again\n      if ((opts && opts.replace) !== true) {\n        pendingAction = HistoryAction.Push;\n      }\n\n      return {\n        matches,\n        pendingActionResult: [boundaryMatch.route.id, result],\n      };\n    }\n\n    return {\n      matches,\n      pendingActionResult: [actionMatch.route.id, result],\n    };\n  }\n\n  // Call all applicable loaders for the given matches, handling redirects,\n  // errors, etc.\n  async function handleLoaders(\n    request: Request,\n    location: Location,\n    matches: AgnosticDataRouteMatch[],\n    isFogOfWar: boolean,\n    overrideNavigation?: Navigation,\n    submission?: Submission,\n    fetcherSubmission?: Submission,\n    replace?: boolean,\n    initialHydration?: boolean,\n    flushSync?: boolean,\n    pendingActionResult?: PendingActionResult\n  ): Promise<HandleLoadersResult> {\n    // Figure out the right navigation we want to use for data loading\n    let loadingNavigation =\n      overrideNavigation || getLoadingNavigation(location, submission);\n\n    // If this was a redirect from an action we don't have a \"submission\" but\n    // we have it on the loading navigation so use that if available\n    let activeSubmission =\n      submission ||\n      fetcherSubmission ||\n      getSubmissionFromNavigation(loadingNavigation);\n\n    // If this is an uninterrupted revalidation, we remain in our current idle\n    // state.  If not, we need to switch to our loading state and load data,\n    // preserving any new action data or existing action data (in the case of\n    // a revalidation interrupting an actionReload)\n    // If we have partialHydration enabled, then don't update the state for the\n    // initial data load since it's not a \"navigation\"\n    let shouldUpdateNavigationState =\n      !isUninterruptedRevalidation &&\n      (!future.v7_partialHydration || !initialHydration);\n\n    // When fog of war is enabled, we enter our `loading` state earlier so we\n    // can discover new routes during the `loading` state.  We skip this if\n    // we've already run actions since we would have done our matching already.\n    // If the children() function threw then, we want to proceed with the\n    // partial matches it discovered.\n    if (isFogOfWar) {\n      if (shouldUpdateNavigationState) {\n        let actionData = getUpdatedActionData(pendingActionResult);\n        updateState(\n          {\n            navigation: loadingNavigation,\n            ...(actionData !== undefined ? { actionData } : {}),\n          },\n          {\n            flushSync,\n          }\n        );\n      }\n\n      let discoverResult = await discoverRoutes(\n        matches,\n        location.pathname,\n        request.signal\n      );\n\n      if (discoverResult.type === \"aborted\") {\n        return { shortCircuited: true };\n      } else if (discoverResult.type === \"error\") {\n        let { boundaryId, error } = handleDiscoverRouteError(\n          location.pathname,\n          discoverResult\n        );\n        return {\n          matches: discoverResult.partialMatches,\n          loaderData: {},\n          errors: {\n            [boundaryId]: error,\n          },\n        };\n      } else if (!discoverResult.matches) {\n        let { error, notFoundMatches, route } = handleNavigational404(\n          location.pathname\n        );\n        return {\n          matches: notFoundMatches,\n          loaderData: {},\n          errors: {\n            [route.id]: error,\n          },\n        };\n      } else {\n        matches = discoverResult.matches;\n      }\n    }\n\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n      init.history,\n      state,\n      matches,\n      activeSubmission,\n      location,\n      future.v7_partialHydration && initialHydration === true,\n      future.v7_skipActionErrorRevalidation,\n      isRevalidationRequired,\n      cancelledDeferredRoutes,\n      cancelledFetcherLoads,\n      deletedFetchers,\n      fetchLoadMatches,\n      fetchRedirectIds,\n      routesToUse,\n      basename,\n      pendingActionResult\n    );\n\n    // Cancel pending deferreds for no-longer-matched routes or routes we're\n    // about to reload.  Note that if this is an action reload we would have\n    // already cancelled all pending deferreds so this would be a no-op\n    cancelActiveDeferreds(\n      (routeId) =>\n        !(matches && matches.some((m) => m.route.id === routeId)) ||\n        (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n    );\n\n    pendingNavigationLoadId = ++incrementingLoadId;\n\n    // Short circuit if we have no loaders to run\n    if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n      let updatedFetchers = markFetchRedirectsDone();\n      completeNavigation(\n        location,\n        {\n          matches,\n          loaderData: {},\n          // Commit pending error if we're short circuiting\n          errors:\n            pendingActionResult && isErrorResult(pendingActionResult[1])\n              ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n              : null,\n          ...getActionDataForCommit(pendingActionResult),\n          ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n        },\n        { flushSync }\n      );\n      return { shortCircuited: true };\n    }\n\n    if (shouldUpdateNavigationState) {\n      let updates: Partial<RouterState> = {};\n      if (!isFogOfWar) {\n        // Only update navigation/actionNData if we didn't already do it above\n        updates.navigation = loadingNavigation;\n        let actionData = getUpdatedActionData(pendingActionResult);\n        if (actionData !== undefined) {\n          updates.actionData = actionData;\n        }\n      }\n      if (revalidatingFetchers.length > 0) {\n        updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n      }\n      updateState(updates, { flushSync });\n    }\n\n    revalidatingFetchers.forEach((rf) => {\n      if (fetchControllers.has(rf.key)) {\n        abortFetcher(rf.key);\n      }\n      if (rf.controller) {\n        // Fetchers use an independent AbortController so that aborting a fetcher\n        // (via deleteFetcher) does not abort the triggering navigation that\n        // triggered the revalidation\n        fetchControllers.set(rf.key, rf.controller);\n      }\n    });\n\n    // Proxy navigation abort through to revalidation fetchers\n    let abortPendingFetchRevalidations = () =>\n      revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n    if (pendingNavigationController) {\n      pendingNavigationController.signal.addEventListener(\n        \"abort\",\n        abortPendingFetchRevalidations\n      );\n    }\n\n    let { loaderResults, fetcherResults } =\n      await callLoadersAndMaybeResolveData(\n        state.matches,\n        matches,\n        matchesToLoad,\n        revalidatingFetchers,\n        request\n      );\n\n    if (request.signal.aborted) {\n      return { shortCircuited: true };\n    }\n\n    // Clean up _after_ loaders have completed.  Don't clean up if we short\n    // circuited because fetchControllers would have been aborted and\n    // reassigned to new controllers for the next navigation\n    if (pendingNavigationController) {\n      pendingNavigationController.signal.removeEventListener(\n        \"abort\",\n        abortPendingFetchRevalidations\n      );\n    }\n    revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n    // If any loaders returned a redirect Response, start a new REPLACE navigation\n    let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n    if (redirect) {\n      if (redirect.idx >= matchesToLoad.length) {\n        // If this redirect came from a fetcher make sure we mark it in\n        // fetchRedirectIds so it doesn't get revalidated on the next set of\n        // loader executions\n        let fetcherKey =\n          revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n        fetchRedirectIds.add(fetcherKey);\n      }\n      await startRedirectNavigation(request, redirect.result, {\n        replace,\n      });\n      return { shortCircuited: true };\n    }\n\n    // Process and commit output from loaders\n    let { loaderData, errors } = processLoaderData(\n      state,\n      matches,\n      matchesToLoad,\n      loaderResults,\n      pendingActionResult,\n      revalidatingFetchers,\n      fetcherResults,\n      activeDeferreds\n    );\n\n    // Wire up subscribers to update loaderData as promises settle\n    activeDeferreds.forEach((deferredData, routeId) => {\n      deferredData.subscribe((aborted) => {\n        // Note: No need to updateState here since the TrackedPromise on\n        // loaderData is stable across resolve/reject\n        // Remove this instance if we were aborted or if promises have settled\n        if (aborted || deferredData.done) {\n          activeDeferreds.delete(routeId);\n        }\n      });\n    });\n\n    // During partial hydration, preserve SSR errors for routes that don't re-run\n    if (future.v7_partialHydration && initialHydration && state.errors) {\n      Object.entries(state.errors)\n        .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n        .forEach(([routeId, error]) => {\n          errors = Object.assign(errors || {}, { [routeId]: error });\n        });\n    }\n\n    let updatedFetchers = markFetchRedirectsDone();\n    let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n    let shouldUpdateFetchers =\n      updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n    return {\n      matches,\n      loaderData,\n      errors,\n      ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n    };\n  }\n\n  function getUpdatedActionData(\n    pendingActionResult: PendingActionResult | undefined\n  ): Record<string, RouteData> | null | undefined {\n    if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n      // This is cast to `any` currently because `RouteData`uses any and it\n      // would be a breaking change to use any.\n      // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n      return {\n        [pendingActionResult[0]]: pendingActionResult[1].data as any,\n      };\n    } else if (state.actionData) {\n      if (Object.keys(state.actionData).length === 0) {\n        return null;\n      } else {\n        return state.actionData;\n      }\n    }\n  }\n\n  function getUpdatedRevalidatingFetchers(\n    revalidatingFetchers: RevalidatingFetcher[]\n  ) {\n    revalidatingFetchers.forEach((rf) => {\n      let fetcher = state.fetchers.get(rf.key);\n      let revalidatingFetcher = getLoadingFetcher(\n        undefined,\n        fetcher ? fetcher.data : undefined\n      );\n      state.fetchers.set(rf.key, revalidatingFetcher);\n    });\n    return new Map(state.fetchers);\n  }\n\n  // Trigger a fetcher load/submit for the given fetcher key\n  function fetch(\n    key: string,\n    routeId: string,\n    href: string | null,\n    opts?: RouterFetchOptions\n  ) {\n    if (isServer) {\n      throw new Error(\n        \"router.fetch() was called during the server render, but it shouldn't be. \" +\n          \"You are likely calling a useFetcher() method in the body of your component. \" +\n          \"Try moving it to a useEffect or a callback.\"\n      );\n    }\n\n    if (fetchControllers.has(key)) abortFetcher(key);\n    let flushSync = (opts && opts.unstable_flushSync) === true;\n\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let normalizedPath = normalizeTo(\n      state.location,\n      state.matches,\n      basename,\n      future.v7_prependBasename,\n      href,\n      future.v7_relativeSplatPath,\n      routeId,\n      opts?.relative\n    );\n    let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n    let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n    if (fogOfWar.active && fogOfWar.matches) {\n      matches = fogOfWar.matches;\n    }\n\n    if (!matches) {\n      setFetcherError(\n        key,\n        routeId,\n        getInternalRouterError(404, { pathname: normalizedPath }),\n        { flushSync }\n      );\n      return;\n    }\n\n    let { path, submission, error } = normalizeNavigateOptions(\n      future.v7_normalizeFormMethod,\n      true,\n      normalizedPath,\n      opts\n    );\n\n    if (error) {\n      setFetcherError(key, routeId, error, { flushSync });\n      return;\n    }\n\n    let match = getTargetMatch(matches, path);\n\n    pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n    if (submission && isMutationMethod(submission.formMethod)) {\n      handleFetcherAction(\n        key,\n        routeId,\n        path,\n        match,\n        matches,\n        fogOfWar.active,\n        flushSync,\n        submission\n      );\n      return;\n    }\n\n    // Store off the match so we can call it's shouldRevalidate on subsequent\n    // revalidations\n    fetchLoadMatches.set(key, { routeId, path });\n    handleFetcherLoader(\n      key,\n      routeId,\n      path,\n      match,\n      matches,\n      fogOfWar.active,\n      flushSync,\n      submission\n    );\n  }\n\n  // Call the action for the matched fetcher.submit(), and then handle redirects,\n  // errors, and revalidation\n  async function handleFetcherAction(\n    key: string,\n    routeId: string,\n    path: string,\n    match: AgnosticDataRouteMatch,\n    requestMatches: AgnosticDataRouteMatch[],\n    isFogOfWar: boolean,\n    flushSync: boolean,\n    submission: Submission\n  ) {\n    interruptActiveLoads();\n    fetchLoadMatches.delete(key);\n\n    function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n      if (!m.route.action && !m.route.lazy) {\n        let error = getInternalRouterError(405, {\n          method: submission.formMethod,\n          pathname: path,\n          routeId: routeId,\n        });\n        setFetcherError(key, routeId, error, { flushSync });\n        return true;\n      }\n      return false;\n    }\n\n    if (!isFogOfWar && detectAndHandle405Error(match)) {\n      return;\n    }\n\n    // Put this fetcher into it's submitting state\n    let existingFetcher = state.fetchers.get(key);\n    updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n      flushSync,\n    });\n\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(\n      init.history,\n      path,\n      abortController.signal,\n      submission\n    );\n\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(\n        requestMatches,\n        path,\n        fetchRequest.signal\n      );\n\n      if (discoverResult.type === \"aborted\") {\n        return;\n      } else if (discoverResult.type === \"error\") {\n        let { error } = handleDiscoverRouteError(path, discoverResult);\n        setFetcherError(key, routeId, error, { flushSync });\n        return;\n      } else if (!discoverResult.matches) {\n        setFetcherError(\n          key,\n          routeId,\n          getInternalRouterError(404, { pathname: path }),\n          { flushSync }\n        );\n        return;\n      } else {\n        requestMatches = discoverResult.matches;\n        match = getTargetMatch(requestMatches, path);\n\n        if (detectAndHandle405Error(match)) {\n          return;\n        }\n      }\n    }\n\n    // Call the action for the fetcher\n    fetchControllers.set(key, abortController);\n\n    let originatingLoadId = incrementingLoadId;\n    let actionResults = await callDataStrategy(\n      \"action\",\n      fetchRequest,\n      [match],\n      requestMatches\n    );\n    let actionResult = actionResults[0];\n\n    if (fetchRequest.signal.aborted) {\n      // We can delete this so long as we weren't aborted by our own fetcher\n      // re-submit which would have put _new_ controller is in fetchControllers\n      if (fetchControllers.get(key) === abortController) {\n        fetchControllers.delete(key);\n      }\n      return;\n    }\n\n    // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n    // or redirects processed for unmounted fetchers so we just revert them to\n    // idle\n    if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n      if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n        updateFetcherState(key, getDoneFetcher(undefined));\n        return;\n      }\n      // Let SuccessResult's fall through for revalidation\n    } else {\n      if (isRedirectResult(actionResult)) {\n        fetchControllers.delete(key);\n        if (pendingNavigationLoadId > originatingLoadId) {\n          // A new navigation was kicked off after our action started, so that\n          // should take precedence over this redirect navigation.  We already\n          // set isRevalidationRequired so all loaders for the new route should\n          // fire unless opted out via shouldRevalidate\n          updateFetcherState(key, getDoneFetcher(undefined));\n          return;\n        } else {\n          fetchRedirectIds.add(key);\n          updateFetcherState(key, getLoadingFetcher(submission));\n          return startRedirectNavigation(fetchRequest, actionResult, {\n            fetcherSubmission: submission,\n          });\n        }\n      }\n\n      // Process any non-redirect errors thrown\n      if (isErrorResult(actionResult)) {\n        setFetcherError(key, routeId, actionResult.error);\n        return;\n      }\n    }\n\n    if (isDeferredResult(actionResult)) {\n      throw getInternalRouterError(400, { type: \"defer-action\" });\n    }\n\n    // Start the data load for current matches, or the next location if we're\n    // in the middle of a navigation\n    let nextLocation = state.navigation.location || state.location;\n    let revalidationRequest = createClientSideRequest(\n      init.history,\n      nextLocation,\n      abortController.signal\n    );\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let matches =\n      state.navigation.state !== \"idle\"\n        ? matchRoutes(routesToUse, state.navigation.location, basename)\n        : state.matches;\n\n    invariant(matches, \"Didn't find any matches after fetcher action\");\n\n    let loadId = ++incrementingLoadId;\n    fetchReloadIds.set(key, loadId);\n\n    let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n    state.fetchers.set(key, loadFetcher);\n\n    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n      init.history,\n      state,\n      matches,\n      submission,\n      nextLocation,\n      false,\n      future.v7_skipActionErrorRevalidation,\n      isRevalidationRequired,\n      cancelledDeferredRoutes,\n      cancelledFetcherLoads,\n      deletedFetchers,\n      fetchLoadMatches,\n      fetchRedirectIds,\n      routesToUse,\n      basename,\n      [match.route.id, actionResult]\n    );\n\n    // Put all revalidating fetchers into the loading state, except for the\n    // current fetcher which we want to keep in it's current loading state which\n    // contains it's action submission info + action data\n    revalidatingFetchers\n      .filter((rf) => rf.key !== key)\n      .forEach((rf) => {\n        let staleKey = rf.key;\n        let existingFetcher = state.fetchers.get(staleKey);\n        let revalidatingFetcher = getLoadingFetcher(\n          undefined,\n          existingFetcher ? existingFetcher.data : undefined\n        );\n        state.fetchers.set(staleKey, revalidatingFetcher);\n        if (fetchControllers.has(staleKey)) {\n          abortFetcher(staleKey);\n        }\n        if (rf.controller) {\n          fetchControllers.set(staleKey, rf.controller);\n        }\n      });\n\n    updateState({ fetchers: new Map(state.fetchers) });\n\n    let abortPendingFetchRevalidations = () =>\n      revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n    abortController.signal.addEventListener(\n      \"abort\",\n      abortPendingFetchRevalidations\n    );\n\n    let { loaderResults, fetcherResults } =\n      await callLoadersAndMaybeResolveData(\n        state.matches,\n        matches,\n        matchesToLoad,\n        revalidatingFetchers,\n        revalidationRequest\n      );\n\n    if (abortController.signal.aborted) {\n      return;\n    }\n\n    abortController.signal.removeEventListener(\n      \"abort\",\n      abortPendingFetchRevalidations\n    );\n\n    fetchReloadIds.delete(key);\n    fetchControllers.delete(key);\n    revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n    let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n    if (redirect) {\n      if (redirect.idx >= matchesToLoad.length) {\n        // If this redirect came from a fetcher make sure we mark it in\n        // fetchRedirectIds so it doesn't get revalidated on the next set of\n        // loader executions\n        let fetcherKey =\n          revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n        fetchRedirectIds.add(fetcherKey);\n      }\n      return startRedirectNavigation(revalidationRequest, redirect.result);\n    }\n\n    // Process and commit output from loaders\n    let { loaderData, errors } = processLoaderData(\n      state,\n      state.matches,\n      matchesToLoad,\n      loaderResults,\n      undefined,\n      revalidatingFetchers,\n      fetcherResults,\n      activeDeferreds\n    );\n\n    // Since we let revalidations complete even if the submitting fetcher was\n    // deleted, only put it back to idle if it hasn't been deleted\n    if (state.fetchers.has(key)) {\n      let doneFetcher = getDoneFetcher(actionResult.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n\n    abortStaleFetchLoads(loadId);\n\n    // If we are currently in a navigation loading state and this fetcher is\n    // more recent than the navigation, we want the newer data so abort the\n    // navigation and complete it with the fetcher data\n    if (\n      state.navigation.state === \"loading\" &&\n      loadId > pendingNavigationLoadId\n    ) {\n      invariant(pendingAction, \"Expected pending action\");\n      pendingNavigationController && pendingNavigationController.abort();\n\n      completeNavigation(state.navigation.location, {\n        matches,\n        loaderData,\n        errors,\n        fetchers: new Map(state.fetchers),\n      });\n    } else {\n      // otherwise just update with the fetcher data, preserving any existing\n      // loaderData for loaders that did not need to reload.  We have to\n      // manually merge here since we aren't going through completeNavigation\n      updateState({\n        errors,\n        loaderData: mergeLoaderData(\n          state.loaderData,\n          loaderData,\n          matches,\n          errors\n        ),\n        fetchers: new Map(state.fetchers),\n      });\n      isRevalidationRequired = false;\n    }\n  }\n\n  // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n  async function handleFetcherLoader(\n    key: string,\n    routeId: string,\n    path: string,\n    match: AgnosticDataRouteMatch,\n    matches: AgnosticDataRouteMatch[],\n    isFogOfWar: boolean,\n    flushSync: boolean,\n    submission?: Submission\n  ) {\n    let existingFetcher = state.fetchers.get(key);\n    updateFetcherState(\n      key,\n      getLoadingFetcher(\n        submission,\n        existingFetcher ? existingFetcher.data : undefined\n      ),\n      { flushSync }\n    );\n\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(\n      init.history,\n      path,\n      abortController.signal\n    );\n\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(\n        matches,\n        path,\n        fetchRequest.signal\n      );\n\n      if (discoverResult.type === \"aborted\") {\n        return;\n      } else if (discoverResult.type === \"error\") {\n        let { error } = handleDiscoverRouteError(path, discoverResult);\n        setFetcherError(key, routeId, error, { flushSync });\n        return;\n      } else if (!discoverResult.matches) {\n        setFetcherError(\n          key,\n          routeId,\n          getInternalRouterError(404, { pathname: path }),\n          { flushSync }\n        );\n        return;\n      } else {\n        matches = discoverResult.matches;\n        match = getTargetMatch(matches, path);\n      }\n    }\n\n    // Call the loader for this fetcher route match\n    fetchControllers.set(key, abortController);\n\n    let originatingLoadId = incrementingLoadId;\n    let results = await callDataStrategy(\n      \"loader\",\n      fetchRequest,\n      [match],\n      matches\n    );\n    let result = results[0];\n\n    // Deferred isn't supported for fetcher loads, await everything and treat it\n    // as a normal load.  resolveDeferredData will return undefined if this\n    // fetcher gets aborted, so we just leave result untouched and short circuit\n    // below if that happens\n    if (isDeferredResult(result)) {\n      result =\n        (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n        result;\n    }\n\n    // We can delete this so long as we weren't aborted by our our own fetcher\n    // re-load which would have put _new_ controller is in fetchControllers\n    if (fetchControllers.get(key) === abortController) {\n      fetchControllers.delete(key);\n    }\n\n    if (fetchRequest.signal.aborted) {\n      return;\n    }\n\n    // We don't want errors bubbling up or redirects followed for unmounted\n    // fetchers, so short circuit here if it was removed from the UI\n    if (deletedFetchers.has(key)) {\n      updateFetcherState(key, getDoneFetcher(undefined));\n      return;\n    }\n\n    // If the loader threw a redirect Response, start a new REPLACE navigation\n    if (isRedirectResult(result)) {\n      if (pendingNavigationLoadId > originatingLoadId) {\n        // A new navigation was kicked off after our loader started, so that\n        // should take precedence over this redirect navigation\n        updateFetcherState(key, getDoneFetcher(undefined));\n        return;\n      } else {\n        fetchRedirectIds.add(key);\n        await startRedirectNavigation(fetchRequest, result);\n        return;\n      }\n    }\n\n    // Process any non-redirect errors thrown\n    if (isErrorResult(result)) {\n      setFetcherError(key, routeId, result.error);\n      return;\n    }\n\n    invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n    // Put the fetcher back into an idle state\n    updateFetcherState(key, getDoneFetcher(result.data));\n  }\n\n  /**\n   * Utility function to handle redirects returned from an action or loader.\n   * Normally, a redirect \"replaces\" the navigation that triggered it.  So, for\n   * example:\n   *\n   *  - user is on /a\n   *  - user clicks a link to /b\n   *  - loader for /b redirects to /c\n   *\n   * In a non-JS app the browser would track the in-flight navigation to /b and\n   * then replace it with /c when it encountered the redirect response.  In\n   * the end it would only ever update the URL bar with /c.\n   *\n   * In client-side routing using pushState/replaceState, we aim to emulate\n   * this behavior and we also do not update history until the end of the\n   * navigation (including processed redirects).  This means that we never\n   * actually touch history until we've processed redirects, so we just use\n   * the history action from the original navigation (PUSH or REPLACE).\n   */\n  async function startRedirectNavigation(\n    request: Request,\n    redirect: RedirectResult,\n    {\n      submission,\n      fetcherSubmission,\n      replace,\n    }: {\n      submission?: Submission;\n      fetcherSubmission?: Submission;\n      replace?: boolean;\n    } = {}\n  ) {\n    if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n      isRevalidationRequired = true;\n    }\n\n    let location = redirect.response.headers.get(\"Location\");\n    invariant(location, \"Expected a Location header on the redirect Response\");\n    location = normalizeRedirectLocation(\n      location,\n      new URL(request.url),\n      basename\n    );\n    let redirectLocation = createLocation(state.location, location, {\n      _isRedirect: true,\n    });\n\n    if (isBrowser) {\n      let isDocumentReload = false;\n\n      if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n        // Hard reload if the response contained X-Remix-Reload-Document\n        isDocumentReload = true;\n      } else if (ABSOLUTE_URL_REGEX.test(location)) {\n        const url = init.history.createURL(location);\n        isDocumentReload =\n          // Hard reload if it's an absolute URL to a new origin\n          url.origin !== routerWindow.location.origin ||\n          // Hard reload if it's an absolute URL that does not match our basename\n          stripBasename(url.pathname, basename) == null;\n      }\n\n      if (isDocumentReload) {\n        if (replace) {\n          routerWindow.location.replace(location);\n        } else {\n          routerWindow.location.assign(location);\n        }\n        return;\n      }\n    }\n\n    // There's no need to abort on redirects, since we don't detect the\n    // redirect until the action/loaders have settled\n    pendingNavigationController = null;\n\n    let redirectHistoryAction =\n      replace === true || redirect.response.headers.has(\"X-Remix-Replace\")\n        ? HistoryAction.Replace\n        : HistoryAction.Push;\n\n    // Use the incoming submission if provided, fallback on the active one in\n    // state.navigation\n    let { formMethod, formAction, formEncType } = state.navigation;\n    if (\n      !submission &&\n      !fetcherSubmission &&\n      formMethod &&\n      formAction &&\n      formEncType\n    ) {\n      submission = getSubmissionFromNavigation(state.navigation);\n    }\n\n    // If this was a 307/308 submission we want to preserve the HTTP method and\n    // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n    // redirected location\n    let activeSubmission = submission || fetcherSubmission;\n    if (\n      redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n      activeSubmission &&\n      isMutationMethod(activeSubmission.formMethod)\n    ) {\n      await startNavigation(redirectHistoryAction, redirectLocation, {\n        submission: {\n          ...activeSubmission,\n          formAction: location,\n        },\n        // Preserve this flag across redirects\n        preventScrollReset: pendingPreventScrollReset,\n      });\n    } else {\n      // If we have a navigation submission, we will preserve it through the\n      // redirect navigation\n      let overrideNavigation = getLoadingNavigation(\n        redirectLocation,\n        submission\n      );\n      await startNavigation(redirectHistoryAction, redirectLocation, {\n        overrideNavigation,\n        // Send fetcher submissions through for shouldRevalidate\n        fetcherSubmission,\n        // Preserve this flag across redirects\n        preventScrollReset: pendingPreventScrollReset,\n      });\n    }\n  }\n\n  // Utility wrapper for calling dataStrategy client-side without having to\n  // pass around the manifest, mapRouteProperties, etc.\n  async function callDataStrategy(\n    type: \"loader\" | \"action\",\n    request: Request,\n    matchesToLoad: AgnosticDataRouteMatch[],\n    matches: AgnosticDataRouteMatch[]\n  ): Promise<DataResult[]> {\n    try {\n      let results = await callDataStrategyImpl(\n        dataStrategyImpl,\n        type,\n        request,\n        matchesToLoad,\n        matches,\n        manifest,\n        mapRouteProperties\n      );\n\n      return await Promise.all(\n        results.map((result, i) => {\n          if (isRedirectHandlerResult(result)) {\n            let response = result.result as Response;\n            return {\n              type: ResultType.redirect,\n              response: normalizeRelativeRoutingRedirectResponse(\n                response,\n                request,\n                matchesToLoad[i].route.id,\n                matches,\n                basename,\n                future.v7_relativeSplatPath\n              ),\n            };\n          }\n\n          return convertHandlerResultToDataResult(result);\n        })\n      );\n    } catch (e) {\n      // If the outer dataStrategy method throws, just return the error for all\n      // matches - and it'll naturally bubble to the root\n      return matchesToLoad.map(() => ({\n        type: ResultType.error,\n        error: e,\n      }));\n    }\n  }\n\n  async function callLoadersAndMaybeResolveData(\n    currentMatches: AgnosticDataRouteMatch[],\n    matches: AgnosticDataRouteMatch[],\n    matchesToLoad: AgnosticDataRouteMatch[],\n    fetchersToLoad: RevalidatingFetcher[],\n    request: Request\n  ) {\n    let [loaderResults, ...fetcherResults] = await Promise.all([\n      matchesToLoad.length\n        ? callDataStrategy(\"loader\", request, matchesToLoad, matches)\n        : [],\n      ...fetchersToLoad.map((f) => {\n        if (f.matches && f.match && f.controller) {\n          let fetcherRequest = createClientSideRequest(\n            init.history,\n            f.path,\n            f.controller.signal\n          );\n          return callDataStrategy(\n            \"loader\",\n            fetcherRequest,\n            [f.match],\n            f.matches\n          ).then((r) => r[0]);\n        } else {\n          return Promise.resolve<DataResult>({\n            type: ResultType.error,\n            error: getInternalRouterError(404, {\n              pathname: f.path,\n            }),\n          });\n        }\n      }),\n    ]);\n\n    await Promise.all([\n      resolveDeferredResults(\n        currentMatches,\n        matchesToLoad,\n        loaderResults,\n        loaderResults.map(() => request.signal),\n        false,\n        state.loaderData\n      ),\n      resolveDeferredResults(\n        currentMatches,\n        fetchersToLoad.map((f) => f.match),\n        fetcherResults,\n        fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n        true\n      ),\n    ]);\n\n    return {\n      loaderResults,\n      fetcherResults,\n    };\n  }\n\n  function interruptActiveLoads() {\n    // Every interruption triggers a revalidation\n    isRevalidationRequired = true;\n\n    // Cancel pending route-level deferreds and mark cancelled routes for\n    // revalidation\n    cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n    // Abort in-flight fetcher loads\n    fetchLoadMatches.forEach((_, key) => {\n      if (fetchControllers.has(key)) {\n        cancelledFetcherLoads.add(key);\n        abortFetcher(key);\n      }\n    });\n  }\n\n  function updateFetcherState(\n    key: string,\n    fetcher: Fetcher,\n    opts: { flushSync?: boolean } = {}\n  ) {\n    state.fetchers.set(key, fetcher);\n    updateState(\n      { fetchers: new Map(state.fetchers) },\n      { flushSync: (opts && opts.flushSync) === true }\n    );\n  }\n\n  function setFetcherError(\n    key: string,\n    routeId: string,\n    error: any,\n    opts: { flushSync?: boolean } = {}\n  ) {\n    let boundaryMatch = findNearestBoundary(state.matches, routeId);\n    deleteFetcher(key);\n    updateState(\n      {\n        errors: {\n          [boundaryMatch.route.id]: error,\n        },\n        fetchers: new Map(state.fetchers),\n      },\n      { flushSync: (opts && opts.flushSync) === true }\n    );\n  }\n\n  function getFetcher<TData = any>(key: string): Fetcher<TData> {\n    if (future.v7_fetcherPersist) {\n      activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n      // If this fetcher was previously marked for deletion, unmark it since we\n      // have a new instance\n      if (deletedFetchers.has(key)) {\n        deletedFetchers.delete(key);\n      }\n    }\n    return state.fetchers.get(key) || IDLE_FETCHER;\n  }\n\n  function deleteFetcher(key: string): void {\n    let fetcher = state.fetchers.get(key);\n    // Don't abort the controller if this is a deletion of a fetcher.submit()\n    // in it's loading phase since - we don't want to abort the corresponding\n    // revalidation and want them to complete and land\n    if (\n      fetchControllers.has(key) &&\n      !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n    ) {\n      abortFetcher(key);\n    }\n    fetchLoadMatches.delete(key);\n    fetchReloadIds.delete(key);\n    fetchRedirectIds.delete(key);\n    deletedFetchers.delete(key);\n    cancelledFetcherLoads.delete(key);\n    state.fetchers.delete(key);\n  }\n\n  function deleteFetcherAndUpdateState(key: string): void {\n    if (future.v7_fetcherPersist) {\n      let count = (activeFetchers.get(key) || 0) - 1;\n      if (count <= 0) {\n        activeFetchers.delete(key);\n        deletedFetchers.add(key);\n      } else {\n        activeFetchers.set(key, count);\n      }\n    } else {\n      deleteFetcher(key);\n    }\n    updateState({ fetchers: new Map(state.fetchers) });\n  }\n\n  function abortFetcher(key: string) {\n    let controller = fetchControllers.get(key);\n    invariant(controller, `Expected fetch controller: ${key}`);\n    controller.abort();\n    fetchControllers.delete(key);\n  }\n\n  function markFetchersDone(keys: string[]) {\n    for (let key of keys) {\n      let fetcher = getFetcher(key);\n      let doneFetcher = getDoneFetcher(fetcher.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n  }\n\n  function markFetchRedirectsDone(): boolean {\n    let doneKeys = [];\n    let updatedFetchers = false;\n    for (let key of fetchRedirectIds) {\n      let fetcher = state.fetchers.get(key);\n      invariant(fetcher, `Expected fetcher: ${key}`);\n      if (fetcher.state === \"loading\") {\n        fetchRedirectIds.delete(key);\n        doneKeys.push(key);\n        updatedFetchers = true;\n      }\n    }\n    markFetchersDone(doneKeys);\n    return updatedFetchers;\n  }\n\n  function abortStaleFetchLoads(landedId: number): boolean {\n    let yeetedKeys = [];\n    for (let [key, id] of fetchReloadIds) {\n      if (id < landedId) {\n        let fetcher = state.fetchers.get(key);\n        invariant(fetcher, `Expected fetcher: ${key}`);\n        if (fetcher.state === \"loading\") {\n          abortFetcher(key);\n          fetchReloadIds.delete(key);\n          yeetedKeys.push(key);\n        }\n      }\n    }\n    markFetchersDone(yeetedKeys);\n    return yeetedKeys.length > 0;\n  }\n\n  function getBlocker(key: string, fn: BlockerFunction) {\n    let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n    if (blockerFunctions.get(key) !== fn) {\n      blockerFunctions.set(key, fn);\n    }\n\n    return blocker;\n  }\n\n  function deleteBlocker(key: string) {\n    state.blockers.delete(key);\n    blockerFunctions.delete(key);\n  }\n\n  // Utility function to update blockers, ensuring valid state transitions\n  function updateBlocker(key: string, newBlocker: Blocker) {\n    let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n    // Poor mans state machine :)\n    // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n    invariant(\n      (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n        (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n        (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n        (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n        (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n      `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n    );\n\n    let blockers = new Map(state.blockers);\n    blockers.set(key, newBlocker);\n    updateState({ blockers });\n  }\n\n  function shouldBlockNavigation({\n    currentLocation,\n    nextLocation,\n    historyAction,\n  }: {\n    currentLocation: Location;\n    nextLocation: Location;\n    historyAction: HistoryAction;\n  }): string | undefined {\n    if (blockerFunctions.size === 0) {\n      return;\n    }\n\n    // We ony support a single active blocker at the moment since we don't have\n    // any compelling use cases for multi-blocker yet\n    if (blockerFunctions.size > 1) {\n      warning(false, \"A router only supports one blocker at a time\");\n    }\n\n    let entries = Array.from(blockerFunctions.entries());\n    let [blockerKey, blockerFunction] = entries[entries.length - 1];\n    let blocker = state.blockers.get(blockerKey);\n\n    if (blocker && blocker.state === \"proceeding\") {\n      // If the blocker is currently proceeding, we don't need to re-check\n      // it and can let this navigation continue\n      return;\n    }\n\n    // At this point, we know we're unblocked/blocked so we need to check the\n    // user-provided blocker function\n    if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n      return blockerKey;\n    }\n  }\n\n  function handleNavigational404(pathname: string) {\n    let error = getInternalRouterError(404, { pathname });\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let { matches, route } = getShortCircuitMatches(routesToUse);\n\n    // Cancel all pending deferred on 404s since we don't keep any routes\n    cancelActiveDeferreds();\n\n    return { notFoundMatches: matches, route, error };\n  }\n\n  function handleDiscoverRouteError(\n    pathname: string,\n    discoverResult: DiscoverRoutesErrorResult\n  ) {\n    return {\n      boundaryId: findNearestBoundary(discoverResult.partialMatches).route.id,\n      error: getInternalRouterError(400, {\n        type: \"route-discovery\",\n        pathname,\n        message:\n          discoverResult.error != null && \"message\" in discoverResult.error\n            ? discoverResult.error\n            : String(discoverResult.error),\n      }),\n    };\n  }\n\n  function cancelActiveDeferreds(\n    predicate?: (routeId: string) => boolean\n  ): string[] {\n    let cancelledRouteIds: string[] = [];\n    activeDeferreds.forEach((dfd, routeId) => {\n      if (!predicate || predicate(routeId)) {\n        // Cancel the deferred - but do not remove from activeDeferreds here -\n        // we rely on the subscribers to do that so our tests can assert proper\n        // cleanup via _internalActiveDeferreds\n        dfd.cancel();\n        cancelledRouteIds.push(routeId);\n        activeDeferreds.delete(routeId);\n      }\n    });\n    return cancelledRouteIds;\n  }\n\n  // Opt in to capturing and reporting scroll positions during navigations,\n  // used by the <ScrollRestoration> component\n  function enableScrollRestoration(\n    positions: Record<string, number>,\n    getPosition: GetScrollPositionFunction,\n    getKey?: GetScrollRestorationKeyFunction\n  ) {\n    savedScrollPositions = positions;\n    getScrollPosition = getPosition;\n    getScrollRestorationKey = getKey || null;\n\n    // Perform initial hydration scroll restoration, since we miss the boat on\n    // the initial updateState() because we've not yet rendered <ScrollRestoration/>\n    // and therefore have no savedScrollPositions available\n    if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n      initialScrollRestored = true;\n      let y = getSavedScrollPosition(state.location, state.matches);\n      if (y != null) {\n        updateState({ restoreScrollPosition: y });\n      }\n    }\n\n    return () => {\n      savedScrollPositions = null;\n      getScrollPosition = null;\n      getScrollRestorationKey = null;\n    };\n  }\n\n  function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n    if (getScrollRestorationKey) {\n      let key = getScrollRestorationKey(\n        location,\n        matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n      );\n      return key || location.key;\n    }\n    return location.key;\n  }\n\n  function saveScrollPosition(\n    location: Location,\n    matches: AgnosticDataRouteMatch[]\n  ): void {\n    if (savedScrollPositions && getScrollPosition) {\n      let key = getScrollKey(location, matches);\n      savedScrollPositions[key] = getScrollPosition();\n    }\n  }\n\n  function getSavedScrollPosition(\n    location: Location,\n    matches: AgnosticDataRouteMatch[]\n  ): number | null {\n    if (savedScrollPositions) {\n      let key = getScrollKey(location, matches);\n      let y = savedScrollPositions[key];\n      if (typeof y === \"number\") {\n        return y;\n      }\n    }\n    return null;\n  }\n\n  function checkFogOfWar(\n    matches: AgnosticDataRouteMatch[] | null,\n    routesToUse: AgnosticDataRouteObject[],\n    pathname: string\n  ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n    if (patchRoutesOnMissImpl) {\n      if (!matches) {\n        let fogMatches = matchRoutesImpl<AgnosticDataRouteObject>(\n          routesToUse,\n          pathname,\n          basename,\n          true\n        );\n\n        return { active: true, matches: fogMatches || [] };\n      } else {\n        let leafRoute = matches[matches.length - 1].route;\n        if (\n          leafRoute.path &&\n          (leafRoute.path === \"*\" || leafRoute.path.endsWith(\"/*\"))\n        ) {\n          // If we matched a splat, it might only be because we haven't yet fetched\n          // the children that would match with a higher score, so let's fetch\n          // around and find out\n          let partialMatches = matchRoutesImpl<AgnosticDataRouteObject>(\n            routesToUse,\n            pathname,\n            basename,\n            true\n          );\n          return { active: true, matches: partialMatches };\n        }\n      }\n    }\n\n    return { active: false, matches: null };\n  }\n\n  type DiscoverRoutesSuccessResult = {\n    type: \"success\";\n    matches: AgnosticDataRouteMatch[] | null;\n  };\n  type DiscoverRoutesErrorResult = {\n    type: \"error\";\n    error: any;\n    partialMatches: AgnosticDataRouteMatch[];\n  };\n  type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n  type DiscoverRoutesResult =\n    | DiscoverRoutesSuccessResult\n    | DiscoverRoutesErrorResult\n    | DiscoverRoutesAbortedResult;\n\n  async function discoverRoutes(\n    matches: AgnosticDataRouteMatch[],\n    pathname: string,\n    signal: AbortSignal\n  ): Promise<DiscoverRoutesResult> {\n    let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n    let route =\n      partialMatches.length > 0\n        ? partialMatches[partialMatches.length - 1].route\n        : null;\n    while (true) {\n      let isNonHMR = inFlightDataRoutes == null;\n      let routesToUse = inFlightDataRoutes || dataRoutes;\n      try {\n        await loadLazyRouteChildren(\n          patchRoutesOnMissImpl!,\n          pathname,\n          partialMatches,\n          routesToUse,\n          manifest,\n          mapRouteProperties,\n          pendingPatchRoutes,\n          signal\n        );\n      } catch (e) {\n        return { type: \"error\", error: e, partialMatches };\n      } finally {\n        // If we are not in the middle of an HMR revalidation and we changed the\n        // routes, provide a new identity so when we `updateState` at the end of\n        // this navigation/fetch `router.routes` will be a new identity and\n        // trigger a re-run of memoized `router.routes` dependencies.\n        // HMR will already update the identity and reflow when it lands\n        // `inFlightDataRoutes` in `completeNavigation`\n        if (isNonHMR) {\n          dataRoutes = [...dataRoutes];\n        }\n      }\n\n      if (signal.aborted) {\n        return { type: \"aborted\" };\n      }\n\n      let newMatches = matchRoutes(routesToUse, pathname, basename);\n      let matchedSplat = false;\n      if (newMatches) {\n        let leafRoute = newMatches[newMatches.length - 1].route;\n\n        if (leafRoute.index) {\n          // If we found an index route, we can stop\n          return { type: \"success\", matches: newMatches };\n        }\n\n        if (leafRoute.path && leafRoute.path.length > 0) {\n          if (leafRoute.path === \"*\") {\n            // If we found a splat route, we can't be sure there's not a\n            // higher-scoring route down some partial matches trail so we need\n            // to check that out\n            matchedSplat = true;\n          } else {\n            // If we found a non-splat route, we can stop\n            return { type: \"success\", matches: newMatches };\n          }\n        }\n      }\n\n      let newPartialMatches = matchRoutesImpl<AgnosticDataRouteObject>(\n        routesToUse,\n        pathname,\n        basename,\n        true\n      );\n\n      // If we are no longer partially matching anything, this was either a\n      // legit splat match above, or it's a 404.  Also avoid loops if the\n      // second pass results in the same partial matches\n      if (\n        !newPartialMatches ||\n        partialMatches.map((m) => m.route.id).join(\"-\") ===\n          newPartialMatches.map((m) => m.route.id).join(\"-\")\n      ) {\n        return { type: \"success\", matches: matchedSplat ? newMatches : null };\n      }\n\n      partialMatches = newPartialMatches;\n      route = partialMatches[partialMatches.length - 1].route;\n      if (route.path === \"*\") {\n        // The splat is still our most accurate partial, so run with it\n        return { type: \"success\", matches: partialMatches };\n      }\n    }\n  }\n\n  function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n    manifest = {};\n    inFlightDataRoutes = convertRoutesToDataRoutes(\n      newRoutes,\n      mapRouteProperties,\n      undefined,\n      manifest\n    );\n  }\n\n  function patchRoutes(\n    routeId: string | null,\n    children: AgnosticRouteObject[]\n  ): void {\n    let isNonHMR = inFlightDataRoutes == null;\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    patchRoutesImpl(\n      routeId,\n      children,\n      routesToUse,\n      manifest,\n      mapRouteProperties\n    );\n\n    // If we are not in the middle of an HMR revalidation and we changed the\n    // routes, provide a new identity and trigger a reflow via `updateState`\n    // to re-run memoized `router.routes` dependencies.\n    // HMR will already update the identity and reflow when it lands\n    // `inFlightDataRoutes` in `completeNavigation`\n    if (isNonHMR) {\n      dataRoutes = [...dataRoutes];\n      updateState({});\n    }\n  }\n\n  router = {\n    get basename() {\n      return basename;\n    },\n    get future() {\n      return future;\n    },\n    get state() {\n      return state;\n    },\n    get routes() {\n      return dataRoutes;\n    },\n    get window() {\n      return routerWindow;\n    },\n    initialize,\n    subscribe,\n    enableScrollRestoration,\n    navigate,\n    fetch,\n    revalidate,\n    // Passthrough to history-aware createHref used by useHref so we get proper\n    // hash-aware URLs in DOM paths\n    createHref: (to: To) => init.history.createHref(to),\n    encodeLocation: (to: To) => init.history.encodeLocation(to),\n    getFetcher,\n    deleteFetcher: deleteFetcherAndUpdateState,\n    dispose,\n    getBlocker,\n    deleteBlocker,\n    patchRoutes,\n    _internalFetchControllers: fetchControllers,\n    _internalActiveDeferreds: activeDeferreds,\n    // TODO: Remove setRoutes, it's temporary to avoid dealing with\n    // updating the tree while validating the update algorithm.\n    _internalSetRoutes,\n  };\n\n  return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n  v7_relativeSplatPath: boolean;\n  v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n  basename?: string;\n  /**\n   * @deprecated Use `mapRouteProperties` instead\n   */\n  detectErrorBoundary?: DetectErrorBoundaryFunction;\n  mapRouteProperties?: MapRoutePropertiesFunction;\n  future?: Partial<StaticHandlerFutureConfig>;\n}\n\nexport function createStaticHandler(\n  routes: AgnosticRouteObject[],\n  opts?: CreateStaticHandlerOptions\n): StaticHandler {\n  invariant(\n    routes.length > 0,\n    \"You must provide a non-empty routes array to createStaticHandler\"\n  );\n\n  let manifest: RouteManifest = {};\n  let basename = (opts ? opts.basename : null) || \"/\";\n  let mapRouteProperties: MapRoutePropertiesFunction;\n  if (opts?.mapRouteProperties) {\n    mapRouteProperties = opts.mapRouteProperties;\n  } else if (opts?.detectErrorBoundary) {\n    // If they are still using the deprecated version, wrap it with the new API\n    let detectErrorBoundary = opts.detectErrorBoundary;\n    mapRouteProperties = (route) => ({\n      hasErrorBoundary: detectErrorBoundary(route),\n    });\n  } else {\n    mapRouteProperties = defaultMapRouteProperties;\n  }\n  // Config driven behavior flags\n  let future: StaticHandlerFutureConfig = {\n    v7_relativeSplatPath: false,\n    v7_throwAbortReason: false,\n    ...(opts ? opts.future : null),\n  };\n\n  let dataRoutes = convertRoutesToDataRoutes(\n    routes,\n    mapRouteProperties,\n    undefined,\n    manifest\n  );\n\n  /**\n   * The query() method is intended for document requests, in which we want to\n   * call an optional action and potentially multiple loaders for all nested\n   * routes.  It returns a StaticHandlerContext object, which is very similar\n   * to the router state (location, loaderData, actionData, errors, etc.) and\n   * also adds SSR-specific information such as the statusCode and headers\n   * from action/loaders Responses.\n   *\n   * It _should_ never throw and should report all errors through the\n   * returned context.errors object, properly associating errors to their error\n   * boundary.  Additionally, it tracks _deepestRenderedBoundaryId which can be\n   * used to emulate React error boundaries during SSr by performing a second\n   * pass only down to the boundaryId.\n   *\n   * The one exception where we do not return a StaticHandlerContext is when a\n   * redirect response is returned or thrown from any action/loader.  We\n   * propagate that out and return the raw Response so the HTTP server can\n   * return it directly.\n   *\n   * - `opts.requestContext` is an optional server context that will be passed\n   *   to actions/loaders in the `context` parameter\n   * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n   *   the bubbling of errors which allows single-fetch-type implementations\n   *   where the client will handle the bubbling and we may need to return data\n   *   for the handling route\n   */\n  async function query(\n    request: Request,\n    {\n      requestContext,\n      skipLoaderErrorBubbling,\n      unstable_dataStrategy,\n    }: {\n      requestContext?: unknown;\n      skipLoaderErrorBubbling?: boolean;\n      unstable_dataStrategy?: DataStrategyFunction;\n    } = {}\n  ): Promise<StaticHandlerContext | Response> {\n    let url = new URL(request.url);\n    let method = request.method;\n    let location = createLocation(\"\", createPath(url), null, \"default\");\n    let matches = matchRoutes(dataRoutes, location, basename);\n\n    // SSR supports HEAD requests while SPA doesn't\n    if (!isValidMethod(method) && method !== \"HEAD\") {\n      let error = getInternalRouterError(405, { method });\n      let { matches: methodNotAllowedMatches, route } =\n        getShortCircuitMatches(dataRoutes);\n      return {\n        basename,\n        location,\n        matches: methodNotAllowedMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error,\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {},\n        activeDeferreds: null,\n      };\n    } else if (!matches) {\n      let error = getInternalRouterError(404, { pathname: location.pathname });\n      let { matches: notFoundMatches, route } =\n        getShortCircuitMatches(dataRoutes);\n      return {\n        basename,\n        location,\n        matches: notFoundMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error,\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {},\n        activeDeferreds: null,\n      };\n    }\n\n    let result = await queryImpl(\n      request,\n      location,\n      matches,\n      requestContext,\n      unstable_dataStrategy || null,\n      skipLoaderErrorBubbling === true,\n      null\n    );\n    if (isResponse(result)) {\n      return result;\n    }\n\n    // When returning StaticHandlerContext, we patch back in the location here\n    // since we need it for React Context.  But this helps keep our submit and\n    // loadRouteData operating on a Request instead of a Location\n    return { location, basename, ...result };\n  }\n\n  /**\n   * The queryRoute() method is intended for targeted route requests, either\n   * for fetch ?_data requests or resource route requests.  In this case, we\n   * are only ever calling a single action or loader, and we are returning the\n   * returned value directly.  In most cases, this will be a Response returned\n   * from the action/loader, but it may be a primitive or other value as well -\n   * and in such cases the calling context should handle that accordingly.\n   *\n   * We do respect the throw/return differentiation, so if an action/loader\n   * throws, then this method will throw the value.  This is important so we\n   * can do proper boundary identification in Remix where a thrown Response\n   * must go to the Catch Boundary but a returned Response is happy-path.\n   *\n   * One thing to note is that any Router-initiated Errors that make sense\n   * to associate with a status code will be thrown as an ErrorResponse\n   * instance which include the raw Error, such that the calling context can\n   * serialize the error as they see fit while including the proper response\n   * code.  Examples here are 404 and 405 errors that occur prior to reaching\n   * any user-defined loaders.\n   *\n   * - `opts.routeId` allows you to specify the specific route handler to call.\n   *   If not provided the handler will determine the proper route by matching\n   *   against `request.url`\n   * - `opts.requestContext` is an optional server context that will be passed\n   *    to actions/loaders in the `context` parameter\n   */\n  async function queryRoute(\n    request: Request,\n    {\n      routeId,\n      requestContext,\n      unstable_dataStrategy,\n    }: {\n      requestContext?: unknown;\n      routeId?: string;\n      unstable_dataStrategy?: DataStrategyFunction;\n    } = {}\n  ): Promise<any> {\n    let url = new URL(request.url);\n    let method = request.method;\n    let location = createLocation(\"\", createPath(url), null, \"default\");\n    let matches = matchRoutes(dataRoutes, location, basename);\n\n    // SSR supports HEAD requests while SPA doesn't\n    if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n      throw getInternalRouterError(405, { method });\n    } else if (!matches) {\n      throw getInternalRouterError(404, { pathname: location.pathname });\n    }\n\n    let match = routeId\n      ? matches.find((m) => m.route.id === routeId)\n      : getTargetMatch(matches, location);\n\n    if (routeId && !match) {\n      throw getInternalRouterError(403, {\n        pathname: location.pathname,\n        routeId,\n      });\n    } else if (!match) {\n      // This should never hit I don't think?\n      throw getInternalRouterError(404, { pathname: location.pathname });\n    }\n\n    let result = await queryImpl(\n      request,\n      location,\n      matches,\n      requestContext,\n      unstable_dataStrategy || null,\n      false,\n      match\n    );\n\n    if (isResponse(result)) {\n      return result;\n    }\n\n    let error = result.errors ? Object.values(result.errors)[0] : undefined;\n    if (error !== undefined) {\n      // If we got back result.errors, that means the loader/action threw\n      // _something_ that wasn't a Response, but it's not guaranteed/required\n      // to be an `instanceof Error` either, so we have to use throw here to\n      // preserve the \"error\" state outside of queryImpl.\n      throw error;\n    }\n\n    // Pick off the right state value to return\n    if (result.actionData) {\n      return Object.values(result.actionData)[0];\n    }\n\n    if (result.loaderData) {\n      let data = Object.values(result.loaderData)[0];\n      if (result.activeDeferreds?.[match.route.id]) {\n        data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n      }\n      return data;\n    }\n\n    return undefined;\n  }\n\n  async function queryImpl(\n    request: Request,\n    location: Location,\n    matches: AgnosticDataRouteMatch[],\n    requestContext: unknown,\n    unstable_dataStrategy: DataStrategyFunction | null,\n    skipLoaderErrorBubbling: boolean,\n    routeMatch: AgnosticDataRouteMatch | null\n  ): Promise<Omit<StaticHandlerContext, \"location\" | \"basename\"> | Response> {\n    invariant(\n      request.signal,\n      \"query()/queryRoute() requests must contain an AbortController signal\"\n    );\n\n    try {\n      if (isMutationMethod(request.method.toLowerCase())) {\n        let result = await submit(\n          request,\n          matches,\n          routeMatch || getTargetMatch(matches, location),\n          requestContext,\n          unstable_dataStrategy,\n          skipLoaderErrorBubbling,\n          routeMatch != null\n        );\n        return result;\n      }\n\n      let result = await loadRouteData(\n        request,\n        matches,\n        requestContext,\n        unstable_dataStrategy,\n        skipLoaderErrorBubbling,\n        routeMatch\n      );\n      return isResponse(result)\n        ? result\n        : {\n            ...result,\n            actionData: null,\n            actionHeaders: {},\n          };\n    } catch (e) {\n      // If the user threw/returned a Response in callLoaderOrAction for a\n      // `queryRoute` call, we throw the `HandlerResult` to bail out early\n      // and then return or throw the raw Response here accordingly\n      if (isHandlerResult(e) && isResponse(e.result)) {\n        if (e.type === ResultType.error) {\n          throw e.result;\n        }\n        return e.result;\n      }\n      // Redirects are always returned since they don't propagate to catch\n      // boundaries\n      if (isRedirectResponse(e)) {\n        return e;\n      }\n      throw e;\n    }\n  }\n\n  async function submit(\n    request: Request,\n    matches: AgnosticDataRouteMatch[],\n    actionMatch: AgnosticDataRouteMatch,\n    requestContext: unknown,\n    unstable_dataStrategy: DataStrategyFunction | null,\n    skipLoaderErrorBubbling: boolean,\n    isRouteRequest: boolean\n  ): Promise<Omit<StaticHandlerContext, \"location\" | \"basename\"> | Response> {\n    let result: DataResult;\n\n    if (!actionMatch.route.action && !actionMatch.route.lazy) {\n      let error = getInternalRouterError(405, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: actionMatch.route.id,\n      });\n      if (isRouteRequest) {\n        throw error;\n      }\n      result = {\n        type: ResultType.error,\n        error,\n      };\n    } else {\n      let results = await callDataStrategy(\n        \"action\",\n        request,\n        [actionMatch],\n        matches,\n        isRouteRequest,\n        requestContext,\n        unstable_dataStrategy\n      );\n      result = results[0];\n\n      if (request.signal.aborted) {\n        throwStaticHandlerAbortedError(request, isRouteRequest, future);\n      }\n    }\n\n    if (isRedirectResult(result)) {\n      // Uhhhh - this should never happen, we should always throw these from\n      // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n      // can get back on the \"throw all redirect responses\" train here should\n      // this ever happen :/\n      throw new Response(null, {\n        status: result.response.status,\n        headers: {\n          Location: result.response.headers.get(\"Location\")!,\n        },\n      });\n    }\n\n    if (isDeferredResult(result)) {\n      let error = getInternalRouterError(400, { type: \"defer-action\" });\n      if (isRouteRequest) {\n        throw error;\n      }\n      result = {\n        type: ResultType.error,\n        error,\n      };\n    }\n\n    if (isRouteRequest) {\n      // Note: This should only be non-Response values if we get here, since\n      // isRouteRequest should throw any Response received in callLoaderOrAction\n      if (isErrorResult(result)) {\n        throw result.error;\n      }\n\n      return {\n        matches: [actionMatch],\n        loaderData: {},\n        actionData: { [actionMatch.route.id]: result.data },\n        errors: null,\n        // Note: statusCode + headers are unused here since queryRoute will\n        // return the raw Response or value\n        statusCode: 200,\n        loaderHeaders: {},\n        actionHeaders: {},\n        activeDeferreds: null,\n      };\n    }\n\n    // Create a GET request for the loaders\n    let loaderRequest = new Request(request.url, {\n      headers: request.headers,\n      redirect: request.redirect,\n      signal: request.signal,\n    });\n\n    if (isErrorResult(result)) {\n      // Store off the pending error - we use it to determine which loaders\n      // to call and will commit it when we complete the navigation\n      let boundaryMatch = skipLoaderErrorBubbling\n        ? actionMatch\n        : findNearestBoundary(matches, actionMatch.route.id);\n\n      let context = await loadRouteData(\n        loaderRequest,\n        matches,\n        requestContext,\n        unstable_dataStrategy,\n        skipLoaderErrorBubbling,\n        null,\n        [boundaryMatch.route.id, result]\n      );\n\n      // action status codes take precedence over loader status codes\n      return {\n        ...context,\n        statusCode: isRouteErrorResponse(result.error)\n          ? result.error.status\n          : result.statusCode != null\n          ? result.statusCode\n          : 500,\n        actionData: null,\n        actionHeaders: {\n          ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n        },\n      };\n    }\n\n    let context = await loadRouteData(\n      loaderRequest,\n      matches,\n      requestContext,\n      unstable_dataStrategy,\n      skipLoaderErrorBubbling,\n      null\n    );\n\n    return {\n      ...context,\n      actionData: {\n        [actionMatch.route.id]: result.data,\n      },\n      // action status codes take precedence over loader status codes\n      ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n      actionHeaders: result.headers\n        ? { [actionMatch.route.id]: result.headers }\n        : {},\n    };\n  }\n\n  async function loadRouteData(\n    request: Request,\n    matches: AgnosticDataRouteMatch[],\n    requestContext: unknown,\n    unstable_dataStrategy: DataStrategyFunction | null,\n    skipLoaderErrorBubbling: boolean,\n    routeMatch: AgnosticDataRouteMatch | null,\n    pendingActionResult?: PendingActionResult\n  ): Promise<\n    | Omit<\n        StaticHandlerContext,\n        \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n      >\n    | Response\n  > {\n    let isRouteRequest = routeMatch != null;\n\n    // Short circuit if we have no loaders to run (queryRoute())\n    if (\n      isRouteRequest &&\n      !routeMatch?.route.loader &&\n      !routeMatch?.route.lazy\n    ) {\n      throw getInternalRouterError(400, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: routeMatch?.route.id,\n      });\n    }\n\n    let requestMatches = routeMatch\n      ? [routeMatch]\n      : pendingActionResult && isErrorResult(pendingActionResult[1])\n      ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n      : matches;\n    let matchesToLoad = requestMatches.filter(\n      (m) => m.route.loader || m.route.lazy\n    );\n\n    // Short circuit if we have no loaders to run (query())\n    if (matchesToLoad.length === 0) {\n      return {\n        matches,\n        // Add a null for all matched routes for proper revalidation on the client\n        loaderData: matches.reduce(\n          (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n          {}\n        ),\n        errors:\n          pendingActionResult && isErrorResult(pendingActionResult[1])\n            ? {\n                [pendingActionResult[0]]: pendingActionResult[1].error,\n              }\n            : null,\n        statusCode: 200,\n        loaderHeaders: {},\n        activeDeferreds: null,\n      };\n    }\n\n    let results = await callDataStrategy(\n      \"loader\",\n      request,\n      matchesToLoad,\n      matches,\n      isRouteRequest,\n      requestContext,\n      unstable_dataStrategy\n    );\n\n    if (request.signal.aborted) {\n      throwStaticHandlerAbortedError(request, isRouteRequest, future);\n    }\n\n    // Process and commit output from loaders\n    let activeDeferreds = new Map<string, DeferredData>();\n    let context = processRouteLoaderData(\n      matches,\n      matchesToLoad,\n      results,\n      pendingActionResult,\n      activeDeferreds,\n      skipLoaderErrorBubbling\n    );\n\n    // Add a null for any non-loader matches for proper revalidation on the client\n    let executedLoaders = new Set<string>(\n      matchesToLoad.map((match) => match.route.id)\n    );\n    matches.forEach((match) => {\n      if (!executedLoaders.has(match.route.id)) {\n        context.loaderData[match.route.id] = null;\n      }\n    });\n\n    return {\n      ...context,\n      matches,\n      activeDeferreds:\n        activeDeferreds.size > 0\n          ? Object.fromEntries(activeDeferreds.entries())\n          : null,\n    };\n  }\n\n  // Utility wrapper for calling dataStrategy server-side without having to\n  // pass around the manifest, mapRouteProperties, etc.\n  async function callDataStrategy(\n    type: \"loader\" | \"action\",\n    request: Request,\n    matchesToLoad: AgnosticDataRouteMatch[],\n    matches: AgnosticDataRouteMatch[],\n    isRouteRequest: boolean,\n    requestContext: unknown,\n    unstable_dataStrategy: DataStrategyFunction | null\n  ): Promise<DataResult[]> {\n    let results = await callDataStrategyImpl(\n      unstable_dataStrategy || defaultDataStrategy,\n      type,\n      request,\n      matchesToLoad,\n      matches,\n      manifest,\n      mapRouteProperties,\n      requestContext\n    );\n\n    return await Promise.all(\n      results.map((result, i) => {\n        if (isRedirectHandlerResult(result)) {\n          let response = result.result as Response;\n          // Throw redirects and let the server handle them with an HTTP redirect\n          throw normalizeRelativeRoutingRedirectResponse(\n            response,\n            request,\n            matchesToLoad[i].route.id,\n            matches,\n            basename,\n            future.v7_relativeSplatPath\n          );\n        }\n        if (isResponse(result.result) && isRouteRequest) {\n          // For SSR single-route requests, we want to hand Responses back\n          // directly without unwrapping\n          throw result;\n        }\n\n        return convertHandlerResultToDataResult(result);\n      })\n    );\n  }\n\n  return {\n    dataRoutes,\n    query,\n    queryRoute,\n  };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n  routes: AgnosticDataRouteObject[],\n  context: StaticHandlerContext,\n  error: any\n) {\n  let newContext: StaticHandlerContext = {\n    ...context,\n    statusCode: isRouteErrorResponse(error) ? error.status : 500,\n    errors: {\n      [context._deepestRenderedBoundaryId || routes[0].id]: error,\n    },\n  };\n  return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n  request: Request,\n  isRouteRequest: boolean,\n  future: StaticHandlerFutureConfig\n) {\n  if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n    throw request.signal.reason;\n  }\n\n  let method = isRouteRequest ? \"queryRoute\" : \"query\";\n  throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n  opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n  return (\n    opts != null &&\n    ((\"formData\" in opts && opts.formData != null) ||\n      (\"body\" in opts && opts.body !== undefined))\n  );\n}\n\nfunction normalizeTo(\n  location: Path,\n  matches: AgnosticDataRouteMatch[],\n  basename: string,\n  prependBasename: boolean,\n  to: To | null,\n  v7_relativeSplatPath: boolean,\n  fromRouteId?: string,\n  relative?: RelativeRoutingType\n) {\n  let contextualMatches: AgnosticDataRouteMatch[];\n  let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n  if (fromRouteId) {\n    // Grab matches up to the calling route so our route-relative logic is\n    // relative to the correct source route\n    contextualMatches = [];\n    for (let match of matches) {\n      contextualMatches.push(match);\n      if (match.route.id === fromRouteId) {\n        activeRouteMatch = match;\n        break;\n      }\n    }\n  } else {\n    contextualMatches = matches;\n    activeRouteMatch = matches[matches.length - 1];\n  }\n\n  // Resolve the relative path\n  let path = resolveTo(\n    to ? to : \".\",\n    getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n    stripBasename(location.pathname, basename) || location.pathname,\n    relative === \"path\"\n  );\n\n  // When `to` is not specified we inherit search/hash from the current\n  // location, unlike when to=\".\" and we just inherit the path.\n  // See https://github.com/remix-run/remix/issues/927\n  if (to == null) {\n    path.search = location.search;\n    path.hash = location.hash;\n  }\n\n  // Add an ?index param for matched index routes if we don't already have one\n  if (\n    (to == null || to === \"\" || to === \".\") &&\n    activeRouteMatch &&\n    activeRouteMatch.route.index &&\n    !hasNakedIndexQuery(path.search)\n  ) {\n    path.search = path.search\n      ? path.search.replace(/^\\?/, \"?index&\")\n      : \"?index\";\n  }\n\n  // If we're operating within a basename, prepend it to the pathname.  If\n  // this is a root navigation, then just use the raw basename which allows\n  // the basename to have full control over the presence of a trailing slash\n  // on root actions\n  if (prependBasename && basename !== \"/\") {\n    path.pathname =\n      path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n  }\n\n  return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n  normalizeFormMethod: boolean,\n  isFetcher: boolean,\n  path: string,\n  opts?: BaseNavigateOrFetchOptions\n): {\n  path: string;\n  submission?: Submission;\n  error?: ErrorResponseImpl;\n} {\n  // Return location verbatim on non-submission navigations\n  if (!opts || !isSubmissionNavigation(opts)) {\n    return { path };\n  }\n\n  if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n    return {\n      path,\n      error: getInternalRouterError(405, { method: opts.formMethod }),\n    };\n  }\n\n  let getInvalidBodyError = () => ({\n    path,\n    error: getInternalRouterError(400, { type: \"invalid-body\" }),\n  });\n\n  // Create a Submission on non-GET navigations\n  let rawFormMethod = opts.formMethod || \"get\";\n  let formMethod = normalizeFormMethod\n    ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n    : (rawFormMethod.toLowerCase() as FormMethod);\n  let formAction = stripHashFromPath(path);\n\n  if (opts.body !== undefined) {\n    if (opts.formEncType === \"text/plain\") {\n      // text only support POST/PUT/PATCH/DELETE submissions\n      if (!isMutationMethod(formMethod)) {\n        return getInvalidBodyError();\n      }\n\n      let text =\n        typeof opts.body === \"string\"\n          ? opts.body\n          : opts.body instanceof FormData ||\n            opts.body instanceof URLSearchParams\n          ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n            Array.from(opts.body.entries()).reduce(\n              (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n              \"\"\n            )\n          : String(opts.body);\n\n      return {\n        path,\n        submission: {\n          formMethod,\n          formAction,\n          formEncType: opts.formEncType,\n          formData: undefined,\n          json: undefined,\n          text,\n        },\n      };\n    } else if (opts.formEncType === \"application/json\") {\n      // json only supports POST/PUT/PATCH/DELETE submissions\n      if (!isMutationMethod(formMethod)) {\n        return getInvalidBodyError();\n      }\n\n      try {\n        let json =\n          typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n        return {\n          path,\n          submission: {\n            formMethod,\n            formAction,\n            formEncType: opts.formEncType,\n            formData: undefined,\n            json,\n            text: undefined,\n          },\n        };\n      } catch (e) {\n        return getInvalidBodyError();\n      }\n    }\n  }\n\n  invariant(\n    typeof FormData === \"function\",\n    \"FormData is not available in this environment\"\n  );\n\n  let searchParams: URLSearchParams;\n  let formData: FormData;\n\n  if (opts.formData) {\n    searchParams = convertFormDataToSearchParams(opts.formData);\n    formData = opts.formData;\n  } else if (opts.body instanceof FormData) {\n    searchParams = convertFormDataToSearchParams(opts.body);\n    formData = opts.body;\n  } else if (opts.body instanceof URLSearchParams) {\n    searchParams = opts.body;\n    formData = convertSearchParamsToFormData(searchParams);\n  } else if (opts.body == null) {\n    searchParams = new URLSearchParams();\n    formData = new FormData();\n  } else {\n    try {\n      searchParams = new URLSearchParams(opts.body);\n      formData = convertSearchParamsToFormData(searchParams);\n    } catch (e) {\n      return getInvalidBodyError();\n    }\n  }\n\n  let submission: Submission = {\n    formMethod,\n    formAction,\n    formEncType:\n      (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n    formData,\n    json: undefined,\n    text: undefined,\n  };\n\n  if (isMutationMethod(submission.formMethod)) {\n    return { path, submission };\n  }\n\n  // Flatten submission onto URLSearchParams for GET submissions\n  let parsedPath = parsePath(path);\n  // On GET navigation submissions we can drop the ?index param from the\n  // resulting location since all loaders will run.  But fetcher GET submissions\n  // only run a single loader so we need to preserve any incoming ?index params\n  if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n    searchParams.append(\"index\", \"\");\n  }\n  parsedPath.search = `?${searchParams}`;\n\n  return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n  matches: AgnosticDataRouteMatch[],\n  boundaryId: string\n) {\n  let boundaryMatches = matches;\n  if (boundaryId) {\n    let index = matches.findIndex((m) => m.route.id === boundaryId);\n    if (index >= 0) {\n      boundaryMatches = matches.slice(0, index);\n    }\n  }\n  return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n  history: History,\n  state: RouterState,\n  matches: AgnosticDataRouteMatch[],\n  submission: Submission | undefined,\n  location: Location,\n  isInitialLoad: boolean,\n  skipActionErrorRevalidation: boolean,\n  isRevalidationRequired: boolean,\n  cancelledDeferredRoutes: string[],\n  cancelledFetcherLoads: Set<string>,\n  deletedFetchers: Set<string>,\n  fetchLoadMatches: Map<string, FetchLoadMatch>,\n  fetchRedirectIds: Set<string>,\n  routesToUse: AgnosticDataRouteObject[],\n  basename: string | undefined,\n  pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n  let actionResult = pendingActionResult\n    ? isErrorResult(pendingActionResult[1])\n      ? pendingActionResult[1].error\n      : pendingActionResult[1].data\n    : undefined;\n  let currentUrl = history.createURL(state.location);\n  let nextUrl = history.createURL(location);\n\n  // Pick navigation matches that are net-new or qualify for revalidation\n  let boundaryId =\n    pendingActionResult && isErrorResult(pendingActionResult[1])\n      ? pendingActionResult[0]\n      : undefined;\n  let boundaryMatches = boundaryId\n    ? getLoaderMatchesUntilBoundary(matches, boundaryId)\n    : matches;\n\n  // Don't revalidate loaders by default after action 4xx/5xx responses\n  // when the flag is enabled.  They can still opt-into revalidation via\n  // `shouldRevalidate` via `actionResult`\n  let actionStatus = pendingActionResult\n    ? pendingActionResult[1].statusCode\n    : undefined;\n  let shouldSkipRevalidation =\n    skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n  let navigationMatches = boundaryMatches.filter((match, index) => {\n    let { route } = match;\n    if (route.lazy) {\n      // We haven't loaded this route yet so we don't know if it's got a loader!\n      return true;\n    }\n\n    if (route.loader == null) {\n      return false;\n    }\n\n    if (isInitialLoad) {\n      if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n        return true;\n      }\n      return (\n        state.loaderData[route.id] === undefined &&\n        // Don't re-run if the loader ran and threw an error\n        (!state.errors || state.errors[route.id] === undefined)\n      );\n    }\n\n    // Always call the loader on new route instances and pending defer cancellations\n    if (\n      isNewLoader(state.loaderData, state.matches[index], match) ||\n      cancelledDeferredRoutes.some((id) => id === match.route.id)\n    ) {\n      return true;\n    }\n\n    // This is the default implementation for when we revalidate.  If the route\n    // provides it's own implementation, then we give them full control but\n    // provide this value so they can leverage it if needed after they check\n    // their own specific use cases\n    let currentRouteMatch = state.matches[index];\n    let nextRouteMatch = match;\n\n    return shouldRevalidateLoader(match, {\n      currentUrl,\n      currentParams: currentRouteMatch.params,\n      nextUrl,\n      nextParams: nextRouteMatch.params,\n      ...submission,\n      actionResult,\n      actionStatus,\n      defaultShouldRevalidate: shouldSkipRevalidation\n        ? false\n        : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n          isRevalidationRequired ||\n          currentUrl.pathname + currentUrl.search ===\n            nextUrl.pathname + nextUrl.search ||\n          // Search params affect all loaders\n          currentUrl.search !== nextUrl.search ||\n          isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n    });\n  });\n\n  // Pick fetcher.loads that need to be revalidated\n  let revalidatingFetchers: RevalidatingFetcher[] = [];\n  fetchLoadMatches.forEach((f, key) => {\n    // Don't revalidate:\n    //  - on initial load (shouldn't be any fetchers then anyway)\n    //  - if fetcher won't be present in the subsequent render\n    //    - no longer matches the URL (v7_fetcherPersist=false)\n    //    - was unmounted but persisted due to v7_fetcherPersist=true\n    if (\n      isInitialLoad ||\n      !matches.some((m) => m.route.id === f.routeId) ||\n      deletedFetchers.has(key)\n    ) {\n      return;\n    }\n\n    let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n    // If the fetcher path no longer matches, push it in with null matches so\n    // we can trigger a 404 in callLoadersAndMaybeResolveData.  Note this is\n    // currently only a use-case for Remix HMR where the route tree can change\n    // at runtime and remove a route previously loaded via a fetcher\n    if (!fetcherMatches) {\n      revalidatingFetchers.push({\n        key,\n        routeId: f.routeId,\n        path: f.path,\n        matches: null,\n        match: null,\n        controller: null,\n      });\n      return;\n    }\n\n    // Revalidating fetchers are decoupled from the route matches since they\n    // load from a static href.  They revalidate based on explicit revalidation\n    // (submission, useRevalidator, or X-Remix-Revalidate)\n    let fetcher = state.fetchers.get(key);\n    let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n    let shouldRevalidate = false;\n    if (fetchRedirectIds.has(key)) {\n      // Never trigger a revalidation of an actively redirecting fetcher\n      shouldRevalidate = false;\n    } else if (cancelledFetcherLoads.has(key)) {\n      // Always mark for revalidation if the fetcher was cancelled\n      cancelledFetcherLoads.delete(key);\n      shouldRevalidate = true;\n    } else if (\n      fetcher &&\n      fetcher.state !== \"idle\" &&\n      fetcher.data === undefined\n    ) {\n      // If the fetcher hasn't ever completed loading yet, then this isn't a\n      // revalidation, it would just be a brand new load if an explicit\n      // revalidation is required\n      shouldRevalidate = isRevalidationRequired;\n    } else {\n      // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n      // to explicit revalidations only\n      shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n        currentUrl,\n        currentParams: state.matches[state.matches.length - 1].params,\n        nextUrl,\n        nextParams: matches[matches.length - 1].params,\n        ...submission,\n        actionResult,\n        actionStatus,\n        defaultShouldRevalidate: shouldSkipRevalidation\n          ? false\n          : isRevalidationRequired,\n      });\n    }\n\n    if (shouldRevalidate) {\n      revalidatingFetchers.push({\n        key,\n        routeId: f.routeId,\n        path: f.path,\n        matches: fetcherMatches,\n        match: fetcherMatch,\n        controller: new AbortController(),\n      });\n    }\n  });\n\n  return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n  currentLoaderData: RouteData,\n  currentMatch: AgnosticDataRouteMatch,\n  match: AgnosticDataRouteMatch\n) {\n  let isNew =\n    // [a] -> [a, b]\n    !currentMatch ||\n    // [a, b] -> [a, c]\n    match.route.id !== currentMatch.route.id;\n\n  // Handle the case that we don't have data for a re-used route, potentially\n  // from a prior error or from a cancelled pending deferred\n  let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n  // Always load if this is a net-new route or we don't yet have data\n  return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n  currentMatch: AgnosticDataRouteMatch,\n  match: AgnosticDataRouteMatch\n) {\n  let currentPath = currentMatch.route.path;\n  return (\n    // param change for this match, /users/123 -> /users/456\n    currentMatch.pathname !== match.pathname ||\n    // splat param changed, which is not present in match.path\n    // e.g. /files/images/avatar.jpg -> files/finances.xls\n    (currentPath != null &&\n      currentPath.endsWith(\"*\") &&\n      currentMatch.params[\"*\"] !== match.params[\"*\"])\n  );\n}\n\nfunction shouldRevalidateLoader(\n  loaderMatch: AgnosticDataRouteMatch,\n  arg: ShouldRevalidateFunctionArgs\n) {\n  if (loaderMatch.route.shouldRevalidate) {\n    let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n    if (typeof routeChoice === \"boolean\") {\n      return routeChoice;\n    }\n  }\n\n  return arg.defaultShouldRevalidate;\n}\n\n/**\n * Idempotent utility to execute patchRoutesOnMiss() to lazily load route\n * definitions and update the routes/routeManifest\n */\nasync function loadLazyRouteChildren(\n  patchRoutesOnMissImpl: AgnosticPatchRoutesOnMissFunction,\n  path: string,\n  matches: AgnosticDataRouteMatch[],\n  routes: AgnosticDataRouteObject[],\n  manifest: RouteManifest,\n  mapRouteProperties: MapRoutePropertiesFunction,\n  pendingRouteChildren: Map<string, ReturnType<typeof patchRoutesOnMissImpl>>,\n  signal: AbortSignal\n) {\n  let key = [path, ...matches.map((m) => m.route.id)].join(\"-\");\n  try {\n    let pending = pendingRouteChildren.get(key);\n    if (!pending) {\n      pending = patchRoutesOnMissImpl({\n        path,\n        matches,\n        patch: (routeId, children) => {\n          if (!signal.aborted) {\n            patchRoutesImpl(\n              routeId,\n              children,\n              routes,\n              manifest,\n              mapRouteProperties\n            );\n          }\n        },\n      });\n      pendingRouteChildren.set(key, pending);\n    }\n\n    if (pending && isPromise<AgnosticRouteObject[]>(pending)) {\n      await pending;\n    }\n  } finally {\n    pendingRouteChildren.delete(key);\n  }\n}\n\nfunction patchRoutesImpl(\n  routeId: string | null,\n  children: AgnosticRouteObject[],\n  routesToUse: AgnosticDataRouteObject[],\n  manifest: RouteManifest,\n  mapRouteProperties: MapRoutePropertiesFunction\n) {\n  if (routeId) {\n    let route = manifest[routeId];\n    invariant(\n      route,\n      `No route found to patch children into: routeId = ${routeId}`\n    );\n    let dataChildren = convertRoutesToDataRoutes(\n      children,\n      mapRouteProperties,\n      [routeId, \"patch\", String(route.children?.length || \"0\")],\n      manifest\n    );\n    if (route.children) {\n      route.children.push(...dataChildren);\n    } else {\n      route.children = dataChildren;\n    }\n  } else {\n    let dataChildren = convertRoutesToDataRoutes(\n      children,\n      mapRouteProperties,\n      [\"patch\", String(routesToUse.length || \"0\")],\n      manifest\n    );\n    routesToUse.push(...dataChildren);\n  }\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n  route: AgnosticDataRouteObject,\n  mapRouteProperties: MapRoutePropertiesFunction,\n  manifest: RouteManifest\n) {\n  if (!route.lazy) {\n    return;\n  }\n\n  let lazyRoute = await route.lazy();\n\n  // If the lazy route function was executed and removed by another parallel\n  // call then we can return - first lazy() to finish wins because the return\n  // value of lazy is expected to be static\n  if (!route.lazy) {\n    return;\n  }\n\n  let routeToUpdate = manifest[route.id];\n  invariant(routeToUpdate, \"No route found in manifest\");\n\n  // Update the route in place.  This should be safe because there's no way\n  // we could yet be sitting on this route as we can't get there without\n  // resolving lazy() first.\n  //\n  // This is different than the HMR \"update\" use-case where we may actively be\n  // on the route being updated.  The main concern boils down to \"does this\n  // mutation affect any ongoing navigations or any current state.matches\n  // values?\".  If not, it should be safe to update in place.\n  let routeUpdates: Record<string, any> = {};\n  for (let lazyRouteProperty in lazyRoute) {\n    let staticRouteValue =\n      routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n    let isPropertyStaticallyDefined =\n      staticRouteValue !== undefined &&\n      // This property isn't static since it should always be updated based\n      // on the route updates\n      lazyRouteProperty !== \"hasErrorBoundary\";\n\n    warning(\n      !isPropertyStaticallyDefined,\n      `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n        `defined but its lazy function is also returning a value for this property. ` +\n        `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n    );\n\n    if (\n      !isPropertyStaticallyDefined &&\n      !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n    ) {\n      routeUpdates[lazyRouteProperty] =\n        lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n    }\n  }\n\n  // Mutate the route with the provided updates.  Do this first so we pass\n  // the updated version to mapRouteProperties\n  Object.assign(routeToUpdate, routeUpdates);\n\n  // Mutate the `hasErrorBoundary` property on the route based on the route\n  // updates and remove the `lazy` function so we don't resolve the lazy\n  // route again.\n  Object.assign(routeToUpdate, {\n    // To keep things framework agnostic, we use the provided\n    // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n    // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n    // the logic will differ between frameworks.\n    ...mapRouteProperties(routeToUpdate),\n    lazy: undefined,\n  });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nfunction defaultDataStrategy(\n  opts: DataStrategyFunctionArgs\n): ReturnType<DataStrategyFunction> {\n  return Promise.all(opts.matches.map((m) => m.resolve()));\n}\n\nasync function callDataStrategyImpl(\n  dataStrategyImpl: DataStrategyFunction,\n  type: \"loader\" | \"action\",\n  request: Request,\n  matchesToLoad: AgnosticDataRouteMatch[],\n  matches: AgnosticDataRouteMatch[],\n  manifest: RouteManifest,\n  mapRouteProperties: MapRoutePropertiesFunction,\n  requestContext?: unknown\n): Promise<HandlerResult[]> {\n  let routeIdsToLoad = matchesToLoad.reduce(\n    (acc, m) => acc.add(m.route.id),\n    new Set<string>()\n  );\n  let loadedMatches = new Set<string>();\n\n  // Send all matches here to allow for a middleware-type implementation.\n  // handler will be a no-op for unneeded routes and we filter those results\n  // back out below.\n  let results = await dataStrategyImpl({\n    matches: matches.map((match) => {\n      let shouldLoad = routeIdsToLoad.has(match.route.id);\n      // `resolve` encapsulates the route.lazy, executing the\n      // loader/action, and mapping return values/thrown errors to a\n      // HandlerResult.  Users can pass a callback to take fine-grained control\n      // over the execution of the loader/action\n      let resolve: DataStrategyMatch[\"resolve\"] = (handlerOverride) => {\n        loadedMatches.add(match.route.id);\n        return shouldLoad\n          ? callLoaderOrAction(\n              type,\n              request,\n              match,\n              manifest,\n              mapRouteProperties,\n              handlerOverride,\n              requestContext\n            )\n          : Promise.resolve({ type: ResultType.data, result: undefined });\n      };\n\n      return {\n        ...match,\n        shouldLoad,\n        resolve,\n      };\n    }),\n    request,\n    params: matches[0].params,\n    context: requestContext,\n  });\n\n  // Throw if any loadRoute implementations not called since they are what\n  // ensures a route is fully loaded\n  matches.forEach((m) =>\n    invariant(\n      loadedMatches.has(m.route.id),\n      `\\`match.resolve()\\` was not called for route id \"${m.route.id}\". ` +\n        \"You must call `match.resolve()` on every match passed to \" +\n        \"`dataStrategy` to ensure all routes are properly loaded.\"\n    )\n  );\n\n  // Filter out any middleware-only matches for which we didn't need to run handlers\n  return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n  type: \"loader\" | \"action\",\n  request: Request,\n  match: AgnosticDataRouteMatch,\n  manifest: RouteManifest,\n  mapRouteProperties: MapRoutePropertiesFunction,\n  handlerOverride: Parameters<DataStrategyMatch[\"resolve\"]>[0],\n  staticContext?: unknown\n): Promise<HandlerResult> {\n  let result: HandlerResult;\n  let onReject: (() => void) | undefined;\n\n  let runHandler = (\n    handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n  ): Promise<HandlerResult> => {\n    // Setup a promise we can race against so that abort signals short circuit\n    let reject: () => void;\n    // This will never resolve so safe to type it as Promise<HandlerResult> to\n    // satisfy the function return value\n    let abortPromise = new Promise<HandlerResult>((_, r) => (reject = r));\n    onReject = () => reject();\n    request.signal.addEventListener(\"abort\", onReject);\n\n    let actualHandler = (ctx?: unknown) => {\n      if (typeof handler !== \"function\") {\n        return Promise.reject(\n          new Error(\n            `You cannot call the handler for a route which defines a boolean ` +\n              `\"${type}\" [routeId: ${match.route.id}]`\n          )\n        );\n      }\n      return handler(\n        {\n          request,\n          params: match.params,\n          context: staticContext,\n        },\n        ...(ctx !== undefined ? [ctx] : [])\n      );\n    };\n\n    let handlerPromise: Promise<HandlerResult>;\n    if (handlerOverride) {\n      handlerPromise = handlerOverride((ctx: unknown) => actualHandler(ctx));\n    } else {\n      handlerPromise = (async () => {\n        try {\n          let val = await actualHandler();\n          return { type: \"data\", result: val };\n        } catch (e) {\n          return { type: \"error\", result: e };\n        }\n      })();\n    }\n\n    return Promise.race([handlerPromise, abortPromise]);\n  };\n\n  try {\n    let handler = match.route[type];\n\n    if (match.route.lazy) {\n      if (handler) {\n        // Run statically defined handler in parallel with lazy()\n        let handlerError;\n        let [value] = await Promise.all([\n          // If the handler throws, don't let it immediately bubble out,\n          // since we need to let the lazy() execution finish so we know if this\n          // route has a boundary that can handle the error\n          runHandler(handler).catch((e) => {\n            handlerError = e;\n          }),\n          loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n        ]);\n        if (handlerError !== undefined) {\n          throw handlerError;\n        }\n        result = value!;\n      } else {\n        // Load lazy route module, then run any returned handler\n        await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n        handler = match.route[type];\n        if (handler) {\n          // Handler still runs even if we got interrupted to maintain consistency\n          // with un-abortable behavior of handler execution on non-lazy or\n          // previously-lazy-loaded routes\n          result = await runHandler(handler);\n        } else if (type === \"action\") {\n          let url = new URL(request.url);\n          let pathname = url.pathname + url.search;\n          throw getInternalRouterError(405, {\n            method: request.method,\n            pathname,\n            routeId: match.route.id,\n          });\n        } else {\n          // lazy() route has no loader to run.  Short circuit here so we don't\n          // hit the invariant below that errors on returning undefined.\n          return { type: ResultType.data, result: undefined };\n        }\n      }\n    } else if (!handler) {\n      let url = new URL(request.url);\n      let pathname = url.pathname + url.search;\n      throw getInternalRouterError(404, {\n        pathname,\n      });\n    } else {\n      result = await runHandler(handler);\n    }\n\n    invariant(\n      result.result !== undefined,\n      `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n        `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n        `function. Please return a value or \\`null\\`.`\n    );\n  } catch (e) {\n    // We should already be catching and converting normal handler executions to\n    // HandlerResults and returning them, so anything that throws here is an\n    // unexpected error we still need to wrap\n    return { type: ResultType.error, result: e };\n  } finally {\n    if (onReject) {\n      request.signal.removeEventListener(\"abort\", onReject);\n    }\n  }\n\n  return result;\n}\n\nasync function convertHandlerResultToDataResult(\n  handlerResult: HandlerResult\n): Promise<DataResult> {\n  let { result, type } = handlerResult;\n\n  if (isResponse(result)) {\n    let data: any;\n\n    try {\n      let contentType = result.headers.get(\"Content-Type\");\n      // Check between word boundaries instead of startsWith() due to the last\n      // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n      if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n        if (result.body == null) {\n          data = null;\n        } else {\n          data = await result.json();\n        }\n      } else {\n        data = await result.text();\n      }\n    } catch (e) {\n      return { type: ResultType.error, error: e };\n    }\n\n    if (type === ResultType.error) {\n      return {\n        type: ResultType.error,\n        error: new ErrorResponseImpl(result.status, result.statusText, data),\n        statusCode: result.status,\n        headers: result.headers,\n      };\n    }\n\n    return {\n      type: ResultType.data,\n      data,\n      statusCode: result.status,\n      headers: result.headers,\n    };\n  }\n\n  if (type === ResultType.error) {\n    if (isDataWithResponseInit(result)) {\n      if (result.data instanceof Error) {\n        return {\n          type: ResultType.error,\n          error: result.data,\n          statusCode: result.init?.status,\n        };\n      }\n\n      // Convert thrown unstable_data() to ErrorResponse instances\n      result = new ErrorResponseImpl(\n        result.init?.status || 500,\n        undefined,\n        result.data\n      );\n    }\n    return {\n      type: ResultType.error,\n      error: result,\n      statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n    };\n  }\n\n  if (isDeferredData(result)) {\n    return {\n      type: ResultType.deferred,\n      deferredData: result,\n      statusCode: result.init?.status,\n      headers: result.init?.headers && new Headers(result.init.headers),\n    };\n  }\n\n  if (isDataWithResponseInit(result)) {\n    return {\n      type: ResultType.data,\n      data: result.data,\n      statusCode: result.init?.status,\n      headers: result.init?.headers\n        ? new Headers(result.init.headers)\n        : undefined,\n    };\n  }\n\n  return { type: ResultType.data, data: result };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n  response: Response,\n  request: Request,\n  routeId: string,\n  matches: AgnosticDataRouteMatch[],\n  basename: string,\n  v7_relativeSplatPath: boolean\n) {\n  let location = response.headers.get(\"Location\");\n  invariant(\n    location,\n    \"Redirects returned/thrown from loaders/actions must have a Location header\"\n  );\n\n  if (!ABSOLUTE_URL_REGEX.test(location)) {\n    let trimmedMatches = matches.slice(\n      0,\n      matches.findIndex((m) => m.route.id === routeId) + 1\n    );\n    location = normalizeTo(\n      new URL(request.url),\n      trimmedMatches,\n      basename,\n      true,\n      location,\n      v7_relativeSplatPath\n    );\n    response.headers.set(\"Location\", location);\n  }\n\n  return response;\n}\n\nfunction normalizeRedirectLocation(\n  location: string,\n  currentUrl: URL,\n  basename: string\n): string {\n  if (ABSOLUTE_URL_REGEX.test(location)) {\n    // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n    let normalizedLocation = location;\n    let url = normalizedLocation.startsWith(\"//\")\n      ? new URL(currentUrl.protocol + normalizedLocation)\n      : new URL(normalizedLocation);\n    let isSameBasename = stripBasename(url.pathname, basename) != null;\n    if (url.origin === currentUrl.origin && isSameBasename) {\n      return url.pathname + url.search + url.hash;\n    }\n  }\n  return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches.  During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n  history: History,\n  location: string | Location,\n  signal: AbortSignal,\n  submission?: Submission\n): Request {\n  let url = history.createURL(stripHashFromPath(location)).toString();\n  let init: RequestInit = { signal };\n\n  if (submission && isMutationMethod(submission.formMethod)) {\n    let { formMethod, formEncType } = submission;\n    // Didn't think we needed this but it turns out unlike other methods, patch\n    // won't be properly normalized to uppercase and results in a 405 error.\n    // See: https://fetch.spec.whatwg.org/#concept-method\n    init.method = formMethod.toUpperCase();\n\n    if (formEncType === \"application/json\") {\n      init.headers = new Headers({ \"Content-Type\": formEncType });\n      init.body = JSON.stringify(submission.json);\n    } else if (formEncType === \"text/plain\") {\n      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n      init.body = submission.text;\n    } else if (\n      formEncType === \"application/x-www-form-urlencoded\" &&\n      submission.formData\n    ) {\n      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n      init.body = convertFormDataToSearchParams(submission.formData);\n    } else {\n      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n      init.body = submission.formData;\n    }\n  }\n\n  return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n  let searchParams = new URLSearchParams();\n\n  for (let [key, value] of formData.entries()) {\n    // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n    searchParams.append(key, typeof value === \"string\" ? value : value.name);\n  }\n\n  return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n  searchParams: URLSearchParams\n): FormData {\n  let formData = new FormData();\n  for (let [key, value] of searchParams.entries()) {\n    formData.append(key, value);\n  }\n  return formData;\n}\n\nfunction processRouteLoaderData(\n  matches: AgnosticDataRouteMatch[],\n  matchesToLoad: AgnosticDataRouteMatch[],\n  results: DataResult[],\n  pendingActionResult: PendingActionResult | undefined,\n  activeDeferreds: Map<string, DeferredData>,\n  skipLoaderErrorBubbling: boolean\n): {\n  loaderData: RouterState[\"loaderData\"];\n  errors: RouterState[\"errors\"] | null;\n  statusCode: number;\n  loaderHeaders: Record<string, Headers>;\n} {\n  // Fill in loaderData/errors from our loaders\n  let loaderData: RouterState[\"loaderData\"] = {};\n  let errors: RouterState[\"errors\"] | null = null;\n  let statusCode: number | undefined;\n  let foundError = false;\n  let loaderHeaders: Record<string, Headers> = {};\n  let pendingError =\n    pendingActionResult && isErrorResult(pendingActionResult[1])\n      ? pendingActionResult[1].error\n      : undefined;\n\n  // Process loader results into state.loaderData/state.errors\n  results.forEach((result, index) => {\n    let id = matchesToLoad[index].route.id;\n    invariant(\n      !isRedirectResult(result),\n      \"Cannot handle redirect results in processLoaderData\"\n    );\n    if (isErrorResult(result)) {\n      let error = result.error;\n      // If we have a pending action error, we report it at the highest-route\n      // that throws a loader error, and then clear it out to indicate that\n      // it was consumed\n      if (pendingError !== undefined) {\n        error = pendingError;\n        pendingError = undefined;\n      }\n\n      errors = errors || {};\n\n      if (skipLoaderErrorBubbling) {\n        errors[id] = error;\n      } else {\n        // Look upwards from the matched route for the closest ancestor error\n        // boundary, defaulting to the root match.  Prefer higher error values\n        // if lower errors bubble to the same boundary\n        let boundaryMatch = findNearestBoundary(matches, id);\n        if (errors[boundaryMatch.route.id] == null) {\n          errors[boundaryMatch.route.id] = error;\n        }\n      }\n\n      // Clear our any prior loaderData for the throwing route\n      loaderData[id] = undefined;\n\n      // Once we find our first (highest) error, we set the status code and\n      // prevent deeper status codes from overriding\n      if (!foundError) {\n        foundError = true;\n        statusCode = isRouteErrorResponse(result.error)\n          ? result.error.status\n          : 500;\n      }\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    } else {\n      if (isDeferredResult(result)) {\n        activeDeferreds.set(id, result.deferredData);\n        loaderData[id] = result.deferredData.data;\n        // Error status codes always override success status codes, but if all\n        // loaders are successful we take the deepest status code.\n        if (\n          result.statusCode != null &&\n          result.statusCode !== 200 &&\n          !foundError\n        ) {\n          statusCode = result.statusCode;\n        }\n        if (result.headers) {\n          loaderHeaders[id] = result.headers;\n        }\n      } else {\n        loaderData[id] = result.data;\n        // Error status codes always override success status codes, but if all\n        // loaders are successful we take the deepest status code.\n        if (result.statusCode && result.statusCode !== 200 && !foundError) {\n          statusCode = result.statusCode;\n        }\n        if (result.headers) {\n          loaderHeaders[id] = result.headers;\n        }\n      }\n    }\n  });\n\n  // If we didn't consume the pending action error (i.e., all loaders\n  // resolved), then consume it here.  Also clear out any loaderData for the\n  // throwing route\n  if (pendingError !== undefined && pendingActionResult) {\n    errors = { [pendingActionResult[0]]: pendingError };\n    loaderData[pendingActionResult[0]] = undefined;\n  }\n\n  return {\n    loaderData,\n    errors,\n    statusCode: statusCode || 200,\n    loaderHeaders,\n  };\n}\n\nfunction processLoaderData(\n  state: RouterState,\n  matches: AgnosticDataRouteMatch[],\n  matchesToLoad: AgnosticDataRouteMatch[],\n  results: DataResult[],\n  pendingActionResult: PendingActionResult | undefined,\n  revalidatingFetchers: RevalidatingFetcher[],\n  fetcherResults: DataResult[],\n  activeDeferreds: Map<string, DeferredData>\n): {\n  loaderData: RouterState[\"loaderData\"];\n  errors?: RouterState[\"errors\"];\n} {\n  let { loaderData, errors } = processRouteLoaderData(\n    matches,\n    matchesToLoad,\n    results,\n    pendingActionResult,\n    activeDeferreds,\n    false // This method is only called client side so we always want to bubble\n  );\n\n  // Process results from our revalidating fetchers\n  for (let index = 0; index < revalidatingFetchers.length; index++) {\n    let { key, match, controller } = revalidatingFetchers[index];\n    invariant(\n      fetcherResults !== undefined && fetcherResults[index] !== undefined,\n      \"Did not find corresponding fetcher result\"\n    );\n    let result = fetcherResults[index];\n\n    // Process fetcher non-redirect errors\n    if (controller && controller.signal.aborted) {\n      // Nothing to do for aborted fetchers\n      continue;\n    } else if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n      if (!(errors && errors[boundaryMatch.route.id])) {\n        errors = {\n          ...errors,\n          [boundaryMatch.route.id]: result.error,\n        };\n      }\n      state.fetchers.delete(key);\n    } else if (isRedirectResult(result)) {\n      // Should never get here, redirects should get processed above, but we\n      // keep this to type narrow to a success result in the else\n      invariant(false, \"Unhandled fetcher revalidation redirect\");\n    } else if (isDeferredResult(result)) {\n      // Should never get here, deferred data should be awaited for fetchers\n      // in resolveDeferredResults\n      invariant(false, \"Unhandled fetcher deferred data\");\n    } else {\n      let doneFetcher = getDoneFetcher(result.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n  }\n\n  return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n  loaderData: RouteData,\n  newLoaderData: RouteData,\n  matches: AgnosticDataRouteMatch[],\n  errors: RouteData | null | undefined\n): RouteData {\n  let mergedLoaderData = { ...newLoaderData };\n  for (let match of matches) {\n    let id = match.route.id;\n    if (newLoaderData.hasOwnProperty(id)) {\n      if (newLoaderData[id] !== undefined) {\n        mergedLoaderData[id] = newLoaderData[id];\n      } else {\n        // No-op - this is so we ignore existing data if we have a key in the\n        // incoming object with an undefined value, which is how we unset a prior\n        // loaderData if we encounter a loader error\n      }\n    } else if (loaderData[id] !== undefined && match.route.loader) {\n      // Preserve existing keys not included in newLoaderData and where a loader\n      // wasn't removed by HMR\n      mergedLoaderData[id] = loaderData[id];\n    }\n\n    if (errors && errors.hasOwnProperty(id)) {\n      // Don't keep any loader data below the boundary\n      break;\n    }\n  }\n  return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n  pendingActionResult: PendingActionResult | undefined\n) {\n  if (!pendingActionResult) {\n    return {};\n  }\n  return isErrorResult(pendingActionResult[1])\n    ? {\n        // Clear out prior actionData on errors\n        actionData: {},\n      }\n    : {\n        actionData: {\n          [pendingActionResult[0]]: pendingActionResult[1].data,\n        },\n      };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n  matches: AgnosticDataRouteMatch[],\n  routeId?: string\n): AgnosticDataRouteMatch {\n  let eligibleMatches = routeId\n    ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n    : [...matches];\n  return (\n    eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n    matches[0]\n  );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n  matches: AgnosticDataRouteMatch[];\n  route: AgnosticDataRouteObject;\n} {\n  // Prefer a root layout route if present, otherwise shim in a route object\n  let route =\n    routes.length === 1\n      ? routes[0]\n      : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n          id: `__shim-error-route__`,\n        };\n\n  return {\n    matches: [\n      {\n        params: {},\n        pathname: \"\",\n        pathnameBase: \"\",\n        route,\n      },\n    ],\n    route,\n  };\n}\n\nfunction getInternalRouterError(\n  status: number,\n  {\n    pathname,\n    routeId,\n    method,\n    type,\n    message,\n  }: {\n    pathname?: string;\n    routeId?: string;\n    method?: string;\n    type?: \"defer-action\" | \"invalid-body\" | \"route-discovery\";\n    message?: string;\n  } = {}\n) {\n  let statusText = \"Unknown Server Error\";\n  let errorMessage = \"Unknown @remix-run/router error\";\n\n  if (status === 400) {\n    statusText = \"Bad Request\";\n    if (type === \"route-discovery\") {\n      errorMessage =\n        `Unable to match URL \"${pathname}\" - the \\`unstable_patchRoutesOnMiss()\\` ` +\n        `function threw the following error:\\n${message}`;\n    } else if (method && pathname && routeId) {\n      errorMessage =\n        `You made a ${method} request to \"${pathname}\" but ` +\n        `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n        `so there is no way to handle the request.`;\n    } else if (type === \"defer-action\") {\n      errorMessage = \"defer() is not supported in actions\";\n    } else if (type === \"invalid-body\") {\n      errorMessage = \"Unable to encode submission body\";\n    }\n  } else if (status === 403) {\n    statusText = \"Forbidden\";\n    errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n  } else if (status === 404) {\n    statusText = \"Not Found\";\n    errorMessage = `No route matches URL \"${pathname}\"`;\n  } else if (status === 405) {\n    statusText = \"Method Not Allowed\";\n    if (method && pathname && routeId) {\n      errorMessage =\n        `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n        `did not provide an \\`action\\` for route \"${routeId}\", ` +\n        `so there is no way to handle the request.`;\n    } else if (method) {\n      errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n    }\n  }\n\n  return new ErrorResponseImpl(\n    status || 500,\n    statusText,\n    new Error(errorMessage),\n    true\n  );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n  results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n  for (let i = results.length - 1; i >= 0; i--) {\n    let result = results[i];\n    if (isRedirectResult(result)) {\n      return { result, idx: i };\n    }\n  }\n}\n\nfunction stripHashFromPath(path: To) {\n  let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n  return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n  if (a.pathname !== b.pathname || a.search !== b.search) {\n    return false;\n  }\n\n  if (a.hash === \"\") {\n    // /page -> /page#hash\n    return b.hash !== \"\";\n  } else if (a.hash === b.hash) {\n    // /page#hash -> /page#hash\n    return true;\n  } else if (b.hash !== \"\") {\n    // /page#hash -> /page#other\n    return true;\n  }\n\n  // If the hash is removed the browser will re-perform a request to the server\n  // /page#hash -> /page\n  return false;\n}\n\nfunction isPromise<T = unknown>(val: unknown): val is Promise<T> {\n  return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isHandlerResult(result: unknown): result is HandlerResult {\n  return (\n    result != null &&\n    typeof result === \"object\" &&\n    \"type\" in result &&\n    \"result\" in result &&\n    (result.type === ResultType.data || result.type === ResultType.error)\n  );\n}\n\nfunction isRedirectHandlerResult(result: HandlerResult) {\n  return (\n    isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n  );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n  return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n  return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n  return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDataWithResponseInit(\n  value: any\n): value is DataWithResponseInit<unknown> {\n  return (\n    typeof value === \"object\" &&\n    value != null &&\n    \"type\" in value &&\n    \"data\" in value &&\n    \"init\" in value &&\n    value.type === \"DataWithResponseInit\"\n  );\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n  let deferred: DeferredData = value;\n  return (\n    deferred &&\n    typeof deferred === \"object\" &&\n    typeof deferred.data === \"object\" &&\n    typeof deferred.subscribe === \"function\" &&\n    typeof deferred.cancel === \"function\" &&\n    typeof deferred.resolveData === \"function\"\n  );\n}\n\nfunction isResponse(value: any): value is Response {\n  return (\n    value != null &&\n    typeof value.status === \"number\" &&\n    typeof value.statusText === \"string\" &&\n    typeof value.headers === \"object\" &&\n    typeof value.body !== \"undefined\"\n  );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n  if (!isResponse(result)) {\n    return false;\n  }\n\n  let status = result.status;\n  let location = result.headers.get(\"Location\");\n  return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n  return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n  method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n  return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n  currentMatches: AgnosticDataRouteMatch[],\n  matchesToLoad: (AgnosticDataRouteMatch | null)[],\n  results: DataResult[],\n  signals: (AbortSignal | null)[],\n  isFetcher: boolean,\n  currentLoaderData?: RouteData\n) {\n  for (let index = 0; index < results.length; index++) {\n    let result = results[index];\n    let match = matchesToLoad[index];\n    // If we don't have a match, then we can have a deferred result to do\n    // anything with.  This is for revalidating fetchers where the route was\n    // removed during HMR\n    if (!match) {\n      continue;\n    }\n\n    let currentMatch = currentMatches.find(\n      (m) => m.route.id === match!.route.id\n    );\n    let isRevalidatingLoader =\n      currentMatch != null &&\n      !isNewRouteInstance(currentMatch, match) &&\n      (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n    if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n      // Note: we do not have to touch activeDeferreds here since we race them\n      // against the signal in resolveDeferredData and they'll get aborted\n      // there if needed\n      let signal = signals[index];\n      invariant(\n        signal,\n        \"Expected an AbortSignal for revalidating fetcher deferred result\"\n      );\n      await resolveDeferredData(result, signal, isFetcher).then((result) => {\n        if (result) {\n          results[index] = result || results[index];\n        }\n      });\n    }\n  }\n}\n\nasync function resolveDeferredData(\n  result: DeferredResult,\n  signal: AbortSignal,\n  unwrap = false\n): Promise<SuccessResult | ErrorResult | undefined> {\n  let aborted = await result.deferredData.resolveData(signal);\n  if (aborted) {\n    return;\n  }\n\n  if (unwrap) {\n    try {\n      return {\n        type: ResultType.data,\n        data: result.deferredData.unwrappedData,\n      };\n    } catch (e) {\n      // Handle any TrackedPromise._error values encountered while unwrapping\n      return {\n        type: ResultType.error,\n        error: e,\n      };\n    }\n  }\n\n  return {\n    type: ResultType.data,\n    data: result.deferredData.data,\n  };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n  return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n  matches: AgnosticDataRouteMatch[],\n  location: Location | string\n) {\n  let search =\n    typeof location === \"string\" ? parsePath(location).search : location.search;\n  if (\n    matches[matches.length - 1].route.index &&\n    hasNakedIndexQuery(search || \"\")\n  ) {\n    // Return the leaf index route when index is present\n    return matches[matches.length - 1];\n  }\n  // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n  // pathless layout routes)\n  let pathMatches = getPathContributingMatches(matches);\n  return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n  navigation: Navigation\n): Submission | undefined {\n  let { formMethod, formAction, formEncType, text, formData, json } =\n    navigation;\n  if (!formMethod || !formAction || !formEncType) {\n    return;\n  }\n\n  if (text != null) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData: undefined,\n      json: undefined,\n      text,\n    };\n  } else if (formData != null) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData,\n      json: undefined,\n      text: undefined,\n    };\n  } else if (json !== undefined) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData: undefined,\n      json,\n      text: undefined,\n    };\n  }\n}\n\nfunction getLoadingNavigation(\n  location: Location,\n  submission?: Submission\n): NavigationStates[\"Loading\"] {\n  if (submission) {\n    let navigation: NavigationStates[\"Loading\"] = {\n      state: \"loading\",\n      location,\n      formMethod: submission.formMethod,\n      formAction: submission.formAction,\n      formEncType: submission.formEncType,\n      formData: submission.formData,\n      json: submission.json,\n      text: submission.text,\n    };\n    return navigation;\n  } else {\n    let navigation: NavigationStates[\"Loading\"] = {\n      state: \"loading\",\n      location,\n      formMethod: undefined,\n      formAction: undefined,\n      formEncType: undefined,\n      formData: undefined,\n      json: undefined,\n      text: undefined,\n    };\n    return navigation;\n  }\n}\n\nfunction getSubmittingNavigation(\n  location: Location,\n  submission: Submission\n): NavigationStates[\"Submitting\"] {\n  let navigation: NavigationStates[\"Submitting\"] = {\n    state: \"submitting\",\n    location,\n    formMethod: submission.formMethod,\n    formAction: submission.formAction,\n    formEncType: submission.formEncType,\n    formData: submission.formData,\n    json: submission.json,\n    text: submission.text,\n  };\n  return navigation;\n}\n\nfunction getLoadingFetcher(\n  submission?: Submission,\n  data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n  if (submission) {\n    let fetcher: FetcherStates[\"Loading\"] = {\n      state: \"loading\",\n      formMethod: submission.formMethod,\n      formAction: submission.formAction,\n      formEncType: submission.formEncType,\n      formData: submission.formData,\n      json: submission.json,\n      text: submission.text,\n      data,\n    };\n    return fetcher;\n  } else {\n    let fetcher: FetcherStates[\"Loading\"] = {\n      state: \"loading\",\n      formMethod: undefined,\n      formAction: undefined,\n      formEncType: undefined,\n      formData: undefined,\n      json: undefined,\n      text: undefined,\n      data,\n    };\n    return fetcher;\n  }\n}\n\nfunction getSubmittingFetcher(\n  submission: Submission,\n  existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n  let fetcher: FetcherStates[\"Submitting\"] = {\n    state: \"submitting\",\n    formMethod: submission.formMethod,\n    formAction: submission.formAction,\n    formEncType: submission.formEncType,\n    formData: submission.formData,\n    json: submission.json,\n    text: submission.text,\n    data: existingFetcher ? existingFetcher.data : undefined,\n  };\n  return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n  let fetcher: FetcherStates[\"Idle\"] = {\n    state: \"idle\",\n    formMethod: undefined,\n    formAction: undefined,\n    formEncType: undefined,\n    formData: undefined,\n    json: undefined,\n    text: undefined,\n    data,\n  };\n  return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n  _window: Window,\n  transitions: Map<string, Set<string>>\n) {\n  try {\n    let sessionPositions = _window.sessionStorage.getItem(\n      TRANSITIONS_STORAGE_KEY\n    );\n    if (sessionPositions) {\n      let json = JSON.parse(sessionPositions);\n      for (let [k, v] of Object.entries(json || {})) {\n        if (v && Array.isArray(v)) {\n          transitions.set(k, new Set(v || []));\n        }\n      }\n    }\n  } catch (e) {\n    // no-op, use default empty object\n  }\n}\n\nfunction persistAppliedTransitions(\n  _window: Window,\n  transitions: Map<string, Set<string>>\n) {\n  if (transitions.size > 0) {\n    let json: Record<string, string[]> = {};\n    for (let [k, v] of transitions) {\n      json[k] = [...v];\n    }\n    try {\n      _window.sessionStorage.setItem(\n        TRANSITIONS_STORAGE_KEY,\n        JSON.stringify(json)\n      );\n    } catch (error) {\n      warning(\n        false,\n        `Failed to save applied view transitions in sessionStorage (${error}).`\n      );\n    }\n  }\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n  AgnosticIndexRouteObject,\n  AgnosticNonIndexRouteObject,\n  AgnosticRouteMatch,\n  History,\n  LazyRouteFunction,\n  Location,\n  Action as NavigationType,\n  RelativeRoutingType,\n  Router,\n  StaticHandlerContext,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n  caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticIndexRouteObject[\"path\"];\n  id?: AgnosticIndexRouteObject[\"id\"];\n  loader?: AgnosticIndexRouteObject[\"loader\"];\n  action?: AgnosticIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticIndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n  caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticNonIndexRouteObject[\"path\"];\n  id?: AgnosticNonIndexRouteObject[\"id\"];\n  loader?: AgnosticNonIndexRouteObject[\"loader\"];\n  action?: AgnosticNonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticNonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: RouteObject[];\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n  children?: DataRouteObject[];\n  id: string;\n};\n\nexport interface RouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject\n  // Omit `future` since those can be pulled from the `router`\n  // `NavigationContext` needs future since it doesn't have a `router` in all cases\n  extends Omit<NavigationContextObject, \"future\"> {\n  router: Router;\n  staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n  React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n  DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n  Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n  AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  unstable_flushSync?: boolean;\n  unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n  createHref: History[\"createHref\"];\n  // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n  encodeLocation?: History[\"encodeLocation\"];\n  go: History[\"go\"];\n  push(to: To, state?: any, opts?: NavigateOptions): void;\n  replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n  basename: string;\n  navigator: Navigator;\n  static: boolean;\n  future: {\n    v7_relativeSplatPath: boolean;\n  };\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n  location: Location;\n  navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n  outlet: React.ReactElement | null;\n  matches: RouteMatch[];\n  isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n  outlet: null,\n  matches: [],\n  isDataRoute: false,\n});\n\nif (__DEV__) {\n  RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n  Blocker,\n  BlockerFunction,\n  Location,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathPattern,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RevalidationState,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  IDLE_BLOCKER,\n  Action as NavigationType,\n  UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n  UNSAFE_decodePath as decodePath,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  isRouteErrorResponse,\n  joinPaths,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  DataRouteMatch,\n  NavigateOptions,\n  RouteContextObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n  RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n\n  let { basename, navigator } = React.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n  let joinedPathname = pathname;\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n  if (basename !== \"/\") {\n    joinedPathname =\n      pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n  return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n\n  return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n  return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n\n  let { pathname } = useLocation();\n  return React.useMemo(\n    () => matchPath<ParamKey, Path>(pattern, decodePath(pathname)),\n    [pathname, pattern]\n  );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n  (to: To, options?: NavigateOptions): void;\n  (delta: number): void;\n}\n\nconst navigateEffectWarning =\n  `You should call navigate() in a React.useEffect(), not when ` +\n  `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n  cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n  let isStatic = React.useContext(NavigationContext).static;\n  if (!isStatic) {\n    // We should be able to get rid of this once react 18.3 is released\n    // See: https://github.com/facebook/react/pull/26395\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(cb);\n  }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n  let { isDataRoute } = React.useContext(RouteContext);\n  // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n\n  let dataRouterContext = React.useContext(DataRouterContext);\n  let { basename, future, navigator } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our history listener yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n\n      // If we're operating within a basename, prepend it to the pathname prior\n      // to handing off to history (but only if we're not in a data router,\n      // otherwise it'll prepend the basename inside of the router).\n      // If this is a root navigation, then we navigate to the raw basename\n      // which allows the basename to have full control over the presence of a\n      // trailing slash on root links\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname =\n          path.pathname === \"/\"\n            ? basename\n            : joinPaths([basename, path.pathname]);\n      }\n\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext,\n    ]\n  );\n\n  return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n  return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return (\n      <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n    );\n  }\n  return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n  ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n  [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n  let { matches } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n  let { future } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  return React.useMemo(\n    () =>\n      resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        relative === \"path\"\n      ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n  return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string,\n  dataRouterState?: RemixRouter[\"state\"],\n  future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n\n  let { navigator } = React.useContext(NavigationContext);\n  let { matches: parentMatches } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n\n  if (__DEV__) {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = (parentRoute && parentRoute.path) || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n        `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n        `parent route path has no trailing \"*\". This means if you navigate ` +\n        `deeper, the parent won't match anymore and therefore the child ` +\n        `routes will never render.\\n\\n` +\n        `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n        `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n\n  let locationFromContext = useLocation();\n\n  let location;\n  if (locationArg) {\n    let parsedLocationArg =\n      typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n    invariant(\n      parentPathnameBase === \"/\" ||\n        parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n        `the location pathname must begin with the portion of the URL pathname that was ` +\n        `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n        `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n\n  let pathname = location.pathname || \"/\";\n\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    // Determine the remaining pathname by removing the # of URL segments the\n    // parentPathnameBase has, instead of removing based on character count.\n    // This is because we can't guarantee that incoming/outgoing encodings/\n    // decodings will match exactly.\n    // We decode paths before matching on a per-segment basis with\n    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n    // match what `window.location.pathname` would reflect.  Those don't 100%\n    // align when it comes to encoded URI characters such as % and &.\n    //\n    // So we may end up with:\n    //   pathname:           \"/descendant/a%25b/match\"\n    //   parentPathnameBase: \"/descendant/a%b\"\n    //\n    // And the direct substring removal approach won't work :/\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n\n  let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n  if (__DEV__) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n\n    warning(\n      matches == null ||\n        matches[matches.length - 1].route.element !== undefined ||\n        matches[matches.length - 1].route.Component !== undefined ||\n        matches[matches.length - 1].route.lazy !== undefined,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n        `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n        `null value by default resulting in an \"empty\" page.`\n    );\n  }\n\n  let renderedMatches = _renderMatches(\n    matches &&\n      matches.map((match) =>\n        Object.assign({}, match, {\n          params: Object.assign({}, parentParams, match.params),\n          pathname: joinPaths([\n            parentPathnameBase,\n            // Re-encode pathnames that were decoded inside matchRoutes\n            navigator.encodeLocation\n              ? navigator.encodeLocation(match.pathname).pathname\n              : match.pathname,\n          ]),\n          pathnameBase:\n            match.pathnameBase === \"/\"\n              ? parentPathnameBase\n              : joinPaths([\n                  parentPathnameBase,\n                  // Re-encode pathnames that were decoded inside matchRoutes\n                  navigator.encodeLocation\n                    ? navigator.encodeLocation(match.pathnameBase).pathname\n                    : match.pathnameBase,\n                ]),\n        })\n      ),\n    parentMatches,\n    dataRouterState,\n    future\n  );\n\n  // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n  if (locationArg && renderedMatches) {\n    return (\n      <LocationContext.Provider\n        value={{\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            ...location,\n          },\n          navigationType: NavigationType.Pop,\n        }}\n      >\n        {renderedMatches}\n      </LocationContext.Provider>\n    );\n  }\n\n  return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error)\n    ? `${error.status} ${error.statusText}`\n    : error instanceof Error\n    ? error.message\n    : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n  let devInfo = null;\n  if (__DEV__) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n\n    devInfo = (\n      <>\n        <p>💿 Hey developer 👋</p>\n        <p>\n          You can provide a way better UX than this when your app throws errors\n          by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n          <code style={codeStyles}>errorElement</code> prop on your route.\n        </p>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <h2>Unexpected Application Error!</h2>\n      <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n      {stack ? <pre style={preStyles}>{stack}</pre> : null}\n      {devInfo}\n    </>\n  );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n  component: React.ReactNode;\n  routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n  RenderErrorBoundaryProps,\n  RenderErrorBoundaryState\n> {\n  constructor(props: RenderErrorBoundaryProps) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error,\n    };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error: error };\n  }\n\n  static getDerivedStateFromProps(\n    props: RenderErrorBoundaryProps,\n    state: RenderErrorBoundaryState\n  ) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (\n      state.location !== props.location ||\n      (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n    ) {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation,\n      };\n    }\n\n    // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n    return {\n      error: props.error !== undefined ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation,\n    };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"React Router caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    return this.state.error !== undefined ? (\n      <RouteContext.Provider value={this.props.routeContext}>\n        <RouteErrorContext.Provider\n          value={this.state.error}\n          children={this.props.component}\n        />\n      </RouteContext.Provider>\n    ) : (\n      this.props.children\n    );\n  }\n}\n\ninterface RenderedRouteProps {\n  routeContext: RouteContextObject;\n  match: RouteMatch<string, RouteObject>;\n  children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n  let dataRouterContext = React.useContext(DataRouterContext);\n\n  // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n  if (\n    dataRouterContext &&\n    dataRouterContext.static &&\n    dataRouterContext.staticContext &&\n    (match.route.errorElement || match.route.ErrorBoundary)\n  ) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n\n  return (\n    <RouteContext.Provider value={routeContext}>\n      {children}\n    </RouteContext.Provider>\n  );\n}\n\nexport function _renderMatches(\n  matches: RouteMatch[] | null,\n  parentMatches: RouteMatch[] = [],\n  dataRouterState: RemixRouter[\"state\"] | null = null,\n  future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n  if (matches == null) {\n    if (!dataRouterState) {\n      return null;\n    }\n\n    if (dataRouterState.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else if (\n      future?.v7_partialHydration &&\n      parentMatches.length === 0 &&\n      !dataRouterState.initialized &&\n      dataRouterState.matches.length > 0\n    ) {\n      // Don't bail if we're initializing with partial hydration and we have\n      // router matches.  That means we're actively running `patchRoutesOnMiss`\n      // so we should render down the partial matches to the appropriate\n      // `HydrateFallback`.  We only do this if `parentMatches` is empty so it\n      // only impacts the root matches for `RouterProvider` and no descendant\n      // `<Routes>`\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else {\n      return null;\n    }\n  }\n\n  let renderedMatches = matches;\n\n  // If we have data errors, trim matches to the highest error boundary\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id] !== undefined\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n\n  // If we're in a partial hydration mode, detect if we need to render down to\n  // a given HydrateFallback while we load the rest of the hydration data\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState && future && future.v7_partialHydration) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      // Track the deepest fallback up until the first route without data\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n\n      if (match.route.id) {\n        let { loaderData, errors } = dataRouterState;\n        let needsToRunLoader =\n          match.route.loader &&\n          loaderData[match.route.id] === undefined &&\n          (!errors || errors[match.route.id] === undefined);\n        if (match.route.lazy || needsToRunLoader) {\n          // We found the first route that's not ready to render (waiting on\n          // lazy, or has a loader that hasn't run yet).  Flag that we need to\n          // render a fallback and render up until the appropriate fallback\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    // Only data routers handle errors/fallbacks\n    let error: any;\n    let shouldRenderHydrateFallback = false;\n    let errorElement: React.ReactNode | null = null;\n    let hydrateFallbackElement: React.ReactNode | null = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : undefined;\n      errorElement = match.route.errorElement || defaultErrorElement;\n\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\n            \"route-fallback\",\n            false,\n            \"No `HydrateFallback` element provided to render during initial hydration\"\n          );\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n\n    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children: React.ReactNode;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        // Note: This is a de-optimized path since React won't re-use the\n        // ReactElement since it's identity changes with each new\n        // React.createElement call.  We keep this so folks can use\n        // `<Route Component={...}>` in `<Routes>` but generally `Component`\n        // usage is only advised in `RouterProvider` when we can convert it to\n        // `element` ahead of time.\n        children = <match.route.Component />;\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return (\n        <RenderedRoute\n          match={match}\n          routeContext={{\n            outlet,\n            matches,\n            isDataRoute: dataRouterState != null,\n          }}\n          children={children}\n        />\n      );\n    };\n    // Only wrap in an error boundary within data router usages when we have an\n    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to\n    // an ancestor ErrorBoundary/errorElement\n    return dataRouterState &&\n      (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n      <RenderErrorBoundary\n        location={dataRouterState.location}\n        revalidation={dataRouterState.revalidation}\n        component={errorElement}\n        error={error}\n        children={getChildren()}\n        routeContext={{ outlet: null, matches, isDataRoute: true }}\n      />\n    ) : (\n      getChildren()\n    );\n  }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n  UseBlocker = \"useBlocker\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n  UseBlocker = \"useBlocker\",\n  UseLoaderData = \"useLoaderData\",\n  UseActionData = \"useActionData\",\n  UseRouteError = \"useRouteError\",\n  UseNavigation = \"useNavigation\",\n  UseRouteLoaderData = \"useRouteLoaderData\",\n  UseMatches = \"useMatches\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n  UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n  let route = React.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n  return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return React.useMemo(\n    () => ({\n      revalidate: dataRouterContext.router.revalidate,\n      state: state.revalidation,\n    }),\n    [dataRouterContext.router.revalidate, state.revalidation]\n  );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n  let { matches, loaderData } = useDataRouterState(\n    DataRouterStateHook.UseMatches\n  );\n  return React.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\n      `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n    );\n    return undefined;\n  }\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n  // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n  if (error !== undefined) {\n    return error;\n  }\n\n  // Otherwise look for errors from our data router state\n  return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nexport function useAsyncValue(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nexport function useAsyncError(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation.  Mostly used to avoid\n * using half-filled form data.  This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n  let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n  let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n  let [blockerKey, setBlockerKey] = React.useState(\"\");\n  let blockerFunction = React.useCallback<BlockerFunction>(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n\n      // If they provided us a function and we've got an active basename, strip\n      // it from the locations we expose to the user to match the behavior of\n      // useLocation\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname:\n            stripBasename(currentLocation.pathname, basename) ||\n            currentLocation.pathname,\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname:\n            stripBasename(nextLocation.pathname, basename) ||\n            nextLocation.pathname,\n        },\n        historyAction,\n      });\n    },\n    [basename, shouldBlock]\n  );\n\n  // This effect is in charge of blocker key assignment and deletion (which is\n  // tightly coupled to the key)\n  React.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n\n  // This effect handles assigning the blockerFunction.  This is to handle\n  // unstable blocker function identities, and happens only after the prior\n  // effect so we don't get an orphaned blockerFunction in the router with a\n  // key of \"\".  Until then we just have the IDLE_BLOCKER.\n  React.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n\n  // Prefer the blocker from `state` not `router.state` since DataRouterContext\n  // is memoized so this ensures we update on blocker state updates\n  return blockerKey && state.blockers.has(blockerKey)\n    ? state.blockers.get(blockerKey)!\n    : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our router subscriber yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        router.navigate(to);\n      } else {\n        router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n\n  return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\n","import type {\n  InitialEntry,\n  LazyRouteFunction,\n  Location,\n  MemoryHistory,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RouterState,\n  RouterSubscriber,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n  DataRouteObject,\n  IndexRouteObject,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./context\";\nimport {\n  _renderMatches,\n  useAsyncValue,\n  useInRouterContext,\n  useLocation,\n  useNavigate,\n  useOutlet,\n  useRoutes,\n  useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n  v7_relativeSplatPath: boolean;\n  v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n  fallbackElement?: React.ReactNode;\n  router: RemixRouter;\n  // Only accept future flags relevant to rendering behavior\n  // routing flags should be accessed via router.future\n  future?: Partial<Pick<FutureConfig, \"v7_startTransition\">>;\n}\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n  future,\n}: RouterProviderProps): React.ReactElement {\n  let [state, setStateImpl] = React.useState(router.state);\n  let { v7_startTransition } = future || {};\n\n  let setState = React.useCallback<RouterSubscriber>(\n    (newState: RouterState) => {\n      if (v7_startTransition && startTransitionImpl) {\n        startTransitionImpl(() => setStateImpl(newState));\n      } else {\n        setStateImpl(newState);\n      }\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n  React.useEffect(() => {\n    warning(\n      fallbackElement == null || !router.future.v7_partialHydration,\n      \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n        \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n    );\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  let dataRouterContext = React.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n    }),\n    [router, navigator, basename]\n  );\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider value={dataRouterContext}>\n        <DataRouterStateContext.Provider value={state}>\n          <Router\n            basename={basename}\n            location={state.location}\n            navigationType={state.historyAction}\n            navigator={navigator}\n            future={{\n              v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n            }}\n          >\n            {state.initialized || router.future.v7_partialHydration ? (\n              <DataRoutes\n                routes={router.routes}\n                future={router.future}\n                state={state}\n              />\n            ) : (\n              fallbackElement\n            )}\n          </Router>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\nfunction DataRoutes({\n  routes,\n  future,\n  state,\n}: {\n  routes: DataRouteObject[];\n  future: RemixRouter[\"future\"];\n  state: RouterState;\n}): React.ReactElement | null {\n  return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface MemoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  future?: Partial<FutureConfig>;\n}\n\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/router-components/memory-router\n */\nexport function MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n  future,\n}: MemoryRouterProps): React.ReactElement {\n  let historyRef = React.useRef<MemoryHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true,\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface NavigateProps {\n  to: To;\n  replace?: boolean;\n  state?: any;\n  relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/components/navigate\n */\nexport function Navigate({\n  to,\n  replace,\n  state,\n  relative,\n}: NavigateProps): null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n\n  let { future, static: isStatic } = React.useContext(NavigationContext);\n\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n      `This is a no-op, but you should modify your code so the <Navigate> is ` +\n      `only ever rendered in response to some user interaction or state change.`\n  );\n\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n\n  // Resolve the path outside of the effect so that when effects run twice in\n  // StrictMode they navigate to the same place\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches, future.v7_relativeSplatPath),\n    locationPathname,\n    relative === \"path\"\n  );\n  let jsonPath = JSON.stringify(path);\n\n  React.useEffect(\n    () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n    [navigate, jsonPath, relative, replace, state]\n  );\n\n  return null;\n}\n\nexport interface OutletProps {\n  context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n  return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n  caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n  path?: NonIndexRouteObject[\"path\"];\n  id?: NonIndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<NonIndexRouteObject>;\n  loader?: NonIndexRouteObject[\"loader\"];\n  action?: NonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: NonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: React.ReactNode;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n  caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n  path?: IndexRouteObject[\"path\"];\n  id?: IndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<IndexRouteObject>;\n  loader?: IndexRouteObject[\"loader\"];\n  action?: IndexRouteObject[\"action\"];\n  hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n  handle?: IndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, ` +\n      `never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\n\nexport interface RouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  location: Partial<Location> | string;\n  navigationType?: NavigationType;\n  navigator: Navigator;\n  static?: boolean;\n  future?: Partial<Pick<FutureConfig, \"v7_relativeSplatPath\">>;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/router-components/router\n */\nexport function Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = NavigationType.Pop,\n  navigator,\n  static: staticProp = false,\n  future,\n}: RouterProps): React.ReactElement | null {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>.` +\n      ` You should never have more than one in your app.`\n  );\n\n  // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(\n    () => ({\n      basename,\n      navigator,\n      static: staticProp,\n      future: {\n        v7_relativeSplatPath: false,\n        ...future,\n      },\n    }),\n    [basename, future, navigator, staticProp]\n  );\n\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n  } = locationProp;\n\n  let locationContext = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n\n    if (trailingPathname == null) {\n      return null;\n    }\n\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key,\n      },\n      navigationType,\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL ` +\n      `\"${pathname}${search}${hash}\" because it does not start with the ` +\n      `basename, so the <Router> won't render anything.`\n  );\n\n  if (locationContext == null) {\n    return null;\n  }\n\n  return (\n    <NavigationContext.Provider value={navigationContext}>\n      <LocationContext.Provider children={children} value={locationContext} />\n    </NavigationContext.Provider>\n  );\n}\n\nexport interface RoutesProps {\n  children?: React.ReactNode;\n  location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/components/routes\n */\nexport function Routes({\n  children,\n  location,\n}: RoutesProps): React.ReactElement | null {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n  (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n  return (\n    <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n      <ResolveAwait>{children}</ResolveAwait>\n    </AwaitErrorBoundary>\n  );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n  error: any;\n};\n\nenum AwaitRenderStatus {\n  pending,\n  success,\n  error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n  AwaitErrorBoundaryProps,\n  AwaitErrorBoundaryState\n> {\n  constructor(props: AwaitErrorBoundaryProps) {\n    super(props);\n    this.state = { error: null };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"<Await> caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    let { children, errorElement, resolve } = this.props;\n\n    let promise: TrackedPromise | null = null;\n    let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if ((resolve as TrackedPromise)._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status =\n        \"_error\" in promise\n          ? AwaitRenderStatus.error\n          : \"_data\" in promise\n          ? AwaitRenderStatus.success\n          : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data: any) =>\n          Object.defineProperty(resolve, \"_data\", { get: () => data }),\n        (error: any) =>\n          Object.defineProperty(resolve, \"_error\", { get: () => error })\n      );\n    }\n\n    if (\n      status === AwaitRenderStatus.error &&\n      promise._error instanceof AbortedDeferredError\n    ) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return <AwaitContext.Provider value={promise} children={errorElement} />;\n    }\n\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return <AwaitContext.Provider value={promise} children={children} />;\n    }\n\n    // Throw to the suspense boundary\n    throw promise;\n  }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait({\n  children,\n}: {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n  let data = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data) : children;\n  return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n  children: React.ReactNode,\n  parentPath: number[] = []\n): RouteObject[] {\n  let routes: RouteObject[] = [];\n\n  React.Children.forEach(children, (element, index) => {\n    if (!React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n\n    let treePath = [...parentPath, index];\n\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n\n    invariant(\n      element.type === Route,\n      `[${\n        typeof element.type === \"string\" ? element.type : element.type.name\n      }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n\n    let route: RouteObject = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary:\n        element.props.ErrorBoundary != null ||\n        element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy,\n    };\n\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n\n    routes.push(route);\n  });\n\n  return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n  matches: RouteMatch[] | null\n): React.ReactElement | null {\n  return _renderMatches(matches);\n}\n","import type {\n  FormEncType,\n  HTMLFormMethod,\n  RelativeRoutingType,\n} from \"@remix-run/router\";\nimport { stripBasename, UNSAFE_warning as warning } from \"@remix-run/router\";\n\nexport const defaultMethod: HTMLFormMethod = \"get\";\nconst defaultEncType: FormEncType = \"application/x-www-form-urlencoded\";\n\nexport function isHtmlElement(object: any): object is HTMLElement {\n  return object != null && typeof object.tagName === \"string\";\n}\n\nexport function isButtonElement(object: any): object is HTMLButtonElement {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\n\nexport function isFormElement(object: any): object is HTMLFormElement {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\n\nexport function isInputElement(object: any): object is HTMLInputElement {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\n\ntype LimitedMouseEvent = Pick<\n  MouseEvent,\n  \"button\" | \"metaKey\" | \"altKey\" | \"ctrlKey\" | \"shiftKey\"\n>;\n\nfunction isModifiedEvent(event: LimitedMouseEvent) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport function shouldProcessLinkClick(\n  event: LimitedMouseEvent,\n  target?: string\n) {\n  return (\n    event.button === 0 && // Ignore everything but left clicks\n    (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n    !isModifiedEvent(event) // Ignore clicks with modifier keys\n  );\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n  | string\n  | ParamKeyValuePair[]\n  | Record<string, string | string[]>\n  | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n *   let searchParams = new URLSearchParams([\n *     ['sort', 'name'],\n *     ['sort', 'price']\n *   ]);\n *\n * you can do:\n *\n *   let searchParams = createSearchParams({\n *     sort: ['name', 'price']\n *   });\n */\nexport function createSearchParams(\n  init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n  return new URLSearchParams(\n    typeof init === \"string\" ||\n    Array.isArray(init) ||\n    init instanceof URLSearchParams\n      ? init\n      : Object.keys(init).reduce((memo, key) => {\n          let value = init[key];\n          return memo.concat(\n            Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n          );\n        }, [] as ParamKeyValuePair[])\n  );\n}\n\nexport function getSearchParamsForLocation(\n  locationSearch: string,\n  defaultSearchParams: URLSearchParams | null\n) {\n  let searchParams = createSearchParams(locationSearch);\n\n  if (defaultSearchParams) {\n    // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n    // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n    // web extensions. Relevant Bugzilla tickets:\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n    defaultSearchParams.forEach((_, key) => {\n      if (!searchParams.has(key)) {\n        defaultSearchParams.getAll(key).forEach((value) => {\n          searchParams.append(key, value);\n        });\n      }\n    });\n  }\n\n  return searchParams;\n}\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n  [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\nexport type SubmitTarget =\n  | HTMLFormElement\n  | HTMLButtonElement\n  | HTMLInputElement\n  | FormData\n  | URLSearchParams\n  | JsonValue\n  | null;\n\n// One-time check for submitter support\nlet _formDataSupportsSubmitter: boolean | null = null;\n\nfunction isFormDataSubmitterSupported() {\n  if (_formDataSupportsSubmitter === null) {\n    try {\n      new FormData(\n        document.createElement(\"form\"),\n        // @ts-expect-error if FormData supports the submitter parameter, this will throw\n        0\n      );\n      _formDataSupportsSubmitter = false;\n    } catch (e) {\n      _formDataSupportsSubmitter = true;\n    }\n  }\n  return _formDataSupportsSubmitter;\n}\n\n/**\n * Submit options shared by both navigations and fetchers\n */\ninterface SharedSubmitOptions {\n  /**\n   * The HTTP method used to submit the form. Overrides `<form method>`.\n   * Defaults to \"GET\".\n   */\n  method?: HTMLFormMethod;\n\n  /**\n   * The action URL path used to submit the form. Overrides `<form action>`.\n   * Defaults to the path of the current route.\n   */\n  action?: string;\n\n  /**\n   * The encoding used to submit the form. Overrides `<form encType>`.\n   * Defaults to \"application/x-www-form-urlencoded\".\n   */\n  encType?: FormEncType;\n\n  /**\n   * Determines whether the form action is relative to the route hierarchy or\n   * the pathname.  Use this if you want to opt out of navigating the route\n   * hierarchy and want to instead route based on /-delimited URL segments\n   */\n  relative?: RelativeRoutingType;\n\n  /**\n   * In browser-based environments, prevent resetting scroll after this\n   * navigation when using the <ScrollRestoration> component\n   */\n  preventScrollReset?: boolean;\n\n  /**\n   * Enable flushSync for this submission's state updates\n   */\n  unstable_flushSync?: boolean;\n}\n\n/**\n * Submit options available to fetchers\n */\nexport interface FetcherSubmitOptions extends SharedSubmitOptions {}\n\n/**\n * Submit options available to navigations\n */\nexport interface SubmitOptions extends FetcherSubmitOptions {\n  /**\n   * Set `true` to replace the current entry in the browser's history stack\n   * instead of creating a new one (i.e. stay on \"the same page\"). Defaults\n   * to `false`.\n   */\n  replace?: boolean;\n\n  /**\n   * State object to add to the history stack entry for this navigation\n   */\n  state?: any;\n\n  /**\n   * Indicate a specific fetcherKey to use when using navigate=false\n   */\n  fetcherKey?: string;\n\n  /**\n   * navigate=false will use a fetcher instead of a navigation\n   */\n  navigate?: boolean;\n\n  /**\n   * Enable view transitions on this submission navigation\n   */\n  unstable_viewTransition?: boolean;\n}\n\nconst supportedFormEncTypes: Set<FormEncType> = new Set([\n  \"application/x-www-form-urlencoded\",\n  \"multipart/form-data\",\n  \"text/plain\",\n]);\n\nfunction getFormEncType(encType: string | null) {\n  if (encType != null && !supportedFormEncTypes.has(encType as FormEncType)) {\n    warning(\n      false,\n      `\"${encType}\" is not a valid \\`encType\\` for \\`<Form>\\`/\\`<fetcher.Form>\\` ` +\n        `and will default to \"${defaultEncType}\"`\n    );\n\n    return null;\n  }\n  return encType;\n}\n\nexport function getFormSubmissionInfo(\n  target: SubmitTarget,\n  basename: string\n): {\n  action: string | null;\n  method: string;\n  encType: string;\n  formData: FormData | undefined;\n  body: any;\n} {\n  let method: string;\n  let action: string | null;\n  let encType: string;\n  let formData: FormData | undefined;\n  let body: any;\n\n  if (isFormElement(target)) {\n    // When grabbing the action from the element, it will have had the basename\n    // prefixed to ensure non-JS scenarios work, so strip it since we'll\n    // re-prefix in the router\n    let attr = target.getAttribute(\"action\");\n    action = attr ? stripBasename(attr, basename) : null;\n    method = target.getAttribute(\"method\") || defaultMethod;\n    encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n\n    formData = new FormData(target);\n  } else if (\n    isButtonElement(target) ||\n    (isInputElement(target) &&\n      (target.type === \"submit\" || target.type === \"image\"))\n  ) {\n    let form = target.form;\n\n    if (form == null) {\n      throw new Error(\n        `Cannot submit a <button> or <input type=\"submit\"> without a <form>`\n      );\n    }\n\n    // <button>/<input type=\"submit\"> may override attributes of <form>\n\n    // When grabbing the action from the element, it will have had the basename\n    // prefixed to ensure non-JS scenarios work, so strip it since we'll\n    // re-prefix in the router\n    let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n    action = attr ? stripBasename(attr, basename) : null;\n\n    method =\n      target.getAttribute(\"formmethod\") ||\n      form.getAttribute(\"method\") ||\n      defaultMethod;\n    encType =\n      getFormEncType(target.getAttribute(\"formenctype\")) ||\n      getFormEncType(form.getAttribute(\"enctype\")) ||\n      defaultEncType;\n\n    // Build a FormData object populated from a form and submitter\n    formData = new FormData(form, target);\n\n    // If this browser doesn't support the `FormData(el, submitter)` format,\n    // then tack on the submitter value at the end.  This is a lightweight\n    // solution that is not 100% spec compliant.  For complete support in older\n    // browsers, consider using the `formdata-submitter-polyfill` package\n    if (!isFormDataSubmitterSupported()) {\n      let { name, type, value } = target;\n      if (type === \"image\") {\n        let prefix = name ? `${name}.` : \"\";\n        formData.append(`${prefix}x`, \"0\");\n        formData.append(`${prefix}y`, \"0\");\n      } else if (name) {\n        formData.append(name, value);\n      }\n    }\n  } else if (isHtmlElement(target)) {\n    throw new Error(\n      `Cannot submit element that is not <form>, <button>, or ` +\n        `<input type=\"submit|image\">`\n    );\n  } else {\n    method = defaultMethod;\n    action = null;\n    encType = defaultEncType;\n    body = target;\n  }\n\n  // Send body for <Form encType=\"text/plain\" so we encode it into text\n  if (formData && encType === \"text/plain\") {\n    body = formData;\n    formData = undefined;\n  }\n\n  return { action, method: method.toLowerCase(), encType, formData, body };\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport type {\n  DataRouteObject,\n  FutureConfig,\n  Location,\n  NavigateOptions,\n  NavigationType,\n  Navigator,\n  RelativeRoutingType,\n  RouteObject,\n  RouterProps,\n  RouterProviderProps,\n  To,\n  unstable_PatchRoutesOnMissFunction,\n} from \"react-router\";\nimport {\n  Router,\n  createPath,\n  useHref,\n  useLocation,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useResolvedPath,\n  useBlocker,\n  UNSAFE_DataRouterContext as DataRouterContext,\n  UNSAFE_DataRouterStateContext as DataRouterStateContext,\n  UNSAFE_NavigationContext as NavigationContext,\n  UNSAFE_RouteContext as RouteContext,\n  UNSAFE_mapRouteProperties as mapRouteProperties,\n  UNSAFE_useRouteId as useRouteId,\n  UNSAFE_useRoutesImpl as useRoutesImpl,\n} from \"react-router\";\nimport type {\n  BrowserHistory,\n  unstable_DataStrategyFunction,\n  unstable_DataStrategyFunctionArgs,\n  unstable_DataStrategyMatch,\n  Fetcher,\n  FormEncType,\n  FormMethod,\n  FutureConfig as RouterFutureConfig,\n  GetScrollRestorationKeyFunction,\n  HashHistory,\n  History,\n  HTMLFormMethod,\n  HydrationState,\n  Router as RemixRouter,\n  V7_FormMethod,\n  RouterState,\n  RouterSubscriber,\n  BlockerFunction,\n} from \"@remix-run/router\";\nimport {\n  createRouter,\n  createBrowserHistory,\n  createHashHistory,\n  joinPaths,\n  stripBasename,\n  UNSAFE_ErrorResponseImpl as ErrorResponseImpl,\n  UNSAFE_invariant as invariant,\n  UNSAFE_warning as warning,\n  matchPath,\n  IDLE_FETCHER,\n} from \"@remix-run/router\";\n\nimport type {\n  SubmitOptions,\n  ParamKeyValuePair,\n  URLSearchParamsInit,\n  SubmitTarget,\n  FetcherSubmitOptions,\n} from \"./dom\";\nimport {\n  createSearchParams,\n  defaultMethod,\n  getFormSubmissionInfo,\n  getSearchParamsForLocation,\n  shouldProcessLinkClick,\n} from \"./dom\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Re-exports\n////////////////////////////////////////////////////////////////////////////////\n\nexport type {\n  unstable_DataStrategyFunction,\n  unstable_DataStrategyFunctionArgs,\n  unstable_DataStrategyMatch,\n  FormEncType,\n  FormMethod,\n  GetScrollRestorationKeyFunction,\n  ParamKeyValuePair,\n  SubmitOptions,\n  URLSearchParamsInit,\n  V7_FormMethod,\n};\nexport { createSearchParams, ErrorResponseImpl as UNSAFE_ErrorResponseImpl };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AwaitProps,\n  Blocker,\n  BlockerFunction,\n  DataRouteMatch,\n  DataRouteObject,\n  ErrorResponse,\n  Fetcher,\n  FutureConfig,\n  Hash,\n  IndexRouteObject,\n  IndexRouteProps,\n  JsonFunction,\n  LazyRouteFunction,\n  LayoutRouteProps,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  MemoryRouterProps,\n  NavigateFunction,\n  NavigateOptions,\n  NavigateProps,\n  Navigation,\n  Navigator,\n  NonIndexRouteObject,\n  OutletProps,\n  Params,\n  ParamParseKey,\n  Path,\n  PathMatch,\n  Pathname,\n  PathParam,\n  PathPattern,\n  PathRouteProps,\n  RedirectFunction,\n  RelativeRoutingType,\n  RouteMatch,\n  RouteObject,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n  Search,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  unstable_HandlerResult,\n  unstable_PatchRoutesOnMissFunction,\n} from \"react-router\";\nexport {\n  AbortedDeferredError,\n  Await,\n  MemoryRouter,\n  Navigate,\n  NavigationType,\n  Outlet,\n  Route,\n  Router,\n  Routes,\n  createMemoryRouter,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromElements,\n  defer,\n  isRouteErrorResponse,\n  generatePath,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  renderMatches,\n  resolvePath,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useBlocker,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n  UNSAFE_DataRouterContext,\n  UNSAFE_DataRouterStateContext,\n  UNSAFE_NavigationContext,\n  UNSAFE_LocationContext,\n  UNSAFE_RouteContext,\n  UNSAFE_useRouteId,\n} from \"react-router\";\n//#endregion\n\ndeclare global {\n  var __staticRouterHydrationData: HydrationState | undefined;\n  var __reactRouterVersion: string;\n  interface Document {\n    startViewTransition(cb: () => Promise<void> | void): ViewTransition;\n  }\n}\n\n// HEY YOU! DON'T TOUCH THIS VARIABLE!\n//\n// It is replaced with the proper version at build time via a babel plugin in\n// the rollup config.\n//\n// Export a global property onto the window for React Router detection by the\n// Core Web Vitals Technology Report.  This way they can configure the `wappalyzer`\n// to detect and properly classify live websites as being built with React Router:\n// https://github.com/HTTPArchive/wappalyzer/blob/main/src/technologies/r.json\nconst REACT_ROUTER_VERSION = \"0\";\ntry {\n  window.__reactRouterVersion = REACT_ROUTER_VERSION;\n} catch (e) {\n  // no-op\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Routers\n////////////////////////////////////////////////////////////////////////////////\n\ninterface DOMRouterOpts {\n  basename?: string;\n  future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n  hydrationData?: HydrationState;\n  unstable_dataStrategy?: unstable_DataStrategyFunction;\n  unstable_patchRoutesOnMiss?: unstable_PatchRoutesOnMissFunction;\n  window?: Window;\n}\n\nexport function createBrowserRouter(\n  routes: RouteObject[],\n  opts?: DOMRouterOpts\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    future: {\n      ...opts?.future,\n      v7_prependBasename: true,\n    },\n    history: createBrowserHistory({ window: opts?.window }),\n    hydrationData: opts?.hydrationData || parseHydrationData(),\n    routes,\n    mapRouteProperties,\n    unstable_dataStrategy: opts?.unstable_dataStrategy,\n    unstable_patchRoutesOnMiss: opts?.unstable_patchRoutesOnMiss,\n    window: opts?.window,\n  }).initialize();\n}\n\nexport function createHashRouter(\n  routes: RouteObject[],\n  opts?: DOMRouterOpts\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    future: {\n      ...opts?.future,\n      v7_prependBasename: true,\n    },\n    history: createHashHistory({ window: opts?.window }),\n    hydrationData: opts?.hydrationData || parseHydrationData(),\n    routes,\n    mapRouteProperties,\n    unstable_dataStrategy: opts?.unstable_dataStrategy,\n    unstable_patchRoutesOnMiss: opts?.unstable_patchRoutesOnMiss,\n    window: opts?.window,\n  }).initialize();\n}\n\nfunction parseHydrationData(): HydrationState | undefined {\n  let state = window?.__staticRouterHydrationData;\n  if (state && state.errors) {\n    state = {\n      ...state,\n      errors: deserializeErrors(state.errors),\n    };\n  }\n  return state;\n}\n\nfunction deserializeErrors(\n  errors: RemixRouter[\"state\"][\"errors\"]\n): RemixRouter[\"state\"][\"errors\"] {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized: RemixRouter[\"state\"][\"errors\"] = {};\n  for (let [key, val] of entries) {\n    // Hey you!  If you change this, please change the corresponding logic in\n    // serializeErrors in react-router-dom/server.tsx :)\n    if (val && val.__type === \"RouteErrorResponse\") {\n      serialized[key] = new ErrorResponseImpl(\n        val.status,\n        val.statusText,\n        val.data,\n        val.internal === true\n      );\n    } else if (val && val.__type === \"Error\") {\n      // Attempt to reconstruct the right type of Error (i.e., ReferenceError)\n      if (val.__subType) {\n        let ErrorConstructor = window[val.__subType];\n        if (typeof ErrorConstructor === \"function\") {\n          try {\n            // @ts-expect-error\n            let error = new ErrorConstructor(val.message);\n            // Wipe away the client-side stack trace.  Nothing to fill it in with\n            // because we don't serialize SSR stack traces for security reasons\n            error.stack = \"\";\n            serialized[key] = error;\n          } catch (e) {\n            // no-op - fall through and create a normal Error\n          }\n        }\n      }\n\n      if (serialized[key] == null) {\n        let error = new Error(val.message);\n        // Wipe away the client-side stack trace.  Nothing to fill it in with\n        // because we don't serialize SSR stack traces for security reasons\n        error.stack = \"\";\n        serialized[key] = error;\n      }\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Contexts\n////////////////////////////////////////////////////////////////////////////////\n\ntype ViewTransitionContextObject =\n  | {\n      isTransitioning: false;\n    }\n  | {\n      isTransitioning: true;\n      flushSync: boolean;\n      currentLocation: Location;\n      nextLocation: Location;\n    };\n\nconst ViewTransitionContext = React.createContext<ViewTransitionContextObject>({\n  isTransitioning: false,\n});\nif (__DEV__) {\n  ViewTransitionContext.displayName = \"ViewTransition\";\n}\n\nexport { ViewTransitionContext as UNSAFE_ViewTransitionContext };\n\n// TODO: (v7) Change the useFetcher data from `any` to `unknown`\ntype FetchersContextObject = Map<string, any>;\n\nconst FetchersContext = React.createContext<FetchersContextObject>(new Map());\nif (__DEV__) {\n  FetchersContext.displayName = \"Fetchers\";\n}\n\nexport { FetchersContext as UNSAFE_FetchersContext };\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\nconst FLUSH_SYNC = \"flushSync\";\nconst flushSyncImpl = ReactDOM[FLUSH_SYNC];\nconst USE_ID = \"useId\";\nconst useIdImpl = React[USE_ID];\n\nfunction startTransitionSafe(cb: () => void) {\n  if (startTransitionImpl) {\n    startTransitionImpl(cb);\n  } else {\n    cb();\n  }\n}\n\nfunction flushSyncSafe(cb: () => void) {\n  if (flushSyncImpl) {\n    flushSyncImpl(cb);\n  } else {\n    cb();\n  }\n}\n\ninterface ViewTransition {\n  finished: Promise<void>;\n  ready: Promise<void>;\n  updateCallbackDone: Promise<void>;\n  skipTransition(): void;\n}\n\nclass Deferred<T> {\n  status: \"pending\" | \"resolved\" | \"rejected\" = \"pending\";\n  promise: Promise<T>;\n  // @ts-expect-error - no initializer\n  resolve: (value: T) => void;\n  // @ts-expect-error - no initializer\n  reject: (reason?: unknown) => void;\n  constructor() {\n    this.promise = new Promise((resolve, reject) => {\n      this.resolve = (value) => {\n        if (this.status === \"pending\") {\n          this.status = \"resolved\";\n          resolve(value);\n        }\n      };\n      this.reject = (reason) => {\n        if (this.status === \"pending\") {\n          this.status = \"rejected\";\n          reject(reason);\n        }\n      };\n    });\n  }\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n  future,\n}: RouterProviderProps): React.ReactElement {\n  let [state, setStateImpl] = React.useState(router.state);\n  let [pendingState, setPendingState] = React.useState<RouterState>();\n  let [vtContext, setVtContext] = React.useState<ViewTransitionContextObject>({\n    isTransitioning: false,\n  });\n  let [renderDfd, setRenderDfd] = React.useState<Deferred<void>>();\n  let [transition, setTransition] = React.useState<ViewTransition>();\n  let [interruption, setInterruption] = React.useState<{\n    state: RouterState;\n    currentLocation: Location;\n    nextLocation: Location;\n  }>();\n  let fetcherData = React.useRef<Map<string, any>>(new Map());\n  let { v7_startTransition } = future || {};\n\n  let optInStartTransition = React.useCallback(\n    (cb: () => void) => {\n      if (v7_startTransition) {\n        startTransitionSafe(cb);\n      } else {\n        cb();\n      }\n    },\n    [v7_startTransition]\n  );\n\n  let setState = React.useCallback<RouterSubscriber>(\n    (\n      newState: RouterState,\n      {\n        deletedFetchers,\n        unstable_flushSync: flushSync,\n        unstable_viewTransitionOpts: viewTransitionOpts,\n      }\n    ) => {\n      deletedFetchers.forEach((key) => fetcherData.current.delete(key));\n      newState.fetchers.forEach((fetcher, key) => {\n        if (fetcher.data !== undefined) {\n          fetcherData.current.set(key, fetcher.data);\n        }\n      });\n\n      let isViewTransitionUnavailable =\n        router.window == null ||\n        router.window.document == null ||\n        typeof router.window.document.startViewTransition !== \"function\";\n\n      // If this isn't a view transition or it's not available in this browser,\n      // just update and be done with it\n      if (!viewTransitionOpts || isViewTransitionUnavailable) {\n        if (flushSync) {\n          flushSyncSafe(() => setStateImpl(newState));\n        } else {\n          optInStartTransition(() => setStateImpl(newState));\n        }\n        return;\n      }\n\n      // flushSync + startViewTransition\n      if (flushSync) {\n        // Flush through the context to mark DOM elements as transition=ing\n        flushSyncSafe(() => {\n          // Cancel any pending transitions\n          if (transition) {\n            renderDfd && renderDfd.resolve();\n            transition.skipTransition();\n          }\n          setVtContext({\n            isTransitioning: true,\n            flushSync: true,\n            currentLocation: viewTransitionOpts.currentLocation,\n            nextLocation: viewTransitionOpts.nextLocation,\n          });\n        });\n\n        // Update the DOM\n        let t = router.window!.document.startViewTransition(() => {\n          flushSyncSafe(() => setStateImpl(newState));\n        });\n\n        // Clean up after the animation completes\n        t.finished.finally(() => {\n          flushSyncSafe(() => {\n            setRenderDfd(undefined);\n            setTransition(undefined);\n            setPendingState(undefined);\n            setVtContext({ isTransitioning: false });\n          });\n        });\n\n        flushSyncSafe(() => setTransition(t));\n        return;\n      }\n\n      // startTransition + startViewTransition\n      if (transition) {\n        // Interrupting an in-progress transition, cancel and let everything flush\n        // out, and then kick off a new transition from the interruption state\n        renderDfd && renderDfd.resolve();\n        transition.skipTransition();\n        setInterruption({\n          state: newState,\n          currentLocation: viewTransitionOpts.currentLocation,\n          nextLocation: viewTransitionOpts.nextLocation,\n        });\n      } else {\n        // Completed navigation update with opted-in view transitions, let 'er rip\n        setPendingState(newState);\n        setVtContext({\n          isTransitioning: true,\n          flushSync: false,\n          currentLocation: viewTransitionOpts.currentLocation,\n          nextLocation: viewTransitionOpts.nextLocation,\n        });\n      }\n    },\n    [router.window, transition, renderDfd, fetcherData, optInStartTransition]\n  );\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n  // When we start a view transition, create a Deferred we can use for the\n  // eventual \"completed\" render\n  React.useEffect(() => {\n    if (vtContext.isTransitioning && !vtContext.flushSync) {\n      setRenderDfd(new Deferred<void>());\n    }\n  }, [vtContext]);\n\n  // Once the deferred is created, kick off startViewTransition() to update the\n  // DOM and then wait on the Deferred to resolve (indicating the DOM update has\n  // happened)\n  React.useEffect(() => {\n    if (renderDfd && pendingState && router.window) {\n      let newState = pendingState;\n      let renderPromise = renderDfd.promise;\n      let transition = router.window.document.startViewTransition(async () => {\n        optInStartTransition(() => setStateImpl(newState));\n        await renderPromise;\n      });\n      transition.finished.finally(() => {\n        setRenderDfd(undefined);\n        setTransition(undefined);\n        setPendingState(undefined);\n        setVtContext({ isTransitioning: false });\n      });\n      setTransition(transition);\n    }\n  }, [optInStartTransition, pendingState, renderDfd, router.window]);\n\n  // When the new location finally renders and is committed to the DOM, this\n  // effect will run to resolve the transition\n  React.useEffect(() => {\n    if (\n      renderDfd &&\n      pendingState &&\n      state.location.key === pendingState.location.key\n    ) {\n      renderDfd.resolve();\n    }\n  }, [renderDfd, transition, state.location, pendingState]);\n\n  // If we get interrupted with a new navigation during a transition, we skip\n  // the active transition, let it cleanup, then kick it off again here\n  React.useEffect(() => {\n    if (!vtContext.isTransitioning && interruption) {\n      setPendingState(interruption.state);\n      setVtContext({\n        isTransitioning: true,\n        flushSync: false,\n        currentLocation: interruption.currentLocation,\n        nextLocation: interruption.nextLocation,\n      });\n      setInterruption(undefined);\n    }\n  }, [vtContext.isTransitioning, interruption]);\n\n  React.useEffect(() => {\n    warning(\n      fallbackElement == null || !router.future.v7_partialHydration,\n      \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n        \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n    );\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  let dataRouterContext = React.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n    }),\n    [router, navigator, basename]\n  );\n\n  let routerFuture = React.useMemo<RouterProps[\"future\"]>(\n    () => ({\n      v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n    }),\n    [router.future.v7_relativeSplatPath]\n  );\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider value={dataRouterContext}>\n        <DataRouterStateContext.Provider value={state}>\n          <FetchersContext.Provider value={fetcherData.current}>\n            <ViewTransitionContext.Provider value={vtContext}>\n              <Router\n                basename={basename}\n                location={state.location}\n                navigationType={state.historyAction}\n                navigator={navigator}\n                future={routerFuture}\n              >\n                {state.initialized || router.future.v7_partialHydration ? (\n                  <MemoizedDataRoutes\n                    routes={router.routes}\n                    future={router.future}\n                    state={state}\n                  />\n                ) : (\n                  fallbackElement\n                )}\n              </Router>\n            </ViewTransitionContext.Provider>\n          </FetchersContext.Provider>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\n// Memoize to avoid re-renders when updating `ViewTransitionContext`\nconst MemoizedDataRoutes = React.memo(DataRoutes);\n\nfunction DataRoutes({\n  routes,\n  future,\n  state,\n}: {\n  routes: DataRouteObject[];\n  future: RemixRouter[\"future\"];\n  state: RouterState;\n}): React.ReactElement | null {\n  return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface BrowserRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  future?: Partial<FutureConfig>;\n  window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n  basename,\n  children,\n  future,\n  window,\n}: BrowserRouterProps) {\n  let historyRef = React.useRef<BrowserHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createBrowserHistory({ window, v5Compat: true });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface HashRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  future?: Partial<FutureConfig>;\n  window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({\n  basename,\n  children,\n  future,\n  window,\n}: HashRouterProps) {\n  let historyRef = React.useRef<HashHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createHashHistory({ window, v5Compat: true });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface HistoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  future?: FutureConfig;\n  history: History;\n}\n\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({\n  basename,\n  children,\n  future,\n  history,\n}: HistoryRouterProps) {\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nif (__DEV__) {\n  HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nexport interface LinkProps\n  extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n  reloadDocument?: boolean;\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  to: To;\n  unstable_viewTransition?: boolean;\n}\n\nconst isBrowser =\n  typeof window !== \"undefined\" &&\n  typeof window.document !== \"undefined\" &&\n  typeof window.document.createElement !== \"undefined\";\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\n/**\n * The public API for rendering a history-aware `<a>`.\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n  function LinkWithRef(\n    {\n      onClick,\n      relative,\n      reloadDocument,\n      replace,\n      state,\n      target,\n      to,\n      preventScrollReset,\n      unstable_viewTransition,\n      ...rest\n    },\n    ref\n  ) {\n    let { basename } = React.useContext(NavigationContext);\n\n    // Rendered into <a href> for absolute URLs\n    let absoluteHref;\n    let isExternal = false;\n\n    if (typeof to === \"string\" && ABSOLUTE_URL_REGEX.test(to)) {\n      // Render the absolute href server- and client-side\n      absoluteHref = to;\n\n      // Only check for external origins client-side\n      if (isBrowser) {\n        try {\n          let currentUrl = new URL(window.location.href);\n          let targetUrl = to.startsWith(\"//\")\n            ? new URL(currentUrl.protocol + to)\n            : new URL(to);\n          let path = stripBasename(targetUrl.pathname, basename);\n\n          if (targetUrl.origin === currentUrl.origin && path != null) {\n            // Strip the protocol/origin/basename for same-origin absolute URLs\n            to = path + targetUrl.search + targetUrl.hash;\n          } else {\n            isExternal = true;\n          }\n        } catch (e) {\n          // We can't do external URL detection without a valid URL\n          warning(\n            false,\n            `<Link to=\"${to}\"> contains an invalid URL which will probably break ` +\n              `when clicked - please update to a valid URL path.`\n          );\n        }\n      }\n    }\n\n    // Rendered into <a href> for relative URLs\n    let href = useHref(to, { relative });\n\n    let internalOnClick = useLinkClickHandler(to, {\n      replace,\n      state,\n      target,\n      preventScrollReset,\n      relative,\n      unstable_viewTransition,\n    });\n    function handleClick(\n      event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n    ) {\n      if (onClick) onClick(event);\n      if (!event.defaultPrevented) {\n        internalOnClick(event);\n      }\n    }\n\n    return (\n      // eslint-disable-next-line jsx-a11y/anchor-has-content\n      <a\n        {...rest}\n        href={absoluteHref || href}\n        onClick={isExternal || reloadDocument ? onClick : handleClick}\n        ref={ref}\n        target={target}\n      />\n    );\n  }\n);\n\nif (__DEV__) {\n  Link.displayName = \"Link\";\n}\n\nexport type NavLinkRenderProps = {\n  isActive: boolean;\n  isPending: boolean;\n  isTransitioning: boolean;\n};\n\nexport interface NavLinkProps\n  extends Omit<LinkProps, \"className\" | \"style\" | \"children\"> {\n  children?: React.ReactNode | ((props: NavLinkRenderProps) => React.ReactNode);\n  caseSensitive?: boolean;\n  className?: string | ((props: NavLinkRenderProps) => string | undefined);\n  end?: boolean;\n  style?:\n    | React.CSSProperties\n    | ((props: NavLinkRenderProps) => React.CSSProperties | undefined);\n}\n\n/**\n * A `<Link>` wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef<HTMLAnchorElement, NavLinkProps>(\n  function NavLinkWithRef(\n    {\n      \"aria-current\": ariaCurrentProp = \"page\",\n      caseSensitive = false,\n      className: classNameProp = \"\",\n      end = false,\n      style: styleProp,\n      to,\n      unstable_viewTransition,\n      children,\n      ...rest\n    },\n    ref\n  ) {\n    let path = useResolvedPath(to, { relative: rest.relative });\n    let location = useLocation();\n    let routerState = React.useContext(DataRouterStateContext);\n    let { navigator, basename } = React.useContext(NavigationContext);\n    let isTransitioning =\n      routerState != null &&\n      // Conditional usage is OK here because the usage of a data router is static\n      // eslint-disable-next-line react-hooks/rules-of-hooks\n      useViewTransitionState(path) &&\n      unstable_viewTransition === true;\n\n    let toPathname = navigator.encodeLocation\n      ? navigator.encodeLocation(path).pathname\n      : path.pathname;\n    let locationPathname = location.pathname;\n    let nextLocationPathname =\n      routerState && routerState.navigation && routerState.navigation.location\n        ? routerState.navigation.location.pathname\n        : null;\n\n    if (!caseSensitive) {\n      locationPathname = locationPathname.toLowerCase();\n      nextLocationPathname = nextLocationPathname\n        ? nextLocationPathname.toLowerCase()\n        : null;\n      toPathname = toPathname.toLowerCase();\n    }\n\n    if (nextLocationPathname && basename) {\n      nextLocationPathname =\n        stripBasename(nextLocationPathname, basename) || nextLocationPathname;\n    }\n\n    // If the `to` has a trailing slash, look at that exact spot.  Otherwise,\n    // we're looking for a slash _after_ what's in `to`.  For example:\n    //\n    // <NavLink to=\"/users\"> and <NavLink to=\"/users/\">\n    // both want to look for a / at index 6 to match URL `/users/matt`\n    const endSlashPosition =\n      toPathname !== \"/\" && toPathname.endsWith(\"/\")\n        ? toPathname.length - 1\n        : toPathname.length;\n    let isActive =\n      locationPathname === toPathname ||\n      (!end &&\n        locationPathname.startsWith(toPathname) &&\n        locationPathname.charAt(endSlashPosition) === \"/\");\n\n    let isPending =\n      nextLocationPathname != null &&\n      (nextLocationPathname === toPathname ||\n        (!end &&\n          nextLocationPathname.startsWith(toPathname) &&\n          nextLocationPathname.charAt(toPathname.length) === \"/\"));\n\n    let renderProps = {\n      isActive,\n      isPending,\n      isTransitioning,\n    };\n\n    let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n    let className: string | undefined;\n    if (typeof classNameProp === \"function\") {\n      className = classNameProp(renderProps);\n    } else {\n      // If the className prop is not a function, we use a default `active`\n      // class for <NavLink />s that are active. In v5 `active` was the default\n      // value for `activeClassName`, but we are removing that API and can still\n      // use the old default behavior for a cleaner upgrade path and keep the\n      // simple styling rules working as they currently do.\n      className = [\n        classNameProp,\n        isActive ? \"active\" : null,\n        isPending ? \"pending\" : null,\n        isTransitioning ? \"transitioning\" : null,\n      ]\n        .filter(Boolean)\n        .join(\" \");\n    }\n\n    let style =\n      typeof styleProp === \"function\" ? styleProp(renderProps) : styleProp;\n\n    return (\n      <Link\n        {...rest}\n        aria-current={ariaCurrent}\n        className={className}\n        ref={ref}\n        style={style}\n        to={to}\n        unstable_viewTransition={unstable_viewTransition}\n      >\n        {typeof children === \"function\" ? children(renderProps) : children}\n      </Link>\n    );\n  }\n);\n\nif (__DEV__) {\n  NavLink.displayName = \"NavLink\";\n}\n\n/**\n * Form props shared by navigations and fetchers\n */\ninterface SharedFormProps extends React.FormHTMLAttributes<HTMLFormElement> {\n  /**\n   * The HTTP verb to use when the form is submit. Supports \"get\", \"post\",\n   * \"put\", \"delete\", \"patch\".\n   */\n  method?: HTMLFormMethod;\n\n  /**\n   * `<form encType>` - enhancing beyond the normal string type and limiting\n   * to the built-in browser supported values\n   */\n  encType?:\n    | \"application/x-www-form-urlencoded\"\n    | \"multipart/form-data\"\n    | \"text/plain\";\n\n  /**\n   * Normal `<form action>` but supports React Router's relative paths.\n   */\n  action?: string;\n\n  /**\n   * Determines whether the form action is relative to the route hierarchy or\n   * the pathname.  Use this if you want to opt out of navigating the route\n   * hierarchy and want to instead route based on /-delimited URL segments\n   */\n  relative?: RelativeRoutingType;\n\n  /**\n   * Prevent the scroll position from resetting to the top of the viewport on\n   * completion of the navigation when using the <ScrollRestoration> component\n   */\n  preventScrollReset?: boolean;\n\n  /**\n   * A function to call when the form is submitted. If you call\n   * `event.preventDefault()` then this form will not do anything.\n   */\n  onSubmit?: React.FormEventHandler<HTMLFormElement>;\n}\n\n/**\n * Form props available to fetchers\n */\nexport interface FetcherFormProps extends SharedFormProps {}\n\n/**\n * Form props available to navigations\n */\nexport interface FormProps extends SharedFormProps {\n  /**\n   * Indicate a specific fetcherKey to use when using navigate=false\n   */\n  fetcherKey?: string;\n\n  /**\n   * navigate=false will use a fetcher instead of a navigation\n   */\n  navigate?: boolean;\n\n  /**\n   * Forces a full document navigation instead of a fetch.\n   */\n  reloadDocument?: boolean;\n\n  /**\n   * Replaces the current entry in the browser history stack when the form\n   * navigates. Use this if you don't want the user to be able to click \"back\"\n   * to the page with the form on it.\n   */\n  replace?: boolean;\n\n  /**\n   * State object to add to the history stack entry for this navigation\n   */\n  state?: any;\n\n  /**\n   * Enable view transitions on this Form navigation\n   */\n  unstable_viewTransition?: boolean;\n}\n\ntype HTMLSubmitEvent = React.BaseSyntheticEvent<\n  SubmitEvent,\n  Event,\n  HTMLFormElement\n>;\n\ntype HTMLFormSubmitter = HTMLButtonElement | HTMLInputElement;\n\n/**\n * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(\n  (\n    {\n      fetcherKey,\n      navigate,\n      reloadDocument,\n      replace,\n      state,\n      method = defaultMethod,\n      action,\n      onSubmit,\n      relative,\n      preventScrollReset,\n      unstable_viewTransition,\n      ...props\n    },\n    forwardedRef\n  ) => {\n    let submit = useSubmit();\n    let formAction = useFormAction(action, { relative });\n    let formMethod: HTMLFormMethod =\n      method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n\n    let submitHandler: React.FormEventHandler<HTMLFormElement> = (event) => {\n      onSubmit && onSubmit(event);\n      if (event.defaultPrevented) return;\n      event.preventDefault();\n\n      let submitter = (event as unknown as HTMLSubmitEvent).nativeEvent\n        .submitter as HTMLFormSubmitter | null;\n\n      let submitMethod =\n        (submitter?.getAttribute(\"formmethod\") as HTMLFormMethod | undefined) ||\n        method;\n\n      submit(submitter || event.currentTarget, {\n        fetcherKey,\n        method: submitMethod,\n        navigate,\n        replace,\n        state,\n        relative,\n        preventScrollReset,\n        unstable_viewTransition,\n      });\n    };\n\n    return (\n      <form\n        ref={forwardedRef}\n        method={formMethod}\n        action={formAction}\n        onSubmit={reloadDocument ? onSubmit : submitHandler}\n        {...props}\n      />\n    );\n  }\n);\n\nif (__DEV__) {\n  Form.displayName = \"Form\";\n}\n\nexport interface ScrollRestorationProps {\n  getKey?: GetScrollRestorationKeyFunction;\n  storageKey?: string;\n}\n\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\nexport function ScrollRestoration({\n  getKey,\n  storageKey,\n}: ScrollRestorationProps) {\n  useScrollRestoration({ getKey, storageKey });\n  return null;\n}\n\nif (__DEV__) {\n  ScrollRestoration.displayName = \"ScrollRestoration\";\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\n\nenum DataRouterHook {\n  UseScrollRestoration = \"useScrollRestoration\",\n  UseSubmit = \"useSubmit\",\n  UseSubmitFetcher = \"useSubmitFetcher\",\n  UseFetcher = \"useFetcher\",\n  useViewTransitionState = \"useViewTransitionState\",\n}\n\nenum DataRouterStateHook {\n  UseFetcher = \"useFetcher\",\n  UseFetchers = \"useFetchers\",\n  UseScrollRestoration = \"useScrollRestoration\",\n}\n\n// Internal hooks\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\n// External hooks\n\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nexport function useLinkClickHandler<E extends Element = HTMLAnchorElement>(\n  to: To,\n  {\n    target,\n    replace: replaceProp,\n    state,\n    preventScrollReset,\n    relative,\n    unstable_viewTransition,\n  }: {\n    target?: React.HTMLAttributeAnchorTarget;\n    replace?: boolean;\n    state?: any;\n    preventScrollReset?: boolean;\n    relative?: RelativeRoutingType;\n    unstable_viewTransition?: boolean;\n  } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n  let navigate = useNavigate();\n  let location = useLocation();\n  let path = useResolvedPath(to, { relative });\n\n  return React.useCallback(\n    (event: React.MouseEvent<E, MouseEvent>) => {\n      if (shouldProcessLinkClick(event, target)) {\n        event.preventDefault();\n\n        // If the URL hasn't changed, a regular <a> will do a replace instead of\n        // a push, so do the same here unless the replace prop is explicitly set\n        let replace =\n          replaceProp !== undefined\n            ? replaceProp\n            : createPath(location) === createPath(path);\n\n        navigate(to, {\n          replace,\n          state,\n          preventScrollReset,\n          relative,\n          unstable_viewTransition,\n        });\n      }\n    },\n    [\n      location,\n      navigate,\n      path,\n      replaceProp,\n      state,\n      target,\n      to,\n      preventScrollReset,\n      relative,\n      unstable_viewTransition,\n    ]\n  );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(\n  defaultInit?: URLSearchParamsInit\n): [URLSearchParams, SetURLSearchParams] {\n  warning(\n    typeof URLSearchParams !== \"undefined\",\n    `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n      `support the URLSearchParams API. If you need to support Internet ` +\n      `Explorer 11, we recommend you load a polyfill such as ` +\n      `https://github.com/ungap/url-search-params.`\n  );\n\n  let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n  let hasSetSearchParamsRef = React.useRef(false);\n\n  let location = useLocation();\n  let searchParams = React.useMemo(\n    () =>\n      // Only merge in the defaults if we haven't yet called setSearchParams.\n      // Once we call that we want those to take precedence, otherwise you can't\n      // remove a param with setSearchParams({}) if it has an initial value\n      getSearchParamsForLocation(\n        location.search,\n        hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current\n      ),\n    [location.search]\n  );\n\n  let navigate = useNavigate();\n  let setSearchParams = React.useCallback<SetURLSearchParams>(\n    (nextInit, navigateOptions) => {\n      const newSearchParams = createSearchParams(\n        typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit\n      );\n      hasSetSearchParamsRef.current = true;\n      navigate(\"?\" + newSearchParams, navigateOptions);\n    },\n    [navigate, searchParams]\n  );\n\n  return [searchParams, setSearchParams];\n}\n\nexport type SetURLSearchParams = (\n  nextInit?:\n    | URLSearchParamsInit\n    | ((prev: URLSearchParams) => URLSearchParamsInit),\n  navigateOpts?: NavigateOptions\n) => void;\n\n/**\n * Submits a HTML `<form>` to the server without reloading the page.\n */\nexport interface SubmitFunction {\n  (\n    /**\n     * Specifies the `<form>` to be submitted to the server, a specific\n     * `<button>` or `<input type=\"submit\">` to use to submit the form, or some\n     * arbitrary data to submit.\n     *\n     * Note: When using a `<button>` its `name` and `value` will also be\n     * included in the form data that is submitted.\n     */\n    target: SubmitTarget,\n\n    /**\n     * Options that override the `<form>`'s own attributes. Required when\n     * submitting arbitrary data without a backing `<form>`.\n     */\n    options?: SubmitOptions\n  ): void;\n}\n\n/**\n * Submits a fetcher `<form>` to the server without reloading the page.\n */\nexport interface FetcherSubmitFunction {\n  (\n    target: SubmitTarget,\n    // Fetchers cannot replace or set state because they are not navigation events\n    options?: FetcherSubmitOptions\n  ): void;\n}\n\nfunction validateClientSideSubmission() {\n  if (typeof document === \"undefined\") {\n    throw new Error(\n      \"You are calling submit during the server render. \" +\n        \"Try calling submit within a `useEffect` or callback instead.\"\n    );\n  }\n}\n\nlet fetcherId = 0;\nlet getUniqueFetcherId = () => `__${String(++fetcherId)}__`;\n\n/**\n * Returns a function that may be used to programmatically submit a form (or\n * some arbitrary data) to the server.\n */\nexport function useSubmit(): SubmitFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseSubmit);\n  let { basename } = React.useContext(NavigationContext);\n  let currentRouteId = useRouteId();\n\n  return React.useCallback<SubmitFunction>(\n    (target, options = {}) => {\n      validateClientSideSubmission();\n\n      let { action, method, encType, formData, body } = getFormSubmissionInfo(\n        target,\n        basename\n      );\n\n      if (options.navigate === false) {\n        let key = options.fetcherKey || getUniqueFetcherId();\n        router.fetch(key, currentRouteId, options.action || action, {\n          preventScrollReset: options.preventScrollReset,\n          formData,\n          body,\n          formMethod: options.method || (method as HTMLFormMethod),\n          formEncType: options.encType || (encType as FormEncType),\n          unstable_flushSync: options.unstable_flushSync,\n        });\n      } else {\n        router.navigate(options.action || action, {\n          preventScrollReset: options.preventScrollReset,\n          formData,\n          body,\n          formMethod: options.method || (method as HTMLFormMethod),\n          formEncType: options.encType || (encType as FormEncType),\n          replace: options.replace,\n          state: options.state,\n          fromRouteId: currentRouteId,\n          unstable_flushSync: options.unstable_flushSync,\n          unstable_viewTransition: options.unstable_viewTransition,\n        });\n      }\n    },\n    [router, basename, currentRouteId]\n  );\n}\n\n// v7: Eventually we should deprecate this entirely in favor of using the\n// router method directly?\nexport function useFormAction(\n  action?: string,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  let { basename } = React.useContext(NavigationContext);\n  let routeContext = React.useContext(RouteContext);\n  invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n  let [match] = routeContext.matches.slice(-1);\n  // Shallow clone path so we can modify it below, otherwise we modify the\n  // object referenced by useMemo inside useResolvedPath\n  let path = { ...useResolvedPath(action ? action : \".\", { relative }) };\n\n  // If no action was specified, browsers will persist current search params\n  // when determining the path, so match that behavior\n  // https://github.com/remix-run/remix/issues/927\n  let location = useLocation();\n  if (action == null) {\n    // Safe to write to this directly here since if action was undefined, we\n    // would have called useResolvedPath(\".\") which will never include a search\n    path.search = location.search;\n\n    // When grabbing search params from the URL, remove any included ?index param\n    // since it might not apply to our contextual route.  We add it back based\n    // on match.route.index below\n    let params = new URLSearchParams(path.search);\n    if (params.has(\"index\") && params.get(\"index\") === \"\") {\n      params.delete(\"index\");\n      path.search = params.toString() ? `?${params.toString()}` : \"\";\n    }\n  }\n\n  if ((!action || action === \".\") && match.route.index) {\n    path.search = path.search\n      ? path.search.replace(/^\\?/, \"?index&\")\n      : \"?index\";\n  }\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the form action.  If this is a root navigation, then just use\n  // the raw basename which allows the basename to have full control over the\n  // presence of a trailing slash on root actions\n  if (basename !== \"/\") {\n    path.pathname =\n      path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n  }\n\n  return createPath(path);\n}\n\nexport type FetcherWithComponents<TData> = Fetcher<TData> & {\n  Form: React.ForwardRefExoticComponent<\n    FetcherFormProps & React.RefAttributes<HTMLFormElement>\n  >;\n  submit: FetcherSubmitFunction;\n  load: (href: string, opts?: { unstable_flushSync?: boolean }) => void;\n};\n\n// TODO: (v7) Change the useFetcher generic default from `any` to `unknown`\n\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n */\nexport function useFetcher<TData = any>({\n  key,\n}: { key?: string } = {}): FetcherWithComponents<TData> {\n  let { router } = useDataRouterContext(DataRouterHook.UseFetcher);\n  let state = useDataRouterState(DataRouterStateHook.UseFetcher);\n  let fetcherData = React.useContext(FetchersContext);\n  let route = React.useContext(RouteContext);\n  let routeId = route.matches[route.matches.length - 1]?.route.id;\n\n  invariant(fetcherData, `useFetcher must be used inside a FetchersContext`);\n  invariant(route, `useFetcher must be used inside a RouteContext`);\n  invariant(\n    routeId != null,\n    `useFetcher can only be used on routes that contain a unique \"id\"`\n  );\n\n  // Fetcher key handling\n  // OK to call conditionally to feature detect `useId`\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  let defaultKey = useIdImpl ? useIdImpl() : \"\";\n  let [fetcherKey, setFetcherKey] = React.useState<string>(key || defaultKey);\n  if (key && key !== fetcherKey) {\n    setFetcherKey(key);\n  } else if (!fetcherKey) {\n    // We will only fall through here when `useId` is not available\n    setFetcherKey(getUniqueFetcherId());\n  }\n\n  // Registration/cleanup\n  React.useEffect(() => {\n    router.getFetcher(fetcherKey);\n    return () => {\n      // Tell the router we've unmounted - if v7_fetcherPersist is enabled this\n      // will not delete immediately but instead queue up a delete after the\n      // fetcher returns to an `idle` state\n      router.deleteFetcher(fetcherKey);\n    };\n  }, [router, fetcherKey]);\n\n  // Fetcher additions\n  let load = React.useCallback(\n    (href: string, opts?: { unstable_flushSync?: boolean }) => {\n      invariant(routeId, \"No routeId available for fetcher.load()\");\n      router.fetch(fetcherKey, routeId, href, opts);\n    },\n    [fetcherKey, routeId, router]\n  );\n\n  let submitImpl = useSubmit();\n  let submit = React.useCallback<FetcherSubmitFunction>(\n    (target, opts) => {\n      submitImpl(target, {\n        ...opts,\n        navigate: false,\n        fetcherKey,\n      });\n    },\n    [fetcherKey, submitImpl]\n  );\n\n  let FetcherForm = React.useMemo(() => {\n    let FetcherForm = React.forwardRef<HTMLFormElement, FetcherFormProps>(\n      (props, ref) => {\n        return (\n          <Form {...props} navigate={false} fetcherKey={fetcherKey} ref={ref} />\n        );\n      }\n    );\n    if (__DEV__) {\n      FetcherForm.displayName = \"fetcher.Form\";\n    }\n    return FetcherForm;\n  }, [fetcherKey]);\n\n  // Exposed FetcherWithComponents\n  let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;\n  let data = fetcherData.get(fetcherKey);\n  let fetcherWithComponents = React.useMemo(\n    () => ({\n      Form: FetcherForm,\n      submit,\n      load,\n      ...fetcher,\n      data,\n    }),\n    [FetcherForm, submit, load, fetcher, data]\n  );\n\n  return fetcherWithComponents;\n}\n\n/**\n * Provides all fetchers currently on the page. Useful for layouts and parent\n * routes that need to provide pending/optimistic UI regarding the fetch.\n */\nexport function useFetchers(): (Fetcher & { key: string })[] {\n  let state = useDataRouterState(DataRouterStateHook.UseFetchers);\n  return Array.from(state.fetchers.entries()).map(([key, fetcher]) => ({\n    ...fetcher,\n    key,\n  }));\n}\n\nconst SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nlet savedScrollPositions: Record<string, number> = {};\n\n/**\n * When rendered inside a RouterProvider, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n  getKey,\n  storageKey,\n}: {\n  getKey?: GetScrollRestorationKeyFunction;\n  storageKey?: string;\n} = {}) {\n  let { router } = useDataRouterContext(DataRouterHook.UseScrollRestoration);\n  let { restoreScrollPosition, preventScrollReset } = useDataRouterState(\n    DataRouterStateHook.UseScrollRestoration\n  );\n  let { basename } = React.useContext(NavigationContext);\n  let location = useLocation();\n  let matches = useMatches();\n  let navigation = useNavigation();\n\n  // Trigger manual scroll restoration while we're active\n  React.useEffect(() => {\n    window.history.scrollRestoration = \"manual\";\n    return () => {\n      window.history.scrollRestoration = \"auto\";\n    };\n  }, []);\n\n  // Save positions on pagehide\n  usePageHide(\n    React.useCallback(() => {\n      if (navigation.state === \"idle\") {\n        let key = (getKey ? getKey(location, matches) : null) || location.key;\n        savedScrollPositions[key] = window.scrollY;\n      }\n      try {\n        sessionStorage.setItem(\n          storageKey || SCROLL_RESTORATION_STORAGE_KEY,\n          JSON.stringify(savedScrollPositions)\n        );\n      } catch (error) {\n        warning(\n          false,\n          `Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${error}).`\n        );\n      }\n      window.history.scrollRestoration = \"auto\";\n    }, [storageKey, getKey, navigation.state, location, matches])\n  );\n\n  // Read in any saved scroll locations\n  if (typeof document !== \"undefined\") {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(() => {\n      try {\n        let sessionPositions = sessionStorage.getItem(\n          storageKey || SCROLL_RESTORATION_STORAGE_KEY\n        );\n        if (sessionPositions) {\n          savedScrollPositions = JSON.parse(sessionPositions);\n        }\n      } catch (e) {\n        // no-op, use default empty object\n      }\n    }, [storageKey]);\n\n    // Enable scroll restoration in the router\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(() => {\n      let getKeyWithoutBasename: GetScrollRestorationKeyFunction | undefined =\n        getKey && basename !== \"/\"\n          ? (location, matches) =>\n              getKey(\n                // Strip the basename to match useLocation()\n                {\n                  ...location,\n                  pathname:\n                    stripBasename(location.pathname, basename) ||\n                    location.pathname,\n                },\n                matches\n              )\n          : getKey;\n      let disableScrollRestoration = router?.enableScrollRestoration(\n        savedScrollPositions,\n        () => window.scrollY,\n        getKeyWithoutBasename\n      );\n      return () => disableScrollRestoration && disableScrollRestoration();\n    }, [router, basename, getKey]);\n\n    // Restore scrolling when state.restoreScrollPosition changes\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(() => {\n      // Explicit false means don't do anything (used for submissions)\n      if (restoreScrollPosition === false) {\n        return;\n      }\n\n      // been here before, scroll to it\n      if (typeof restoreScrollPosition === \"number\") {\n        window.scrollTo(0, restoreScrollPosition);\n        return;\n      }\n\n      // try to scroll to the hash\n      if (location.hash) {\n        let el = document.getElementById(\n          decodeURIComponent(location.hash.slice(1))\n        );\n        if (el) {\n          el.scrollIntoView();\n          return;\n        }\n      }\n\n      // Don't reset if this navigation opted out\n      if (preventScrollReset === true) {\n        return;\n      }\n\n      // otherwise go to the top on new locations\n      window.scrollTo(0, 0);\n    }, [location, restoreScrollPosition, preventScrollReset]);\n  }\n}\n\nexport { useScrollRestoration as UNSAFE_useScrollRestoration };\n\n/**\n * Setup a callback to be fired on the window's `beforeunload` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nexport function useBeforeUnload(\n  callback: (event: BeforeUnloadEvent) => any,\n  options?: { capture?: boolean }\n): void {\n  let { capture } = options || {};\n  React.useEffect(() => {\n    let opts = capture != null ? { capture } : undefined;\n    window.addEventListener(\"beforeunload\", callback, opts);\n    return () => {\n      window.removeEventListener(\"beforeunload\", callback, opts);\n    };\n  }, [callback, capture]);\n}\n\n/**\n * Setup a callback to be fired on the window's `pagehide` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes.  This event is better supported than beforeunload across browsers.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nfunction usePageHide(\n  callback: (event: PageTransitionEvent) => any,\n  options?: { capture?: boolean }\n): void {\n  let { capture } = options || {};\n  React.useEffect(() => {\n    let opts = capture != null ? { capture } : undefined;\n    window.addEventListener(\"pagehide\", callback, opts);\n    return () => {\n      window.removeEventListener(\"pagehide\", callback, opts);\n    };\n  }, [callback, capture]);\n}\n\n/**\n * Wrapper around useBlocker to show a window.confirm prompt to users instead\n * of building a custom UI with useBlocker.\n *\n * Warning: This has *a lot of rough edges* and behaves very differently (and\n * very incorrectly in some cases) across browsers if user click addition\n * back/forward navigations while the confirm is open.  Use at your own risk.\n */\nfunction usePrompt({\n  when,\n  message,\n}: {\n  when: boolean | BlockerFunction;\n  message: string;\n}) {\n  let blocker = useBlocker(when);\n\n  React.useEffect(() => {\n    if (blocker.state === \"blocked\") {\n      let proceed = window.confirm(message);\n      if (proceed) {\n        // This timeout is needed to avoid a weird \"race\" on POP navigations\n        // between the `window.history` revert navigation and the result of\n        // `window.confirm`\n        setTimeout(blocker.proceed, 0);\n      } else {\n        blocker.reset();\n      }\n    }\n  }, [blocker, message]);\n\n  React.useEffect(() => {\n    if (blocker.state === \"blocked\" && !when) {\n      blocker.reset();\n    }\n  }, [blocker, when]);\n}\n\nexport { usePrompt as unstable_usePrompt };\n\n/**\n * Return a boolean indicating if there is an active view transition to the\n * given href.  You can use this value to render CSS classes or viewTransitionName\n * styles onto your elements\n *\n * @param href The destination href\n * @param [opts.relative] Relative routing type (\"route\" | \"path\")\n */\nfunction useViewTransitionState(\n  to: To,\n  opts: { relative?: RelativeRoutingType } = {}\n) {\n  let vtContext = React.useContext(ViewTransitionContext);\n\n  invariant(\n    vtContext != null,\n    \"`unstable_useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  \" +\n      \"Did you accidentally import `RouterProvider` from `react-router`?\"\n  );\n\n  let { basename } = useDataRouterContext(\n    DataRouterHook.useViewTransitionState\n  );\n  let path = useResolvedPath(to, { relative: opts.relative });\n  if (!vtContext.isTransitioning) {\n    return false;\n  }\n\n  let currentPath =\n    stripBasename(vtContext.currentLocation.pathname, basename) ||\n    vtContext.currentLocation.pathname;\n  let nextPath =\n    stripBasename(vtContext.nextLocation.pathname, basename) ||\n    vtContext.nextLocation.pathname;\n\n  // Transition is active if we're going to or coming from the indicated\n  // destination.  This ensures that other PUSH navigations that reverse\n  // an indicated transition apply.  I.e., on the list view you have:\n  //\n  //   <NavLink to=\"/details/1\" unstable_viewTransition>\n  //\n  // If you click the breadcrumb back to the list view:\n  //\n  //   <NavLink to=\"/list\" unstable_viewTransition>\n  //\n  // We should apply the transition because it's indicated as active going\n  // from /list -> /details/1 and therefore should be active on the reverse\n  // (even though this isn't strictly a POP reverse)\n  return (\n    matchPath(path.pathname, nextPath) != null ||\n    matchPath(path.pathname, currentPath) != null\n  );\n}\n\nexport { useViewTransitionState as unstable_useViewTransitionState };\n\n//#endregion\n","const reportWebVitals = onPerfEntry => {\n  if (onPerfEntry && onPerfEntry instanceof Function) {\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(onPerfEntry);\n      getFID(onPerfEntry);\n      getFCP(onPerfEntry);\n      getLCP(onPerfEntry);\n      getTTFB(onPerfEntry);\n    });\n  }\n};\n\nexport default reportWebVitals;\n","const consoleLogger = {\n  type: 'logger',\n  log(args) {\n    this.output('log', args);\n  },\n  warn(args) {\n    this.output('warn', args);\n  },\n  error(args) {\n    this.output('error', args);\n  },\n  output(type, args) {\n    if (console && console[type]) console[type].apply(console, args);\n  }\n};\nclass Logger {\n  constructor(concreteLogger) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.init(concreteLogger, options);\n  }\n  init(concreteLogger) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.prefix = options.prefix || 'i18next:';\n    this.logger = concreteLogger || consoleLogger;\n    this.options = options;\n    this.debug = options.debug;\n  }\n  log() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return this.forward(args, 'log', '', true);\n  }\n  warn() {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    return this.forward(args, 'warn', '', true);\n  }\n  error() {\n    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n    return this.forward(args, 'error', '');\n  }\n  deprecate() {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n    return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n  }\n  forward(args, lvl, prefix, debugOnly) {\n    if (debugOnly && !this.debug) return null;\n    if (typeof args[0] === 'string') args[0] = `${prefix}${this.prefix} ${args[0]}`;\n    return this.logger[lvl](args);\n  }\n  create(moduleName) {\n    return new Logger(this.logger, {\n      ...{\n        prefix: `${this.prefix}:${moduleName}:`\n      },\n      ...this.options\n    });\n  }\n  clone(options) {\n    options = options || this.options;\n    options.prefix = options.prefix || this.prefix;\n    return new Logger(this.logger, options);\n  }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n  constructor() {\n    this.observers = {};\n  }\n  on(events, listener) {\n    events.split(' ').forEach(event => {\n      if (!this.observers[event]) this.observers[event] = new Map();\n      const numListeners = this.observers[event].get(listener) || 0;\n      this.observers[event].set(listener, numListeners + 1);\n    });\n    return this;\n  }\n  off(event, listener) {\n    if (!this.observers[event]) return;\n    if (!listener) {\n      delete this.observers[event];\n      return;\n    }\n    this.observers[event].delete(listener);\n  }\n  emit(event) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n    if (this.observers[event]) {\n      const cloned = Array.from(this.observers[event].entries());\n      cloned.forEach(_ref => {\n        let [observer, numTimesAdded] = _ref;\n        for (let i = 0; i < numTimesAdded; i++) {\n          observer(...args);\n        }\n      });\n    }\n    if (this.observers['*']) {\n      const cloned = Array.from(this.observers['*'].entries());\n      cloned.forEach(_ref2 => {\n        let [observer, numTimesAdded] = _ref2;\n        for (let i = 0; i < numTimesAdded; i++) {\n          observer.apply(observer, [event, ...args]);\n        }\n      });\n    }\n  }\n}\n\nfunction defer() {\n  let res;\n  let rej;\n  const promise = new Promise((resolve, reject) => {\n    res = resolve;\n    rej = reject;\n  });\n  promise.resolve = res;\n  promise.reject = rej;\n  return promise;\n}\nfunction makeString(object) {\n  if (object == null) return '';\n  return '' + object;\n}\nfunction copy(a, s, t) {\n  a.forEach(m => {\n    if (s[m]) t[m] = s[m];\n  });\n}\nconst lastOfPathSeparatorRegExp = /###/g;\nfunction getLastOfPath(object, path, Empty) {\n  function cleanKey(key) {\n    return key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\n  }\n  function canNotTraverseDeeper() {\n    return !object || typeof object === 'string';\n  }\n  const stack = typeof path !== 'string' ? path : path.split('.');\n  let stackIndex = 0;\n  while (stackIndex < stack.length - 1) {\n    if (canNotTraverseDeeper()) return {};\n    const key = cleanKey(stack[stackIndex]);\n    if (!object[key] && Empty) object[key] = new Empty();\n    if (Object.prototype.hasOwnProperty.call(object, key)) {\n      object = object[key];\n    } else {\n      object = {};\n    }\n    ++stackIndex;\n  }\n  if (canNotTraverseDeeper()) return {};\n  return {\n    obj: object,\n    k: cleanKey(stack[stackIndex])\n  };\n}\nfunction setPath(object, path, newValue) {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path, Object);\n  if (obj !== undefined || path.length === 1) {\n    obj[k] = newValue;\n    return;\n  }\n  let e = path[path.length - 1];\n  let p = path.slice(0, path.length - 1);\n  let last = getLastOfPath(object, p, Object);\n  while (last.obj === undefined && p.length) {\n    e = `${p[p.length - 1]}.${e}`;\n    p = p.slice(0, p.length - 1);\n    last = getLastOfPath(object, p, Object);\n    if (last && last.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n      last.obj = undefined;\n    }\n  }\n  last.obj[`${last.k}.${e}`] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path, Object);\n  obj[k] = obj[k] || [];\n  obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path);\n  if (!obj) return undefined;\n  return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n  const value = getPath(data, key);\n  if (value !== undefined) {\n    return value;\n  }\n  return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n  for (const prop in source) {\n    if (prop !== '__proto__' && prop !== 'constructor') {\n      if (prop in target) {\n        if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n          if (overwrite) target[prop] = source[prop];\n        } else {\n          deepExtend(target[prop], source[prop], overwrite);\n        }\n      } else {\n        target[prop] = source[prop];\n      }\n    }\n  }\n  return target;\n}\nfunction regexEscape(str) {\n  return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;'\n};\nfunction escape(data) {\n  if (typeof data === 'string') {\n    return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n  }\n  return data;\n}\nclass RegExpCache {\n  constructor(capacity) {\n    this.capacity = capacity;\n    this.regExpMap = new Map();\n    this.regExpQueue = [];\n  }\n  getRegExp(pattern) {\n    const regExpFromCache = this.regExpMap.get(pattern);\n    if (regExpFromCache !== undefined) {\n      return regExpFromCache;\n    }\n    const regExpNew = new RegExp(pattern);\n    if (this.regExpQueue.length === this.capacity) {\n      this.regExpMap.delete(this.regExpQueue.shift());\n    }\n    this.regExpMap.set(pattern, regExpNew);\n    this.regExpQueue.push(pattern);\n    return regExpNew;\n  }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n  nsSeparator = nsSeparator || '';\n  keySeparator = keySeparator || '';\n  const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n  if (possibleChars.length === 0) return true;\n  const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n  let matched = !r.test(key);\n  if (!matched) {\n    const ki = key.indexOf(keySeparator);\n    if (ki > 0 && !r.test(key.substring(0, ki))) {\n      matched = true;\n    }\n  }\n  return matched;\n}\nfunction deepFind(obj, path) {\n  let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n  if (!obj) return undefined;\n  if (obj[path]) return obj[path];\n  const tokens = path.split(keySeparator);\n  let current = obj;\n  for (let i = 0; i < tokens.length;) {\n    if (!current || typeof current !== 'object') {\n      return undefined;\n    }\n    let next;\n    let nextPath = '';\n    for (let j = i; j < tokens.length; ++j) {\n      if (j !== i) {\n        nextPath += keySeparator;\n      }\n      nextPath += tokens[j];\n      next = current[nextPath];\n      if (next !== undefined) {\n        if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n          continue;\n        }\n        i += j - i + 1;\n        break;\n      }\n    }\n    current = next;\n  }\n  return current;\n}\nfunction getCleanedCode(code) {\n  if (code && code.indexOf('_') > 0) return code.replace('_', '-');\n  return code;\n}\n\nclass ResourceStore extends EventEmitter {\n  constructor(data) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      ns: ['translation'],\n      defaultNS: 'translation'\n    };\n    super();\n    this.data = data || {};\n    this.options = options;\n    if (this.options.keySeparator === undefined) {\n      this.options.keySeparator = '.';\n    }\n    if (this.options.ignoreJSONStructure === undefined) {\n      this.options.ignoreJSONStructure = true;\n    }\n  }\n  addNamespaces(ns) {\n    if (this.options.ns.indexOf(ns) < 0) {\n      this.options.ns.push(ns);\n    }\n  }\n  removeNamespaces(ns) {\n    const index = this.options.ns.indexOf(ns);\n    if (index > -1) {\n      this.options.ns.splice(index, 1);\n    }\n  }\n  getResource(lng, ns, key) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n    let path;\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n    } else {\n      path = [lng, ns];\n      if (key) {\n        if (Array.isArray(key)) {\n          path.push(...key);\n        } else if (typeof key === 'string' && keySeparator) {\n          path.push(...key.split(keySeparator));\n        } else {\n          path.push(key);\n        }\n      }\n    }\n    const result = getPath(this.data, path);\n    if (!result && !ns && !key && lng.indexOf('.') > -1) {\n      lng = path[0];\n      ns = path[1];\n      key = path.slice(2).join('.');\n    }\n    if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n    return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n  }\n  addResource(lng, ns, key, value) {\n    let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n      silent: false\n    };\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    let path = [lng, ns];\n    if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n      value = ns;\n      ns = path[1];\n    }\n    this.addNamespaces(ns);\n    setPath(this.data, path, value);\n    if (!options.silent) this.emit('added', lng, ns, key, value);\n  }\n  addResources(lng, ns, resources) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n      silent: false\n    };\n    for (const m in resources) {\n      if (typeof resources[m] === 'string' || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n        silent: true\n      });\n    }\n    if (!options.silent) this.emit('added', lng, ns, resources);\n  }\n  addResourceBundle(lng, ns, resources, deep, overwrite) {\n    let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n      silent: false,\n      skipCopy: false\n    };\n    let path = [lng, ns];\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n      deep = resources;\n      resources = ns;\n      ns = path[1];\n    }\n    this.addNamespaces(ns);\n    let pack = getPath(this.data, path) || {};\n    if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n    if (deep) {\n      deepExtend(pack, resources, overwrite);\n    } else {\n      pack = {\n        ...pack,\n        ...resources\n      };\n    }\n    setPath(this.data, path, pack);\n    if (!options.silent) this.emit('added', lng, ns, resources);\n  }\n  removeResourceBundle(lng, ns) {\n    if (this.hasResourceBundle(lng, ns)) {\n      delete this.data[lng][ns];\n    }\n    this.removeNamespaces(ns);\n    this.emit('removed', lng, ns);\n  }\n  hasResourceBundle(lng, ns) {\n    return this.getResource(lng, ns) !== undefined;\n  }\n  getResourceBundle(lng, ns) {\n    if (!ns) ns = this.options.defaultNS;\n    if (this.options.compatibilityAPI === 'v1') return {\n      ...{},\n      ...this.getResource(lng, ns)\n    };\n    return this.getResource(lng, ns);\n  }\n  getDataByLanguage(lng) {\n    return this.data[lng];\n  }\n  hasLanguageSomeTranslations(lng) {\n    const data = this.getDataByLanguage(lng);\n    const n = data && Object.keys(data) || [];\n    return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n  }\n  toJSON() {\n    return this.data;\n  }\n}\n\nvar postProcessor = {\n  processors: {},\n  addPostProcessor(module) {\n    this.processors[module.name] = module;\n  },\n  handle(processors, value, key, options, translator) {\n    processors.forEach(processor => {\n      if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);\n    });\n    return value;\n  }\n};\n\nconst checkedLoadedFor = {};\nclass Translator extends EventEmitter {\n  constructor(services) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    super();\n    copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n    this.options = options;\n    if (this.options.keySeparator === undefined) {\n      this.options.keySeparator = '.';\n    }\n    this.logger = baseLogger.create('translator');\n  }\n  changeLanguage(lng) {\n    if (lng) this.language = lng;\n  }\n  exists(key) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      interpolation: {}\n    };\n    if (key === undefined || key === null) {\n      return false;\n    }\n    const resolved = this.resolve(key, options);\n    return resolved && resolved.res !== undefined;\n  }\n  extractFromKey(key, options) {\n    let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n    if (nsSeparator === undefined) nsSeparator = ':';\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    let namespaces = options.ns || this.options.defaultNS || [];\n    const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n    const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n    if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n      const m = key.match(this.interpolator.nestingRegexp);\n      if (m && m.length > 0) {\n        return {\n          key,\n          namespaces\n        };\n      }\n      const parts = key.split(nsSeparator);\n      if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n      key = parts.join(keySeparator);\n    }\n    if (typeof namespaces === 'string') namespaces = [namespaces];\n    return {\n      key,\n      namespaces\n    };\n  }\n  translate(keys, options, lastKey) {\n    if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n      options = this.options.overloadTranslationOptionHandler(arguments);\n    }\n    if (typeof options === 'object') options = {\n      ...options\n    };\n    if (!options) options = {};\n    if (keys === undefined || keys === null) return '';\n    if (!Array.isArray(keys)) keys = [String(keys)];\n    const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    const {\n      key,\n      namespaces\n    } = this.extractFromKey(keys[keys.length - 1], options);\n    const namespace = namespaces[namespaces.length - 1];\n    const lng = options.lng || this.language;\n    const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n    if (lng && lng.toLowerCase() === 'cimode') {\n      if (appendNamespaceToCIMode) {\n        const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n        if (returnDetails) {\n          return {\n            res: `${namespace}${nsSeparator}${key}`,\n            usedKey: key,\n            exactUsedKey: key,\n            usedLng: lng,\n            usedNS: namespace,\n            usedParams: this.getUsedParamsDetails(options)\n          };\n        }\n        return `${namespace}${nsSeparator}${key}`;\n      }\n      if (returnDetails) {\n        return {\n          res: key,\n          usedKey: key,\n          exactUsedKey: key,\n          usedLng: lng,\n          usedNS: namespace,\n          usedParams: this.getUsedParamsDetails(options)\n        };\n      }\n      return key;\n    }\n    const resolved = this.resolve(keys, options);\n    let res = resolved && resolved.res;\n    const resUsedKey = resolved && resolved.usedKey || key;\n    const resExactUsedKey = resolved && resolved.exactUsedKey || key;\n    const resType = Object.prototype.toString.apply(res);\n    const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n    const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n    const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n    const handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n    if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && Array.isArray(res))) {\n      if (!options.returnObjects && !this.options.returnObjects) {\n        if (!this.options.returnedObjectHandler) {\n          this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n        }\n        const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, {\n          ...options,\n          ns: namespaces\n        }) : `key '${key} (${this.language})' returned an object instead of string.`;\n        if (returnDetails) {\n          resolved.res = r;\n          resolved.usedParams = this.getUsedParamsDetails(options);\n          return resolved;\n        }\n        return r;\n      }\n      if (keySeparator) {\n        const resTypeIsArray = Array.isArray(res);\n        const copy = resTypeIsArray ? [] : {};\n        const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n        for (const m in res) {\n          if (Object.prototype.hasOwnProperty.call(res, m)) {\n            const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n            copy[m] = this.translate(deepKey, {\n              ...options,\n              ...{\n                joinArrays: false,\n                ns: namespaces\n              }\n            });\n            if (copy[m] === deepKey) copy[m] = res[m];\n          }\n        }\n        res = copy;\n      }\n    } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && Array.isArray(res)) {\n      res = res.join(joinArrays);\n      if (res) res = this.extendTranslation(res, keys, options, lastKey);\n    } else {\n      let usedDefault = false;\n      let usedKey = false;\n      const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n      const hasDefaultValue = Translator.hasDefaultValue(options);\n      const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n      const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n        ordinal: false\n      }) : '';\n      const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n      const defaultValue = needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] || options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n      if (!this.isValidLookup(res) && hasDefaultValue) {\n        usedDefault = true;\n        res = defaultValue;\n      }\n      if (!this.isValidLookup(res)) {\n        usedKey = true;\n        res = key;\n      }\n      const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n      const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n      const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n      if (usedKey || usedDefault || updateMissing) {\n        this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n        if (keySeparator) {\n          const fk = this.resolve(key, {\n            ...options,\n            keySeparator: false\n          });\n          if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n        }\n        let lngs = [];\n        const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n        if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n          for (let i = 0; i < fallbackLngs.length; i++) {\n            lngs.push(fallbackLngs[i]);\n          }\n        } else if (this.options.saveMissingTo === 'all') {\n          lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n        } else {\n          lngs.push(options.lng || this.language);\n        }\n        const send = (l, k, specificDefaultValue) => {\n          const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n          if (this.options.missingKeyHandler) {\n            this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n          } else if (this.backendConnector && this.backendConnector.saveMissing) {\n            this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n          }\n          this.emit('missingKey', l, namespace, k, res);\n        };\n        if (this.options.saveMissing) {\n          if (this.options.saveMissingPlurals && needsPluralHandling) {\n            lngs.forEach(language => {\n              const suffixes = this.pluralResolver.getSuffixes(language, options);\n              if (needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n                suffixes.push(`${this.options.pluralSeparator}zero`);\n              }\n              suffixes.forEach(suffix => {\n                send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n              });\n            });\n          } else {\n            send(lngs, key, defaultValue);\n          }\n        }\n      }\n      res = this.extendTranslation(res, keys, options, resolved, lastKey);\n      if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n      if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n        if (this.options.compatibilityAPI !== 'v1') {\n          res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n        } else {\n          res = this.options.parseMissingKeyHandler(res);\n        }\n      }\n    }\n    if (returnDetails) {\n      resolved.res = res;\n      resolved.usedParams = this.getUsedParamsDetails(options);\n      return resolved;\n    }\n    return res;\n  }\n  extendTranslation(res, key, options, resolved, lastKey) {\n    var _this = this;\n    if (this.i18nFormat && this.i18nFormat.parse) {\n      res = this.i18nFormat.parse(res, {\n        ...this.options.interpolation.defaultVariables,\n        ...options\n      }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n        resolved\n      });\n    } else if (!options.skipInterpolation) {\n      if (options.interpolation) this.interpolator.init({\n        ...options,\n        ...{\n          interpolation: {\n            ...this.options.interpolation,\n            ...options.interpolation\n          }\n        }\n      });\n      const skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n      let nestBef;\n      if (skipOnVariables) {\n        const nb = res.match(this.interpolator.nestingRegexp);\n        nestBef = nb && nb.length;\n      }\n      let data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n      if (this.options.interpolation.defaultVariables) data = {\n        ...this.options.interpolation.defaultVariables,\n        ...data\n      };\n      res = this.interpolator.interpolate(res, data, options.lng || this.language || resolved.usedLng, options);\n      if (skipOnVariables) {\n        const na = res.match(this.interpolator.nestingRegexp);\n        const nestAft = na && na.length;\n        if (nestBef < nestAft) options.nest = false;\n      }\n      if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = this.language || resolved.usedLng;\n      if (options.nest !== false) res = this.interpolator.nest(res, function () {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        if (lastKey && lastKey[0] === args[0] && !options.context) {\n          _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n          return null;\n        }\n        return _this.translate(...args, key);\n      }, options);\n      if (options.interpolation) this.interpolator.reset();\n    }\n    const postProcess = options.postProcess || this.options.postProcess;\n    const postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n    if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n      res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n        i18nResolved: {\n          ...resolved,\n          usedParams: this.getUsedParamsDetails(options)\n        },\n        ...options\n      } : options, this);\n    }\n    return res;\n  }\n  resolve(keys) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let found;\n    let usedKey;\n    let exactUsedKey;\n    let usedLng;\n    let usedNS;\n    if (typeof keys === 'string') keys = [keys];\n    keys.forEach(k => {\n      if (this.isValidLookup(found)) return;\n      const extracted = this.extractFromKey(k, options);\n      const key = extracted.key;\n      usedKey = key;\n      let namespaces = extracted.namespaces;\n      if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n      const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n      const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n      const needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n      const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n      namespaces.forEach(ns => {\n        if (this.isValidLookup(found)) return;\n        usedNS = ns;\n        if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {\n          checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n          this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n        }\n        codes.forEach(code => {\n          if (this.isValidLookup(found)) return;\n          usedLng = code;\n          const finalKeys = [key];\n          if (this.i18nFormat && this.i18nFormat.addLookupKeys) {\n            this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n          } else {\n            let pluralSuffix;\n            if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n            const zeroSuffix = `${this.options.pluralSeparator}zero`;\n            const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n            if (needsPluralHandling) {\n              finalKeys.push(key + pluralSuffix);\n              if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n                finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n              }\n              if (needsZeroSuffixLookup) {\n                finalKeys.push(key + zeroSuffix);\n              }\n            }\n            if (needsContextHandling) {\n              const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n              finalKeys.push(contextKey);\n              if (needsPluralHandling) {\n                finalKeys.push(contextKey + pluralSuffix);\n                if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n                  finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n                }\n                if (needsZeroSuffixLookup) {\n                  finalKeys.push(contextKey + zeroSuffix);\n                }\n              }\n            }\n          }\n          let possibleKey;\n          while (possibleKey = finalKeys.pop()) {\n            if (!this.isValidLookup(found)) {\n              exactUsedKey = possibleKey;\n              found = this.getResource(code, ns, possibleKey, options);\n            }\n          }\n        });\n      });\n    });\n    return {\n      res: found,\n      usedKey,\n      exactUsedKey,\n      usedLng,\n      usedNS\n    };\n  }\n  isValidLookup(res) {\n    return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n  }\n  getResource(code, ns, key) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n    return this.resourceStore.getResource(code, ns, key, options);\n  }\n  getUsedParamsDetails() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n    const useOptionsReplaceForData = options.replace && typeof options.replace !== 'string';\n    let data = useOptionsReplaceForData ? options.replace : options;\n    if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n      data.count = options.count;\n    }\n    if (this.options.interpolation.defaultVariables) {\n      data = {\n        ...this.options.interpolation.defaultVariables,\n        ...data\n      };\n    }\n    if (!useOptionsReplaceForData) {\n      data = {\n        ...data\n      };\n      for (const key of optionsKeys) {\n        delete data[key];\n      }\n    }\n    return data;\n  }\n  static hasDefaultValue(options) {\n    const prefix = 'defaultValue';\n    for (const option in options) {\n      if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n        return true;\n      }\n    }\n    return false;\n  }\n}\n\nfunction capitalize(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\nclass LanguageUtil {\n  constructor(options) {\n    this.options = options;\n    this.supportedLngs = this.options.supportedLngs || false;\n    this.logger = baseLogger.create('languageUtils');\n  }\n  getScriptPartFromCode(code) {\n    code = getCleanedCode(code);\n    if (!code || code.indexOf('-') < 0) return null;\n    const p = code.split('-');\n    if (p.length === 2) return null;\n    p.pop();\n    if (p[p.length - 1].toLowerCase() === 'x') return null;\n    return this.formatLanguageCode(p.join('-'));\n  }\n  getLanguagePartFromCode(code) {\n    code = getCleanedCode(code);\n    if (!code || code.indexOf('-') < 0) return code;\n    const p = code.split('-');\n    return this.formatLanguageCode(p[0]);\n  }\n  formatLanguageCode(code) {\n    if (typeof code === 'string' && code.indexOf('-') > -1) {\n      const specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n      let p = code.split('-');\n      if (this.options.lowerCaseLng) {\n        p = p.map(part => part.toLowerCase());\n      } else if (p.length === 2) {\n        p[0] = p[0].toLowerCase();\n        p[1] = p[1].toUpperCase();\n        if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n      } else if (p.length === 3) {\n        p[0] = p[0].toLowerCase();\n        if (p[1].length === 2) p[1] = p[1].toUpperCase();\n        if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n        if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n        if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n      }\n      return p.join('-');\n    }\n    return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n  }\n  isSupportedCode(code) {\n    if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n      code = this.getLanguagePartFromCode(code);\n    }\n    return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n  }\n  getBestMatchFromCodes(codes) {\n    if (!codes) return null;\n    let found;\n    codes.forEach(code => {\n      if (found) return;\n      const cleanedLng = this.formatLanguageCode(code);\n      if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n    });\n    if (!found && this.options.supportedLngs) {\n      codes.forEach(code => {\n        if (found) return;\n        const lngOnly = this.getLanguagePartFromCode(code);\n        if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n        found = this.options.supportedLngs.find(supportedLng => {\n          if (supportedLng === lngOnly) return supportedLng;\n          if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n          if (supportedLng.indexOf('-') > 0 && lngOnly.indexOf('-') < 0 && supportedLng.substring(0, supportedLng.indexOf('-')) === lngOnly) return supportedLng;\n          if (supportedLng.indexOf(lngOnly) === 0 && lngOnly.length > 1) return supportedLng;\n        });\n      });\n    }\n    if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n    return found;\n  }\n  getFallbackCodes(fallbacks, code) {\n    if (!fallbacks) return [];\n    if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n    if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n    if (Array.isArray(fallbacks)) return fallbacks;\n    if (!code) return fallbacks.default || [];\n    let found = fallbacks[code];\n    if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n    if (!found) found = fallbacks[this.formatLanguageCode(code)];\n    if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n    if (!found) found = fallbacks.default;\n    return found || [];\n  }\n  toResolveHierarchy(code, fallbackCode) {\n    const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n    const codes = [];\n    const addCode = c => {\n      if (!c) return;\n      if (this.isSupportedCode(c)) {\n        codes.push(c);\n      } else {\n        this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n      }\n    };\n    if (typeof code === 'string' && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n      if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n      if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n      if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n    } else if (typeof code === 'string') {\n      addCode(this.formatLanguageCode(code));\n    }\n    fallbackCodes.forEach(fc => {\n      if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n    });\n    return codes;\n  }\n}\n\nlet sets = [{\n  lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n  nr: [1, 2],\n  fc: 1\n}, {\n  lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n  nr: [1, 2],\n  fc: 2\n}, {\n  lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n  nr: [1],\n  fc: 3\n}, {\n  lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n  nr: [1, 2, 5],\n  fc: 4\n}, {\n  lngs: ['ar'],\n  nr: [0, 1, 2, 3, 11, 100],\n  fc: 5\n}, {\n  lngs: ['cs', 'sk'],\n  nr: [1, 2, 5],\n  fc: 6\n}, {\n  lngs: ['csb', 'pl'],\n  nr: [1, 2, 5],\n  fc: 7\n}, {\n  lngs: ['cy'],\n  nr: [1, 2, 3, 8],\n  fc: 8\n}, {\n  lngs: ['fr'],\n  nr: [1, 2],\n  fc: 9\n}, {\n  lngs: ['ga'],\n  nr: [1, 2, 3, 7, 11],\n  fc: 10\n}, {\n  lngs: ['gd'],\n  nr: [1, 2, 3, 20],\n  fc: 11\n}, {\n  lngs: ['is'],\n  nr: [1, 2],\n  fc: 12\n}, {\n  lngs: ['jv'],\n  nr: [0, 1],\n  fc: 13\n}, {\n  lngs: ['kw'],\n  nr: [1, 2, 3, 4],\n  fc: 14\n}, {\n  lngs: ['lt'],\n  nr: [1, 2, 10],\n  fc: 15\n}, {\n  lngs: ['lv'],\n  nr: [1, 2, 0],\n  fc: 16\n}, {\n  lngs: ['mk'],\n  nr: [1, 2],\n  fc: 17\n}, {\n  lngs: ['mnk'],\n  nr: [0, 1, 2],\n  fc: 18\n}, {\n  lngs: ['mt'],\n  nr: [1, 2, 11, 20],\n  fc: 19\n}, {\n  lngs: ['or'],\n  nr: [2, 1],\n  fc: 2\n}, {\n  lngs: ['ro'],\n  nr: [1, 2, 20],\n  fc: 20\n}, {\n  lngs: ['sl'],\n  nr: [5, 1, 2, 3],\n  fc: 21\n}, {\n  lngs: ['he', 'iw'],\n  nr: [1, 2, 20, 21],\n  fc: 22\n}];\nlet _rulesPluralsTypes = {\n  1: function (n) {\n    return Number(n > 1);\n  },\n  2: function (n) {\n    return Number(n != 1);\n  },\n  3: function (n) {\n    return 0;\n  },\n  4: function (n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  5: function (n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n  },\n  6: function (n) {\n    return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n  },\n  7: function (n) {\n    return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  8: function (n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n  },\n  9: function (n) {\n    return Number(n >= 2);\n  },\n  10: function (n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n  },\n  11: function (n) {\n    return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n  },\n  12: function (n) {\n    return Number(n % 10 != 1 || n % 100 == 11);\n  },\n  13: function (n) {\n    return Number(n !== 0);\n  },\n  14: function (n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n  },\n  15: function (n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  16: function (n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n  },\n  17: function (n) {\n    return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n  },\n  18: function (n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n  },\n  19: function (n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n  },\n  20: function (n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n  },\n  21: function (n) {\n    return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n  },\n  22: function (n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n  }\n};\nconst nonIntlVersions = ['v1', 'v2', 'v3'];\nconst intlVersions = ['v4'];\nconst suffixesOrder = {\n  zero: 0,\n  one: 1,\n  two: 2,\n  few: 3,\n  many: 4,\n  other: 5\n};\nfunction createRules() {\n  const rules = {};\n  sets.forEach(set => {\n    set.lngs.forEach(l => {\n      rules[l] = {\n        numbers: set.nr,\n        plurals: _rulesPluralsTypes[set.fc]\n      };\n    });\n  });\n  return rules;\n}\nclass PluralResolver {\n  constructor(languageUtils) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.languageUtils = languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('pluralResolver');\n    if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n      this.options.compatibilityJSON = 'v3';\n      this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n    }\n    this.rules = createRules();\n  }\n  addRule(lng, obj) {\n    this.rules[lng] = obj;\n  }\n  getRule(code) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    if (this.shouldUseIntlApi()) {\n      try {\n        return new Intl.PluralRules(getCleanedCode(code === 'dev' ? 'en' : code), {\n          type: options.ordinal ? 'ordinal' : 'cardinal'\n        });\n      } catch (err) {\n        return;\n      }\n    }\n    return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n  }\n  needsPlural(code) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const rule = this.getRule(code, options);\n    if (this.shouldUseIntlApi()) {\n      return rule && rule.resolvedOptions().pluralCategories.length > 1;\n    }\n    return rule && rule.numbers.length > 1;\n  }\n  getPluralFormsOfKey(code, key) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n  }\n  getSuffixes(code) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const rule = this.getRule(code, options);\n    if (!rule) {\n      return [];\n    }\n    if (this.shouldUseIntlApi()) {\n      return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n    }\n    return rule.numbers.map(number => this.getSuffix(code, number, options));\n  }\n  getSuffix(code, count) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    const rule = this.getRule(code, options);\n    if (rule) {\n      if (this.shouldUseIntlApi()) {\n        return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n      }\n      return this.getSuffixRetroCompatible(rule, count);\n    }\n    this.logger.warn(`no plural rule found for: ${code}`);\n    return '';\n  }\n  getSuffixRetroCompatible(rule, count) {\n    const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n    let suffix = rule.numbers[idx];\n    if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n      if (suffix === 2) {\n        suffix = 'plural';\n      } else if (suffix === 1) {\n        suffix = '';\n      }\n    }\n    const returnSuffix = () => this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();\n    if (this.options.compatibilityJSON === 'v1') {\n      if (suffix === 1) return '';\n      if (typeof suffix === 'number') return `_plural_${suffix.toString()}`;\n      return returnSuffix();\n    } else if (this.options.compatibilityJSON === 'v2') {\n      return returnSuffix();\n    } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n      return returnSuffix();\n    }\n    return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n  }\n  shouldUseIntlApi() {\n    return !nonIntlVersions.includes(this.options.compatibilityJSON);\n  }\n}\n\nfunction deepFindWithDefaults(data, defaultData, key) {\n  let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n  let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n  let path = getPathWithDefaults(data, defaultData, key);\n  if (!path && ignoreJSONStructure && typeof key === 'string') {\n    path = deepFind(data, key, keySeparator);\n    if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n  }\n  return path;\n}\nclass Interpolator {\n  constructor() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.logger = baseLogger.create('interpolator');\n    this.options = options;\n    this.format = options.interpolation && options.interpolation.format || (value => value);\n    this.init(options);\n  }\n  init() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (!options.interpolation) options.interpolation = {\n      escapeValue: true\n    };\n    const {\n      escape: escape$1,\n      escapeValue,\n      useRawValueToEscape,\n      prefix,\n      prefixEscaped,\n      suffix,\n      suffixEscaped,\n      formatSeparator,\n      unescapeSuffix,\n      unescapePrefix,\n      nestingPrefix,\n      nestingPrefixEscaped,\n      nestingSuffix,\n      nestingSuffixEscaped,\n      nestingOptionsSeparator,\n      maxReplaces,\n      alwaysFormat\n    } = options.interpolation;\n    this.escape = escape$1 !== undefined ? escape$1 : escape;\n    this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n    this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n    this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n    this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n    this.formatSeparator = formatSeparator || ',';\n    this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix || '-';\n    this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix || '';\n    this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n    this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n    this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n    this.maxReplaces = maxReplaces || 1000;\n    this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n    this.resetRegExp();\n  }\n  reset() {\n    if (this.options) this.init(this.options);\n  }\n  resetRegExp() {\n    const getOrResetRegExp = (existingRegExp, pattern) => {\n      if (existingRegExp && existingRegExp.source === pattern) {\n        existingRegExp.lastIndex = 0;\n        return existingRegExp;\n      }\n      return new RegExp(pattern, 'g');\n    };\n    this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n    this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n    this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}(.+?)${this.nestingSuffix}`);\n  }\n  interpolate(str, data, lng, options) {\n    let match;\n    let value;\n    let replaces;\n    const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n    function regexSafe(val) {\n      return val.replace(/\\$/g, '$$$$');\n    }\n    const handleFormat = key => {\n      if (key.indexOf(this.formatSeparator) < 0) {\n        const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n        return this.alwaysFormat ? this.format(path, undefined, lng, {\n          ...options,\n          ...data,\n          interpolationkey: key\n        }) : path;\n      }\n      const p = key.split(this.formatSeparator);\n      const k = p.shift().trim();\n      const f = p.join(this.formatSeparator).trim();\n      return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n        ...options,\n        ...data,\n        interpolationkey: k\n      });\n    };\n    this.resetRegExp();\n    const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n    const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n    const todos = [{\n      regex: this.regexpUnescape,\n      safeValue: val => regexSafe(val)\n    }, {\n      regex: this.regexp,\n      safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n    }];\n    todos.forEach(todo => {\n      replaces = 0;\n      while (match = todo.regex.exec(str)) {\n        const matchedVar = match[1].trim();\n        value = handleFormat(matchedVar);\n        if (value === undefined) {\n          if (typeof missingInterpolationHandler === 'function') {\n            const temp = missingInterpolationHandler(str, match, options);\n            value = typeof temp === 'string' ? temp : '';\n          } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n            value = '';\n          } else if (skipOnVariables) {\n            value = match[0];\n            continue;\n          } else {\n            this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n            value = '';\n          }\n        } else if (typeof value !== 'string' && !this.useRawValueToEscape) {\n          value = makeString(value);\n        }\n        const safeValue = todo.safeValue(value);\n        str = str.replace(match[0], safeValue);\n        if (skipOnVariables) {\n          todo.regex.lastIndex += value.length;\n          todo.regex.lastIndex -= match[0].length;\n        } else {\n          todo.regex.lastIndex = 0;\n        }\n        replaces++;\n        if (replaces >= this.maxReplaces) {\n          break;\n        }\n      }\n    });\n    return str;\n  }\n  nest(str, fc) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    let match;\n    let value;\n    let clonedOptions;\n    function handleHasOptions(key, inheritedOptions) {\n      const sep = this.nestingOptionsSeparator;\n      if (key.indexOf(sep) < 0) return key;\n      const c = key.split(new RegExp(`${sep}[ ]*{`));\n      let optionsString = `{${c[1]}`;\n      key = c[0];\n      optionsString = this.interpolate(optionsString, clonedOptions);\n      const matchedSingleQuotes = optionsString.match(/'/g);\n      const matchedDoubleQuotes = optionsString.match(/\"/g);\n      if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n        optionsString = optionsString.replace(/'/g, '\"');\n      }\n      try {\n        clonedOptions = JSON.parse(optionsString);\n        if (inheritedOptions) clonedOptions = {\n          ...inheritedOptions,\n          ...clonedOptions\n        };\n      } catch (e) {\n        this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n        return `${key}${sep}${optionsString}`;\n      }\n      if (clonedOptions.defaultValue && clonedOptions.defaultValue.indexOf(this.prefix) > -1) delete clonedOptions.defaultValue;\n      return key;\n    }\n    while (match = this.nestingRegexp.exec(str)) {\n      let formatters = [];\n      clonedOptions = {\n        ...options\n      };\n      clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n      clonedOptions.applyPostProcessor = false;\n      delete clonedOptions.defaultValue;\n      let doReduce = false;\n      if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n        const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n        match[1] = r.shift();\n        formatters = r;\n        doReduce = true;\n      }\n      value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n      if (value && match[0] === str && typeof value !== 'string') return value;\n      if (typeof value !== 'string') value = makeString(value);\n      if (!value) {\n        this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n        value = '';\n      }\n      if (doReduce) {\n        value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n          ...options,\n          interpolationkey: match[1].trim()\n        }), value.trim());\n      }\n      str = str.replace(match[0], value);\n      this.regexp.lastIndex = 0;\n    }\n    return str;\n  }\n}\n\nfunction parseFormatStr(formatStr) {\n  let formatName = formatStr.toLowerCase().trim();\n  const formatOptions = {};\n  if (formatStr.indexOf('(') > -1) {\n    const p = formatStr.split('(');\n    formatName = p[0].toLowerCase().trim();\n    const optStr = p[1].substring(0, p[1].length - 1);\n    if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n    } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.range) formatOptions.range = optStr.trim();\n    } else {\n      const opts = optStr.split(';');\n      opts.forEach(opt => {\n        if (opt) {\n          const [key, ...rest] = opt.split(':');\n          const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n          const trimmedKey = key.trim();\n          if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n          if (val === 'false') formatOptions[trimmedKey] = false;\n          if (val === 'true') formatOptions[trimmedKey] = true;\n          if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n        }\n      });\n    }\n  }\n  return {\n    formatName,\n    formatOptions\n  };\n}\nfunction createCachedFormatter(fn) {\n  const cache = {};\n  return function invokeFormatter(val, lng, options) {\n    const key = lng + JSON.stringify(options);\n    let formatter = cache[key];\n    if (!formatter) {\n      formatter = fn(getCleanedCode(lng), options);\n      cache[key] = formatter;\n    }\n    return formatter(val);\n  };\n}\nclass Formatter {\n  constructor() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.logger = baseLogger.create('formatter');\n    this.options = options;\n    this.formats = {\n      number: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.NumberFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      }),\n      currency: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.NumberFormat(lng, {\n          ...opt,\n          style: 'currency'\n        });\n        return val => formatter.format(val);\n      }),\n      datetime: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.DateTimeFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      }),\n      relativetime: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.RelativeTimeFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val, opt.range || 'day');\n      }),\n      list: createCachedFormatter((lng, opt) => {\n        const formatter = new Intl.ListFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      })\n    };\n    this.init(options);\n  }\n  init(services) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      interpolation: {}\n    };\n    const iOpts = options.interpolation;\n    this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n  }\n  add(name, fc) {\n    this.formats[name.toLowerCase().trim()] = fc;\n  }\n  addCached(name, fc) {\n    this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n  }\n  format(value, format, lng) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    const formats = format.split(this.formatSeparator);\n    const result = formats.reduce((mem, f) => {\n      const {\n        formatName,\n        formatOptions\n      } = parseFormatStr(f);\n      if (this.formats[formatName]) {\n        let formatted = mem;\n        try {\n          const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n          const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n          formatted = this.formats[formatName](mem, l, {\n            ...formatOptions,\n            ...options,\n            ...valOptions\n          });\n        } catch (error) {\n          this.logger.warn(error);\n        }\n        return formatted;\n      } else {\n        this.logger.warn(`there was no format function for ${formatName}`);\n      }\n      return mem;\n    }, value);\n    return result;\n  }\n}\n\nfunction removePending(q, name) {\n  if (q.pending[name] !== undefined) {\n    delete q.pending[name];\n    q.pendingCount--;\n  }\n}\nclass Connector extends EventEmitter {\n  constructor(backend, store, services) {\n    let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    super();\n    this.backend = backend;\n    this.store = store;\n    this.services = services;\n    this.languageUtils = services.languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('backendConnector');\n    this.waitingReads = [];\n    this.maxParallelReads = options.maxParallelReads || 10;\n    this.readingCalls = 0;\n    this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n    this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n    this.state = {};\n    this.queue = [];\n    if (this.backend && this.backend.init) {\n      this.backend.init(services, options.backend, options);\n    }\n  }\n  queueLoad(languages, namespaces, options, callback) {\n    const toLoad = {};\n    const pending = {};\n    const toLoadLanguages = {};\n    const toLoadNamespaces = {};\n    languages.forEach(lng => {\n      let hasAllNamespaces = true;\n      namespaces.forEach(ns => {\n        const name = `${lng}|${ns}`;\n        if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n          this.state[name] = 2;\n        } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n          if (pending[name] === undefined) pending[name] = true;\n        } else {\n          this.state[name] = 1;\n          hasAllNamespaces = false;\n          if (pending[name] === undefined) pending[name] = true;\n          if (toLoad[name] === undefined) toLoad[name] = true;\n          if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n        }\n      });\n      if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n    });\n    if (Object.keys(toLoad).length || Object.keys(pending).length) {\n      this.queue.push({\n        pending,\n        pendingCount: Object.keys(pending).length,\n        loaded: {},\n        errors: [],\n        callback\n      });\n    }\n    return {\n      toLoad: Object.keys(toLoad),\n      pending: Object.keys(pending),\n      toLoadLanguages: Object.keys(toLoadLanguages),\n      toLoadNamespaces: Object.keys(toLoadNamespaces)\n    };\n  }\n  loaded(name, err, data) {\n    const s = name.split('|');\n    const lng = s[0];\n    const ns = s[1];\n    if (err) this.emit('failedLoading', lng, ns, err);\n    if (data) {\n      this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n        skipCopy: true\n      });\n    }\n    this.state[name] = err ? -1 : 2;\n    const loaded = {};\n    this.queue.forEach(q => {\n      pushPath(q.loaded, [lng], ns);\n      removePending(q, name);\n      if (err) q.errors.push(err);\n      if (q.pendingCount === 0 && !q.done) {\n        Object.keys(q.loaded).forEach(l => {\n          if (!loaded[l]) loaded[l] = {};\n          const loadedKeys = q.loaded[l];\n          if (loadedKeys.length) {\n            loadedKeys.forEach(n => {\n              if (loaded[l][n] === undefined) loaded[l][n] = true;\n            });\n          }\n        });\n        q.done = true;\n        if (q.errors.length) {\n          q.callback(q.errors);\n        } else {\n          q.callback();\n        }\n      }\n    });\n    this.emit('loaded', loaded);\n    this.queue = this.queue.filter(q => !q.done);\n  }\n  read(lng, ns, fcName) {\n    let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n    let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n    let callback = arguments.length > 5 ? arguments[5] : undefined;\n    if (!lng.length) return callback(null, {});\n    if (this.readingCalls >= this.maxParallelReads) {\n      this.waitingReads.push({\n        lng,\n        ns,\n        fcName,\n        tried,\n        wait,\n        callback\n      });\n      return;\n    }\n    this.readingCalls++;\n    const resolver = (err, data) => {\n      this.readingCalls--;\n      if (this.waitingReads.length > 0) {\n        const next = this.waitingReads.shift();\n        this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n      }\n      if (err && data && tried < this.maxRetries) {\n        setTimeout(() => {\n          this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n        }, wait);\n        return;\n      }\n      callback(err, data);\n    };\n    const fc = this.backend[fcName].bind(this.backend);\n    if (fc.length === 2) {\n      try {\n        const r = fc(lng, ns);\n        if (r && typeof r.then === 'function') {\n          r.then(data => resolver(null, data)).catch(resolver);\n        } else {\n          resolver(null, r);\n        }\n      } catch (err) {\n        resolver(err);\n      }\n      return;\n    }\n    return fc(lng, ns, resolver);\n  }\n  prepareLoading(languages, namespaces) {\n    let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    let callback = arguments.length > 3 ? arguments[3] : undefined;\n    if (!this.backend) {\n      this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n      return callback && callback();\n    }\n    if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n    if (typeof namespaces === 'string') namespaces = [namespaces];\n    const toLoad = this.queueLoad(languages, namespaces, options, callback);\n    if (!toLoad.toLoad.length) {\n      if (!toLoad.pending.length) callback();\n      return null;\n    }\n    toLoad.toLoad.forEach(name => {\n      this.loadOne(name);\n    });\n  }\n  load(languages, namespaces, callback) {\n    this.prepareLoading(languages, namespaces, {}, callback);\n  }\n  reload(languages, namespaces, callback) {\n    this.prepareLoading(languages, namespaces, {\n      reload: true\n    }, callback);\n  }\n  loadOne(name) {\n    let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n    const s = name.split('|');\n    const lng = s[0];\n    const ns = s[1];\n    this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n      if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n      if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n      this.loaded(name, err, data);\n    });\n  }\n  saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n    let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n    let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n    if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n      this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n      return;\n    }\n    if (key === undefined || key === null || key === '') return;\n    if (this.backend && this.backend.create) {\n      const opts = {\n        ...options,\n        isUpdate\n      };\n      const fc = this.backend.create.bind(this.backend);\n      if (fc.length < 6) {\n        try {\n          let r;\n          if (fc.length === 5) {\n            r = fc(languages, namespace, key, fallbackValue, opts);\n          } else {\n            r = fc(languages, namespace, key, fallbackValue);\n          }\n          if (r && typeof r.then === 'function') {\n            r.then(data => clb(null, data)).catch(clb);\n          } else {\n            clb(null, r);\n          }\n        } catch (err) {\n          clb(err);\n        }\n      } else {\n        fc(languages, namespace, key, fallbackValue, clb, opts);\n      }\n    }\n    if (!languages || !languages[0]) return;\n    this.store.addResource(languages[0], namespace, key, fallbackValue);\n  }\n}\n\nfunction get() {\n  return {\n    debug: false,\n    initImmediate: true,\n    ns: ['translation'],\n    defaultNS: ['translation'],\n    fallbackLng: ['dev'],\n    fallbackNS: false,\n    supportedLngs: false,\n    nonExplicitSupportedLngs: false,\n    load: 'all',\n    preload: false,\n    simplifyPluralSuffix: true,\n    keySeparator: '.',\n    nsSeparator: ':',\n    pluralSeparator: '_',\n    contextSeparator: '_',\n    partialBundledLanguages: false,\n    saveMissing: false,\n    updateMissing: false,\n    saveMissingTo: 'fallback',\n    saveMissingPlurals: true,\n    missingKeyHandler: false,\n    missingInterpolationHandler: false,\n    postProcess: false,\n    postProcessPassResolved: false,\n    returnNull: false,\n    returnEmptyString: true,\n    returnObjects: false,\n    joinArrays: false,\n    returnedObjectHandler: false,\n    parseMissingKeyHandler: false,\n    appendNamespaceToMissingKey: false,\n    appendNamespaceToCIMode: false,\n    overloadTranslationOptionHandler: function handle(args) {\n      let ret = {};\n      if (typeof args[1] === 'object') ret = args[1];\n      if (typeof args[1] === 'string') ret.defaultValue = args[1];\n      if (typeof args[2] === 'string') ret.tDescription = args[2];\n      if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n        const options = args[3] || args[2];\n        Object.keys(options).forEach(key => {\n          ret[key] = options[key];\n        });\n      }\n      return ret;\n    },\n    interpolation: {\n      escapeValue: true,\n      format: value => value,\n      prefix: '{{',\n      suffix: '}}',\n      formatSeparator: ',',\n      unescapePrefix: '-',\n      nestingPrefix: '$t(',\n      nestingSuffix: ')',\n      nestingOptionsSeparator: ',',\n      maxReplaces: 1000,\n      skipOnVariables: true\n    }\n  };\n}\nfunction transformOptions(options) {\n  if (typeof options.ns === 'string') options.ns = [options.ns];\n  if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n  if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n  if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n    options.supportedLngs = options.supportedLngs.concat(['cimode']);\n  }\n  return options;\n}\n\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n  const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n  mems.forEach(mem => {\n    if (typeof inst[mem] === 'function') {\n      inst[mem] = inst[mem].bind(inst);\n    }\n  });\n}\nclass I18n extends EventEmitter {\n  constructor() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 ? arguments[1] : undefined;\n    super();\n    this.options = transformOptions(options);\n    this.services = {};\n    this.logger = baseLogger;\n    this.modules = {\n      external: []\n    };\n    bindMemberFunctions(this);\n    if (callback && !this.isInitialized && !options.isClone) {\n      if (!this.options.initImmediate) {\n        this.init(options, callback);\n        return this;\n      }\n      setTimeout(() => {\n        this.init(options, callback);\n      }, 0);\n    }\n  }\n  init() {\n    var _this = this;\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 ? arguments[1] : undefined;\n    this.isInitializing = true;\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n    if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n      if (typeof options.ns === 'string') {\n        options.defaultNS = options.ns;\n      } else if (options.ns.indexOf('translation') < 0) {\n        options.defaultNS = options.ns[0];\n      }\n    }\n    const defOpts = get();\n    this.options = {\n      ...defOpts,\n      ...this.options,\n      ...transformOptions(options)\n    };\n    if (this.options.compatibilityAPI !== 'v1') {\n      this.options.interpolation = {\n        ...defOpts.interpolation,\n        ...this.options.interpolation\n      };\n    }\n    if (options.keySeparator !== undefined) {\n      this.options.userDefinedKeySeparator = options.keySeparator;\n    }\n    if (options.nsSeparator !== undefined) {\n      this.options.userDefinedNsSeparator = options.nsSeparator;\n    }\n    function createClassOnDemand(ClassOrObject) {\n      if (!ClassOrObject) return null;\n      if (typeof ClassOrObject === 'function') return new ClassOrObject();\n      return ClassOrObject;\n    }\n    if (!this.options.isClone) {\n      if (this.modules.logger) {\n        baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n      } else {\n        baseLogger.init(null, this.options);\n      }\n      let formatter;\n      if (this.modules.formatter) {\n        formatter = this.modules.formatter;\n      } else if (typeof Intl !== 'undefined') {\n        formatter = Formatter;\n      }\n      const lu = new LanguageUtil(this.options);\n      this.store = new ResourceStore(this.options.resources, this.options);\n      const s = this.services;\n      s.logger = baseLogger;\n      s.resourceStore = this.store;\n      s.languageUtils = lu;\n      s.pluralResolver = new PluralResolver(lu, {\n        prepend: this.options.pluralSeparator,\n        compatibilityJSON: this.options.compatibilityJSON,\n        simplifyPluralSuffix: this.options.simplifyPluralSuffix\n      });\n      if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n        s.formatter = createClassOnDemand(formatter);\n        s.formatter.init(s, this.options);\n        this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n      }\n      s.interpolator = new Interpolator(this.options);\n      s.utils = {\n        hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n      };\n      s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n      s.backendConnector.on('*', function (event) {\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n        _this.emit(event, ...args);\n      });\n      if (this.modules.languageDetector) {\n        s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n        if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n      }\n      if (this.modules.i18nFormat) {\n        s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n        if (s.i18nFormat.init) s.i18nFormat.init(this);\n      }\n      this.translator = new Translator(this.services, this.options);\n      this.translator.on('*', function (event) {\n        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n          args[_key2 - 1] = arguments[_key2];\n        }\n        _this.emit(event, ...args);\n      });\n      this.modules.external.forEach(m => {\n        if (m.init) m.init(this);\n      });\n    }\n    this.format = this.options.interpolation.format;\n    if (!callback) callback = noop;\n    if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n      const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n      if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n    }\n    if (!this.services.languageDetector && !this.options.lng) {\n      this.logger.warn('init: no languageDetector is used and no lng is defined');\n    }\n    const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n    storeApi.forEach(fcName => {\n      this[fcName] = function () {\n        return _this.store[fcName](...arguments);\n      };\n    });\n    const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n    storeApiChained.forEach(fcName => {\n      this[fcName] = function () {\n        _this.store[fcName](...arguments);\n        return _this;\n      };\n    });\n    const deferred = defer();\n    const load = () => {\n      const finish = (err, t) => {\n        this.isInitializing = false;\n        if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n        this.isInitialized = true;\n        if (!this.options.isClone) this.logger.log('initialized', this.options);\n        this.emit('initialized', this.options);\n        deferred.resolve(t);\n        callback(err, t);\n      };\n      if (this.languages && this.options.compatibilityAPI !== 'v1' && !this.isInitialized) return finish(null, this.t.bind(this));\n      this.changeLanguage(this.options.lng, finish);\n    };\n    if (this.options.resources || !this.options.initImmediate) {\n      load();\n    } else {\n      setTimeout(load, 0);\n    }\n    return deferred;\n  }\n  loadResources(language) {\n    let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n    let usedCallback = callback;\n    const usedLng = typeof language === 'string' ? language : this.language;\n    if (typeof language === 'function') usedCallback = language;\n    if (!this.options.resources || this.options.partialBundledLanguages) {\n      if (usedLng && usedLng.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n      const toLoad = [];\n      const append = lng => {\n        if (!lng) return;\n        if (lng === 'cimode') return;\n        const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n        lngs.forEach(l => {\n          if (l === 'cimode') return;\n          if (toLoad.indexOf(l) < 0) toLoad.push(l);\n        });\n      };\n      if (!usedLng) {\n        const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n        fallbacks.forEach(l => append(l));\n      } else {\n        append(usedLng);\n      }\n      if (this.options.preload) {\n        this.options.preload.forEach(l => append(l));\n      }\n      this.services.backendConnector.load(toLoad, this.options.ns, e => {\n        if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n        usedCallback(e);\n      });\n    } else {\n      usedCallback(null);\n    }\n  }\n  reloadResources(lngs, ns, callback) {\n    const deferred = defer();\n    if (!lngs) lngs = this.languages;\n    if (!ns) ns = this.options.ns;\n    if (!callback) callback = noop;\n    this.services.backendConnector.reload(lngs, ns, err => {\n      deferred.resolve();\n      callback(err);\n    });\n    return deferred;\n  }\n  use(module) {\n    if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n    if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n    if (module.type === 'backend') {\n      this.modules.backend = module;\n    }\n    if (module.type === 'logger' || module.log && module.warn && module.error) {\n      this.modules.logger = module;\n    }\n    if (module.type === 'languageDetector') {\n      this.modules.languageDetector = module;\n    }\n    if (module.type === 'i18nFormat') {\n      this.modules.i18nFormat = module;\n    }\n    if (module.type === 'postProcessor') {\n      postProcessor.addPostProcessor(module);\n    }\n    if (module.type === 'formatter') {\n      this.modules.formatter = module;\n    }\n    if (module.type === '3rdParty') {\n      this.modules.external.push(module);\n    }\n    return this;\n  }\n  setResolvedLanguage(l) {\n    if (!l || !this.languages) return;\n    if (['cimode', 'dev'].indexOf(l) > -1) return;\n    for (let li = 0; li < this.languages.length; li++) {\n      const lngInLngs = this.languages[li];\n      if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n      if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n        this.resolvedLanguage = lngInLngs;\n        break;\n      }\n    }\n  }\n  changeLanguage(lng, callback) {\n    var _this2 = this;\n    this.isLanguageChangingTo = lng;\n    const deferred = defer();\n    this.emit('languageChanging', lng);\n    const setLngProps = l => {\n      this.language = l;\n      this.languages = this.services.languageUtils.toResolveHierarchy(l);\n      this.resolvedLanguage = undefined;\n      this.setResolvedLanguage(l);\n    };\n    const done = (err, l) => {\n      if (l) {\n        setLngProps(l);\n        this.translator.changeLanguage(l);\n        this.isLanguageChangingTo = undefined;\n        this.emit('languageChanged', l);\n        this.logger.log('languageChanged', l);\n      } else {\n        this.isLanguageChangingTo = undefined;\n      }\n      deferred.resolve(function () {\n        return _this2.t(...arguments);\n      });\n      if (callback) callback(err, function () {\n        return _this2.t(...arguments);\n      });\n    };\n    const setLng = lngs => {\n      if (!lng && !lngs && this.services.languageDetector) lngs = [];\n      const l = typeof lngs === 'string' ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n      if (l) {\n        if (!this.language) {\n          setLngProps(l);\n        }\n        if (!this.translator.language) this.translator.changeLanguage(l);\n        if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);\n      }\n      this.loadResources(l, err => {\n        done(err, l);\n      });\n    };\n    if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n      setLng(this.services.languageDetector.detect());\n    } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n      if (this.services.languageDetector.detect.length === 0) {\n        this.services.languageDetector.detect().then(setLng);\n      } else {\n        this.services.languageDetector.detect(setLng);\n      }\n    } else {\n      setLng(lng);\n    }\n    return deferred;\n  }\n  getFixedT(lng, ns, keyPrefix) {\n    var _this3 = this;\n    const fixedT = function (key, opts) {\n      let options;\n      if (typeof opts !== 'object') {\n        for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n          rest[_key3 - 2] = arguments[_key3];\n        }\n        options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n      } else {\n        options = {\n          ...opts\n        };\n      }\n      options.lng = options.lng || fixedT.lng;\n      options.lngs = options.lngs || fixedT.lngs;\n      options.ns = options.ns || fixedT.ns;\n      if (options.keyPrefix !== '') options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n      const keySeparator = _this3.options.keySeparator || '.';\n      let resultKey;\n      if (options.keyPrefix && Array.isArray(key)) {\n        resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n      } else {\n        resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n      }\n      return _this3.t(resultKey, options);\n    };\n    if (typeof lng === 'string') {\n      fixedT.lng = lng;\n    } else {\n      fixedT.lngs = lng;\n    }\n    fixedT.ns = ns;\n    fixedT.keyPrefix = keyPrefix;\n    return fixedT;\n  }\n  t() {\n    return this.translator && this.translator.translate(...arguments);\n  }\n  exists() {\n    return this.translator && this.translator.exists(...arguments);\n  }\n  setDefaultNamespace(ns) {\n    this.options.defaultNS = ns;\n  }\n  hasLoadedNamespace(ns) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    if (!this.isInitialized) {\n      this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n      return false;\n    }\n    if (!this.languages || !this.languages.length) {\n      this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n      return false;\n    }\n    const lng = options.lng || this.resolvedLanguage || this.languages[0];\n    const fallbackLng = this.options ? this.options.fallbackLng : false;\n    const lastLng = this.languages[this.languages.length - 1];\n    if (lng.toLowerCase() === 'cimode') return true;\n    const loadNotPending = (l, n) => {\n      const loadState = this.services.backendConnector.state[`${l}|${n}`];\n      return loadState === -1 || loadState === 2;\n    };\n    if (options.precheck) {\n      const preResult = options.precheck(this, loadNotPending);\n      if (preResult !== undefined) return preResult;\n    }\n    if (this.hasResourceBundle(lng, ns)) return true;\n    if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n    if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n    return false;\n  }\n  loadNamespaces(ns, callback) {\n    const deferred = defer();\n    if (!this.options.ns) {\n      if (callback) callback();\n      return Promise.resolve();\n    }\n    if (typeof ns === 'string') ns = [ns];\n    ns.forEach(n => {\n      if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n    });\n    this.loadResources(err => {\n      deferred.resolve();\n      if (callback) callback(err);\n    });\n    return deferred;\n  }\n  loadLanguages(lngs, callback) {\n    const deferred = defer();\n    if (typeof lngs === 'string') lngs = [lngs];\n    const preloaded = this.options.preload || [];\n    const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0 && this.services.languageUtils.isSupportedCode(lng));\n    if (!newLngs.length) {\n      if (callback) callback();\n      return Promise.resolve();\n    }\n    this.options.preload = preloaded.concat(newLngs);\n    this.loadResources(err => {\n      deferred.resolve();\n      if (callback) callback(err);\n    });\n    return deferred;\n  }\n  dir(lng) {\n    if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n    if (!lng) return 'rtl';\n    const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n    const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n    return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n  }\n  static createInstance() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 ? arguments[1] : undefined;\n    return new I18n(options, callback);\n  }\n  cloneInstance() {\n    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n    const forkResourceStore = options.forkResourceStore;\n    if (forkResourceStore) delete options.forkResourceStore;\n    const mergedOptions = {\n      ...this.options,\n      ...options,\n      ...{\n        isClone: true\n      }\n    };\n    const clone = new I18n(mergedOptions);\n    if (options.debug !== undefined || options.prefix !== undefined) {\n      clone.logger = clone.logger.clone(options);\n    }\n    const membersToCopy = ['store', 'services', 'language'];\n    membersToCopy.forEach(m => {\n      clone[m] = this[m];\n    });\n    clone.services = {\n      ...this.services\n    };\n    clone.services.utils = {\n      hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n    };\n    if (forkResourceStore) {\n      clone.store = new ResourceStore(this.store.data, mergedOptions);\n      clone.services.resourceStore = clone.store;\n    }\n    clone.translator = new Translator(clone.services, mergedOptions);\n    clone.translator.on('*', function (event) {\n      for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n        args[_key4 - 1] = arguments[_key4];\n      }\n      clone.emit(event, ...args);\n    });\n    clone.init(mergedOptions, callback);\n    clone.translator.options = mergedOptions;\n    clone.translator.backendConnector.services.utils = {\n      hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n    };\n    return clone;\n  }\n  toJSON() {\n    return {\n      options: this.options,\n      store: this.store,\n      language: this.language,\n      languages: this.languages,\n      resolvedLanguage: this.resolvedLanguage\n    };\n  }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","const {\n  slice,\n  forEach\n} = [];\nfunction defaults(obj) {\n  forEach.call(slice.call(arguments, 1), source => {\n    if (source) {\n      for (const prop in source) {\n        if (obj[prop] === undefined) obj[prop] = source[prop];\n      }\n    }\n  });\n  return obj;\n}\n\n// eslint-disable-next-line no-control-regex\nconst fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\nconst serializeCookie = (name, val, options) => {\n  const opt = options || {};\n  opt.path = opt.path || '/';\n  const value = encodeURIComponent(val);\n  let str = `${name}=${value}`;\n  if (opt.maxAge > 0) {\n    const maxAge = opt.maxAge - 0;\n    if (Number.isNaN(maxAge)) throw new Error('maxAge should be a Number');\n    str += `; Max-Age=${Math.floor(maxAge)}`;\n  }\n  if (opt.domain) {\n    if (!fieldContentRegExp.test(opt.domain)) {\n      throw new TypeError('option domain is invalid');\n    }\n    str += `; Domain=${opt.domain}`;\n  }\n  if (opt.path) {\n    if (!fieldContentRegExp.test(opt.path)) {\n      throw new TypeError('option path is invalid');\n    }\n    str += `; Path=${opt.path}`;\n  }\n  if (opt.expires) {\n    if (typeof opt.expires.toUTCString !== 'function') {\n      throw new TypeError('option expires is invalid');\n    }\n    str += `; Expires=${opt.expires.toUTCString()}`;\n  }\n  if (opt.httpOnly) str += '; HttpOnly';\n  if (opt.secure) str += '; Secure';\n  if (opt.sameSite) {\n    const sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n    switch (sameSite) {\n      case true:\n        str += '; SameSite=Strict';\n        break;\n      case 'lax':\n        str += '; SameSite=Lax';\n        break;\n      case 'strict':\n        str += '; SameSite=Strict';\n        break;\n      case 'none':\n        str += '; SameSite=None';\n        break;\n      default:\n        throw new TypeError('option sameSite is invalid');\n    }\n  }\n  return str;\n};\nconst cookie = {\n  create(name, value, minutes, domain) {\n    let cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n      path: '/',\n      sameSite: 'strict'\n    };\n    if (minutes) {\n      cookieOptions.expires = new Date();\n      cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n    }\n    if (domain) cookieOptions.domain = domain;\n    document.cookie = serializeCookie(name, encodeURIComponent(value), cookieOptions);\n  },\n  read(name) {\n    const nameEQ = `${name}=`;\n    const ca = document.cookie.split(';');\n    for (let i = 0; i < ca.length; i++) {\n      let c = ca[i];\n      while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n      if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n    }\n    return null;\n  },\n  remove(name) {\n    this.create(name, '', -1);\n  }\n};\nvar cookie$1 = {\n  name: 'cookie',\n  // Deconstruct the options object and extract the lookupCookie property\n  lookup(_ref) {\n    let {\n      lookupCookie\n    } = _ref;\n    if (lookupCookie && typeof document !== 'undefined') {\n      return cookie.read(lookupCookie) || undefined;\n    }\n    return undefined;\n  },\n  // Deconstruct the options object and extract the lookupCookie, cookieMinutes, cookieDomain, and cookieOptions properties\n  cacheUserLanguage(lng, _ref2) {\n    let {\n      lookupCookie,\n      cookieMinutes,\n      cookieDomain,\n      cookieOptions\n    } = _ref2;\n    if (lookupCookie && typeof document !== 'undefined') {\n      cookie.create(lookupCookie, lng, cookieMinutes, cookieDomain, cookieOptions);\n    }\n  }\n};\n\nvar querystring = {\n  name: 'querystring',\n  // Deconstruct the options object and extract the lookupQuerystring property\n  lookup(_ref) {\n    let {\n      lookupQuerystring\n    } = _ref;\n    let found;\n    if (typeof window !== 'undefined') {\n      let {\n        search\n      } = window.location;\n      if (!window.location.search && window.location.hash?.indexOf('?') > -1) {\n        search = window.location.hash.substring(window.location.hash.indexOf('?'));\n      }\n      const query = search.substring(1);\n      const params = query.split('&');\n      for (let i = 0; i < params.length; i++) {\n        const pos = params[i].indexOf('=');\n        if (pos > 0) {\n          const key = params[i].substring(0, pos);\n          if (key === lookupQuerystring) {\n            found = params[i].substring(pos + 1);\n          }\n        }\n      }\n    }\n    return found;\n  }\n};\n\nlet hasLocalStorageSupport = null;\nconst localStorageAvailable = () => {\n  if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n  try {\n    hasLocalStorageSupport = window !== 'undefined' && window.localStorage !== null;\n    const testKey = 'i18next.translate.boo';\n    window.localStorage.setItem(testKey, 'foo');\n    window.localStorage.removeItem(testKey);\n  } catch (e) {\n    hasLocalStorageSupport = false;\n  }\n  return hasLocalStorageSupport;\n};\nvar localStorage = {\n  name: 'localStorage',\n  // Deconstruct the options object and extract the lookupLocalStorage property\n  lookup(_ref) {\n    let {\n      lookupLocalStorage\n    } = _ref;\n    if (lookupLocalStorage && localStorageAvailable()) {\n      return window.localStorage.getItem(lookupLocalStorage) || undefined; // Undefined ensures type consistency with the previous version of this function\n    }\n\n    return undefined;\n  },\n  // Deconstruct the options object and extract the lookupLocalStorage property\n  cacheUserLanguage(lng, _ref2) {\n    let {\n      lookupLocalStorage\n    } = _ref2;\n    if (lookupLocalStorage && localStorageAvailable()) {\n      window.localStorage.setItem(lookupLocalStorage, lng);\n    }\n  }\n};\n\nlet hasSessionStorageSupport = null;\nconst sessionStorageAvailable = () => {\n  if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n  try {\n    hasSessionStorageSupport = window !== 'undefined' && window.sessionStorage !== null;\n    const testKey = 'i18next.translate.boo';\n    window.sessionStorage.setItem(testKey, 'foo');\n    window.sessionStorage.removeItem(testKey);\n  } catch (e) {\n    hasSessionStorageSupport = false;\n  }\n  return hasSessionStorageSupport;\n};\nvar sessionStorage = {\n  name: 'sessionStorage',\n  lookup(_ref) {\n    let {\n      lookupSessionStorage\n    } = _ref;\n    if (lookupSessionStorage && sessionStorageAvailable()) {\n      return window.sessionStorage.getItem(lookupSessionStorage) || undefined;\n    }\n    return undefined;\n  },\n  cacheUserLanguage(lng, _ref2) {\n    let {\n      lookupSessionStorage\n    } = _ref2;\n    if (lookupSessionStorage && sessionStorageAvailable()) {\n      window.sessionStorage.setItem(lookupSessionStorage, lng);\n    }\n  }\n};\n\nvar navigator$1 = {\n  name: 'navigator',\n  lookup(options) {\n    const found = [];\n    if (typeof navigator !== 'undefined') {\n      const {\n        languages,\n        userLanguage,\n        language\n      } = navigator;\n      if (languages) {\n        // chrome only; not an array, so can't use .push.apply instead of iterating\n        for (let i = 0; i < languages.length; i++) {\n          found.push(languages[i]);\n        }\n      }\n      if (userLanguage) {\n        found.push(userLanguage);\n      }\n      if (language) {\n        found.push(language);\n      }\n    }\n    return found.length > 0 ? found : undefined;\n  }\n};\n\nvar htmlTag = {\n  name: 'htmlTag',\n  // Deconstruct the options object and extract the htmlTag property\n  lookup(_ref) {\n    let {\n      htmlTag\n    } = _ref;\n    let found;\n    const internalHtmlTag = htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n    if (internalHtmlTag && typeof internalHtmlTag.getAttribute === 'function') {\n      found = internalHtmlTag.getAttribute('lang');\n    }\n    return found;\n  }\n};\n\nvar path = {\n  name: 'path',\n  // Deconstruct the options object and extract the lookupFromPathIndex property\n  lookup(_ref) {\n    let {\n      lookupFromPathIndex\n    } = _ref;\n    if (typeof window === 'undefined') return undefined;\n    const language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n    if (!Array.isArray(language)) return undefined;\n    const index = typeof lookupFromPathIndex === 'number' ? lookupFromPathIndex : 0;\n    return language[index]?.replace('/', '');\n  }\n};\n\nvar subdomain = {\n  name: 'subdomain',\n  lookup(_ref) {\n    let {\n      lookupFromSubdomainIndex\n    } = _ref;\n    // If given get the subdomain index else 1\n    const internalLookupFromSubdomainIndex = typeof lookupFromSubdomainIndex === 'number' ? lookupFromSubdomainIndex + 1 : 1;\n    // get all matches if window.location. is existing\n    // first item of match is the match itself and the second is the first group match which should be the first subdomain match\n    // is the hostname no public domain get the or option of localhost\n    const language = typeof window !== 'undefined' && window.location?.hostname?.match(/^(\\w{2,5})\\.(([a-z0-9-]{1,63}\\.[a-z]{2,6})|localhost)/i);\n\n    // if there is no match (null) return undefined\n    if (!language) return undefined;\n    // return the given group match\n    return language[internalLookupFromSubdomainIndex];\n  }\n};\n\nfunction getDefaults() {\n  return {\n    order: ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'],\n    lookupQuerystring: 'lng',\n    lookupCookie: 'i18next',\n    lookupLocalStorage: 'i18nextLng',\n    lookupSessionStorage: 'i18nextLng',\n    // cache user language\n    caches: ['localStorage'],\n    excludeCacheFor: ['cimode'],\n    // cookieMinutes: 10,\n    // cookieDomain: 'myDomain'\n\n    convertDetectedLanguage: l => l\n  };\n}\nclass Browser {\n  constructor(services) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.type = 'languageDetector';\n    this.detectors = {};\n    this.init(services, options);\n  }\n  init(services) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    this.services = services || {\n      languageUtils: {}\n    }; // this way the language detector can be used without i18next\n    this.options = defaults(options, this.options || {}, getDefaults());\n    if (typeof this.options.convertDetectedLanguage === 'string' && this.options.convertDetectedLanguage.indexOf('15897') > -1) {\n      this.options.convertDetectedLanguage = l => l.replace('-', '_');\n    }\n\n    // backwards compatibility\n    if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n    this.i18nOptions = i18nOptions;\n    this.addDetector(cookie$1);\n    this.addDetector(querystring);\n    this.addDetector(localStorage);\n    this.addDetector(sessionStorage);\n    this.addDetector(navigator$1);\n    this.addDetector(htmlTag);\n    this.addDetector(path);\n    this.addDetector(subdomain);\n  }\n  addDetector(detector) {\n    this.detectors[detector.name] = detector;\n    return this;\n  }\n  detect(detectionOrder) {\n    if (!detectionOrder) detectionOrder = this.options.order;\n    let detected = [];\n    detectionOrder.forEach(detectorName => {\n      if (this.detectors[detectorName]) {\n        let lookup = this.detectors[detectorName].lookup(this.options);\n        if (lookup && typeof lookup === 'string') lookup = [lookup];\n        if (lookup) detected = detected.concat(lookup);\n      }\n    });\n    detected = detected.map(d => this.options.convertDetectedLanguage(d));\n    if (this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n    return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n  }\n\n  cacheUserLanguage(lng, caches) {\n    if (!caches) caches = this.options.caches;\n    if (!caches) return;\n    if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n    caches.forEach(cacheName => {\n      if (this.detectors[cacheName]) this.detectors[cacheName].cacheUserLanguage(lng, this.options);\n    });\n  }\n}\nBrowser.type = 'languageDetector';\n\nexport { Browser as default };\n","import parseTag from './parse-tag'\n\nconst tagRE = /<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g\nconst whitespaceRE = /^\\s*$/\n\n// re-used obj for quick lookups of components\nconst empty = Object.create(null)\n\nexport default function parse(html, options) {\n  options || (options = {})\n  options.components || (options.components = empty)\n  const result = []\n  const arr = []\n  let current\n  let level = -1\n  let inComponent = false\n\n  // handle text at top level\n  if (html.indexOf('<') !== 0) {\n    var end = html.indexOf('<')\n    result.push({\n      type: 'text',\n      content: end === -1 ? html : html.substring(0, end),\n    })\n  }\n\n  html.replace(tagRE, function (tag, index) {\n    if (inComponent) {\n      if (tag !== '</' + current.name + '>') {\n        return\n      } else {\n        inComponent = false\n      }\n    }\n    const isOpen = tag.charAt(1) !== '/'\n    const isComment = tag.startsWith('<!--')\n    const start = index + tag.length\n    const nextChar = html.charAt(start)\n    let parent\n\n    if (isComment) {\n      const comment = parseTag(tag)\n\n      // if we're at root, push new base node\n      if (level < 0) {\n        result.push(comment)\n        return result\n      }\n      parent = arr[level]\n      parent.children.push(comment)\n      return result\n    }\n\n    if (isOpen) {\n      level++\n\n      current = parseTag(tag)\n      if (current.type === 'tag' && options.components[current.name]) {\n        current.type = 'component'\n        inComponent = true\n      }\n\n      if (\n        !current.voidElement &&\n        !inComponent &&\n        nextChar &&\n        nextChar !== '<'\n      ) {\n        current.children.push({\n          type: 'text',\n          content: html.slice(start, html.indexOf('<', start)),\n        })\n      }\n\n      // if we're at root, push new base node\n      if (level === 0) {\n        result.push(current)\n      }\n\n      parent = arr[level - 1]\n\n      if (parent) {\n        parent.children.push(current)\n      }\n\n      arr[level] = current\n    }\n\n    if (!isOpen || current.voidElement) {\n      if (\n        level > -1 &&\n        (current.voidElement || current.name === tag.slice(2, -1))\n      ) {\n        level--\n        // move current up a level to match the end tag\n        current = level === -1 ? result : arr[level]\n      }\n      if (!inComponent && nextChar !== '<' && nextChar) {\n        // trailing text node\n        // if we're at the root, push a base text node. otherwise add as\n        // a child to the current node.\n        parent = level === -1 ? result : arr[level].children\n\n        // calculate correct end of the content slice in case there's\n        // no tag after the text node.\n        const end = html.indexOf('<', start)\n        let content = html.slice(start, end === -1 ? undefined : end)\n        // if a node is nothing but whitespace, collapse it as the spec states:\n        // https://www.w3.org/TR/html4/struct/text.html#h-9.1\n        if (whitespaceRE.test(content)) {\n          content = ' '\n        }\n        // don't add whitespace-only text nodes if they would be trailing text nodes\n        // or if they would be leading whitespace-only text nodes:\n        //  * end > -1 indicates this is not a trailing text node\n        //  * leading node is when level is -1 and parent has length 0\n        if ((end > -1 && level + parent.length >= 0) || content !== ' ') {\n          parent.push({\n            type: 'text',\n            content: content,\n          })\n        }\n      }\n    }\n  })\n\n  return result\n}\n","function attrString(attrs) {\n  const buff = []\n  for (let key in attrs) {\n    buff.push(key + '=\"' + attrs[key] + '\"')\n  }\n  if (!buff.length) {\n    return ''\n  }\n  return ' ' + buff.join(' ')\n}\n\nfunction stringify(buff, doc) {\n  switch (doc.type) {\n    case 'text':\n      return buff + doc.content\n    case 'tag':\n      buff +=\n        '<' +\n        doc.name +\n        (doc.attrs ? attrString(doc.attrs) : '') +\n        (doc.voidElement ? '/>' : '>')\n      if (doc.voidElement) {\n        return buff\n      }\n      return buff + doc.children.reduce(stringify, '') + '</' + doc.name + '>'\n    case 'comment':\n      buff += '<!--' + doc.comment + '-->'\n      return buff\n  }\n}\n\nexport default function (doc) {\n  return doc.reduce(function (token, rootEl) {\n    return token + stringify('', rootEl)\n  }, '')\n}\n","export const warn = (...args) => {\n  if (console?.warn) {\n    if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n    console.warn(...args);\n  }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (...args) => {\n  if (isString(args[0]) && alreadyWarned[args[0]]) return;\n  if (isString(args[0])) alreadyWarned[args[0]] = new Date();\n  warn(...args);\n};\nconst loadedClb = (i18n, cb) => () => {\n  if (i18n.isInitialized) {\n    cb();\n  } else {\n    const initialized = () => {\n      setTimeout(() => {\n        i18n.off('initialized', initialized);\n      }, 0);\n      cb();\n    };\n    i18n.on('initialized', initialized);\n  }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n  i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n  if (isString(ns)) ns = [ns];\n  ns.forEach(n => {\n    if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n  });\n  i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n  if (!i18n.languages || !i18n.languages.length) {\n    warnOnce('i18n.languages were undefined or empty', i18n.languages);\n    return true;\n  }\n  return i18n.hasLoadedNamespace(ns, {\n    lng: options.lng,\n    precheck: (i18nInstance, loadNotPending) => {\n      if (options.bindI18n?.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n    }\n  });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n  '&amp;': '&',\n  '&#38;': '&',\n  '&lt;': '<',\n  '&#60;': '<',\n  '&gt;': '>',\n  '&#62;': '>',\n  '&apos;': \"'\",\n  '&#39;': \"'\",\n  '&quot;': '\"',\n  '&#34;': '\"',\n  '&nbsp;': ' ',\n  '&#160;': ' ',\n  '&copy;': '©',\n  '&#169;': '©',\n  '&reg;': '®',\n  '&#174;': '®',\n  '&hellip;': '…',\n  '&#8230;': '…',\n  '&#x2F;': '/',\n  '&#47;': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n  bindI18n: 'languageChanged',\n  bindI18nStore: '',\n  transEmptyNodeValue: '',\n  transSupportBasicHtmlNodes: true,\n  transWrapTextNodes: '',\n  transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n  useSuspense: true,\n  unescape\n};\nexport const setDefaults = (options = {}) => {\n  defaultOptions = {\n    ...defaultOptions,\n    ...options\n  };\n};\nexport const getDefaults = () => defaultOptions;","let i18nInstance;\nexport const setI18n = instance => {\n  i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n  type: '3rdParty',\n  init(instance) {\n    setDefaults(instance.options.react);\n    setI18n(instance);\n  }\n};","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n  constructor() {\n    this.usedNamespaces = {};\n  }\n  addUsedNamespaces(namespaces) {\n    namespaces.forEach(ns => {\n      this.usedNamespaces[ns] ??= true;\n    });\n  }\n  getUsedNamespaces() {\n    return Object.keys(this.usedNamespaces);\n  }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n  const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n  const i18nInitialProps = getInitialProps();\n  return {\n    ...componentsInitialProps,\n    ...i18nInitialProps\n  };\n};\nexport const getInitialProps = () => {\n  const i18n = getI18n();\n  const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n  const ret = {};\n  const initialI18nStore = {};\n  i18n.languages.forEach(l => {\n    initialI18nStore[l] = {};\n    namespaces.forEach(ns => {\n      initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n    });\n  });\n  ret.initialI18nStore = initialI18nStore;\n  ret.initialLanguage = i18n.language;\n  return ret;\n};","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst usePrevious = (value, ignore) => {\n  const ref = useRef();\n  useEffect(() => {\n    ref.current = ignore ? ref.current : value;\n  }, [value, ignore]);\n  return ref.current;\n};\nconst alwaysNewT = (i18n, language, namespace, keyPrefix) => i18n.getFixedT(language, namespace, keyPrefix);\nconst useMemoizedT = (i18n, language, namespace, keyPrefix) => useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\nexport const useTranslation = (ns, props = {}) => {\n  const {\n    i18n: i18nFromProps\n  } = props;\n  const {\n    i18n: i18nFromContext,\n    defaultNS: defaultNSFromContext\n  } = useContext(I18nContext) || {};\n  const i18n = i18nFromProps || i18nFromContext || getI18n();\n  if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n  if (!i18n) {\n    warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n    const notReadyT = (k, optsOrDefaultValue) => {\n      if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n      if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n      return Array.isArray(k) ? k[k.length - 1] : k;\n    };\n    const retNotReady = [notReadyT, {}, false];\n    retNotReady.t = notReadyT;\n    retNotReady.i18n = {};\n    retNotReady.ready = false;\n    return retNotReady;\n  }\n  if (i18n.options.react?.wait) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n  const i18nOptions = {\n    ...getDefaults(),\n    ...i18n.options.react,\n    ...props\n  };\n  const {\n    useSuspense,\n    keyPrefix\n  } = i18nOptions;\n  let namespaces = ns || defaultNSFromContext || i18n.options?.defaultNS;\n  namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n  i18n.reportNamespaces.addUsedNamespaces?.(namespaces);\n  const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n  const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n  const getT = () => memoGetT;\n  const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n  const [t, setT] = useState(getT);\n  let joinedNS = namespaces.join();\n  if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n  const previousJoinedNS = usePrevious(joinedNS);\n  const isMounted = useRef(true);\n  useEffect(() => {\n    const {\n      bindI18n,\n      bindI18nStore\n    } = i18nOptions;\n    isMounted.current = true;\n    if (!ready && !useSuspense) {\n      if (props.lng) {\n        loadLanguages(i18n, props.lng, namespaces, () => {\n          if (isMounted.current) setT(getNewT);\n        });\n      } else {\n        loadNamespaces(i18n, namespaces, () => {\n          if (isMounted.current) setT(getNewT);\n        });\n      }\n    }\n    if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n      setT(getNewT);\n    }\n    const boundReset = () => {\n      if (isMounted.current) setT(getNewT);\n    };\n    if (bindI18n) i18n?.on(bindI18n, boundReset);\n    if (bindI18nStore) i18n?.store.on(bindI18nStore, boundReset);\n    return () => {\n      isMounted.current = false;\n      if (i18n) bindI18n?.split(' ').forEach(e => i18n.off(e, boundReset));\n      if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n    };\n  }, [i18n, joinedNS]);\n  useEffect(() => {\n    if (isMounted.current && ready) {\n      setT(getT);\n    }\n  }, [i18n, keyPrefix, ready]);\n  const ret = [t, i18n, ready];\n  ret.t = t;\n  ret.i18n = i18n;\n  ret.ready = ready;\n  if (ready) return ret;\n  if (!ready && !useSuspense) return ret;\n  throw new Promise(resolve => {\n    if (props.lng) {\n      loadLanguages(i18n, props.lng, namespaces, () => resolve());\n    } else {\n      loadNamespaces(i18n, namespaces, () => resolve());\n    }\n  });\n};","import { useContext } from 'react';\nimport { getI18n, I18nContext } from './context.js';\nexport const useSSR = (initialI18nStore, initialLanguage, props = {}) => {\n  const {\n    i18n: i18nFromProps\n  } = props;\n  const {\n    i18n: i18nFromContext\n  } = useContext(I18nContext) || {};\n  const i18n = i18nFromProps || i18nFromContext || getI18n();\n  if (i18n.options?.isClone) return;\n  if (initialI18nStore && !i18n.initializedStoreOnce) {\n    i18n.services.resourceStore.data = initialI18nStore;\n    i18n.options.ns = Object.values(initialI18nStore).reduce((mem, lngResources) => {\n      Object.keys(lngResources).forEach(ns => {\n        if (mem.indexOf(ns) < 0) mem.push(ns);\n      });\n      return mem;\n    }, i18n.options.ns);\n    i18n.initializedStoreOnce = true;\n    i18n.isInitialized = true;\n  }\n  if (initialLanguage && !i18n.initializedLanguageOnce) {\n    i18n.changeLanguage(initialLanguage);\n    i18n.initializedLanguageOnce = true;\n  }\n};","import i18n from \"i18next\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nimport { initReactI18next } from \"react-i18next\";\n\nimport enTranslations from \"./translations/en/en.json\";\nimport frTranslations from \"./translations/hi/hi.json\";\n\ni18n\n  .use(LanguageDetector)\n  .use(initReactI18next)\n  .init({\n    debug: true,\n\n    fallbackLng: \"en\",\n    resources: {\n      en: {\n        translation: enTranslations,\n      },\n      hi: {\n        translation: frTranslations,\n      },\n    },\n  });\nexport default i18n;\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/* eslint-disable quotes */\n\nexport const GOOGLE_AUTO_SEARCH_API = `https://maps.googleapis.com/maps/api/place/autocomplete/json`;\n\nexport const GOOGLE_LAT_LONG_API = `https://maps.googleapis.com/maps/api/place/details/json`;\n\nexport const GOOGLE_PLACES_API_KEY = \"AIzaSyCsSMOQKo0RE0mKvmqjQWMGhHmVVqqEmsU\";\n\n// export const emailPattern = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w\\w+)+$/;\n// export const passwordPattern = /^.*(?=.{8,})/;\n\nexport const Fonts = {\n  regular: \"OpenSauceSans-Regular\",\n  light: \"OpenSauceSans-Light\",\n  medium: \"OpenSauceSans-Medium\",\n  bold: \"OpenSauceSans-Bold\",\n  semi_bold: \"OpenSauceSans-SemiBold\",\n};\n\nexport const Color = {\n  mButtonColor: \"#2A7A5A\",\n  mArcColor: \"#345243\",\n  needleColor: \"#888888\",\n  trackColor: \"#0D0D0D1A\",\n};\nexport const Images = {\n  upload_icon: require(\"../assets/Images/ic_cloud.png\"),\n  add_file: require(\"../assets/Images/ic_file.png\"),\n  invoice: require(\"../assets/Images/ic_invoice.png\"),\n  logout: require(\"../assets/Images/ic_logout.png\"),\n  review: require(\"../assets/Images/ic_review.png\"),\n  like: require(\"../assets/Images/ic_like.png\"),\n  likeclick: require(\"../assets/Images/ic_likeclick.png\"),\n  dislike: require(\"../assets/Images/ic_dislike.png\"),\n  dislikeclick: require(\"../assets/Images/ic_dislikeclick.png\"),\n  gridview: require(\"../assets/Images/gridview.png\"),\n  listview: require(\"../assets/Images/listview.png\"),\n  google: require(\"../assets/Images/ic_google.png\"),\n  delete: require(\"../assets/Images/delete.png\"),\n\n  zenpivot: require(\"../assets/Images/zenpivot.png\"),\n  applogo: require(\"../assets/Images/applogo.png\"),\n  PitchScorebg: require(\"../assets/Images/PitchScorebg.png\"),\n  companyImage: require(\"../assets/Images/companyImage.png\"),\n  userImage: require(\"../assets/Images/userImage.png\"),\n  share: require(\"../assets/Images/share.png\"),\n  linkedin: require(\"../assets/Images/linkedin.png\"),\n  twitter: require(\"../assets/Images/twitter.png\"),\n  whatsapp: require(\"../assets/Images/whatsapp.png\"),\n  gmail: require(\"../assets/Images/gmail.png\"),\n  infobtn: require(\"../assets/Images/infobtn.png\"),\n\n  loginbg: require(\"../assets/Images/loginbgg.png\"),\n  forgetpwd: require(\"../assets/Images/forgetpwd.png\"),\n  pitchdeckbg: require(\"../assets/Images/pitchdeckbgcopy.png\"),\n  scorebg: require(\"../assets/Images/scorebg.png\"),\n  questionbg: require(\"../assets/Images/questionbg.png\"),\n  investorbg: require(\"../assets/Images/investorbg.png\"),\n  profileimage: require(\"../assets/Images/ic_profile.png\"),\n  crownimage: require(\"../assets/Images/ic_crownimage.png\"),\n  folderimage: require(\"../assets/Images/new_ic_folder.png\"),\n  image: require(\"../assets/Images/image.png\"),\n  avatar: require(\"../assets/Images/avatar.png\"),\n  nodata: require(\"../assets/Images/ic_nodata.png\"),\n  Pdf: require(\"../assets/Images/new_ic_pdf.png\"),\n  Word: require(\"../assets/Images/new_ic_world.png\"),\n  Excel: require(\"../assets/Images/new_ic_excel.png\"),\n  Image: require(\"../assets/Images/new_ic_image.png\"),\n  icsend: require(\"../assets/Images/ic_send.png\"),\n  phonecall: require(\"../assets/Images/phone_call.png\"),\n};\n\nexport const Icons = {};\n\nexport const isValidMobileNumber = (number) => {\n  // Regular expression for mobile number validation\n  const mobileRegex = /^[6-9][0-9]{9}$/;\n  return mobileRegex.test(number);\n};\n\nexport const isValidEmail = (email) => {\n  // Regular expression for email validation\n  const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n  return emailRegex.test(email);\n};\n\nexport const isValidPassword = (password) => {\n  // Regular expression for email validation\n  const emailRegex =\n    /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@#/$&*~]).{8,}$/;\n  return emailRegex.test(password);\n};\n\nexport const isValidScore = (score) => {\n  // return score === null\n  //   ? \"\"\n  //   : score.includes(\":\")\n  //   ? score.split(\":\")[1].includes(\"/\")\n  //     ? score\n  //         .split(\":\")[1]\n  //         .split(\"/\")[0]\n  //         .replace(/\\s*\\(.*?\\)/, \"\")\n  //         .trim()\n  //     : score\n  //         .split(\":\")[1]\n  //         .replace(/\\s*\\(.*?\\)/, \"\")\n  //         .trim()\n  //   : score.includes(\"/\")\n  //   ? score\n  //       .split(\"/\")[0]\n  //       .replace(/\\s*\\(.*?\\)/, \"\")\n  //       .trim()\n  //   : score.replace(/\\s*\\(.*?\\)/, \"\").trim();\n\n  return score === null || score === undefined\n    ? \"\"\n    : score.split(\"/\")[0].trim();\n};\n\nexport const isValidScore1 = (score) => {\n  return score === null\n    ? \"\"\n    : score.includes(\":\")\n    ? score.split(\":\")[1].includes(\"/\")\n      ? score\n          .split(\":\")[1]\n          .split(\"/\")[0]\n          .replace(/\\s*\\(.*?\\)/, \"\")\n          .trim()\n      : score\n          .split(\":\")[1]\n          .replace(/\\s*\\(.*?\\)/, \"\")\n          .trim()\n    : score.includes(\"/\")\n    ? score\n        .split(\"/\")[0]\n        .replace(/\\s*\\(.*?\\)/, \"\")\n        .trim()\n    : score.replace(/\\s*\\(.*?\\)/, \"\").trim();\n};\n\nexport const isEmptyObject = (obj) => {\n  return Object.entries(obj).length === 0;\n};\n\nexport const ProgressBar = ({ progress }) => {\n  return (\n    <div className=\"bg-mBorderColor rounded-md\">\n      <div\n        className=\"progress-bar\"\n        style={{\n          width: `${progress}%`,\n          backgroundColor: progress < 100 ? \"#3A7D50\" : \"#3A7D50\",\n          overflow: \"hidden\",\n          position: \"relative\",\n        }}\n      >\n        <span\n          className=\"progress-text font-PlusJakartaSansSemiBold text-base\"\n          style={{}}\n        >\n          {progress}%\n        </span>\n      </div>\n    </div>\n  );\n};\n\nexport const formatTextWithLineBreaks = (text) => {\n  return text.split(\"\\n\").map((line, index) => (\n    <span key={index}>\n      {line}\n      {index < text.split(\"\\n\").length - 1 && <br />}{\" \"}\n      {/* Add line break except for the last line */}\n    </span>\n  ));\n};\n\nexport const mTimerValue = 90000;\n","import React from \"react\";\nimport { Images } from \"./Constants\";\nimport \"../App.css\";\nimport Lottie from \"lottie-react\";\nimport loaderAnimation from \"../assets/Images/loader.json\";\n\nconst Loader = () => {\n  return (\n    <div className=\"loader-container\">\n      <Lottie\n        animationData={loaderAnimation}\n        loop={true} // Set to true to loop the animation\n        style={{ width: 150, height: 150 }} // Adjust size as needed\n      />\n    </div>\n  );\n};\n\nexport default Loader;\n// src=\"https://example.com/loader.gif\"\n","var _path, _path2, _path3, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMenuDashboard(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3.3335 4.66683C3.3335 4.20012 3.3335 3.96676 3.42432 3.7885C3.50422 3.6317 3.6317 3.50422 3.7885 3.42432C3.96676 3.3335 4.20012 3.3335 4.66683 3.3335H7.00016C7.46687 3.3335 7.70023 3.3335 7.87849 3.42432C8.03529 3.50422 8.16277 3.6317 8.24267 3.7885C8.3335 3.96676 8.3335 4.20012 8.3335 4.66683V8.66683C8.3335 9.13354 8.3335 9.36689 8.24267 9.54515C8.16277 9.70196 8.03529 9.82944 7.87849 9.90933C7.70023 10.0002 7.46687 10.0002 7.00016 10.0002H4.66683C4.20012 10.0002 3.96676 10.0002 3.7885 9.90933C3.6317 9.82944 3.50422 9.70196 3.42432 9.54515C3.3335 9.36689 3.3335 9.13354 3.3335 8.66683V4.66683Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M11.6668 11.3335C11.6668 10.8668 11.6668 10.6334 11.7577 10.4552C11.8376 10.2984 11.965 10.1709 12.1218 10.091C12.3001 10.0002 12.5335 10.0002 13.0002 10.0002H15.3335C15.8002 10.0002 16.0336 10.0002 16.2118 10.091C16.3686 10.1709 16.4961 10.2984 16.576 10.4552C16.6668 10.6334 16.6668 10.8668 16.6668 11.3335V15.3335C16.6668 15.8002 16.6668 16.0336 16.576 16.2118C16.4961 16.3686 16.3686 16.4961 16.2118 16.576C16.0336 16.6668 15.8002 16.6668 15.3335 16.6668H13.0002C12.5335 16.6668 12.3001 16.6668 12.1218 16.576C11.965 16.4961 11.8376 16.3686 11.7577 16.2118C11.6668 16.0336 11.6668 15.8002 11.6668 15.3335V11.3335Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3.3335 14.6668C3.3335 14.2001 3.3335 13.9668 3.42432 13.7885C3.50422 13.6317 3.6317 13.5042 3.7885 13.4243C3.96676 13.3335 4.20012 13.3335 4.66683 13.3335H7.00016C7.46687 13.3335 7.70023 13.3335 7.87849 13.4243C8.03529 13.5042 8.16277 13.6317 8.24267 13.7885C8.3335 13.9668 8.3335 14.2001 8.3335 14.6668V15.3335C8.3335 15.8002 8.3335 16.0336 8.24267 16.2118C8.16277 16.3686 8.03529 16.4961 7.87849 16.576C7.70023 16.6668 7.46687 16.6668 7.00016 16.6668H4.66683C4.20012 16.6668 3.96676 16.6668 3.7885 16.576C3.6317 16.4961 3.50422 16.3686 3.42432 16.2118C3.3335 16.0336 3.3335 15.8002 3.3335 15.3335V14.6668Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M11.6668 4.66683C11.6668 4.20012 11.6668 3.96676 11.7577 3.7885C11.8376 3.6317 11.965 3.50422 12.1218 3.42432C12.3001 3.3335 12.5335 3.3335 13.0002 3.3335H15.3335C15.8002 3.3335 16.0336 3.3335 16.2118 3.42432C16.3686 3.50422 16.4961 3.6317 16.576 3.7885C16.6668 3.96676 16.6668 4.20012 16.6668 4.66683V5.3335C16.6668 5.80021 16.6668 6.03356 16.576 6.21182C16.4961 6.36862 16.3686 6.49611 16.2118 6.576C16.0336 6.66683 15.8002 6.66683 15.3335 6.66683H13.0002C12.5335 6.66683 12.3001 6.66683 12.1218 6.576C11.965 6.49611 11.8376 6.36862 11.7577 6.21182C11.6668 6.03356 11.6668 5.80021 11.6668 5.3335V4.66683Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuDashboard);\nexport default __webpack_public_path__ + \"static/media/menu_dashboard.80da673074061f2797da2152f8b3a16f.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMenuDeckuploader(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4.16683 5.83317V9.1665M8.33349 1.6665V4.99984M15.0002 13.3332V16.6665M2.50016 7.49984H5.83349M6.66683 3.33317H10.0002M13.3335 14.9998H16.6668M11.6668 5.83317L14.0238 8.19019M16.264 3.1216L16.7354 3.59301C17.0654 3.92302 17.2304 4.08803 17.2923 4.2783C17.3466 4.44567 17.3466 4.62596 17.2923 4.79333C17.2304 4.9836 17.0654 5.14861 16.7354 5.47862L5.43805 16.776C5.10804 17.106 4.94303 17.271 4.75276 17.3328C4.58539 17.3872 4.4051 17.3872 4.23773 17.3328C4.04746 17.271 3.88245 17.106 3.55243 16.776L3.08103 16.3046C2.75102 15.9746 2.58601 15.8096 2.52418 15.6193C2.4698 15.4519 2.4698 15.2716 2.52418 15.1043C2.58601 14.914 2.75102 14.749 3.08103 14.419L14.3784 3.1216C14.7084 2.79159 14.8734 2.62658 15.0637 2.56476C15.2311 2.51037 15.4113 2.51037 15.5787 2.56476C15.769 2.62658 15.934 2.79159 16.264 3.1216Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuDeckuploader);\nexport default __webpack_public_path__ + \"static/media/menu_deckuploader.567088c03e758530dcacf7895c3a600c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMenuInversorcrm(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M16.5169 11.6668H13.0002C12.5335 11.6668 12.3002 11.6668 12.1219 11.7577C11.9651 11.8376 11.8376 11.965 11.7577 12.1218C11.6669 12.3001 11.6669 12.5335 11.6669 13.0002V16.5168M16.6668 10.6059V6.00016C16.6668 5.06674 16.6668 4.60003 16.4852 4.24351C16.3254 3.92991 16.0704 3.67494 15.7568 3.51515C15.4003 3.3335 14.9336 3.3335 14.0002 3.3335H6.00016C5.06674 3.3335 4.60003 3.3335 4.24351 3.51515C3.92991 3.67494 3.67494 3.92991 3.51515 4.24351C3.3335 4.60003 3.3335 5.06674 3.3335 6.00016V14.0002C3.3335 14.9336 3.3335 15.4003 3.51515 15.7568C3.67494 16.0704 3.92991 16.3254 4.24351 16.4852C4.60003 16.6668 5.06674 16.6668 6.00016 16.6668H10.7915C11.215 16.6668 11.4267 16.6668 11.625 16.6174C11.8008 16.5737 11.9683 16.5015 12.1209 16.4038C12.2931 16.2936 12.4385 16.1398 12.7294 15.832L15.938 12.4378C16.2073 12.1529 16.3419 12.0105 16.4381 11.8465C16.5233 11.701 16.586 11.5434 16.624 11.3792C16.6668 11.1939 16.6668 10.9979 16.6668 10.6059Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuInversorcrm);\nexport default __webpack_public_path__ + \"static/media/menu_inversorcrm.6a29e2db27503582a24a40bf1007a1d7.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMenuService(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9.39077 3.67628C9.58369 3.24347 9.68016 3.02706 9.81448 2.96041C9.93116 2.90252 10.0682 2.90252 10.1849 2.96041C10.3192 3.02706 10.4157 3.24347 10.6086 3.67628L12.1453 7.12373C12.2023 7.25168 12.2308 7.31565 12.275 7.36465C12.314 7.408 12.3617 7.44266 12.415 7.4664C12.4753 7.49323 12.5449 7.50058 12.6842 7.51529L16.4378 7.91146C16.9091 7.96119 17.1447 7.98606 17.2496 8.09321C17.3407 8.18629 17.383 8.31663 17.364 8.44548C17.3422 8.59383 17.1661 8.75244 16.8141 9.06968L14.0103 11.5965C13.9062 11.6903 13.8542 11.7372 13.8212 11.7943C13.7921 11.8448 13.7738 11.9009 13.7677 11.9589C13.7608 12.0245 13.7754 12.093 13.8044 12.23L14.5876 15.9223C14.6859 16.3859 14.7351 16.6177 14.6656 16.7505C14.6052 16.866 14.4943 16.9465 14.3659 16.9682C14.2181 16.9933 14.0128 16.8749 13.6023 16.6381L10.3328 14.7524C10.2114 14.6824 10.1507 14.6474 10.0862 14.6337C10.0292 14.6216 9.97019 14.6216 9.91312 14.6337C9.84862 14.6474 9.78794 14.6824 9.66659 14.7524L6.39702 16.6381C5.98654 16.8749 5.7813 16.9933 5.63346 16.9682C5.50503 16.9465 5.39416 16.866 5.3338 16.7505C5.2643 16.6177 5.31346 16.3859 5.41178 15.9223L6.19492 12.23C6.22399 12.093 6.23852 12.0245 6.23162 11.9589C6.22551 11.9009 6.20729 11.8448 6.17812 11.7943C6.14516 11.7372 6.09313 11.6903 5.98907 11.5965L3.18522 9.06968C2.83321 8.75244 2.6572 8.59383 2.63532 8.44548C2.61632 8.31663 2.65867 8.18629 2.74978 8.09321C2.85468 7.98606 3.0903 7.96119 3.56155 7.91146L7.31513 7.51529C7.45444 7.50058 7.5241 7.49323 7.58433 7.4664C7.63762 7.44266 7.68534 7.408 7.72439 7.36465C7.76852 7.31565 7.79703 7.25168 7.85407 7.12373L9.39077 3.67628Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuService);\nexport default __webpack_public_path__ + \"static/media/menu_service.91932dd13f954b4ba99d6f416cf33e89.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMenuValut(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10 8.52547L2.57079 5.85266M10 8.52547L17.4315 5.86149M10 8.52547V17.3991M4.27915 15.4807L9.11248 17.1866C9.44138 17.3027 9.60583 17.3607 9.7745 17.3837C9.92414 17.4042 10.0759 17.4042 10.2255 17.3837C10.3942 17.3607 10.5586 17.3027 10.8875 17.1866L15.7209 15.4807C16.3614 15.2546 16.6817 15.1416 16.9181 14.9389C17.127 14.7598 17.2882 14.5319 17.3875 14.2754C17.5 13.985 17.5 13.6454 17.5 12.9661V7.03359C17.5 6.3543 17.5 6.01465 17.3875 5.72424C17.2882 5.46774 17.127 5.23981 16.9181 5.06078C16.6817 4.85807 16.3614 4.74503 15.7209 4.51895L10.8875 2.81307C10.5586 2.69699 10.3942 2.63894 10.2255 2.61591C10.0759 2.59548 9.92414 2.59548 9.7745 2.61591C9.60583 2.63894 9.44138 2.69699 9.11248 2.81307L4.27915 4.51895C3.63858 4.74503 3.31829 4.85807 3.08187 5.06078C2.87305 5.23981 2.71178 5.46774 2.61246 5.72424C2.5 6.01465 2.5 6.3543 2.5 7.03359V12.9661C2.5 13.6454 2.5 13.985 2.61246 14.2754C2.71178 14.5319 2.87305 14.7598 3.08187 14.9389C3.31829 15.1416 3.63858 15.2546 4.27915 15.4807Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuValut);\nexport default __webpack_public_path__ + \"static/media/menu_valut.5a01010412fe238195dd1ea302b83e0a.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMenuProfile(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M13.3332 5.83333C13.3332 7.67428 11.8408 9.16667 9.99984 9.16667C8.15889 9.16667 6.6665 7.67428 6.6665 5.83333C6.6665 3.99238 8.15889 2.5 9.99984 2.5C11.8408 2.5 13.3332 3.99238 13.3332 5.83333Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9.99984 11.6667C6.77818 11.6667 4.1665 14.2783 4.1665 17.5H15.8332C15.8332 14.2783 13.2215 11.6667 9.99984 11.6667Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuProfile);\nexport default __webpack_public_path__ + \"static/media/menu_profile.501b461a0649fd2f70710b8c676605cf.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMenuSettings(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 18,\n    height: 18,\n    viewBox: \"0 0 18 18\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M14.0722 10.3458L15.0218 12.0166C14.9089 12.2372 14.7829 12.4538 14.6433 12.6655C14.5038 12.8771 14.3543 13.0783 14.1961 13.2689L12.3283 13.0606C11.8286 13.4706 11.252 13.7902 10.6233 13.9944L9.75016 15.7088C9.50391 15.736 9.25367 15.75 9.00016 15.75C8.74665 15.75 8.49641 15.736 8.25016 15.7088L7.3747 13.9937C6.74571 13.789 6.16886 13.4689 5.66918 13.0583L3.79055 13.2686C3.63227 13.078 3.48286 12.8768 3.34331 12.6652C3.20376 12.4535 3.07767 12.2369 2.96484 12.0164L3.91977 10.336C3.80852 9.91064 3.75016 9.46039 3.75016 9.00013C3.75016 8.53117 3.81164 8.07658 3.92699 7.64396L2.96513 5.952C3.07796 5.73144 3.20404 5.51483 3.34359 5.30319C3.48314 5.09155 3.63256 4.89032 3.79084 4.69972L5.70707 4.91496C6.20082 4.51556 6.76219 4.20512 7.38 4.00488M7.37711 4.00497L8.24998 2.2912C8.49623 2.26397 8.74647 2.25 8.99998 2.25C9.25349 2.25 9.50373 2.26398 9.74998 2.2912L10.6228 4.00497C11.2412 4.20537 11.8041 4.51323 12.2982 4.91308L14.1956 4.69996C14.3539 4.89056 14.5033 5.09178 14.6428 5.30342C14.7824 5.51506 14.9085 5.73167 15.0213 5.95224L14.0694 7.62726M14.0695 7.62988C14.1873 8.0667 14.2502 8.52608 14.2502 9.00013C14.2502 9.46612 14.1894 9.91793 14.0755 10.3481M11.2501 9.00011C11.2501 10.2428 10.2428 11.2501 9.00015 11.2501C7.75751 11.2501 6.75015 10.2428 6.75015 9.00011C6.75015 7.75747 7.75751 6.75011 9.00015 6.75011C10.2428 6.75011 11.2501 7.75747 11.2501 9.00011Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuSettings);\nexport default __webpack_public_path__ + \"static/media/menu_settings.0304df54d1e88df1390b6b8e18a83c6a.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMenuChat(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6.66667 9.16634H6.675M10 9.16634H10.0083M13.3333 9.16634H13.3417M17.5 16.6663L14.7297 15.2812C14.5197 15.1762 14.4147 15.1237 14.3047 15.0867C14.207 15.0538 14.1064 15.0301 14.0043 15.0158C13.8893 14.9997 13.7719 14.9997 13.5372 14.9997H5.16667C4.23325 14.9997 3.76654 14.9997 3.41002 14.818C3.09641 14.6582 2.84144 14.4033 2.68166 14.0897C2.5 13.7331 2.5 13.2664 2.5 12.333V5.99967C2.5 5.06625 2.5 4.59954 2.68166 4.24302C2.84144 3.92942 3.09641 3.67445 3.41002 3.51466C3.76654 3.33301 4.23325 3.33301 5.16667 3.33301H14.8333C15.7668 3.33301 16.2335 3.33301 16.59 3.51466C16.9036 3.67445 17.1586 3.92942 17.3183 4.24302C17.5 4.59954 17.5 5.06625 17.5 5.99967V16.6663Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuChat);\nexport default __webpack_public_path__ + \"static/media/menu_chat.3635592f596861d5f39b746c2400d152.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcCrownblock(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3.33333 6.66667L5 16.6667H15L16.6667 6.66667M3.33333 6.66667L4.76354 7.81083C5.69348 8.55478 6.15845 8.92676 6.62713 8.98449C7.03775 9.03506 7.45249 8.93111 7.79071 8.69285C8.17676 8.42089 8.41132 7.87358 8.88044 6.77896L10 4.16667M3.33333 6.66667C3.79357 6.66667 4.16667 6.29357 4.16667 5.83333C4.16667 5.3731 3.79357 5 3.33333 5C2.8731 5 2.5 5.3731 2.5 5.83333C2.5 6.29357 2.8731 6.66667 3.33333 6.66667ZM16.6667 6.66667L15.2365 7.81083C14.3065 8.55479 13.8415 8.92676 13.3729 8.98449C12.9623 9.03506 12.5475 8.93111 12.2093 8.69285C11.8232 8.42089 11.5887 7.87358 11.1196 6.77896L10 4.16667M16.6667 6.66667C17.1269 6.66667 17.5 6.29357 17.5 5.83333C17.5 5.3731 17.1269 5 16.6667 5C16.2064 5 15.8333 5.3731 15.8333 5.83333C15.8333 6.29357 16.2064 6.66667 16.6667 6.66667ZM10 4.16667C10.4602 4.16667 10.8333 3.79357 10.8333 3.33333C10.8333 2.8731 10.4602 2.5 10 2.5C9.53976 2.5 9.16667 2.8731 9.16667 3.33333C9.16667 3.79357 9.53976 4.16667 10 4.16667ZM10 3.33333H10.0083M16.6667 5.83333H16.675M3.33333 5.83333H3.34167\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcCrownblock);\nexport default __webpack_public_path__ + \"static/media/ic_crownblock.92ec76315093ed65703abfab444e5572.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\n\n// App Logo in text formet\nconst LogoText = ({ label }) => (\n  <div className=\"flex\">\n    <p className=\"text-[28px] 3xl:text-[32px] font-semibold leading-normal font-HelveticaNowDisplayBold text-mTextColor h-[38px]\">\n      {/* Zen pivot */}\n      {label}\n    </p>\n    <p className=\"text-[28px] 3xl:text-[32px] font-semibold leading-normal font-HelveticaNowDisplayBold text-mButtonColor h-[38px]\">\n      .\n    </p>\n  </div>\n);\n\nexport default LogoText;\n","import React from \"react\";\n// Small App Logo in text formet\nconst LogoTextsmall = ({ label }) => (\n  <div className=\"flex\">\n    <p className=\"text-[28px] font-semibold leading-normal font-HelveticaNowDisplayBold text-mTextColor h-[38px]\">\n      vc\n    </p>\n    <p className=\"text-[28px] font-semibold leading-normal font-HelveticaNowDisplayBold text-mButtonColor h-[38px]\">\n      .\n    </p>\n  </div>\n);\n\nexport default LogoTextsmall;\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { ReactComponent as DashboardEmailIcon } from \"../assets/Images/menu_dashboard.svg\";\nimport { ReactComponent as DeckuploaderIcon } from \"../assets/Images/menu_deckuploader.svg\";\nimport { ReactComponent as InversorcrmIcon } from \"../assets/Images/menu_inversorcrm.svg\";\nimport { ReactComponent as ServiceIcon } from \"../assets/Images/menu_service.svg\";\nimport { ReactComponent as ValutIcon } from \"../assets/Images/menu_valut.svg\";\nimport { ReactComponent as ProfileIcon } from \"../assets/Images/menu_profile.svg\";\nimport { ReactComponent as SettingsIcon } from \"../assets/Images/menu_settings.svg\";\nimport { ReactComponent as ChatIcon } from \"../assets/Images/menu_chat.svg\";\nimport { ReactComponent as CrownblocIcon } from \"../assets/Images/ic_crownblock.svg\";\nimport LogoText from \"./LogoText\";\nimport LogoTextsmall from \"./LogoTextsmall\";\n\nconst SideMenu = (props) => {\n  const { t } = useTranslation(\"\");\n  const navigate = useNavigate();\n\n  // Get user info\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  // Menu items\n  const Menus = [\n    {\n      title: t(\"Dashboard\"),\n      src: DashboardEmailIcon,\n    },\n    {\n      title: t(\"DeckUploader\"),\n      src: DeckuploaderIcon,\n    },\n\n    {\n      title: t(\"ZenpivotChat\"),\n      src: ChatIcon,\n    },\n\n    {\n      title: t(\"InvestersCRM\"),\n      src: InversorcrmIcon,\n    },\n    {\n      title: t(\"Services\"),\n      src: ServiceIcon,\n    },\n    {\n      title: t(\"Valut\"),\n      src: ValutIcon,\n    },\n    {\n      title: t(\"Subscription\"),\n      src: CrownblocIcon,\n    },\n  ];\n\n  // const InvestorMenus = [\n  //   {\n  //     title: t(\"Dashboard\"),\n  //     src: DashboardEmailIcon,\n  //   },\n  //   {\n  //     title: t(\"DeckUploader\"),\n  //     src: DeckuploaderIcon,\n  //   },\n\n  //   {\n  //     title: t(\"InvestersCRM\"),\n  //     src: InversorcrmIcon,\n  //   },\n  // ];\n\n  // Profile Menu items\n  const ProfileMenus = [\n    {\n      title: t(\"profile\"),\n      src: ProfileIcon,\n    },\n    {\n      title: t(\"Settings\"),\n      src: SettingsIcon,\n    },\n  ];\n\n  const filteredMenus = Menus.filter((menu) => {\n    // If the menu is \"Services\" or \"Valut\", include it only if isFeatureEnabled is true\n    if (\n      menu.title === t(\"Services\") ||\n      menu.title === t(\"Valut\") ||\n      menu.title === t(\"ZenpivotChat\") ||\n      menu.title === t(\"InvestersCRM\") ||\n      menu.title === t(\"Subscription\")\n    ) {\n      //alert(menu.title);\n      //return UserInfoData.subscription_status;\n      return false;\n    } else if (\n      menu.title === t(\"Services\") ||\n      menu.title === t(\"Valut\") ||\n      menu.title === t(\"ZenpivotChat\") ||\n      menu.title === t(\"InvestersCRM\") ||\n      menu.title === t(\"Subscription\")\n    ) {\n      return UserInfoData.user_type === \"Investor\" ? true : false;\n    }\n\n    // Otherwise, include all other menus\n    return true;\n  });\n\n  // alert(JSON.stringify(filteredMenus));\n\n  // Handle Click\n  const handleClick = (itemName) => {\n    if (props.mClickstatus) {\n    } else {\n      if (itemName === 0) {\n        if (UserInfoData.user_type === \"Investor\") {\n          navigate(\"/investordashboard\");\n        } else {\n          navigate(\"/dashboard\");\n        }\n      } else if (itemName === 1) {\n        if (UserInfoData.user_type === \"Investor\") {\n          navigate(\"/mydecks\");\n        } else {\n          navigate(\"/mydecks\");\n        }\n      } else if (itemName === 2) {\n        if (UserInfoData.user_type === \"Investor\") {\n          navigate(\"/investorscrm\");\n        } else {\n          navigate(\"/chat\");\n        }\n      } else if (itemName === 3) {\n        navigate(\"/startupcrm\");\n      } else if (itemName === 4) {\n        navigate(\"/service\");\n      } else if (itemName === 5) {\n        navigate(\"/valut\");\n      } else if (itemName === 6) {\n        navigate(\"/subscription\");\n      }\n    }\n  };\n  // Handle proflie menu Click\n  const handleSettngsClick = (itemName) => {\n    if (props.mClickstatus) {\n    } else {\n      if (itemName === 0) {\n        navigate(\"/profile\");\n      } else if (itemName === 1) {\n        navigate(\"/help\");\n      }\n    }\n  };\n\n  return (\n    <div className=\"\">\n      <div\n        className={`${\"w-64\"} hidden lg:block bg-dark-purple justify-center h-full relative items-start bg-white overflow-hidden ml-2 px-6 py-3 border-r border-mBorderColor`}\n      >\n        <div className=\"flex flex-col\">\n          <div className=\"flex items-center  mb-1\">\n            {/* <img\n              src={Images.applogo}\n              alt=\"appicon\"\n              className=\" p-2 w-32 h-11 \"\n            /> */}\n            <LogoText label={t(\"appname\")} />\n          </div>\n\n          <div className=\"mt-10 p-2\">\n            <p className=\"font-PlusJakartaSansRegular font-normal text-mTextColor text-sm \">\n              {\" \"}\n              {t(\"MENU\")}\n            </p>\n            {/* UserInfoData.user_type === \"Investor\"\n                  ? InvestorMenus.map((Menu, index) => (\n                      <li\n                        key={index}\n                        className={`${index === 6 ? \"hidden\" : \"block\"}`}\n                        onClick={() => handleClick(index)}\n                      >\n                        <div className=\" py-2 \">\n                          <div\n                            className={`flex rounded-md ${\n                              props.mClickstatus\n                                ? \"cursor-not-allowed\"\n                                : \"cursor-pointer\"\n                            } hover:bg-light-white text-gray-300 text-sm items-center flex-row py-2\n                    ${props.mFrom === index ? \"bg-mMenuSelect\" : \"bg-white\"}  ${\n                              props.mFrom === index ? \"px-2\" : \"px-0\"\n                            } `}\n                          >\n                            <Menu.src className=\"w-5 h-5 flex-shrink-0 \" />\n                            <p\n                              className={` font-PlusJakartaSansRegular font-normal text-mTextColor text-sm xl:text-base   ml-4`}\n                            >\n                              {\" \"}\n                              {Menu.title}{\" \"}\n                            </p>\n                          </div>\n                        </div>\n                      </li>\n                    ))\n                  : */}\n            <div>\n              <ul className=\"mt-4\">\n                {filteredMenus.map((Menu, index) => (\n                  <li\n                    key={index}\n                    className={`${\n                      Menu.title === t(\"Subscription\") ? \"hidden\" : \"block\"\n                    }`}\n                    onClick={() => handleClick(index)}\n                  >\n                    <div className=\" py-2 \">\n                      <div\n                        className={`flex rounded-md ${\n                          props.mClickstatus\n                            ? \"cursor-not-allowed\"\n                            : \"cursor-pointer\"\n                        } hover:bg-light-white text-gray-300 text-sm items-center flex-row py-2\n                      ${\n                        props.mFrom === index ? \"bg-mMenuSelect\" : \"bg-white\"\n                      }  ${props.mFrom === index ? \"px-2\" : \"px-0\"} `}\n                      >\n                        <Menu.src className=\"w-5 h-5 3xl:w-6 3xl:h-6 flex-shrink-0 \" />\n                        <p\n                          className={` font-PlusJakartaSansRegular font-normal text-mTextColor text-sm xl:text-base ml-4`}\n                        >\n                          {\" \"}\n                          {Menu.title}{\" \"}\n                        </p>\n                      </div>\n                    </div>\n                  </li>\n                ))}\n              </ul>\n            </div>\n\n            <div className=\"border border-mBorderColor w-full mt-4\"></div>\n\n            <div className=\"mt-8\">\n              {\" \"}\n              <p className=\"font-PlusJakartaSansRegular font-normal text-mTextColor text-sm \">\n                {\" \"}\n                {t(\"Profile\")}\n              </p>\n              <div>\n                <ul className=\"mt-4\">\n                  {ProfileMenus.map((Menu, index) => (\n                    <li key={index} onClick={() => handleSettngsClick(index)}>\n                      <div className=\" py-2 \">\n                        <div\n                          className={`flex rounded-md ${\n                            props.mClickstatus\n                              ? \"cursor-not-allowed\"\n                              : \"cursor-pointer\"\n                          } hover:bg-light-white text-gray-300 text-sm items-center flex-row py-2\n                      ${\n                        props.mProfile === index ? \"bg-mMenuSelect\" : \"bg-white\"\n                      }  ${props.mProfile === index ? \"px-2\" : \"px-0\"} `}\n                        >\n                          <Menu.src className=\"w-5 h-5 3xl:w-6 3xl:h-6 flex-shrink-0 \" />\n                          <p\n                            className={` font-PlusJakartaSansRegular font-normal text-mTextColor text-sm xl:text-base ml-4`}\n                          >\n                            {\" \"}\n                            {Menu.title}{\" \"}\n                          </p>\n                        </div>\n                      </div>\n                    </li>\n                  ))}\n                </ul>\n              </div>\n            </div>\n\n            <div className=\"border border-mBorderColor w-full mt-4\"></div>\n          </div>\n        </div>\n      </div>\n\n      <div\n        className={`${\"w-12\"} block lg:hidden bg-dark-purple justify-center h-full relative items-start bg-white overflow-hidden ml-2 px-2 py-3 border-r border-mBorderColor`}\n      >\n        <div className=\"flex flex-col\">\n          <div className=\"flex items-center  mb-1\">\n            {/* <img src={Images.zenpivot} alt=\"appicon\" className=\" w-5 h-5 \" /> */}\n            <LogoTextsmall />\n          </div>\n\n          <div className=\"mt-1\">\n            <div>\n              <ul className=\"mt-4\">\n                {filteredMenus.map((Menu, index) => (\n                  <li\n                    key={index}\n                    className={``}\n                    onClick={() => handleClick(index)}\n                  >\n                    <div className=\" py-2 \">\n                      <div\n                        className={`flex rounded-md ${\n                          props.mClickstatus\n                            ? \"cursor-not-allowed\"\n                            : \"cursor-pointer\"\n                        } hover:bg-light-white text-gray-300 text-sm items-center flex-row py-2\n                      ${\n                        props.mFrom === index ? \"bg-mMenuSelect\" : \"bg-white\"\n                      }  ${props.mFrom === index ? \"px-1\" : \"px-0\"} `}\n                      >\n                        <Menu.src className=\"w-6 h-6 flex-shrink-0 \" />\n                      </div>\n                    </div>\n                  </li>\n                ))}\n              </ul>\n            </div>\n\n            <div className=\"border border-mBorderColor w-full mt-4\"></div>\n\n            <div className=\"mt-8\">\n              {\" \"}\n              <div>\n                <ul className=\"mt-4\">\n                  {ProfileMenus.map((Menu, index) => (\n                    <li key={index} onClick={() => handleSettngsClick(index)}>\n                      <div className=\" py-2 \">\n                        <div\n                          className={`flex rounded-md ${\n                            props.mClickstatus\n                              ? \"cursor-not-allowed\"\n                              : \"cursor-pointer\"\n                          } hover:bg-light-white text-gray-300 text-sm items-center flex-row py-2\n                      ${\n                        props.mProfile === index ? \"bg-mMenuSelect\" : \"bg-white\"\n                      }  ${props.mProfile === index ? \"px-1\" : \"px-0\"} `}\n                        >\n                          <Menu.src className=\"w-6 h-6 flex-shrink-0 \" />\n                        </div>\n                      </div>\n                    </li>\n                  ))}\n                </ul>\n              </div>\n            </div>\n\n            <div className=\"border border-mBorderColor w-full mt-4\"></div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default SideMenu;\n","//staging\n//export const BASE_URL = \"https://core.zenpivot.in\";\n//export const mToken = \"token 08bcb464ce084f2:1435dc649aa9555\";\nexport const BASE_URL = process.env.REACT_APP_API_URL;\nexport const mToken = process.env.REACT_APP_TOKEN_KEY;\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n  return function wrap() {\n    return fn.apply(thisArg, arguments);\n  };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n    const str = toString.call(thing);\n    return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n  type = type.toLowerCase();\n  return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  let result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n  if (kindOf(val) !== 'object') {\n    return false;\n  }\n\n  const prototype = getPrototypeOf(val);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n  let kind;\n  return thing && (\n    (typeof FormData === 'function' && thing instanceof FormData) || (\n      isFunction(thing.append) && (\n        (kind = kindOf(thing)) === 'formdata' ||\n        // detect form-data instance\n        (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n      )\n    )\n  )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n  str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  let i;\n  let l;\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n    const len = keys.length;\n    let key;\n\n    for (i = 0; i < len; i++) {\n      key = keys[i];\n      fn.call(null, obj[key], key, obj);\n    }\n  }\n}\n\nfunction findKey(obj, key) {\n  key = key.toLowerCase();\n  const keys = Object.keys(obj);\n  let i = keys.length;\n  let _key;\n  while (i-- > 0) {\n    _key = keys[i];\n    if (key === _key.toLowerCase()) {\n      return _key;\n    }\n  }\n  return null;\n}\n\nconst _global = (() => {\n  /*eslint no-undef:0*/\n  if (typeof globalThis !== \"undefined\") return globalThis;\n  return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  const {caseless} = isContextDefined(this) && this || {};\n  const result = {};\n  const assignValue = (val, key) => {\n    const targetKey = caseless && findKey(result, key) || key;\n    if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n      result[targetKey] = merge(result[targetKey], val);\n    } else if (isPlainObject(val)) {\n      result[targetKey] = merge({}, val);\n    } else if (isArray(val)) {\n      result[targetKey] = val.slice();\n    } else {\n      result[targetKey] = val;\n    }\n  }\n\n  for (let i = 0, l = arguments.length; i < l; i++) {\n    arguments[i] && forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n  forEach(b, (val, key) => {\n    if (thisArg && isFunction(val)) {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  }, {allOwnKeys});\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n  constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n  constructor.prototype.constructor = constructor;\n  Object.defineProperty(constructor, 'super', {\n    value: superConstructor.prototype\n  });\n  props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n  let props;\n  let i;\n  let prop;\n  const merged = {};\n\n  destObj = destObj || {};\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  if (sourceObj == null) return destObj;\n\n  do {\n    props = Object.getOwnPropertyNames(sourceObj);\n    i = props.length;\n    while (i-- > 0) {\n      prop = props[i];\n      if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n        destObj[prop] = sourceObj[prop];\n        merged[prop] = true;\n      }\n    }\n    sourceObj = filter !== false && getPrototypeOf(sourceObj);\n  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n  return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n  str = String(str);\n  if (position === undefined || position > str.length) {\n    position = str.length;\n  }\n  position -= searchString.length;\n  const lastIndex = str.indexOf(searchString, position);\n  return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n  if (!thing) return null;\n  if (isArray(thing)) return thing;\n  let i = thing.length;\n  if (!isNumber(i)) return null;\n  const arr = new Array(i);\n  while (i-- > 0) {\n    arr[i] = thing[i];\n  }\n  return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n  // eslint-disable-next-line func-names\n  return thing => {\n    return TypedArray && thing instanceof TypedArray;\n  };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n  const generator = obj && obj[Symbol.iterator];\n\n  const iterator = generator.call(obj);\n\n  let result;\n\n  while ((result = iterator.next()) && !result.done) {\n    const pair = result.value;\n    fn.call(obj, pair[0], pair[1]);\n  }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n  let matches;\n  const arr = [];\n\n  while ((matches = regExp.exec(str)) !== null) {\n    arr.push(matches);\n  }\n\n  return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n  return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n    function replacer(m, p1, p2) {\n      return p1.toUpperCase() + p2;\n    }\n  );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n  const descriptors = Object.getOwnPropertyDescriptors(obj);\n  const reducedDescriptors = {};\n\n  forEach(descriptors, (descriptor, name) => {\n    let ret;\n    if ((ret = reducer(descriptor, name, obj)) !== false) {\n      reducedDescriptors[name] = ret || descriptor;\n    }\n  });\n\n  Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n  reduceDescriptors(obj, (descriptor, name) => {\n    // skip restricted props in strict mode\n    if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n      return false;\n    }\n\n    const value = obj[name];\n\n    if (!isFunction(value)) return;\n\n    descriptor.enumerable = false;\n\n    if ('writable' in descriptor) {\n      descriptor.writable = false;\n      return;\n    }\n\n    if (!descriptor.set) {\n      descriptor.set = () => {\n        throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n      };\n    }\n  });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n  const obj = {};\n\n  const define = (arr) => {\n    arr.forEach(value => {\n      obj[value] = true;\n    });\n  }\n\n  isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n  return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n  return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n  DIGIT,\n  ALPHA,\n  ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n  let str = '';\n  const {length} = alphabet;\n  while (size--) {\n    str += alphabet[Math.random() * length|0]\n  }\n\n  return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n  return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n  const stack = new Array(10);\n\n  const visit = (source, i) => {\n\n    if (isObject(source)) {\n      if (stack.indexOf(source) >= 0) {\n        return;\n      }\n\n      if(!('toJSON' in source)) {\n        stack[i] = source;\n        const target = isArray(source) ? [] : {};\n\n        forEach(source, (value, key) => {\n          const reducedValue = visit(value, i + 1);\n          !isUndefined(reducedValue) && (target[key] = reducedValue);\n        });\n\n        stack[i] = undefined;\n\n        return target;\n      }\n    }\n\n    return source;\n  }\n\n  return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n  thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n  if (setImmediateSupported) {\n    return setImmediate;\n  }\n\n  return postMessageSupported ? ((token, callbacks) => {\n    _global.addEventListener(\"message\", ({source, data}) => {\n      if (source === _global && data === token) {\n        callbacks.length && callbacks.shift()();\n      }\n    }, false);\n\n    return (cb) => {\n      callbacks.push(cb);\n      _global.postMessage(token, \"*\");\n    }\n  })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n  typeof setImmediate === 'function',\n  isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n  queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n  isArray,\n  isArrayBuffer,\n  isBuffer,\n  isFormData,\n  isArrayBufferView,\n  isString,\n  isNumber,\n  isBoolean,\n  isObject,\n  isPlainObject,\n  isReadableStream,\n  isRequest,\n  isResponse,\n  isHeaders,\n  isUndefined,\n  isDate,\n  isFile,\n  isBlob,\n  isRegExp,\n  isFunction,\n  isStream,\n  isURLSearchParams,\n  isTypedArray,\n  isFileList,\n  forEach,\n  merge,\n  extend,\n  trim,\n  stripBOM,\n  inherits,\n  toFlatObject,\n  kindOf,\n  kindOfTest,\n  endsWith,\n  toArray,\n  forEachEntry,\n  matchAll,\n  isHTMLForm,\n  hasOwnProperty,\n  hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n  reduceDescriptors,\n  freezeMethods,\n  toObjectSet,\n  toCamelCase,\n  noop,\n  toFiniteNumber,\n  findKey,\n  global: _global,\n  isContextDefined,\n  ALPHABET,\n  generateString,\n  isSpecCompliantForm,\n  toJSONObject,\n  isAsyncFn,\n  isThenable,\n  setImmediate: _setImmediate,\n  asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n  Error.call(this);\n\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, this.constructor);\n  } else {\n    this.stack = (new Error()).stack;\n  }\n\n  this.message = message;\n  this.name = 'AxiosError';\n  code && (this.code = code);\n  config && (this.config = config);\n  request && (this.request = request);\n  response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n  toJSON: function toJSON() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: utils.toJSONObject(this.config),\n      code: this.code,\n      status: this.response && this.response.status ? this.response.status : null\n    };\n  }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n  'ERR_BAD_OPTION_VALUE',\n  'ERR_BAD_OPTION',\n  'ECONNABORTED',\n  'ETIMEDOUT',\n  'ERR_NETWORK',\n  'ERR_FR_TOO_MANY_REDIRECTS',\n  'ERR_DEPRECATED',\n  'ERR_BAD_RESPONSE',\n  'ERR_BAD_REQUEST',\n  'ERR_CANCELED',\n  'ERR_NOT_SUPPORT',\n  'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n  descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n  const axiosError = Object.create(prototype);\n\n  utils.toFlatObject(error, axiosError, function filter(obj) {\n    return obj !== Error.prototype;\n  }, prop => {\n    return prop !== 'isAxiosError';\n  });\n\n  AxiosError.call(axiosError, error.message, code, config, request, response);\n\n  axiosError.cause = error;\n\n  axiosError.name = error.name;\n\n  customProps && Object.assign(axiosError, customProps);\n\n  return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n  return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n  return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n  if (!path) return key;\n  return path.concat(key).map(function each(token, i) {\n    // eslint-disable-next-line no-param-reassign\n    token = removeBrackets(token);\n    return !dots && i ? '[' + token + ']' : token;\n  }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n  return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n  return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('target must be an object');\n  }\n\n  // eslint-disable-next-line no-param-reassign\n  formData = formData || new (PlatformFormData || FormData)();\n\n  // eslint-disable-next-line no-param-reassign\n  options = utils.toFlatObject(options, {\n    metaTokens: true,\n    dots: false,\n    indexes: false\n  }, false, function defined(option, source) {\n    // eslint-disable-next-line no-eq-null,eqeqeq\n    return !utils.isUndefined(source[option]);\n  });\n\n  const metaTokens = options.metaTokens;\n  // eslint-disable-next-line no-use-before-define\n  const visitor = options.visitor || defaultVisitor;\n  const dots = options.dots;\n  const indexes = options.indexes;\n  const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n  const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n  if (!utils.isFunction(visitor)) {\n    throw new TypeError('visitor must be a function');\n  }\n\n  function convertValue(value) {\n    if (value === null) return '';\n\n    if (utils.isDate(value)) {\n      return value.toISOString();\n    }\n\n    if (!useBlob && utils.isBlob(value)) {\n      throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n    }\n\n    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n      return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n    }\n\n    return value;\n  }\n\n  /**\n   * Default visitor.\n   *\n   * @param {*} value\n   * @param {String|Number} key\n   * @param {Array<String|Number>} path\n   * @this {FormData}\n   *\n   * @returns {boolean} return true to visit the each prop of the value recursively\n   */\n  function defaultVisitor(value, key, path) {\n    let arr = value;\n\n    if (value && !path && typeof value === 'object') {\n      if (utils.endsWith(key, '{}')) {\n        // eslint-disable-next-line no-param-reassign\n        key = metaTokens ? key : key.slice(0, -2);\n        // eslint-disable-next-line no-param-reassign\n        value = JSON.stringify(value);\n      } else if (\n        (utils.isArray(value) && isFlatArray(value)) ||\n        ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n        )) {\n        // eslint-disable-next-line no-param-reassign\n        key = removeBrackets(key);\n\n        arr.forEach(function each(el, index) {\n          !(utils.isUndefined(el) || el === null) && formData.append(\n            // eslint-disable-next-line no-nested-ternary\n            indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n            convertValue(el)\n          );\n        });\n        return false;\n      }\n    }\n\n    if (isVisitable(value)) {\n      return true;\n    }\n\n    formData.append(renderKey(path, key, dots), convertValue(value));\n\n    return false;\n  }\n\n  const stack = [];\n\n  const exposedHelpers = Object.assign(predicates, {\n    defaultVisitor,\n    convertValue,\n    isVisitable\n  });\n\n  function build(value, path) {\n    if (utils.isUndefined(value)) return;\n\n    if (stack.indexOf(value) !== -1) {\n      throw Error('Circular reference detected in ' + path.join('.'));\n    }\n\n    stack.push(value);\n\n    utils.forEach(value, function each(el, key) {\n      const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n        formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n      );\n\n      if (result === true) {\n        build(el, path ? path.concat(key) : [key]);\n      }\n    });\n\n    stack.pop();\n  }\n\n  if (!utils.isObject(obj)) {\n    throw new TypeError('data must be an object');\n  }\n\n  build(obj);\n\n  return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n  const charMap = {\n    '!': '%21',\n    \"'\": '%27',\n    '(': '%28',\n    ')': '%29',\n    '~': '%7E',\n    '%20': '+',\n    '%00': '\\x00'\n  };\n  return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n    return charMap[match];\n  });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n  this._pairs = [];\n\n  params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n  this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n  const _encode = encoder ? function(value) {\n    return encoder.call(this, value, encode);\n  } : encode;\n\n  return this._pairs.map(function each(pair) {\n    return _encode(pair[0]) + '=' + _encode(pair[1]);\n  }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n  \n  const _encode = options && options.encode || encode;\n\n  const serializeFn = options && options.serialize;\n\n  let serializedParams;\n\n  if (serializeFn) {\n    serializedParams = serializeFn(params, options);\n  } else {\n    serializedParams = utils.isURLSearchParams(params) ?\n      params.toString() :\n      new AxiosURLSearchParams(params, options).toString(_encode);\n  }\n\n  if (serializedParams) {\n    const hashmarkIndex = url.indexOf(\"#\");\n\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n  constructor() {\n    this.handlers = [];\n  }\n\n  /**\n   * Add a new interceptor to the stack\n   *\n   * @param {Function} fulfilled The function to handle `then` for a `Promise`\n   * @param {Function} rejected The function to handle `reject` for a `Promise`\n   *\n   * @return {Number} An ID used to remove interceptor later\n   */\n  use(fulfilled, rejected, options) {\n    this.handlers.push({\n      fulfilled,\n      rejected,\n      synchronous: options ? options.synchronous : false,\n      runWhen: options ? options.runWhen : null\n    });\n    return this.handlers.length - 1;\n  }\n\n  /**\n   * Remove an interceptor from the stack\n   *\n   * @param {Number} id The ID that was returned by `use`\n   *\n   * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n   */\n  eject(id) {\n    if (this.handlers[id]) {\n      this.handlers[id] = null;\n    }\n  }\n\n  /**\n   * Clear all interceptors from the stack\n   *\n   * @returns {void}\n   */\n  clear() {\n    if (this.handlers) {\n      this.handlers = [];\n    }\n  }\n\n  /**\n   * Iterate over all the registered interceptors\n   *\n   * This method is particularly useful for skipping over any\n   * interceptors that may have become `null` calling `eject`.\n   *\n   * @param {Function} fn The function to call for each interceptor\n   *\n   * @returns {void}\n   */\n  forEach(fn) {\n    utils.forEach(this.handlers, function forEachHandler(h) {\n      if (h !== null) {\n        fn(h);\n      }\n    });\n  }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n  silentJSONParsing: true,\n  forcedJSONParsing: true,\n  clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n  isBrowser: true,\n  classes: {\n    URLSearchParams,\n    FormData,\n    Blob\n  },\n  protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n  (product) => {\n    return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n  })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n  return (\n    typeof WorkerGlobalScope !== 'undefined' &&\n    // eslint-disable-next-line no-undef\n    self instanceof WorkerGlobalScope &&\n    typeof self.importScripts === 'function'\n  );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n  hasBrowserEnv,\n  hasStandardBrowserWebWorkerEnv,\n  hasStandardBrowserEnv,\n  origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n  ...utils,\n  ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n  // foo[x][y][z]\n  // foo.x.y.z\n  // foo-x-y-z\n  // foo x y z\n  return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n    return match[0] === '[]' ? '' : match[1] || match[0];\n  });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n  const obj = {};\n  const keys = Object.keys(arr);\n  let i;\n  const len = keys.length;\n  let key;\n  for (i = 0; i < len; i++) {\n    key = keys[i];\n    obj[key] = arr[key];\n  }\n  return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n  function buildPath(path, value, target, index) {\n    let name = path[index++];\n\n    if (name === '__proto__') return true;\n\n    const isNumericKey = Number.isFinite(+name);\n    const isLast = index >= path.length;\n    name = !name && utils.isArray(target) ? target.length : name;\n\n    if (isLast) {\n      if (utils.hasOwnProp(target, name)) {\n        target[name] = [target[name], value];\n      } else {\n        target[name] = value;\n      }\n\n      return !isNumericKey;\n    }\n\n    if (!target[name] || !utils.isObject(target[name])) {\n      target[name] = [];\n    }\n\n    const result = buildPath(path, value, target[name], index);\n\n    if (result && utils.isArray(target[name])) {\n      target[name] = arrayToObject(target[name]);\n    }\n\n    return !isNumericKey;\n  }\n\n  if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n    const obj = {};\n\n    utils.forEachEntry(formData, (name, value) => {\n      buildPath(parsePropPath(name), value, obj, 0);\n    });\n\n    return obj;\n  }\n\n  return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n  transitional: transitionalDefaults,\n\n  adapter: ['xhr', 'http', 'fetch'],\n\n  transformRequest: [function transformRequest(data, headers) {\n    const contentType = headers.getContentType() || '';\n    const hasJSONContentType = contentType.indexOf('application/json') > -1;\n    const isObjectPayload = utils.isObject(data);\n\n    if (isObjectPayload && utils.isHTMLForm(data)) {\n      data = new FormData(data);\n    }\n\n    const isFormData = utils.isFormData(data);\n\n    if (isFormData) {\n      return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n    }\n\n    if (utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data) ||\n      utils.isReadableStream(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n      return data.toString();\n    }\n\n    let isFileList;\n\n    if (isObjectPayload) {\n      if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n        return toURLEncodedForm(data, this.formSerializer).toString();\n      }\n\n      if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n        const _FormData = this.env && this.env.FormData;\n\n        return toFormData(\n          isFileList ? {'files[]': data} : data,\n          _FormData && new _FormData(),\n          this.formSerializer\n        );\n      }\n    }\n\n    if (isObjectPayload || hasJSONContentType ) {\n      headers.setContentType('application/json', false);\n      return stringifySafely(data);\n    }\n\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    const transitional = this.transitional || defaults.transitional;\n    const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n    const JSONRequested = this.responseType === 'json';\n\n    if (utils.isResponse(data) || utils.isReadableStream(data)) {\n      return data;\n    }\n\n    if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n      const silentJSONParsing = transitional && transitional.silentJSONParsing;\n      const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n      try {\n        return JSON.parse(data);\n      } catch (e) {\n        if (strictJSONParsing) {\n          if (e.name === 'SyntaxError') {\n            throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n          }\n          throw e;\n        }\n      }\n    }\n\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  env: {\n    FormData: platform.classes.FormData,\n    Blob: platform.classes.Blob\n  },\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  },\n\n  headers: {\n    common: {\n      'Accept': 'application/json, text/plain, */*',\n      'Content-Type': undefined\n    }\n  }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n  defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n  return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n    visitor: function(value, key, path, helpers) {\n      if (platform.isNode && utils.isBuffer(value)) {\n        this.append(key, value.toString('base64'));\n        return false;\n      }\n\n      return helpers.defaultVisitor.apply(this, arguments);\n    }\n  }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n  const parsed = {};\n  let key;\n  let val;\n  let i;\n\n  rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n    i = line.indexOf(':');\n    key = line.substring(0, i).trim().toLowerCase();\n    val = line.substring(i + 1).trim();\n\n    if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n      return;\n    }\n\n    if (key === 'set-cookie') {\n      if (parsed[key]) {\n        parsed[key].push(val);\n      } else {\n        parsed[key] = [val];\n      }\n    } else {\n      parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n    }\n  });\n\n  return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n  return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n  if (value === false || value == null) {\n    return value;\n  }\n\n  return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n  const tokens = Object.create(null);\n  const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n  let match;\n\n  while ((match = tokensRE.exec(str))) {\n    tokens[match[1]] = match[2];\n  }\n\n  return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n  if (utils.isFunction(filter)) {\n    return filter.call(this, value, header);\n  }\n\n  if (isHeaderNameFilter) {\n    value = header;\n  }\n\n  if (!utils.isString(value)) return;\n\n  if (utils.isString(filter)) {\n    return value.indexOf(filter) !== -1;\n  }\n\n  if (utils.isRegExp(filter)) {\n    return filter.test(value);\n  }\n}\n\nfunction formatHeader(header) {\n  return header.trim()\n    .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n      return char.toUpperCase() + str;\n    });\n}\n\nfunction buildAccessors(obj, header) {\n  const accessorName = utils.toCamelCase(' ' + header);\n\n  ['get', 'set', 'has'].forEach(methodName => {\n    Object.defineProperty(obj, methodName + accessorName, {\n      value: function(arg1, arg2, arg3) {\n        return this[methodName].call(this, header, arg1, arg2, arg3);\n      },\n      configurable: true\n    });\n  });\n}\n\nclass AxiosHeaders {\n  constructor(headers) {\n    headers && this.set(headers);\n  }\n\n  set(header, valueOrRewrite, rewrite) {\n    const self = this;\n\n    function setHeader(_value, _header, _rewrite) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!lHeader) {\n        throw new Error('header name must be a non-empty string');\n      }\n\n      const key = utils.findKey(self, lHeader);\n\n      if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n        self[key || _header] = normalizeValue(_value);\n      }\n    }\n\n    const setHeaders = (headers, _rewrite) =>\n      utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n    if (utils.isPlainObject(header) || header instanceof this.constructor) {\n      setHeaders(header, valueOrRewrite)\n    } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n      setHeaders(parseHeaders(header), valueOrRewrite);\n    } else if (utils.isHeaders(header)) {\n      for (const [key, value] of header.entries()) {\n        setHeader(value, key, rewrite);\n      }\n    } else {\n      header != null && setHeader(valueOrRewrite, header, rewrite);\n    }\n\n    return this;\n  }\n\n  get(header, parser) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      if (key) {\n        const value = this[key];\n\n        if (!parser) {\n          return value;\n        }\n\n        if (parser === true) {\n          return parseTokens(value);\n        }\n\n        if (utils.isFunction(parser)) {\n          return parser.call(this, value, key);\n        }\n\n        if (utils.isRegExp(parser)) {\n          return parser.exec(value);\n        }\n\n        throw new TypeError('parser must be boolean|regexp|function');\n      }\n    }\n  }\n\n  has(header, matcher) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n    }\n\n    return false;\n  }\n\n  delete(header, matcher) {\n    const self = this;\n    let deleted = false;\n\n    function deleteHeader(_header) {\n      _header = normalizeHeader(_header);\n\n      if (_header) {\n        const key = utils.findKey(self, _header);\n\n        if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n          delete self[key];\n\n          deleted = true;\n        }\n      }\n    }\n\n    if (utils.isArray(header)) {\n      header.forEach(deleteHeader);\n    } else {\n      deleteHeader(header);\n    }\n\n    return deleted;\n  }\n\n  clear(matcher) {\n    const keys = Object.keys(this);\n    let i = keys.length;\n    let deleted = false;\n\n    while (i--) {\n      const key = keys[i];\n      if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n        delete this[key];\n        deleted = true;\n      }\n    }\n\n    return deleted;\n  }\n\n  normalize(format) {\n    const self = this;\n    const headers = {};\n\n    utils.forEach(this, (value, header) => {\n      const key = utils.findKey(headers, header);\n\n      if (key) {\n        self[key] = normalizeValue(value);\n        delete self[header];\n        return;\n      }\n\n      const normalized = format ? formatHeader(header) : String(header).trim();\n\n      if (normalized !== header) {\n        delete self[header];\n      }\n\n      self[normalized] = normalizeValue(value);\n\n      headers[normalized] = true;\n    });\n\n    return this;\n  }\n\n  concat(...targets) {\n    return this.constructor.concat(this, ...targets);\n  }\n\n  toJSON(asStrings) {\n    const obj = Object.create(null);\n\n    utils.forEach(this, (value, header) => {\n      value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n    });\n\n    return obj;\n  }\n\n  [Symbol.iterator]() {\n    return Object.entries(this.toJSON())[Symbol.iterator]();\n  }\n\n  toString() {\n    return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'AxiosHeaders';\n  }\n\n  static from(thing) {\n    return thing instanceof this ? thing : new this(thing);\n  }\n\n  static concat(first, ...targets) {\n    const computed = new this(first);\n\n    targets.forEach((target) => computed.set(target));\n\n    return computed;\n  }\n\n  static accessor(header) {\n    const internals = this[$internals] = (this[$internals] = {\n      accessors: {}\n    });\n\n    const accessors = internals.accessors;\n    const prototype = this.prototype;\n\n    function defineAccessor(_header) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!accessors[lHeader]) {\n        buildAccessors(prototype, _header);\n        accessors[lHeader] = true;\n      }\n    }\n\n    utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n    return this;\n  }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n  let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n  return {\n    get: () => value,\n    set(headerValue) {\n      this[mapped] = headerValue;\n    }\n  }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n  const config = this || defaults;\n  const context = response || config;\n  const headers = AxiosHeaders.from(context.headers);\n  let data = context.data;\n\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n  });\n\n  headers.normalize();\n\n  return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n  this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n  __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n  const validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(new AxiosError(\n      'Request failed with status code ' + response.status,\n      [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n      response.config,\n      response.request,\n      response\n    ));\n  }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n  samplesCount = samplesCount || 10;\n  const bytes = new Array(samplesCount);\n  const timestamps = new Array(samplesCount);\n  let head = 0;\n  let tail = 0;\n  let firstSampleTS;\n\n  min = min !== undefined ? min : 1000;\n\n  return function push(chunkLength) {\n    const now = Date.now();\n\n    const startedAt = timestamps[tail];\n\n    if (!firstSampleTS) {\n      firstSampleTS = now;\n    }\n\n    bytes[head] = chunkLength;\n    timestamps[head] = now;\n\n    let i = tail;\n    let bytesCount = 0;\n\n    while (i !== head) {\n      bytesCount += bytes[i++];\n      i = i % samplesCount;\n    }\n\n    head = (head + 1) % samplesCount;\n\n    if (head === tail) {\n      tail = (tail + 1) % samplesCount;\n    }\n\n    if (now - firstSampleTS < min) {\n      return;\n    }\n\n    const passed = startedAt && now - startedAt;\n\n    return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n  };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n  let timestamp = 0;\n  let threshold = 1000 / freq;\n  let lastArgs;\n  let timer;\n\n  const invoke = (args, now = Date.now()) => {\n    timestamp = now;\n    lastArgs = null;\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n    fn.apply(null, args);\n  }\n\n  const throttled = (...args) => {\n    const now = Date.now();\n    const passed = now - timestamp;\n    if ( passed >= threshold) {\n      invoke(args, now);\n    } else {\n      lastArgs = args;\n      if (!timer) {\n        timer = setTimeout(() => {\n          timer = null;\n          invoke(lastArgs)\n        }, threshold - passed);\n      }\n    }\n  }\n\n  const flush = () => lastArgs && invoke(lastArgs);\n\n  return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n  let bytesNotified = 0;\n  const _speedometer = speedometer(50, 250);\n\n  return throttle(e => {\n    const loaded = e.loaded;\n    const total = e.lengthComputable ? e.total : undefined;\n    const progressBytes = loaded - bytesNotified;\n    const rate = _speedometer(progressBytes);\n    const inRange = loaded <= total;\n\n    bytesNotified = loaded;\n\n    const data = {\n      loaded,\n      total,\n      progress: total ? (loaded / total) : undefined,\n      bytes: progressBytes,\n      rate: rate ? rate : undefined,\n      estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n      event: e,\n      lengthComputable: total != null,\n      [isDownloadStream ? 'download' : 'upload']: true\n    };\n\n    listener(data);\n  }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n  const lengthComputable = total != null;\n\n  return [(loaded) => throttled[0]({\n    lengthComputable,\n    total,\n    loaded\n  }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n  (function standardBrowserEnv() {\n    const msie = /(msie|trident)/i.test(navigator.userAgent);\n    const urlParsingNode = document.createElement('a');\n    let originURL;\n\n    /**\n    * Parse a URL to discover its components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n    function resolveURL(url) {\n      let href = url;\n\n      if (msie) {\n        // IE needs attribute set twice to normalize properties\n        urlParsingNode.setAttribute('href', href);\n        href = urlParsingNode.href;\n      }\n\n      urlParsingNode.setAttribute('href', href);\n\n      // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n      return {\n        href: urlParsingNode.href,\n        protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n        host: urlParsingNode.host,\n        search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n        hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n        hostname: urlParsingNode.hostname,\n        port: urlParsingNode.port,\n        pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n          urlParsingNode.pathname :\n          '/' + urlParsingNode.pathname\n      };\n    }\n\n    originURL = resolveURL(window.location.href);\n\n    /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n    return function isURLSameOrigin(requestURL) {\n      const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n      return (parsed.protocol === originURL.protocol &&\n          parsed.host === originURL.host);\n    };\n  })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n  (function nonStandardBrowserEnv() {\n    return function isURLSameOrigin() {\n      return true;\n    };\n  })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n  // Standard browser envs support document.cookie\n  {\n    write(name, value, expires, path, domain, secure) {\n      const cookie = [name + '=' + encodeURIComponent(value)];\n\n      utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n      utils.isString(path) && cookie.push('path=' + path);\n\n      utils.isString(domain) && cookie.push('domain=' + domain);\n\n      secure === true && cookie.push('secure');\n\n      document.cookie = cookie.join('; ');\n    },\n\n    read(name) {\n      const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n      return (match ? decodeURIComponent(match[3]) : null);\n    },\n\n    remove(name) {\n      this.write(name, '', Date.now() - 86400000);\n    }\n  }\n\n  :\n\n  // Non-standard browser env (web workers, react-native) lack needed support.\n  {\n    write() {},\n    read() {\n      return null;\n    },\n    remove() {}\n  };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n  if (baseURL && !isAbsoluteURL(requestedURL)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  const config = {};\n\n  function getMergedValue(target, source, caseless) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge.call({caseless}, target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDeepProperties(a, b, caseless) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(a, b, caseless);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a, caseless);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function valueFromConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function defaultToConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDirectKeys(a, b, prop) {\n    if (prop in config2) {\n      return getMergedValue(a, b);\n    } else if (prop in config1) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  const mergeMap = {\n    url: valueFromConfig2,\n    method: valueFromConfig2,\n    data: valueFromConfig2,\n    baseURL: defaultToConfig2,\n    transformRequest: defaultToConfig2,\n    transformResponse: defaultToConfig2,\n    paramsSerializer: defaultToConfig2,\n    timeout: defaultToConfig2,\n    timeoutMessage: defaultToConfig2,\n    withCredentials: defaultToConfig2,\n    withXSRFToken: defaultToConfig2,\n    adapter: defaultToConfig2,\n    responseType: defaultToConfig2,\n    xsrfCookieName: defaultToConfig2,\n    xsrfHeaderName: defaultToConfig2,\n    onUploadProgress: defaultToConfig2,\n    onDownloadProgress: defaultToConfig2,\n    decompress: defaultToConfig2,\n    maxContentLength: defaultToConfig2,\n    maxBodyLength: defaultToConfig2,\n    beforeRedirect: defaultToConfig2,\n    transport: defaultToConfig2,\n    httpAgent: defaultToConfig2,\n    httpsAgent: defaultToConfig2,\n    cancelToken: defaultToConfig2,\n    socketPath: defaultToConfig2,\n    responseEncoding: defaultToConfig2,\n    validateStatus: mergeDirectKeys,\n    headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n  };\n\n  utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n    const merge = mergeMap[prop] || mergeDeepProperties;\n    const configValue = merge(config1[prop], config2[prop], prop);\n    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n  });\n\n  return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n  const newConfig = mergeConfig({}, config);\n\n  let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n  newConfig.headers = headers = AxiosHeaders.from(headers);\n\n  newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n  // HTTP basic authentication\n  if (auth) {\n    headers.set('Authorization', 'Basic ' +\n      btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n    );\n  }\n\n  let contentType;\n\n  if (utils.isFormData(data)) {\n    if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n      headers.setContentType(undefined); // Let the browser set it\n    } else if ((contentType = headers.getContentType()) !== false) {\n      // fix semicolon duplication issue for ReactNative FormData implementation\n      const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n      headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n    }\n  }\n\n  // Add xsrf header\n  // This is only done if running in a standard browser environment.\n  // Specifically not if we're in a web worker, or react-native.\n\n  if (platform.hasStandardBrowserEnv) {\n    withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n    if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n      // Add xsrf header\n      const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n      if (xsrfValue) {\n        headers.set(xsrfHeaderName, xsrfValue);\n      }\n    }\n  }\n\n  return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    const _config = resolveConfig(config);\n    let requestData = _config.data;\n    const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n    let {responseType, onUploadProgress, onDownloadProgress} = _config;\n    let onCanceled;\n    let uploadThrottled, downloadThrottled;\n    let flushUpload, flushDownload;\n\n    function done() {\n      flushUpload && flushUpload(); // flush events\n      flushDownload && flushDownload(); // flush events\n\n      _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n      _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n    }\n\n    let request = new XMLHttpRequest();\n\n    request.open(_config.method.toUpperCase(), _config.url, true);\n\n    // Set the request timeout in MS\n    request.timeout = _config.timeout;\n\n    function onloadend() {\n      if (!request) {\n        return;\n      }\n      // Prepare the response\n      const responseHeaders = AxiosHeaders.from(\n        'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n      );\n      const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n        request.responseText : request.response;\n      const response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config,\n        request\n      };\n\n      settle(function _resolve(value) {\n        resolve(value);\n        done();\n      }, function _reject(err) {\n        reject(err);\n        done();\n      }, response);\n\n      // Clean up request\n      request = null;\n    }\n\n    if ('onloadend' in request) {\n      // Use onloadend if available\n      request.onloadend = onloadend;\n    } else {\n      // Listen for ready state to emulate onloadend\n      request.onreadystatechange = function handleLoad() {\n        if (!request || request.readyState !== 4) {\n          return;\n        }\n\n        // The request errored out and we didn't get a response, this will be\n        // handled by onerror instead\n        // With one exception: request that using file: protocol, most browsers\n        // will return status as 0 even though it's a successful request\n        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n          return;\n        }\n        // readystate handler is calling before onerror or ontimeout handlers,\n        // so we should call onloadend on the next 'tick'\n        setTimeout(onloadend);\n      };\n    }\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n      const transitional = _config.transitional || transitionalDefaults;\n      if (_config.timeoutErrorMessage) {\n        timeoutErrorMessage = _config.timeoutErrorMessage;\n      }\n      reject(new AxiosError(\n        timeoutErrorMessage,\n        transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n        config,\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Remove Content-Type if data is undefined\n    requestData === undefined && requestHeaders.setContentType(null);\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n        request.setRequestHeader(key, val);\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(_config.withCredentials)) {\n      request.withCredentials = !!_config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (responseType && responseType !== 'json') {\n      request.responseType = _config.responseType;\n    }\n\n    // Handle progress if needed\n    if (onDownloadProgress) {\n      ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n      request.addEventListener('progress', downloadThrottled);\n    }\n\n    // Not all browsers support upload events\n    if (onUploadProgress && request.upload) {\n      ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n      request.upload.addEventListener('progress', uploadThrottled);\n\n      request.upload.addEventListener('loadend', flushUpload);\n    }\n\n    if (_config.cancelToken || _config.signal) {\n      // Handle cancellation\n      // eslint-disable-next-line func-names\n      onCanceled = cancel => {\n        if (!request) {\n          return;\n        }\n        reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n        request.abort();\n        request = null;\n      };\n\n      _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n      if (_config.signal) {\n        _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n      }\n    }\n\n    const protocol = parseProtocol(_config.url);\n\n    if (protocol && platform.protocols.indexOf(protocol) === -1) {\n      reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n      return;\n    }\n\n\n    // Send the request\n    request.send(requestData || null);\n  });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n  const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n  return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst composeSignals = (signals, timeout) => {\n  let controller = new AbortController();\n\n  let aborted;\n\n  const onabort = function (cancel) {\n    if (!aborted) {\n      aborted = true;\n      unsubscribe();\n      const err = cancel instanceof Error ? cancel : this.reason;\n      controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n    }\n  }\n\n  let timer = timeout && setTimeout(() => {\n    onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n  }, timeout)\n\n  const unsubscribe = () => {\n    if (signals) {\n      timer && clearTimeout(timer);\n      timer = null;\n      signals.forEach(signal => {\n        signal &&\n        (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));\n      });\n      signals = null;\n    }\n  }\n\n  signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));\n\n  const {signal} = controller;\n\n  signal.unsubscribe = unsubscribe;\n\n  return [signal, () => {\n    timer && clearTimeout(timer);\n    timer = null;\n  }];\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n  let len = chunk.byteLength;\n\n  if (!chunkSize || len < chunkSize) {\n    yield chunk;\n    return;\n  }\n\n  let pos = 0;\n  let end;\n\n  while (pos < len) {\n    end = pos + chunkSize;\n    yield chunk.slice(pos, end);\n    pos = end;\n  }\n}\n\nexport const readBytes = async function* (iterable, chunkSize, encode) {\n  for await (const chunk of iterable) {\n    yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);\n  }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {\n  const iterator = readBytes(stream, chunkSize, encode);\n\n  let bytes = 0;\n  let done;\n  let _onFinish = (e) => {\n    if (!done) {\n      done = true;\n      onFinish && onFinish(e);\n    }\n  }\n\n  return new ReadableStream({\n    async pull(controller) {\n      try {\n        const {done, value} = await iterator.next();\n\n        if (done) {\n         _onFinish();\n          controller.close();\n          return;\n        }\n\n        let len = value.byteLength;\n        if (onProgress) {\n          let loadedBytes = bytes += len;\n          onProgress(loadedBytes);\n        }\n        controller.enqueue(new Uint8Array(value));\n      } catch (err) {\n        _onFinish(err);\n        throw err;\n      }\n    },\n    cancel(reason) {\n      _onFinish(reason);\n      return iterator.return();\n    }\n  }, {\n    highWaterMark: 2\n  })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n    ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n    async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n  try {\n    return !!fn(...args);\n  } catch (e) {\n    return false\n  }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n  let duplexAccessed = false;\n\n  const hasContentType = new Request(platform.origin, {\n    body: new ReadableStream(),\n    method: 'POST',\n    get duplex() {\n      duplexAccessed = true;\n      return 'half';\n    },\n  }).headers.has('Content-Type');\n\n  return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n  test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n  stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n  ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n    !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n      (_, config) => {\n        throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n      })\n  });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n  if (body == null) {\n    return 0;\n  }\n\n  if(utils.isBlob(body)) {\n    return body.size;\n  }\n\n  if(utils.isSpecCompliantForm(body)) {\n    return (await new Request(body).arrayBuffer()).byteLength;\n  }\n\n  if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n    return body.byteLength;\n  }\n\n  if(utils.isURLSearchParams(body)) {\n    body = body + '';\n  }\n\n  if(utils.isString(body)) {\n    return (await encodeText(body)).byteLength;\n  }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n  const length = utils.toFiniteNumber(headers.getContentLength());\n\n  return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n  let {\n    url,\n    method,\n    data,\n    signal,\n    cancelToken,\n    timeout,\n    onDownloadProgress,\n    onUploadProgress,\n    responseType,\n    headers,\n    withCredentials = 'same-origin',\n    fetchOptions\n  } = resolveConfig(config);\n\n  responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n  let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?\n    composeSignals([signal, cancelToken], timeout) : [];\n\n  let finished, request;\n\n  const onFinish = () => {\n    !finished && setTimeout(() => {\n      composedSignal && composedSignal.unsubscribe();\n    });\n\n    finished = true;\n  }\n\n  let requestContentLength;\n\n  try {\n    if (\n      onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n      (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n    ) {\n      let _request = new Request(url, {\n        method: 'POST',\n        body: data,\n        duplex: \"half\"\n      });\n\n      let contentTypeHeader;\n\n      if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n        headers.setContentType(contentTypeHeader)\n      }\n\n      if (_request.body) {\n        const [onProgress, flush] = progressEventDecorator(\n          requestContentLength,\n          progressEventReducer(asyncDecorator(onUploadProgress))\n        );\n\n        data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush, encodeText);\n      }\n    }\n\n    if (!utils.isString(withCredentials)) {\n      withCredentials = withCredentials ? 'include' : 'omit';\n    }\n\n    request = new Request(url, {\n      ...fetchOptions,\n      signal: composedSignal,\n      method: method.toUpperCase(),\n      headers: headers.normalize().toJSON(),\n      body: data,\n      duplex: \"half\",\n      credentials: withCredentials\n    });\n\n    let response = await fetch(request);\n\n    const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n    if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {\n      const options = {};\n\n      ['status', 'statusText', 'headers'].forEach(prop => {\n        options[prop] = response[prop];\n      });\n\n      const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n      const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n        responseContentLength,\n        progressEventReducer(asyncDecorator(onDownloadProgress), true)\n      ) || [];\n\n      response = new Response(\n        trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n          flush && flush();\n          isStreamResponse && onFinish();\n        }, encodeText),\n        options\n      );\n    }\n\n    responseType = responseType || 'text';\n\n    let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n    !isStreamResponse && onFinish();\n\n    stopTimeout && stopTimeout();\n\n    return await new Promise((resolve, reject) => {\n      settle(resolve, reject, {\n        data: responseData,\n        headers: AxiosHeaders.from(response.headers),\n        status: response.status,\n        statusText: response.statusText,\n        config,\n        request\n      })\n    })\n  } catch (err) {\n    onFinish();\n\n    if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n      throw Object.assign(\n        new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n        {\n          cause: err.cause || err\n        }\n      )\n    }\n\n    throw AxiosError.from(err, err && err.code, config, request);\n  }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n  http: httpAdapter,\n  xhr: xhrAdapter,\n  fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n  if (fn) {\n    try {\n      Object.defineProperty(fn, 'name', {value});\n    } catch (e) {\n      // eslint-disable-next-line no-empty\n    }\n    Object.defineProperty(fn, 'adapterName', {value});\n  }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n  getAdapter: (adapters) => {\n    adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n    const {length} = adapters;\n    let nameOrAdapter;\n    let adapter;\n\n    const rejectedReasons = {};\n\n    for (let i = 0; i < length; i++) {\n      nameOrAdapter = adapters[i];\n      let id;\n\n      adapter = nameOrAdapter;\n\n      if (!isResolvedHandle(nameOrAdapter)) {\n        adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n        if (adapter === undefined) {\n          throw new AxiosError(`Unknown adapter '${id}'`);\n        }\n      }\n\n      if (adapter) {\n        break;\n      }\n\n      rejectedReasons[id || '#' + i] = adapter;\n    }\n\n    if (!adapter) {\n\n      const reasons = Object.entries(rejectedReasons)\n        .map(([id, state]) => `adapter ${id} ` +\n          (state === false ? 'is not supported by the environment' : 'is not available in the build')\n        );\n\n      let s = length ?\n        (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n        'as no adapter specified';\n\n      throw new AxiosError(\n        `There is no suitable adapter to dispatch the request ` + s,\n        'ERR_NOT_SUPPORT'\n      );\n    }\n\n    return adapter;\n  },\n  adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n\n  if (config.signal && config.signal.aborted) {\n    throw new CanceledError(null, config);\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  config.headers = AxiosHeaders.from(config.headers);\n\n  // Transform request data\n  config.data = transformData.call(\n    config,\n    config.transformRequest\n  );\n\n  if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n    config.headers.setContentType('application/x-www-form-urlencoded', false);\n  }\n\n  const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData.call(\n      config,\n      config.transformResponse,\n      response\n    );\n\n    response.headers = AxiosHeaders.from(response.headers);\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData.call(\n          config,\n          config.transformResponse,\n          reason.response\n        );\n        reason.response.headers = AxiosHeaders.from(reason.response.headers);\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n}\n","export const VERSION = \"1.7.3\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  function formatMessage(opt, desc) {\n    return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n  }\n\n  // eslint-disable-next-line func-names\n  return (value, opt, opts) => {\n    if (validator === false) {\n      throw new AxiosError(\n        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n        AxiosError.ERR_DEPRECATED\n      );\n    }\n\n    if (version && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n  }\n  const keys = Object.keys(options);\n  let i = keys.length;\n  while (i-- > 0) {\n    const opt = keys[i];\n    const validator = schema[opt];\n    if (validator) {\n      const value = options[opt];\n      const result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n    }\n  }\n}\n\nexport default {\n  assertOptions,\n  validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n  constructor(instanceConfig) {\n    this.defaults = instanceConfig;\n    this.interceptors = {\n      request: new InterceptorManager(),\n      response: new InterceptorManager()\n    };\n  }\n\n  /**\n   * Dispatch a request\n   *\n   * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n   * @param {?Object} config\n   *\n   * @returns {Promise} The Promise to be fulfilled\n   */\n  async request(configOrUrl, config) {\n    try {\n      return await this._request(configOrUrl, config);\n    } catch (err) {\n      if (err instanceof Error) {\n        let dummy;\n\n        Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n        // slice off the Error: ... line\n        const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n        try {\n          if (!err.stack) {\n            err.stack = stack;\n            // match without the 2 top stack lines\n          } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n            err.stack += '\\n' + stack\n          }\n        } catch (e) {\n          // ignore the case where \"stack\" is an un-writable property\n        }\n      }\n\n      throw err;\n    }\n  }\n\n  _request(configOrUrl, config) {\n    /*eslint no-param-reassign:0*/\n    // Allow for axios('example/url'[, config]) a la fetch API\n    if (typeof configOrUrl === 'string') {\n      config = config || {};\n      config.url = configOrUrl;\n    } else {\n      config = configOrUrl || {};\n    }\n\n    config = mergeConfig(this.defaults, config);\n\n    const {transitional, paramsSerializer, headers} = config;\n\n    if (transitional !== undefined) {\n      validator.assertOptions(transitional, {\n        silentJSONParsing: validators.transitional(validators.boolean),\n        forcedJSONParsing: validators.transitional(validators.boolean),\n        clarifyTimeoutError: validators.transitional(validators.boolean)\n      }, false);\n    }\n\n    if (paramsSerializer != null) {\n      if (utils.isFunction(paramsSerializer)) {\n        config.paramsSerializer = {\n          serialize: paramsSerializer\n        }\n      } else {\n        validator.assertOptions(paramsSerializer, {\n          encode: validators.function,\n          serialize: validators.function\n        }, true);\n      }\n    }\n\n    // Set config.method\n    config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n    // Flatten headers\n    let contextHeaders = headers && utils.merge(\n      headers.common,\n      headers[config.method]\n    );\n\n    headers && utils.forEach(\n      ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n      (method) => {\n        delete headers[method];\n      }\n    );\n\n    config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n    // filter out skipped interceptors\n    const requestInterceptorChain = [];\n    let synchronousRequestInterceptors = true;\n    this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n      if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n        return;\n      }\n\n      synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n      requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    const responseInterceptorChain = [];\n    this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n      responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    let promise;\n    let i = 0;\n    let len;\n\n    if (!synchronousRequestInterceptors) {\n      const chain = [dispatchRequest.bind(this), undefined];\n      chain.unshift.apply(chain, requestInterceptorChain);\n      chain.push.apply(chain, responseInterceptorChain);\n      len = chain.length;\n\n      promise = Promise.resolve(config);\n\n      while (i < len) {\n        promise = promise.then(chain[i++], chain[i++]);\n      }\n\n      return promise;\n    }\n\n    len = requestInterceptorChain.length;\n\n    let newConfig = config;\n\n    i = 0;\n\n    while (i < len) {\n      const onFulfilled = requestInterceptorChain[i++];\n      const onRejected = requestInterceptorChain[i++];\n      try {\n        newConfig = onFulfilled(newConfig);\n      } catch (error) {\n        onRejected.call(this, error);\n        break;\n      }\n    }\n\n    try {\n      promise = dispatchRequest.call(this, newConfig);\n    } catch (error) {\n      return Promise.reject(error);\n    }\n\n    i = 0;\n    len = responseInterceptorChain.length;\n\n    while (i < len) {\n      promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n    }\n\n    return promise;\n  }\n\n  getUri(config) {\n    config = mergeConfig(this.defaults, config);\n    const fullPath = buildFullPath(config.baseURL, config.url);\n    return buildURL(fullPath, config.params, config.paramsSerializer);\n  }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method,\n      url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n\n  function generateHTTPMethod(isForm) {\n    return function httpMethod(url, data, config) {\n      return this.request(mergeConfig(config || {}, {\n        method,\n        headers: isForm ? {\n          'Content-Type': 'multipart/form-data'\n        } : {},\n        url,\n        data\n      }));\n    };\n  }\n\n  Axios.prototype[method] = generateHTTPMethod();\n\n  Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n  constructor(executor) {\n    if (typeof executor !== 'function') {\n      throw new TypeError('executor must be a function.');\n    }\n\n    let resolvePromise;\n\n    this.promise = new Promise(function promiseExecutor(resolve) {\n      resolvePromise = resolve;\n    });\n\n    const token = this;\n\n    // eslint-disable-next-line func-names\n    this.promise.then(cancel => {\n      if (!token._listeners) return;\n\n      let i = token._listeners.length;\n\n      while (i-- > 0) {\n        token._listeners[i](cancel);\n      }\n      token._listeners = null;\n    });\n\n    // eslint-disable-next-line func-names\n    this.promise.then = onfulfilled => {\n      let _resolve;\n      // eslint-disable-next-line func-names\n      const promise = new Promise(resolve => {\n        token.subscribe(resolve);\n        _resolve = resolve;\n      }).then(onfulfilled);\n\n      promise.cancel = function reject() {\n        token.unsubscribe(_resolve);\n      };\n\n      return promise;\n    };\n\n    executor(function cancel(message, config, request) {\n      if (token.reason) {\n        // Cancellation has already been requested\n        return;\n      }\n\n      token.reason = new CanceledError(message, config, request);\n      resolvePromise(token.reason);\n    });\n  }\n\n  /**\n   * Throws a `CanceledError` if cancellation has been requested.\n   */\n  throwIfRequested() {\n    if (this.reason) {\n      throw this.reason;\n    }\n  }\n\n  /**\n   * Subscribe to the cancel signal\n   */\n\n  subscribe(listener) {\n    if (this.reason) {\n      listener(this.reason);\n      return;\n    }\n\n    if (this._listeners) {\n      this._listeners.push(listener);\n    } else {\n      this._listeners = [listener];\n    }\n  }\n\n  /**\n   * Unsubscribe from the cancel signal\n   */\n\n  unsubscribe(listener) {\n    if (!this._listeners) {\n      return;\n    }\n    const index = this._listeners.indexOf(listener);\n    if (index !== -1) {\n      this._listeners.splice(index, 1);\n    }\n  }\n\n  /**\n   * Returns an object that contains a new `CancelToken` and a function that, when called,\n   * cancels the `CancelToken`.\n   */\n  static source() {\n    let cancel;\n    const token = new CancelToken(function executor(c) {\n      cancel = c;\n    });\n    return {\n      token,\n      cancel\n    };\n  }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n  Continue: 100,\n  SwitchingProtocols: 101,\n  Processing: 102,\n  EarlyHints: 103,\n  Ok: 200,\n  Created: 201,\n  Accepted: 202,\n  NonAuthoritativeInformation: 203,\n  NoContent: 204,\n  ResetContent: 205,\n  PartialContent: 206,\n  MultiStatus: 207,\n  AlreadyReported: 208,\n  ImUsed: 226,\n  MultipleChoices: 300,\n  MovedPermanently: 301,\n  Found: 302,\n  SeeOther: 303,\n  NotModified: 304,\n  UseProxy: 305,\n  Unused: 306,\n  TemporaryRedirect: 307,\n  PermanentRedirect: 308,\n  BadRequest: 400,\n  Unauthorized: 401,\n  PaymentRequired: 402,\n  Forbidden: 403,\n  NotFound: 404,\n  MethodNotAllowed: 405,\n  NotAcceptable: 406,\n  ProxyAuthenticationRequired: 407,\n  RequestTimeout: 408,\n  Conflict: 409,\n  Gone: 410,\n  LengthRequired: 411,\n  PreconditionFailed: 412,\n  PayloadTooLarge: 413,\n  UriTooLong: 414,\n  UnsupportedMediaType: 415,\n  RangeNotSatisfiable: 416,\n  ExpectationFailed: 417,\n  ImATeapot: 418,\n  MisdirectedRequest: 421,\n  UnprocessableEntity: 422,\n  Locked: 423,\n  FailedDependency: 424,\n  TooEarly: 425,\n  UpgradeRequired: 426,\n  PreconditionRequired: 428,\n  TooManyRequests: 429,\n  RequestHeaderFieldsTooLarge: 431,\n  UnavailableForLegalReasons: 451,\n  InternalServerError: 500,\n  NotImplemented: 501,\n  BadGateway: 502,\n  ServiceUnavailable: 503,\n  GatewayTimeout: 504,\n  HttpVersionNotSupported: 505,\n  VariantAlsoNegotiates: 506,\n  InsufficientStorage: 507,\n  LoopDetected: 508,\n  NotExtended: 510,\n  NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n  HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  const context = new Axios(defaultConfig);\n  const instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n  // Copy context to instance\n  utils.extend(instance, context, null, {allOwnKeys: true});\n\n  // Factory for creating new instances\n  instance.create = function create(instanceConfig) {\n    return createInstance(mergeConfig(defaultConfig, instanceConfig));\n  };\n\n  return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n  return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import axios from \"axios\";\n\nimport { mToken } from \"./baseURL\";\n\nexport const commonAPI = async (method, url, data) => {\n  // console.log(url);\n  // console.log(data);\n  let reqConfig = {\n    method,\n    url,\n    data,\n    headers: {\n      \"Content-type\": \"application/json\",\n      \"Access-Control-Allow-Origin\": \"*\",\n      \"Access-Control-Allow-Methods\": \"GET,PUT,PATCH,POST,DELETE\",\n\n      \"Access-Control-Allow-Credentials\": \"true\",\n      \"Access-Control-Allow-Headers\":\n        \"Origin,Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,locale\",\n      Authorization: mToken,\n\n      //Authorization: \"token b4c9bbae92f64f6:63c7fe823796495\",\n    },\n  };\n\n  return await axios(reqConfig)\n    .then((result) => {\n      // Success: return the result\n      return result;\n    })\n    .catch((err) => {\n      if (err.response) {\n        // Error : Return status code for further handling\n        return err.response;\n      } else if (err.request) {\n        // Request was made, but no response was received (network error, etc.)\n        alert(\"No response received from the server.\");\n        return \"Network Error\";\n      } else {\n        // Other errors (like setting up the request)\n        alert(`Error: ${err.message}`);\n        return \"Error\";\n      }\n    });\n\n  // return await axios(reqConfig)\n  //   .then((result) => {\n  //     // alert(JSON.stringify(result));\n  //     return result;\n  //   })\n  //   .catch((err) => {\n  //     // alert(\"Error :\" + JSON.stringify(err));\n  //     return \"500\";\n  //   });\n};\n","import { BASE_URL } from \"./baseURL\";\nimport { commonAPI } from \"./commonApi\";\n\nexport const mUploadDeck = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.deck_upload.upload_deck_pdf`,\n    user\n  );\n};\n\n// Login\nexport const mLogin = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.login.user_login`,\n    user\n  );\n};\n\n// Register\nexport const mRegister = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.deck_upload.deck_register`,\n    user\n  );\n};\n\n// Dashboard\nexport const mGetDashboard = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.deck_upload.get_dashboard_data`,\n    user\n  );\n};\n\n// Dashboard\nexport const mGetslideimages = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.deck_upload.get_slide_images`,\n    user\n  );\n};\n\n// User Feedback\nexport const mUserFeedback = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.deck_upload.update_user_feedback`,\n    user\n  );\n};\n\n// upload deck in Dashboard\nexport const mUploadDeckDashboard = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.deck_upload.upload_deck_in_dashboard`,\n    user\n  );\n};\n\n// get pdf and download count\nexport const mGetpdfanddownloadcount = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.deck_upload.get_pdf_and_download_count`,\n    user\n  );\n};\n\n// get pdf and download count\nexport const mGetMaster = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"GET\",\n    `${BASE_URL}/api/method/deck_review.custom_api.masters.get_user_type_as_masters`\n  );\n};\n\n// Google Login\nexport const mGooglelogin = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.goggle_signup.create_google_signup`,\n    user\n  );\n};\n\n// Sign up\nexport const mSignup = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.sign_up.deck_sign_up`,\n    user\n  );\n};\n\n// Send otp to mail\nexport const mSendotptomail = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.reset_password.send_otp_to_mail`,\n    user\n  );\n};\n\n// Reset password\nexport const mResetpassword = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.reset_password.reset_password`,\n    user\n  );\n};\n\n// Startup dashboard\nexport const mStartupdashboard = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.dashboard.get_lastest_deck`,\n    user\n  );\n};\n\n// Service\nexport const mServices = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.services.get_our_services`,\n    user\n  );\n};\n\n// Create Service\nexport const mCreateServices = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.services.create_my_services`,\n    user\n  );\n};\n\n// Startup dashboard\nexport const mInvestordb = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.startup_crm.get_investor_db`,\n    user\n  );\n};\n\n// Get profile details\nexport const mGetprofile = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.profile.get_profile_information`,\n    user\n  );\n};\n\n//  Edit profile personal details\nexport const mEditpersonaldetails = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.profile.profile_edit`,\n    user\n  );\n};\n\n//  Edit profile about\nexport const mEditAboutprofile = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.profile.profile_edit_about`,\n    user\n  );\n};\n\n//  Edit profile company details\nexport const mEditcompanydetails = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.profile.edit_company_inforamtion`,\n    user\n  );\n};\n\n//  Edit profile about\nexport const mEditAboutcompany = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.profile.edit_about_company`,\n    user\n  );\n};\n\n// //  Edit profile about\n// export const mgetCRMBoard = async (user) => {\n//   console.log(user);\n//   return await commonAPI(\n//     \"POST\",\n//     `${BASE_URL}/api/method/deck_review.custom_api.startup_crm.get_crm_board`,\n//     user\n//   );\n// };\n\n//  get Investor db\nexport const mgetInvestordb = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"GET\",\n    `${BASE_URL}/api/method/deck_review.custom_api.investor_crm.get_recommended_investors`\n  );\n};\n\n//   Investor Shortlist db\nexport const mInvestorShortlist = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.startup_crm.make_investor_to_crm`,\n    user\n  );\n};\n\n//   CRM Board\nexport const mCRMBoard = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.startup_crm.get_investors_board`,\n    user\n  );\n};\n\n//   Move CRM Board\nexport const mMoveCRMBoard = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.startup_crm.move_crm_status`,\n    user\n  );\n};\n\n//   Move CRM Board\nexport const mEditCRM = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.startup_crm.edit_crm`,\n    user\n  );\n};\n\n//   Delete CRM Board\nexport const mDeleteCRM = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.startup_crm.delete_crm`,\n    user\n  );\n};\n\n//   Delete CRM Board\nexport const mGetallMaster = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"GET\",\n    `${BASE_URL}/api/method/deck_review.custom_api.masters.get_masters_data`\n  );\n};\n\n//   FAQ Suppport\nexport const FAQSuppport = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.fsq.get_fsq_suppport`,\n    user\n  );\n};\n\n//   get Vault List\nexport const getVaultList = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.vault.get_vault_list`,\n    user\n  );\n};\n\n//   Create Vault\nexport const createVault = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.vault.create_new_valut`,\n    user\n  );\n};\n\n//   Delete Vault\nexport const deleteVault = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.vault.delete_vault`,\n    user\n  );\n};\n\n//   Get Vault\nexport const getVault = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.vault.get_per_vault_details`,\n    user\n  );\n};\n\n// Update valut\nexport const updateVault = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.vault.update_vault`,\n    user\n  );\n};\n\n// Update new file\nexport const updatenewFile = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.vault.create_new_file`,\n    user\n  );\n};\n\n// delete file\nexport const deleteFile = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.vault.delete_file`,\n    user\n  );\n};\n\n// invite people\nexport const invitePeople = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"GET\",\n    `${BASE_URL}/api/method/deck_review.custom_api.vault.vault_invite_people`\n  );\n};\n\n// share file\nexport const shareFile = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.vault.share_file`,\n    user\n  );\n};\n\n// share vault\nexport const shareVault = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.vault.share_vault`,\n    user\n  );\n};\n\n// Subscription plan\nexport const getSubscriptionplan = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.subscription_plan.subscription_plan_details`,\n    user\n  );\n};\n\n// Subscription plan\nexport const buySubscription = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.subscription_plan.create_product_payment`,\n    user\n  );\n};\n\n// Password change\nexport const passwordchange = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.profile.change_user_password`,\n    user\n  );\n};\n\n// Create support ticket\nexport const createsupportticket = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.support.create_support_ticket`,\n    user\n  );\n};\n\n// Create support ticket\nexport const getSupportTicket = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.support.get_support_ticket`,\n    user\n  );\n};\n\n// get Deck score\nexport const getDeckscore = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.deck_score.get_deck_score`,\n    user\n  );\n};\n\n// get Deck score\nexport const setProfileImage = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.profile.set_profile_image`,\n    user\n  );\n};\n\n//get paymentdetails\nexport const getpaymentdetails = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.subscription_plan.get_payment_details`,\n    user\n  );\n};\n\n// mNotification Details\nexport const mNotificationDetails = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"GET\",\n    `${BASE_URL}/api/method/deck_review.custom_api.product_notification.get_notification_details`\n  );\n};\n\n//get user notifications\nexport const getusernotifications = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.product_notification.get_user_notifications`,\n    user\n  );\n};\n\n//get user notifications\nexport const paymentordercreate = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.payment_order.create_order`,\n    user\n  );\n};\n//Get Deals\nexport const mGetDeals = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.investor_crm.get_recommended_investors`,\n    user\n  );\n};\n\n//Get Deals Shortlist\nexport const mGetDealsShortlist = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.investor_crm.crm_status_move`,\n    user\n  );\n};\n\n//   CRM List\nexport const mCRMList = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.investor_crm.get_investor_crm_status_wise`,\n    user\n  );\n};\n\n//   CRM delete\nexport const mCRMDelete = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.investor_crm.crm_status_move`,\n    user\n  );\n};\n\n//   CRM Status Change\nexport const mCRMStatus = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.investor_crm.crm_status_move`,\n    user\n  );\n};\n\n// get Deck score\nexport const getscorecard = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.score_card.process_score_card_image`,\n    user\n  );\n};\n\n// get deck score meter\nexport const getscoremeter = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.deck_upload.get_deck_score_meter`,\n    user\n  );\n};\n\n// get Deck score\nexport const getPdfURL = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.deck_upload.get_deck_pdf`,\n    user\n  );\n};\n\n// get Chat List\nexport const getChatlist = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.chat_conversation.get_chat_list`,\n    user\n  );\n};\n\nexport const getchatconversation = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.chat_conversation.process_chat_conversation`,\n    user\n  );\n};\n\nexport const getchatconversationlist = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.chat_conversation.get_chat_conversation_list`,\n    user\n  );\n};\n\nexport const userviewstatus = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.profile.update_user_view_status`,\n    user\n  );\n};\n\nexport const notificationDelete = async (user) => {\n  console.log(user);\n  return await commonAPI(\n    \"POST\",\n    `${BASE_URL}/api/method/deck_review.custom_api.product_notification.del_user_notification`,\n    user\n  );\n};\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgNewIcClose(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 18,\n    height: 19,\n    viewBox: \"0 0 18 19\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M7.28834 9.43775L0.110429 0H3.14724L7.97853 6.47444C8.29141 6.88947 8.50307 7.22979 8.6135 7.49541C8.72393 7.74443 8.77914 8.02665 8.77914 8.34207H9.22086C9.22086 8.02665 9.27607 7.74443 9.3865 7.49541C9.49693 7.22979 9.70859 6.88947 10.0215 6.47444L14.8528 0H17.8896L10.7117 9.43775L18 19H14.9908L10.2423 12.7995C9.83742 12.2682 9.56135 11.8615 9.41411 11.5793C9.28528 11.2805 9.22086 10.9567 9.22086 10.6081H8.77914C8.77914 10.9567 8.70552 11.2805 8.55828 11.5793C8.42945 11.8615 8.16258 12.2682 7.75767 12.7995L3.0092 19H0L7.28834 9.43775Z\",\n    fill: \"#0135E3\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgNewIcClose);\nexport default __webpack_public_path__ + \"static/media/new_ic_close.61c497433bd2f50fafec2b66216d65dc.svg\";\nexport { ForwardRef as ReactComponent };","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n  return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  function next() {\n    while (env.stack.length) {\n      var rec = env.stack.pop();\n      try {\n        var result = rec.dispose && rec.dispose.call(rec.value);\n        if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n      }\n      catch (e) {\n          fail(e);\n      }\n    }\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n};\n","export const COMMON_MIME_TYPES = new Map([\n    // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n    ['aac', 'audio/aac'],\n    ['abw', 'application/x-abiword'],\n    ['arc', 'application/x-freearc'],\n    ['avif', 'image/avif'],\n    ['avi', 'video/x-msvideo'],\n    ['azw', 'application/vnd.amazon.ebook'],\n    ['bin', 'application/octet-stream'],\n    ['bmp', 'image/bmp'],\n    ['bz', 'application/x-bzip'],\n    ['bz2', 'application/x-bzip2'],\n    ['cda', 'application/x-cdf'],\n    ['csh', 'application/x-csh'],\n    ['css', 'text/css'],\n    ['csv', 'text/csv'],\n    ['doc', 'application/msword'],\n    ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n    ['eot', 'application/vnd.ms-fontobject'],\n    ['epub', 'application/epub+zip'],\n    ['gz', 'application/gzip'],\n    ['gif', 'image/gif'],\n    ['heic', 'image/heic'],\n    ['heif', 'image/heif'],\n    ['htm', 'text/html'],\n    ['html', 'text/html'],\n    ['ico', 'image/vnd.microsoft.icon'],\n    ['ics', 'text/calendar'],\n    ['jar', 'application/java-archive'],\n    ['jpeg', 'image/jpeg'],\n    ['jpg', 'image/jpeg'],\n    ['js', 'text/javascript'],\n    ['json', 'application/json'],\n    ['jsonld', 'application/ld+json'],\n    ['mid', 'audio/midi'],\n    ['midi', 'audio/midi'],\n    ['mjs', 'text/javascript'],\n    ['mp3', 'audio/mpeg'],\n    ['mp4', 'video/mp4'],\n    ['mpeg', 'video/mpeg'],\n    ['mpkg', 'application/vnd.apple.installer+xml'],\n    ['odp', 'application/vnd.oasis.opendocument.presentation'],\n    ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n    ['odt', 'application/vnd.oasis.opendocument.text'],\n    ['oga', 'audio/ogg'],\n    ['ogv', 'video/ogg'],\n    ['ogx', 'application/ogg'],\n    ['opus', 'audio/opus'],\n    ['otf', 'font/otf'],\n    ['png', 'image/png'],\n    ['pdf', 'application/pdf'],\n    ['php', 'application/x-httpd-php'],\n    ['ppt', 'application/vnd.ms-powerpoint'],\n    ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n    ['rar', 'application/vnd.rar'],\n    ['rtf', 'application/rtf'],\n    ['sh', 'application/x-sh'],\n    ['svg', 'image/svg+xml'],\n    ['swf', 'application/x-shockwave-flash'],\n    ['tar', 'application/x-tar'],\n    ['tif', 'image/tiff'],\n    ['tiff', 'image/tiff'],\n    ['ts', 'video/mp2t'],\n    ['ttf', 'font/ttf'],\n    ['txt', 'text/plain'],\n    ['vsd', 'application/vnd.visio'],\n    ['wav', 'audio/wav'],\n    ['weba', 'audio/webm'],\n    ['webm', 'video/webm'],\n    ['webp', 'image/webp'],\n    ['woff', 'font/woff'],\n    ['woff2', 'font/woff2'],\n    ['xhtml', 'application/xhtml+xml'],\n    ['xls', 'application/vnd.ms-excel'],\n    ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n    ['xml', 'application/xml'],\n    ['xul', 'application/vnd.mozilla.xul+xml'],\n    ['zip', 'application/zip'],\n    ['7z', 'application/x-7z-compressed'],\n\n    // Others\n    ['mkv', 'video/x-matroska'],\n    ['mov', 'video/quicktime'],\n    ['msg', 'application/vnd.ms-outlook']\n]);\n\n\nexport function toFileWithPath(file: FileWithPath, path?: string): FileWithPath {\n    const f = withMimeType(file);\n    if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n        const {webkitRelativePath} = file;\n        Object.defineProperty(f, 'path', {\n            value: typeof path === 'string'\n                ? path\n                // If <input webkitdirectory> is set,\n                // the File will have a {webkitRelativePath} property\n                // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n                : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n                    ? webkitRelativePath\n                    : file.name,\n            writable: false,\n            configurable: false,\n            enumerable: true\n        });\n    }\n\n    return f;\n}\n\nexport interface FileWithPath extends File {\n    readonly path?: string;\n}\n\nfunction withMimeType(file: FileWithPath) {\n    const {name} = file;\n    const hasExtension = name && name.lastIndexOf('.') !== -1;\n\n    if (hasExtension && !file.type) {\n        const ext = name.split('.')\n            .pop()!.toLowerCase();\n        const type = COMMON_MIME_TYPES.get(ext);\n        if (type) {\n            Object.defineProperty(file, 'type', {\n                value: type,\n                writable: false,\n                configurable: false,\n                enumerable: true\n            });\n        }\n    }\n\n    return file;\n}\n","import {FileWithPath, toFileWithPath} from './file';\n\n\nconst FILES_TO_IGNORE = [\n    // Thumbnail cache files for macOS and Windows\n    '.DS_Store', // macOs\n    'Thumbs.db'  // Windows\n];\n\n\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport async function fromEvent(evt: Event | any): Promise<(FileWithPath | DataTransferItem)[]> {\n    if (isObject<DragEvent>(evt) && isDataTransfer(evt.dataTransfer)) {\n        return getDataTransferFiles(evt.dataTransfer, evt.type);\n    } else if (isChangeEvt(evt)) {\n        return getInputFiles(evt);\n    } else if (Array.isArray(evt) && evt.every(item => 'getFile' in item && typeof item.getFile === 'function')) {\n        return getFsHandleFiles(evt)\n    }\n    return [];\n}\n\nfunction isDataTransfer(value: any): value is DataTransfer {\n    return isObject(value);\n}\n\nfunction isChangeEvt(value: any): value is Event {\n    return isObject<Event>(value) && isObject(value.target);\n}\n\nfunction isObject<T>(v: any): v is T {\n    return typeof v === 'object' && v !== null\n}\n\nfunction getInputFiles(evt: Event) {\n    return fromList<FileWithPath>((evt.target as HTMLInputElement).files).map(file => toFileWithPath(file));\n}\n\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nasync function getFsHandleFiles(handles: any[]) {\n    const files = await Promise.all(handles.map(h => h.getFile()));\n    return files.map(file => toFileWithPath(file));\n}\n\n\nasync function getDataTransferFiles(dt: DataTransfer, type: string) {\n    // IE11 does not support dataTransfer.items\n    // See https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n    if (dt.items) {\n        const items = fromList<DataTransferItem>(dt.items)\n            .filter(item => item.kind === 'file');\n        // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n        // only 'dragstart' and 'drop' has access to the data (source node)\n        if (type !== 'drop') {\n            return items;\n        }\n        const files = await Promise.all(items.map(toFilePromises));\n        return noIgnoredFiles(flatten<FileWithPath>(files));\n    }\n\n    return noIgnoredFiles(fromList<FileWithPath>(dt.files)\n        .map(file => toFileWithPath(file)));\n}\n\nfunction noIgnoredFiles(files: FileWithPath[]) {\n    return files.filter(file => FILES_TO_IGNORE.indexOf(file.name) === -1);\n}\n\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList<T>(items: DataTransferItemList | FileList | null): T[] {\n    if (items === null) {\n        return [];\n    }\n\n    const files = [];\n\n    // tslint:disable: prefer-for-of\n    for (let i = 0; i < items.length; i++) {\n        const file = items[i];\n        files.push(file);\n    }\n\n    return files as any;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item: DataTransferItem) {\n    if (typeof item.webkitGetAsEntry !== 'function') {\n        return fromDataTransferItem(item);\n    }\n\n    const entry = item.webkitGetAsEntry();\n\n    // Safari supports dropping an image node from a different window and can be retrieved using\n    // the DataTransferItem.getAsFile() API\n    // NOTE: FileSystemEntry.file() throws if trying to get the file\n    if (entry && entry.isDirectory) {\n        return fromDirEntry(entry) as any;\n    }\n\n    return fromDataTransferItem(item);\n}\n\nfunction flatten<T>(items: any[]): T[] {\n    return items.reduce((acc, files) => [\n        ...acc,\n        ...(Array.isArray(files) ? flatten(files) : [files])\n    ], []);\n}\n\nfunction fromDataTransferItem(item: DataTransferItem) {\n    const file = item.getAsFile();\n    if (!file) {\n        return Promise.reject(`${item} is not a File`);\n    }\n    const fwp = toFileWithPath(file);\n    return Promise.resolve(fwp);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nasync function fromEntry(entry: any) {\n    return entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry: any) {\n    const reader = entry.createReader();\n\n    return new Promise<FileArray[]>((resolve, reject) => {\n        const entries: Promise<FileValue[]>[] = [];\n\n        function readEntries() {\n            // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n            // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n            reader.readEntries(async (batch: any[]) => {\n                if (!batch.length) {\n                    // Done reading directory\n                    try {\n                        const files = await Promise.all(entries);\n                        resolve(files);\n                    } catch (err) {\n                        reject(err);\n                    }\n                } else {\n                    const items = Promise.all(batch.map(fromEntry));\n                    entries.push(items);\n\n                    // Continue reading\n                    readEntries();\n                }\n            }, (err: any) => {\n                reject(err);\n            });\n        }\n\n        readEntries();\n    });\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nasync function fromFileEntry(entry: any) {\n    return new Promise<FileWithPath>((resolve, reject) => {\n        entry.file((file: FileWithPath) => {\n            const fwp = toFileWithPath(file, entry.fullPath);\n            resolve(fwp);\n        }, (err: any) => {\n            reject(err);\n        });\n    });\n}\n\n// Infinite type recursion\n// https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540\ninterface FileArray extends Array<FileValue> {}\ntype FileValue = FileWithPath\n    | FileArray[];\n","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\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; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_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; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from \"attr-accept\"; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n  FileInvalidType: FILE_INVALID_TYPE,\n  FileTooLarge: FILE_TOO_LARGE,\n  FileTooSmall: FILE_TOO_SMALL,\n  TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n  accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n  var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(\", \")) : accept;\n  return {\n    code: FILE_INVALID_TYPE,\n    message: \"File type must be \".concat(messageSuffix)\n  };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n  return {\n    code: FILE_TOO_LARGE,\n    message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n  };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n  return {\n    code: FILE_TOO_SMALL,\n    message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n  };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n  code: TOO_MANY_FILES,\n  message: \"Too many files\"\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n  var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n  return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n  if (isDefined(file.size)) {\n    if (isDefined(minSize) && isDefined(maxSize)) {\n      if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n      if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n    } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n  }\n\n  return [true, null];\n}\n\nfunction isDefined(value) {\n  return value !== undefined && value !== null;\n}\n/**\n *\n * @param {object} options\n * @param {File[]} options.files\n * @param {string|string[]} [options.accept]\n * @param {number} [options.minSize]\n * @param {number} [options.maxSize]\n * @param {boolean} [options.multiple]\n * @param {number} [options.maxFiles]\n * @param {(f: File) => FileError|FileError[]|null} [options.validator]\n * @returns\n */\n\n\nexport function allFilesAccepted(_ref) {\n  var files = _ref.files,\n      accept = _ref.accept,\n      minSize = _ref.minSize,\n      maxSize = _ref.maxSize,\n      multiple = _ref.multiple,\n      maxFiles = _ref.maxFiles,\n      validator = _ref.validator;\n\n  if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n    return false;\n  }\n\n  return files.every(function (file) {\n    var _fileAccepted = fileAccepted(file, accept),\n        _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n        accepted = _fileAccepted2[0];\n\n    var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n        _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n        sizeMatch = _fileMatchSize2[0];\n\n    var customErrors = validator ? validator(file) : null;\n    return accepted && sizeMatch && !customErrors;\n  });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n  if (typeof event.isPropagationStopped === \"function\") {\n    return event.isPropagationStopped();\n  } else if (typeof event.cancelBubble !== \"undefined\") {\n    return event.cancelBubble;\n  }\n\n  return false;\n}\nexport function isEvtWithFiles(event) {\n  if (!event.dataTransfer) {\n    return !!event.target && !!event.target.files;\n  } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n  // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n  return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n    return type === \"Files\" || type === \"application/x-moz-file\";\n  });\n}\nexport function isKindFile(item) {\n  return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n  event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n  return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n  return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n  var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n  return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n  for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n    fns[_key] = arguments[_key];\n  }\n\n  return function (event) {\n    for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n\n    return fns.some(function (fn) {\n      if (!isPropagationStopped(event) && fn) {\n        fn.apply(void 0, [event].concat(args));\n      }\n\n      return isPropagationStopped(event);\n    });\n  };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n  return \"showOpenFilePicker\" in window;\n}\n/**\n * Convert the `{accept}` dropzone prop to the\n * `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n *\n * @param {AcceptProp} accept\n * @returns {{accept: string[]}[]}\n */\n\nexport function pickerOptionsFromAccept(accept) {\n  if (isDefined(accept)) {\n    var acceptForPicker = Object.entries(accept).filter(function (_ref2) {\n      var _ref3 = _slicedToArray(_ref2, 2),\n          mimeType = _ref3[0],\n          ext = _ref3[1];\n\n      var ok = true;\n\n      if (!isMIMEType(mimeType)) {\n        console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.\"));\n        ok = false;\n      }\n\n      if (!Array.isArray(ext) || !ext.every(isExt)) {\n        console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because an invalid file extension was provided.\"));\n        ok = false;\n      }\n\n      return ok;\n    }).reduce(function (agg, _ref4) {\n      var _ref5 = _slicedToArray(_ref4, 2),\n          mimeType = _ref5[0],\n          ext = _ref5[1];\n\n      return _objectSpread(_objectSpread({}, agg), {}, _defineProperty({}, mimeType, ext));\n    }, {});\n    return [{\n      // description is required due to https://crbug.com/1264708\n      description: \"Files\",\n      accept: acceptForPicker\n    }];\n  }\n\n  return accept;\n}\n/**\n * Convert the `{accept}` dropzone prop to an array of MIME types/extensions.\n * @param {AcceptProp} accept\n * @returns {string}\n */\n\nexport function acceptPropAsAcceptAttr(accept) {\n  if (isDefined(accept)) {\n    return Object.entries(accept).reduce(function (a, _ref6) {\n      var _ref7 = _slicedToArray(_ref6, 2),\n          mimeType = _ref7[0],\n          ext = _ref7[1];\n\n      return [].concat(_toConsumableArray(a), [mimeType], _toConsumableArray(ext));\n    }, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these\n    .filter(function (v) {\n      return isMIMEType(v) || isExt(v);\n    }).join(\",\");\n  }\n\n  return undefined;\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n  return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n  return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}\n/**\n * Check if v is a MIME type string.\n *\n * See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.\n *\n * @param {string} v\n */\n\nexport function isMIMEType(v) {\n  return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\n/**\n * Check if v is a file extension.\n * @param {string} v\n */\n\nexport function isExt(v) {\n  return /^.*\\.[\\w]+$/.test(v);\n}\n/**\n * @typedef {Object.<string, string[]>} AcceptProp\n */\n\n/**\n * @typedef {object} FileError\n * @property {string} message\n * @property {ErrorCode|string} code\n */\n\n/**\n * @typedef {\"file-invalid-type\"|\"file-too-large\"|\"file-too-small\"|\"too-many-files\"} ErrorCode\n */","var _excluded = [\"children\"],\n    _excluded2 = [\"open\"],\n    _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n    _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_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; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\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; }\n\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; }\n\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; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { acceptPropAsAcceptAttr, allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, pickerOptionsFromAccept, TOO_MANY_FILES_REJECTION } from \"./utils/index\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n *   {({getRootProps, getInputProps}) => (\n *     <div {...getRootProps()}>\n *       <input {...getInputProps()} />\n *       <p>Drag 'n' drop some files here, or click to select files</p>\n *     </div>\n *   )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n  var children = _ref.children,\n      params = _objectWithoutProperties(_ref, _excluded);\n\n  var _useDropzone = useDropzone(params),\n      open = _useDropzone.open,\n      props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n  useImperativeHandle(ref, function () {\n    return {\n      open: open\n    };\n  }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n  return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n    open: open\n  })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n  disabled: false,\n  getFilesFromEvent: fromEvent,\n  maxSize: Infinity,\n  minSize: 0,\n  multiple: true,\n  maxFiles: 0,\n  preventDropOnDocument: true,\n  noClick: false,\n  noKeyboard: false,\n  noDrag: false,\n  noDragEventsBubbling: false,\n  validator: null,\n  useFsAccessApi: true,\n  autoFocus: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n  /**\n   * Render function that exposes the dropzone state and prop getter fns\n   *\n   * @param {object} params\n   * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n   * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n   * @param {Function} params.open Open the native file selection dialog\n   * @param {boolean} params.isFocused Dropzone area is in focus\n   * @param {boolean} params.isFileDialogActive File dialog is opened\n   * @param {boolean} params.isDragActive Active drag is in progress\n   * @param {boolean} params.isDragAccept Dragged files are accepted\n   * @param {boolean} params.isDragReject Some dragged files are rejected\n   * @param {File[]} params.acceptedFiles Accepted files\n   * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n   */\n  children: PropTypes.func,\n\n  /**\n   * Set accepted file types.\n   * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n   * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n   * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n   * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n   */\n  accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n\n  /**\n   * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n   */\n  multiple: PropTypes.bool,\n\n  /**\n   * If false, allow dropped items to take over the current browser window\n   */\n  preventDropOnDocument: PropTypes.bool,\n\n  /**\n   * If true, disables click to open the native file selection dialog\n   */\n  noClick: PropTypes.bool,\n\n  /**\n   * If true, disables SPACE/ENTER to open the native file selection dialog.\n   * Note that it also stops tracking the focus state.\n   */\n  noKeyboard: PropTypes.bool,\n\n  /**\n   * If true, disables drag 'n' drop\n   */\n  noDrag: PropTypes.bool,\n\n  /**\n   * If true, stops drag event propagation to parents\n   */\n  noDragEventsBubbling: PropTypes.bool,\n\n  /**\n   * Minimum file size (in bytes)\n   */\n  minSize: PropTypes.number,\n\n  /**\n   * Maximum file size (in bytes)\n   */\n  maxSize: PropTypes.number,\n\n  /**\n   * Maximum accepted number of files\n   * The default value is 0 which means there is no limitation to how many files are accepted.\n   */\n  maxFiles: PropTypes.number,\n\n  /**\n   * Enable/disable the dropzone\n   */\n  disabled: PropTypes.bool,\n\n  /**\n   * Use this to provide a custom file aggregator\n   *\n   * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n   */\n  getFilesFromEvent: PropTypes.func,\n\n  /**\n   * Cb for when closing the file dialog with no selection\n   */\n  onFileDialogCancel: PropTypes.func,\n\n  /**\n   * Cb for when opening the file dialog\n   */\n  onFileDialogOpen: PropTypes.func,\n\n  /**\n   * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n   * to open the file picker instead of using an `<input type=\"file\">` click event.\n   */\n  useFsAccessApi: PropTypes.bool,\n\n  /**\n   * Set to true to focus the root element on render\n   */\n  autoFocus: PropTypes.bool,\n\n  /**\n   * Cb for when the `dragenter` event occurs.\n   *\n   * @param {DragEvent} event\n   */\n  onDragEnter: PropTypes.func,\n\n  /**\n   * Cb for when the `dragleave` event occurs\n   *\n   * @param {DragEvent} event\n   */\n  onDragLeave: PropTypes.func,\n\n  /**\n   * Cb for when the `dragover` event occurs\n   *\n   * @param {DragEvent} event\n   */\n  onDragOver: PropTypes.func,\n\n  /**\n   * Cb for when the `drop` event occurs.\n   * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n   *\n   * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n   * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n   * If `multiple` is set to false and additional files are dropped,\n   * all files besides the first will be rejected.\n   * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n   *\n   * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n   * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n   *\n   * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n   * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n   *\n   * ```js\n   * function onDrop(acceptedFiles) {\n   *   const req = request.post('/upload')\n   *   acceptedFiles.forEach(file => {\n   *     req.attach(file.name, file)\n   *   })\n   *   req.end(callback)\n   * }\n   * ```\n   *\n   * @param {File[]} acceptedFiles\n   * @param {FileRejection[]} fileRejections\n   * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n   */\n  onDrop: PropTypes.func,\n\n  /**\n   * Cb for when the `drop` event occurs.\n   * Note that if no files are accepted, this callback is not invoked.\n   *\n   * @param {File[]} files\n   * @param {(DragEvent|Event)} event\n   */\n  onDropAccepted: PropTypes.func,\n\n  /**\n   * Cb for when the `drop` event occurs.\n   * Note that if no files are rejected, this callback is not invoked.\n   *\n   * @param {FileRejection[]} fileRejections\n   * @param {(DragEvent|Event)} event\n   */\n  onDropRejected: PropTypes.func,\n\n  /**\n   * Cb for when there's some error from any of the promises.\n   *\n   * @param {Error} error\n   */\n  onError: PropTypes.func,\n\n  /**\n   * Custom validation function. It must return null if there's no errors.\n   * @param {File} file\n   * @returns {FileError|FileError[]|null}\n   */\n  validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state.\n *\n * @typedef {object} DropzoneState\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\n/**\n * An object with the dropzone methods.\n *\n * @typedef {object} DropzoneMethods\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n */\n\nvar initialState = {\n  isFocused: false,\n  isFileDialogActive: false,\n  isDragActive: false,\n  isDragAccept: false,\n  isDragReject: false,\n  acceptedFiles: [],\n  fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n *   const {getRootProps, getInputProps} = useDropzone({\n *     onDrop: acceptedFiles => {\n *       // do something with the File objects, e.g. upload to some server\n *     }\n *   });\n *   return (\n *     <div {...getRootProps()}>\n *       <input {...getInputProps()} />\n *       <p>Drag and drop some files here, or click to select files</p>\n *     </div>\n *   )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {import(\"./utils\").AcceptProp} [props.accept] Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n * @param {boolean} autoFocus Set to true to auto focus the root element.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n *   const req = request.post('/upload')\n *   acceptedFiles.forEach(file => {\n *     req.attach(file.name, file)\n *   })\n *   req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n * @param {(error: Error) => void} [props.onError]\n *\n * @returns {DropzoneState & DropzoneMethods}\n */\n\nexport function useDropzone() {\n  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n  var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n      accept = _defaultProps$props.accept,\n      disabled = _defaultProps$props.disabled,\n      getFilesFromEvent = _defaultProps$props.getFilesFromEvent,\n      maxSize = _defaultProps$props.maxSize,\n      minSize = _defaultProps$props.minSize,\n      multiple = _defaultProps$props.multiple,\n      maxFiles = _defaultProps$props.maxFiles,\n      onDragEnter = _defaultProps$props.onDragEnter,\n      onDragLeave = _defaultProps$props.onDragLeave,\n      onDragOver = _defaultProps$props.onDragOver,\n      onDrop = _defaultProps$props.onDrop,\n      onDropAccepted = _defaultProps$props.onDropAccepted,\n      onDropRejected = _defaultProps$props.onDropRejected,\n      onFileDialogCancel = _defaultProps$props.onFileDialogCancel,\n      onFileDialogOpen = _defaultProps$props.onFileDialogOpen,\n      useFsAccessApi = _defaultProps$props.useFsAccessApi,\n      autoFocus = _defaultProps$props.autoFocus,\n      preventDropOnDocument = _defaultProps$props.preventDropOnDocument,\n      noClick = _defaultProps$props.noClick,\n      noKeyboard = _defaultProps$props.noKeyboard,\n      noDrag = _defaultProps$props.noDrag,\n      noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,\n      onError = _defaultProps$props.onError,\n      validator = _defaultProps$props.validator;\n\n  var acceptAttr = useMemo(function () {\n    return acceptPropAsAcceptAttr(accept);\n  }, [accept]);\n  var pickerTypes = useMemo(function () {\n    return pickerOptionsFromAccept(accept);\n  }, [accept]);\n  var onFileDialogOpenCb = useMemo(function () {\n    return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n  }, [onFileDialogOpen]);\n  var onFileDialogCancelCb = useMemo(function () {\n    return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n  }, [onFileDialogCancel]);\n  /**\n   * @constant\n   * @type {React.MutableRefObject<HTMLElement>}\n   */\n\n  var rootRef = useRef(null);\n  var inputRef = useRef(null);\n\n  var _useReducer = useReducer(reducer, initialState),\n      _useReducer2 = _slicedToArray(_useReducer, 2),\n      state = _useReducer2[0],\n      dispatch = _useReducer2[1];\n\n  var isFocused = state.isFocused,\n      isFileDialogActive = state.isFileDialogActive;\n  var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n  var onWindowFocus = function onWindowFocus() {\n    // Execute the timeout only if the file dialog is opened in the browser\n    if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n      setTimeout(function () {\n        if (inputRef.current) {\n          var files = inputRef.current.files;\n\n          if (!files.length) {\n            dispatch({\n              type: \"closeDialog\"\n            });\n            onFileDialogCancelCb();\n          }\n        }\n      }, 300);\n    }\n  };\n\n  useEffect(function () {\n    window.addEventListener(\"focus\", onWindowFocus, false);\n    return function () {\n      window.removeEventListener(\"focus\", onWindowFocus, false);\n    };\n  }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n  var dragTargetsRef = useRef([]);\n\n  var onDocumentDrop = function onDocumentDrop(event) {\n    if (rootRef.current && rootRef.current.contains(event.target)) {\n      // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n      return;\n    }\n\n    event.preventDefault();\n    dragTargetsRef.current = [];\n  };\n\n  useEffect(function () {\n    if (preventDropOnDocument) {\n      document.addEventListener(\"dragover\", onDocumentDragOver, false);\n      document.addEventListener(\"drop\", onDocumentDrop, false);\n    }\n\n    return function () {\n      if (preventDropOnDocument) {\n        document.removeEventListener(\"dragover\", onDocumentDragOver);\n        document.removeEventListener(\"drop\", onDocumentDrop);\n      }\n    };\n  }, [rootRef, preventDropOnDocument]); // Auto focus the root when autoFocus is true\n\n  useEffect(function () {\n    if (!disabled && autoFocus && rootRef.current) {\n      rootRef.current.focus();\n    }\n\n    return function () {};\n  }, [rootRef, autoFocus, disabled]);\n  var onErrCb = useCallback(function (e) {\n    if (onError) {\n      onError(e);\n    } else {\n      // Let the user know something's gone wrong if they haven't provided the onError cb.\n      console.error(e);\n    }\n  }, [onError]);\n  var onDragEnterCb = useCallback(function (event) {\n    event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n    event.persist();\n    stopPropagation(event);\n    dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n    if (isEvtWithFiles(event)) {\n      Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n        if (isPropagationStopped(event) && !noDragEventsBubbling) {\n          return;\n        }\n\n        var fileCount = files.length;\n        var isDragAccept = fileCount > 0 && allFilesAccepted({\n          files: files,\n          accept: acceptAttr,\n          minSize: minSize,\n          maxSize: maxSize,\n          multiple: multiple,\n          maxFiles: maxFiles,\n          validator: validator\n        });\n        var isDragReject = fileCount > 0 && !isDragAccept;\n        dispatch({\n          isDragAccept: isDragAccept,\n          isDragReject: isDragReject,\n          isDragActive: true,\n          type: \"setDraggedFiles\"\n        });\n\n        if (onDragEnter) {\n          onDragEnter(event);\n        }\n      }).catch(function (e) {\n        return onErrCb(e);\n      });\n    }\n  }, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);\n  var onDragOverCb = useCallback(function (event) {\n    event.preventDefault();\n    event.persist();\n    stopPropagation(event);\n    var hasFiles = isEvtWithFiles(event);\n\n    if (hasFiles && event.dataTransfer) {\n      try {\n        event.dataTransfer.dropEffect = \"copy\";\n      } catch (_unused) {}\n      /* eslint-disable-line no-empty */\n\n    }\n\n    if (hasFiles && onDragOver) {\n      onDragOver(event);\n    }\n\n    return false;\n  }, [onDragOver, noDragEventsBubbling]);\n  var onDragLeaveCb = useCallback(function (event) {\n    event.preventDefault();\n    event.persist();\n    stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n    var targets = dragTargetsRef.current.filter(function (target) {\n      return rootRef.current && rootRef.current.contains(target);\n    }); // Make sure to remove a target present multiple times only once\n    // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n    var targetIdx = targets.indexOf(event.target);\n\n    if (targetIdx !== -1) {\n      targets.splice(targetIdx, 1);\n    }\n\n    dragTargetsRef.current = targets;\n\n    if (targets.length > 0) {\n      return;\n    }\n\n    dispatch({\n      type: \"setDraggedFiles\",\n      isDragActive: false,\n      isDragAccept: false,\n      isDragReject: false\n    });\n\n    if (isEvtWithFiles(event) && onDragLeave) {\n      onDragLeave(event);\n    }\n  }, [rootRef, onDragLeave, noDragEventsBubbling]);\n  var setFiles = useCallback(function (files, event) {\n    var acceptedFiles = [];\n    var fileRejections = [];\n    files.forEach(function (file) {\n      var _fileAccepted = fileAccepted(file, acceptAttr),\n          _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n          accepted = _fileAccepted2[0],\n          acceptError = _fileAccepted2[1];\n\n      var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n          _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n          sizeMatch = _fileMatchSize2[0],\n          sizeError = _fileMatchSize2[1];\n\n      var customErrors = validator ? validator(file) : null;\n\n      if (accepted && sizeMatch && !customErrors) {\n        acceptedFiles.push(file);\n      } else {\n        var errors = [acceptError, sizeError];\n\n        if (customErrors) {\n          errors = errors.concat(customErrors);\n        }\n\n        fileRejections.push({\n          file: file,\n          errors: errors.filter(function (e) {\n            return e;\n          })\n        });\n      }\n    });\n\n    if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n      // Reject everything and empty accepted files\n      acceptedFiles.forEach(function (file) {\n        fileRejections.push({\n          file: file,\n          errors: [TOO_MANY_FILES_REJECTION]\n        });\n      });\n      acceptedFiles.splice(0);\n    }\n\n    dispatch({\n      acceptedFiles: acceptedFiles,\n      fileRejections: fileRejections,\n      type: \"setFiles\"\n    });\n\n    if (onDrop) {\n      onDrop(acceptedFiles, fileRejections, event);\n    }\n\n    if (fileRejections.length > 0 && onDropRejected) {\n      onDropRejected(fileRejections, event);\n    }\n\n    if (acceptedFiles.length > 0 && onDropAccepted) {\n      onDropAccepted(acceptedFiles, event);\n    }\n  }, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n  var onDropCb = useCallback(function (event) {\n    event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n    event.persist();\n    stopPropagation(event);\n    dragTargetsRef.current = [];\n\n    if (isEvtWithFiles(event)) {\n      Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n        if (isPropagationStopped(event) && !noDragEventsBubbling) {\n          return;\n        }\n\n        setFiles(files, event);\n      }).catch(function (e) {\n        return onErrCb(e);\n      });\n    }\n\n    dispatch({\n      type: \"reset\"\n    });\n  }, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n  var openFileDialog = useCallback(function () {\n    // No point to use FS access APIs if context is not secure\n    // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n    if (fsAccessApiWorksRef.current) {\n      dispatch({\n        type: \"openDialog\"\n      });\n      onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n      var opts = {\n        multiple: multiple,\n        types: pickerTypes\n      };\n      window.showOpenFilePicker(opts).then(function (handles) {\n        return getFilesFromEvent(handles);\n      }).then(function (files) {\n        setFiles(files, null);\n        dispatch({\n          type: \"closeDialog\"\n        });\n      }).catch(function (e) {\n        // AbortError means the user canceled\n        if (isAbort(e)) {\n          onFileDialogCancelCb(e);\n          dispatch({\n            type: \"closeDialog\"\n          });\n        } else if (isSecurityError(e)) {\n          fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n          // Try using the input\n\n          if (inputRef.current) {\n            inputRef.current.value = null;\n            inputRef.current.click();\n          } else {\n            onErrCb(new Error(\"Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided.\"));\n          }\n        } else {\n          onErrCb(e);\n        }\n      });\n      return;\n    }\n\n    if (inputRef.current) {\n      dispatch({\n        type: \"openDialog\"\n      });\n      onFileDialogOpenCb();\n      inputRef.current.value = null;\n      inputRef.current.click();\n    }\n  }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n  var onKeyDownCb = useCallback(function (event) {\n    // Ignore keyboard events bubbling up the DOM tree\n    if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n      return;\n    }\n\n    if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n      event.preventDefault();\n      openFileDialog();\n    }\n  }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n  var onFocusCb = useCallback(function () {\n    dispatch({\n      type: \"focus\"\n    });\n  }, []);\n  var onBlurCb = useCallback(function () {\n    dispatch({\n      type: \"blur\"\n    });\n  }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n  var onClickCb = useCallback(function () {\n    if (noClick) {\n      return;\n    } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n    // to ensure React can handle state changes\n    // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n    if (isIeOrEdge()) {\n      setTimeout(openFileDialog, 0);\n    } else {\n      openFileDialog();\n    }\n  }, [noClick, openFileDialog]);\n\n  var composeHandler = function composeHandler(fn) {\n    return disabled ? null : fn;\n  };\n\n  var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n    return noKeyboard ? null : composeHandler(fn);\n  };\n\n  var composeDragHandler = function composeDragHandler(fn) {\n    return noDrag ? null : composeHandler(fn);\n  };\n\n  var stopPropagation = function stopPropagation(event) {\n    if (noDragEventsBubbling) {\n      event.stopPropagation();\n    }\n  };\n\n  var getRootProps = useMemo(function () {\n    return function () {\n      var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref2$refKey = _ref2.refKey,\n          refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n          role = _ref2.role,\n          onKeyDown = _ref2.onKeyDown,\n          onFocus = _ref2.onFocus,\n          onBlur = _ref2.onBlur,\n          onClick = _ref2.onClick,\n          onDragEnter = _ref2.onDragEnter,\n          onDragOver = _ref2.onDragOver,\n          onDragLeave = _ref2.onDragLeave,\n          onDrop = _ref2.onDrop,\n          rest = _objectWithoutProperties(_ref2, _excluded3);\n\n      return _objectSpread(_objectSpread(_defineProperty({\n        onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n        onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n        onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n        onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n        onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n        onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n        onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n        onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n        role: typeof role === \"string\" && role !== \"\" ? role : \"presentation\"\n      }, refKey, rootRef), !disabled && !noKeyboard ? {\n        tabIndex: 0\n      } : {}), rest);\n    };\n  }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n  var onInputElementClick = useCallback(function (event) {\n    event.stopPropagation();\n  }, []);\n  var getInputProps = useMemo(function () {\n    return function () {\n      var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref3$refKey = _ref3.refKey,\n          refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n          onChange = _ref3.onChange,\n          onClick = _ref3.onClick,\n          rest = _objectWithoutProperties(_ref3, _excluded4);\n\n      var inputProps = _defineProperty({\n        accept: acceptAttr,\n        multiple: multiple,\n        type: \"file\",\n        style: {\n          display: \"none\"\n        },\n        onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n        onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n        tabIndex: -1\n      }, refKey, inputRef);\n\n      return _objectSpread(_objectSpread({}, inputProps), rest);\n    };\n  }, [inputRef, accept, multiple, onDropCb, disabled]);\n  return _objectSpread(_objectSpread({}, state), {}, {\n    isFocused: isFocused && !disabled,\n    getRootProps: getRootProps,\n    getInputProps: getInputProps,\n    rootRef: rootRef,\n    inputRef: inputRef,\n    open: composeHandler(openFileDialog)\n  });\n}\n/**\n * @param {DropzoneState} state\n * @param {{type: string} & DropzoneState} action\n * @returns {DropzoneState}\n */\n\nfunction reducer(state, action) {\n  /* istanbul ignore next */\n  switch (action.type) {\n    case \"focus\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isFocused: true\n      });\n\n    case \"blur\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isFocused: false\n      });\n\n    case \"openDialog\":\n      return _objectSpread(_objectSpread({}, initialState), {}, {\n        isFileDialogActive: true\n      });\n\n    case \"closeDialog\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isFileDialogActive: false\n      });\n\n    case \"setDraggedFiles\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        isDragActive: action.isDragActive,\n        isDragAccept: action.isDragAccept,\n        isDragReject: action.isDragReject\n      });\n\n    case \"setFiles\":\n      return _objectSpread(_objectSpread({}, state), {}, {\n        acceptedFiles: action.acceptedFiles,\n        fileRejections: action.fileRejections\n      });\n\n    case \"reset\":\n      return _objectSpread({}, initialState);\n\n    default:\n      return state;\n  }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils\";","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcSparklesGreen(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 21,\n    height: 21,\n    viewBox: \"0 0 21 21\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4.66683 6.33366V9.66699M8.83349 2.16699V5.50033M15.5002 13.8337V17.167M3.00016 8.00033H6.33349M7.16683 3.83366H10.5002M13.8335 15.5003H17.1668M12.1668 6.33366L14.5238 8.69068M16.764 3.62209L17.2354 4.09349C17.5654 4.42351 17.7304 4.58852 17.7923 4.77879C17.8466 4.94616 17.8466 5.12645 17.7923 5.29382C17.7304 5.48409 17.5654 5.6491 17.2354 5.97911L5.93805 17.2765C5.60804 17.6065 5.44303 17.7715 5.25276 17.8333C5.08539 17.8877 4.9051 17.8877 4.73773 17.8333C4.54746 17.7715 4.38245 17.6065 4.05243 17.2765L3.58103 16.8051C3.25102 16.4751 3.08601 16.3101 3.02418 16.1198C2.9698 15.9524 2.9698 15.7721 3.02418 15.6047C3.08601 15.4145 3.25102 15.2495 3.58103 14.9195L14.8784 3.62209C15.2084 3.29208 15.3734 3.12707 15.5637 3.06524C15.7311 3.01086 15.9113 3.01086 16.0787 3.06524C16.269 3.12707 16.434 3.29208 16.764 3.62209Z\",\n    stroke: \"#2A7A5A\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcSparklesGreen);\nexport default __webpack_public_path__ + \"static/media/ic_sparkles_green.0453c25c03b60b2d4202bd2a24048da5.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\n\n// Custom text\nconst TextView = ({ label, isCenter, ismandatory }) => (\n  <div>\n    {\" \"}\n    <span\n      className={`font-PlusJakartaSansRegular font-normal text-mTextColor text-sm  xl:text-base 3xl:text-lg ${\n        isCenter ? \"text-center\" : \"\"\n      }`}\n    >\n      {label}\n    </span>\n    {ismandatory ? (\n      <span className=\"font-PlusJakartaSansRegular text-red-500 text-sm md:text-base xl:text-lg 3xl:text-lg\">\n        *\n      </span>\n    ) : (\n      <span className=\"font-PlusJakartaSansRegular text-red-500 text-sm md:text-base xl:text-lg 3xl:text-lg\"></span>\n    )}\n  </div>\n);\n\nexport default TextView;\n","import React, { useCallback } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as SparklesIcon } from \"../assets/Images/ic_sparkles_green.svg\";\nimport { useNavigate } from \"react-router-dom\";\nimport TextView from \"./TextView\";\n\nconst PdfUploader = ({\n  onFileSelect,\n  Onlogin,\n  hidelogin,\n  isBorder,\n  mClickstatus,\n  subscriptionstatus,\n  balancedeck,\n}) => {\n  var isDisable = false;\n\n  if (subscriptionstatus) {\n    if (balancedeck > 0) {\n      isDisable = true;\n    } else {\n      isDisable = false;\n    }\n  } else {\n    isDisable = true;\n  }\n\n  //alert(balancedeck);\n  const onDrop = useCallback(\n    (acceptedFiles) => {\n      // Ensure that only PDF files are accepted\n      const pdfFiles = acceptedFiles.filter(\n        (file) => file.type === \"application/pdf\"\n      );\n      if (pdfFiles.length > 0) {\n        // alert(pdfFiles[0]);\n        onFileSelect(pdfFiles[0]); // Pass the selected file back to the parent component\n      } else {\n        /// alert(\"Accpet only PDF\");\n      }\n    },\n    [onFileSelect]\n  );\n\n  const { getRootProps, getInputProps, isDragActive } = useDropzone({\n    onDrop,\n\n    accept: {\n      \"application/pdf\": [\".pdf\"], // Accept only PDF files\n    },\n    disabled: balancedeck > 0 ? false : true,\n    // disabled: !subscriptionstatus || balancedeck === 0 ? false : true,\n    // disabled: !subscriptionstatus && balancedeck === 0,\n  });\n\n  const { t } = useTranslation(\"\");\n  const navigate = useNavigate();\n\n  const mBackClick = () => {\n    navigate(\"/login\");\n  };\n\n  return (\n    <div\n      className={`mt-8 border    ${mClickstatus ? \"pointer-events-none\" : \"\"} ${\n        mClickstatus ? \"cursor-not-allowed\" : \"cursor-pointer\"\n      } ${\n        isBorder\n          ? \"h-72 3xl:h-96 border-mBorderColor\"\n          : \"h-72 3xl:h-96 border-white\"\n      } w-full rounded-2xl bg-white justify-center items-center flex flex-col`}\n      {...getRootProps()}\n    >\n      <div className=\"h-14 3xl:h-14 w-3/4 lg:w-1/2 rounded-lg bg-mButtonColorligth items-center justify-center flex px-4 py-3\">\n        <SparklesIcon className=\"w-6 h-6 3xl:w-8 3xl:h-8 flex-shrink-0 cursor-pointer\" />\n        <p className=\"ml-2 font-PlusJakartaSansSemiBold text-mButtonColor text-base 3xl:text-lg\">\n          {\" \"}\n          {t(\"UploadPitchDeck\")}{\" \"}\n        </p>\n      </div>\n      <input\n        {...getInputProps()}\n        className=\"\"\n        id=\"file\"\n        type=\"file\"\n        accept=\".pdf\"\n        style={{ display: \"none\" }}\n      />\n      <div className=\"w-1/2 mt-4\">\n        <div className=\"flex items-center before:flex-1 before:border-t before:border-mBorderColor after:flex-1 after:border-t after:border-mBorderColor\">\n          <p className=\"mx-2 mb-0 text-center font-PlusJakartaSansRegular text-sm  3xl:text-base  text-mTextColorLogin\">\n            {t(\"or\")}\n          </p>\n        </div>\n      </div>\n      <div className=\"w-1/2 mt-4\">\n        <div className=\"mx-2 justify-center items-center w-full flex\">\n          <TextView isCenter={true} label={t(\"draganddrop\")} />\n        </div>\n      </div>\n\n      {!subscriptionstatus || balancedeck === 0 ? (\n        <div class=\"flex flex-col justify-end mt-4\">\n          <p class=\" font-PlusJakartaSansRegular font-normal text-mTextColor text-sm  xl:text-base 3xl:text-lg text-center p-4\">\n            Your subscription end. Please purchase\n          </p>\n        </div>\n      ) : (\n        <div></div>\n      )}\n    </div>\n  );\n};\n\nexport default PdfUploader;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n// import \"./ScrollableView.css\";\n\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/new_ic_close.svg\";\nimport PdfUploader from \"../../Components/PdfUploader\";\nimport { mUploadDeckDashboard } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport { useNavigate } from \"react-router-dom\";\nimport { mTimerValue } from \"../../Utils/Constants\";\n\nconst DashboardDialog = ({ onClose, Userid, onDeckSucess }) => {\n  const { t } = useTranslation(\"\");\n  const [FileName, setFileName] = useState(\"\");\n  const [base64, setBase64] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n  const navigate = useNavigate();\n\n  // Set Progressbar\n  const [progress, setProgress] = useState(0);\n  const [isRunning, setIsRunning] = useState(false);\n\n  const buttonRef = useRef(null);\n\n  const handleFileSelect1 = async (file) => {\n    //  setSelectedFile(file);\n    console.log(file);\n\n    if (!file) {\n      alert(\"Please select a file first!\");\n      return;\n    }\n\n    const base64String = await convertToBase64(file);\n    setBase64(base64String);\n\n    console.log(\"Base64 String:\", base64String);\n\n    var mCropImage = \"\";\n\n    if (base64String.length === 0) {\n      mCropImage = base64String.replace(\"data:application/pdf;base64,\", \"\");\n    } else {\n      mCropImage = base64String.replace(\"data:application/pdf;base64,\", \"\");\n    }\n\n    // console.log(mCropImage);\n    setFileName(file.name);\n    setLoading(false);\n    const response = await mUploadDeckDashboard({\n      deck_name: file.name,\n      deck_doc: mCropImage,\n      user_name: Userid,\n    });\n    console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setIsRunning(true);\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  //Function to convert file to Base64\n  const convertToBase64 = (file) => {\n    console.log(file);\n    return new Promise((resolve, reject) => {\n      const reader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => resolve(reader.result);\n      reader.onerror = (error) => reject(error);\n    });\n  };\n\n  // One min interval\n  useEffect(() => {\n    if (!isRunning) return;\n\n    const intervalTime = mTimerValue / 100; // Update every 0.6 seconds (1% of 60 seconds)\n\n    const interval = setInterval(() => {\n      if (buttonRef.current) {\n        buttonRef.current.click();\n      }\n      setProgress((prevProgress) => {\n        if (prevProgress >= 100) {\n          clearInterval(interval);\n\n          return 100;\n        }\n\n        return prevProgress + 1;\n      });\n    }, intervalTime);\n\n    return () => clearInterval(interval);\n  }, [isRunning]);\n\n  return (\n    <div className=\"fixed inset-0  flex items-center justify-center bg-black bg-opacity-50  z-50\">\n      {/* max-w-sm */}\n      <div className=\"bg-white scroll-view scrollbar-hide  overflow-y-auto h-90 rounded-lg overflow-hidden shadow-xl w-2/5  px-6 py-6 flex-col flex\">\n        <div className=\"justify-end items-end flex \">\n          <div className=\"w-full flex\">\n            <div className=\"w-5/6\">\n              <p className=\"text-left font-OpenSauceSansSemiBold  text-2xl \">\n                {t(\"uploaddeck\")}\n              </p>\n            </div>\n\n            <div className=\"w-1/6 justify-center items-center flex\">\n              <button onClick={onClose}>\n                <CloseIcon className=\"mb-4 \" />\n              </button>\n            </div>\n          </div>\n        </div>\n        <div className=\"mt-8 h-full w-full justify-center items-center flex flex-col \">\n          <PdfUploader onFileSelect={handleFileSelect1} hidelogin={1} />\n\n          <div className=\"mt-3\"></div>\n\n          {progress >= 100 ? (\n            <div ref={buttonRef} onClick={onDeckSucess}></div>\n          ) : (\n            <div></div>\n          )}\n\n          {isRunning ? (\n            <div className=\"flex-col flex p-3 w-full bg-purple-200 rounded-lg\">\n              <div className=\"font-OpenSauceSansRegular text-base text-black items-center justify-center w-full flex\">\n                <p>{FileName}</p>\n              </div>\n\n              <div className=\"mt-2\"></div>\n              {/* Progress bar start */}\n              <div\n                style={{\n                  width: \"100%\",\n\n                  margin: \"0 auto\",\n                  textAlign: \"center\",\n                }}\n              >\n                <div\n                  style={{\n                    width: \"100%\",\n                    height: \"30px\",\n                    backgroundColor: \"#e0e0df\",\n                    borderRadius: \"5px\",\n                    overflow: \"hidden\",\n                    position: \"relative\",\n                  }}\n                >\n                  <div\n                    style={{\n                      width: `${progress}%`,\n                      height: \"100%\",\n                      backgroundColor: progress < 100 ? \"#76c7c0\" : \"#4caf50\",\n                      transition: \"width 1s ease-out\",\n                      display: \"flex\",\n                      alignItems: \"center\",\n                      justifyContent: \"center\",\n                      color: \"#fff\",\n                      fontWeight: \"normal\",\n                    }}\n                  >\n                    {progress}%\n                  </div>\n                </div>\n              </div>\n\n              {/* Progress bar End */}\n            </div>\n          ) : (\n            <div></div>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default DashboardDialog;\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n  ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n  callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n  return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n  return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n  var batch = getBatch();\n  var first = null;\n  var last = null;\n  return {\n    clear: function clear() {\n      first = null;\n      last = null;\n    },\n    notify: function notify() {\n      batch(function () {\n        var listener = first;\n\n        while (listener) {\n          listener.callback();\n          listener = listener.next;\n        }\n      });\n    },\n    get: function get() {\n      var listeners = [];\n      var listener = first;\n\n      while (listener) {\n        listeners.push(listener);\n        listener = listener.next;\n      }\n\n      return listeners;\n    },\n    subscribe: function subscribe(callback) {\n      var isSubscribed = true;\n      var listener = last = {\n        callback: callback,\n        next: null,\n        prev: last\n      };\n\n      if (listener.prev) {\n        listener.prev.next = listener;\n      } else {\n        first = listener;\n      }\n\n      return function unsubscribe() {\n        if (!isSubscribed || first === null) return;\n        isSubscribed = false;\n\n        if (listener.next) {\n          listener.next.prev = listener.prev;\n        } else {\n          last = listener.prev;\n        }\n\n        if (listener.prev) {\n          listener.prev.next = listener.next;\n        } else {\n          first = listener.next;\n        }\n      };\n    }\n  };\n}\n\nvar nullListeners = {\n  notify: function notify() {},\n  get: function get() {\n    return [];\n  }\n};\nexport function createSubscription(store, parentSub) {\n  var unsubscribe;\n  var listeners = nullListeners;\n\n  function addNestedSub(listener) {\n    trySubscribe();\n    return listeners.subscribe(listener);\n  }\n\n  function notifyNestedSubs() {\n    listeners.notify();\n  }\n\n  function handleChangeWrapper() {\n    if (subscription.onStateChange) {\n      subscription.onStateChange();\n    }\n  }\n\n  function isSubscribed() {\n    return Boolean(unsubscribe);\n  }\n\n  function trySubscribe() {\n    if (!unsubscribe) {\n      unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n      listeners = createListenerCollection();\n    }\n  }\n\n  function tryUnsubscribe() {\n    if (unsubscribe) {\n      unsubscribe();\n      unsubscribe = undefined;\n      listeners.clear();\n      listeners = nullListeners;\n    }\n  }\n\n  var subscription = {\n    addNestedSub: addNestedSub,\n    notifyNestedSubs: notifyNestedSubs,\n    handleChangeWrapper: handleChangeWrapper,\n    isSubscribed: isSubscribed,\n    trySubscribe: trySubscribe,\n    tryUnsubscribe: tryUnsubscribe,\n    getListeners: function getListeners() {\n      return listeners;\n    }\n  };\n  return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n  var store = _ref.store,\n      context = _ref.context,\n      children = _ref.children;\n  var contextValue = useMemo(function () {\n    var subscription = createSubscription(store);\n    return {\n      store: store,\n      subscription: subscription\n    };\n  }, [store]);\n  var previousState = useMemo(function () {\n    return store.getState();\n  }, [store]);\n  useIsomorphicLayoutEffect(function () {\n    var subscription = contextValue.subscription;\n    subscription.onStateChange = subscription.notifyNestedSubs;\n    subscription.trySubscribe();\n\n    if (previousState !== store.getState()) {\n      subscription.notifyNestedSubs();\n    }\n\n    return function () {\n      subscription.tryUnsubscribe();\n      subscription.onStateChange = null;\n    };\n  }, [contextValue, previousState]);\n  var Context = context || ReactReduxContext;\n  return /*#__PURE__*/React.createElement(Context.Provider, {\n    value: contextValue\n  }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  Provider.propTypes = {\n    store: PropTypes.shape({\n      subscribe: PropTypes.func.isRequired,\n      dispatch: PropTypes.func.isRequired,\n      getState: PropTypes.func.isRequired\n    }),\n    context: PropTypes.object,\n    children: PropTypes.any\n  };\n}\n\nexport default Provider;","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (e.includes(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n    _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n  try {\n    return JSON.stringify(Comp);\n  } catch (err) {\n    return String(Comp);\n  }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n  var updateCount = state[1];\n  return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n  useIsomorphicLayoutEffect(function () {\n    return effectFunc.apply(void 0, effectArgs);\n  }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n  // We want to capture the wrapper props and child props we used for later comparisons\n  lastWrapperProps.current = wrapperProps;\n  lastChildProps.current = actualChildProps;\n  renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n  if (childPropsFromStoreUpdate.current) {\n    childPropsFromStoreUpdate.current = null;\n    notifyNestedSubs();\n  }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n  // If we're not subscribed to the store, nothing to do here\n  if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n  var didUnsubscribe = false;\n  var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n  var checkForUpdates = function checkForUpdates() {\n    if (didUnsubscribe) {\n      // Don't run stale listeners.\n      // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n      return;\n    }\n\n    var latestStoreState = store.getState();\n    var newChildProps, error;\n\n    try {\n      // Actually run the selector with the most recent store state and wrapper props\n      // to determine what the child props should be\n      newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n    } catch (e) {\n      error = e;\n      lastThrownError = e;\n    }\n\n    if (!error) {\n      lastThrownError = null;\n    } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n    if (newChildProps === lastChildProps.current) {\n      if (!renderIsScheduled.current) {\n        notifyNestedSubs();\n      }\n    } else {\n      // Save references to the new child props.  Note that we track the \"child props from store update\"\n      // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n      // been processed.  If this went into useState/useReducer, we couldn't clear out the value without\n      // forcing another re-render, which we don't want.\n      lastChildProps.current = newChildProps;\n      childPropsFromStoreUpdate.current = newChildProps;\n      renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n      forceComponentUpdateDispatch({\n        type: 'STORE_UPDATED',\n        payload: {\n          error: error\n        }\n      });\n    }\n  }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n  subscription.onStateChange = checkForUpdates;\n  subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n  // changed since we began.\n\n  checkForUpdates();\n\n  var unsubscribeWrapper = function unsubscribeWrapper() {\n    didUnsubscribe = true;\n    subscription.tryUnsubscribe();\n    subscription.onStateChange = null;\n\n    if (lastThrownError) {\n      // It's possible that we caught an error due to a bad mapState function, but the\n      // parent re-rendered without this component and we're about to unmount.\n      // This shouldn't happen as long as we do top-down subscriptions correctly, but\n      // if we ever do those wrong, this throw will surface the error in our tests.\n      // In that case, throw the error from here so it doesn't get lost.\n      throw lastThrownError;\n    }\n  };\n\n  return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n  return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n  selectorFactory is a func that is responsible for returning the selector function used to\r\n  compute new props from state, props, and dispatch. For example:\r\n      export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n      thing: state.things[props.thingId],\r\n      saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n    }))(YourComponent)\r\n    Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n  outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n  the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n    Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n  props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n  selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n  if (_ref === void 0) {\n    _ref = {};\n  }\n\n  var _ref2 = _ref,\n      _ref2$getDisplayName = _ref2.getDisplayName,\n      getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n    return \"ConnectAdvanced(\" + name + \")\";\n  } : _ref2$getDisplayName,\n      _ref2$methodName = _ref2.methodName,\n      methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n      _ref2$renderCountProp = _ref2.renderCountProp,\n      renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n      _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n      shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n      _ref2$storeKey = _ref2.storeKey,\n      storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n      _ref2$withRef = _ref2.withRef,\n      withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n      _ref2$forwardRef = _ref2.forwardRef,\n      forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n      _ref2$context = _ref2.context,\n      context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n      connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (renderCountProp !== undefined) {\n      throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n    }\n\n    if (withRef) {\n      throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n    }\n\n    var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n    if (storeKey !== 'store') {\n      throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n    }\n  }\n\n  var Context = context;\n  return function wrapWithConnect(WrappedComponent) {\n    if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n      throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n    }\n\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n    var displayName = getDisplayName(wrappedComponentName);\n\n    var selectorFactoryOptions = _extends({}, connectOptions, {\n      getDisplayName: getDisplayName,\n      methodName: methodName,\n      renderCountProp: renderCountProp,\n      shouldHandleStateChanges: shouldHandleStateChanges,\n      storeKey: storeKey,\n      displayName: displayName,\n      wrappedComponentName: wrappedComponentName,\n      WrappedComponent: WrappedComponent\n    });\n\n    var pure = connectOptions.pure;\n\n    function createChildSelector(store) {\n      return selectorFactory(store.dispatch, selectorFactoryOptions);\n    } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n    // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n    // that just executes the given callback immediately.\n\n\n    var usePureOnlyMemo = pure ? useMemo : function (callback) {\n      return callback();\n    };\n\n    function ConnectFunction(props) {\n      var _useMemo = useMemo(function () {\n        // Distinguish between actual \"data\" props that were passed to the wrapper component,\n        // and values needed to control behavior (forwarded refs, alternate context instances).\n        // To maintain the wrapperProps object reference, memoize this destructuring.\n        var reactReduxForwardedRef = props.reactReduxForwardedRef,\n            wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n        return [props.context, reactReduxForwardedRef, wrapperProps];\n      }, [props]),\n          propsContext = _useMemo[0],\n          reactReduxForwardedRef = _useMemo[1],\n          wrapperProps = _useMemo[2];\n\n      var ContextToUse = useMemo(function () {\n        // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n        // Memoize the check that determines which context instance we should use.\n        return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n      }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n      var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n      // We'll check to see if it _looks_ like a Redux store first.\n      // This allows us to pass through a `store` prop that is just a plain value.\n\n      var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n      var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n      if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n        throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n      } // Based on the previous check, one of these must be true\n\n\n      var store = didStoreComeFromProps ? props.store : contextValue.store;\n      var childPropsSelector = useMemo(function () {\n        // The child props selector needs the store reference as an input.\n        // Re-create this selector whenever the store changes.\n        return createChildSelector(store);\n      }, [store]);\n\n      var _useMemo2 = useMemo(function () {\n        if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n        // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n        var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n\n        // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n        var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n        return [subscription, notifyNestedSubs];\n      }, [store, didStoreComeFromProps, contextValue]),\n          subscription = _useMemo2[0],\n          notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n      // and memoize that value to avoid unnecessary context updates.\n\n\n      var overriddenContextValue = useMemo(function () {\n        if (didStoreComeFromProps) {\n          // This component is directly subscribed to a store from props.\n          // We don't want descendants reading from this store - pass down whatever\n          // the existing context value is from the nearest connected ancestor.\n          return contextValue;\n        } // Otherwise, put this component's subscription instance into context, so that\n        // connected descendants won't update until after this component is done\n\n\n        return _extends({}, contextValue, {\n          subscription: subscription\n        });\n      }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n      // causes a change to the calculated child component props (or we caught an error in mapState)\n\n      var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n          _useReducer$ = _useReducer[0],\n          previousStateUpdateResult = _useReducer$[0],\n          forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n      if (previousStateUpdateResult && previousStateUpdateResult.error) {\n        throw previousStateUpdateResult.error;\n      } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n      var lastChildProps = useRef();\n      var lastWrapperProps = useRef(wrapperProps);\n      var childPropsFromStoreUpdate = useRef();\n      var renderIsScheduled = useRef(false);\n      var actualChildProps = usePureOnlyMemo(function () {\n        // Tricky logic here:\n        // - This render may have been triggered by a Redux store update that produced new child props\n        // - However, we may have gotten new wrapper props after that\n        // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n        // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n        // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n        if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n          return childPropsFromStoreUpdate.current;\n        } // TODO We're reading the store directly in render() here. Bad idea?\n        // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n        // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n        // to determine what the child props should be.\n\n\n        return childPropsSelector(store.getState(), wrapperProps);\n      }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n      // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n      // just useEffect instead to avoid the warning, since neither will run anyway.\n\n      useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n      useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n      // We memoize the elements for the rendered child component as an optimization.\n\n      var renderedWrappedComponent = useMemo(function () {\n        return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n          ref: reactReduxForwardedRef\n        }));\n      }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n      // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n      var renderedChild = useMemo(function () {\n        if (shouldHandleStateChanges) {\n          // If this component is subscribed to store updates, we need to pass its own\n          // subscription instance down to our descendants. That means rendering the same\n          // Context instance, and putting a different value into the context.\n          return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n            value: overriddenContextValue\n          }, renderedWrappedComponent);\n        }\n\n        return renderedWrappedComponent;\n      }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n      return renderedChild;\n    } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n    var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n    Connect.WrappedComponent = WrappedComponent;\n    Connect.displayName = ConnectFunction.displayName = displayName;\n\n    if (forwardRef) {\n      var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n        return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n          reactReduxForwardedRef: ref\n        }));\n      });\n      forwarded.displayName = displayName;\n      forwarded.WrappedComponent = WrappedComponent;\n      return hoistStatics(forwarded, WrappedComponent);\n    }\n\n    return hoistStatics(Connect, WrappedComponent);\n  };\n}","function is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nexport default function shallowEqual(objA, objB) {\n  if (is(objA, objB)) return true;\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  if (keysA.length !== keysB.length) return false;\n\n  for (var i = 0; i < keysA.length; i++) {\n    if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n  return function initConstantSelector(dispatch, options) {\n    var constant = getConstant(dispatch, options);\n\n    function constantSelector() {\n      return constant;\n    }\n\n    constantSelector.dependsOnOwnProps = false;\n    return constantSelector;\n  };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n  return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n//  * Detects whether the mapToProps function being called depends on props, which\n//    is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n//  * On first call, handles mapToProps if returns another function, and treats that\n//    new function as the true mapToProps for subsequent calls.\n//\n//  * On first call, verifies the first result is a plain object, in order to warn\n//    the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n  return function initProxySelector(dispatch, _ref) {\n    var displayName = _ref.displayName;\n\n    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n    }; // allow detectFactoryAndVerify to get ownProps\n\n\n    proxy.dependsOnOwnProps = true;\n\n    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n      proxy.mapToProps = mapToProps;\n      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n      var props = proxy(stateOrDispatch, ownProps);\n\n      if (typeof props === 'function') {\n        proxy.mapToProps = props;\n        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n        props = proxy(stateOrDispatch, ownProps);\n      }\n\n      if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n      return props;\n    };\n\n    return proxy;\n  };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n  return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n  return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n    return {\n      dispatch: dispatch\n    };\n  }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n    return bindActionCreators(mapDispatchToProps, dispatch);\n  }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n  var boundActionCreators = {};\n\n  var _loop = function _loop(key) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = function () {\n        return dispatch(actionCreator.apply(void 0, arguments));\n      };\n    }\n  };\n\n  for (var key in actionCreators) {\n    _loop(key);\n  }\n\n  return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n  return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n  return !mapStateToProps ? wrapMapToPropsConstant(function () {\n    return {};\n  }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n  return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n  return function initMergePropsProxy(dispatch, _ref) {\n    var displayName = _ref.displayName,\n        pure = _ref.pure,\n        areMergedPropsEqual = _ref.areMergedPropsEqual;\n    var hasRunOnce = false;\n    var mergedProps;\n    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n      if (hasRunOnce) {\n        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n      } else {\n        hasRunOnce = true;\n        mergedProps = nextMergedProps;\n        if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n      }\n\n      return mergedProps;\n    };\n  };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n  return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n  return !mergeProps ? function () {\n    return defaultMergeProps;\n  } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n  return function impureFinalPropsSelector(state, ownProps) {\n    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n  };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n  var areStatesEqual = _ref.areStatesEqual,\n      areOwnPropsEqual = _ref.areOwnPropsEqual,\n      areStatePropsEqual = _ref.areStatePropsEqual;\n  var hasRunAtLeastOnce = false;\n  var state;\n  var ownProps;\n  var stateProps;\n  var dispatchProps;\n  var mergedProps;\n\n  function handleFirstCall(firstState, firstOwnProps) {\n    state = firstState;\n    ownProps = firstOwnProps;\n    stateProps = mapStateToProps(state, ownProps);\n    dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    hasRunAtLeastOnce = true;\n    return mergedProps;\n  }\n\n  function handleNewPropsAndNewState() {\n    stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewProps() {\n    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewState() {\n    var nextStateProps = mapStateToProps(state, ownProps);\n    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n    stateProps = nextStateProps;\n    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleSubsequentCalls(nextState, nextOwnProps) {\n    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n    var stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n    state = nextState;\n    ownProps = nextOwnProps;\n    if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n    if (propsChanged) return handleNewProps();\n    if (stateChanged) return handleNewState();\n    return mergedProps;\n  }\n\n  return function pureFinalPropsSelector(nextState, nextOwnProps) {\n    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n  };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n  var initMapStateToProps = _ref2.initMapStateToProps,\n      initMapDispatchToProps = _ref2.initMapDispatchToProps,\n      initMergeProps = _ref2.initMergeProps,\n      options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n  var mapStateToProps = initMapStateToProps(dispatch, options);\n  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n  var mergeProps = initMergeProps(dispatch, options);\n\n  if (process.env.NODE_ENV !== 'production') {\n    verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n  }\n\n  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n  connect is a facade over connectAdvanced. It turns its args into a compatible\r\n  selectorFactory, which has the signature:\r\n\r\n    (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n  \r\n  connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n  selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n  selectorFactory returns a final props selector from its mapStateToProps,\r\n  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n  mergePropsFactories, and pure args.\r\n\r\n  The resulting final props selector is called by the Connect component instance whenever\r\n  it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n  for (var i = factories.length - 1; i >= 0; i--) {\n    var result = factories[i](arg);\n    if (result) return result;\n  }\n\n  return function (dispatch, options) {\n    throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n  };\n}\n\nfunction strictEqual(a, b) {\n  return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$connectHOC = _ref.connectHOC,\n      connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n      mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n      mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n      _ref$mergePropsFactor = _ref.mergePropsFactories,\n      mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n      _ref$selectorFactory = _ref.selectorFactory,\n      selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n  return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n    if (_ref2 === void 0) {\n      _ref2 = {};\n    }\n\n    var _ref3 = _ref2,\n        _ref3$pure = _ref3.pure,\n        pure = _ref3$pure === void 0 ? true : _ref3$pure,\n        _ref3$areStatesEqual = _ref3.areStatesEqual,\n        areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n        _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n        areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n        _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n        areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n        _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n        areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n        extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n    var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n    return connectHOC(selectorFactory, _extends({\n      // used in error messages\n      methodName: 'connect',\n      // used to compute Connect's displayName from the wrapped component's displayName.\n      getDisplayName: function getDisplayName(name) {\n        return \"Connect(\" + name + \")\";\n      },\n      // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n      shouldHandleStateChanges: Boolean(mapStateToProps),\n      // passed through to selectorFactory\n      initMapStateToProps: initMapStateToProps,\n      initMapDispatchToProps: initMapDispatchToProps,\n      initMergeProps: initMergeProps,\n      pure: pure,\n      areStatesEqual: areStatesEqual,\n      areOwnPropsEqual: areOwnPropsEqual,\n      areStatePropsEqual: areStatePropsEqual,\n      areMergedPropsEqual: areMergedPropsEqual\n    }, extraOptions));\n  };\n}\nexport default /*#__PURE__*/createConnect();","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const { store } = useReduxContext()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport function useReduxContext() {\n  var contextValue = useContext(ReactReduxContext);\n\n  if (process.env.NODE_ENV !== 'production' && !contextValue) {\n    throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n  }\n\n  return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useStore() {\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store;\n\n    return store;\n  };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n *   const store = useStore()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n  return function useDispatch() {\n    var store = useStore();\n    return store.dispatch;\n  };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const dispatch = useDispatch()\r\n *   const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n *   return (\r\n *     <div>\r\n *       <span>{value}</span>\r\n *       <button onClick={increaseCounter}>Increase counter</button>\r\n *     </div>\r\n *   )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n  return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n  var _useReducer = useReducer(function (s) {\n    return s + 1;\n  }, 0),\n      forceRender = _useReducer[1];\n\n  var subscription = useMemo(function () {\n    return createSubscription(store, contextSub);\n  }, [store, contextSub]);\n  var latestSubscriptionCallbackError = useRef();\n  var latestSelector = useRef();\n  var latestStoreState = useRef();\n  var latestSelectedState = useRef();\n  var storeState = store.getState();\n  var selectedState;\n\n  try {\n    if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n      var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n      if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n        selectedState = newSelectedState;\n      } else {\n        selectedState = latestSelectedState.current;\n      }\n    } else {\n      selectedState = latestSelectedState.current;\n    }\n  } catch (err) {\n    if (latestSubscriptionCallbackError.current) {\n      err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n    }\n\n    throw err;\n  }\n\n  useIsomorphicLayoutEffect(function () {\n    latestSelector.current = selector;\n    latestStoreState.current = storeState;\n    latestSelectedState.current = selectedState;\n    latestSubscriptionCallbackError.current = undefined;\n  });\n  useIsomorphicLayoutEffect(function () {\n    function checkForUpdates() {\n      try {\n        var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n        if (newStoreState === latestStoreState.current) {\n          return;\n        }\n\n        var _newSelectedState = latestSelector.current(newStoreState);\n\n        if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n          return;\n        }\n\n        latestSelectedState.current = _newSelectedState;\n        latestStoreState.current = newStoreState;\n      } catch (err) {\n        // we ignore all errors here, since when the component\n        // is re-rendered, the selectors are called again, and\n        // will throw again, if neither props nor store state\n        // changed\n        latestSubscriptionCallbackError.current = err;\n      }\n\n      forceRender();\n    }\n\n    subscription.onStateChange = checkForUpdates;\n    subscription.trySubscribe();\n    checkForUpdates();\n    return function () {\n      return subscription.tryUnsubscribe();\n    };\n  }, [store, subscription]);\n  return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n  if (context === void 0) {\n    context = ReactReduxContext;\n  }\n\n  var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n    return useContext(context);\n  };\n  return function useSelector(selector, equalityFn) {\n    if (equalityFn === void 0) {\n      equalityFn = refEquality;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!selector) {\n        throw new Error(\"You must pass a selector to useSelector\");\n      }\n\n      if (typeof selector !== 'function') {\n        throw new Error(\"You must pass a function as a selector to useSelector\");\n      }\n\n      if (typeof equalityFn !== 'function') {\n        throw new Error(\"You must pass a function as an equality function to useSelector\");\n      }\n    }\n\n    var _useReduxContext = useReduxContext(),\n        store = _useReduxContext.store,\n        contextSub = _useReduxContext.subscription;\n\n    var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n    useDebugValue(selectedState);\n    return selectedState;\n  };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n *   const counter = useSelector(state => state.counter)\r\n *   return <div>{counter}</div>\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","import React from \"react\";\n\n// Custom Text view\nconst Titletext = ({ label, changecolor }) => (\n  <p\n    className={`font-PlusJakartaSansSemiBold text-[16px] md:text-[20px] xl:text-[22px]  3xl:text-[24px]  \n      ${changecolor ? \"text-white\" : \"text-mTextColor\"} `}\n  >\n    {label}\n  </p>\n);\n\nexport default Titletext;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcSummeryback(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M15 6L9 12L15 18\",\n    stroke: \"black\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcSummeryback);\nexport default __webpack_public_path__ + \"static/media/ic_summeryback.dd417fbaa58bb5d1519f7e9905e38cee.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcNotification(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 25,\n    height: 26,\n    viewBox: \"0 0 25 26\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M15.6253 18.2083H20.8337L19.3702 16.7449C18.9733 16.348 18.7503 15.8097 18.7503 15.2484V11.9583C18.7503 9.23705 17.0111 6.92197 14.5837 6.06397V5.70833C14.5837 4.55774 13.6509 3.625 12.5003 3.625C11.3497 3.625 10.417 4.55774 10.417 5.70833V6.06397C7.98951 6.92197 6.25033 9.23705 6.25033 11.9583V15.2484C6.25033 15.8097 6.02735 16.348 5.63046 16.7449L4.16699 18.2083H9.37533M15.6253 18.2083V19.25C15.6253 20.9759 14.2262 22.375 12.5003 22.375C10.7744 22.375 9.37533 20.9759 9.37533 19.25V18.2083M15.6253 18.2083H9.37533\",\n    stroke: \"#0D0D0D\",\n    strokeWidth: 1.2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcNotification);\nexport default __webpack_public_path__ + \"static/media/ic_notification.05e36d82a2c2a45f0992f3915d8b82fc.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcCrown(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3.33333 6.66667L5 16.6667H15L16.6667 6.66667M3.33333 6.66667L4.76354 7.81083C5.69348 8.55478 6.15845 8.92676 6.62713 8.98449C7.03775 9.03506 7.45249 8.93111 7.79071 8.69285C8.17676 8.42089 8.41132 7.87358 8.88044 6.77896L10 4.16667M3.33333 6.66667C3.79357 6.66667 4.16667 6.29357 4.16667 5.83333C4.16667 5.3731 3.79357 5 3.33333 5C2.8731 5 2.5 5.3731 2.5 5.83333C2.5 6.29357 2.8731 6.66667 3.33333 6.66667ZM16.6667 6.66667L15.2365 7.81083C14.3065 8.55479 13.8415 8.92676 13.3729 8.98449C12.9623 9.03506 12.5475 8.93111 12.2093 8.69285C11.8232 8.42089 11.5887 7.87358 11.1196 6.77896L10 4.16667M16.6667 6.66667C17.1269 6.66667 17.5 6.29357 17.5 5.83333C17.5 5.3731 17.1269 5 16.6667 5C16.2064 5 15.8333 5.3731 15.8333 5.83333C15.8333 6.29357 16.2064 6.66667 16.6667 6.66667ZM10 4.16667C10.4602 4.16667 10.8333 3.79357 10.8333 3.33333C10.8333 2.8731 10.4602 2.5 10 2.5C9.53976 2.5 9.16667 2.8731 9.16667 3.33333C9.16667 3.79357 9.53976 4.16667 10 4.16667ZM10 3.33333H10.0083M16.6667 5.83333H16.675M3.33333 5.83333H3.34167\",\n    stroke: \"#FFFFFF\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcCrown);\nexport default __webpack_public_path__ + \"static/media/ic_crown.b1734c051ed09d378faa6f84e2d626c7.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\n\n// Custom Text\n\nconst DashboardTitle = ({ label, issmall, changecolor }) => (\n  <p\n    className={`\n      ${\n        issmall\n          ? \"text-sm font-PlusJakartaSansRegular\"\n          : \"font-PlusJakartaSansSemiBold text-base xl:text-lg 3xl:text-lg\"\n      }  ${changecolor ? \"text-white\" : \"text-mTextColor\"} text-mTextColor`}\n  >\n    {label}\n  </p>\n);\n\nexport default DashboardTitle;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcLogout(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8.75 16.875C8.75 17.0408 8.68415 17.1997 8.56694 17.3169C8.44973 17.4342 8.29076 17.5 8.125 17.5H3.75C3.41848 17.5 3.10054 17.3683 2.86612 17.1339C2.6317 16.8995 2.5 16.5815 2.5 16.25V3.75C2.5 3.41848 2.6317 3.10054 2.86612 2.86612C3.10054 2.6317 3.41848 2.5 3.75 2.5H8.125C8.29076 2.5 8.44973 2.56585 8.56694 2.68306C8.68415 2.80027 8.75 2.95924 8.75 3.125C8.75 3.29076 8.68415 3.44973 8.56694 3.56694C8.44973 3.68415 8.29076 3.75 8.125 3.75H3.75V16.25H8.125C8.29076 16.25 8.44973 16.3158 8.56694 16.4331C8.68415 16.5503 8.75 16.7092 8.75 16.875ZM17.3172 9.55781L14.1922 6.43281C14.0749 6.31554 13.9159 6.24965 13.75 6.24965C13.5841 6.24965 13.4251 6.31554 13.3078 6.43281C13.1905 6.55009 13.1247 6.70915 13.1247 6.875C13.1247 7.04085 13.1905 7.19991 13.3078 7.31719L15.3664 9.375H8.125C7.95924 9.375 7.80027 9.44085 7.68306 9.55806C7.56585 9.67527 7.5 9.83424 7.5 10C7.5 10.1658 7.56585 10.3247 7.68306 10.4419C7.80027 10.5592 7.95924 10.625 8.125 10.625H15.3664L13.3078 12.6828C13.1905 12.8001 13.1247 12.9591 13.1247 13.125C13.1247 13.2909 13.1905 13.4499 13.3078 13.5672C13.4251 13.6845 13.5841 13.7503 13.75 13.7503C13.9159 13.7503 14.0749 13.6845 14.1922 13.5672L17.3172 10.4422C17.3753 10.3841 17.4214 10.3152 17.4529 10.2393C17.4843 10.1635 17.5005 10.0821 17.5005 10C17.5005 9.91787 17.4843 9.83654 17.4529 9.76066C17.4214 9.68479 17.3753 9.61586 17.3172 9.55781Z\",\n    fill: \"#0D0D0D\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcLogout);\nexport default __webpack_public_path__ + \"static/media/ic_logout.099a6386e71868f92e84906fa350e357.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcClose(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6 6L18 18M18 6L6 18\",\n    stroke: \"#0D0D0D\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcClose);\nexport default __webpack_public_path__ + \"static/media/ic_close.0fa888d2f8d69517152be0c93e18a2d8.svg\";\nexport { ForwardRef as ReactComponent };","/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nexport function formatProdErrorMessage(code: number) {\n  return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or ` + 'use the non-minified dev environment for full errors. ';\n}","declare global {\n  interface SymbolConstructor {\n    readonly observable: symbol;\n  }\n}\nconst $$observable = /* #__PURE__ */(() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\nexport default $$observable;","/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\n\nconst randomString = () => Math.random().toString(36).substring(7).split('').join('.');\nconst ActionTypes = {\n  INIT: `@@redux/INIT${/* #__PURE__ */randomString()}`,\n  REPLACE: `@@redux/REPLACE${/* #__PURE__ */randomString()}`,\n  PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nexport default ActionTypes;","/**\n * @param obj The object to inspect.\n * @returns True if the argument appears to be a plain object.\n */\nexport default function isPlainObject(obj: any): obj is object {\n  if (typeof obj !== 'object' || obj === null) return false;\n  let proto = obj;\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n  return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}","import { formatProdErrorMessage as _formatProdErrorMessage13 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage12 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage11 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage10 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage9 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage8 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage7 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage6 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage5 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage4 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage3 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport $$observable from './utils/symbol-observable';\nimport { Store, StoreEnhancer, Dispatch, Observer, ListenerCallback, UnknownIfNonSpecific } from './types/store';\nimport { Action } from './types/actions';\nimport { Reducer } from './types/reducers';\nimport ActionTypes from './utils/actionTypes';\nimport isPlainObject from './utils/isPlainObject';\nimport { kindOf } from './utils/kindOf';\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\nexport function createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}>(reducer: Reducer<S, A>, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\nexport function createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A, PreloadedState>, preloadedState?: PreloadedState | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\nexport function createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A, PreloadedState>, preloadedState?: PreloadedState | StoreEnhancer<Ext, StateExt> | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext {\n  if (typeof reducer !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n  }\n  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n  }\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = (preloadedState as StoreEnhancer<Ext, StateExt>);\n    preloadedState = undefined;\n  }\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n    }\n    return enhancer(createStore)(reducer, (preloadedState as PreloadedState | undefined));\n  }\n  let currentReducer = reducer;\n  let currentState: S | PreloadedState | undefined = (preloadedState as PreloadedState | undefined);\n  let currentListeners: Map<number, ListenerCallback> | null = new Map();\n  let nextListeners = currentListeners;\n  let listenerIdCounter = 0;\n  let isDispatching = false;\n\n  /**\n   * This makes a shallow copy of currentListeners so we can use\n   * nextListeners as a temporary list while dispatching.\n   *\n   * This prevents any bugs around consumers calling\n   * subscribe/unsubscribe in the middle of a dispatch.\n   */\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = new Map();\n      currentListeners.forEach((listener, key) => {\n        nextListeners.set(key, listener);\n      });\n    }\n  }\n\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns The current state tree of your application.\n   */\n  function getState(): S {\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n    }\n    return (currentState as S);\n  }\n\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param listener A callback to be invoked on every dispatch.\n   * @returns A function to remove this change listener.\n   */\n  function subscribe(listener: () => void) {\n    if (typeof listener !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n    }\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n    }\n    let isSubscribed = true;\n    ensureCanMutateNextListeners();\n    const listenerId = listenerIdCounter++;\n    nextListeners.set(listenerId, listener);\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n      if (isDispatching) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n      }\n      isSubscribed = false;\n      ensureCanMutateNextListeners();\n      nextListeners.delete(listenerId);\n      currentListeners = null;\n    };\n  }\n\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n  function dispatch(action: A) {\n    if (!isPlainObject(action)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage8(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n    }\n    if (typeof action.type === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage9(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n    }\n    if (typeof action.type !== 'string') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage10(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n    }\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage11(9) : 'Reducers may not dispatch actions.');\n    }\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n    const listeners = currentListeners = nextListeners;\n    listeners.forEach(listener => {\n      listener();\n    });\n    return action;\n  }\n\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param nextReducer The reducer for the store to use instead.\n   */\n  function replaceReducer(nextReducer: Reducer<S, A>): void {\n    if (typeof nextReducer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage12(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n    }\n    currentReducer = ((nextReducer as unknown) as Reducer<S, A, PreloadedState>);\n\n    // This action has a similar effect to ActionTypes.INIT.\n    // Any reducers that existed in both the new and old rootReducer\n    // will receive the previous state. This effectively populates\n    // the new state tree with any relevant data from the old one.\n    dispatch(({\n      type: ActionTypes.REPLACE\n    } as A));\n  }\n\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n  function observable() {\n    const outerSubscribe = subscribe;\n    return {\n      /**\n       * The minimal observable subscription method.\n       * @param observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe(observer: unknown) {\n        if (typeof observer !== 'object' || observer === null) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage13(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n        }\n        function observeState() {\n          const observerAsObserver = (observer as Observer<S>);\n          if (observerAsObserver.next) {\n            observerAsObserver.next(getState());\n          }\n        }\n        observeState();\n        const unsubscribe = outerSubscribe(observeState);\n        return {\n          unsubscribe\n        };\n      },\n      [$$observable]() {\n        return this;\n      }\n    };\n  }\n\n  // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n  dispatch(({\n    type: ActionTypes.INIT\n  } as A));\n  const store = (({\n    dispatch: (dispatch as Dispatch<A>),\n    subscribe,\n    getState,\n    replaceReducer,\n    [$$observable]: observable\n  } as unknown) as Store<S, A, StateExt> & Ext);\n  return store;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nexport function legacy_createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}>(reducer: Reducer<S, A>, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nexport function legacy_createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A, PreloadedState>, preloadedState?: PreloadedState | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\nexport function legacy_createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A>, preloadedState?: PreloadedState | StoreEnhancer<Ext, StateExt> | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext {\n  return createStore(reducer, (preloadedState as any), enhancer);\n}","import { formatProdErrorMessage as _formatProdErrorMessage3 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport { Action } from './types/actions';\nimport { ActionFromReducersMapObject, PreloadedStateShapeFromReducersMapObject, Reducer, StateFromReducersMapObject } from './types/reducers';\nimport ActionTypes from './utils/actionTypes';\nimport isPlainObject from './utils/isPlainObject';\nimport warning from './utils/warning';\nimport { kindOf } from './utils/kindOf';\nfunction getUnexpectedStateShapeWarningMessage(inputState: object, reducers: {\n  [key: string]: Reducer<any, any, any>;\n}, action: Action, unexpectedKeyCache: {\n  [key: string]: true;\n}) {\n  const reducerKeys = Object.keys(reducers);\n  const argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n  if (!isPlainObject(inputState)) {\n    return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following ` + `keys: \"${reducerKeys.join('\", \"')}\"`;\n  }\n  const unexpectedKeys = Object.keys(inputState).filter(key => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n  unexpectedKeys.forEach(key => {\n    unexpectedKeyCache[key] = true;\n  });\n  if (action && action.type === ActionTypes.REPLACE) return;\n  if (unexpectedKeys.length > 0) {\n    return `Unexpected ${unexpectedKeys.length > 1 ? 'keys' : 'key'} ` + `\"${unexpectedKeys.join('\", \"')}\" found in ${argumentName}. ` + `Expected to find one of the known reducer keys instead: ` + `\"${reducerKeys.join('\", \"')}\". Unexpected keys will be ignored.`;\n  }\n}\nfunction assertReducerShape(reducers: {\n  [key: string]: Reducer<any, any, any>;\n}) {\n  Object.keys(reducers).forEach(key => {\n    const reducer = reducers[key];\n    const initialState = reducer(undefined, {\n      type: ActionTypes.INIT\n    });\n    if (typeof initialState === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(12) : `The slice reducer for key \"${key}\" returned undefined during initialization. ` + `If the state passed to the reducer is undefined, you must ` + `explicitly return the initial state. The initial state may ` + `not be undefined. If you don't want to set a value for this reducer, ` + `you can use null instead of undefined.`);\n    }\n    if (typeof reducer(undefined, {\n      type: ActionTypes.PROBE_UNKNOWN_ACTION()\n    }) === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(13) : `The slice reducer for key \"${key}\" returned undefined when probed with a random type. ` + `Don't try to handle '${ActionTypes.INIT}' or other actions in \"redux/*\" ` + `namespace. They are considered private. Instead, you must return the ` + `current state for any unknown actions, unless it is undefined, ` + `in which case you must return the initial state, regardless of the ` + `action type. The initial state may not be undefined, but can be null.`);\n    }\n  });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @template S Combined state object type.\n *\n * @param reducers An object whose values correspond to different reducer\n *   functions that need to be combined into one. One handy way to obtain it\n *   is to use `import * as reducers` syntax. The reducers may never\n *   return undefined for any action. Instead, they should return their\n *   initial state if the state passed to them was undefined, and the current\n *   state for any unrecognized action.\n *\n * @returns A reducer function that invokes every reducer inside the passed\n *   object, and builds a state object with the same shape.\n */\nexport default function combineReducers<M>(reducers: M): M[keyof M] extends Reducer<any, any, any> | undefined ? Reducer<StateFromReducersMapObject<M>, ActionFromReducersMapObject<M>, Partial<PreloadedStateShapeFromReducersMapObject<M>>> : never;\nexport default function combineReducers(reducers: {\n  [key: string]: Reducer<any, any, any>;\n}) {\n  const reducerKeys = Object.keys(reducers);\n  const finalReducers: {\n    [key: string]: Reducer<any, any, any>;\n  } = {};\n  for (let i = 0; i < reducerKeys.length; i++) {\n    const key = reducerKeys[i];\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning(`No reducer provided for key \"${key}\"`);\n      }\n    }\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n  const finalReducerKeys = Object.keys(finalReducers);\n\n  // This is used to make sure we don't warn about the same\n  // keys multiple times.\n  let unexpectedKeyCache: {\n    [key: string]: true;\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n  let shapeAssertionError: unknown;\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n  return function combination(state: StateFromReducersMapObject<typeof reducers> = {}, action: Action) {\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n    let hasChanged = false;\n    const nextState: StateFromReducersMapObject<typeof reducers> = {};\n    for (let i = 0; i < finalReducerKeys.length; i++) {\n      const key = finalReducerKeys[i];\n      const reducer = finalReducers[key];\n      const previousStateForKey = state[key];\n      const nextStateForKey = reducer(previousStateForKey, action);\n      if (typeof nextStateForKey === 'undefined') {\n        const actionType = action && action.type;\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : '(unknown type)'}, the slice reducer for key \"${key}\" returned undefined. ` + `To ignore an action, you must explicitly return the previous state. ` + `If you want this reducer to hold no value, you can return null instead of undefined.`);\n      }\n      nextState[key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n    return hasChanged ? nextState : state;\n  };\n}","type Func<T extends any[], R> = (...a: T) => R;\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for the\n * resulting composite function.\n *\n * @param funcs The functions to compose.\n * @returns A function obtained by composing the argument functions from right\n *   to left. For example, `compose(f, g, h)` is identical to doing\n *   `(...args) => f(g(h(...args)))`.\n */\nexport default function compose(): <R>(a: R) => R;\nexport default function compose<F extends Function>(f: F): F;\n\n/* two functions */\nexport default function compose<A, T extends any[], R>(f1: (a: A) => R, f2: Func<T, A>): Func<T, R>;\n\n/* three functions */\nexport default function compose<A, B, T extends any[], R>(f1: (b: B) => R, f2: (a: A) => B, f3: Func<T, A>): Func<T, R>;\n\n/* four functions */\nexport default function compose<A, B, C, T extends any[], R>(f1: (c: C) => R, f2: (b: B) => C, f3: (a: A) => B, f4: Func<T, A>): Func<T, R>;\n\n/* rest */\nexport default function compose<R>(f1: (a: any) => R, ...funcs: Function[]): (...args: any[]) => R;\nexport default function compose<R>(...funcs: Function[]): (...args: any[]) => R;\nexport default function compose(...funcs: Function[]) {\n  if (funcs.length === 0) {\n    // infer the argument type so it is usable in inference down the line\n    return <T,>(arg: T) => arg;\n  }\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n  return funcs.reduce((a, b) => (...args: any) => a(b(...args)));\n}","// src/index.ts\nfunction createThunkMiddleware(extraArgument) {\n  const middleware = ({ dispatch, getState }) => (next) => (action) => {\n    if (typeof action === \"function\") {\n      return action(dispatch, getState, extraArgument);\n    }\n    return next(action);\n  };\n  return middleware;\n}\nvar thunk = createThunkMiddleware();\nvar withExtraArgument = createThunkMiddleware;\nexport {\n  thunk,\n  withExtraArgument\n};\n","// Should be no imports here!\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: unique symbol = Symbol.for(\"immer-nothing\")\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = Symbol.for(\"immer-draftable\")\n\nexport const DRAFT_STATE: unique symbol = Symbol.for(\"immer-state\")\n","export const errors =\n\tprocess.env.NODE_ENV !== \"production\"\n\t\t? [\n\t\t\t\t// All error codes, starting by 0:\n\t\t\t\tfunction(plugin: string) {\n\t\t\t\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t\t\t\t},\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t\t\t\t},\n\t\t\t\t\"This object has been frozen and should not be mutated\",\n\t\t\t\tfunction(data: any) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\t\t\t\tdata\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\t\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t\t\t\t\"Immer forbids circular references\",\n\t\t\t\t\"The first or second argument to `produce` must be a function\",\n\t\t\t\t\"The third argument to `produce` must be a function or undefined\",\n\t\t\t\t\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t\t\t\t\"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'current' expects a draft, got: ${thing}`\n\t\t\t\t},\n\t\t\t\t\"Object.defineProperty() cannot be used on an Immer draft\",\n\t\t\t\t\"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t\t\t\t\"Immer only supports deleting array indices\",\n\t\t\t\t\"Immer only supports setting array indices and the 'length' property\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'original' expects a draft, got: ${thing}`\n\t\t\t\t}\n\t\t\t\t// Note: if more errors are added, the errorOffset in Patches.ts should be increased\n\t\t\t\t// See Patches.ts for additional errors\n\t\t  ]\n\t\t: []\n\nexport function die(error: number, ...args: any[]): never {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tconst e = errors[error]\n\t\tconst msg = typeof e === \"function\" ? e.apply(null, args as any) : e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\tArchType,\n\tdie,\n\tStrictMode\n} from \"../internal\"\n\nexport const getPrototypeOf = Object.getPrototypeOf\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original<T>(value: T): T | undefined\nexport function original(value: Drafted<any>): any {\n\tif (!isDraft(value)) die(15, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/**\n * Each iterates a map, set or array.\n * Or, if any other kind of object, all of its own properties.\n * Regardless whether they are enumerable or symbols\n */\nexport function each<T extends Objectish>(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void\n): void\nexport function each(obj: any, iter: any) {\n\tif (getArchtype(obj) === ArchType.Object) {\n\t\tReflect.ownKeys(obj).forEach(key => {\n\t\t\titer(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): ArchType {\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_\n\t\t: Array.isArray(thing)\n\t\t? ArchType.Array\n\t\t: isMap(thing)\n\t\t? ArchType.Map\n\t\t: isSet(thing)\n\t\t? ArchType.Set\n\t\t: ArchType.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === ArchType.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === ArchType.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === ArchType.Map) thing.set(propOrOldValue, value)\n\telse if (t === ArchType.Set) {\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any, strict: StrictMode) {\n\tif (isMap(base)) {\n\t\treturn new Map(base)\n\t}\n\tif (isSet(base)) {\n\t\treturn new Set(base)\n\t}\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\n\tconst isPlain = isPlainObject(base)\n\n\tif (strict === true || (strict === \"class_only\" && !isPlain)) {\n\t\t// Perform a strict copy\n\t\tconst descriptors = Object.getOwnPropertyDescriptors(base)\n\t\tdelete descriptors[DRAFT_STATE as any]\n\t\tlet keys = Reflect.ownKeys(descriptors)\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key: any = keys[i]\n\t\t\tconst desc = descriptors[key]\n\t\t\tif (desc.writable === false) {\n\t\t\t\tdesc.writable = true\n\t\t\t\tdesc.configurable = true\n\t\t\t}\n\t\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t\t// with libraries that trap values, like mobx or vue\n\t\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\t\tif (desc.get || desc.set)\n\t\t\t\tdescriptors[key] = {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\t\tvalue: base[key]\n\t\t\t\t}\n\t\t}\n\t\treturn Object.create(getPrototypeOf(base), descriptors)\n\t} else {\n\t\t// perform a sloppy copy\n\t\tconst proto = getPrototypeOf(base)\n\t\tif (proto !== null && isPlain) {\n\t\t\treturn {...base} // assumption: better inner class optimization than the assign below\n\t\t}\n\t\tconst obj = Object.create(proto)\n\t\treturn Object.assign(obj, base)\n\t}\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze<T>(obj: T, deep?: boolean): T\nexport function freeze<T>(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep)\n\t\t// See #590, don't recurse into non-enumerable / Symbol properties when freezing\n\t\t// So use Object.entries (only string-like, enumerables) instead of each()\n\t\tObject.entries(obj).forEach(([key, value]) => freeze(value, true))\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tDrafted,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tArchType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_<T>(draft: T, patches: readonly Patch[]): T\n\t}\n\tMapSet?: {\n\t\tproxyMap_<T extends AnyMap>(target: T, parent?: ImmerState): T\n\t\tproxySet_<T extends AnySet>(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin<K extends keyof Plugins>(\n\tpluginKey: K\n): Exclude<Plugins[K], undefined> {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(0, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin<K extends keyof Plugins>(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ArchType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map<any, boolean> | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted<AnyMap, MapState>\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ArchType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map<any, Drafted> // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted<AnySet, SetState>\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tArchType,\n\tgetPlugin\n} from \"../internal\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (state.type_ === ArchType.Object || state.type_ === ArchType.Array)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tArchType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(value, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path)\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result = state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ArchType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath,\n\ttargetIsSet?: boolean\n) {\n\tif (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n\t\tdie(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ArchType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude<ImmerState, SetState>).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// Immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\t// Per #590, we never freeze symbolic properties. Just to make sure don't accidentally interfere\n\t\t// with other frameworks.\n\t\tif (\n\t\t\t(!parentState || !parentState.scope_.parent_) &&\n\t\t\ttypeof prop !== \"symbol\" &&\n\t\t\tObject.prototype.propertyIsEnumerable.call(targetObject, prop)\n\t\t)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tgetPrototypeOf,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tArchType,\n\tImmerScope\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ArchType.Object\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted<AnyObject, ProxyObjectState>\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ArchType.Array\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted<AnyArray, ProxyArrayState>\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy<T extends Objectish>(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted<T, ProxyState> {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ArchType.Array : (ArchType.Object as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler<object | Array<any>> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler<ProxyState> = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(value, state))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\tif (state.copy_) {\n\t\t\tdelete state.copy_[prop]\n\t\t}\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ArchType.Array || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop as any)))\n\t\tdie(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (\n\t\tprocess.env.NODE_ENV !== \"production\" &&\n\t\tprop !== \"length\" &&\n\t\tisNaN(parseInt(prop as any))\n\t)\n\t\tdie(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t  // prototype, we should invoke it with the draft as context!\n\t\t\t  desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {\n\tbase_: any\n\tcopy_: any\n\tscope_: ImmerScope\n}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(\n\t\t\tstate.base_,\n\t\t\tstate.scope_.immer_.useStrictShallowCopy_\n\t\t)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport type StrictMode = boolean | \"class_only\";\n\nexport class Immer implements ProducersFns {\n\tautoFreeze_: boolean = true\n\tuseStrictShallowCopy_: StrictMode = false\n\n\tconstructor(config?: {\n\t\tautoFreeze?: boolean\n\t\tuseStrictShallowCopy?: StrictMode\n\t}) {\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t\tif (typeof config?.useStrictShallowCopy === \"boolean\")\n\t\t\tthis.setUseStrictShallowCopy(config!.useStrictShallowCopy)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(1, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft<T extends Objectish>(base: T): Draft<T> {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft<D extends Draft<any>>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft<infer T> ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (!state || !state.isManual_) die(9)\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to enable strict shallow copy.\n\t *\n\t * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n\t */\n\tsetUseStrictShallowCopy(value: StrictMode) {\n\t\tthis.useStrictShallowCopy_ = value\n\t}\n\n\tapplyPatches<T extends Objectish>(base: T, patches: readonly Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy<T extends Objectish>(\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted<T, ImmerState> {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: createProxyProxy(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tisFrozen\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current<T>(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(10, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value) || isFrozen(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tif (state) {\n\t\tif (!state.modified_) return state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_)\n\t} else {\n\t\tcopy = shallowCopy(value, true)\n\t}\n\t// recurse\n\teach(copy, (key, childValue) => {\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\tif (state) {\n\t\tstate.finalized_ = false\n\t}\n\treturn copy\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tWritableDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\tProducer,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze,\n\tObjectish,\n\tStrictMode\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\nexport const setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft<T>(value: T): Draft<T> {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable<T>(value: T): Immutable<T> {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\n","import { current, isDraft } from 'immer';\nimport { createSelectorCreator, weakMapMemoize } from 'reselect';\nexport const createDraftSafeSelectorCreator: typeof createSelectorCreator = (...args: unknown[]) => {\n  const createSelector = (createSelectorCreator as any)(...args);\n  const createDraftSafeSelector = Object.assign((...args: unknown[]) => {\n    const selector = createSelector(...args);\n    const wrappedSelector = (value: unknown, ...rest: unknown[]) => selector(isDraft(value) ? current(value) : value, ...rest);\n    Object.assign(wrappedSelector, selector);\n    return (wrappedSelector as any);\n  }, {\n    withTypes: () => createDraftSafeSelector\n  });\n  return createDraftSafeSelector;\n};\n\n/**\n * \"Draft-Safe\" version of `reselect`'s `createSelector`:\n * If an `immer`-drafted object is passed into the resulting selector's first argument,\n * the selector will act on the current draft value, instead of returning a cached value\n * that might be possibly outdated if the draft has been modified since.\n * @public\n */\nexport const createDraftSafeSelector = /* @__PURE__ */\ncreateDraftSafeSelectorCreator(weakMapMemoize);","import type { Action, ActionCreator, StoreEnhancer } from 'redux';\nimport { compose } from 'redux';\n\n/**\r\n * @public\r\n */\nexport interface DevToolsEnhancerOptions {\n  /**\r\n   * the instance name to be showed on the monitor page. Default value is `document.title`.\r\n   * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\r\n   */\n  name?: string;\n  /**\r\n   * action creators functions to be available in the Dispatcher.\r\n   */\n  actionCreators?: ActionCreator<any>[] | {\n    [key: string]: ActionCreator<any>;\n  };\n  /**\r\n   * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\r\n   * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\r\n   * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\r\n   *\r\n   * @default 500 ms.\r\n   */\n  latency?: number;\n  /**\r\n   * (> 1) - maximum allowed actions to be stored in the history tree. The oldest actions are removed once maxAge is reached. It's critical for performance.\r\n   *\r\n   * @default 50\r\n   */\n  maxAge?: number;\n  /**\r\n   * Customizes how actions and state are serialized and deserialized. Can be a boolean or object. If given a boolean, the behavior is the same as if you\r\n   * were to pass an object and specify `options` as a boolean. Giving an object allows fine-grained customization using the `replacer` and `reviver`\r\n   * functions.\r\n   */\n  serialize?: boolean | {\n    /**\r\n     * - `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).\r\n     * - `false` - will handle also circular references.\r\n     * - `true` - will handle also date, regex, undefined, error objects, symbols, maps, sets and functions.\r\n     * - object, which contains `date`, `regex`, `undefined`, `error`, `symbol`, `map`, `set` and `function` keys.\r\n     *   For each of them you can indicate if to include (by setting as `true`).\r\n     *   For `function` key you can also specify a custom function which handles serialization.\r\n     *   See [`jsan`](https://github.com/kolodny/jsan) for more details.\r\n     */\n    options?: undefined | boolean | {\n      date?: true;\n      regex?: true;\n      undefined?: true;\n      error?: true;\n      symbol?: true;\n      map?: true;\n      set?: true;\n      function?: true | ((fn: (...args: any[]) => any) => string);\n    };\n    /**\r\n     * [JSON replacer function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter) used for both actions and states stringify.\r\n     * In addition, you can specify a data type by adding a [`__serializedType__`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/helpers/index.js#L4)\r\n     * key. So you can deserialize it back while importing or persisting data.\r\n     * Moreover, it will also [show a nice preview showing the provided custom type](https://cloud.githubusercontent.com/assets/7957859/21814330/a17d556a-d761-11e6-85ef-159dd12f36c5.png):\r\n     */\n    replacer?: (key: string, value: unknown) => any;\n    /**\r\n     * [JSON `reviver` function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter)\r\n     * used for parsing the imported actions and states. See [`remotedev-serialize`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/immutable/serialize.js#L8-L41)\r\n     * as an example on how to serialize special data types and get them back.\r\n     */\n    reviver?: (key: string, value: unknown) => any;\n    /**\r\n     * Automatically serialize/deserialize immutablejs via [remotedev-serialize](https://github.com/zalmoxisus/remotedev-serialize).\r\n     * Just pass the Immutable library. It will support all ImmutableJS structures. You can even export them into a file and get them back.\r\n     * The only exception is `Record` class, for which you should pass this in addition the references to your classes in `refs`.\r\n     */\n    immutable?: any;\n    /**\r\n     * ImmutableJS `Record` classes used to make possible restore its instances back when importing, persisting...\r\n     */\n    refs?: any;\n  };\n  /**\r\n   * function which takes `action` object and id number as arguments, and should return `action` object back.\r\n   */\n  actionSanitizer?: <A extends Action>(action: A, id: number) => A;\n  /**\r\n   * function which takes `state` object and index as arguments, and should return `state` object back.\r\n   */\n  stateSanitizer?: <S>(state: S, index: number) => S;\n  /**\r\n   * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n   * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n   */\n  actionsDenylist?: string | string[];\n  /**\r\n   * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n   * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n   */\n  actionsAllowlist?: string | string[];\n  /**\r\n   * called for every action before sending, takes `state` and `action` object, and returns `true` in case it allows sending the current data to the monitor.\r\n   * Use it as a more advanced version of `actionsDenylist`/`actionsAllowlist` parameters.\r\n   */\n  predicate?: <S, A extends Action>(state: S, action: A) => boolean;\n  /**\r\n   * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\r\n   * Available only for Redux enhancer, for others use `autoPause`.\r\n   *\r\n   * @default true\r\n   */\n  shouldRecordChanges?: boolean;\n  /**\r\n   * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\r\n   * If not specified, will commit when paused. Available only for Redux enhancer.\r\n   *\r\n   * @default \"@@PAUSED\"\"\r\n   */\n  pauseActionType?: string;\n  /**\r\n   * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\r\n   * Not available for Redux enhancer (as it already does it but storing the data to be sent).\r\n   *\r\n   * @default false\r\n   */\n  autoPause?: boolean;\n  /**\r\n   * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\r\n   * Available only for Redux enhancer.\r\n   *\r\n   * @default false\r\n   */\n  shouldStartLocked?: boolean;\n  /**\r\n   * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\r\n   *\r\n   * @default true\r\n   */\n  shouldHotReload?: boolean;\n  /**\r\n   * if specified as `true`, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.\r\n   *\r\n   * @default false\r\n   */\n  shouldCatchErrors?: boolean;\n  /**\r\n   * If you want to restrict the extension, specify the features you allow.\r\n   * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\r\n   * Note that except `true`/`false`, `import` and `export` can be set as `custom` (which is by default for Redux enhancer), meaning that the importing/exporting occurs on the client side.\r\n   * Otherwise, you'll get/set the data right from the monitor part.\r\n   */\n  features?: {\n    /**\r\n     * start/pause recording of dispatched actions\r\n     */\n    pause?: boolean;\n    /**\r\n     * lock/unlock dispatching actions and side effects\r\n     */\n    lock?: boolean;\n    /**\r\n     * persist states on page reloading\r\n     */\n    persist?: boolean;\n    /**\r\n     * export history of actions in a file\r\n     */\n    export?: boolean | 'custom';\n    /**\r\n     * import history of actions from a file\r\n     */\n    import?: boolean | 'custom';\n    /**\r\n     * jump back and forth (time travelling)\r\n     */\n    jump?: boolean;\n    /**\r\n     * skip (cancel) actions\r\n     */\n    skip?: boolean;\n    /**\r\n     * drag and drop actions in the history list\r\n     */\n    reorder?: boolean;\n    /**\r\n     * dispatch custom actions or action creators\r\n     */\n    dispatch?: boolean;\n    /**\r\n     * generate tests for the selected actions\r\n     */\n    test?: boolean;\n  };\n  /**\r\n   * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\r\n   * Defaults to false.\r\n   */\n  trace?: boolean | (<A extends Action>(action: A) => string);\n  /**\r\n   * The maximum number of stack trace entries to record per action. Defaults to 10.\r\n   */\n  traceLimit?: number;\n}\ntype Compose = typeof compose;\ninterface ComposeWithDevTools {\n  (options: DevToolsEnhancerOptions): Compose;\n  <StoreExt extends {}>(...funcs: StoreEnhancer<StoreExt>[]): StoreEnhancer<StoreExt>;\n}\n\n/**\r\n * @public\r\n */\nexport const composeWithDevTools: ComposeWithDevTools = typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () {\n  if (arguments.length === 0) return undefined;\n  if (typeof arguments[0] === 'object') return compose;\n  return compose.apply(null, ((arguments as any) as Function[]));\n};\n\n/**\r\n * @public\r\n */\nexport const devToolsEnhancer: {\n  (options: DevToolsEnhancerOptions): StoreEnhancer<any>;\n} = typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__ ? (window as any).__REDUX_DEVTOOLS_EXTENSION__ : function () {\n  return function (noop) {\n    return noop;\n  };\n};","import type { Middleware, StoreEnhancer } from 'redux';\nimport type { Tuple } from './utils';\nexport function safeAssign<T extends object>(target: T, ...args: Array<Partial<NoInfer<T>>>) {\n  Object.assign(target, ...args);\n}\n\n/**\n * return True if T is `any`, otherwise return False\n * taken from https://github.com/joonhocho/tsdef\n *\n * @internal\n */\nexport type IsAny<T, True, False = never> =\n// test if we are going the left AND right path in the condition\ntrue | false extends (T extends never ? true : false) ? True : False;\nexport type CastAny<T, CastTo> = IsAny<T, CastTo, T>;\n\n/**\n * return True if T is `unknown`, otherwise return False\n * taken from https://github.com/joonhocho/tsdef\n *\n * @internal\n */\nexport type IsUnknown<T, True, False = never> = unknown extends T ? IsAny<T, False, True> : False;\nexport type FallbackIfUnknown<T, Fallback> = IsUnknown<T, Fallback, T>;\n\n/**\n * @internal\n */\nexport type IfMaybeUndefined<P, True, False> = [undefined] extends [P] ? True : False;\n\n/**\n * @internal\n */\nexport type IfVoid<P, True, False> = [void] extends [P] ? True : False;\n\n/**\n * @internal\n */\nexport type IsEmptyObj<T, True, False = never> = T extends any ? keyof T extends never ? IsUnknown<T, False, IfMaybeUndefined<T, False, IfVoid<T, False, True>>> : False : never;\n\n/**\n * returns True if TS version is above 3.5, False if below.\n * uses feature detection to detect TS version >= 3.5\n * * versions below 3.5 will return `{}` for unresolvable interference\n * * versions above will return `unknown`\n *\n * @internal\n */\nexport type AtLeastTS35<True, False> = [True, False][IsUnknown<ReturnType<<T>() => T>, 0, 1>];\n\n/**\n * @internal\n */\nexport type IsUnknownOrNonInferrable<T, True, False> = AtLeastTS35<IsUnknown<T, True, False>, IsEmptyObj<T, True, IsUnknown<T, True, False>>>;\n\n/**\n * Convert a Union type `(A|B)` to an intersection type `(A&B)`\n */\nexport type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;\n\n// Appears to have a convenient side effect of ignoring `never` even if that's not what you specified\nexport type ExcludeFromTuple<T, E, Acc extends unknown[] = []> = T extends [infer Head, ...infer Tail] ? ExcludeFromTuple<Tail, E, [...Acc, ...([Head] extends [E] ? [] : [Head])]> : Acc;\ntype ExtractDispatchFromMiddlewareTuple<MiddlewareTuple extends readonly any[], Acc extends {}> = MiddlewareTuple extends [infer Head, ...infer Tail] ? ExtractDispatchFromMiddlewareTuple<Tail, Acc & (Head extends Middleware<infer D> ? IsAny<D, {}, D> : {})> : Acc;\nexport type ExtractDispatchExtensions<M> = M extends Tuple<infer MiddlewareTuple> ? ExtractDispatchFromMiddlewareTuple<MiddlewareTuple, {}> : M extends ReadonlyArray<Middleware> ? ExtractDispatchFromMiddlewareTuple<[...M], {}> : never;\ntype ExtractStoreExtensionsFromEnhancerTuple<EnhancerTuple extends readonly any[], Acc extends {}> = EnhancerTuple extends [infer Head, ...infer Tail] ? ExtractStoreExtensionsFromEnhancerTuple<Tail, Acc & (Head extends StoreEnhancer<infer Ext> ? IsAny<Ext, {}, Ext> : {})> : Acc;\nexport type ExtractStoreExtensions<E> = E extends Tuple<infer EnhancerTuple> ? ExtractStoreExtensionsFromEnhancerTuple<EnhancerTuple, {}> : E extends ReadonlyArray<StoreEnhancer> ? UnionToIntersection<E[number] extends StoreEnhancer<infer Ext> ? Ext extends {} ? IsAny<Ext, {}, Ext> : {} : {}> : never;\ntype ExtractStateExtensionsFromEnhancerTuple<EnhancerTuple extends readonly any[], Acc extends {}> = EnhancerTuple extends [infer Head, ...infer Tail] ? ExtractStateExtensionsFromEnhancerTuple<Tail, Acc & (Head extends StoreEnhancer<any, infer StateExt> ? IsAny<StateExt, {}, StateExt> : {})> : Acc;\nexport type ExtractStateExtensions<E> = E extends Tuple<infer EnhancerTuple> ? ExtractStateExtensionsFromEnhancerTuple<EnhancerTuple, {}> : E extends ReadonlyArray<StoreEnhancer> ? UnionToIntersection<E[number] extends StoreEnhancer<any, infer StateExt> ? StateExt extends {} ? IsAny<StateExt, {}, StateExt> : {} : {}> : never;\n\n/**\n * Helper type. Passes T out again, but boxes it in a way that it cannot\n * \"widen\" the type by accident if it is a generic that should be inferred\n * from elsewhere.\n *\n * @internal\n */\nexport type NoInfer<T> = [T][T extends any ? 0 : never];\nexport type NonUndefined<T> = T extends undefined ? never : T;\nexport type WithRequiredProp<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;\nexport type WithOptionalProp<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\nexport interface TypeGuard<T> {\n  (value: any): value is T;\n}\nexport interface HasMatchFunction<T> {\n  match: TypeGuard<T>;\n}\nexport const hasMatchFunction = <T,>(v: Matcher<T>): v is HasMatchFunction<T> => {\n  return v && typeof (v as HasMatchFunction<T>).match === 'function';\n};\n\n/** @public */\nexport type Matcher<T> = HasMatchFunction<T> | TypeGuard<T>;\n\n/** @public */\nexport type ActionFromMatcher<M extends Matcher<any>> = M extends Matcher<infer T> ? T : never;\nexport type Id<T> = { [K in keyof T]: T[K] } & {};\nexport type Tail<T extends any[]> = T extends [any, ...infer Tail] ? Tail : never;\nexport type UnknownIfNonSpecific<T> = {} extends T ? unknown : T;\n\n/**\n * A Promise that will never reject.\n * @see https://github.com/reduxjs/redux-toolkit/issues/4101\n */\nexport type SafePromise<T> = Promise<T> & {\n  __linterBrands: 'SafePromise';\n};\n\n/**\n * Properly wraps a Promise as a {@link SafePromise} with .catch(fallback).\n */\nexport function asSafePromise<Resolved, Rejected>(promise: Promise<Resolved>, fallback: (error: unknown) => Rejected) {\n  return (promise.catch(fallback) as SafePromise<Resolved | Rejected>);\n}","import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport { isAction } from 'redux';\nimport type { IsUnknownOrNonInferrable, IfMaybeUndefined, IfVoid, IsAny } from './tsHelpers';\nimport { hasMatchFunction } from './tsHelpers';\n\n/**\n * An action with a string type and an associated payload. This is the\n * type of action returned by `createAction()` action creators.\n *\n * @template P The type of the action's payload.\n * @template T the type used for the action type.\n * @template M The type of the action's meta (optional)\n * @template E The type of the action's error (optional)\n *\n * @public\n */\nexport type PayloadAction<P = void, T extends string = string, M = never, E = never> = {\n  payload: P;\n  type: T;\n} & ([M] extends [never] ? {} : {\n  meta: M;\n}) & ([E] extends [never] ? {} : {\n  error: E;\n});\n\n/**\n * A \"prepare\" method to be used as the second parameter of `createAction`.\n * Takes any number of arguments and returns a Flux Standard Action without\n * type (will be added later) that *must* contain a payload (might be undefined).\n *\n * @public\n */\nexport type PrepareAction<P> = ((...args: any[]) => {\n  payload: P;\n}) | ((...args: any[]) => {\n  payload: P;\n  meta: any;\n}) | ((...args: any[]) => {\n  payload: P;\n  error: any;\n}) | ((...args: any[]) => {\n  payload: P;\n  meta: any;\n  error: any;\n});\n\n/**\n * Internal version of `ActionCreatorWithPreparedPayload`. Not to be used externally.\n *\n * @internal\n */\nexport type _ActionCreatorWithPreparedPayload<PA extends PrepareAction<any> | void, T extends string = string> = PA extends PrepareAction<infer P> ? ActionCreatorWithPreparedPayload<Parameters<PA>, P, T, ReturnType<PA> extends {\n  error: infer E;\n} ? E : never, ReturnType<PA> extends {\n  meta: infer M;\n} ? M : never> : void;\n\n/**\n * Basic type for all action creators.\n *\n * @inheritdoc {redux#ActionCreator}\n */\nexport type BaseActionCreator<P, T extends string, M = never, E = never> = {\n  type: T;\n  match: (action: unknown) => action is PayloadAction<P, T, M, E>;\n};\n\n/**\n * An action creator that takes multiple arguments that are passed\n * to a `PrepareAction` method to create the final Action.\n * @typeParam Args arguments for the action creator function\n * @typeParam P `payload` type\n * @typeParam T `type` name\n * @typeParam E optional `error` type\n * @typeParam M optional `meta` type\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithPreparedPayload<Args extends unknown[], P, T extends string = string, E = never, M = never> extends BaseActionCreator<P, T, M, E> {\n  /**\n   * Calling this {@link redux#ActionCreator} with `Args` will return\n   * an Action with a payload of type `P` and (depending on the `PrepareAction`\n   * method used) a `meta`- and `error` property of types `M` and `E` respectively.\n   */\n  (...args: Args): PayloadAction<P, T, M, E>;\n}\n\n/**\n * An action creator of type `T` that takes an optional payload of type `P`.\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithOptionalPayload<P, T extends string = string> extends BaseActionCreator<P, T> {\n  /**\n   * Calling this {@link redux#ActionCreator} with an argument will\n   * return a {@link PayloadAction} of type `T` with a payload of `P`.\n   * Calling it without an argument will return a PayloadAction with a payload of `undefined`.\n   */\n  (payload?: P): PayloadAction<P, T>;\n}\n\n/**\n * An action creator of type `T` that takes no payload.\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithoutPayload<T extends string = string> extends BaseActionCreator<undefined, T> {\n  /**\n   * Calling this {@link redux#ActionCreator} will\n   * return a {@link PayloadAction} of type `T` with a payload of `undefined`\n   */\n  (noArgument: void): PayloadAction<undefined, T>;\n}\n\n/**\n * An action creator of type `T` that requires a payload of type P.\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithPayload<P, T extends string = string> extends BaseActionCreator<P, T> {\n  /**\n   * Calling this {@link redux#ActionCreator} with an argument will\n   * return a {@link PayloadAction} of type `T` with a payload of `P`\n   */\n  (payload: P): PayloadAction<P, T>;\n}\n\n/**\n * An action creator of type `T` whose `payload` type could not be inferred. Accepts everything as `payload`.\n *\n * @inheritdoc {redux#ActionCreator}\n *\n * @public\n */\nexport interface ActionCreatorWithNonInferrablePayload<T extends string = string> extends BaseActionCreator<unknown, T> {\n  /**\n   * Calling this {@link redux#ActionCreator} with an argument will\n   * return a {@link PayloadAction} of type `T` with a payload\n   * of exactly the type of the argument.\n   */\n  <PT extends unknown>(payload: PT): PayloadAction<PT, T>;\n}\n\n/**\n * An action creator that produces actions with a `payload` attribute.\n *\n * @typeParam P the `payload` type\n * @typeParam T the `type` of the resulting action\n * @typeParam PA if the resulting action is preprocessed by a `prepare` method, the signature of said method.\n *\n * @public\n */\nexport type PayloadActionCreator<P = void, T extends string = string, PA extends PrepareAction<P> | void = void> = IfPrepareActionMethodProvided<PA, _ActionCreatorWithPreparedPayload<PA, T>,\n// else\nIsAny<P, ActionCreatorWithPayload<any, T>, IsUnknownOrNonInferrable<P, ActionCreatorWithNonInferrablePayload<T>,\n// else\nIfVoid<P, ActionCreatorWithoutPayload<T>,\n// else\nIfMaybeUndefined<P, ActionCreatorWithOptionalPayload<P, T>,\n// else\nActionCreatorWithPayload<P, T>>>>>>;\n\n/**\n * A utility function to create an action creator for the given action type\n * string. The action creator accepts a single argument, which will be included\n * in the action object as a field called payload. The action creator function\n * will also have its toString() overridden so that it returns the action type.\n *\n * @param type The action type to use for created actions.\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\n *                If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\n *\n * @public\n */\nexport function createAction<P = void, T extends string = string>(type: T): PayloadActionCreator<P, T>;\n\n/**\n * A utility function to create an action creator for the given action type\n * string. The action creator accepts a single argument, which will be included\n * in the action object as a field called payload. The action creator function\n * will also have its toString() overridden so that it returns the action type.\n *\n * @param type The action type to use for created actions.\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\n *                If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\n *\n * @public\n */\nexport function createAction<PA extends PrepareAction<any>, T extends string = string>(type: T, prepareAction: PA): PayloadActionCreator<ReturnType<PA>['payload'], T, PA>;\nexport function createAction(type: string, prepareAction?: Function): any {\n  function actionCreator(...args: any[]) {\n    if (prepareAction) {\n      let prepared = prepareAction(...args);\n      if (!prepared) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(0) : 'prepareAction did not return an object');\n      }\n      return {\n        type,\n        payload: prepared.payload,\n        ...('meta' in prepared && {\n          meta: prepared.meta\n        }),\n        ...('error' in prepared && {\n          error: prepared.error\n        })\n      };\n    }\n    return {\n      type,\n      payload: args[0]\n    };\n  }\n  actionCreator.toString = () => `${type}`;\n  actionCreator.type = type;\n  actionCreator.match = (action: unknown): action is PayloadAction => isAction(action) && action.type === type;\n  return actionCreator;\n}\n\n/**\n * Returns true if value is an RTK-like action creator, with a static type property and match method.\n */\nexport function isActionCreator(action: unknown): action is BaseActionCreator<unknown, string> & Function {\n  return typeof action === 'function' && 'type' in action &&\n  // hasMatchFunction only wants Matchers but I don't see the point in rewriting it\n  hasMatchFunction((action as any));\n}\n\n/**\n * Returns true if value is an action with a string type and valid Flux Standard Action keys.\n */\nexport function isFSA(action: unknown): action is {\n  type: string;\n  payload?: unknown;\n  error?: unknown;\n  meta?: unknown;\n} {\n  return isAction(action) && Object.keys(action).every(isValidKey);\n}\nfunction isValidKey(key: string) {\n  return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1;\n}\n\n// helper types for more readable typings\n\ntype IfPrepareActionMethodProvided<PA extends PrepareAction<any> | void, True, False> = PA extends (...args: any[]) => any ? True : False;","import { Action } from '../types/actions';\nimport isPlainObject from './isPlainObject';\nexport default function isAction(action: unknown): action is Action<string> {\n  return isPlainObject(action) && 'type' in action && typeof (action as Record<'type', unknown>).type === 'string';\n}","import { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\nimport { produce as createNextState, isDraftable } from 'immer';\nexport function getTimeMeasureUtils(maxDelay: number, fnName: string) {\n  let elapsed = 0;\n  return {\n    measureTime<T>(fn: () => T): T {\n      const started = Date.now();\n      try {\n        return fn();\n      } finally {\n        const finished = Date.now();\n        elapsed += finished - started;\n      }\n    },\n    warnIfExceeded() {\n      if (elapsed > maxDelay) {\n        console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.`);\n      }\n    }\n  };\n}\nexport function delay(ms: number) {\n  return new Promise(resolve => setTimeout(resolve, ms));\n}\nexport function find<T>(iterable: Iterable<T>, comparator: (item: T) => boolean): T | undefined {\n  for (const entry of iterable) {\n    if (comparator(entry)) {\n      return entry;\n    }\n  }\n  return undefined;\n}\nexport class Tuple<Items extends ReadonlyArray<unknown> = []> extends Array<Items[number]> {\n  constructor(length: number);\n  constructor(...items: Items);\n  constructor(...items: any[]) {\n    super(...items);\n    Object.setPrototypeOf(this, Tuple.prototype);\n  }\n  static get [Symbol.species]() {\n    return (Tuple as any);\n  }\n  concat<AdditionalItems extends ReadonlyArray<unknown>>(items: Tuple<AdditionalItems>): Tuple<[...Items, ...AdditionalItems]>;\n  concat<AdditionalItems extends ReadonlyArray<unknown>>(items: AdditionalItems): Tuple<[...Items, ...AdditionalItems]>;\n  concat<AdditionalItems extends ReadonlyArray<unknown>>(...items: AdditionalItems): Tuple<[...Items, ...AdditionalItems]>;\n  concat(...arr: any[]) {\n    return super.concat.apply(this, arr);\n  }\n  prepend<AdditionalItems extends ReadonlyArray<unknown>>(items: Tuple<AdditionalItems>): Tuple<[...AdditionalItems, ...Items]>;\n  prepend<AdditionalItems extends ReadonlyArray<unknown>>(items: AdditionalItems): Tuple<[...AdditionalItems, ...Items]>;\n  prepend<AdditionalItems extends ReadonlyArray<unknown>>(...items: AdditionalItems): Tuple<[...AdditionalItems, ...Items]>;\n  prepend(...arr: any[]) {\n    if (arr.length === 1 && Array.isArray(arr[0])) {\n      return new Tuple(...arr[0].concat(this));\n    }\n    return new Tuple(...arr.concat(this));\n  }\n}\nexport function freezeDraftable<T>(val: T) {\n  return isDraftable(val) ? createNextState(val, () => {}) : val;\n}\ninterface WeakMapEmplaceHandler<K extends object, V> {\n  /**\n   * Will be called to get value, if no value is currently in map.\n   */\n  insert?(key: K, map: WeakMap<K, V>): V;\n  /**\n   * Will be called to update a value, if one exists already.\n   */\n  update?(previous: V, key: K, map: WeakMap<K, V>): V;\n}\ninterface MapEmplaceHandler<K, V> {\n  /**\n   * Will be called to get value, if no value is currently in map.\n   */\n  insert?(key: K, map: Map<K, V>): V;\n  /**\n   * Will be called to update a value, if one exists already.\n   */\n  update?(previous: V, key: K, map: Map<K, V>): V;\n}\nexport function emplace<K, V>(map: Map<K, V>, key: K, handler: MapEmplaceHandler<K, V>): V;\nexport function emplace<K extends object, V>(map: WeakMap<K, V>, key: K, handler: WeakMapEmplaceHandler<K, V>): V;\n/**\n * Allow inserting a new value, or updating an existing one\n * @throws if called for a key with no current value and no `insert` handler is provided\n * @returns current value in map (after insertion/updating)\n * ```ts\n * // return current value if already in map, otherwise initialise to 0 and return that\n * const num = emplace(map, key, {\n *   insert: () => 0\n * })\n *\n * // increase current value by one if already in map, otherwise initialise to 0\n * const num = emplace(map, key, {\n *   update: (n) => n + 1,\n *   insert: () => 0,\n * })\n *\n * // only update if value's already in the map - and increase it by one\n * if (map.has(key)) {\n *   const num = emplace(map, key, {\n *     update: (n) => n + 1,\n *   })\n * }\n * ```\n *\n * @remarks\n * Based on https://github.com/tc39/proposal-upsert currently in Stage 2 - maybe in a few years we'll be able to replace this with direct method calls\n */\nexport function emplace<K extends object, V>(map: WeakMap<K, V>, key: K, handler: WeakMapEmplaceHandler<K, V>): V {\n  if (map.has(key)) {\n    let value = (map.get(key) as V);\n    if (handler.update) {\n      value = handler.update(value, key, map);\n      map.set(key, value);\n    }\n    return value;\n  }\n  if (!handler.insert) throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(10) : 'No insert provided for key not already in map');\n  const inserted = handler.insert(key, map);\n  map.set(key, inserted);\n  return inserted;\n}","import type { Middleware, UnknownAction } from 'redux';\nimport type { ThunkMiddleware } from 'redux-thunk';\nimport { thunk as thunkMiddleware, withExtraArgument } from 'redux-thunk';\nimport type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware';\nimport { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware';\nimport type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware';\n/* PROD_START_REMOVE_UMD */\nimport { createImmutableStateInvariantMiddleware } from './immutableStateInvariantMiddleware';\n/* PROD_STOP_REMOVE_UMD */\n\nimport type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware';\nimport { createSerializableStateInvariantMiddleware } from './serializableStateInvariantMiddleware';\nimport type { ExcludeFromTuple } from './tsHelpers';\nimport { Tuple } from './utils';\nfunction isBoolean(x: any): x is boolean {\n  return typeof x === 'boolean';\n}\ninterface ThunkOptions<E = any> {\n  extraArgument: E;\n}\ninterface GetDefaultMiddlewareOptions {\n  thunk?: boolean | ThunkOptions;\n  immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions;\n  serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions;\n  actionCreatorCheck?: boolean | ActionCreatorInvariantMiddlewareOptions;\n}\nexport type ThunkMiddlewareFor<S, O extends GetDefaultMiddlewareOptions = {}> = O extends {\n  thunk: false;\n} ? never : O extends {\n  thunk: {\n    extraArgument: infer E;\n  };\n} ? ThunkMiddleware<S, UnknownAction, E> : ThunkMiddleware<S, UnknownAction>;\nexport type GetDefaultMiddleware<S = any> = <O extends GetDefaultMiddlewareOptions = {\n  thunk: true;\n  immutableCheck: true;\n  serializableCheck: true;\n  actionCreatorCheck: true;\n}>(options?: O) => Tuple<ExcludeFromTuple<[ThunkMiddlewareFor<S, O>], never>>;\nexport const buildGetDefaultMiddleware = <S = any,>(): GetDefaultMiddleware<S> => function getDefaultMiddleware(options) {\n  const {\n    thunk = true,\n    immutableCheck = true,\n    serializableCheck = true,\n    actionCreatorCheck = true\n  } = options ?? {};\n  let middlewareArray = new Tuple<Middleware[]>();\n  if (thunk) {\n    if (isBoolean(thunk)) {\n      middlewareArray.push(thunkMiddleware);\n    } else {\n      middlewareArray.push(withExtraArgument(thunk.extraArgument));\n    }\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    if (immutableCheck) {\n      /* PROD_START_REMOVE_UMD */\n      let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {};\n      if (!isBoolean(immutableCheck)) {\n        immutableOptions = immutableCheck;\n      }\n      middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\n      /* PROD_STOP_REMOVE_UMD */\n    }\n    if (serializableCheck) {\n      let serializableOptions: SerializableStateInvariantMiddlewareOptions = {};\n      if (!isBoolean(serializableCheck)) {\n        serializableOptions = serializableCheck;\n      }\n      middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\n    }\n    if (actionCreatorCheck) {\n      let actionCreatorOptions: ActionCreatorInvariantMiddlewareOptions = {};\n      if (!isBoolean(actionCreatorCheck)) {\n        actionCreatorOptions = actionCreatorCheck;\n      }\n      middlewareArray.unshift(createActionCreatorInvariantMiddleware(actionCreatorOptions));\n    }\n  }\n  return (middlewareArray as any);\n};","import type { StoreEnhancer } from 'redux';\nexport const SHOULD_AUTOBATCH = 'RTK_autoBatch';\nexport const prepareAutoBatched = <T,>() => (payload: T): {\n  payload: T;\n  meta: unknown;\n} => ({\n  payload,\n  meta: {\n    [SHOULD_AUTOBATCH]: true\n  }\n});\nconst createQueueWithTimer = (timeout: number) => {\n  return (notify: () => void) => {\n    setTimeout(notify, timeout);\n  };\n};\n\n// requestAnimationFrame won't exist in SSR environments.\n// Fall back to a vague approximation just to keep from erroring.\nconst rAF = typeof window !== 'undefined' && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10);\nexport type AutoBatchOptions = {\n  type: 'tick';\n} | {\n  type: 'timer';\n  timeout: number;\n} | {\n  type: 'raf';\n} | {\n  type: 'callback';\n  queueNotification: (notify: () => void) => void;\n};\n\n/**\n * A Redux store enhancer that watches for \"low-priority\" actions, and delays\n * notifying subscribers until either the queued callback executes or the\n * next \"standard-priority\" action is dispatched.\n *\n * This allows dispatching multiple \"low-priority\" actions in a row with only\n * a single subscriber notification to the UI after the sequence of actions\n * is finished, thus improving UI re-render performance.\n *\n * Watches for actions with the `action.meta[SHOULD_AUTOBATCH]` attribute.\n * This can be added to `action.meta` manually, or by using the\n * `prepareAutoBatched` helper.\n *\n * By default, it will queue a notification for the end of the event loop tick.\n * However, you can pass several other options to configure the behavior:\n * - `{type: 'tick'}`: queues using `queueMicrotask`\n * - `{type: 'timer', timeout: number}`: queues using `setTimeout`\n * - `{type: 'raf'}`: queues using `requestAnimationFrame` (default)\n * - `{type: 'callback', queueNotification: (notify: () => void) => void}`: lets you provide your own callback\n *\n *\n */\nexport const autoBatchEnhancer = (options: AutoBatchOptions = {\n  type: 'raf'\n}): StoreEnhancer => next => (...args) => {\n  const store = next(...args);\n  let notifying = true;\n  let shouldNotifyAtEndOfTick = false;\n  let notificationQueued = false;\n  const listeners = new Set<() => void>();\n  const queueCallback = options.type === 'tick' ? queueMicrotask : options.type === 'raf' ? rAF : options.type === 'callback' ? options.queueNotification : createQueueWithTimer(options.timeout);\n  const notifyListeners = () => {\n    // We're running at the end of the event loop tick.\n    // Run the real listener callbacks to actually update the UI.\n    notificationQueued = false;\n    if (shouldNotifyAtEndOfTick) {\n      shouldNotifyAtEndOfTick = false;\n      listeners.forEach(l => l());\n    }\n  };\n  return Object.assign({}, store, {\n    // Override the base `store.subscribe` method to keep original listeners\n    // from running if we're delaying notifications\n    subscribe(listener: () => void) {\n      // Each wrapped listener will only call the real listener if\n      // the `notifying` flag is currently active when it's called.\n      // This lets the base store work as normal, while the actual UI\n      // update becomes controlled by this enhancer.\n      const wrappedListener: typeof listener = () => notifying && listener();\n      const unsubscribe = store.subscribe(wrappedListener);\n      listeners.add(listener);\n      return () => {\n        unsubscribe();\n        listeners.delete(listener);\n      };\n    },\n    // Override the base `store.dispatch` method so that we can check actions\n    // for the `shouldAutoBatch` flag and determine if batching is active\n    dispatch(action: any) {\n      try {\n        // If the action does _not_ have the `shouldAutoBatch` flag,\n        // we resume/continue normal notify-after-each-dispatch behavior\n        notifying = !action?.meta?.[SHOULD_AUTOBATCH];\n        // If a `notifyListeners` microtask was queued, you can't cancel it.\n        // Instead, we set a flag so that it's a no-op when it does run\n        shouldNotifyAtEndOfTick = !notifying;\n        if (shouldNotifyAtEndOfTick) {\n          // We've seen at least 1 action with `SHOULD_AUTOBATCH`. Try to queue\n          // a microtask to notify listeners at the end of the event loop tick.\n          // Make sure we only enqueue this _once_ per tick.\n          if (!notificationQueued) {\n            notificationQueued = true;\n            queueCallback(notifyListeners);\n          }\n        }\n        // Go ahead and process the action as usual, including reducers.\n        // If normal notification behavior is enabled, the store will notify\n        // all of its own listeners, and the wrapper callbacks above will\n        // see `notifying` is true and pass on to the real listener callbacks.\n        // If we're \"batching\" behavior, then the wrapped callbacks will\n        // bail out, causing the base store notification behavior to be no-ops.\n        return store.dispatch(action);\n      } finally {\n        // Assume we're back to normal behavior after each action\n        notifying = true;\n      }\n    }\n  });\n};","import type { StoreEnhancer } from 'redux';\nimport type { AutoBatchOptions } from './autoBatchEnhancer';\nimport { autoBatchEnhancer } from './autoBatchEnhancer';\nimport { Tuple } from './utils';\nimport type { Middlewares } from './configureStore';\nimport type { ExtractDispatchExtensions } from './tsHelpers';\ntype GetDefaultEnhancersOptions = {\n  autoBatch?: boolean | AutoBatchOptions;\n};\nexport type GetDefaultEnhancers<M extends Middlewares<any>> = (options?: GetDefaultEnhancersOptions) => Tuple<[StoreEnhancer<{\n  dispatch: ExtractDispatchExtensions<M>;\n}>]>;\nexport const buildGetDefaultEnhancers = <M extends Middlewares<any>,>(middlewareEnhancer: StoreEnhancer<{\n  dispatch: ExtractDispatchExtensions<M>;\n}>): GetDefaultEnhancers<M> => function getDefaultEnhancers(options) {\n  const {\n    autoBatch = true\n  } = options ?? {};\n  let enhancerArray = new Tuple<StoreEnhancer[]>(middlewareEnhancer);\n  if (autoBatch) {\n    enhancerArray.push(autoBatchEnhancer(typeof autoBatch === 'object' ? autoBatch : undefined));\n  }\n  return (enhancerArray as any);\n};","import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2, formatProdErrorMessage as _formatProdErrorMessage3, formatProdErrorMessage as _formatProdErrorMessage4, formatProdErrorMessage as _formatProdErrorMessage5, formatProdErrorMessage as _formatProdErrorMessage6 } from \"@reduxjs/toolkit\";\nimport type { Action } from 'redux';\nimport type { CaseReducer, CaseReducers, ActionMatcherDescriptionCollection } from './createReducer';\nimport type { TypeGuard } from './tsHelpers';\nexport type TypedActionCreator<Type extends string> = {\n  (...args: any[]): Action<Type>;\n  type: Type;\n};\n\n/**\n * A builder for an action <-> reducer map.\n *\n * @public\n */\nexport interface ActionReducerMapBuilder<State> {\n  /**\n   * Adds a case reducer to handle a single exact action type.\n   * @remarks\n   * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\n   * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\n   * @param reducer - The actual case reducer function.\n   */\n  addCase<ActionCreator extends TypedActionCreator<string>>(actionCreator: ActionCreator, reducer: CaseReducer<State, ReturnType<ActionCreator>>): ActionReducerMapBuilder<State>;\n  /**\n   * Adds a case reducer to handle a single exact action type.\n   * @remarks\n   * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\n   * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\n   * @param reducer - The actual case reducer function.\n   */\n  addCase<Type extends string, A extends Action<Type>>(type: Type, reducer: CaseReducer<State, A>): ActionReducerMapBuilder<State>;\n\n  /**\n   * Allows you to match your incoming actions against your own filter function instead of only the `action.type` property.\n   * @remarks\n   * If multiple matcher reducers match, all of them will be executed in the order\n   * they were defined in - even if a case reducer already matched.\n   * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\n   * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates)\n   *   function\n   * @param reducer - The actual case reducer function.\n   *\n   * @example\n  ```ts\n  import {\n  createAction,\n  createReducer,\n  AsyncThunk,\n  UnknownAction,\n  } from \"@reduxjs/toolkit\";\n  type GenericAsyncThunk = AsyncThunk<unknown, unknown, any>;\n  type PendingAction = ReturnType<GenericAsyncThunk[\"pending\"]>;\n  type RejectedAction = ReturnType<GenericAsyncThunk[\"rejected\"]>;\n  type FulfilledAction = ReturnType<GenericAsyncThunk[\"fulfilled\"]>;\n  const initialState: Record<string, string> = {};\n  const resetAction = createAction(\"reset-tracked-loading-state\");\n  function isPendingAction(action: UnknownAction): action is PendingAction {\n  return typeof action.type === \"string\" && action.type.endsWith(\"/pending\");\n  }\n  const reducer = createReducer(initialState, (builder) => {\n  builder\n    .addCase(resetAction, () => initialState)\n    // matcher can be defined outside as a type predicate function\n    .addMatcher(isPendingAction, (state, action) => {\n      state[action.meta.requestId] = \"pending\";\n    })\n    .addMatcher(\n      // matcher can be defined inline as a type predicate function\n      (action): action is RejectedAction => action.type.endsWith(\"/rejected\"),\n      (state, action) => {\n        state[action.meta.requestId] = \"rejected\";\n      }\n    )\n    // matcher can just return boolean and the matcher can receive a generic argument\n    .addMatcher<FulfilledAction>(\n      (action) => action.type.endsWith(\"/fulfilled\"),\n      (state, action) => {\n        state[action.meta.requestId] = \"fulfilled\";\n      }\n    );\n  });\n  ```\n   */\n  addMatcher<A>(matcher: TypeGuard<A> | ((action: any) => boolean), reducer: CaseReducer<State, A extends Action ? A : A & Action>): Omit<ActionReducerMapBuilder<State>, 'addCase'>;\n\n  /**\n   * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\n   * reducer was executed for this action.\n   * @param reducer - The fallback \"default case\" reducer function.\n   *\n   * @example\n  ```ts\n  import { createReducer } from '@reduxjs/toolkit'\n  const initialState = { otherActions: 0 }\n  const reducer = createReducer(initialState, builder => {\n  builder\n    // .addCase(...)\n    // .addMatcher(...)\n    .addDefaultCase((state, action) => {\n      state.otherActions++\n    })\n  })\n  ```\n   */\n  addDefaultCase(reducer: CaseReducer<State, Action>): {};\n}\nexport function executeReducerBuilderCallback<S>(builderCallback: (builder: ActionReducerMapBuilder<S>) => void): [CaseReducers<S, any>, ActionMatcherDescriptionCollection<S>, CaseReducer<S, Action> | undefined] {\n  const actionsMap: CaseReducers<S, any> = {};\n  const actionMatchers: ActionMatcherDescriptionCollection<S> = [];\n  let defaultCaseReducer: CaseReducer<S, Action> | undefined;\n  const builder = {\n    addCase(typeOrActionCreator: string | TypedActionCreator<any>, reducer: CaseReducer<S>) {\n      if (process.env.NODE_ENV !== 'production') {\n        /*\n         to keep the definition by the user in line with actual behavior,\n         we enforce `addCase` to always be called before calling `addMatcher`\n         as matching cases take precedence over matchers\n         */\n        if (actionMatchers.length > 0) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(26) : '`builder.addCase` should only be called before calling `builder.addMatcher`');\n        }\n        if (defaultCaseReducer) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(27) : '`builder.addCase` should only be called before calling `builder.addDefaultCase`');\n        }\n      }\n      const type = typeof typeOrActionCreator === 'string' ? typeOrActionCreator : typeOrActionCreator.type;\n      if (!type) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(28) : '`builder.addCase` cannot be called with an empty action type');\n      }\n      if (type in actionsMap) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(29) : '`builder.addCase` cannot be called with two reducers for the same action type ' + `'${type}'`);\n      }\n      actionsMap[type] = reducer;\n      return builder;\n    },\n    addMatcher<A>(matcher: TypeGuard<A>, reducer: CaseReducer<S, A extends Action ? A : A & Action>) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (defaultCaseReducer) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(30) : '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`');\n        }\n      }\n      actionMatchers.push({\n        matcher,\n        reducer\n      });\n      return builder;\n    },\n    addDefaultCase(reducer: CaseReducer<S, Action>) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (defaultCaseReducer) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(31) : '`builder.addDefaultCase` can only be called once');\n        }\n      }\n      defaultCaseReducer = reducer;\n      return builder;\n    }\n  };\n  builderCallback(builder);\n  return [actionsMap, actionMatchers, defaultCaseReducer];\n}","import type { ActionFromMatcher, Matcher, UnionToIntersection } from './tsHelpers';\nimport { hasMatchFunction } from './tsHelpers';\nimport type { AsyncThunk, AsyncThunkFulfilledActionCreator, AsyncThunkPendingActionCreator, AsyncThunkRejectedActionCreator } from './createAsyncThunk';\n\n/** @public */\nexport type ActionMatchingAnyOf<Matchers extends Matcher<any>[]> = ActionFromMatcher<Matchers[number]>;\n\n/** @public */\nexport type ActionMatchingAllOf<Matchers extends Matcher<any>[]> = UnionToIntersection<ActionMatchingAnyOf<Matchers>>;\nconst matches = (matcher: Matcher<any>, action: any) => {\n  if (hasMatchFunction(matcher)) {\n    return matcher.match(action);\n  } else {\n    return matcher(action);\n  }\n};\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action matches any one of the supplied type guards or action\n * creators.\n *\n * @param matchers The type guards or action creators to match against.\n *\n * @public\n */\nexport function isAnyOf<Matchers extends Matcher<any>[]>(...matchers: Matchers) {\n  return (action: any): action is ActionMatchingAnyOf<Matchers> => {\n    return matchers.some(matcher => matches(matcher, action));\n  };\n}\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action matches all of the supplied type guards or action\n * creators.\n *\n * @param matchers The type guards or action creators to match against.\n *\n * @public\n */\nexport function isAllOf<Matchers extends Matcher<any>[]>(...matchers: Matchers) {\n  return (action: any): action is ActionMatchingAllOf<Matchers> => {\n    return matchers.every(matcher => matches(matcher, action));\n  };\n}\n\n/**\n * @param action A redux action\n * @param validStatus An array of valid meta.requestStatus values\n *\n * @internal\n */\nexport function hasExpectedRequestMetadata(action: any, validStatus: readonly string[]) {\n  if (!action || !action.meta) return false;\n  const hasValidRequestId = typeof action.meta.requestId === 'string';\n  const hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;\n  return hasValidRequestId && hasValidRequestStatus;\n}\nfunction isAsyncThunkArray(a: [any] | AnyAsyncThunk[]): a is AnyAsyncThunk[] {\n  return typeof a[0] === 'function' && 'pending' in a[0] && 'fulfilled' in a[0] && 'rejected' in a[0];\n}\nexport type UnknownAsyncThunkPendingAction = ReturnType<AsyncThunkPendingActionCreator<unknown>>;\nexport type PendingActionFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['pending']>;\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator, and that\n * the action is pending.\n *\n * @public\n */\nexport function isPending(): (action: any) => action is UnknownAsyncThunkPendingAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators,\n * and that the action is pending.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isPending<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is PendingActionFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a pending thunk action\n * @public\n */\nexport function isPending(action: any): action is UnknownAsyncThunkPendingAction;\nexport function isPending<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n  if (asyncThunks.length === 0) {\n    return (action: any) => hasExpectedRequestMetadata(action, ['pending']);\n  }\n  if (!isAsyncThunkArray(asyncThunks)) {\n    return isPending()(asyncThunks[0]);\n  }\n  return isAnyOf(...asyncThunks.map(asyncThunk => asyncThunk.pending));\n}\nexport type UnknownAsyncThunkRejectedAction = ReturnType<AsyncThunkRejectedActionCreator<unknown, unknown>>;\nexport type RejectedActionFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['rejected']>;\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator, and that\n * the action is rejected.\n *\n * @public\n */\nexport function isRejected(): (action: any) => action is UnknownAsyncThunkRejectedAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators,\n * and that the action is rejected.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isRejected<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is RejectedActionFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a rejected thunk action\n * @public\n */\nexport function isRejected(action: any): action is UnknownAsyncThunkRejectedAction;\nexport function isRejected<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n  if (asyncThunks.length === 0) {\n    return (action: any) => hasExpectedRequestMetadata(action, ['rejected']);\n  }\n  if (!isAsyncThunkArray(asyncThunks)) {\n    return isRejected()(asyncThunks[0]);\n  }\n  return isAnyOf(...asyncThunks.map(asyncThunk => asyncThunk.rejected));\n}\nexport type UnknownAsyncThunkRejectedWithValueAction = ReturnType<AsyncThunkRejectedActionCreator<unknown, unknown>>;\nexport type RejectedWithValueActionFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['rejected']> & (T extends AsyncThunk<any, any, {\n  rejectValue: infer RejectedValue;\n}> ? {\n  payload: RejectedValue;\n} : unknown);\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator, and that\n * the action is rejected with value.\n *\n * @public\n */\nexport function isRejectedWithValue(): (action: any) => action is UnknownAsyncThunkRejectedAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators,\n * and that the action is rejected with value.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isRejectedWithValue<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is RejectedWithValueActionFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a rejected thunk action with value\n * @public\n */\nexport function isRejectedWithValue(action: any): action is UnknownAsyncThunkRejectedAction;\nexport function isRejectedWithValue<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n  const hasFlag = (action: any): action is any => {\n    return action && action.meta && action.meta.rejectedWithValue;\n  };\n  if (asyncThunks.length === 0) {\n    return isAllOf(isRejected(...asyncThunks), hasFlag);\n  }\n  if (!isAsyncThunkArray(asyncThunks)) {\n    return isRejectedWithValue()(asyncThunks[0]);\n  }\n  return isAllOf(isRejected(...asyncThunks), hasFlag);\n}\nexport type UnknownAsyncThunkFulfilledAction = ReturnType<AsyncThunkFulfilledActionCreator<unknown, unknown>>;\nexport type FulfilledActionFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['fulfilled']>;\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator, and that\n * the action is fulfilled.\n *\n * @public\n */\nexport function isFulfilled(): (action: any) => action is UnknownAsyncThunkFulfilledAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators,\n * and that the action is fulfilled.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isFulfilled<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is FulfilledActionFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a fulfilled thunk action\n * @public\n */\nexport function isFulfilled(action: any): action is UnknownAsyncThunkFulfilledAction;\nexport function isFulfilled<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n  if (asyncThunks.length === 0) {\n    return (action: any) => hasExpectedRequestMetadata(action, ['fulfilled']);\n  }\n  if (!isAsyncThunkArray(asyncThunks)) {\n    return isFulfilled()(asyncThunks[0]);\n  }\n  return isAnyOf(...asyncThunks.map(asyncThunk => asyncThunk.fulfilled));\n}\nexport type UnknownAsyncThunkAction = UnknownAsyncThunkPendingAction | UnknownAsyncThunkRejectedAction | UnknownAsyncThunkFulfilledAction;\nexport type AnyAsyncThunk = {\n  pending: {\n    match: (action: any) => action is any;\n  };\n  fulfilled: {\n    match: (action: any) => action is any;\n  };\n  rejected: {\n    match: (action: any) => action is any;\n  };\n};\nexport type ActionsFromAsyncThunk<T extends AnyAsyncThunk> = ActionFromMatcher<T['pending']> | ActionFromMatcher<T['fulfilled']> | ActionFromMatcher<T['rejected']>;\n\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action was created by an async thunk action creator.\n *\n * @public\n */\nexport function isAsyncThunkAction(): (action: any) => action is UnknownAsyncThunkAction;\n/**\n * A higher-order function that returns a function that may be used to check\n * whether an action belongs to one of the provided async thunk action creators.\n *\n * @param asyncThunks (optional) The async thunk action creators to match against.\n *\n * @public\n */\nexport function isAsyncThunkAction<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks): (action: any) => action is ActionsFromAsyncThunk<AsyncThunks[number]>;\n/**\n * Tests if `action` is a thunk action\n * @public\n */\nexport function isAsyncThunkAction(action: any): action is UnknownAsyncThunkAction;\nexport function isAsyncThunkAction<AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]>(...asyncThunks: AsyncThunks | [any]) {\n  if (asyncThunks.length === 0) {\n    return (action: any) => hasExpectedRequestMetadata(action, ['pending', 'fulfilled', 'rejected']);\n  }\n  if (!isAsyncThunkArray(asyncThunks)) {\n    return isAsyncThunkAction()(asyncThunks[0]);\n  }\n  return isAnyOf(...asyncThunks.flatMap(asyncThunk => [asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled]));\n}","// Borrowed from https://github.com/ai/nanoid/blob/3.0.2/non-secure/index.js\n// This alphabet uses `A-Za-z0-9_-` symbols. A genetic algorithm helped\n// optimize the gzip compression for this alphabet.\nlet urlAlphabet = 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW';\n\n/**\r\n *\r\n * @public\r\n */\nexport let nanoid = (size = 21) => {\n  let id = '';\n  // A compact alternative for `for (var i = 0; i < step; i++)`.\n  let i = size;\n  while (i--) {\n    // `| 0` is more compact and faster than `Math.floor()`.\n    id += urlAlphabet[Math.random() * 64 | 0];\n  }\n  return id;\n};","import type { Dispatch, UnknownAction } from 'redux';\nimport type { ThunkDispatch } from 'redux-thunk';\nimport type { ActionCreatorWithPreparedPayload } from './createAction';\nimport { createAction } from './createAction';\nimport { isAnyOf } from './matchers';\nimport { nanoid } from './nanoid';\nimport type { FallbackIfUnknown, Id, IsAny, IsUnknown, SafePromise } from './tsHelpers';\nexport type BaseThunkAPI<S, E, D extends Dispatch = Dispatch, RejectedValue = unknown, RejectedMeta = unknown, FulfilledMeta = unknown> = {\n  dispatch: D;\n  getState: () => S;\n  extra: E;\n  requestId: string;\n  signal: AbortSignal;\n  abort: (reason?: string) => void;\n  rejectWithValue: IsUnknown<RejectedMeta, (value: RejectedValue) => RejectWithValue<RejectedValue, RejectedMeta>, (value: RejectedValue, meta: RejectedMeta) => RejectWithValue<RejectedValue, RejectedMeta>>;\n  fulfillWithValue: IsUnknown<FulfilledMeta, <FulfilledValue>(value: FulfilledValue) => FulfilledValue, <FulfilledValue>(value: FulfilledValue, meta: FulfilledMeta) => FulfillWithMeta<FulfilledValue, FulfilledMeta>>;\n};\n\n/**\n * @public\n */\nexport interface SerializedError {\n  name?: string;\n  message?: string;\n  stack?: string;\n  code?: string;\n}\nconst commonProperties: Array<keyof SerializedError> = ['name', 'message', 'stack', 'code'];\nclass RejectWithValue<Payload, RejectedMeta> {\n  /*\n  type-only property to distinguish between RejectWithValue and FulfillWithMeta\n  does not exist at runtime\n  */\n  private readonly _type!: 'RejectWithValue';\n  constructor(public readonly payload: Payload, public readonly meta: RejectedMeta) {}\n}\nclass FulfillWithMeta<Payload, FulfilledMeta> {\n  /*\n  type-only property to distinguish between RejectWithValue and FulfillWithMeta\n  does not exist at runtime\n  */\n  private readonly _type!: 'FulfillWithMeta';\n  constructor(public readonly payload: Payload, public readonly meta: FulfilledMeta) {}\n}\n\n/**\n * Serializes an error into a plain object.\n * Reworked from https://github.com/sindresorhus/serialize-error\n *\n * @public\n */\nexport const miniSerializeError = (value: any): SerializedError => {\n  if (typeof value === 'object' && value !== null) {\n    const simpleError: SerializedError = {};\n    for (const property of commonProperties) {\n      if (typeof value[property] === 'string') {\n        simpleError[property] = value[property];\n      }\n    }\n    return simpleError;\n  }\n  return {\n    message: String(value)\n  };\n};\nexport type AsyncThunkConfig = {\n  state?: unknown;\n  dispatch?: ThunkDispatch<unknown, unknown, UnknownAction>;\n  extra?: unknown;\n  rejectValue?: unknown;\n  serializedErrorType?: unknown;\n  pendingMeta?: unknown;\n  fulfilledMeta?: unknown;\n  rejectedMeta?: unknown;\n};\nexport type GetState<ThunkApiConfig> = ThunkApiConfig extends {\n  state: infer State;\n} ? State : unknown;\ntype GetExtra<ThunkApiConfig> = ThunkApiConfig extends {\n  extra: infer Extra;\n} ? Extra : unknown;\ntype GetDispatch<ThunkApiConfig> = ThunkApiConfig extends {\n  dispatch: infer Dispatch;\n} ? FallbackIfUnknown<Dispatch, ThunkDispatch<GetState<ThunkApiConfig>, GetExtra<ThunkApiConfig>, UnknownAction>> : ThunkDispatch<GetState<ThunkApiConfig>, GetExtra<ThunkApiConfig>, UnknownAction>;\nexport type GetThunkAPI<ThunkApiConfig> = BaseThunkAPI<GetState<ThunkApiConfig>, GetExtra<ThunkApiConfig>, GetDispatch<ThunkApiConfig>, GetRejectValue<ThunkApiConfig>, GetRejectedMeta<ThunkApiConfig>, GetFulfilledMeta<ThunkApiConfig>>;\ntype GetRejectValue<ThunkApiConfig> = ThunkApiConfig extends {\n  rejectValue: infer RejectValue;\n} ? RejectValue : unknown;\ntype GetPendingMeta<ThunkApiConfig> = ThunkApiConfig extends {\n  pendingMeta: infer PendingMeta;\n} ? PendingMeta : unknown;\ntype GetFulfilledMeta<ThunkApiConfig> = ThunkApiConfig extends {\n  fulfilledMeta: infer FulfilledMeta;\n} ? FulfilledMeta : unknown;\ntype GetRejectedMeta<ThunkApiConfig> = ThunkApiConfig extends {\n  rejectedMeta: infer RejectedMeta;\n} ? RejectedMeta : unknown;\ntype GetSerializedErrorType<ThunkApiConfig> = ThunkApiConfig extends {\n  serializedErrorType: infer GetSerializedErrorType;\n} ? GetSerializedErrorType : SerializedError;\ntype MaybePromise<T> = T | Promise<T> | (T extends any ? Promise<T> : never);\n\n/**\n * A type describing the return value of the `payloadCreator` argument to `createAsyncThunk`.\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\n *\n * @public\n */\nexport type AsyncThunkPayloadCreatorReturnValue<Returned, ThunkApiConfig extends AsyncThunkConfig> = MaybePromise<IsUnknown<GetFulfilledMeta<ThunkApiConfig>, Returned, FulfillWithMeta<Returned, GetFulfilledMeta<ThunkApiConfig>>> | RejectWithValue<GetRejectValue<ThunkApiConfig>, GetRejectedMeta<ThunkApiConfig>>>;\n/**\n * A type describing the `payloadCreator` argument to `createAsyncThunk`.\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\n *\n * @public\n */\nexport type AsyncThunkPayloadCreator<Returned, ThunkArg = void, ThunkApiConfig extends AsyncThunkConfig = {}> = (arg: ThunkArg, thunkAPI: GetThunkAPI<ThunkApiConfig>) => AsyncThunkPayloadCreatorReturnValue<Returned, ThunkApiConfig>;\n\n/**\n * A ThunkAction created by `createAsyncThunk`.\n * Dispatching it returns a Promise for either a\n * fulfilled or rejected action.\n * Also, the returned value contains an `abort()` method\n * that allows the asyncAction to be cancelled from the outside.\n *\n * @public\n */\nexport type AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig> = (dispatch: NonNullable<GetDispatch<ThunkApiConfig>>, getState: () => GetState<ThunkApiConfig>, extra: GetExtra<ThunkApiConfig>) => SafePromise<ReturnType<AsyncThunkFulfilledActionCreator<Returned, ThunkArg>> | ReturnType<AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig>>> & {\n  abort: (reason?: string) => void;\n  requestId: string;\n  arg: ThunkArg;\n  unwrap: () => Promise<Returned>;\n};\ntype AsyncThunkActionCreator<Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig> = IsAny<ThunkArg,\n// any handling\n(arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>,\n// unknown handling\nunknown extends ThunkArg ? (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> /* argument not specified or specified as void or undefined*/ : [ThunkArg] extends [void] | [undefined] ? () => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> /* argument contains void*/ : [void] extends [ThunkArg] // make optional\n? (arg?: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> /* argument contains undefined*/ : [undefined] extends [ThunkArg] ? WithStrictNullChecks<\n// with strict nullChecks: make optional\n(arg?: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>,\n// without strict null checks this will match everything, so don't make it optional\n(arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>> /* default case: normal argument*/ : (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>>;\n\n/**\n * Options object for `createAsyncThunk`.\n *\n * @public\n */\nexport type AsyncThunkOptions<ThunkArg = void, ThunkApiConfig extends AsyncThunkConfig = {}> = {\n  /**\n   * A method to control whether the asyncThunk should be executed. Has access to the\n   * `arg`, `api.getState()` and `api.extra` arguments.\n   *\n   * @returns `false` if it should be skipped\n   */\n  condition?(arg: ThunkArg, api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>): MaybePromise<boolean | undefined>;\n  /**\n   * If `condition` returns `false`, the asyncThunk will be skipped.\n   * This option allows you to control whether a `rejected` action with `meta.condition == false`\n   * will be dispatched or not.\n   *\n   * @default `false`\n   */\n  dispatchConditionRejection?: boolean;\n  serializeError?: (x: unknown) => GetSerializedErrorType<ThunkApiConfig>;\n\n  /**\n   * A function to use when generating the `requestId` for the request sequence.\n   *\n   * @default `nanoid`\n   */\n  idGenerator?: (arg: ThunkArg) => string;\n} & IsUnknown<GetPendingMeta<ThunkApiConfig>, {\n  /**\n   * A method to generate additional properties to be added to `meta` of the pending action.\n   *\n   * Using this optional overload will not modify the types correctly, this overload is only in place to support JavaScript users.\n   * Please use the `ThunkApiConfig` parameter `pendingMeta` to get access to a correctly typed overload\n   */\n  getPendingMeta?(base: {\n    arg: ThunkArg;\n    requestId: string;\n  }, api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>): GetPendingMeta<ThunkApiConfig>;\n}, {\n  /**\n   * A method to generate additional properties to be added to `meta` of the pending action.\n   */\n  getPendingMeta(base: {\n    arg: ThunkArg;\n    requestId: string;\n  }, api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>): GetPendingMeta<ThunkApiConfig>;\n}>;\nexport type AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig = {}> = ActionCreatorWithPreparedPayload<[string, ThunkArg, GetPendingMeta<ThunkApiConfig>?], undefined, string, never, {\n  arg: ThunkArg;\n  requestId: string;\n  requestStatus: 'pending';\n} & GetPendingMeta<ThunkApiConfig>>;\nexport type AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig = {}> = ActionCreatorWithPreparedPayload<[Error | null, string, ThunkArg, GetRejectValue<ThunkApiConfig>?, GetRejectedMeta<ThunkApiConfig>?], GetRejectValue<ThunkApiConfig> | undefined, string, GetSerializedErrorType<ThunkApiConfig>, {\n  arg: ThunkArg;\n  requestId: string;\n  requestStatus: 'rejected';\n  aborted: boolean;\n  condition: boolean;\n} & (({\n  rejectedWithValue: false;\n} & { [K in keyof GetRejectedMeta<ThunkApiConfig>]?: undefined }) | ({\n  rejectedWithValue: true;\n} & GetRejectedMeta<ThunkApiConfig>))>;\nexport type AsyncThunkFulfilledActionCreator<Returned, ThunkArg, ThunkApiConfig = {}> = ActionCreatorWithPreparedPayload<[Returned, string, ThunkArg, GetFulfilledMeta<ThunkApiConfig>?], Returned, string, never, {\n  arg: ThunkArg;\n  requestId: string;\n  requestStatus: 'fulfilled';\n} & GetFulfilledMeta<ThunkApiConfig>>;\n\n/**\n * A type describing the return value of `createAsyncThunk`.\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\n *\n * @public\n */\nexport type AsyncThunk<Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig> = AsyncThunkActionCreator<Returned, ThunkArg, ThunkApiConfig> & {\n  pending: AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig>;\n  rejected: AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig>;\n  fulfilled: AsyncThunkFulfilledActionCreator<Returned, ThunkArg, ThunkApiConfig>;\n  // matchSettled?\n  settled: (action: any) => action is ReturnType<AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig> | AsyncThunkFulfilledActionCreator<Returned, ThunkArg, ThunkApiConfig>>;\n  typePrefix: string;\n};\nexport type OverrideThunkApiConfigs<OldConfig, NewConfig> = Id<NewConfig & Omit<OldConfig, keyof NewConfig>>;\ntype CreateAsyncThunk<CurriedThunkApiConfig extends AsyncThunkConfig> = {\n  /**\n   *\n   * @param typePrefix\n   * @param payloadCreator\n   * @param options\n   *\n   * @public\n   */\n  // separate signature without `AsyncThunkConfig` for better inference\n  <Returned, ThunkArg = void>(typePrefix: string, payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, CurriedThunkApiConfig>, options?: AsyncThunkOptions<ThunkArg, CurriedThunkApiConfig>): AsyncThunk<Returned, ThunkArg, CurriedThunkApiConfig>;\n\n  /**\n   *\n   * @param typePrefix\n   * @param payloadCreator\n   * @param options\n   *\n   * @public\n   */\n  <Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig>(typePrefix: string, payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>, options?: AsyncThunkOptions<ThunkArg, OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>): AsyncThunk<Returned, ThunkArg, OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>;\n  withTypes<ThunkApiConfig extends AsyncThunkConfig>(): CreateAsyncThunk<OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>;\n};\nexport const createAsyncThunk = /* @__PURE__ */(() => {\n  function createAsyncThunk<Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig>(typePrefix: string, payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, ThunkApiConfig>, options?: AsyncThunkOptions<ThunkArg, ThunkApiConfig>): AsyncThunk<Returned, ThunkArg, ThunkApiConfig> {\n    type RejectedValue = GetRejectValue<ThunkApiConfig>;\n    type PendingMeta = GetPendingMeta<ThunkApiConfig>;\n    type FulfilledMeta = GetFulfilledMeta<ThunkApiConfig>;\n    type RejectedMeta = GetRejectedMeta<ThunkApiConfig>;\n    const fulfilled: AsyncThunkFulfilledActionCreator<Returned, ThunkArg, ThunkApiConfig> = createAction(typePrefix + '/fulfilled', (payload: Returned, requestId: string, arg: ThunkArg, meta?: FulfilledMeta) => ({\n      payload,\n      meta: {\n        ...((meta as any) || {}),\n        arg,\n        requestId,\n        requestStatus: ('fulfilled' as const)\n      }\n    }));\n    const pending: AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig> = createAction(typePrefix + '/pending', (requestId: string, arg: ThunkArg, meta?: PendingMeta) => ({\n      payload: undefined,\n      meta: {\n        ...((meta as any) || {}),\n        arg,\n        requestId,\n        requestStatus: ('pending' as const)\n      }\n    }));\n    const rejected: AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig> = createAction(typePrefix + '/rejected', (error: Error | null, requestId: string, arg: ThunkArg, payload?: RejectedValue, meta?: RejectedMeta) => ({\n      payload,\n      error: ((options && options.serializeError || miniSerializeError)(error || 'Rejected') as GetSerializedErrorType<ThunkApiConfig>),\n      meta: {\n        ...((meta as any) || {}),\n        arg,\n        requestId,\n        rejectedWithValue: !!payload,\n        requestStatus: ('rejected' as const),\n        aborted: error?.name === 'AbortError',\n        condition: error?.name === 'ConditionError'\n      }\n    }));\n    function actionCreator(arg: ThunkArg): AsyncThunkAction<Returned, ThunkArg, Required<ThunkApiConfig>> {\n      return (dispatch, getState, extra) => {\n        const requestId = options?.idGenerator ? options.idGenerator(arg) : nanoid();\n        const abortController = new AbortController();\n        let abortHandler: (() => void) | undefined;\n        let abortReason: string | undefined;\n        function abort(reason?: string) {\n          abortReason = reason;\n          abortController.abort();\n        }\n        const promise = async function () {\n          let finalAction: ReturnType<typeof fulfilled | typeof rejected>;\n          try {\n            let conditionResult = options?.condition?.(arg, {\n              getState,\n              extra\n            });\n            if (isThenable(conditionResult)) {\n              conditionResult = await conditionResult;\n            }\n            if (conditionResult === false || abortController.signal.aborted) {\n              // eslint-disable-next-line no-throw-literal\n              throw {\n                name: 'ConditionError',\n                message: 'Aborted due to condition callback returning false.'\n              };\n            }\n            const abortedPromise = new Promise<never>((_, reject) => {\n              abortHandler = () => {\n                reject({\n                  name: 'AbortError',\n                  message: abortReason || 'Aborted'\n                });\n              };\n              abortController.signal.addEventListener('abort', abortHandler);\n            });\n            dispatch((pending(requestId, arg, options?.getPendingMeta?.({\n              requestId,\n              arg\n            }, {\n              getState,\n              extra\n            })) as any));\n            finalAction = await Promise.race([abortedPromise, Promise.resolve(payloadCreator(arg, {\n              dispatch,\n              getState,\n              extra,\n              requestId,\n              signal: abortController.signal,\n              abort,\n              rejectWithValue: (((value: RejectedValue, meta?: RejectedMeta) => {\n                return new RejectWithValue(value, meta);\n              }) as any),\n              fulfillWithValue: (((value: unknown, meta?: FulfilledMeta) => {\n                return new FulfillWithMeta(value, meta);\n              }) as any)\n            })).then(result => {\n              if (result instanceof RejectWithValue) {\n                throw result;\n              }\n              if (result instanceof FulfillWithMeta) {\n                return fulfilled(result.payload, requestId, arg, result.meta);\n              }\n              return fulfilled((result as any), requestId, arg);\n            })]);\n          } catch (err) {\n            finalAction = err instanceof RejectWithValue ? rejected(null, requestId, arg, err.payload, err.meta) : rejected((err as any), requestId, arg);\n          } finally {\n            if (abortHandler) {\n              abortController.signal.removeEventListener('abort', abortHandler);\n            }\n          }\n          // We dispatch the result action _after_ the catch, to avoid having any errors\n          // here get swallowed by the try/catch block,\n          // per https://twitter.com/dan_abramov/status/770914221638942720\n          // and https://github.com/reduxjs/redux-toolkit/blob/e85eb17b39a2118d859f7b7746e0f3fee523e089/docs/tutorials/advanced-tutorial.md#async-error-handling-logic-in-thunks\n\n          const skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && (finalAction as any).meta.condition;\n          if (!skipDispatch) {\n            dispatch((finalAction as any));\n          }\n          return finalAction;\n        }();\n        return Object.assign((promise as SafePromise<any>), {\n          abort,\n          requestId,\n          arg,\n          unwrap() {\n            return promise.then<any>(unwrapResult);\n          }\n        });\n      };\n    }\n    return Object.assign((actionCreator as AsyncThunkActionCreator<Returned, ThunkArg, ThunkApiConfig>), {\n      pending,\n      rejected,\n      fulfilled,\n      settled: isAnyOf(rejected, fulfilled),\n      typePrefix\n    });\n  }\n  createAsyncThunk.withTypes = () => createAsyncThunk;\n  return (createAsyncThunk as CreateAsyncThunk<AsyncThunkConfig>);\n})();\ninterface UnwrappableAction {\n  payload: any;\n  meta?: any;\n  error?: any;\n}\ntype UnwrappedActionPayload<T extends UnwrappableAction> = Exclude<T, {\n  error: any;\n}>['payload'];\n\n/**\n * @public\n */\nexport function unwrapResult<R extends UnwrappableAction>(action: R): UnwrappedActionPayload<R> {\n  if (action.meta && action.meta.rejectedWithValue) {\n    throw action.payload;\n  }\n  if (action.error) {\n    throw action.error;\n  }\n  return action.payload;\n}\ntype WithStrictNullChecks<True, False> = undefined extends boolean ? False : True;\nfunction isThenable(value: any): value is PromiseLike<any> {\n  return value !== null && typeof value === 'object' && typeof value.then === 'function';\n}","import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2, formatProdErrorMessage as _formatProdErrorMessage3, formatProdErrorMessage as _formatProdErrorMessage4, formatProdErrorMessage as _formatProdErrorMessage5, formatProdErrorMessage as _formatProdErrorMessage6, formatProdErrorMessage as _formatProdErrorMessage7, formatProdErrorMessage as _formatProdErrorMessage8 } from \"@reduxjs/toolkit\";\nimport type { Action, Reducer, UnknownAction } from 'redux';\nimport type { Selector } from 'reselect';\nimport type { InjectConfig } from './combineSlices';\nimport type { ActionCreatorWithoutPayload, PayloadAction, PayloadActionCreator, PrepareAction, _ActionCreatorWithPreparedPayload } from './createAction';\nimport { createAction } from './createAction';\nimport type { AsyncThunk, AsyncThunkConfig, AsyncThunkOptions, AsyncThunkPayloadCreator, OverrideThunkApiConfigs } from './createAsyncThunk';\nimport { createAsyncThunk as _createAsyncThunk } from './createAsyncThunk';\nimport type { ActionMatcherDescriptionCollection, CaseReducer, ReducerWithInitialState } from './createReducer';\nimport { createReducer } from './createReducer';\nimport type { ActionReducerMapBuilder, TypedActionCreator } from './mapBuilders';\nimport { executeReducerBuilderCallback } from './mapBuilders';\nimport type { Id, TypeGuard } from './tsHelpers';\nimport { emplace } from './utils';\nconst asyncThunkSymbol = /* @__PURE__ */Symbol.for('rtk-slice-createasyncthunk');\n// type is annotated because it's too long to infer\nexport const asyncThunkCreator: {\n  [asyncThunkSymbol]: typeof _createAsyncThunk;\n} = {\n  [asyncThunkSymbol]: _createAsyncThunk\n};\ntype InjectIntoConfig<NewReducerPath extends string> = InjectConfig & {\n  reducerPath?: NewReducerPath;\n};\n\n/**\n * The return value of `createSlice`\n *\n * @public\n */\nexport interface Slice<State = any, CaseReducers extends SliceCaseReducers<State> = SliceCaseReducers<State>, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors<State> = SliceSelectors<State>> {\n  /**\n   * The slice name.\n   */\n  name: Name;\n\n  /**\n   *  The slice reducer path.\n   */\n  reducerPath: ReducerPath;\n\n  /**\n   * The slice's reducer.\n   */\n  reducer: Reducer<State>;\n\n  /**\n   * Action creators for the types of actions that are handled by the slice\n   * reducer.\n   */\n  actions: CaseReducerActions<CaseReducers, Name>;\n\n  /**\n   * The individual case reducer functions that were passed in the `reducers` parameter.\n   * This enables reuse and testing if they were defined inline when calling `createSlice`.\n   */\n  caseReducers: SliceDefinedCaseReducers<CaseReducers>;\n\n  /**\n   * Provides access to the initial state value given to the slice.\n   * If a lazy state initializer was provided, it will be called and a fresh value returned.\n   */\n  getInitialState: () => State;\n\n  /**\n   * Get localised slice selectors (expects to be called with *just* the slice's state as the first parameter)\n   */\n  getSelectors(): Id<SliceDefinedSelectors<State, Selectors, State>>;\n\n  /**\n   * Get globalised slice selectors (`selectState` callback is expected to receive first parameter and return slice state)\n   */\n  getSelectors<RootState>(selectState: (rootState: RootState) => State): Id<SliceDefinedSelectors<State, Selectors, RootState>>;\n\n  /**\n   * Selectors that assume the slice's state is `rootState[slice.reducerPath]` (which is usually the case)\n   *\n   * Equivalent to `slice.getSelectors((state: RootState) => state[slice.reducerPath])`.\n   */\n  get selectors(): Id<SliceDefinedSelectors<State, Selectors, { [K in ReducerPath]: State }>>;\n\n  /**\n   * Inject slice into provided reducer (return value from `combineSlices`), and return injected slice.\n   */\n  injectInto<NewReducerPath extends string = ReducerPath>(this: this, injectable: {\n    inject: (slice: {\n      reducerPath: string;\n      reducer: Reducer;\n    }, config?: InjectConfig) => void;\n  }, config?: InjectIntoConfig<NewReducerPath>): InjectedSlice<State, CaseReducers, Name, NewReducerPath, Selectors>;\n\n  /**\n   * Select the slice state, using the slice's current reducerPath.\n   *\n   * Will throw an error if slice is not found.\n   */\n  selectSlice(state: { [K in ReducerPath]: State }): State;\n}\n\n/**\n * A slice after being called with `injectInto(reducer)`.\n *\n * Selectors can now be called with an `undefined` value, in which case they use the slice's initial state.\n */\ntype InjectedSlice<State = any, CaseReducers extends SliceCaseReducers<State> = SliceCaseReducers<State>, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors<State> = SliceSelectors<State>> = Omit<Slice<State, CaseReducers, Name, ReducerPath, Selectors>, 'getSelectors' | 'selectors'> & {\n  /**\n   * Get localised slice selectors (expects to be called with *just* the slice's state as the first parameter)\n   */\n  getSelectors(): Id<SliceDefinedSelectors<State, Selectors, State | undefined>>;\n\n  /**\n   * Get globalised slice selectors (`selectState` callback is expected to receive first parameter and return slice state)\n   */\n  getSelectors<RootState>(selectState: (rootState: RootState) => State | undefined): Id<SliceDefinedSelectors<State, Selectors, RootState>>;\n\n  /**\n   * Selectors that assume the slice's state is `rootState[slice.name]` (which is usually the case)\n   *\n   * Equivalent to `slice.getSelectors((state: RootState) => state[slice.name])`.\n   */\n  get selectors(): Id<SliceDefinedSelectors<State, Selectors, { [K in ReducerPath]?: State | undefined }>>;\n\n  /**\n   * Select the slice state, using the slice's current reducerPath.\n   *\n   * Returns initial state if slice is not found.\n   */\n  selectSlice(state: { [K in ReducerPath]?: State | undefined }): State;\n};\n\n/**\n * Options for `createSlice()`.\n *\n * @public\n */\nexport interface CreateSliceOptions<State = any, CR extends SliceCaseReducers<State> = SliceCaseReducers<State>, Name extends string = string, ReducerPath extends string = Name, Selectors extends SliceSelectors<State> = SliceSelectors<State>> {\n  /**\n   * The slice's name. Used to namespace the generated action types.\n   */\n  name: Name;\n\n  /**\n   * The slice's reducer path. Used when injecting into a combined slice reducer.\n   */\n  reducerPath?: ReducerPath;\n\n  /**\n   * The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\n   */\n  initialState: State | (() => State);\n\n  /**\n   * A mapping from action types to action-type-specific *case reducer*\n   * functions. For every action type, a matching action creator will be\n   * generated using `createAction()`.\n   */\n  reducers: ValidateSliceCaseReducers<State, CR> | ((creators: ReducerCreators<State>) => CR);\n\n  /**\n   * A callback that receives a *builder* object to define\n   * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\n   *\n   *\n   * @example\n  ```ts\n  import { createAction, createSlice, Action } from '@reduxjs/toolkit'\n  const incrementBy = createAction<number>('incrementBy')\n  const decrement = createAction('decrement')\n  interface RejectedAction extends Action {\n  error: Error\n  }\n  function isRejectedAction(action: Action): action is RejectedAction {\n  return action.type.endsWith('rejected')\n  }\n  createSlice({\n  name: 'counter',\n  initialState: 0,\n  reducers: {},\n  extraReducers: builder => {\n    builder\n      .addCase(incrementBy, (state, action) => {\n        // action is inferred correctly here if using TS\n      })\n      // You can chain calls, or have separate `builder.addCase()` lines each time\n      .addCase(decrement, (state, action) => {})\n      // You can match a range of action types\n      .addMatcher(\n        isRejectedAction,\n        // `action` will be inferred as a RejectedAction due to isRejectedAction being defined as a type guard\n        (state, action) => {}\n      )\n      // and provide a default case if no other handlers matched\n      .addDefaultCase((state, action) => {})\n    }\n  })\n  ```\n   */\n  extraReducers?: (builder: ActionReducerMapBuilder<State>) => void;\n\n  /**\n   * A map of selectors that receive the slice's state and any additional arguments, and return a result.\n   */\n  selectors?: Selectors;\n}\nexport enum ReducerType {\n  reducer = 'reducer',\n  reducerWithPrepare = 'reducerWithPrepare',\n  asyncThunk = 'asyncThunk',\n}\ntype ReducerDefinition<T extends ReducerType = ReducerType> = {\n  _reducerDefinitionType: T;\n};\nexport type CaseReducerDefinition<S = any, A extends Action = UnknownAction> = CaseReducer<S, A> & ReducerDefinition<ReducerType.reducer>;\n\n/**\n * A CaseReducer with a `prepare` method.\n *\n * @public\n */\nexport type CaseReducerWithPrepare<State, Action extends PayloadAction> = {\n  reducer: CaseReducer<State, Action>;\n  prepare: PrepareAction<Action['payload']>;\n};\nexport interface CaseReducerWithPrepareDefinition<State, Action extends PayloadAction> extends CaseReducerWithPrepare<State, Action>, ReducerDefinition<ReducerType.reducerWithPrepare> {}\ntype AsyncThunkSliceReducerConfig<State, ThunkArg extends any, Returned = unknown, ThunkApiConfig extends AsyncThunkConfig = {}> = {\n  pending?: CaseReducer<State, ReturnType<AsyncThunk<Returned, ThunkArg, ThunkApiConfig>['pending']>>;\n  rejected?: CaseReducer<State, ReturnType<AsyncThunk<Returned, ThunkArg, ThunkApiConfig>['rejected']>>;\n  fulfilled?: CaseReducer<State, ReturnType<AsyncThunk<Returned, ThunkArg, ThunkApiConfig>['fulfilled']>>;\n  settled?: CaseReducer<State, ReturnType<AsyncThunk<Returned, ThunkArg, ThunkApiConfig>['rejected' | 'fulfilled']>>;\n  options?: AsyncThunkOptions<ThunkArg, ThunkApiConfig>;\n};\ntype AsyncThunkSliceReducerDefinition<State, ThunkArg extends any, Returned = unknown, ThunkApiConfig extends AsyncThunkConfig = {}> = AsyncThunkSliceReducerConfig<State, ThunkArg, Returned, ThunkApiConfig> & ReducerDefinition<ReducerType.asyncThunk> & {\n  payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, ThunkApiConfig>;\n};\n\n/**\n * Providing these as part of the config would cause circular types, so we disallow passing them\n */\ntype PreventCircular<ThunkApiConfig> = { [K in keyof ThunkApiConfig]: K extends 'state' | 'dispatch' ? never : ThunkApiConfig[K] };\ninterface AsyncThunkCreator<State, CurriedThunkApiConfig extends PreventCircular<AsyncThunkConfig> = PreventCircular<AsyncThunkConfig>> {\n  <Returned, ThunkArg = void>(payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, CurriedThunkApiConfig>, config?: AsyncThunkSliceReducerConfig<State, ThunkArg, Returned, CurriedThunkApiConfig>): AsyncThunkSliceReducerDefinition<State, ThunkArg, Returned, CurriedThunkApiConfig>;\n  <Returned, ThunkArg, ThunkApiConfig extends PreventCircular<AsyncThunkConfig> = {}>(payloadCreator: AsyncThunkPayloadCreator<Returned, ThunkArg, ThunkApiConfig>, config?: AsyncThunkSliceReducerConfig<State, ThunkArg, Returned, ThunkApiConfig>): AsyncThunkSliceReducerDefinition<State, ThunkArg, Returned, ThunkApiConfig>;\n  withTypes<ThunkApiConfig extends PreventCircular<AsyncThunkConfig>>(): AsyncThunkCreator<State, OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>>;\n}\nexport interface ReducerCreators<State> {\n  reducer(caseReducer: CaseReducer<State, PayloadAction>): CaseReducerDefinition<State, PayloadAction>;\n  reducer<Payload>(caseReducer: CaseReducer<State, PayloadAction<Payload>>): CaseReducerDefinition<State, PayloadAction<Payload>>;\n  asyncThunk: AsyncThunkCreator<State>;\n  preparedReducer<Prepare extends PrepareAction<any>>(prepare: Prepare, reducer: CaseReducer<State, ReturnType<_ActionCreatorWithPreparedPayload<Prepare>>>): {\n    _reducerDefinitionType: ReducerType.reducerWithPrepare;\n    prepare: Prepare;\n    reducer: CaseReducer<State, ReturnType<_ActionCreatorWithPreparedPayload<Prepare>>>;\n  };\n}\n\n/**\n * The type describing a slice's `reducers` option.\n *\n * @public\n */\nexport type SliceCaseReducers<State> = Record<string, ReducerDefinition> | Record<string, CaseReducer<State, PayloadAction<any>> | CaseReducerWithPrepare<State, PayloadAction<any, string, any, any>>>;\n\n/**\n * The type describing a slice's `selectors` option.\n */\nexport type SliceSelectors<State> = {\n  [K: string]: (sliceState: State, ...args: any[]) => any;\n};\ntype SliceActionType<SliceName extends string, ActionName extends keyof any> = ActionName extends string | number ? `${SliceName}/${ActionName}` : string;\n\n/**\n * Derives the slice's `actions` property from the `reducers` options\n *\n * @public\n */\nexport type CaseReducerActions<CaseReducers extends SliceCaseReducers<any>, SliceName extends string> = { [Type in keyof CaseReducers]: CaseReducers[Type] extends infer Definition ? Definition extends {\n  prepare: any;\n} ? ActionCreatorForCaseReducerWithPrepare<Definition, SliceActionType<SliceName, Type>> : Definition extends AsyncThunkSliceReducerDefinition<any, infer ThunkArg, infer Returned, infer ThunkApiConfig> ? AsyncThunk<Returned, ThunkArg, ThunkApiConfig> : Definition extends {\n  reducer: any;\n} ? ActionCreatorForCaseReducer<Definition['reducer'], SliceActionType<SliceName, Type>> : ActionCreatorForCaseReducer<Definition, SliceActionType<SliceName, Type>> : never };\n\n/**\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\n *\n * @internal\n */\ntype ActionCreatorForCaseReducerWithPrepare<CR extends {\n  prepare: any;\n}, Type extends string> = _ActionCreatorWithPreparedPayload<CR['prepare'], Type>;\n\n/**\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\n *\n * @internal\n */\ntype ActionCreatorForCaseReducer<CR, Type extends string> = CR extends (state: any, action: infer Action) => any ? Action extends {\n  payload: infer P;\n} ? PayloadActionCreator<P, Type> : ActionCreatorWithoutPayload<Type> : ActionCreatorWithoutPayload<Type>;\n\n/**\n * Extracts the CaseReducers out of a `reducers` object, even if they are\n * tested into a `CaseReducerWithPrepare`.\n *\n * @internal\n */\ntype SliceDefinedCaseReducers<CaseReducers extends SliceCaseReducers<any>> = { [Type in keyof CaseReducers]: CaseReducers[Type] extends infer Definition ? Definition extends AsyncThunkSliceReducerDefinition<any, any, any> ? Id<Pick<Required<Definition>, 'fulfilled' | 'rejected' | 'pending' | 'settled'>> : Definition extends {\n  reducer: infer Reducer;\n} ? Reducer : Definition : never };\ntype RemappedSelector<S extends Selector, NewState> = S extends Selector<any, infer R, infer P> ? Selector<NewState, R, P> & {\n  unwrapped: S;\n} : never;\n\n/**\n * Extracts the final selector type from the `selectors` object.\n *\n * Removes the `string` index signature from the default value.\n */\ntype SliceDefinedSelectors<State, Selectors extends SliceSelectors<State>, RootState> = { [K in keyof Selectors as string extends K ? never : K]: RemappedSelector<Selectors[K], RootState> };\n\n/**\n * Used on a SliceCaseReducers object.\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\n * the `reducer` and the `prepare` function use the same type of `payload`.\n *\n * Might do additional such checks in the future.\n *\n * This type is only ever useful if you want to write your own wrapper around\n * `createSlice`. Please don't use it otherwise!\n *\n * @public\n */\nexport type ValidateSliceCaseReducers<S, ACR extends SliceCaseReducers<S>> = ACR & { [T in keyof ACR]: ACR[T] extends {\n  reducer(s: S, action?: infer A): any;\n} ? {\n  prepare(...a: never[]): Omit<A, 'type'>;\n} : {} };\nfunction getType(slice: string, actionKey: string): string {\n  return `${slice}/${actionKey}`;\n}\ninterface BuildCreateSliceConfig {\n  creators?: {\n    asyncThunk?: typeof asyncThunkCreator;\n  };\n}\nexport function buildCreateSlice({\n  creators\n}: BuildCreateSliceConfig = {}) {\n  const cAT = creators?.asyncThunk?.[asyncThunkSymbol];\n  return function createSlice<State, CaseReducers extends SliceCaseReducers<State>, Name extends string, Selectors extends SliceSelectors<State>, ReducerPath extends string = Name>(options: CreateSliceOptions<State, CaseReducers, Name, ReducerPath, Selectors>): Slice<State, CaseReducers, Name, ReducerPath, Selectors> {\n    const {\n      name,\n      reducerPath = ((name as unknown) as ReducerPath)\n    } = options;\n    if (!name) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(11) : '`name` is a required option for createSlice');\n    }\n    if (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n      if (options.initialState === undefined) {\n        console.error('You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`');\n      }\n    }\n    const reducers = (typeof options.reducers === 'function' ? options.reducers(buildReducerCreators<State>()) : options.reducers) || {};\n    const reducerNames = Object.keys(reducers);\n    const context: ReducerHandlingContext<State> = {\n      sliceCaseReducersByName: {},\n      sliceCaseReducersByType: {},\n      actionCreators: {},\n      sliceMatchers: []\n    };\n    const contextMethods: ReducerHandlingContextMethods<State> = {\n      addCase(typeOrActionCreator: string | TypedActionCreator<any>, reducer: CaseReducer<State>) {\n        const type = typeof typeOrActionCreator === 'string' ? typeOrActionCreator : typeOrActionCreator.type;\n        if (!type) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(12) : '`context.addCase` cannot be called with an empty action type');\n        }\n        if (type in context.sliceCaseReducersByType) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(13) : '`context.addCase` cannot be called with two reducers for the same action type: ' + type);\n        }\n        context.sliceCaseReducersByType[type] = reducer;\n        return contextMethods;\n      },\n      addMatcher(matcher, reducer) {\n        context.sliceMatchers.push({\n          matcher,\n          reducer\n        });\n        return contextMethods;\n      },\n      exposeAction(name, actionCreator) {\n        context.actionCreators[name] = actionCreator;\n        return contextMethods;\n      },\n      exposeCaseReducer(name, reducer) {\n        context.sliceCaseReducersByName[name] = reducer;\n        return contextMethods;\n      }\n    };\n    reducerNames.forEach(reducerName => {\n      const reducerDefinition = reducers[reducerName];\n      const reducerDetails: ReducerDetails = {\n        reducerName,\n        type: getType(name, reducerName),\n        createNotation: typeof options.reducers === 'function'\n      };\n      if (isAsyncThunkSliceReducerDefinition<State>(reducerDefinition)) {\n        handleThunkCaseReducerDefinition(reducerDetails, reducerDefinition, contextMethods, cAT);\n      } else {\n        handleNormalReducerDefinition<State>(reducerDetails, (reducerDefinition as any), contextMethods);\n      }\n    });\n    function buildReducer() {\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof options.extraReducers === 'object') {\n          throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(14) : \"The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\");\n        }\n      }\n      const [extraReducers = {}, actionMatchers = [], defaultCaseReducer = undefined] = typeof options.extraReducers === 'function' ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers];\n      const finalCaseReducers = {\n        ...extraReducers,\n        ...context.sliceCaseReducersByType\n      };\n      return createReducer(options.initialState, builder => {\n        for (let key in finalCaseReducers) {\n          builder.addCase(key, (finalCaseReducers[key] as CaseReducer<any>));\n        }\n        for (let sM of context.sliceMatchers) {\n          builder.addMatcher(sM.matcher, sM.reducer);\n        }\n        for (let m of actionMatchers) {\n          builder.addMatcher(m.matcher, m.reducer);\n        }\n        if (defaultCaseReducer) {\n          builder.addDefaultCase(defaultCaseReducer);\n        }\n      });\n    }\n    const selectSelf = (state: State) => state;\n    const injectedSelectorCache = new Map<boolean, WeakMap<(rootState: any) => State | undefined, Record<string, (rootState: any) => any>>>();\n    let _reducer: ReducerWithInitialState<State>;\n    function reducer(state: State | undefined, action: UnknownAction) {\n      if (!_reducer) _reducer = buildReducer();\n      return _reducer(state, action);\n    }\n    function getInitialState() {\n      if (!_reducer) _reducer = buildReducer();\n      return _reducer.getInitialState();\n    }\n    function makeSelectorProps<CurrentReducerPath extends string = ReducerPath>(reducerPath: CurrentReducerPath, injected = false): Pick<Slice<State, CaseReducers, Name, CurrentReducerPath, Selectors>, 'getSelectors' | 'selectors' | 'selectSlice' | 'reducerPath'> {\n      function selectSlice(state: { [K in CurrentReducerPath]: State }) {\n        let sliceState = state[reducerPath];\n        if (typeof sliceState === 'undefined') {\n          if (injected) {\n            sliceState = getInitialState();\n          } else if (process.env.NODE_ENV !== 'production') {\n            throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(15) : 'selectSlice returned undefined for an uninjected slice reducer');\n          }\n        }\n        return sliceState;\n      }\n      function getSelectors(selectState: (rootState: any) => State = selectSelf) {\n        const selectorCache = emplace(injectedSelectorCache, injected, {\n          insert: () => new WeakMap()\n        });\n        return (emplace(selectorCache, selectState, {\n          insert: () => {\n            const map: Record<string, Selector<any, any>> = {};\n            for (const [name, selector] of Object.entries(options.selectors ?? {})) {\n              map[name] = wrapSelector(selector, selectState, getInitialState, injected);\n            }\n            return map;\n          }\n        }) as any);\n      }\n      return {\n        reducerPath,\n        getSelectors,\n        get selectors() {\n          return getSelectors(selectSlice);\n        },\n        selectSlice\n      };\n    }\n    const slice: Slice<State, CaseReducers, Name, ReducerPath, Selectors> = {\n      name,\n      reducer,\n      actions: (context.actionCreators as any),\n      caseReducers: (context.sliceCaseReducersByName as any),\n      getInitialState,\n      ...makeSelectorProps(reducerPath),\n      injectInto(injectable, {\n        reducerPath: pathOpt,\n        ...config\n      } = {}) {\n        const newReducerPath = pathOpt ?? reducerPath;\n        injectable.inject({\n          reducerPath: newReducerPath,\n          reducer\n        }, config);\n        return ({\n          ...slice,\n          ...makeSelectorProps(newReducerPath, true)\n        } as any);\n      }\n    };\n    return slice;\n  };\n}\nfunction wrapSelector<State, NewState, S extends Selector<State>>(selector: S, selectState: Selector<NewState, State>, getInitialState: () => State, injected?: boolean) {\n  function wrapper(rootState: NewState, ...args: any[]) {\n    let sliceState = selectState(rootState);\n    if (typeof sliceState === 'undefined') {\n      if (injected) {\n        sliceState = getInitialState();\n      } else if (process.env.NODE_ENV !== 'production') {\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(16) : 'selectState returned undefined for an uninjected slice reducer');\n      }\n    }\n    return selector(sliceState, ...args);\n  }\n  wrapper.unwrapped = selector;\n  return (wrapper as RemappedSelector<S, NewState>);\n}\n\n/**\n * A function that accepts an initial state, an object full of reducer\n * functions, and a \"slice name\", and automatically generates\n * action creators and action types that correspond to the\n * reducers and state.\n *\n * @public\n */\nexport const createSlice = /* @__PURE__ */buildCreateSlice();\ninterface ReducerHandlingContext<State> {\n  sliceCaseReducersByName: Record<string, CaseReducer<State, any> | Pick<AsyncThunkSliceReducerDefinition<State, any, any, any>, 'fulfilled' | 'rejected' | 'pending' | 'settled'>>;\n  sliceCaseReducersByType: Record<string, CaseReducer<State, any>>;\n  sliceMatchers: ActionMatcherDescriptionCollection<State>;\n  actionCreators: Record<string, Function>;\n}\ninterface ReducerHandlingContextMethods<State> {\n  /**\n   * Adds a case reducer to handle a single action type.\n   * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\n   * @param reducer - The actual case reducer function.\n   */\n  addCase<ActionCreator extends TypedActionCreator<string>>(actionCreator: ActionCreator, reducer: CaseReducer<State, ReturnType<ActionCreator>>): ReducerHandlingContextMethods<State>;\n  /**\n   * Adds a case reducer to handle a single action type.\n   * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\n   * @param reducer - The actual case reducer function.\n   */\n  addCase<Type extends string, A extends Action<Type>>(type: Type, reducer: CaseReducer<State, A>): ReducerHandlingContextMethods<State>;\n\n  /**\n   * Allows you to match incoming actions against your own filter function instead of only the `action.type` property.\n   * @remarks\n   * If multiple matcher reducers match, all of them will be executed in the order\n   * they were defined in - even if a case reducer already matched.\n   * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\n   * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates)\n   *   function\n   * @param reducer - The actual case reducer function.\n   *\n   */\n  addMatcher<A>(matcher: TypeGuard<A>, reducer: CaseReducer<State, A extends Action ? A : A & Action>): ReducerHandlingContextMethods<State>;\n  /**\n   * Add an action to be exposed under the final `slice.actions` key.\n   * @param name The key to be exposed as.\n   * @param actionCreator The action to expose.\n   * @example\n   * context.exposeAction(\"addPost\", createAction<Post>(\"addPost\"));\n   *\n   * export const { addPost } = slice.actions\n   *\n   * dispatch(addPost(post))\n   */\n  exposeAction(name: string, actionCreator: Function): ReducerHandlingContextMethods<State>;\n  /**\n   * Add a case reducer to be exposed under the final `slice.caseReducers` key.\n   * @param name The key to be exposed as.\n   * @param reducer The reducer to expose.\n   * @example\n   * context.exposeCaseReducer(\"addPost\", (state, action: PayloadAction<Post>) => {\n   *   state.push(action.payload)\n   * })\n   *\n   * slice.caseReducers.addPost([], addPost(post))\n   */\n  exposeCaseReducer(name: string, reducer: CaseReducer<State, any> | Pick<AsyncThunkSliceReducerDefinition<State, any, any, any>, 'fulfilled' | 'rejected' | 'pending' | 'settled'>): ReducerHandlingContextMethods<State>;\n}\ninterface ReducerDetails {\n  /** The key the reducer was defined under */\n  reducerName: string;\n  /** The predefined action type, i.e. `${slice.name}/${reducerName}` */\n  type: string;\n  /** Whether create. notation was used when defining reducers */\n  createNotation: boolean;\n}\nfunction buildReducerCreators<State>(): ReducerCreators<State> {\n  function asyncThunk(payloadCreator: AsyncThunkPayloadCreator<any, any>, config: AsyncThunkSliceReducerConfig<State, any>): AsyncThunkSliceReducerDefinition<State, any> {\n    return {\n      _reducerDefinitionType: ReducerType.asyncThunk,\n      payloadCreator,\n      ...config\n    };\n  }\n  asyncThunk.withTypes = () => asyncThunk;\n  return {\n    reducer(caseReducer: CaseReducer<State, any>) {\n      return Object.assign({\n        // hack so the wrapping function has the same name as the original\n        // we need to create a wrapper so the `reducerDefinitionType` is not assigned to the original\n        [caseReducer.name](...args: Parameters<typeof caseReducer>) {\n          return caseReducer(...args);\n        }\n      }[caseReducer.name], ({\n        _reducerDefinitionType: ReducerType.reducer\n      } as const));\n    },\n    preparedReducer(prepare, reducer) {\n      return {\n        _reducerDefinitionType: ReducerType.reducerWithPrepare,\n        prepare,\n        reducer\n      };\n    },\n    asyncThunk: (asyncThunk as any)\n  };\n}\nfunction handleNormalReducerDefinition<State>({\n  type,\n  reducerName,\n  createNotation\n}: ReducerDetails, maybeReducerWithPrepare: CaseReducer<State, {\n  payload: any;\n  type: string;\n}> | CaseReducerWithPrepare<State, PayloadAction<any, string, any, any>>, context: ReducerHandlingContextMethods<State>) {\n  let caseReducer: CaseReducer<State, any>;\n  let prepareCallback: PrepareAction<any> | undefined;\n  if ('reducer' in maybeReducerWithPrepare) {\n    if (createNotation && !isCaseReducerWithPrepareDefinition(maybeReducerWithPrepare)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(17) : 'Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.');\n    }\n    caseReducer = maybeReducerWithPrepare.reducer;\n    prepareCallback = maybeReducerWithPrepare.prepare;\n  } else {\n    caseReducer = maybeReducerWithPrepare;\n  }\n  context.addCase(type, caseReducer).exposeCaseReducer(reducerName, caseReducer).exposeAction(reducerName, prepareCallback ? createAction(type, prepareCallback) : createAction(type));\n}\nfunction isAsyncThunkSliceReducerDefinition<State>(reducerDefinition: any): reducerDefinition is AsyncThunkSliceReducerDefinition<State, any, any, any> {\n  return reducerDefinition._reducerDefinitionType === ReducerType.asyncThunk;\n}\nfunction isCaseReducerWithPrepareDefinition<State>(reducerDefinition: any): reducerDefinition is CaseReducerWithPrepareDefinition<State, any> {\n  return reducerDefinition._reducerDefinitionType === ReducerType.reducerWithPrepare;\n}\nfunction handleThunkCaseReducerDefinition<State>({\n  type,\n  reducerName\n}: ReducerDetails, reducerDefinition: AsyncThunkSliceReducerDefinition<State, any, any, any>, context: ReducerHandlingContextMethods<State>, cAT: typeof _createAsyncThunk | undefined) {\n  if (!cAT) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage8(18) : 'Cannot use `create.asyncThunk` in the built-in `createSlice`. ' + 'Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.');\n  }\n  const {\n    payloadCreator,\n    fulfilled,\n    pending,\n    rejected,\n    settled,\n    options\n  } = reducerDefinition;\n  const thunk = cAT(type, payloadCreator, (options as any));\n  context.exposeAction(reducerName, thunk);\n  if (fulfilled) {\n    context.addCase(thunk.fulfilled, fulfilled);\n  }\n  if (pending) {\n    context.addCase(thunk.pending, pending);\n  }\n  if (rejected) {\n    context.addCase(thunk.rejected, rejected);\n  }\n  if (settled) {\n    context.addMatcher(thunk.settled, settled);\n  }\n  context.exposeCaseReducer(reducerName, {\n    fulfilled: fulfilled || noop,\n    pending: pending || noop,\n    rejected: rejected || noop,\n    settled: settled || noop\n  });\n}\nfunction noop() {}","import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport type { Draft } from 'immer';\nimport { produce as createNextState, isDraft, isDraftable } from 'immer';\nimport type { Action, Reducer, UnknownAction } from 'redux';\nimport type { ActionReducerMapBuilder } from './mapBuilders';\nimport { executeReducerBuilderCallback } from './mapBuilders';\nimport type { NoInfer, TypeGuard } from './tsHelpers';\nimport { freezeDraftable } from './utils';\n\n/**\r\n * Defines a mapping from action types to corresponding action object shapes.\r\n *\r\n * @deprecated This should not be used manually - it is only used for internal\r\n *             inference purposes and should not have any further value.\r\n *             It might be removed in the future.\r\n * @public\r\n */\nexport type Actions<T extends keyof any = string> = Record<T, Action>;\nexport type ActionMatcherDescription<S, A extends Action> = {\n  matcher: TypeGuard<A>;\n  reducer: CaseReducer<S, NoInfer<A>>;\n};\nexport type ReadonlyActionMatcherDescriptionCollection<S> = ReadonlyArray<ActionMatcherDescription<S, any>>;\nexport type ActionMatcherDescriptionCollection<S> = Array<ActionMatcherDescription<S, any>>;\n\n/**\r\n * A *case reducer* is a reducer function for a specific action type. Case\r\n * reducers can be composed to full reducers using `createReducer()`.\r\n *\r\n * Unlike a normal Redux reducer, a case reducer is never called with an\r\n * `undefined` state to determine the initial state. Instead, the initial\r\n * state is explicitly specified as an argument to `createReducer()`.\r\n *\r\n * In addition, a case reducer can choose to mutate the passed-in `state`\r\n * value directly instead of returning a new state. This does not actually\r\n * cause the store state to be mutated directly; instead, thanks to\r\n * [immer](https://github.com/mweststrate/immer), the mutations are\r\n * translated to copy operations that result in a new state.\r\n *\r\n * @public\r\n */\nexport type CaseReducer<S = any, A extends Action = UnknownAction> = (state: Draft<S>, action: A) => NoInfer<S> | void | Draft<NoInfer<S>>;\n\n/**\r\n * A mapping from action types to case reducers for `createReducer()`.\r\n *\r\n * @deprecated This should not be used manually - it is only used\r\n *             for internal inference purposes and using it manually\r\n *             would lead to type erasure.\r\n *             It might be removed in the future.\r\n * @public\r\n */\nexport type CaseReducers<S, AS extends Actions> = { [T in keyof AS]: AS[T] extends Action ? CaseReducer<S, AS[T]> : void };\nexport type NotFunction<T> = T extends Function ? never : T;\nfunction isStateFunction<S>(x: unknown): x is () => S {\n  return typeof x === 'function';\n}\nexport type ReducerWithInitialState<S extends NotFunction<any>> = Reducer<S> & {\n  getInitialState: () => S;\n};\n\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * @remarks\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n *\r\n * @overloadSummary\r\n * This function accepts a callback that receives a `builder` object as its argument.\r\n * That builder provides `addCase`, `addMatcher` and `addDefaultCase` functions that may be\r\n * called to define what actions this reducer will handle.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param builderCallback - `(builder: Builder) => void` A callback that receives a *builder* object to define\r\n *   case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * @example\r\n```ts\r\nimport {\r\n  createAction,\r\n  createReducer,\r\n  UnknownAction,\r\n  PayloadAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\nconst increment = createAction<number>(\"increment\");\r\nconst decrement = createAction<number>(\"decrement\");\r\n\r\nfunction isActionWithNumberPayload(\r\n  action: UnknownAction\r\n): action is PayloadAction<number> {\r\n  return typeof action.payload === \"number\";\r\n}\r\n\r\nconst reducer = createReducer(\r\n  {\r\n    counter: 0,\r\n    sumOfNumberPayloads: 0,\r\n    unhandledActions: 0,\r\n  },\r\n  (builder) => {\r\n    builder\r\n      .addCase(increment, (state, action) => {\r\n        // action is inferred correctly here\r\n        state.counter += action.payload;\r\n      })\r\n      // You can chain calls, or have separate `builder.addCase()` lines each time\r\n      .addCase(decrement, (state, action) => {\r\n        state.counter -= action.payload;\r\n      })\r\n      // You can apply a \"matcher function\" to incoming actions\r\n      .addMatcher(isActionWithNumberPayload, (state, action) => {})\r\n      // and provide a default case if no other handlers matched\r\n      .addDefaultCase((state, action) => {});\r\n  }\r\n);\r\n```\r\n * @public\r\n */\nexport function createReducer<S extends NotFunction<any>>(initialState: S | (() => S), mapOrBuilderCallback: (builder: ActionReducerMapBuilder<S>) => void): ReducerWithInitialState<S> {\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof mapOrBuilderCallback === 'object') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(8) : \"The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\");\n    }\n  }\n  let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] = executeReducerBuilderCallback(mapOrBuilderCallback);\n\n  // Ensure the initial state gets frozen either way (if draftable)\n  let getInitialState: () => S;\n  if (isStateFunction(initialState)) {\n    getInitialState = () => freezeDraftable(initialState());\n  } else {\n    const frozenInitialState = freezeDraftable(initialState);\n    getInitialState = () => frozenInitialState;\n  }\n  function reducer(state = getInitialState(), action: any): S {\n    let caseReducers = [actionsMap[action.type], ...finalActionMatchers.filter(({\n      matcher\n    }) => matcher(action)).map(({\n      reducer\n    }) => reducer)];\n    if (caseReducers.filter(cr => !!cr).length === 0) {\n      caseReducers = [finalDefaultCaseReducer];\n    }\n    return caseReducers.reduce((previousState, caseReducer): S => {\n      if (caseReducer) {\n        if (isDraft(previousState)) {\n          // If it's already a draft, we must already be inside a `createNextState` call,\n          // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\n          // inside an existing draft. It's safe to just pass the draft to the mutator.\n          const draft = (previousState as Draft<S>); // We can assume this is already a draft\n          const result = caseReducer(draft, action);\n          if (result === undefined) {\n            return previousState;\n          }\n          return (result as S);\n        } else if (!isDraftable(previousState)) {\n          // If state is not draftable (ex: a primitive, such as 0), we want to directly\n          // return the caseReducer func and not wrap it with produce.\n          const result = caseReducer((previousState as any), action);\n          if (result === undefined) {\n            if (previousState === null) {\n              return previousState;\n            }\n            throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(9) : 'A case reducer on a non-draftable value must not return undefined');\n          }\n          return (result as S);\n        } else {\n          // @ts-ignore createNextState() produces an Immutable<Draft<S>> rather\n          // than an Immutable<S>, and TypeScript cannot find out how to reconcile\n          // these two types.\n          return createNextState(previousState, (draft: Draft<S>) => {\n            return caseReducer(draft, action);\n          });\n        }\n      }\n      return previousState;\n    }, state);\n  }\n  reducer.getInitialState = getInitialState;\n  return (reducer as ReducerWithInitialState<S>);\n}","import { TaskAbortError } from './exceptions';\nimport type { AbortSignalWithReason, TaskResult } from './types';\nimport { addAbortSignalListener, catchRejection, noop } from './utils';\n\n/**\r\n * Synchronously raises {@link TaskAbortError} if the task tied to the input `signal` has been cancelled.\r\n * @param signal\r\n * @param reason\r\n * @see {TaskAbortError}\r\n */\nexport const validateActive = (signal: AbortSignal): void => {\n  if (signal.aborted) {\n    const {\n      reason\n    } = (signal as AbortSignalWithReason<string>);\n    throw new TaskAbortError(reason);\n  }\n};\n\n/**\r\n * Generates a race between the promise(s) and the AbortSignal\r\n * This avoids `Promise.race()`-related memory leaks:\r\n * https://github.com/nodejs/node/issues/17469#issuecomment-349794909\r\n */\nexport function raceWithSignal<T>(signal: AbortSignalWithReason<string>, promise: Promise<T>): Promise<T> {\n  let cleanup = noop;\n  return new Promise<T>((resolve, reject) => {\n    const notifyRejection = () => reject(new TaskAbortError(signal.reason));\n    if (signal.aborted) {\n      notifyRejection();\n      return;\n    }\n    cleanup = addAbortSignalListener(signal, notifyRejection);\n    promise.finally(() => cleanup()).then(resolve, reject);\n  }).finally(() => {\n    // after this point, replace `cleanup` with a noop, so there is no reference to `signal` any more\n    cleanup = noop;\n  });\n}\n\n/**\r\n * Runs a task and returns promise that resolves to {@link TaskResult}.\r\n * Second argument is an optional `cleanUp` function that always runs after task.\r\n *\r\n * **Note:** `runTask` runs the executor in the next microtask.\r\n * @returns\r\n */\nexport const runTask = async <T,>(task: () => Promise<T>, cleanUp?: () => void): Promise<TaskResult<T>> => {\n  try {\n    await Promise.resolve();\n    const value = await task();\n    return {\n      status: 'ok',\n      value\n    };\n  } catch (error: any) {\n    return {\n      status: error instanceof TaskAbortError ? 'cancelled' : 'rejected',\n      error\n    };\n  } finally {\n    cleanUp?.();\n  }\n};\n\n/**\r\n * Given an input `AbortSignal` and a promise returns another promise that resolves\r\n * as soon the input promise is provided or rejects as soon as\r\n * `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\nexport const createPause = <T,>(signal: AbortSignal) => {\n  return (promise: Promise<T>): Promise<T> => {\n    return catchRejection(raceWithSignal(signal, promise).then(output => {\n      validateActive(signal);\n      return output;\n    }));\n  };\n};\n\n/**\r\n * Given an input `AbortSignal` and `timeoutMs` returns a promise that resolves\r\n * after `timeoutMs` or rejects as soon as `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\nexport const createDelay = (signal: AbortSignal) => {\n  const pause = createPause<void>(signal);\n  return (timeoutMs: number): Promise<void> => {\n    return pause(new Promise<void>(resolve => setTimeout(resolve, timeoutMs)));\n  };\n};","import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2, formatProdErrorMessage as _formatProdErrorMessage3 } from \"@reduxjs/toolkit\";\nimport type { Action, Dispatch, MiddlewareAPI, UnknownAction } from 'redux';\nimport { isAction } from 'redux';\nimport type { ThunkDispatch } from 'redux-thunk';\nimport { createAction } from '../createAction';\nimport { nanoid } from '../nanoid';\nimport { find } from '../utils';\nimport { TaskAbortError, listenerCancelled, listenerCompleted, taskCancelled, taskCompleted } from './exceptions';\nimport { createDelay, createPause, raceWithSignal, runTask, validateActive } from './task';\nimport type { AbortSignalWithReason, AddListenerOverloads, AnyListenerPredicate, CreateListenerMiddlewareOptions, FallbackAddListenerOptions, ForkOptions, ForkedTask, ForkedTaskExecutor, ListenerEntry, ListenerErrorHandler, ListenerErrorInfo, ListenerMiddleware, ListenerMiddlewareInstance, TakePattern, TaskResult, TypedAddListener, TypedCreateListenerEntry, TypedRemoveListener, UnsubscribeListener, UnsubscribeListenerOptions } from './types';\nimport { abortControllerWithReason, addAbortSignalListener, assertFunction, catchRejection, noop } from './utils';\nexport { TaskAbortError } from './exceptions';\nexport type { AsyncTaskExecutor, CreateListenerMiddlewareOptions, ForkedTask, ForkedTaskAPI, ForkedTaskExecutor, ListenerEffect, ListenerEffectAPI, ListenerErrorHandler, ListenerMiddleware, ListenerMiddlewareInstance, SyncTaskExecutor, TaskCancelled, TaskRejected, TaskResolved, TaskResult, TypedAddListener, TypedRemoveListener, TypedStartListening, TypedStopListening, UnsubscribeListener, UnsubscribeListenerOptions } from './types';\n\n//Overly-aggressive byte-shaving\nconst {\n  assign\n} = Object;\n/**\n * @internal\n */\nconst INTERNAL_NIL_TOKEN = ({} as const);\nconst alm = ('listenerMiddleware' as const);\nconst createFork = (parentAbortSignal: AbortSignalWithReason<unknown>, parentBlockingPromises: Promise<any>[]) => {\n  const linkControllers = (controller: AbortController) => addAbortSignalListener(parentAbortSignal, () => abortControllerWithReason(controller, parentAbortSignal.reason));\n  return <T,>(taskExecutor: ForkedTaskExecutor<T>, opts?: ForkOptions): ForkedTask<T> => {\n    assertFunction(taskExecutor, 'taskExecutor');\n    const childAbortController = new AbortController();\n    linkControllers(childAbortController);\n    const result = runTask<T>(async (): Promise<T> => {\n      validateActive(parentAbortSignal);\n      validateActive(childAbortController.signal);\n      const result = ((await taskExecutor({\n        pause: createPause(childAbortController.signal),\n        delay: createDelay(childAbortController.signal),\n        signal: childAbortController.signal\n      })) as T);\n      validateActive(childAbortController.signal);\n      return result;\n    }, () => abortControllerWithReason(childAbortController, taskCompleted));\n    if (opts?.autoJoin) {\n      parentBlockingPromises.push(result.catch(noop));\n    }\n    return {\n      result: createPause<TaskResult<T>>(parentAbortSignal)(result),\n      cancel() {\n        abortControllerWithReason(childAbortController, taskCancelled);\n      }\n    };\n  };\n};\nconst createTakePattern = <S,>(startListening: AddListenerOverloads<UnsubscribeListener, S, Dispatch>, signal: AbortSignal): TakePattern<S> => {\n  /**\n   * A function that takes a ListenerPredicate and an optional timeout,\n   * and resolves when either the predicate returns `true` based on an action\n   * state combination or when the timeout expires.\n   * If the parent listener is canceled while waiting, this will throw a\n   * TaskAbortError.\n   */\n  const take = async <P extends AnyListenerPredicate<S>,>(predicate: P, timeout: number | undefined) => {\n    validateActive(signal);\n\n    // Placeholder unsubscribe function until the listener is added\n    let unsubscribe: UnsubscribeListener = () => {};\n    const tuplePromise = new Promise<[Action, S, S]>((resolve, reject) => {\n      // Inside the Promise, we synchronously add the listener.\n      let stopListening = startListening({\n        predicate: (predicate as any),\n        effect: (action, listenerApi): void => {\n          // One-shot listener that cleans up as soon as the predicate passes\n          listenerApi.unsubscribe();\n          // Resolve the promise with the same arguments the predicate saw\n          resolve([action, listenerApi.getState(), listenerApi.getOriginalState()]);\n        }\n      });\n      unsubscribe = () => {\n        stopListening();\n        reject();\n      };\n    });\n    const promises: (Promise<null> | Promise<[Action, S, S]>)[] = [tuplePromise];\n    if (timeout != null) {\n      promises.push(new Promise<null>(resolve => setTimeout(resolve, timeout, null)));\n    }\n    try {\n      const output = await raceWithSignal(signal, Promise.race(promises));\n      validateActive(signal);\n      return output;\n    } finally {\n      // Always clean up the listener\n      unsubscribe();\n    }\n  };\n  return (((predicate: AnyListenerPredicate<S>, timeout: number | undefined) => catchRejection(take(predicate, timeout))) as TakePattern<S>);\n};\nconst getListenerEntryPropsFrom = (options: FallbackAddListenerOptions) => {\n  let {\n    type,\n    actionCreator,\n    matcher,\n    predicate,\n    effect\n  } = options;\n  if (type) {\n    predicate = createAction(type).match;\n  } else if (actionCreator) {\n    type = actionCreator!.type;\n    predicate = actionCreator.match;\n  } else if (matcher) {\n    predicate = matcher;\n  } else if (predicate) {\n    // pass\n  } else {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(21) : 'Creating or removing a listener requires one of the known fields for matching an action');\n  }\n  assertFunction(effect, 'options.listener');\n  return {\n    predicate,\n    type,\n    effect\n  };\n};\n\n/** Accepts the possible options for creating a listener, and returns a formatted listener entry */\nexport const createListenerEntry: TypedCreateListenerEntry<unknown> = ( /* @__PURE__ */(assign((options: FallbackAddListenerOptions) => {\n  const {\n    type,\n    predicate,\n    effect\n  } = getListenerEntryPropsFrom(options);\n  const id = nanoid();\n  const entry: ListenerEntry<unknown> = {\n    id,\n    effect,\n    type,\n    predicate,\n    pending: new Set<AbortController>(),\n    unsubscribe: () => {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(22) : 'Unsubscribe not initialized');\n    }\n  };\n  return entry;\n}, {\n  withTypes: () => createListenerEntry\n}) as unknown) as TypedCreateListenerEntry<unknown>);\nconst cancelActiveListeners = (entry: ListenerEntry<unknown, Dispatch<UnknownAction>>) => {\n  entry.pending.forEach(controller => {\n    abortControllerWithReason(controller, listenerCancelled);\n  });\n};\nconst createClearListenerMiddleware = (listenerMap: Map<string, ListenerEntry>) => {\n  return () => {\n    listenerMap.forEach(cancelActiveListeners);\n    listenerMap.clear();\n  };\n};\n\n/**\n * Safely reports errors to the `errorHandler` provided.\n * Errors that occur inside `errorHandler` are notified in a new task.\n * Inspired by [rxjs reportUnhandledError](https://github.com/ReactiveX/rxjs/blob/6fafcf53dc9e557439b25debaeadfd224b245a66/src/internal/util/reportUnhandledError.ts)\n * @param errorHandler\n * @param errorToNotify\n */\nconst safelyNotifyError = (errorHandler: ListenerErrorHandler, errorToNotify: unknown, errorInfo: ListenerErrorInfo): void => {\n  try {\n    errorHandler(errorToNotify, errorInfo);\n  } catch (errorHandlerError) {\n    // We cannot let an error raised here block the listener queue.\n    // The error raised here will be picked up by `window.onerror`, `process.on('error')` etc...\n    setTimeout(() => {\n      throw errorHandlerError;\n    }, 0);\n  }\n};\n\n/**\n * @public\n */\nexport const addListener = ( /* @__PURE__ */(assign( /* @__PURE__ */createAction(`${alm}/add`), {\n  withTypes: () => addListener\n}) as unknown) as TypedAddListener<unknown>);\n\n/**\n * @public\n */\nexport const clearAllListeners = /* @__PURE__ */createAction(`${alm}/removeAll`);\n\n/**\n * @public\n */\nexport const removeListener = ( /* @__PURE__ */(assign( /* @__PURE__ */createAction(`${alm}/remove`), {\n  withTypes: () => removeListener\n}) as unknown) as TypedRemoveListener<unknown>);\nconst defaultErrorHandler: ListenerErrorHandler = (...args: unknown[]) => {\n  console.error(`${alm}/error`, ...args);\n};\n\n/**\n * @public\n */\nexport const createListenerMiddleware = <StateType = unknown, DispatchType extends Dispatch<Action> = ThunkDispatch<StateType, unknown, UnknownAction>, ExtraArgument = unknown>(middlewareOptions: CreateListenerMiddlewareOptions<ExtraArgument> = {}) => {\n  const listenerMap = new Map<string, ListenerEntry>();\n  const {\n    extra,\n    onError = defaultErrorHandler\n  } = middlewareOptions;\n  assertFunction(onError, 'onError');\n  const insertEntry = (entry: ListenerEntry) => {\n    entry.unsubscribe = () => listenerMap.delete(entry!.id);\n    listenerMap.set(entry.id, entry);\n    return (cancelOptions?: UnsubscribeListenerOptions) => {\n      entry.unsubscribe();\n      if (cancelOptions?.cancelActive) {\n        cancelActiveListeners(entry);\n      }\n    };\n  };\n  const startListening = (((options: FallbackAddListenerOptions) => {\n    let entry = find(Array.from(listenerMap.values()), existingEntry => existingEntry.effect === options.effect);\n    if (!entry) {\n      entry = createListenerEntry((options as any));\n    }\n    return insertEntry(entry);\n  }) as AddListenerOverloads<any>);\n  assign(startListening, {\n    withTypes: () => startListening\n  });\n  const stopListening = (options: FallbackAddListenerOptions & UnsubscribeListenerOptions): boolean => {\n    const {\n      type,\n      effect,\n      predicate\n    } = getListenerEntryPropsFrom(options);\n    const entry = find(Array.from(listenerMap.values()), entry => {\n      const matchPredicateOrType = typeof type === 'string' ? entry.type === type : entry.predicate === predicate;\n      return matchPredicateOrType && entry.effect === effect;\n    });\n    if (entry) {\n      entry.unsubscribe();\n      if (options.cancelActive) {\n        cancelActiveListeners(entry);\n      }\n    }\n    return !!entry;\n  };\n  assign(stopListening, {\n    withTypes: () => stopListening\n  });\n  const notifyListener = async (entry: ListenerEntry<unknown, Dispatch<UnknownAction>>, action: unknown, api: MiddlewareAPI, getOriginalState: () => StateType) => {\n    const internalTaskController = new AbortController();\n    const take = createTakePattern((startListening as AddListenerOverloads<any>), internalTaskController.signal);\n    const autoJoinPromises: Promise<any>[] = [];\n    try {\n      entry.pending.add(internalTaskController);\n      await Promise.resolve(entry.effect(action,\n      // Use assign() rather than ... to avoid extra helper functions added to bundle\n      assign({}, api, {\n        getOriginalState,\n        condition: (predicate: AnyListenerPredicate<any>, timeout?: number) => take(predicate, timeout).then(Boolean),\n        take,\n        delay: createDelay(internalTaskController.signal),\n        pause: createPause<any>(internalTaskController.signal),\n        extra,\n        signal: internalTaskController.signal,\n        fork: createFork(internalTaskController.signal, autoJoinPromises),\n        unsubscribe: entry.unsubscribe,\n        subscribe: () => {\n          listenerMap.set(entry.id, entry);\n        },\n        cancelActiveListeners: () => {\n          entry.pending.forEach((controller, _, set) => {\n            if (controller !== internalTaskController) {\n              abortControllerWithReason(controller, listenerCancelled);\n              set.delete(controller);\n            }\n          });\n        },\n        cancel: () => {\n          abortControllerWithReason(internalTaskController, listenerCancelled);\n          entry.pending.delete(internalTaskController);\n        },\n        throwIfCancelled: () => {\n          validateActive(internalTaskController.signal);\n        }\n      })));\n    } catch (listenerError) {\n      if (!(listenerError instanceof TaskAbortError)) {\n        safelyNotifyError(onError, listenerError, {\n          raisedBy: 'effect'\n        });\n      }\n    } finally {\n      await Promise.all(autoJoinPromises);\n      abortControllerWithReason(internalTaskController, listenerCompleted); // Notify that the task has completed\n      entry.pending.delete(internalTaskController);\n    }\n  };\n  const clearListenerMiddleware = createClearListenerMiddleware(listenerMap);\n  const middleware: ListenerMiddleware<StateType, DispatchType, ExtraArgument> = api => next => action => {\n    if (!isAction(action)) {\n      // we only want to notify listeners for action objects\n      return next(action);\n    }\n    if (addListener.match(action)) {\n      return startListening((action.payload as any));\n    }\n    if (clearAllListeners.match(action)) {\n      clearListenerMiddleware();\n      return;\n    }\n    if (removeListener.match(action)) {\n      return stopListening(action.payload);\n    }\n\n    // Need to get this state _before_ the reducer processes the action\n    let originalState: StateType | typeof INTERNAL_NIL_TOKEN = api.getState();\n\n    // `getOriginalState` can only be called synchronously.\n    // @see https://github.com/reduxjs/redux-toolkit/discussions/1648#discussioncomment-1932820\n    const getOriginalState = (): StateType => {\n      if (originalState === INTERNAL_NIL_TOKEN) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(23) : `${alm}: getOriginalState can only be called synchronously`);\n      }\n      return (originalState as StateType);\n    };\n    let result: unknown;\n    try {\n      // Actually forward the action to the reducer before we handle listeners\n      result = next(action);\n      if (listenerMap.size > 0) {\n        const currentState = api.getState();\n        // Work around ESBuild+TS transpilation issue\n        const listenerEntries = Array.from(listenerMap.values());\n        for (const entry of listenerEntries) {\n          let runListener = false;\n          try {\n            runListener = entry.predicate(action, currentState, originalState);\n          } catch (predicateError) {\n            runListener = false;\n            safelyNotifyError(onError, predicateError, {\n              raisedBy: 'predicate'\n            });\n          }\n          if (!runListener) {\n            continue;\n          }\n          notifyListener(entry, action, api, getOriginalState);\n        }\n      }\n    } finally {\n      // Remove `originalState` store from this scope.\n      originalState = INTERNAL_NIL_TOKEN;\n    }\n    return result;\n  };\n  return ({\n    middleware,\n    startListening,\n    stopListening,\n    clearListeners: clearListenerMiddleware\n  } as ListenerMiddlewareInstance<StateType, DispatchType, ExtraArgument>);\n};","import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2 } from \"@reduxjs/toolkit\";\nimport type { Reducer, StateFromReducersMapObject, UnknownAction } from 'redux';\nimport { combineReducers } from 'redux';\nimport { nanoid } from './nanoid';\nimport type { Id, NonUndefined, Tail, UnionToIntersection, WithOptionalProp } from './tsHelpers';\nimport { emplace } from './utils';\ntype SliceLike<ReducerPath extends string, State> = {\n  reducerPath: ReducerPath;\n  reducer: Reducer<State>;\n};\ntype AnySliceLike = SliceLike<string, any>;\ntype SliceLikeReducerPath<A extends AnySliceLike> = A extends SliceLike<infer ReducerPath, any> ? ReducerPath : never;\ntype SliceLikeState<A extends AnySliceLike> = A extends SliceLike<any, infer State> ? State : never;\nexport type WithSlice<A extends AnySliceLike> = { [Path in SliceLikeReducerPath<A>]: SliceLikeState<A> };\ntype ReducerMap = Record<string, Reducer>;\ntype ExistingSliceLike<DeclaredState> = { [ReducerPath in keyof DeclaredState]: SliceLike<ReducerPath & string, NonUndefined<DeclaredState[ReducerPath]>> }[keyof DeclaredState];\nexport type InjectConfig = {\n  /**\n   * Allow replacing reducer with a different reference. Normally, an error will be thrown if a different reducer instance to the one already injected is used.\n   */\n  overrideExisting?: boolean;\n};\n\n/**\n * A reducer that allows for slices/reducers to be injected after initialisation.\n */\nexport interface CombinedSliceReducer<InitialState, DeclaredState = InitialState> extends Reducer<DeclaredState, UnknownAction, Partial<DeclaredState>> {\n  /**\n   * Provide a type for slices that will be injected lazily.\n   *\n   * One way to do this would be with interface merging:\n   * ```ts\n   *\n   * export interface LazyLoadedSlices {}\n   *\n   * export const rootReducer = combineSlices(stringSlice).withLazyLoadedSlices<LazyLoadedSlices>();\n   *\n   * // elsewhere\n   *\n   * declare module './reducer' {\n   *   export interface LazyLoadedSlices extends WithSlice<typeof booleanSlice> {}\n   * }\n   *\n   * const withBoolean = rootReducer.inject(booleanSlice);\n   *\n   * // elsewhere again\n   *\n   * declare module './reducer' {\n   *   export interface LazyLoadedSlices {\n   *     customName: CustomState\n   *   }\n   * }\n   *\n   * const withCustom = rootReducer.inject({ reducerPath: \"customName\", reducer: customSlice.reducer })\n   * ```\n   */\n  withLazyLoadedSlices<Lazy = {}>(): CombinedSliceReducer<InitialState, Id<DeclaredState & Partial<Lazy>>>;\n\n  /**\n   * Inject a slice.\n   *\n   * Accepts an individual slice, RTKQ API instance, or a \"slice-like\" { reducerPath, reducer } object.\n   *\n   * ```ts\n   * rootReducer.inject(booleanSlice)\n   * rootReducer.inject(baseApi)\n   * rootReducer.inject({ reducerPath: 'boolean' as const, reducer: newReducer }, { overrideExisting: true })\n   * ```\n   *\n   */\n  inject<Sl extends Id<ExistingSliceLike<DeclaredState>>>(slice: Sl, config?: InjectConfig): CombinedSliceReducer<InitialState, Id<DeclaredState & WithSlice<Sl>>>;\n\n  /**\n   * Inject a slice.\n   *\n   * Accepts an individual slice, RTKQ API instance, or a \"slice-like\" { reducerPath, reducer } object.\n   *\n   * ```ts\n   * rootReducer.inject(booleanSlice)\n   * rootReducer.inject(baseApi)\n   * rootReducer.inject({ reducerPath: 'boolean' as const, reducer: newReducer }, { overrideExisting: true })\n   * ```\n   *\n   */\n  inject<ReducerPath extends string, State>(slice: SliceLike<ReducerPath, State & (ReducerPath extends keyof DeclaredState ? never : State)>, config?: InjectConfig): CombinedSliceReducer<InitialState, Id<DeclaredState & WithSlice<SliceLike<ReducerPath, State>>>>;\n\n  /**\n   * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\n   *\n   * ```ts\n   * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\n   * //                                                                ^? boolean | undefined\n   *\n   * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\n   *   // if action hasn't been dispatched since slice was injected, this would usually be undefined\n   *   // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\n   *   return state.boolean;\n   *   //           ^? boolean\n   * })\n   * ```\n   *\n   * If the reducer is nested inside the root state, a selectState callback can be passed to retrieve the reducer's state.\n   *\n   * ```ts\n   *\n   * export interface LazyLoadedSlices {};\n   *\n   * export const innerReducer = combineSlices(stringSlice).withLazyLoadedSlices<LazyLoadedSlices>();\n   *\n   * export const rootReducer = combineSlices({ inner: innerReducer });\n   *\n   * export type RootState = ReturnType<typeof rootReducer>;\n   *\n   * // elsewhere\n   *\n   * declare module \"./reducer.ts\" {\n   *  export interface LazyLoadedSlices extends WithSlice<typeof booleanSlice> {}\n   * }\n   *\n   * const withBool = innerReducer.inject(booleanSlice);\n   *\n   * const selectBoolean = withBool.selector(\n   *   (state) => state.boolean,\n   *   (rootState: RootState) => state.inner\n   * );\n   * //    now expects to be passed RootState instead of innerReducer state\n   *\n   * ```\n   *\n   * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\n   *\n   * ```ts\n   * const injectedReducer = rootReducer.inject(booleanSlice);\n   * const selectBoolean = injectedReducer.selector((state) => {\n   *   console.log(injectedReducer.selector.original(state).boolean) // possibly undefined\n   *   return state.boolean\n   * })\n   * ```\n   */\n  selector: {\n    /**\n     * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\n     *\n     * ```ts\n     * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\n     * //                                                                ^? boolean | undefined\n     *\n     * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\n     *   // if action hasn't been dispatched since slice was injected, this would usually be undefined\n     *   // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\n     *   return state.boolean;\n     *   //           ^? boolean\n     * })\n     * ```\n     *\n     * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\n     *\n     * ```ts\n     * const injectedReducer = rootReducer.inject(booleanSlice);\n     * const selectBoolean = injectedReducer.selector((state) => {\n     *   console.log(injectedReducer.selector.original(state).boolean) // undefined\n     *   return state.boolean\n     * })\n     * ```\n     */\n    <Selector extends (state: DeclaredState, ...args: any[]) => unknown>(selectorFn: Selector): (state: WithOptionalProp<Parameters<Selector>[0], Exclude<keyof DeclaredState, keyof InitialState>>, ...args: Tail<Parameters<Selector>>) => ReturnType<Selector>;\n\n    /**\n     * Create a selector that guarantees that the slices injected will have a defined value when selector is run.\n     *\n     * ```ts\n     * const selectBooleanWithoutInjection = (state: RootState) => state.boolean;\n     * //                                                                ^? boolean | undefined\n     *\n     * const selectBoolean = rootReducer.inject(booleanSlice).selector((state) => {\n     *   // if action hasn't been dispatched since slice was injected, this would usually be undefined\n     *   // however selector() uses a Proxy around the first parameter to ensure that it evaluates to the initial state instead, if undefined\n     *   return state.boolean;\n     *   //           ^? boolean\n     * })\n     * ```\n     *\n     * If the reducer is nested inside the root state, a selectState callback can be passed to retrieve the reducer's state.\n     *\n     * ```ts\n     *\n     * interface LazyLoadedSlices {};\n     *\n     * const innerReducer = combineSlices(stringSlice).withLazyLoadedSlices<LazyLoadedSlices>();\n     *\n     * const rootReducer = combineSlices({ inner: innerReducer });\n     *\n     * type RootState = ReturnType<typeof rootReducer>;\n     *\n     * // elsewhere\n     *\n     * declare module \"./reducer.ts\" {\n     *  interface LazyLoadedSlices extends WithSlice<typeof booleanSlice> {}\n     * }\n     *\n     * const withBool = innerReducer.inject(booleanSlice);\n     *\n     * const selectBoolean = withBool.selector(\n     *   (state) => state.boolean,\n     *   (rootState: RootState) => state.inner\n     * );\n     * //    now expects to be passed RootState instead of innerReducer state\n     *\n     * ```\n     *\n     * Value passed to selectorFn will be a Proxy - use selector.original(proxy) to get original state value (useful for debugging)\n     *\n     * ```ts\n     * const injectedReducer = rootReducer.inject(booleanSlice);\n     * const selectBoolean = injectedReducer.selector((state) => {\n     *   console.log(injectedReducer.selector.original(state).boolean) // possibly undefined\n     *   return state.boolean\n     * })\n     * ```\n     */\n    <Selector extends (state: DeclaredState, ...args: any[]) => unknown, RootState>(selectorFn: Selector, selectState: (rootState: RootState, ...args: Tail<Parameters<Selector>>) => WithOptionalProp<Parameters<Selector>[0], Exclude<keyof DeclaredState, keyof InitialState>>): (state: RootState, ...args: Tail<Parameters<Selector>>) => ReturnType<Selector>;\n    /**\n     * Returns the unproxied state. Useful for debugging.\n     * @param state state Proxy, that ensures injected reducers have value\n     * @returns original, unproxied state\n     * @throws if value passed is not a state Proxy\n     */\n    original: (state: DeclaredState) => InitialState & Partial<DeclaredState>;\n  };\n}\ntype InitialState<Slices extends Array<AnySliceLike | ReducerMap>> = UnionToIntersection<Slices[number] extends infer Slice ? Slice extends AnySliceLike ? WithSlice<Slice> : StateFromReducersMapObject<Slice> : never>;\nconst isSliceLike = (maybeSliceLike: AnySliceLike | ReducerMap): maybeSliceLike is AnySliceLike => 'reducerPath' in maybeSliceLike && typeof maybeSliceLike.reducerPath === 'string';\nconst getReducers = (slices: Array<AnySliceLike | ReducerMap>) => slices.flatMap(sliceOrMap => isSliceLike(sliceOrMap) ? [([sliceOrMap.reducerPath, sliceOrMap.reducer] as const)] : Object.entries(sliceOrMap));\nconst ORIGINAL_STATE = Symbol.for('rtk-state-proxy-original');\nconst isStateProxy = (value: any) => !!value && !!value[ORIGINAL_STATE];\nconst stateProxyMap = new WeakMap<object, object>();\nconst createStateProxy = <State extends object,>(state: State, reducerMap: Partial<Record<string, Reducer>>) => (emplace(stateProxyMap, state, {\n  insert: () => new Proxy(state, {\n    get: (target, prop, receiver) => {\n      if (prop === ORIGINAL_STATE) return target;\n      const result = Reflect.get(target, prop, receiver);\n      if (typeof result === 'undefined') {\n        const reducer = reducerMap[prop.toString()];\n        if (reducer) {\n          // ensure action type is random, to prevent reducer treating it differently\n          const reducerResult = reducer(undefined, {\n            type: nanoid()\n          });\n          if (typeof reducerResult === 'undefined') {\n            throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(24) : `The slice reducer for key \"${prop.toString()}\" returned undefined when called for selector(). ` + `If the state passed to the reducer is undefined, you must ` + `explicitly return the initial state. The initial state may ` + `not be undefined. If you don't want to set a value for this reducer, ` + `you can use null instead of undefined.`);\n          }\n          return reducerResult;\n        }\n      }\n      return result;\n    }\n  })\n}) as State);\nconst original = (state: any) => {\n  if (!isStateProxy(state)) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(25) : 'original must be used on state Proxy');\n  }\n  return state[ORIGINAL_STATE];\n};\nconst noopReducer: Reducer<Record<string, any>> = (state = {}) => state;\nexport function combineSlices<Slices extends Array<AnySliceLike | ReducerMap>>(...slices: Slices): CombinedSliceReducer<Id<InitialState<Slices>>> {\n  const reducerMap = Object.fromEntries<Reducer>(getReducers(slices));\n  const getReducer = () => Object.keys(reducerMap).length ? combineReducers(reducerMap) : noopReducer;\n  let reducer = getReducer();\n  function combinedReducer(state: Record<string, unknown>, action: UnknownAction) {\n    return reducer(state, action);\n  }\n  combinedReducer.withLazyLoadedSlices = () => combinedReducer;\n  const inject = (slice: AnySliceLike, config: InjectConfig = {}): typeof combinedReducer => {\n    const {\n      reducerPath,\n      reducer: reducerToInject\n    } = slice;\n    const currentReducer = reducerMap[reducerPath];\n    if (!config.overrideExisting && currentReducer && currentReducer !== reducerToInject) {\n      if (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n        console.error(`called \\`inject\\` to override already-existing reducer ${reducerPath} without specifying \\`overrideExisting: true\\``);\n      }\n      return combinedReducer;\n    }\n    reducerMap[reducerPath] = reducerToInject;\n    reducer = getReducer();\n    return combinedReducer;\n  };\n  const selector = Object.assign(function makeSelector<State extends object, RootState, Args extends any[]>(selectorFn: (state: State, ...args: Args) => any, selectState?: (rootState: RootState, ...args: Args) => State) {\n    return function selector(state: State, ...args: Args) {\n      return selectorFn(createStateProxy(selectState ? selectState((state as any), ...args) : state, reducerMap), ...args);\n    };\n  }, {\n    original\n  });\n  return (Object.assign(combinedReducer, {\n    inject,\n    selector\n  }) as any);\n}","/**\r\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\r\n *\r\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\r\n * during build.\r\n * @param {number} code\r\n */\nexport function formatProdErrorMessage(code: number) {\n  return `Minified Redux Toolkit error #${code}; visit https://redux-toolkit.js.org/Errors?code=${code} for the full message or ` + 'use the non-minified dev environment for full errors. ';\n}","import { createSlice } from \"@reduxjs/toolkit\";\n\n// const userData = JSON.parse(localStorage.getItem(\"UserInfo\")) || {\n//   user: null,\n// };\n\nconst initialState = {\n  // const user = useSelector((state) => state.userInfo.user);\n\n  // user: userData,\n\n  //initial to set login user info\n  user: localStorage.getItem(\"UserInfo\")\n    ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n    : null,\n};\n\n// Create slice\nexport const userSlice = createSlice({\n  name: \"user\",\n  initialState,\n\n  reducers: {\n    // Set user data\n    setUser: (state, action) => {\n      state.user = action.payload;\n    },\n\n    // Remove user data\n    removeUser: (state) => {\n      state.user = null;\n      localStorage.removeItem(\"UserInfo\");\n    },\n  },\n});\n\nexport const { setUser, removeUser } = userSlice.actions;\n\nexport default userSlice.reducer;\n","import React from \"react\";\n\n// This dialog for using delete confirmation page\nconst DeleteDialog = ({ isOpen, onCancel, onConfirm, title, message }) => {\n  if (!isOpen) return null;\n  return (\n    <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50 z-50 px-2\">\n      <div className=\"bg-white p-6 rounded-lg shadow-lg w-96 \">\n        <h2 className=\"text-lg font-semibold text-red-600\">{title}</h2>\n        <p className=\"mt-4 text-sm text-gray-700\">{message}</p>\n        <div className=\"mt-6 flex justify-end space-x-3\">\n          <button\n            onClick={onCancel}\n            className=\"px-4 py-2 bg-gray-300 rounded-lg hover:bg-gray-400 transition\"\n          >\n            Cancel\n          </button>\n          <button\n            onClick={onConfirm}\n            className=\"px-4 py-2 bg-red-600 text-white rounded-lg hover:bg-red-700 transition\"\n          >\n            Delete\n          </button>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default DeleteDialog;\n","import React from \"react\";\n// Custom button view\nconst PrimaryButton = ({ label, onClick, onDisable }) => {\n  return (\n    <button\n      className={`  text-white text-base 3xl:text-lg p-4 rounded-lg w-full h-14 3xl:h-16 mx-auto font-PlusJakartaSansSemiBold ${\n        onDisable ? \"bg-mButtonDisable cursor-not-allowed\" : \"bg-mButtonColor\"\n      }`}\n      onClick={onClick}\n      disabled={onDisable}\n    >\n      {label}\n    </button>\n  );\n};\n\nexport default PrimaryButton;\n","import React, { useEffect, useRef } from \"react\";\nimport Titletext from \"./Titletext\";\nimport { ReactComponent as BackIcon } from \"../assets/Images/ic_summeryback.svg\";\nimport { ReactComponent as NotificationIcon } from \"../assets/Images/ic_notification.svg\";\nimport { Images } from \"../Utils/Constants\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { ReactComponent as CrownIcon } from \"../assets/Images/ic_crown.svg\";\nimport DashboardTitle from \"./DashboardTitle\";\nimport { ReactComponent as LogoutIcon } from \"../assets/Images/ic_logout.svg\";\nimport { ReactComponent as CloseIcon } from \"../assets/Images/ic_close.svg\";\nimport { useDispatch } from \"react-redux\";\nimport { removeUser } from \"../redux/slice/userSlice\";\nimport { getusernotifications, notificationDelete } from \"../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport DeleteDialog from \"./DeleteDialog\";\nimport PrimaryButton from \"./PrimaryButton\";\n\nconst HeaderMenu = ({\n  title,\n  onClick,\n  isShowing,\n  notShowsubscription,\n  mClickstatus,\n  isLoadNotification,\n  isCallBtn,\n  balancedeck,\n  balancedeckstatus,\n}) => {\n  const { t } = useTranslation(\"\");\n  const navigate = useNavigate();\n\n  const menuRef = useRef(null);\n  const notifyRef = useRef(null);\n  const notifyRef1 = useRef(null);\n  const dispatch = useDispatch();\n\n  const [loading, setLoading] = useState(false);\n  const [isOpen, setIsOpen] = useState(false);\n  const [showPopup, setShowPopup] = useState(false);\n\n  const [notificationCount, setNotificationCount] = useState(0);\n  const [notificationmessage, setNotificationMessage] = useState([]);\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  const today = new Date();\n\n  // Get the current day, month, and year\n  const currentDate = `${String(today.getDate()).padStart(2, \"0\")}-${String(\n    today.getMonth() + 1\n  ).padStart(2, \"0\")}-${today.getFullYear()}`;\n\n  // Calculate no of days\n\n  const [remainingDays, setRemainingDays] = useState(null);\n\n  const start = currentDate;\n  const end = UserInfoData.subscription_expiry_date;\n\n  useEffect(() => {\n    // Split the string into day, month, and year\n    // const [startday, startmonth, startyear] = start.split(\"-\");\n    // const [endday, endmonth, endyear] = end.split(\"-\");\n\n    // const differenceInTime =\n    //   new Date(endyear, endmonth - 1, endday).getTime() -\n    //   new Date(startyear, startmonth - 1, startday).getTime();\n\n    // // Convert milliseconds to days (1 day = 24 * 60 * 60 * 1000 milliseconds)\n    // const differenceInDays = differenceInTime / (1000 * 3600 * 24);\n\n    // setRemainingDays(differenceInDays);\n    setRemainingDays(10);\n  }, []);\n\n  // End Calculate no of days\n\n  // Click Menu open\n  const toggleMenu = () => {\n    if (!mClickstatus) {\n      setIsOpen(!isOpen);\n    }\n  };\n\n  // Click Subscription menu\n  const SubscriptionClick = () => {\n    if (!mClickstatus) {\n      navigate(\"/subscription\");\n    }\n  };\n\n  // Close the menu on outside click\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (menuRef.current && !menuRef.current.contains(event.target)) {\n        setIsOpen(isOpen);\n      }\n    };\n    document.addEventListener(\"mousedown\", handleClickOutside);\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [menuRef]);\n\n  // Close the menu on notification\n  // useEffect(() => {\n  //   const handleClickOutside = (event) => {\n  //     if (notifyRef.current && notifyRef.current.contains(event.target)) {\n  //       setShowPopup(false);\n  //     }\n  //   };\n  //   document.addEventListener(\"mousedown\", handleClickOutside);\n  //   return () => {\n  //     document.removeEventListener(\"mousedown\", handleClickOutside);\n  //   };\n  // }, [notifyRef]);\n\n  // Notification click Event\n  const NotificationClick = () => {\n    if (!mClickstatus) {\n      if (notificationmessage.length !== 0) {\n        setShowPopup(true);\n        document.body.style.overflow = \"hidden\"; // Disable background scrolling when the popup is shown\n      } else {\n        toast.success(\"Notification not available\");\n      }\n    }\n  };\n\n  // Close the alert message\n  const handleClose = () => {\n    setShowPopup(false);\n    document.body.style.overflow = \"auto\"; // Re-enable background scrolling\n  };\n\n  const handleClick = () => {\n    // setShowPopup(false);\n    // document.body.style.overflow = \"auto\"; // Re-enable background scrolling\n  };\n  // Click Logout button\n  const mLogout = () => {\n    localStorage.clear();\n    dispatch(removeUser());\n    navigate(\"/login\");\n  };\n\n  useEffect(() => {\n    if (isLoadNotification) {\n      NotificationDetails();\n    } else {\n      setNotificationMessage(\n        localStorage.getItem(\"NotificationMessage\") !== null\n          ? JSON.parse(localStorage.getItem(\"NotificationMessage\"))\n          : []\n      );\n      setNotificationCount(\n        localStorage.getItem(\"NotificationCount\") !== null\n          ? JSON.parse(localStorage.getItem(\"NotificationCount\"))\n          : 0\n      );\n    }\n  }, []);\n\n  const NotificationDetails = async () => {\n    setLoading(true);\n    const response = await getusernotifications({\n      user_name: UserInfoData.user_email,\n      // user_name: \"swetha_raj@outlook.com\",\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setNotificationMessage(response?.data.message.message);\n        const length = response?.data?.message?.message?.length || 0;\n        setNotificationCount(length);\n        localStorage.setItem(\n          \"NotificationMessage\",\n          JSON.stringify(response?.data.message.message)\n        );\n        localStorage.setItem(\"NotificationCount\", length);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  // Change data formet start\n  const formatDate = (inputDate) => {\n    // Split the date string into day, month, year\n    const [day, month, year] = inputDate.split(\"-\");\n    // Create a new Date object from the components (month is zero-based, so we subtract 1)\n    const date = new Date(year, month - 1, day);\n    // Format the date using toLocaleDateString with options\n    const options = { day: \"numeric\", month: \"short\", year: \"numeric\" }; // e.g., 25 Sep 2024\n    return date.toLocaleDateString(\"en-US\", options);\n  };\n  // Change date formet end\n\n  //View more option\n\n  const [isExpanded, setIsExpanded] = useState(false);\n\n  // Number of characters to show initially\n  const initialContentLength = 100;\n\n  // Toggle view more/less\n  const toggleViewMore = () => {\n    setIsExpanded(!isExpanded);\n  };\n\n  //Notification Delete dialog\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [SelectNotification, setSelectNotification] = useState({});\n\n  const closeDialog = () => {\n    setIsDialogOpen(false);\n  };\n\n  const clickDelete = (item, event) => {\n    event.stopPropagation(); // Prevents handleClose1 from propagating to parent\n    handleClick(); // Call handleClose1 for individual notification\n    setSelectNotification(item);\n    setIsDialogOpen(true);\n  };\n\n  const confirmDelete = () => {\n    // Perform delete action here\n    console.log(\"Item deleted\");\n    closeDialog();\n\n    DeleteAPICall();\n  };\n\n  // Service Page API call\n  const DeleteAPICall = async () => {\n    setLoading(true);\n    const response = await notificationDelete({\n      user_name: UserInfoData.user_email,\n      notification_id: SelectNotification.id,\n      delete: 1,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        NotificationDetails();\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const longText = `This is a long text that will initially be truncated. \n  When you click the \"View More\" button, the full content will be revealed. \n  Clicking \"View Less\" will collapse it again. This pattern is useful for \n  managing large blocks of text without overwhelming users.`;\n\n  const initialVisibleLabels = 6; // Number of labels to show initially\n\n  const openWebsite = (url) => {\n    // Check if the URL already includes a protocol\n    const websiteUrl =\n      url.startsWith(\"http://\") || url.startsWith(\"https://\")\n        ? url\n        : `https://${url}`;\n\n    window.open(websiteUrl, \"_blank\");\n  };\n\n  const callClick = () => {\n    openWebsite(\"https://calendly.com/theprevc/30min\");\n  };\n\n  return (\n    <div>\n      <div className=\" hidden lg:flex w-full h-16 \">\n        <div className=\"w-1/2 p-4 justify-start items-center flex mt-1 \">\n          {isShowing ? (\n            <BackIcon\n              className=\"w-6 h-6 flex-shrink-0 cursor-pointer mr-2\"\n              onClick={onClick}\n            />\n          ) : (\n            <div></div>\n          )}\n\n          <Titletext label={title} />\n        </div>\n\n        <div className=\"w-1/2 p-4 justify-end items-center flex mt-1 \">\n          {UserInfoData.user_type === \"Investor\" ||\n          notShowsubscription ||\n          !UserInfoData.subscription_status ? (\n            <div></div>\n          ) : (\n            <div\n              className={`h-9 hidden 3xl:h-9 rounded-full bg-mButtonColor items-center justify-center px-4 py-2  ${\n                mClickstatus ? \"cursor-not-allowed\" : \"cursor-pointer\"\n              } `}\n              onClick={() => SubscriptionClick()}\n            >\n              <CrownIcon className=\"w-6 h-6 3xl:w-6 3xl:h-6 flex-shrink-0 cursor-pointer\" />\n              <p className=\"ml-2 font-PlusJakartaSansSemiBold text-white text-base 3xl:text-lg\">\n                {\" \"}\n                {t(\"Subscription\")}{\" \"}\n              </p>\n              <p className=\"ml-2 font-PlusJakartaSansSemiBold text-white text-base\">\n                {\" \"}\n              </p>\n            </div>\n          )}\n\n          {isCallBtn ? (\n            <div\n              className=\"mr-5  bg-mButtonColor px-4 py-2 justify-center items-center rounded-md cursor-pointer\"\n              onClick={() => {\n                callClick();\n              }}\n            >\n              <p className=\"text-white text-base 3xl:text-lg font-PlusJakartaSansSemiBold\">\n                Raise Capital\n              </p>\n            </div>\n          ) : (\n            <div></div>\n          )}\n\n          {balancedeckstatus ? (\n            <div className=\"mr-5\">\n              <p className=\"font-PlusJakartaSansMedium text-mTextColor text-sm  xl:text-base 3xl:text-lg \">\n                Remaning Deck : {balancedeck}\n              </p>\n            </div>\n          ) : (\n            <div></div>\n          )}\n\n          <div\n            className={`w-11 h-11   justify-center items-center flex relative ml-2 ${\n              mClickstatus ? \"cursor-not-allowed\" : \"cursor-pointer\"\n            }`}\n            onClick={() => NotificationClick()}\n          >\n            <NotificationIcon className=\" w-7 h-7 3xl:w-7 3xl:h-7\" />\n            {/* {notificationCount > 0 && (\n            \n            )} */}\n            <span className=\"absolute top-0 right-0 inline-flex items-center justify-center font-PlusJakartaSansRegular px-1.5 py-1 leading-none text-white text-xs bg-mButtonColor rounded-full\">\n              {notificationCount}\n            </span>\n          </div>\n          <div\n            onClick={toggleMenu}\n            className={`${\n              mClickstatus ? \"cursor-not-allowed\" : \"cursor-pointer\"\n            }`}\n          >\n            {UserInfoData.image_url.length === 0 ? (\n              <img\n                src={Images.profileimage}\n                alt=\"Profile\"\n                className=\"w-11 h-11 rounded-full ml-3 \"\n              />\n            ) : (\n              <img\n                src={UserInfoData.image_url}\n                alt=\"Profile\"\n                className=\"w-11 h-11 rounded-full ml-3 \"\n              />\n            )}\n          </div>\n        </div>\n      </div>\n\n      <div className=\" flex lg:hidden w-full h-16 \">\n        <div className=\"w-1/2 p-4 justify-start items-center flex mt-1\">\n          {isShowing ? (\n            <BackIcon\n              className=\"w-6 h-6 flex-shrink-0 cursor-pointer mr-2\"\n              onClick={onClick}\n            />\n          ) : (\n            <div></div>\n          )}\n\n          <Titletext label={title} />\n        </div>\n\n        <div className=\"w-1/2 p-4 justify-end items-center flex mt-1\">\n          {isCallBtn ? (\n            <div\n              className=\"mr-2 justify-center items-center cursor-pointer\"\n              onClick={() => {\n                callClick();\n              }}\n            >\n              <img src={Images.phonecall} alt=\"Profile\" className=\"w-9 h-8 \" />\n            </div>\n          ) : (\n            <div></div>\n          )}\n\n          <div\n            className=\"w-11 h-11 justify-center items-center flex relative ml-2 cursor-pointer\"\n            onClick={() => NotificationClick()}\n          >\n            <NotificationIcon className=\" w-7 h-7\" />\n            {notificationCount > 0 && (\n              <span className=\"absolute top-0 right-0 inline-flex items-center justify-center font-PlusJakartaSansRegular px-2 py-1 leading-none text-white text-xs bg-mButtonColor rounded-full\">\n                {notificationCount}\n              </span>\n            )}\n          </div>\n          <div onClick={toggleMenu}>\n            {UserInfoData.image_url.length === 0 ? (\n              <img\n                src={Images.profileimage}\n                alt=\"Profile\"\n                className=\"w-11 h-11 rounded-full ml-3 object-cover\"\n              />\n            ) : (\n              <img\n                src={UserInfoData.image_url}\n                alt=\"Profile\"\n                className=\"w-11 h-11 rounded-full ml-3 object-cover\"\n              />\n            )}\n          </div>\n        </div>\n      </div>\n\n      <div className=\"w-full h-px mt-1 bg-mBorderColor\"></div>\n\n      <div className=\"relative flex justify-center items-center \">\n        {/* Button to show the notification */}\n\n        {/* Notification Popup Dialog */}\n        {showPopup && (\n          <div\n            className=\"relative\"\n            onClick={handleClose} // Close the dialog by clicking outside\n          >\n            <div className=\"fixed inset-0 flex justify-end items-start h-full bg-black bg-opacity-50 z-40 px-2\">\n              <div\n                className=\"bg-white rounded-lg shadow-lg max-w-md mt-16 lg:mr-5\"\n                onClick={(e) => e.stopPropagation()} // Prevent closing when clicking inside the dialog content\n              >\n                <div className=\"flex justify-between items-center p-4\">\n                  <DashboardTitle label={t(\"Notification\")} />\n                  <button\n                    onClick={handleClose} // Close when clicking the close button\n                    className=\"text-gray-500 hover:text-gray-700 w-5 h-5\"\n                  >\n                    <CloseIcon className=\"w-5 h-5 3xl:w-5 3xl:h-5\" />\n                  </button>\n                </div>\n\n                <div className=\"w-full h-px bg-mBorderColor\"></div>\n\n                <div\n                  className=\"max-h-[600px] lg:min-w-96 min-h-[400px] overflow-auto relative\"\n                  onClick={handleClick} // Trigger handleClose1 on this section click\n                >\n                  {notificationmessage.map((item, index) => (\n                    <div\n                      key={item.id}\n                      className={`${\n                        index % 2 === 0 ? \"bg-mshadowColor\" : \"bg-white\"\n                      } p-4 grid scroll-y grid-cols-1 gap-6`}\n                      onClick={(e) => {\n                        e.stopPropagation(); // Prevents handleClose1 from propagating to parent\n                        handleClick(); // Call handleClose1 for individual notification\n                      }}\n                    >\n                      <div>\n                        <div className=\"justify-between flex\">\n                          <DashboardTitle label={item.service_name} />\n                          <img\n                            src={Images.delete}\n                            alt=\"Profile\"\n                            onClick={(e) => {\n                              e.stopPropagation();\n                              clickDelete(item, e);\n                            }}\n                            className=\"w-5 h-5 cursor-pointer\"\n                          />\n                        </div>\n\n                        <p className=\"font-PlusJakartaSansRegular text-sm 3xl:text-sm text-mTextColorLogin mt-2\">\n                          {item.service_message}\n                        </p>\n\n                        <div>\n                          <p className=\"font-PlusJakartaSansRegular text-right text-sm 3xl:text-sm text-mTextColorLogin mt-3\">\n                            {formatDate(item.notification_date)}{\" \"}\n                            {item.notification_time}\n                          </p>\n                        </div>\n                      </div>\n                    </div>\n                  ))}\n                </div>\n                <DeleteDialog\n                  isOpen={isDialogOpen}\n                  onCancel={closeDialog}\n                  onConfirm={confirmDelete}\n                  title={\"Delete Confirmation\"}\n                  message={\" Are you sure you want to delete this item? \"}\n                />\n              </div>\n            </div>\n          </div>\n        )}\n\n        {isOpen && (\n          <div\n            className=\"origin-top-right absolute  z-10 right-1 mt-12  rounded-xl px-5 py-3 border border-mGreyThree  bg-white \"\n            ref={menuRef}\n          >\n            <div\n              className=\" flex justify-center items-center cursor-pointer px-5 py-2\"\n              onClick={mLogout}\n            >\n              <LogoutIcon className=\"w-5 h-5 3xl:w-5 3xl:h-5 mt-2\" />\n              <p className=\"font-PlusJakartaSansRegular text-base 3xl:text-base text-mTextColor ml-2 h-5\">\n                {t(\"logout\")}\n              </p>\n            </div>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default HeaderMenu;\n","import React from \"react\";\n\n// Custom button\n\nconst SecondaryButton = ({ label, onClick, onDisable }) => {\n  return (\n    <button\n      className={` text-mTextColor text-base p-4 rounded-lg w-full h-11 justify-center items-center flex bg-mMenuSelect mx-auto font-PlusJakartaSansSemiBold `}\n      onClick={onClick}\n    >\n      {label}\n    </button>\n  );\n};\n\nexport default SecondaryButton;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcChat(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 40,\n    height: 40,\n    viewBox: \"0 0 40 40\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5 12.0013C5 10.1345 5 9.20104 5.36331 8.488C5.68289 7.86079 6.19282 7.35086 6.82003 7.03128C7.53307 6.66797 8.46649 6.66797 10.3333 6.66797H29.6667C31.5335 6.66797 32.4669 6.66797 33.18 7.03128C33.8072 7.35086 34.3171 7.86079 34.6367 8.488C35 9.20104 35 10.1345 35 12.0013V33.3346L29.4594 30.5644C29.0395 30.3544 28.8295 30.2494 28.6094 30.1753C28.4139 30.1096 28.2128 30.0621 28.0086 30.0335C27.7786 30.0013 27.5439 30.0013 27.0743 30.0013H10.3333C8.46649 30.0013 7.53307 30.0013 6.82003 29.638C6.19282 29.3184 5.68289 28.8085 5.36331 28.1813C5 27.4682 5 26.5348 5 24.668V12.0013Z\",\n    stroke: \"white\",\n    strokeWidth: 3.33333,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcChat);\nexport default __webpack_public_path__ + \"static/media/ic_chat.27b0dd5b53413a8c5c3e665888dcd655.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcCompanyGreen(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M2.5 17.5H2C2 17.7761 2.22386 18 2.5 18V17.5ZM17.5 17.5V18C17.7761 18 18 17.7761 18 17.5H17.5ZM5 5.33333C4.72386 5.33333 4.5 5.55719 4.5 5.83333C4.5 6.10948 4.72386 6.33333 5 6.33333V5.33333ZM5.83333 6.33333C6.10948 6.33333 6.33333 6.10948 6.33333 5.83333C6.33333 5.55719 6.10948 5.33333 5.83333 5.33333V6.33333ZM9.16667 5.33333C8.89052 5.33333 8.66667 5.55719 8.66667 5.83333C8.66667 6.10948 8.89052 6.33333 9.16667 6.33333V5.33333ZM10 6.33333C10.2761 6.33333 10.5 6.10948 10.5 5.83333C10.5 5.55719 10.2761 5.33333 10 5.33333V6.33333ZM5 7.83333C4.72386 7.83333 4.5 8.05719 4.5 8.33333C4.5 8.60948 4.72386 8.83333 5 8.83333V7.83333ZM5.83333 8.83333C6.10948 8.83333 6.33333 8.60948 6.33333 8.33333C6.33333 8.05719 6.10948 7.83333 5.83333 7.83333V8.83333ZM9.16667 7.83333C8.89052 7.83333 8.66667 8.05719 8.66667 8.33333C8.66667 8.60948 8.89052 8.83333 9.16667 8.83333V7.83333ZM10 8.83333C10.2761 8.83333 10.5 8.60948 10.5 8.33333C10.5 8.05719 10.2761 7.83333 10 7.83333V8.83333ZM5 10.3333C4.72386 10.3333 4.5 10.5572 4.5 10.8333C4.5 11.1095 4.72386 11.3333 5 11.3333V10.3333ZM5.83333 11.3333C6.10948 11.3333 6.33333 11.1095 6.33333 10.8333C6.33333 10.5572 6.10948 10.3333 5.83333 10.3333V11.3333ZM9.16667 10.3333C8.89052 10.3333 8.66667 10.5572 8.66667 10.8333C8.66667 11.1095 8.89052 11.3333 9.16667 11.3333V10.3333ZM10 11.3333C10.2761 11.3333 10.5 11.1095 10.5 10.8333C10.5 10.5572 10.2761 10.3333 10 10.3333V11.3333ZM9.16667 17.5V18H9.66667V17.5H9.16667ZM5.83333 17.5H5.33333V18H5.83333V17.5ZM15 8.66667C14.7239 8.66667 14.5 8.89052 14.5 9.16667C14.5 9.44281 14.7239 9.66667 15 9.66667V8.66667ZM15.0083 9.66667C15.2845 9.66667 15.5083 9.44281 15.5083 9.16667C15.5083 8.89052 15.2845 8.66667 15.0083 8.66667V9.66667ZM15 11.1667C14.7239 11.1667 14.5 11.3905 14.5 11.6667C14.5 11.9428 14.7239 12.1667 15 12.1667V11.1667ZM15.0083 12.1667C15.2845 12.1667 15.5083 11.9428 15.5083 11.6667C15.5083 11.3905 15.2845 11.1667 15.0083 11.1667V12.1667ZM15 13.6667C14.7239 13.6667 14.5 13.8905 14.5 14.1667C14.5 14.4428 14.7239 14.6667 15 14.6667V13.6667ZM15.0083 14.6667C15.2845 14.6667 15.5083 14.4428 15.5083 14.1667C15.5083 13.8905 15.2845 13.6667 15.0083 13.6667V14.6667ZM17.4092 6.28834L16.9637 6.51534L17.4092 6.28834ZM17.045 5.92416L16.818 6.36966L17.045 5.92416ZM12.045 2.59083L11.818 3.03633L12.045 2.59083ZM12.4092 2.95501L11.9637 3.182L12.4092 2.95501ZM2.59083 2.95501L3.03633 3.182L2.59083 2.95501ZM2.95501 2.59083L3.182 3.03633L2.95501 2.59083ZM2 3.83333V17.5H3V3.83333H2ZM3.83333 3H11.1667V2H3.83333V3ZM12 3.83333V5.83333H13V3.83333H12ZM12 5.83333V17.5H13V5.83333H12ZM2.5 18H12.5V17H2.5V18ZM12.5 18H17.5V17H12.5V18ZM17 7.16667V17.5H18V7.16667H17ZM12.5 6.33333H16.1667V5.33333H12.5V6.33333ZM5 6.33333H5.83333V5.33333H5V6.33333ZM9.16667 6.33333H10V5.33333H9.16667V6.33333ZM5 8.83333H5.83333V7.83333H5V8.83333ZM9.16667 8.83333H10V7.83333H9.16667V8.83333ZM5 11.3333H5.83333V10.3333H5V11.3333ZM9.16667 11.3333H10V10.3333H9.16667V11.3333ZM8.66667 15V17.5H9.66667V15H8.66667ZM9.16667 17H5.83333V18H9.16667V17ZM6.33333 17.5V15H5.33333V17.5H6.33333ZM7.5 13.8333C8.14433 13.8333 8.66667 14.3557 8.66667 15H9.66667C9.66667 13.8034 8.69662 12.8333 7.5 12.8333V13.8333ZM7.5 12.8333C6.30338 12.8333 5.33333 13.8034 5.33333 15H6.33333C6.33333 14.3557 6.85567 13.8333 7.5 13.8333V12.8333ZM15 9.66667H15.0083V8.66667H15V9.66667ZM15 12.1667H15.0083V11.1667H15V12.1667ZM15 14.6667H15.0083V13.6667H15V14.6667ZM18 7.16667C18 6.94156 18.0004 6.74266 17.987 6.57862C17.9731 6.40874 17.942 6.23271 17.8547 6.06135L16.9637 6.51534C16.9672 6.52223 16.9815 6.55201 16.9903 6.66005C16.9996 6.77393 17 6.92506 17 7.16667H18ZM16.1667 6.33333C16.4083 6.33333 16.5594 6.33372 16.6733 6.34303C16.7813 6.35185 16.8111 6.36615 16.818 6.36966L17.272 5.47866C17.1006 5.39134 16.9246 5.36023 16.7547 5.34635C16.5907 5.33294 16.3918 5.33333 16.1667 5.33333V6.33333ZM17.8547 6.06135C17.7268 5.81046 17.5229 5.60649 17.272 5.47866L16.818 6.36966C16.8807 6.40162 16.9317 6.45262 16.9637 6.51534L17.8547 6.06135ZM11.1667 3C11.4083 3 11.5594 3.00039 11.6733 3.00969C11.7813 3.01852 11.8111 3.03282 11.818 3.03633L12.272 2.14532C12.1006 2.05801 11.9246 2.02689 11.7547 2.01301C11.5907 1.99961 11.3918 2 11.1667 2V3ZM13 3.83333C13 3.60823 13.0004 3.40933 12.987 3.24529C12.9731 3.07541 12.942 2.89938 12.8547 2.72801L11.9637 3.182C11.9672 3.1889 11.9815 3.21868 11.9903 3.32672C11.9996 3.44059 12 3.59173 12 3.83333H13ZM11.818 3.03633C11.8807 3.06829 11.9317 3.11928 11.9637 3.182L12.8547 2.72801C12.7268 2.47713 12.5229 2.27316 12.272 2.14532L11.818 3.03633ZM3 3.83333C3 3.59173 3.00039 3.44059 3.00969 3.32672C3.01852 3.21868 3.03282 3.1889 3.03633 3.182L2.14532 2.72801C2.05801 2.89938 2.02689 3.07541 2.01301 3.24529C1.99961 3.40933 2 3.60823 2 3.83333H3ZM3.83333 2C3.60823 2 3.40933 1.99961 3.24529 2.01301C3.07541 2.02689 2.89938 2.05801 2.72801 2.14532L3.182 3.03633C3.1889 3.03282 3.21868 3.01852 3.32672 3.00969C3.44059 3.00039 3.59173 3 3.83333 3V2ZM3.03633 3.182C3.06829 3.11928 3.11928 3.06829 3.182 3.03633L2.72801 2.14532C2.47713 2.27316 2.27316 2.47713 2.14532 2.72801L3.03633 3.182Z\",\n    fill: \"#2A7A5A\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcCompanyGreen);\nexport default __webpack_public_path__ + \"static/media/ic_company_green.7a7ebf94962f4e237999c9002aedfa3d.svg\";\nexport { ForwardRef as ReactComponent };","import type { Options } from './types'\n\nexport function resolveUrl(url: string, baseUrl: string | null): string {\n  // url is absolute already\n  if (url.match(/^[a-z]+:\\/\\//i)) {\n    return url\n  }\n\n  // url is absolute already, without protocol\n  if (url.match(/^\\/\\//)) {\n    return window.location.protocol + url\n  }\n\n  // dataURI, mailto:, tel:, etc.\n  if (url.match(/^[a-z]+:/i)) {\n    return url\n  }\n\n  const doc = document.implementation.createHTMLDocument()\n  const base = doc.createElement('base')\n  const a = doc.createElement('a')\n\n  doc.head.appendChild(base)\n  doc.body.appendChild(a)\n\n  if (baseUrl) {\n    base.href = baseUrl\n  }\n\n  a.href = url\n\n  return a.href\n}\n\nexport const uuid = (() => {\n  // generate uuid for className of pseudo elements.\n  // We should not use GUIDs, otherwise pseudo elements sometimes cannot be captured.\n  let counter = 0\n\n  // ref: http://stackoverflow.com/a/6248722/2519373\n  const random = () =>\n    // eslint-disable-next-line no-bitwise\n    `0000${((Math.random() * 36 ** 4) << 0).toString(36)}`.slice(-4)\n\n  return () => {\n    counter += 1\n    return `u${random()}${counter}`\n  }\n})()\n\nexport function delay<T>(ms: number) {\n  return (args: T) =>\n    new Promise<T>((resolve) => {\n      setTimeout(() => resolve(args), ms)\n    })\n}\n\nexport function toArray<T>(arrayLike: any): T[] {\n  const arr: T[] = []\n\n  for (let i = 0, l = arrayLike.length; i < l; i++) {\n    arr.push(arrayLike[i])\n  }\n\n  return arr\n}\n\nfunction px(node: HTMLElement, styleProperty: string) {\n  const win = node.ownerDocument.defaultView || window\n  const val = win.getComputedStyle(node).getPropertyValue(styleProperty)\n  return val ? parseFloat(val.replace('px', '')) : 0\n}\n\nfunction getNodeWidth(node: HTMLElement) {\n  const leftBorder = px(node, 'border-left-width')\n  const rightBorder = px(node, 'border-right-width')\n  return node.clientWidth + leftBorder + rightBorder\n}\n\nfunction getNodeHeight(node: HTMLElement) {\n  const topBorder = px(node, 'border-top-width')\n  const bottomBorder = px(node, 'border-bottom-width')\n  return node.clientHeight + topBorder + bottomBorder\n}\n\nexport function getImageSize(targetNode: HTMLElement, options: Options = {}) {\n  const width = options.width || getNodeWidth(targetNode)\n  const height = options.height || getNodeHeight(targetNode)\n\n  return { width, height }\n}\n\nexport function getPixelRatio() {\n  let ratio\n\n  let FINAL_PROCESS\n  try {\n    FINAL_PROCESS = process\n  } catch (e) {\n    // pass\n  }\n\n  const val =\n    FINAL_PROCESS && FINAL_PROCESS.env\n      ? FINAL_PROCESS.env.devicePixelRatio\n      : null\n  if (val) {\n    ratio = parseInt(val, 10)\n    if (Number.isNaN(ratio)) {\n      ratio = 1\n    }\n  }\n  return ratio || window.devicePixelRatio || 1\n}\n\n// @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas#maximum_canvas_size\nconst canvasDimensionLimit = 16384\n\nexport function checkCanvasDimensions(canvas: HTMLCanvasElement) {\n  if (\n    canvas.width > canvasDimensionLimit ||\n    canvas.height > canvasDimensionLimit\n  ) {\n    if (\n      canvas.width > canvasDimensionLimit &&\n      canvas.height > canvasDimensionLimit\n    ) {\n      if (canvas.width > canvas.height) {\n        canvas.height *= canvasDimensionLimit / canvas.width\n        canvas.width = canvasDimensionLimit\n      } else {\n        canvas.width *= canvasDimensionLimit / canvas.height\n        canvas.height = canvasDimensionLimit\n      }\n    } else if (canvas.width > canvasDimensionLimit) {\n      canvas.height *= canvasDimensionLimit / canvas.width\n      canvas.width = canvasDimensionLimit\n    } else {\n      canvas.width *= canvasDimensionLimit / canvas.height\n      canvas.height = canvasDimensionLimit\n    }\n  }\n}\n\nexport function canvasToBlob(\n  canvas: HTMLCanvasElement,\n  options: Options = {},\n): Promise<Blob | null> {\n  if (canvas.toBlob) {\n    return new Promise((resolve) => {\n      canvas.toBlob(\n        resolve,\n        options.type ? options.type : 'image/png',\n        options.quality ? options.quality : 1,\n      )\n    })\n  }\n\n  return new Promise((resolve) => {\n    const binaryString = window.atob(\n      canvas\n        .toDataURL(\n          options.type ? options.type : undefined,\n          options.quality ? options.quality : undefined,\n        )\n        .split(',')[1],\n    )\n    const len = binaryString.length\n    const binaryArray = new Uint8Array(len)\n\n    for (let i = 0; i < len; i += 1) {\n      binaryArray[i] = binaryString.charCodeAt(i)\n    }\n\n    resolve(\n      new Blob([binaryArray], {\n        type: options.type ? options.type : 'image/png',\n      }),\n    )\n  })\n}\n\nexport function createImage(url: string): Promise<HTMLImageElement> {\n  return new Promise((resolve, reject) => {\n    const img = new Image()\n    img.decode = () => resolve(img) as any\n    img.onload = () => resolve(img)\n    img.onerror = reject\n    img.crossOrigin = 'anonymous'\n    img.decoding = 'async'\n    img.src = url\n  })\n}\n\nexport async function svgToDataURL(svg: SVGElement): Promise<string> {\n  return Promise.resolve()\n    .then(() => new XMLSerializer().serializeToString(svg))\n    .then(encodeURIComponent)\n    .then((html) => `data:image/svg+xml;charset=utf-8,${html}`)\n}\n\nexport async function nodeToDataURL(\n  node: HTMLElement,\n  width: number,\n  height: number,\n): Promise<string> {\n  const xmlns = 'http://www.w3.org/2000/svg'\n  const svg = document.createElementNS(xmlns, 'svg')\n  const foreignObject = document.createElementNS(xmlns, 'foreignObject')\n\n  svg.setAttribute('width', `${width}`)\n  svg.setAttribute('height', `${height}`)\n  svg.setAttribute('viewBox', `0 0 ${width} ${height}`)\n\n  foreignObject.setAttribute('width', '100%')\n  foreignObject.setAttribute('height', '100%')\n  foreignObject.setAttribute('x', '0')\n  foreignObject.setAttribute('y', '0')\n  foreignObject.setAttribute('externalResourcesRequired', 'true')\n\n  svg.appendChild(foreignObject)\n  foreignObject.appendChild(node)\n  return svgToDataURL(svg)\n}\n\nexport const isInstanceOfElement = <\n  T extends typeof Element | typeof HTMLElement | typeof SVGImageElement,\n>(\n  node: Element | HTMLElement | SVGImageElement,\n  instance: T,\n): node is T['prototype'] => {\n  if (node instanceof instance) return true\n\n  const nodePrototype = Object.getPrototypeOf(node)\n\n  if (nodePrototype === null) return false\n\n  return (\n    nodePrototype.constructor.name === instance.name ||\n    isInstanceOfElement(nodePrototype, instance)\n  )\n}\n","import { uuid, toArray } from './util'\n\ntype Pseudo = ':before' | ':after'\n\nfunction formatCSSText(style: CSSStyleDeclaration) {\n  const content = style.getPropertyValue('content')\n  return `${style.cssText} content: '${content.replace(/'|\"/g, '')}';`\n}\n\nfunction formatCSSProperties(style: CSSStyleDeclaration) {\n  return toArray<string>(style)\n    .map((name) => {\n      const value = style.getPropertyValue(name)\n      const priority = style.getPropertyPriority(name)\n\n      return `${name}: ${value}${priority ? ' !important' : ''};`\n    })\n    .join(' ')\n}\n\nfunction getPseudoElementStyle(\n  className: string,\n  pseudo: Pseudo,\n  style: CSSStyleDeclaration,\n): Text {\n  const selector = `.${className}:${pseudo}`\n  const cssText = style.cssText\n    ? formatCSSText(style)\n    : formatCSSProperties(style)\n\n  return document.createTextNode(`${selector}{${cssText}}`)\n}\n\nfunction clonePseudoElement<T extends HTMLElement>(\n  nativeNode: T,\n  clonedNode: T,\n  pseudo: Pseudo,\n) {\n  const style = window.getComputedStyle(nativeNode, pseudo)\n  const content = style.getPropertyValue('content')\n  if (content === '' || content === 'none') {\n    return\n  }\n\n  const className = uuid()\n  try {\n    clonedNode.className = `${clonedNode.className} ${className}`\n  } catch (err) {\n    return\n  }\n\n  const styleElement = document.createElement('style')\n  styleElement.appendChild(getPseudoElementStyle(className, pseudo, style))\n  clonedNode.appendChild(styleElement)\n}\n\nexport function clonePseudoElements<T extends HTMLElement>(\n  nativeNode: T,\n  clonedNode: T,\n) {\n  clonePseudoElement(nativeNode, clonedNode, ':before')\n  clonePseudoElement(nativeNode, clonedNode, ':after')\n}\n","const WOFF = 'application/font-woff'\nconst JPEG = 'image/jpeg'\nconst mimes: { [key: string]: string } = {\n  woff: WOFF,\n  woff2: WOFF,\n  ttf: 'application/font-truetype',\n  eot: 'application/vnd.ms-fontobject',\n  png: 'image/png',\n  jpg: JPEG,\n  jpeg: JPEG,\n  gif: 'image/gif',\n  tiff: 'image/tiff',\n  svg: 'image/svg+xml',\n  webp: 'image/webp',\n}\n\nfunction getExtension(url: string): string {\n  const match = /\\.([^./]*?)$/g.exec(url)\n  return match ? match[1] : ''\n}\n\nexport function getMimeType(url: string): string {\n  const extension = getExtension(url).toLowerCase()\n  return mimes[extension] || ''\n}\n","import { Options } from './types'\n\nfunction getContentFromDataUrl(dataURL: string) {\n  return dataURL.split(/,/)[1]\n}\n\nexport function isDataUrl(url: string) {\n  return url.search(/^(data:)/) !== -1\n}\n\nexport function makeDataUrl(content: string, mimeType: string) {\n  return `data:${mimeType};base64,${content}`\n}\n\nexport async function fetchAsDataURL<T>(\n  url: string,\n  init: RequestInit | undefined,\n  process: (data: { result: string; res: Response }) => T,\n): Promise<T> {\n  const res = await fetch(url, init)\n  if (res.status === 404) {\n    throw new Error(`Resource \"${res.url}\" not found`)\n  }\n  const blob = await res.blob()\n  return new Promise<T>((resolve, reject) => {\n    const reader = new FileReader()\n    reader.onerror = reject\n    reader.onloadend = () => {\n      try {\n        resolve(process({ res, result: reader.result as string }))\n      } catch (error) {\n        reject(error)\n      }\n    }\n\n    reader.readAsDataURL(blob)\n  })\n}\n\nconst cache: { [url: string]: string } = {}\n\nfunction getCacheKey(\n  url: string,\n  contentType: string | undefined,\n  includeQueryParams: boolean | undefined,\n) {\n  let key = url.replace(/\\?.*/, '')\n\n  if (includeQueryParams) {\n    key = url\n  }\n\n  // font resource\n  if (/ttf|otf|eot|woff2?/i.test(key)) {\n    key = key.replace(/.*\\//, '')\n  }\n\n  return contentType ? `[${contentType}]${key}` : key\n}\n\nexport async function resourceToDataURL(\n  resourceUrl: string,\n  contentType: string | undefined,\n  options: Options,\n) {\n  const cacheKey = getCacheKey(\n    resourceUrl,\n    contentType,\n    options.includeQueryParams,\n  )\n\n  if (cache[cacheKey] != null) {\n    return cache[cacheKey]\n  }\n\n  // ref: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n  if (options.cacheBust) {\n    // eslint-disable-next-line no-param-reassign\n    resourceUrl += (/\\?/.test(resourceUrl) ? '&' : '?') + new Date().getTime()\n  }\n\n  let dataURL: string\n  try {\n    const content = await fetchAsDataURL(\n      resourceUrl,\n      options.fetchRequestInit,\n      ({ res, result }) => {\n        if (!contentType) {\n          // eslint-disable-next-line no-param-reassign\n          contentType = res.headers.get('Content-Type') || ''\n        }\n        return getContentFromDataUrl(result)\n      },\n    )\n    dataURL = makeDataUrl(content, contentType!)\n  } catch (error) {\n    dataURL = options.imagePlaceholder || ''\n\n    let msg = `Failed to fetch resource: ${resourceUrl}`\n    if (error) {\n      msg = typeof error === 'string' ? error : error.message\n    }\n\n    if (msg) {\n      console.warn(msg)\n    }\n  }\n\n  cache[cacheKey] = dataURL\n  return dataURL\n}\n","import type { Options } from './types'\nimport { clonePseudoElements } from './clone-pseudos'\nimport { createImage, toArray, isInstanceOfElement } from './util'\nimport { getMimeType } from './mimes'\nimport { resourceToDataURL } from './dataurl'\n\nasync function cloneCanvasElement(canvas: HTMLCanvasElement) {\n  const dataURL = canvas.toDataURL()\n  if (dataURL === 'data:,') {\n    return canvas.cloneNode(false) as HTMLCanvasElement\n  }\n  return createImage(dataURL)\n}\n\nasync function cloneVideoElement(video: HTMLVideoElement, options: Options) {\n  if (video.currentSrc) {\n    const canvas = document.createElement('canvas')\n    const ctx = canvas.getContext('2d')\n    canvas.width = video.clientWidth\n    canvas.height = video.clientHeight\n    ctx?.drawImage(video, 0, 0, canvas.width, canvas.height)\n    const dataURL = canvas.toDataURL()\n    return createImage(dataURL)\n  }\n\n  const poster = video.poster\n  const contentType = getMimeType(poster)\n  const dataURL = await resourceToDataURL(poster, contentType, options)\n  return createImage(dataURL)\n}\n\nasync function cloneIFrameElement(iframe: HTMLIFrameElement) {\n  try {\n    if (iframe?.contentDocument?.body) {\n      return (await cloneNode(\n        iframe.contentDocument.body,\n        {},\n        true,\n      )) as HTMLBodyElement\n    }\n  } catch {\n    // Failed to clone iframe\n  }\n\n  return iframe.cloneNode(false) as HTMLIFrameElement\n}\n\nasync function cloneSingleNode<T extends HTMLElement>(\n  node: T,\n  options: Options,\n): Promise<HTMLElement> {\n  if (isInstanceOfElement(node, HTMLCanvasElement)) {\n    return cloneCanvasElement(node)\n  }\n\n  if (isInstanceOfElement(node, HTMLVideoElement)) {\n    return cloneVideoElement(node, options)\n  }\n\n  if (isInstanceOfElement(node, HTMLIFrameElement)) {\n    return cloneIFrameElement(node)\n  }\n\n  return node.cloneNode(false) as T\n}\n\nconst isSlotElement = (node: HTMLElement): node is HTMLSlotElement =>\n  node.tagName != null && node.tagName.toUpperCase() === 'SLOT'\n\nasync function cloneChildren<T extends HTMLElement>(\n  nativeNode: T,\n  clonedNode: T,\n  options: Options,\n): Promise<T> {\n  let children: T[] = []\n\n  if (isSlotElement(nativeNode) && nativeNode.assignedNodes) {\n    children = toArray<T>(nativeNode.assignedNodes())\n  } else if (\n    isInstanceOfElement(nativeNode, HTMLIFrameElement) &&\n    nativeNode.contentDocument?.body\n  ) {\n    children = toArray<T>(nativeNode.contentDocument.body.childNodes)\n  } else {\n    children = toArray<T>((nativeNode.shadowRoot ?? nativeNode).childNodes)\n  }\n\n  if (\n    children.length === 0 ||\n    isInstanceOfElement(nativeNode, HTMLVideoElement)\n  ) {\n    return clonedNode\n  }\n\n  await children.reduce(\n    (deferred, child) =>\n      deferred\n        .then(() => cloneNode(child, options))\n        .then((clonedChild: HTMLElement | null) => {\n          if (clonedChild) {\n            clonedNode.appendChild(clonedChild)\n          }\n        }),\n    Promise.resolve(),\n  )\n\n  return clonedNode\n}\n\nfunction cloneCSSStyle<T extends HTMLElement>(nativeNode: T, clonedNode: T) {\n  const targetStyle = clonedNode.style\n  if (!targetStyle) {\n    return\n  }\n\n  const sourceStyle = window.getComputedStyle(nativeNode)\n  if (sourceStyle.cssText) {\n    targetStyle.cssText = sourceStyle.cssText\n    targetStyle.transformOrigin = sourceStyle.transformOrigin\n  } else {\n    toArray<string>(sourceStyle).forEach((name) => {\n      let value = sourceStyle.getPropertyValue(name)\n      if (name === 'font-size' && value.endsWith('px')) {\n        const reducedFont =\n          Math.floor(parseFloat(value.substring(0, value.length - 2))) - 0.1\n        value = `${reducedFont}px`\n      }\n\n      if (\n        isInstanceOfElement(nativeNode, HTMLIFrameElement) &&\n        name === 'display' &&\n        value === 'inline'\n      ) {\n        value = 'block'\n      }\n      \n      if (name === 'd' && clonedNode.getAttribute('d')) {\n        value = `path(${clonedNode.getAttribute('d')})`\n      }\n      \n      targetStyle.setProperty(\n        name,\n        value,\n        sourceStyle.getPropertyPriority(name),\n      )\n    })\n  }\n}\n\nfunction cloneInputValue<T extends HTMLElement>(nativeNode: T, clonedNode: T) {\n  if (isInstanceOfElement(nativeNode, HTMLTextAreaElement)) {\n    clonedNode.innerHTML = nativeNode.value\n  }\n\n  if (isInstanceOfElement(nativeNode, HTMLInputElement)) {\n    clonedNode.setAttribute('value', nativeNode.value)\n  }\n}\n\nfunction cloneSelectValue<T extends HTMLElement>(nativeNode: T, clonedNode: T) {\n  if (isInstanceOfElement(nativeNode, HTMLSelectElement)) {\n    const clonedSelect = clonedNode as any as HTMLSelectElement\n    const selectedOption = Array.from(clonedSelect.children).find(\n      (child) => nativeNode.value === child.getAttribute('value'),\n    )\n\n    if (selectedOption) {\n      selectedOption.setAttribute('selected', '')\n    }\n  }\n}\n\nfunction decorate<T extends HTMLElement>(nativeNode: T, clonedNode: T): T {\n  if (isInstanceOfElement(clonedNode, Element)) {\n    cloneCSSStyle(nativeNode, clonedNode)\n    clonePseudoElements(nativeNode, clonedNode)\n    cloneInputValue(nativeNode, clonedNode)\n    cloneSelectValue(nativeNode, clonedNode)\n  }\n\n  return clonedNode\n}\n\nasync function ensureSVGSymbols<T extends HTMLElement>(\n  clone: T,\n  options: Options,\n) {\n  const uses = clone.querySelectorAll ? clone.querySelectorAll('use') : []\n  if (uses.length === 0) {\n    return clone\n  }\n\n  const processedDefs: { [key: string]: HTMLElement } = {}\n  for (let i = 0; i < uses.length; i++) {\n    const use = uses[i]\n    const id = use.getAttribute('xlink:href')\n    if (id) {\n      const exist = clone.querySelector(id)\n      const definition = document.querySelector(id) as HTMLElement\n      if (!exist && definition && !processedDefs[id]) {\n        // eslint-disable-next-line no-await-in-loop\n        processedDefs[id] = (await cloneNode(definition, options, true))!\n      }\n    }\n  }\n\n  const nodes = Object.values(processedDefs)\n  if (nodes.length) {\n    const ns = 'http://www.w3.org/1999/xhtml'\n    const svg = document.createElementNS(ns, 'svg')\n    svg.setAttribute('xmlns', ns)\n    svg.style.position = 'absolute'\n    svg.style.width = '0'\n    svg.style.height = '0'\n    svg.style.overflow = 'hidden'\n    svg.style.display = 'none'\n\n    const defs = document.createElementNS(ns, 'defs')\n    svg.appendChild(defs)\n\n    for (let i = 0; i < nodes.length; i++) {\n      defs.appendChild(nodes[i])\n    }\n\n    clone.appendChild(svg)\n  }\n\n  return clone\n}\n\nexport async function cloneNode<T extends HTMLElement>(\n  node: T,\n  options: Options,\n  isRoot?: boolean,\n): Promise<T | null> {\n  if (!isRoot && options.filter && !options.filter(node)) {\n    return null\n  }\n\n  return Promise.resolve(node)\n    .then((clonedNode) => cloneSingleNode(clonedNode, options) as Promise<T>)\n    .then((clonedNode) => cloneChildren(node, clonedNode, options))\n    .then((clonedNode) => decorate(node, clonedNode))\n    .then((clonedNode) => ensureSVGSymbols(clonedNode, options))\n}\n","import { Options } from './types'\nimport { resolveUrl } from './util'\nimport { getMimeType } from './mimes'\nimport { isDataUrl, makeDataUrl, resourceToDataURL } from './dataurl'\n\nconst URL_REGEX = /url\\((['\"]?)([^'\"]+?)\\1\\)/g\nconst URL_WITH_FORMAT_REGEX = /url\\([^)]+\\)\\s*format\\(([\"']?)([^\"']+)\\1\\)/g\nconst FONT_SRC_REGEX = /src:\\s*(?:url\\([^)]+\\)\\s*format\\([^)]+\\)[,;]\\s*)+/g\n\nfunction toRegex(url: string): RegExp {\n  // eslint-disable-next-line no-useless-escape\n  const escaped = url.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1')\n  return new RegExp(`(url\\\\(['\"]?)(${escaped})(['\"]?\\\\))`, 'g')\n}\n\nexport function parseURLs(cssText: string): string[] {\n  const urls: string[] = []\n\n  cssText.replace(URL_REGEX, (raw, quotation, url) => {\n    urls.push(url)\n    return raw\n  })\n\n  return urls.filter((url) => !isDataUrl(url))\n}\n\nexport async function embed(\n  cssText: string,\n  resourceURL: string,\n  baseURL: string | null,\n  options: Options,\n  getContentFromUrl?: (url: string) => Promise<string>,\n): Promise<string> {\n  try {\n    const resolvedURL = baseURL ? resolveUrl(resourceURL, baseURL) : resourceURL\n    const contentType = getMimeType(resourceURL)\n    let dataURL: string\n    if (getContentFromUrl) {\n      const content = await getContentFromUrl(resolvedURL)\n      dataURL = makeDataUrl(content, contentType)\n    } else {\n      dataURL = await resourceToDataURL(resolvedURL, contentType, options)\n    }\n    return cssText.replace(toRegex(resourceURL), `$1${dataURL}$3`)\n  } catch (error) {\n    // pass\n  }\n  return cssText\n}\n\nfunction filterPreferredFontFormat(\n  str: string,\n  { preferredFontFormat }: Options,\n): string {\n  return !preferredFontFormat\n    ? str\n    : str.replace(FONT_SRC_REGEX, (match: string) => {\n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n          const [src, , format] = URL_WITH_FORMAT_REGEX.exec(match) || []\n          if (!format) {\n            return ''\n          }\n\n          if (format === preferredFontFormat) {\n            return `src: ${src};`\n          }\n        }\n      })\n}\n\nexport function shouldEmbed(url: string): boolean {\n  return url.search(URL_REGEX) !== -1\n}\n\nexport async function embedResources(\n  cssText: string,\n  baseUrl: string | null,\n  options: Options,\n): Promise<string> {\n  if (!shouldEmbed(cssText)) {\n    return cssText\n  }\n\n  const filteredCSSText = filterPreferredFontFormat(cssText, options)\n  const urls = parseURLs(filteredCSSText)\n  return urls.reduce(\n    (deferred, url) =>\n      deferred.then((css) => embed(css, url, baseUrl, options)),\n    Promise.resolve(filteredCSSText),\n  )\n}\n","import { Options } from './types'\nimport { embedResources } from './embed-resources'\nimport { toArray, isInstanceOfElement } from './util'\nimport { isDataUrl, resourceToDataURL } from './dataurl'\nimport { getMimeType } from './mimes'\n\nasync function embedProp(\n  propName: string,\n  node: HTMLElement,\n  options: Options,\n) {\n  const propValue = node.style?.getPropertyValue(propName)\n  if (propValue) {\n    const cssString = await embedResources(propValue, null, options)\n    node.style.setProperty(\n      propName,\n      cssString,\n      node.style.getPropertyPriority(propName),\n    )\n    return true\n  }\n  return false\n}\n\nasync function embedBackground<T extends HTMLElement>(\n  clonedNode: T,\n  options: Options,\n) {\n  if (!(await embedProp('background', clonedNode, options))) {\n    await embedProp('background-image', clonedNode, options)\n  }\n  if (!(await embedProp('mask', clonedNode, options))) {\n    await embedProp('mask-image', clonedNode, options)\n  }\n}\n\nasync function embedImageNode<T extends HTMLElement | SVGImageElement>(\n  clonedNode: T,\n  options: Options,\n) {\n  const isImageElement = isInstanceOfElement(clonedNode, HTMLImageElement)\n\n  if (\n    !(isImageElement && !isDataUrl(clonedNode.src)) &&\n    !(\n      isInstanceOfElement(clonedNode, SVGImageElement) &&\n      !isDataUrl(clonedNode.href.baseVal)\n    )\n  ) {\n    return\n  }\n\n  const url = isImageElement ? clonedNode.src : clonedNode.href.baseVal\n\n  const dataURL = await resourceToDataURL(url, getMimeType(url), options)\n  await new Promise((resolve, reject) => {\n    clonedNode.onload = resolve\n    clonedNode.onerror = reject\n\n    const image = clonedNode as HTMLImageElement\n    if (image.decode) {\n      image.decode = resolve as any\n    }\n\n    if (image.loading === 'lazy') {\n      image.loading = 'eager'\n    }\n\n    if (isImageElement) {\n      clonedNode.srcset = ''\n      clonedNode.src = dataURL\n    } else {\n      clonedNode.href.baseVal = dataURL\n    }\n  })\n}\n\nasync function embedChildren<T extends HTMLElement>(\n  clonedNode: T,\n  options: Options,\n) {\n  const children = toArray<HTMLElement>(clonedNode.childNodes)\n  const deferreds = children.map((child) => embedImages(child, options))\n  await Promise.all(deferreds).then(() => clonedNode)\n}\n\nexport async function embedImages<T extends HTMLElement>(\n  clonedNode: T,\n  options: Options,\n) {\n  if (isInstanceOfElement(clonedNode, Element)) {\n    await embedBackground(clonedNode, options)\n    await embedImageNode(clonedNode, options)\n    await embedChildren(clonedNode, options)\n  }\n}\n","import type { Options } from './types'\nimport { toArray } from './util'\nimport { fetchAsDataURL } from './dataurl'\nimport { shouldEmbed, embedResources } from './embed-resources'\n\ninterface Metadata {\n  url: string\n  cssText: string\n}\n\nconst cssFetchCache: { [href: string]: Metadata } = {}\n\nasync function fetchCSS(url: string) {\n  let cache = cssFetchCache[url]\n  if (cache != null) {\n    return cache\n  }\n\n  const res = await fetch(url)\n  const cssText = await res.text()\n  cache = { url, cssText }\n\n  cssFetchCache[url] = cache\n\n  return cache\n}\n\nasync function embedFonts(data: Metadata, options: Options): Promise<string> {\n  let cssText = data.cssText\n  const regexUrl = /url\\([\"']?([^\"')]+)[\"']?\\)/g\n  const fontLocs = cssText.match(/url\\([^)]+\\)/g) || []\n  const loadFonts = fontLocs.map(async (loc: string) => {\n    let url = loc.replace(regexUrl, '$1')\n    if (!url.startsWith('https://')) {\n      url = new URL(url, data.url).href\n    }\n\n    return fetchAsDataURL<[string, string]>(\n      url,\n      options.fetchRequestInit,\n      ({ result }) => {\n        cssText = cssText.replace(loc, `url(${result})`)\n        return [loc, result]\n      },\n    )\n  })\n\n  return Promise.all(loadFonts).then(() => cssText)\n}\n\nfunction parseCSS(source: string) {\n  if (source == null) {\n    return []\n  }\n\n  const result: string[] = []\n  const commentsRegex = /(\\/\\*[\\s\\S]*?\\*\\/)/gi\n  // strip out comments\n  let cssText = source.replace(commentsRegex, '')\n\n  // eslint-disable-next-line prefer-regex-literals\n  const keyframesRegex = new RegExp(\n    '((@.*?keyframes [\\\\s\\\\S]*?){([\\\\s\\\\S]*?}\\\\s*?)})',\n    'gi',\n  )\n\n  // eslint-disable-next-line no-constant-condition\n  while (true) {\n    const matches = keyframesRegex.exec(cssText)\n    if (matches === null) {\n      break\n    }\n    result.push(matches[0])\n  }\n  cssText = cssText.replace(keyframesRegex, '')\n\n  const importRegex = /@import[\\s\\S]*?url\\([^)]*\\)[\\s\\S]*?;/gi\n  // to match css & media queries together\n  const combinedCSSRegex =\n    '((\\\\s*?(?:\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)?\\\\s*?@media[\\\\s\\\\S]' +\n    '*?){([\\\\s\\\\S]*?)}\\\\s*?})|(([\\\\s\\\\S]*?){([\\\\s\\\\S]*?)})'\n  // unified regex\n  const unifiedRegex = new RegExp(combinedCSSRegex, 'gi')\n\n  // eslint-disable-next-line no-constant-condition\n  while (true) {\n    let matches = importRegex.exec(cssText)\n    if (matches === null) {\n      matches = unifiedRegex.exec(cssText)\n      if (matches === null) {\n        break\n      } else {\n        importRegex.lastIndex = unifiedRegex.lastIndex\n      }\n    } else {\n      unifiedRegex.lastIndex = importRegex.lastIndex\n    }\n    result.push(matches[0])\n  }\n\n  return result\n}\n\nasync function getCSSRules(\n  styleSheets: CSSStyleSheet[],\n  options: Options,\n): Promise<CSSStyleRule[]> {\n  const ret: CSSStyleRule[] = []\n  const deferreds: Promise<number | void>[] = []\n\n  // First loop inlines imports\n  styleSheets.forEach((sheet) => {\n    if ('cssRules' in sheet) {\n      try {\n        toArray<CSSRule>(sheet.cssRules || []).forEach((item, index) => {\n          if (item.type === CSSRule.IMPORT_RULE) {\n            let importIndex = index + 1\n            const url = (item as CSSImportRule).href\n            const deferred = fetchCSS(url)\n              .then((metadata) => embedFonts(metadata, options))\n              .then((cssText) =>\n                parseCSS(cssText).forEach((rule) => {\n                  try {\n                    sheet.insertRule(\n                      rule,\n                      rule.startsWith('@import')\n                        ? (importIndex += 1)\n                        : sheet.cssRules.length,\n                    )\n                  } catch (error) {\n                    console.error('Error inserting rule from remote css', {\n                      rule,\n                      error,\n                    })\n                  }\n                }),\n              )\n              .catch((e) => {\n                console.error('Error loading remote css', e.toString())\n              })\n\n            deferreds.push(deferred)\n          }\n        })\n      } catch (e) {\n        const inline =\n          styleSheets.find((a) => a.href == null) || document.styleSheets[0]\n        if (sheet.href != null) {\n          deferreds.push(\n            fetchCSS(sheet.href)\n              .then((metadata) => embedFonts(metadata, options))\n              .then((cssText) =>\n                parseCSS(cssText).forEach((rule) => {\n                  inline.insertRule(rule, sheet.cssRules.length)\n                }),\n              )\n              .catch((err: unknown) => {\n                console.error('Error loading remote stylesheet', err)\n              }),\n          )\n        }\n        console.error('Error inlining remote css file', e)\n      }\n    }\n  })\n\n  return Promise.all(deferreds).then(() => {\n    // Second loop parses rules\n    styleSheets.forEach((sheet) => {\n      if ('cssRules' in sheet) {\n        try {\n          toArray<CSSStyleRule>(sheet.cssRules || []).forEach((item) => {\n            ret.push(item)\n          })\n        } catch (e) {\n          console.error(`Error while reading CSS rules from ${sheet.href}`, e)\n        }\n      }\n    })\n\n    return ret\n  })\n}\n\nfunction getWebFontRules(cssRules: CSSStyleRule[]): CSSStyleRule[] {\n  return cssRules\n    .filter((rule) => rule.type === CSSRule.FONT_FACE_RULE)\n    .filter((rule) => shouldEmbed(rule.style.getPropertyValue('src')))\n}\n\nasync function parseWebFontRules<T extends HTMLElement>(\n  node: T,\n  options: Options,\n) {\n  if (node.ownerDocument == null) {\n    throw new Error('Provided element is not within a Document')\n  }\n\n  const styleSheets = toArray<CSSStyleSheet>(node.ownerDocument.styleSheets)\n  const cssRules = await getCSSRules(styleSheets, options)\n\n  return getWebFontRules(cssRules)\n}\n\nexport async function getWebFontCSS<T extends HTMLElement>(\n  node: T,\n  options: Options,\n): Promise<string> {\n  const rules = await parseWebFontRules(node, options)\n  const cssTexts = await Promise.all(\n    rules.map((rule) => {\n      const baseUrl = rule.parentStyleSheet ? rule.parentStyleSheet.href : null\n      return embedResources(rule.cssText, baseUrl, options)\n    }),\n  )\n\n  return cssTexts.join('\\n')\n}\n\nexport async function embedWebFonts<T extends HTMLElement>(\n  clonedNode: T,\n  options: Options,\n) {\n  const cssText =\n    options.fontEmbedCSS != null\n      ? options.fontEmbedCSS\n      : options.skipFonts\n      ? null\n      : await getWebFontCSS(clonedNode, options)\n\n  if (cssText) {\n    const styleNode = document.createElement('style')\n    const sytleContent = document.createTextNode(cssText)\n\n    styleNode.appendChild(sytleContent)\n\n    if (clonedNode.firstChild) {\n      clonedNode.insertBefore(styleNode, clonedNode.firstChild)\n    } else {\n      clonedNode.appendChild(styleNode)\n    }\n  }\n}\n","import { Options } from './types'\nimport { cloneNode } from './clone-node'\nimport { embedImages } from './embed-images'\nimport { applyStyle } from './apply-style'\nimport { embedWebFonts, getWebFontCSS } from './embed-webfonts'\nimport {\n  getImageSize,\n  getPixelRatio,\n  createImage,\n  canvasToBlob,\n  nodeToDataURL,\n  checkCanvasDimensions,\n} from './util'\n\nexport async function toSvg<T extends HTMLElement>(\n  node: T,\n  options: Options = {},\n): Promise<string> {\n  const { width, height } = getImageSize(node, options)\n  const clonedNode = (await cloneNode(node, options, true)) as HTMLElement\n  await embedWebFonts(clonedNode, options)\n  await embedImages(clonedNode, options)\n  applyStyle(clonedNode, options)\n  const datauri = await nodeToDataURL(clonedNode, width, height)\n  return datauri\n}\n\nexport async function toCanvas<T extends HTMLElement>(\n  node: T,\n  options: Options = {},\n): Promise<HTMLCanvasElement> {\n  const { width, height } = getImageSize(node, options)\n  const svg = await toSvg(node, options)\n  const img = await createImage(svg)\n\n  const canvas = document.createElement('canvas')\n  const context = canvas.getContext('2d')!\n  const ratio = options.pixelRatio || getPixelRatio()\n  const canvasWidth = options.canvasWidth || width\n  const canvasHeight = options.canvasHeight || height\n\n  canvas.width = canvasWidth * ratio\n  canvas.height = canvasHeight * ratio\n\n  if (!options.skipAutoScale) {\n    checkCanvasDimensions(canvas)\n  }\n  canvas.style.width = `${canvasWidth}`\n  canvas.style.height = `${canvasHeight}`\n\n  if (options.backgroundColor) {\n    context.fillStyle = options.backgroundColor\n    context.fillRect(0, 0, canvas.width, canvas.height)\n  }\n\n  context.drawImage(img, 0, 0, canvas.width, canvas.height)\n\n  return canvas\n}\n\nexport async function toPixelData<T extends HTMLElement>(\n  node: T,\n  options: Options = {},\n): Promise<Uint8ClampedArray> {\n  const { width, height } = getImageSize(node, options)\n  const canvas = await toCanvas(node, options)\n  const ctx = canvas.getContext('2d')!\n  return ctx.getImageData(0, 0, width, height).data\n}\n\nexport async function toPng<T extends HTMLElement>(\n  node: T,\n  options: Options = {},\n): Promise<string> {\n  const canvas = await toCanvas(node, options)\n  return canvas.toDataURL()\n}\n\nexport async function toJpeg<T extends HTMLElement>(\n  node: T,\n  options: Options = {},\n): Promise<string> {\n  const canvas = await toCanvas(node, options)\n  return canvas.toDataURL('image/jpeg', options.quality || 1)\n}\n\nexport async function toBlob<T extends HTMLElement>(\n  node: T,\n  options: Options = {},\n): Promise<Blob | null> {\n  const canvas = await toCanvas(node, options)\n  const blob = await canvasToBlob(canvas)\n  return blob\n}\n\nexport async function getFontEmbedCSS<T extends HTMLElement>(\n  node: T,\n  options: Options = {},\n): Promise<string> {\n  return getWebFontCSS(node, options)\n}\n","import { Options } from './types'\n\nexport function applyStyle<T extends HTMLElement>(\n  node: T,\n  options: Options,\n): T {\n  const { style } = node\n\n  if (options.backgroundColor) {\n    style.backgroundColor = options.backgroundColor\n  }\n\n  if (options.width) {\n    style.width = `${options.width}px`\n  }\n\n  if (options.height) {\n    style.height = `${options.height}px`\n  }\n\n  const manual = options.style\n  if (manual != null) {\n    Object.keys(manual).forEach((key: any) => {\n      style[key] = manual[key] as string\n    })\n  }\n\n  return node\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nexport const AlertDialog = ({ isOpen, onClose, message, isShowDes }) => {\n  const dialogRef = useRef();\n  const { t } = useTranslation(\"\");\n\n  // Close the dialog when clicking outside of it\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (dialogRef.current && !dialogRef.current.contains(event.target)) {\n        onClose(); // Call onClose if the click is outside the dialog\n      }\n    };\n\n    if (isOpen) {\n      document.addEventListener(\"mousedown\", handleClickOutside);\n    }\n\n    // Cleanup the event listener on component unmount\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [isOpen, onClose]);\n\n  if (!isOpen) return null; // Don't render if the dialog is not open\n\n  return (\n    <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50 z-50\">\n      <div\n        ref={dialogRef} // Attach the ref to the dialog\n        className=\"bg-white flex flex-col w-[95%] lg:w-1/3 items-start justify-center p-4 rounded shadow-lg\"\n      >\n        {isShowDes ? (\n          <div>\n            <h2 className=\"text-lg font-PlusJakartaSansSemiBold\">\n              Description\n            </h2>\n          </div>\n        ) : (\n          <div></div>\n        )}\n\n        <p className=\"mt-2 font-PlusJakartaSansRegular text-base\">{message}</p>\n\n        <div className=\"w-full justify-center items-center flex\">\n          <button\n            onClick={onClose}\n            className=\"mt-4 px-10 py-2 bg-mButtonColor font-PlusJakartaSansRegular text-base text-white rounded\"\n          >\n            {t(\"ok\")}\n          </button>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\n\nvar ATTRIBUTE_NAMES = {\n    BODY: \"bodyAttributes\",\n    HTML: \"htmlAttributes\",\n    TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = {\n    BASE: \"base\",\n    BODY: \"body\",\n    HEAD: \"head\",\n    HTML: \"html\",\n    LINK: \"link\",\n    META: \"meta\",\n    NOSCRIPT: \"noscript\",\n    SCRIPT: \"script\",\n    STYLE: \"style\",\n    TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n    return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = {\n    CHARSET: \"charset\",\n    CSS_TEXT: \"cssText\",\n    HREF: \"href\",\n    HTTPEQUIV: \"http-equiv\",\n    INNER_HTML: \"innerHTML\",\n    ITEM_PROP: \"itemprop\",\n    NAME: \"name\",\n    PROPERTY: \"property\",\n    REL: \"rel\",\n    SRC: \"src\",\n    TARGET: \"target\"\n};\n\nvar REACT_TAG_MAP = {\n    accesskey: \"accessKey\",\n    charset: \"charSet\",\n    class: \"className\",\n    contenteditable: \"contentEditable\",\n    contextmenu: \"contextMenu\",\n    \"http-equiv\": \"httpEquiv\",\n    itemprop: \"itemProp\",\n    tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = {\n    DEFAULT_TITLE: \"defaultTitle\",\n    DEFER: \"defer\",\n    ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n    ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n    TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n    obj[REACT_TAG_MAP[key]] = key;\n    return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\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 objectWithoutProperties = function (obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n    var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n    if (encode === false) {\n        return String(str);\n    }\n\n    return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&#x27;\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n    var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n    var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n    if (innermostTemplate && innermostTitle) {\n        // use function arg to avoid need to escape $ characters\n        return innermostTemplate.replace(/%s/g, function () {\n            return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n        });\n    }\n\n    var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n    return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n    return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n    return propsList.filter(function (props) {\n        return typeof props[tagType] !== \"undefined\";\n    }).map(function (props) {\n        return props[tagType];\n    }).reduce(function (tagAttrs, current) {\n        return _extends({}, tagAttrs, current);\n    }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n    return propsList.filter(function (props) {\n        return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n    }).map(function (props) {\n        return props[TAG_NAMES.BASE];\n    }).reverse().reduce(function (innermostBaseTag, tag) {\n        if (!innermostBaseTag.length) {\n            var keys = Object.keys(tag);\n\n            for (var i = 0; i < keys.length; i++) {\n                var attributeKey = keys[i];\n                var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n                if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n                    return innermostBaseTag.concat(tag);\n                }\n            }\n        }\n\n        return innermostBaseTag;\n    }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n    // Calculate list of tags, giving priority innermost component (end of the propslist)\n    var approvedSeenTags = {};\n\n    return propsList.filter(function (props) {\n        if (Array.isArray(props[tagName])) {\n            return true;\n        }\n        if (typeof props[tagName] !== \"undefined\") {\n            warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n        }\n        return false;\n    }).map(function (props) {\n        return props[tagName];\n    }).reverse().reduce(function (approvedTags, instanceTags) {\n        var instanceSeenTags = {};\n\n        instanceTags.filter(function (tag) {\n            var primaryAttributeKey = void 0;\n            var keys = Object.keys(tag);\n            for (var i = 0; i < keys.length; i++) {\n                var attributeKey = keys[i];\n                var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n                // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n                if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n                    primaryAttributeKey = lowerCaseAttributeKey;\n                }\n                // Special case for innerHTML which doesn't work lowercased\n                if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n                    primaryAttributeKey = attributeKey;\n                }\n            }\n\n            if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n                return false;\n            }\n\n            var value = tag[primaryAttributeKey].toLowerCase();\n\n            if (!approvedSeenTags[primaryAttributeKey]) {\n                approvedSeenTags[primaryAttributeKey] = {};\n            }\n\n            if (!instanceSeenTags[primaryAttributeKey]) {\n                instanceSeenTags[primaryAttributeKey] = {};\n            }\n\n            if (!approvedSeenTags[primaryAttributeKey][value]) {\n                instanceSeenTags[primaryAttributeKey][value] = true;\n                return true;\n            }\n\n            return false;\n        }).reverse().forEach(function (tag) {\n            return approvedTags.push(tag);\n        });\n\n        // Update seen tags with tags from this instance\n        var keys = Object.keys(instanceSeenTags);\n        for (var i = 0; i < keys.length; i++) {\n            var attributeKey = keys[i];\n            var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n            approvedSeenTags[attributeKey] = tagUnion;\n        }\n\n        return approvedTags;\n    }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n    for (var i = propsList.length - 1; i >= 0; i--) {\n        var props = propsList[i];\n\n        if (props.hasOwnProperty(property)) {\n            return props[property];\n        }\n    }\n\n    return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n    return {\n        baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n        bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n        defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n        encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n        htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n        linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n        metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n        noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n        onChangeClientState: getOnChangeClientState(propsList),\n        scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n        styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n        title: getTitleFromPropsList(propsList),\n        titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n    };\n};\n\nvar rafPolyfill = function () {\n    var clock = Date.now();\n\n    return function (callback) {\n        var currentTime = Date.now();\n\n        if (currentTime - clock > 16) {\n            clock = currentTime;\n            callback(currentTime);\n        } else {\n            setTimeout(function () {\n                rafPolyfill(callback);\n            }, 0);\n        }\n    };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n    return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n    return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n    if (_helmetCallback) {\n        cancelAnimationFrame(_helmetCallback);\n    }\n\n    if (newState.defer) {\n        _helmetCallback = requestAnimationFrame(function () {\n            commitTagChanges(newState, function () {\n                _helmetCallback = null;\n            });\n        });\n    } else {\n        commitTagChanges(newState);\n        _helmetCallback = null;\n    }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n    var baseTag = newState.baseTag,\n        bodyAttributes = newState.bodyAttributes,\n        htmlAttributes = newState.htmlAttributes,\n        linkTags = newState.linkTags,\n        metaTags = newState.metaTags,\n        noscriptTags = newState.noscriptTags,\n        onChangeClientState = newState.onChangeClientState,\n        scriptTags = newState.scriptTags,\n        styleTags = newState.styleTags,\n        title = newState.title,\n        titleAttributes = newState.titleAttributes;\n\n    updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n    updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n    updateTitle(title, titleAttributes);\n\n    var tagUpdates = {\n        baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n        linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n        metaTags: updateTags(TAG_NAMES.META, metaTags),\n        noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n        scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n        styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n    };\n\n    var addedTags = {};\n    var removedTags = {};\n\n    Object.keys(tagUpdates).forEach(function (tagType) {\n        var _tagUpdates$tagType = tagUpdates[tagType],\n            newTags = _tagUpdates$tagType.newTags,\n            oldTags = _tagUpdates$tagType.oldTags;\n\n\n        if (newTags.length) {\n            addedTags[tagType] = newTags;\n        }\n        if (oldTags.length) {\n            removedTags[tagType] = tagUpdates[tagType].oldTags;\n        }\n    });\n\n    cb && cb();\n\n    onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n    return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n    if (typeof title !== \"undefined\" && document.title !== title) {\n        document.title = flattenArray(title);\n    }\n\n    updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n    var elementTag = document.getElementsByTagName(tagName)[0];\n\n    if (!elementTag) {\n        return;\n    }\n\n    var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n    var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n    var attributesToRemove = [].concat(helmetAttributes);\n    var attributeKeys = Object.keys(attributes);\n\n    for (var i = 0; i < attributeKeys.length; i++) {\n        var attribute = attributeKeys[i];\n        var value = attributes[attribute] || \"\";\n\n        if (elementTag.getAttribute(attribute) !== value) {\n            elementTag.setAttribute(attribute, value);\n        }\n\n        if (helmetAttributes.indexOf(attribute) === -1) {\n            helmetAttributes.push(attribute);\n        }\n\n        var indexToSave = attributesToRemove.indexOf(attribute);\n        if (indexToSave !== -1) {\n            attributesToRemove.splice(indexToSave, 1);\n        }\n    }\n\n    for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n        elementTag.removeAttribute(attributesToRemove[_i]);\n    }\n\n    if (helmetAttributes.length === attributesToRemove.length) {\n        elementTag.removeAttribute(HELMET_ATTRIBUTE);\n    } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n        elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n    }\n};\n\nvar updateTags = function updateTags(type, tags) {\n    var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n    var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n    var oldTags = Array.prototype.slice.call(tagNodes);\n    var newTags = [];\n    var indexToDelete = void 0;\n\n    if (tags && tags.length) {\n        tags.forEach(function (tag) {\n            var newElement = document.createElement(type);\n\n            for (var attribute in tag) {\n                if (tag.hasOwnProperty(attribute)) {\n                    if (attribute === TAG_PROPERTIES.INNER_HTML) {\n                        newElement.innerHTML = tag.innerHTML;\n                    } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n                        if (newElement.styleSheet) {\n                            newElement.styleSheet.cssText = tag.cssText;\n                        } else {\n                            newElement.appendChild(document.createTextNode(tag.cssText));\n                        }\n                    } else {\n                        var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n                        newElement.setAttribute(attribute, value);\n                    }\n                }\n            }\n\n            newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n            // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n            if (oldTags.some(function (existingTag, index) {\n                indexToDelete = index;\n                return newElement.isEqualNode(existingTag);\n            })) {\n                oldTags.splice(indexToDelete, 1);\n            } else {\n                newTags.push(newElement);\n            }\n        });\n    }\n\n    oldTags.forEach(function (tag) {\n        return tag.parentNode.removeChild(tag);\n    });\n    newTags.forEach(function (tag) {\n        return headElement.appendChild(tag);\n    });\n\n    return {\n        oldTags: oldTags,\n        newTags: newTags\n    };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n    return Object.keys(attributes).reduce(function (str, key) {\n        var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n        return str ? str + \" \" + attr : attr;\n    }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n    var attributeString = generateElementAttributesAsString(attributes);\n    var flattenedTitle = flattenArray(title);\n    return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n    return tags.reduce(function (str, tag) {\n        var attributeHtml = Object.keys(tag).filter(function (attribute) {\n            return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n        }).reduce(function (string, attribute) {\n            var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n            return string ? string + \" \" + attr : attr;\n        }, \"\");\n\n        var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n        var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n        return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n    }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n    var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    return Object.keys(attributes).reduce(function (obj, key) {\n        obj[REACT_TAG_MAP[key] || key] = attributes[key];\n        return obj;\n    }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n    var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    return Object.keys(props).reduce(function (obj, key) {\n        obj[HTML_TAG_MAP[key] || key] = props[key];\n        return obj;\n    }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n    var _initProps;\n\n    // assigning into an array to define toString function on it\n    var initProps = (_initProps = {\n        key: title\n    }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n    var props = convertElementAttributestoReactProps(attributes, initProps);\n\n    return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n    return tags.map(function (tag, i) {\n        var _mappedTag;\n\n        var mappedTag = (_mappedTag = {\n            key: i\n        }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n\n        Object.keys(tag).forEach(function (attribute) {\n            var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n            if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n                var content = tag.innerHTML || tag.cssText;\n                mappedTag.dangerouslySetInnerHTML = { __html: content };\n            } else {\n                mappedTag[mappedAttribute] = tag[attribute];\n            }\n        });\n\n        return React.createElement(type, mappedTag);\n    });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n    switch (type) {\n        case TAG_NAMES.TITLE:\n            return {\n                toComponent: function toComponent() {\n                    return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n                },\n                toString: function toString() {\n                    return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n                }\n            };\n        case ATTRIBUTE_NAMES.BODY:\n        case ATTRIBUTE_NAMES.HTML:\n            return {\n                toComponent: function toComponent() {\n                    return convertElementAttributestoReactProps(tags);\n                },\n                toString: function toString() {\n                    return generateElementAttributesAsString(tags);\n                }\n            };\n        default:\n            return {\n                toComponent: function toComponent() {\n                    return generateTagsAsReactComponent(type, tags);\n                },\n                toString: function toString() {\n                    return generateTagsAsString(type, tags, encode);\n                }\n            };\n    }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n    var baseTag = _ref.baseTag,\n        bodyAttributes = _ref.bodyAttributes,\n        encode = _ref.encode,\n        htmlAttributes = _ref.htmlAttributes,\n        linkTags = _ref.linkTags,\n        metaTags = _ref.metaTags,\n        noscriptTags = _ref.noscriptTags,\n        scriptTags = _ref.scriptTags,\n        styleTags = _ref.styleTags,\n        _ref$title = _ref.title,\n        title = _ref$title === undefined ? \"\" : _ref$title,\n        titleAttributes = _ref.titleAttributes;\n    return {\n        base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n        bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n        htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n        link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n        meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n        noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n        script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n        style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n        title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n    };\n};\n\nvar Helmet = function Helmet(Component) {\n    var _class, _temp;\n\n    return _temp = _class = function (_React$Component) {\n        inherits(HelmetWrapper, _React$Component);\n\n        function HelmetWrapper() {\n            classCallCheck(this, HelmetWrapper);\n            return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n        }\n\n        HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n            return !isEqual(this.props, nextProps);\n        };\n\n        HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n            if (!nestedChildren) {\n                return null;\n            }\n\n            switch (child.type) {\n                case TAG_NAMES.SCRIPT:\n                case TAG_NAMES.NOSCRIPT:\n                    return {\n                        innerHTML: nestedChildren\n                    };\n\n                case TAG_NAMES.STYLE:\n                    return {\n                        cssText: nestedChildren\n                    };\n            }\n\n            throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n        };\n\n        HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n            var _babelHelpers$extends;\n\n            var child = _ref.child,\n                arrayTypeChildren = _ref.arrayTypeChildren,\n                newChildProps = _ref.newChildProps,\n                nestedChildren = _ref.nestedChildren;\n\n            return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n        };\n\n        HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n            var _babelHelpers$extends2, _babelHelpers$extends3;\n\n            var child = _ref2.child,\n                newProps = _ref2.newProps,\n                newChildProps = _ref2.newChildProps,\n                nestedChildren = _ref2.nestedChildren;\n\n            switch (child.type) {\n                case TAG_NAMES.TITLE:\n                    return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n                case TAG_NAMES.BODY:\n                    return _extends({}, newProps, {\n                        bodyAttributes: _extends({}, newChildProps)\n                    });\n\n                case TAG_NAMES.HTML:\n                    return _extends({}, newProps, {\n                        htmlAttributes: _extends({}, newChildProps)\n                    });\n            }\n\n            return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n        };\n\n        HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n            var newFlattenedProps = _extends({}, newProps);\n\n            Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n                var _babelHelpers$extends4;\n\n                newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n            });\n\n            return newFlattenedProps;\n        };\n\n        HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n            if (process.env.NODE_ENV !== \"production\") {\n                if (!VALID_TAG_NAMES.some(function (name) {\n                    return child.type === name;\n                })) {\n                    if (typeof child.type === \"function\") {\n                        return warn(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\");\n                    }\n\n                    return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n                }\n\n                if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n                    return typeof nestedChild !== \"string\";\n                }))) {\n                    throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}</\" + child.type + \"> ) Refer to our API for more information.\");\n                }\n            }\n\n            return true;\n        };\n\n        HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n            var _this2 = this;\n\n            var arrayTypeChildren = {};\n\n            React.Children.forEach(children, function (child) {\n                if (!child || !child.props) {\n                    return;\n                }\n\n                var _child$props = child.props,\n                    nestedChildren = _child$props.children,\n                    childProps = objectWithoutProperties(_child$props, [\"children\"]);\n\n                var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n                _this2.warnOnInvalidChildren(child, nestedChildren);\n\n                switch (child.type) {\n                    case TAG_NAMES.LINK:\n                    case TAG_NAMES.META:\n                    case TAG_NAMES.NOSCRIPT:\n                    case TAG_NAMES.SCRIPT:\n                    case TAG_NAMES.STYLE:\n                        arrayTypeChildren = _this2.flattenArrayTypeChildren({\n                            child: child,\n                            arrayTypeChildren: arrayTypeChildren,\n                            newChildProps: newChildProps,\n                            nestedChildren: nestedChildren\n                        });\n                        break;\n\n                    default:\n                        newProps = _this2.mapObjectTypeChildren({\n                            child: child,\n                            newProps: newProps,\n                            newChildProps: newChildProps,\n                            nestedChildren: nestedChildren\n                        });\n                        break;\n                }\n            });\n\n            newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n            return newProps;\n        };\n\n        HelmetWrapper.prototype.render = function render() {\n            var _props = this.props,\n                children = _props.children,\n                props = objectWithoutProperties(_props, [\"children\"]);\n\n            var newProps = _extends({}, props);\n\n            if (children) {\n                newProps = this.mapChildrenToProps(children, newProps);\n            }\n\n            return React.createElement(Component, newProps);\n        };\n\n        createClass(HelmetWrapper, null, [{\n            key: \"canUseDOM\",\n\n\n            // Component.peek comes from react-side-effect:\n            // For testing, you may use a static peek() method available on the returned component.\n            // It lets you get the current state without resetting the mounted instance stack.\n            // Don’t use it for anything other than testing.\n\n            /**\n             * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n             * @param {Object} bodyAttributes: {\"className\": \"root\"}\n             * @param {String} defaultTitle: \"Default Title\"\n             * @param {Boolean} defer: true\n             * @param {Boolean} encodeSpecialCharacters: true\n             * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n             * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n             * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n             * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n             * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n             * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n             * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n             * @param {String} title: \"Title\"\n             * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n             * @param {String} titleTemplate: \"MySite.com - %s\"\n             */\n            set: function set$$1(canUseDOM) {\n                Component.canUseDOM = canUseDOM;\n            }\n        }]);\n        return HelmetWrapper;\n    }(React.Component), _class.propTypes = {\n        base: PropTypes.object,\n        bodyAttributes: PropTypes.object,\n        children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n        defaultTitle: PropTypes.string,\n        defer: PropTypes.bool,\n        encodeSpecialCharacters: PropTypes.bool,\n        htmlAttributes: PropTypes.object,\n        link: PropTypes.arrayOf(PropTypes.object),\n        meta: PropTypes.arrayOf(PropTypes.object),\n        noscript: PropTypes.arrayOf(PropTypes.object),\n        onChangeClientState: PropTypes.func,\n        script: PropTypes.arrayOf(PropTypes.object),\n        style: PropTypes.arrayOf(PropTypes.object),\n        title: PropTypes.string,\n        titleAttributes: PropTypes.object,\n        titleTemplate: PropTypes.string\n    }, _class.defaultProps = {\n        defer: true,\n        encodeSpecialCharacters: true\n    }, _class.peek = Component.peek, _class.rewind = function () {\n        var mappedState = Component.rewind();\n        if (!mappedState) {\n            // provide fallback if mappedState is undefined\n            mappedState = mapStateOnServer({\n                baseTag: [],\n                bodyAttributes: {},\n                encodeSpecialCharacters: true,\n                htmlAttributes: {},\n                linkTags: [],\n                metaTags: [],\n                noscriptTags: [],\n                scriptTags: [],\n                styleTags: [],\n                title: \"\",\n                titleAttributes: {}\n            });\n        }\n\n        return mappedState;\n    }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n    return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexport default HelmetExport;\nexport { HelmetExport as Helmet };\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport Loader from \"../../Utils/Loader\";\nimport SideMenu from \"../../Components/SideMenu\";\nimport {\n  Color,\n  Images,\n  isEmptyObject,\n  isValidScore,\n  isValidScore1,\n  mTimerValue,\n  ProgressBar,\n} from \"../../Utils/Constants\";\nimport {\n  getscorecard,\n  mStartupdashboard,\n  mUploadDeckDashboard,\n} from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\n\nimport DashboardDialog from \"./DashboardDialog\";\nimport { useSelector } from \"react-redux\";\nimport HeaderMenu from \"../../Components/HeaderMenu\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport GaugeChart from \"react-gauge-chart\";\nimport PdfUploader from \"../../Components/PdfUploader\";\nimport SecondaryButton from \"../../Components/SecondaryButton\";\nimport { ReactComponent as ChatIcon } from \"../../assets/Images/ic_chat.svg\";\nimport { ReactComponent as CompanyIcon } from \"../../assets/Images/ic_company_green.svg\";\nimport { toPng } from \"html-to-image\"; // Correctly import toPng\nimport { AlertDialog } from \"../../Components/AlertDialog\";\nimport { Helmet } from \"react-helmet\";\n\nconst Dashboard = () => {\n  const { t } = useTranslation(\"\");\n  const cardRef = useRef(null);\n\n  const [imageUrl, setImageUrl] = useState(\"\");\n\n  const message = `I am happy to share my Deck review scoring provided by the theprevc.\\n Check yours now by signing up : app.theprevc.com \\n\\n #deckreview #theprevc \\n\\n`;\n\n  const navigate = useNavigate();\n  const [loading, setLoading] = useState(false);\n  const [servicesdate, setServicesData] = useState([]);\n  const [percentage, setpercentage] = useState(0);\n  const [base64, setBase64] = useState(\"\");\n  const [FileName, setFileName] = useState(\"\");\n  const [summarydetails, setSummaryDetails] = useState({});\n  const [deckdetails, setDeckdetails] = useState({});\n  const [mDeckName, setmDeckName] = useState(\"\");\n  const [mDeckId, setmDeckId] = useState(\"\");\n\n  const [balancedeck, setbalancedeck] = useState(0);\n  // Set Progressbar\n\n  const [progress, setProgress] = useState(0);\n  const [isRunning, setIsRunning] = useState(false);\n  const [showDialog, setShowDialog] = useState(false);\n  const [isOpen, setIsOpen] = useState(false);\n  const menuRef = useRef(null);\n  const [animate, setAnimate] = useState(true);\n  const user = useSelector((state) => state.userInfo.user);\n  const timerRef = useRef(null);\n  const [isHidden, setIsHidden] = useState(false);\n  const [isHiddenMsg, setisHiddenMsg] = useState(\"asfsg\");\n  const [isExtraTime, setisExtraTime] = useState(false);\n  const [isDeckstatus, setisDeckstatus] = useState(false);\n  const [Deckresponse, setDeckresponse] = useState(\"\");\n\n  //Check is subscription end or not\n\n  const [subscriptionstatus, setsubscriptionstatus] = useState(false);\n\n  // alert(\"Get User :\" + user);\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  const isClickDisbled = isRunning && progress !== 100;\n  // const isClickDisbled = true;\n\n  //\n  useEffect(() => {\n    DashboardAPICall();\n  }, []);\n\n  useEffect(() => {\n    if (deckdetails) {\n      downloadImage();\n    }\n  }, [deckdetails]);\n\n  const validateDeckReview = (deckReview) => {\n    if (deckReview === null || deckReview === undefined) {\n      // alert(\"aa\");\n      return false;\n    } else if (typeof deckReview === \"string\") {\n      //alert(\"bb\");\n      return false;\n    } else if (\n      typeof deckReview === \"object\" &&\n      !Array.isArray(deckReview) &&\n      !isEmptyObject(deckReview)\n    ) {\n      //alert(\"cc\");\n      return true;\n    } else {\n      return false;\n    }\n  };\n\n  // Dashboard API call\n  const DashboardAPICall = async () => {\n    setLoading(true);\n    const response = await mStartupdashboard({\n      user_name: UserInfoData.user_email,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n\n      setProgress(0);\n      setIsRunning(false);\n\n      if (response?.data.message.status) {\n        // if (!isEmptyObject(response?.data.message.deck_review)) {\n\n        localStorage.setItem(\n          \"SubscriptionStatus\",\n          response?.data.message.subscription_status\n        );\n        localStorage.setItem(\n          \"SubscriptionEndDate\",\n          response?.data.message.subscription_expiry_date\n        );\n        setbalancedeck(response?.data.message.balance_deck);\n        setsubscriptionstatus(response?.data.message.subscription_status);\n\n        if (validateDeckReview(response?.data.message.deck_review)) {\n          if (response?.data.message.user_last_deck.length !== 0) {\n            setmDeckName(\n              response?.data.message.user_last_deck.deck_details.deck_name\n            );\n            setmDeckId(response?.data.message.user_last_deck.deck_details.id);\n          }\n\n          setIsRunning(false);\n          setisHiddenMsg(\"\");\n          setisExtraTime(false);\n\n          setisDeckstatus(response?.data.message.deck_status);\n          setDeckresponse(response?.data.message.deck_response);\n\n          setpercentage(\n            isValidScore1(\n              response?.data.message.deck_review.summary.overall_rating\n            )\n          );\n          setDeckdetails(response?.data.message.deck_review.summary);\n\n          setSummaryDetails(response?.data.message.deck_review.summary);\n        } else {\n          setIsRunning(false);\n          setisHiddenMsg(\"\");\n          setisExtraTime(false);\n\n          setisDeckstatus(response?.data.message.deck_status);\n          setDeckresponse(response?.data.message.deck_response);\n\n          setSummaryDetails({});\n          setpercentage(0);\n          setDeckdetails({});\n        }\n\n        setServicesData(response?.data.message.our_services);\n      } else {\n        toast.error(response?.data.message.status);\n        setisExtraTime(true);\n        setIsRunning(true);\n        setProgress(0);\n\n        setisHiddenMsg(\"This deck takes some more time to process\");\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n  const [isAlertOpen, setIsAlertOpen] = useState(false);\n  const handleItemClick = (mDeck_Id) => {\n    if (!isDeckstatus) {\n      setIsAlertOpen(true);\n    } else {\n      navigate(\"/deckdetails\", {\n        state: {\n          mDeck_Id: mDeck_Id,\n        },\n      });\n    }\n  };\n\n  const closeAlert = () => setIsAlertOpen(false);\n  const Opendialog = () => {\n    // Handle the cancel action\n\n    setShowDialog(true);\n  };\n\n  const handleCancel = () => {\n    // Handle the cancel action\n    setShowDialog(false);\n  };\n\n  const handleDeckSucess = () => {\n    // Handle the cancel action\n\n    setShowDialog(false);\n    DashboardAPICall();\n  };\n\n  const handleFileSelect1 = async (file) => {\n    //  setSelectedFile(file);\n    console.log(file);\n\n    if (!file) {\n      alert(\"Please select a file first!\");\n      return;\n    }\n\n    const base64String = await convertToBase64(file);\n    setBase64(base64String);\n\n    console.log(\"Base64 String:\", base64String);\n\n    var mCropImage = \"\";\n\n    if (base64String.length === 0) {\n      mCropImage = base64String.replace(\"data:application/pdf;base64,\", \"\");\n    } else {\n      mCropImage = base64String.replace(\"data:application/pdf;base64,\", \"\");\n    }\n\n    // console.log(mCropImage);\n    setFileName(file.name);\n    setLoading(true);\n    const response = await mUploadDeckDashboard({\n      deck_name: file.name,\n      deck_doc: mCropImage,\n      user_name: UserInfoData.user_email,\n    });\n    console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        //setdeckId(response?.data.message.deck_id);\n        setIsRunning(true);\n\n        // navigate(\"/signup\", {\n        //   state: {\n        //     mdeckId: response?.data.message.deck_id,\n        //     mdeckName: file.name,\n        //   },\n        // });\n      } else {\n        toast.error(response?.data.message.message);\n        setLoading(false);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n\n      console.log(\"Error\");\n    }\n  };\n\n  //Function to convert file to Base64\n  const convertToBase64 = (file) => {\n    console.log(file);\n    return new Promise((resolve, reject) => {\n      const reader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => resolve(reader.result);\n      reader.onerror = (error) => reject(error);\n    });\n  };\n\n  const ClickChat = () => {\n    if (!isClickDisbled) {\n      navigate(\"/chat\");\n    }\n  };\n\n  const proceedClick = () => {\n    navigate(\"/service\");\n  };\n\n  // Deck upload to server start\n\n  // One min interval\n  useEffect(() => {\n    console.log(isRunning);\n    if (!isRunning) return;\n\n    console.log(\"Running\");\n\n    const intervalTime = mTimerValue / 100; // Update every 0.6 seconds (1% of 60 seconds)\n\n    const interval = setInterval(() => {\n      setProgress((prevProgress) => {\n        if (prevProgress >= 100) {\n          console.log(\"Running Working\");\n          clearInterval(interval);\n          DashboardAPICall();\n          console.log(\"Interval : \" + prevProgress);\n          return 100;\n        }\n        return prevProgress + 1;\n      });\n    }, intervalTime);\n\n    return () => clearInterval(interval);\n  }, [isRunning, isExtraTime]);\n\n  // Download Image\n  const [showPopup, setShowPopup] = useState(false);\n\n  const downloadImage = async () => {\n    if (cardRef.current === null) return;\n    toPng(cardRef.current)\n      .then((dataUrl) => {\n        setImageUrl(dataUrl.replace(\"data:image/png;base64,\", \"\"));\n        setAnimate(false);\n        const link = document.createElement(\"a\");\n        link.href = dataUrl;\n        link.download = \"deck-score-card.png\";\n        // link.click();\n        // alert(link.url);\n\n        uploadImage(dataUrl);\n      })\n      .catch((err) => console.error(\"Failed to generate image\", err));\n  };\n\n  // Download Image\n\n  const uploadImage = async (file) => {\n    const response = await getscorecard({\n      user_name: UserInfoData.user_email,\n      file_name: \"Deck Score\",\n      file_type: \"png\",\n      score_card_image: file.replace(\"data:image/png;base64,\", \"\"),\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n\n      if (response?.data.message.status) {\n        const data = response?.data.message.score_card_details;\n        toast.success(response?.data.message.message);\n\n        setImageUrl(data.file);\n        setIsHidden(true);\n        // setIsHidden(false);\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n\n    // Assuming your server returns the image URL\n  };\n\n  //const imageUrl1 = \"https://core.zenpivot.in/files/Deck_Score68af1a.png\";\n  const pageUrl = \"https://your-domain.com/share-scorecard.html\";\n  const title = \"Check out my Deck Review Score!\";\n  const description = \"Here is my scorecard from the Deck Review app!\";\n\n  <>\n    <Helmet>\n      {/* HTML Meta Tags */}\n      <meta charset=\"UTF-8\" />\n      <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\n      {/* Open Graph Meta Tags */}\n      <meta property=\"og:title\" content={title} />\n      <meta property=\"og:description\" content={description} />\n      <meta property=\"og:image\" content={imageUrl} />\n      <meta property=\"og:url\" content={pageUrl} />\n\n      {/* Twitter Card Meta Tags */}\n      <meta name=\"twitter:card\" content=\"summary_large_image\" />\n      <meta name=\"twitter:title\" content={title} />\n      <meta name=\"twitter:description\" content={description} />\n      <meta name=\"twitter:image\" content={imageUrl} />\n\n      {/* Page Title */}\n      <title>{title}</title>\n    </Helmet>\n\n    {/* Page Content */}\n  </>;\n\n  // Share view Click\n  // Click Menu open\n  const toggleMenu = () => {\n    setAnimate(false);\n    setIsOpen(!isOpen);\n  };\n\n  // Social media share URLs Twitter\n  const shareOnTwitter = () => {\n    setIsOpen(false);\n    const twitterUrl = `https://twitter.com/intent/tweet?url=${imageUrl}&text=${message} &title=${\"TEst\"}`;\n    window.open(twitterUrl, \"_blank\");\n  };\n\n  // Social media share URLs whatsapp\n  const ShareOnwhatsapp = () => {\n    setIsOpen(false);\n    // const whatsappShareUrl = `https://api.whatsapp.com/send?text=${encodeURIComponent(\n    //   message\n    // )}%20${encodeURIComponent(imageUrl)}`;\n    // window.open(whatsappShareUrl, \"_blank\");\n\n    // const pageUrl = \"https://core.zenpivot.in/files/Deck_Score68af1a.png\";\n    const whatsappUrl = `https://api.whatsapp.com/send?text=${encodeURIComponent(\n      message\n    )}%20${encodeURIComponent(imageUrl)}`;\n    window.open(whatsappUrl, \"_blank\");\n  };\n\n  // Social media share URLs Gmail\n  const shareOnMail = () => {\n    setIsOpen(false);\n    const mailtoLink = `mailto:?subject=${encodeURIComponent(\n      message\n    )}&body=${encodeURIComponent(message)}%0A%0A${encodeURIComponent(\n      imageUrl\n    )}`;\n    window.open(mailtoLink, \"_blank\");\n  };\n\n  // Social media share URLs LinkedIn\n  const shareOnLinkedIn = () => {\n    setIsOpen(false);\n\n    const linkedInShareUrl = `https://www.linkedin.com/sharing/share-offsite/?url=${imageUrl}&text=${message} `;\n    window.open(linkedInShareUrl, \"_blank\");\n  };\n\n  // Close the menu on outside click\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (menuRef.current && !menuRef.current.contains(event.target)) {\n        setIsOpen(isOpen);\n      }\n    };\n    document.addEventListener(\"mousedown\", handleClickOutside);\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [menuRef]);\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div>\n          <div\n            className=\"flex h-screen overflow-hidden bg-mDashboardBg  bg-no-repeat bg-cover\"\n            ref={menuRef}\n          >\n            {/* Sidebar */}\n            <SideMenu\n              mFrom={0}\n              OpenDialog={Opendialog}\n              mClickstatus={isClickDisbled}\n            />\n\n            {/* Main content */}\n            <div className=\"flex flex-col flex-grow overflow-hidden \">\n              {/* Top Navigation */}\n\n              <HeaderMenu\n                title={t(\"Dashboard\")}\n                mClickstatus={isClickDisbled}\n                isLoadNotification={true}\n              />\n\n              {/* Scrollable content  blur-sm*/}\n              <main className=\"flex-grow overflow-auto  mt-1 mb-3 scrollbar-hide p-4\">\n                {/* Adjusted padding top to avoid overlap */}\n\n                {isEmptyObject(summarydetails) ? (\n                  <div>\n                    <div className=\"w-full h-auto mt-5 flex flex-row\">\n                      <div className=\"w-1/2 \">\n                        <div className=\"\">\n                          <DashboardTitle label={t(\"UploadPitchDeck\")} />\n                        </div>\n                        <div className=\"mt-9\">\n                          <PdfUploader\n                            onFileSelect={handleFileSelect1}\n                            hidelogin={0}\n                            mClickstatus={isClickDisbled}\n                            isBorder={false}\n                            subscriptionstatus={subscriptionstatus}\n                            balancedeck={balancedeck}\n                          />\n                        </div>\n                      </div>\n                      <div className=\"w-1/2 ml-5 mr-3\">\n                        {isRunning ? (\n                          <div className=\"mt-10\">\n                            <ProgressBar progress={progress} />\n                            <p className=\"font-PlusJakartaSansRegular text-mTextColor font-normal text-sm mt-2\">\n                              {FileName}\n                            </p>\n\n                            <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-3\">\n                              {isHiddenMsg}\n                            </p>\n                          </div>\n                        ) : (\n                          <div>\n                            {isDeckstatus.length === 0 ? (\n                              <div></div>\n                            ) : !isDeckstatus ? (\n                              <>\n                                <div>\n                                  <div className=\"w-full justify-between flex flex-row\">\n                                    <div>\n                                      <p className=\"font-PlusJakartaSansSemiBold font-normal text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg\">\n                                        {\"Not a Pitch Deck\"}\n                                      </p>\n                                    </div>\n                                    <div\n                                      className=\"cursor-pointer \"\n                                      onClick={() => handleItemClick()}\n                                    >\n                                      <p className=\"font-PlusJakartaSansSemiBold font-normal text-mButtonColor text-xs md:text-sm lg:text-base 3xl:text-lg\">\n                                        {t(\"ViewSummary\")}\n                                      </p>\n                                    </div>\n                                  </div>\n                                </div>\n                                <div className=\"mt-5 3xl:mt-20 blur-sm\">\n                                  <div className=\"w-full h-36 mt-7 flex-row justify-center items-center py-5 flex \">\n                                    <div\n                                      className=\" w-full md:w-1/2 lg:w-3/5 h-full justify-center items-center lg:justify-start lg:items-start flex gauge-container\"\n                                      style={{\n                                        display: \"flex\",\n                                        justifyContent: \"center\",\n                                        alignItems: \"center\",\n                                      }}\n                                    >\n                                      <GaugeChart\n                                        id=\"gauge-chart-custom\"\n                                        nrOfLevels={1} // Sets the number of arc levels\n                                        arcsLength={[\n                                          percentage / 10,\n                                          1 - percentage / 10,\n                                        ]}\n                                        colors={[\n                                          Color.mButtonColor,\n                                          Color.trackColor,\n                                        ]} // Sets color for the arc\n                                        arcWidth={0.25} // Sets arc width, reduce this for thinner arcs\n                                        percent={percentage / 10} // Sets the percentage the gauge is filled\n                                        needleColor={Color.mArcColor} // Sets the needle color\n                                        needleBaseColor={Color.needleColor} // Sets the needle base color\n                                        cornerRadius={0} // Removes edge radius\n                                        arcPadding={0}\n                                        animate={animate} // Control animation\n                                        hideText={true} // Removes padding between arcs\n                                      />\n                                    </div>\n                                    <div className=\"hidden lg:flex lg:w-2/5 h-full items-center justify-center flex-row\">\n                                      <div className=\"flex-col w-[85%]\">\n                                        <p className=\"font-PlusJakartaSansSemiBold text-6xl items-center justify-center flex\">\n                                          {0}\n                                        </p>\n                                        <p className=\"ml-2  font-PlusJakartaSansRegular items-center justify-center flex font-normal text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                                          {t(\"OverallScore\")}\n                                        </p>\n                                      </div>\n                                      <div className=\"h-auto flex w-[15%] justify-start\">\n                                        {imageUrl.length === 0 ? (\n                                          <div></div>\n                                        ) : (\n                                          <div onClick={() => toggleMenu()}>\n                                            <img\n                                              src={Images.share}\n                                              alt=\"Upload Icon\"\n                                              className={`w-8 h-8 `}\n                                            />\n                                          </div>\n                                        )}\n                                      </div>\n                                    </div>\n                                  </div>\n\n                                  <div className=\"block lg:hidden h-full items-start justify-center flex-col border border-mBorderColor rounded-lg ml-3 p-4 bg-white\">\n                                    <p className=\"font-PlusJakartaSansSemiBold text-3xl  text-mTextColor\">\n                                      {0}\n                                    </p>\n                                    <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                                      {t(\"OverallScore\")}\n                                    </p>\n                                  </div>\n\n                                  <div className=\"w-full h-28 mt-5 lg:mt-10 3xl:mt-20 flex-row flex \">\n                                    <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                                      <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                                        {0}\n                                      </p>\n                                      <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                                        {t(\"Teamexperience\")}\n                                      </p>\n                                    </div>\n                                    <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                                      <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                                        {0}\n                                      </p>\n                                      <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                                        {t(\"Marketpotential\")}\n                                      </p>\n                                    </div>\n                                    <div className=\" hidden lg:block flex-1 h-full items-start justify-center  flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                                      <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                                        {0}\n                                      </p>\n                                      <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                                        {t(\"Flowandclarity\")}\n                                      </p>\n                                    </div>\n                                  </div>\n                                  <div className=\" block lg:hidden mt-4 flex-1 h-full items-start justify-center  flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                                    <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                                      {0}\n                                    </p>\n                                    <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                                      {t(\"Flowandclarity\")}\n                                    </p>\n                                  </div>\n                                </div>\n                              </>\n                            ) : (\n                              <div></div>\n                            )}\n                          </div>\n                        )}\n                      </div>\n                    </div>\n                  </div>\n                ) : (\n                  <div className=\"w-full h-auto mt-5 flex flex-col lg:flex-row\">\n                    <div className=\"w-full  lg:w-1/2 \">\n                      <div className=\"\">\n                        <DashboardTitle label={t(\"UploadPitchDeck\")} />\n                      </div>\n                      <div className=\"mt-9\">\n                        <PdfUploader\n                          onFileSelect={handleFileSelect1}\n                          hidelogin={0}\n                          mClickstatus={isClickDisbled}\n                          isBorder={false}\n                          subscriptionstatus={subscriptionstatus}\n                          balancedeck={balancedeck}\n                        />\n                      </div>\n                    </div>\n                    {isRunning ? (\n                      <div className=\"w-full  lg:w-1/2 lg:ml-5 mr-3\">\n                        {isRunning ? (\n                          <div className=\"mt-10\">\n                            <ProgressBar progress={progress} />\n                            <p className=\"font-PlusJakartaSansRegular text-mTextColor font-normal text-sm mt-2\">\n                              {FileName}\n                            </p>\n                            <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-3\">\n                              {isHiddenMsg}\n                            </p>\n                          </div>\n                        ) : (\n                          <div></div>\n                        )}\n                      </div>\n                    ) : (\n                      <div className=\"w-full mt-5 lg:mt-0 lg:w-1/2 lg:ml-5  mr-3 \">\n                        <div>\n                          <div className=\"w-full justify-between flex flex-row\">\n                            <div>\n                              <p className=\"font-PlusJakartaSansSemiBold font-normal text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg\">\n                                {/* {deckdetails.deck_name} */}\n                                {mDeckName}\n                              </p>\n                            </div>\n                            <div className=\"flex\">\n                              <div\n                                className=\"cursor-pointer h-6 justify-center items-center flex\"\n                                onClick={() => handleItemClick(mDeckId)} //deckdetails.id\n                              >\n                                <p className=\"font-PlusJakartaSansSemiBold font-normal text-mButtonColor text-xs md:text-sm lg:text-base 3xl:text-lg\">\n                                  {t(\"ViewSummary\")}\n                                </p>\n                              </div>\n                              <div\n                                className=\"ml-3 cursor-pointer\"\n                                onClick={() => toggleMenu()}\n                              >\n                                <img\n                                  src={Images.share}\n                                  alt=\"Upload Icon\"\n                                  className={`w-6 h-6 `}\n                                />\n                                {isOpen && (\n                                  <div\n                                    className=\" absolute right-3 flex rounded-sm px-3 py-2 border border-mButtonColorligth shadow-sm  bg-white\"\n                                    ref={menuRef}\n                                  >\n                                    <img\n                                      onClick={() => shareOnLinkedIn()}\n                                      src={Images.linkedin}\n                                      alt=\"Upload Icon\"\n                                      className={`w-7 h-7 cursor-pointer`}\n                                    />\n                                    <img\n                                      onClick={() => shareOnTwitter()}\n                                      src={Images.twitter}\n                                      alt=\"Upload Icon\"\n                                      className={`w-7 h-7 ml-3 cursor-pointer`}\n                                    />\n                                    <img\n                                      onClick={() => ShareOnwhatsapp()}\n                                      src={Images.whatsapp}\n                                      alt=\"Upload Icon\"\n                                      className={`w-7 h-7 ml-3 cursor-pointer`}\n                                    />\n                                    <img\n                                      onClick={() => shareOnMail()}\n                                      src={Images.gmail}\n                                      alt=\"Upload Icon\"\n                                      className={`w-7 h-7 ml-3 cursor-pointer`}\n                                    />\n                                  </div>\n                                )}\n                              </div>\n                            </div>\n                          </div>\n                        </div>\n                        <div className=\"mt-5 3xl:mt-20\">\n                          <div className=\"w-full h-36 mt-7 flex-row justify-center items-center py-5 flex \">\n                            <div\n                              className=\" w-full md:w-1/2 lg:w-3/5 h-full justify-center items-center lg:justify-start lg:items-start flex gauge-container\"\n                              style={{\n                                display: \"flex\",\n                                justifyContent: \"center\",\n                                alignItems: \"center\",\n                              }}\n                            >\n                              <GaugeChart\n                                id=\"gauge-chart-custom\"\n                                nrOfLevels={1} // Sets the number of arc levels\n                                arcsLength={[\n                                  percentage / 10,\n                                  1 - percentage / 10,\n                                ]}\n                                colors={[Color.mButtonColor, Color.trackColor]} // Sets color for the arc\n                                arcWidth={0.25} // Sets arc width, reduce this for thinner arcs\n                                percent={percentage / 10} // Sets the percentage the gauge is filled\n                                needleColor={Color.mArcColor} // Sets the needle color\n                                needleBaseColor={Color.needleColor} // Sets the needle base color\n                                cornerRadius={0} // Removes edge radius\n                                arcPadding={0}\n                                animate={animate} // Control animation\n                                hideText={true} // Removes padding between arcs\n                              />\n                            </div>\n                            <div className=\"hidden lg:flex lg:w-2/5 h-full items-center justify-center flex-row\">\n                              <div className=\"flex-col w-full\">\n                                <p className=\"font-PlusJakartaSansSemiBold text-6xl items-center justify-center flex\">\n                                  {isValidScore1(summarydetails.overall_rating)}\n                                </p>\n                                <p className=\"ml-2  font-PlusJakartaSansRegular items-center justify-center flex font-normal text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                                  {t(\"OverallScore\")}\n                                </p>\n                              </div>\n                              <div className=\"h-auto hidden  w-[15%] justify-start\">\n                                {imageUrl.length === 0 ? (\n                                  <div></div>\n                                ) : (\n                                  <div></div>\n                                )}\n                              </div>\n                            </div>\n                          </div>\n\n                          <div className=\"block lg:hidden h-full items-start justify-center flex-col border border-mBorderColor rounded-lg ml-3 p-4 bg-white\">\n                            <p className=\"font-PlusJakartaSansSemiBold text-3xl  text-mTextColor\">\n                              {isValidScore1(summarydetails.overall_rating)}\n                              {/* {\n                                  summarydetails.overall_rating\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                            </p>\n                            <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                              {t(\"OverallScore\")}\n                            </p>\n                          </div>\n\n                          <div className=\"w-full h-28 mt-5 lg:mt-10 3xl:mt-20 flex-row flex \">\n                            <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                                {isValidScore(summarydetails.team)}\n                                {/* {\n                                  summarydetails.team_exp\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                                {t(\"Teamexperience\")}\n                              </p>\n                            </div>\n                            <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                                {isValidScore(summarydetails.market_potential)}\n                                {/* {\n                                  summarydetails.market_potential\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                                {t(\"Marketpotential\")}\n                              </p>\n                            </div>\n                            <div className=\" hidden lg:block flex-1 h-full items-start justify-center  flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                                {isValidScore(\n                                  summarydetails.product_market_fit\n                                )}\n                                {/* {\n                                  summarydetails.flow_and_clarity\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                                {t(\"Flowandclarity\")}\n                              </p>\n                            </div>\n                          </div>\n                          <div className=\" block lg:hidden mt-4 flex-1 h-full items-start justify-center  flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                            <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                              {isValidScore(summarydetails.product_market_fit)}\n                              {/* {\n                                  summarydetails.flow_and_clarity\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                            </p>\n                            <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                              {t(\"Flowandclarity\")}\n                            </p>\n                          </div>\n                        </div>\n                      </div>\n                    )}\n                  </div>\n                )}\n\n                <div className=\"h-64 bg-mDashboardBg\"></div>\n\n                <div className=\"mt-5 hidden\">\n                  <DashboardTitle label={t(\"OurSpecialservices\")} />\n                  <div className=\"grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 3xl:grid-cols-4 gap-6 w-full mt-5\">\n                    {servicesdate.map((item) => (\n                      <div\n                        className=\"bg-white p-4 rounded-lg grid grid-cols-1 gap-5\"\n                        key={item.id}\n                      >\n                        <DashboardTitle label={item.service_name} />\n\n                        <div>\n                          <p className=\"font-PlusJakartaSansRegular text-base text-mTextColor\">\n                            {t(\"Description\")}\n                          </p>\n\n                          <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColor mt-1 leading-6 line-clamp-3 min-h-16\">\n                            {item.description}\n                          </p>\n                        </div>\n\n                        <DashboardTitle\n                          label={t(\"rupess\") + \" \" + item.pricing_format}\n                        />\n\n                        <SecondaryButton\n                          label={t(\"Proceed\")}\n                          onClick={proceedClick}\n                        ></SecondaryButton>\n                      </div>\n                    ))}\n                  </div>\n                </div>\n\n                <div className=\"absolute items-center justify-center hidden\">\n                  <button\n                    className={`floating-button w-[50px] h-[50px]  ${\n                      isClickDisbled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n                    }`}\n                    onClick={ClickChat}\n                  >\n                    <ChatIcon className=\"w-6 h-6  flex-shrink-0 \" />\n                    {/* You can replace this with any icon */}\n                  </button>\n                </div>\n                {/*  */}\n                {/* Create share image */}\n                {isEmptyObject(summarydetails) ? (\n                  <div></div>\n                ) : (\n                  <div\n                    ref={cardRef}\n                    className={`flex ${\n                      isHidden ? \"hidden\" : \"block\"\n                    } relative w-2/3 h-screen bg-white justify-center items-center  flex-col`}\n                  >\n                    <div className=\"absolute top-5 right-1 w-96 h-96 bg-gradient-to-l from-green-100 to-transparent rounded-full filter blur-3xl\"></div>\n                    <div className=\"absolute top-64 left-1 w-96 h-80 bg-gradient-to-r from-green-100 to-transparent rounded-full filter blur-3xl\"></div>\n\n                    <div className=\"flex  h-12 justify-center items-center\">\n                      <p className=\"text-[32px]  font-semibold leading-normal font-HelveticaNowDisplayBold text-mTextColor \">\n                        {t(\"PitchDecktxt\")}\n                      </p>\n                      <div className=\"bg-mButtonColor justify-center items-center flex px-2 ml-2\">\n                        <p className=\"text-[24px] font-semibold  font-HelveticaNowDisplayBold text-white \">\n                          {t(\"Score\")}\n                        </p>\n                      </div>\n                    </div>\n                    <div className=\"flex h-24 \">\n                      <p className=\"text-[58px]  font-semibold leading-normal font-HelveticaNowDisplayBold text-mTextColor h-[38px]\">\n                        {t(\"appname\")}\n                      </p>\n                      <p className=\"text-[58px]  font-semibold leading-normal font-HelveticaNowDisplayBold text-mButtonColor h-[38px]\">\n                        .\n                      </p>\n                    </div>\n                    <div className=\"flex mt-5\">\n                      <div className=\"flex\">\n                        <img\n                          src={Images.userImage}\n                          alt=\"Upload Icon\"\n                          className={`w-14 h-14 `}\n                        />\n\n                        <div className=\"ml-4 justify-center items-start flex flex-col\">\n                          {/* <p className=\"font-PlusJakartaSansRegular text-mTextColorLogin  text-base  \">\n                            {t(\"UserName\")}\n                          </p> */}\n                          <p className=\"font-PlusJakartaSansSemiBold text-mTextColor text-2xl  \">\n                            {UserInfoData.user_name}\n                          </p>\n                        </div>\n                      </div>\n                      <div className=\"flex ml-28\">\n                        <div className=\"w-14 h-14 justify-center items-center flex bg-mligthgreen rounded-full\">\n                          <CompanyIcon className=\"w-9 h-9  flex-shrink-0 \" />\n                        </div>\n\n                        <div className=\"ml-4 justify-center items-start flex flex-col\">\n                          {/* <p className=\"font-PlusJakartaSansRegular text-mTextColorLogin  text-base  \">\n                            {t(\"CompanyName\")}\n                          </p> */}\n                          <p className=\"font-PlusJakartaSansSemiBold text-mTextColor text-2xl  \">\n                            {UserInfoData.company_name}\n                          </p>\n                        </div>\n                      </div>\n                    </div>\n                    <div className=\"mt-5 w-full justify-center items-center flex-col flex \">\n                      <div className=\"w-2/3  h-36 mt-7 flex-row text-center justify-center items-center py-5 flex \">\n                        <div\n                          className=\" w-full md:w-1/2 lg:w-3/5 h-full justify-center items-center lg:justify-start lg:items-start flex gauge-container\"\n                          style={{\n                            display: \"flex\",\n                            justifyContent: \"center\",\n                            alignItems: \"center\",\n                          }}\n                        >\n                          <GaugeChart\n                            id=\"gauge-chart-custom\"\n                            nrOfLevels={1} // Sets the number of arc levels\n                            arcsLength={[percentage / 10, 1 - percentage / 10]}\n                            colors={[Color.mButtonColor, Color.trackColor]} // Sets color for the arc\n                            arcWidth={0.25} // Sets arc width, reduce this for thinner arcs\n                            percent={percentage / 10} // Sets the percentage the gauge is filled\n                            needleColor={Color.mArcColor} // Sets the needle color\n                            needleBaseColor={Color.needleColor} // Sets the needle base color\n                            cornerRadius={0} // Removes edge radius\n                            arcPadding={0}\n                            hideText={true} // Removes padding between arcs\n                          />\n                        </div>\n                        <div className=\" hidden lg:block lg:w-2/5 h-full items-center justify-center  flex-col \">\n                          <p className=\"font-PlusJakartaSansSemiBold text-6xl items-center justify-center flex\">\n                            {isValidScore1(summarydetails.overall_rating)}\n                            {/* {\n                                  summarydetails.overall_rating\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                          </p>\n                          <p className=\"ml-2 w-full font-PlusJakartaSansRegular items-center justify-center flex font-normal text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                            {t(\"OverallScore\")}\n                          </p>\n                        </div>\n                      </div>\n\n                      <div className=\"block lg:hidden h-full items-start justify-center flex-col border border-mBorderColor rounded-lg ml-3 p-4 bg-white\">\n                        <p className=\"font-PlusJakartaSansSemiBold text-3xl  text-mTextColor\">\n                          {isValidScore1(summarydetails.overall_rating)}\n                          {/* {\n                                  summarydetails.overall_rating\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                        </p>\n                        <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                          {t(\"OverallScore\")}\n                        </p>\n                      </div>\n\n                      <div className=\"w-3/4 h-28 mt-5 lg:mt-10 3xl:mt-20 flex-row flex \">\n                        <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                          <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                            {isValidScore(summarydetails.team)}\n                            {/* {\n                                  summarydetails.team_exp\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                          </p>\n                          <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                            {t(\"Teamexperience\")}\n                          </p>\n                        </div>\n                        <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                          <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                            {isValidScore(summarydetails.market_potential)}\n                            {/* {\n                                  summarydetails.market_potential\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                          </p>\n                          <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                            {t(\"Marketpotential\")}\n                          </p>\n                        </div>\n                        <div className=\" hidden lg:block flex-1 h-full items-start justify-center  flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                          <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                            {isValidScore(summarydetails.product_market_fit)}\n                            {/* {\n                                  summarydetails.flow_and_clarity\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                          </p>\n                          <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                            {t(\"Flowandclarity\")}\n                          </p>\n                        </div>\n                      </div>\n                      <div className=\" block lg:hidden mt-4 flex-1 h-full items-start justify-center  flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                        <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                          {isValidScore(summarydetails.product_market_fit)}\n                          {/* {\n                                  summarydetails.flow_and_clarity\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                        </p>\n                        <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base 3xl:text-lg mt-3\">\n                          {t(\"Flowandclarity\")}\n                        </p>\n                      </div>\n                    </div>\n                  </div>\n                )}\n              </main>\n            </div>\n          </div>\n\n          <AlertDialog\n            isOpen={isAlertOpen}\n            onClose={closeAlert}\n            message={Deckresponse}\n            isShowDes={true}\n          />\n\n          {showDialog ? (\n            <DashboardDialog\n              show={showDialog}\n              onClose={handleCancel}\n              onDeckSucess={handleDeckSucess}\n              Userid={UserInfoData.user_id}\n            />\n          ) : (\n            <div></div>\n          )}\n        </div>\n      )}\n    </>\n    // <div className=\"p-6\">\n    //   <div\n    //     className=\"bg-gray-200 p-10 text-center rounded-lg shadow-md\"\n    //     ref={divRef}\n    //   >\n    //     <h1 className=\"text-3xl font-bold mb-4\">Shareable Banner</h1>\n    //     <p className=\"text-lg text-gray-700\">\n    //       This content will be shared as an image!\n    //     </p>\n    //   </div>\n\n    //   <button\n    //     className=\"mt-6 bg-blue-500 text-white px-4 py-2 rounded-lg\"\n    //     onClick={handleShare}\n    //   >\n    //     Share as Image\n    //   </button>\n    // </div>\n  );\n};\n\nexport default Dashboard;\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport Loader from \"../../Utils/Loader\";\nimport {\n  getPdfURL,\n  getscoremeter,\n  mGetpdfanddownloadcount,\n  mGetslideimages,\n  mUserFeedback,\n} from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport {\n  Color,\n  Images,\n  isEmptyObject,\n  isValidScore,\n} from \"../../Utils/Constants\";\nimport { ReactComponent as ChatIcon } from \"../../assets/Images/ic_chat.svg\";\nimport { toPng } from \"html-to-image\"; // Correctly import toPng\n\nimport GaugeChart from \"react-gauge-chart\";\nimport HeaderMenu from \"../../Components/HeaderMenu\";\nimport { AlertDialog } from \"../../Components/AlertDialog\";\n\nconst Deckdetails = () => {\n  const { t } = useTranslation(\"\");\n  const navigate = useNavigate();\n  const maxChars = 300;\n  const [loading, setLoading] = useState(false);\n  const [getSlideDetails, setGetSlideDetails] = useState([]);\n  const [Postion, setPostion] = useState(0);\n  const [summarydetails, setSummaryDetails] = useState({});\n  const [deckreview, setdeckreview] = useState({});\n  const [percentage, setpercentage] = useState(0);\n  const [deckpdfurl, setDeckpdfurl] = useState(\"\");\n  const [likeselect, setLikeselect] = useState(false);\n  const [dislikeselect, setDislikeClick] = useState(false);\n  const [editOpen, seteditOpen] = useState(false);\n  const [inputValue, setInputValue] = useState(\"\");\n  const [animate, setAnimate] = useState(true);\n  const [showDialog, setShowDialog] = useState(false);\n  const [getllmResponse, setGetllmResponse] = useState(\"\");\n\n  const scoremeterRef = useRef(null);\n\n  var mSubmitClick = false;\n\n  const location = useLocation();\n  const mDeck_Id = location.state?.mDeck_Id || \"Deck-Review-0317\";\n\n  useEffect(() => {\n    downloadPDF();\n    getParticularDeck();\n  }, []);\n\n  const validateDeckReview = (deckReview) => {\n    if (deckReview === null || deckReview === undefined) {\n      // alert(\"aa\");\n      return false;\n    } else if (typeof deckReview === \"string\") {\n      //alert(\"bb\");\n      return false;\n    } else if (\n      typeof deckReview === \"object\" &&\n      !Array.isArray(deckReview) &&\n      !isEmptyObject(deckReview)\n    ) {\n      //alert(\"cc\");\n      return true;\n    } else {\n      return false;\n    }\n  };\n\n  //Get Particular Deck API call\n  const getParticularDeck = async () => {\n    setLoading(true);\n    const response = await mGetslideimages({\n      doc_name: mDeck_Id,\n      // doc_name: \"Deck-Review-0333\",\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        if (validateDeckReview(response?.data.message.deck_review)) {\n          setGetSlideDetails(response?.data.message.deck_details);\n\n          setGetllmResponse(response?.data.message.llm_response);\n          setdeckreview(response?.data.message.deck_review);\n          setSummaryDetails(response?.data.message.deck_review.summary);\n\n          setAnimate(true);\n          // setpercentage(\n          //   response?.data.message.summary_details[0].overall_rating\n          //     .split(\":\")[1]\n          //     .split(\"/\")[0] / 10\n          // );\n\n          setpercentage(\n            isValidScore(\n              response?.data.message.deck_review.summary.overall_rating\n            )\n          );\n        } else {\n          toast.error(\"Details not found\");\n        }\n        //console.log(\"API Response -> \" + serviceDetails.process_steps[0].steps);\n      } else {\n        toast.error(response?.data.message.status);\n        console.log(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  const handleItemClick = (mDeck_Id, mPostion) => {\n    setAnimate(false);\n    setPostion(mPostion);\n    setDislikeClick(false);\n    setLikeselect(false);\n    setInputValue(\"\");\n  };\n\n  const likeClick = () => {\n    seteditOpen(true);\n    setLikeselect(true);\n    setDislikeClick(false);\n    mSubmitClick = true;\n    Submit();\n  };\n\n  const dislikeClick = () => {\n    seteditOpen(true);\n    setDislikeClick(true);\n    setLikeselect(false);\n    mSubmitClick = true;\n    Submit();\n  };\n\n  const Submit = async () => {\n    const deckdetailsdata = {\n      title: getSlideDetails[Postion].slide_no,\n      user_feedback: inputValue,\n      like: likeselect ? 1 : 0,\n      dislike: dislikeselect ? 1 : 0,\n      user_feedback_status: 1,\n    };\n\n    setLoading(true);\n    const response = await mUserFeedback({\n      deck_id: mDeck_Id,\n      user_feedback: inputValue,\n      like: likeselect ? 1 : 0,\n      dislike: dislikeselect ? 1 : 0,\n      user_feedback_status: 1,\n      //deck_risk_table: JSON.stringify([deckdetailsdata]),\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n\n        if (mSubmitClick) {\n          mSubmitClick = false;\n        } else {\n          setDislikeClick(false);\n          setLikeselect(false);\n          setInputValue(\"\");\n        }\n\n        //console.log(\"API Response -> \" + serviceDetails.process_steps[0].steps);\n      } else {\n        toast.error(response?.data.message.status);\n        console.log(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  // Open PDF File\n  const openUrl = () => {\n    if (deckpdfurl.length !== 0) {\n      window.open(deckpdfurl, \"_blank\");\n      GetpdfdownloadCall(mDeck_Id);\n    }\n  };\n\n  const downloadPDF = async () => {\n    // setLoading(true);\n    const response = await getPdfURL({\n      deck_id: mDeck_Id,\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setDeckpdfurl(response?.data.message.deck_pdf);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  const GetpdfdownloadCall = async (Deck_Id) => {\n    setLoading(true);\n    const response = await mGetpdfanddownloadcount({\n      doc_name: Deck_Id,\n      pdf_downlad_count: 1,\n    });\n\n    console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n      } else {\n        toast.error(response?.data.message.message);\n        // console.log(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  const mBackClick = () => {\n    // navigate(\"/mydecks\");\n    navigate(-1); // Navigate back to the previous page\n  };\n\n  const ClickChat = () => {\n    //navigate(\"/mydecks\");\n    navigate(-1); // Navigate back to the previous page\n  };\n\n  const [isAlertOpen, setIsAlertOpen] = useState(false);\n  const [description, setdescription] = useState(\"\");\n\n  const infoclick = (description) => {\n    setAnimate(false);\n    setIsAlertOpen(true);\n    setdescription(description);\n  };\n\n  const closeAlert = () => setIsAlertOpen(false);\n\n  // Send Image to server start\n\n  useEffect(() => {\n    if (deckreview) {\n      downloadScoreCard();\n    }\n  }, [deckreview]);\n\n  const downloadScoreCard = async () => {\n    if (scoremeterRef.current === null) return;\n    toPng(scoremeterRef.current)\n      .then((dataUrl) => {\n        setAnimate(false);\n        const link = document.createElement(\"a\");\n        link.href = dataUrl;\n        link.download = \"scoremeter-card.png\";\n        // link.click();\n        // alert(link.url);\n\n        uploadScorecardImage(dataUrl);\n      })\n      .catch((err) => console.error(\"Failed to generate image\", err));\n  };\n\n  const uploadScorecardImage = async (file) => {\n    const response = await getscoremeter({\n      deck_id: mDeck_Id,\n      file_name: \"score meter\",\n      file_type: \"png\",\n      file: file.replace(\"data:image/png;base64,\", \"\"),\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n\n      if (response?.data.message.status) {\n        const data = response?.data.message.score_card_details;\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n\n    // Assuming your server returns the image URL\n  };\n\n  // Send Image to server End\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div className=\"xl:overflow-hidden overflow-auto h-screen bg-mDashboardBg fixed inset-0\">\n          <div>\n            <HeaderMenu\n              title={t(\"summary\")}\n              isShowing={true}\n              onClick={mBackClick}\n              isCallBtn={true}\n            />\n          </div>\n          <div className=\"hidden xl:block\">\n            <div className=\"h-screen flex\">\n              <div className=\"w-72 h-full overflow-y-scroll p-4 scrollbar-hide mb-2\">\n                <div className=\" mb-4 ml-3\">\n                  {getSlideDetails.map((item, i) => (\n                    <div key={item.id} className=\"mb-3 \">\n                      <div\n                        className={`${\n                          Postion === i ? \" bg-transparent\" : \"bg-white\"\n                        }  ${\n                          Postion === i ? \" border-mGreyFour\" : \"border-white\"\n                        } rounded-lg p-5 border cursor-pointer`}\n                        onClick={() => handleItemClick(item.id, i)}\n                      >\n                        <p className=\"text-left font-PlusJakartaSansRegular line-clamp-2  font-normal text-mTextColor text-sm 3xl:text-xl\">\n                          {item.title}\n                        </p>\n\n                        <div className=\"border-mGreyFour rounded-md mt-2 p-2 \">\n                          <img\n                            alt=\"name\"\n                            src={item.slide_image}\n                            className=\" \"\n                          />\n                        </div>\n                      </div>\n                      <div className=\"h-3 \"></div>\n                    </div>\n                  ))}\n                  <div className=\"h-20\"></div>\n                </div>\n              </div>\n              <div className=\"w-full h-full flex\">\n                <div className=\"w-3/5 h-full overflow-y-scroll p-4 scrollbar-hide mb-2\">\n                  <div className=\"content\">\n                    {getSlideDetails.length > 0 ? (\n                      <div>\n                        <div className=\" hidden rounded-2xl bg-white border-mBorderColor border justify-center items-center \">\n                          <div className=\"p-1\">\n                            <img\n                              alt=\"name\"\n                              src={getSlideDetails[Postion].slide_image}\n                              className=\" \"\n                            />\n                          </div>\n                        </div>\n\n                        <div className=\" rounded-2xl bg-white mt-5 p-6\">\n                          <div className=\"grid grid-cols-1 gap-7 w-full\">\n                            {/* <p className=\"text-left font-PlusJakartaSansRegular text-mTextColorLogin text-sm 3xl:text-lg mt-3\">\n                              {formatTextWithLineBreaks(getllmResponse)}\n                            </p> */}\n                            {/* <p>afashl</p> */}\n\n                            {/* {deckreview.map((item) => (\n                             \n                            ))} */}\n                            <div\n                              className=\"bg-white p-4 rounded-sm md:rounded-md lg:rounded-lg grid grid-cols-1 gap-5\"\n                              key={deckreview.id}\n                            >\n                              {deckreview.type_of_risk.map((typeofriskitem) => (\n                                <div\n                                  className=\"bg-white p-4 rounded-sm md:rounded-md lg:rounded-lg grid grid-cols-1 gap-4\"\n                                  key={deckreview.id}\n                                >\n                                  <p className=\"font-PlusJakartaSansSemiBold text-base text-mButtonColor\">\n                                    {typeofriskitem.title}\n                                    {\" ( \"}\n                                    {typeofriskitem.risk_score}\n                                    {\" ) \"}\n                                  </p>\n\n                                  <p className=\"font-PlusJakartaSansRegular text-base text-mTextColor\">\n                                    {typeofriskitem.explanation}\n                                  </p>\n\n                                  <div className=\"ml-5\">\n                                    <p className=\"font-PlusJakartaSansSemiBold text-base text-mTextColor\">\n                                      Key factors influencing\n                                    </p>\n\n                                    {/* <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\">\n                                      {typeofriskitem.key_factors_influencing}\n                                    </p> */}\n                                    <div className=\"mt-2\">\n                                      <ul className=\"list-disc pl-5 space-y-2\">\n                                        {typeofriskitem.key_factors_influencing\n                                          .split(\"\\n\")\n                                          .map((line, index) => (\n                                            <li\n                                              key={index}\n                                              className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\"\n                                            >\n                                              <p className=\"font-PlusJakartaSansRegular text-base text-mTextColorLogin mt-1\">\n                                                {\" \"}\n                                                {line.trim()}{\" \"}\n                                              </p>\n                                            </li>\n                                          ))}\n                                      </ul>\n                                    </div>\n                                  </div>\n\n                                  <div className=\"ml-5\">\n                                    <p className=\"font-PlusJakartaSansSemiBold text-base text-mTextColor\">\n                                      Strategies to manage product risk\n                                    </p>\n\n                                    {/* <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\">\n                                      {\n                                        typeofriskitem.strategies_to_manage_product_risk\n                                      }\n                                    </p> */}\n                                    <div className=\"mt-2\">\n                                      <ul className=\"list-disc pl-5 space-y-2\">\n                                        {typeofriskitem.strategies_to_manage_product_risk\n                                          .split(\"\\n\")\n                                          .map((line, index) => (\n                                            <li\n                                              key={index}\n                                              className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\"\n                                            >\n                                              <p className=\"font-PlusJakartaSansRegular text-base text-mTextColorLogin mt-1\">\n                                                {\" \"}\n                                                {line.trim()}{\" \"}\n                                              </p>\n                                            </li>\n                                          ))}\n                                      </ul>\n                                    </div>\n                                  </div>\n                                </div>\n                              ))}\n                            </div>\n\n                            <p className=\"text-left hidden font-PlusJakartaSansSemiBold text-mTextColor text-lg 3xl:text-xl\">\n                              Slide-by-slide analysis\n                            </p>\n\n                            <div>\n                              <p className=\"hidden text-left font-PlusJakartaSansRegular text-mTextColor text-base 3xl:text-xl\">\n                                {t(\"feedback\")}\n                              </p>\n\n                              <p className=\"text-left font-PlusJakartaSansRegular text-mTextColorLogin text-sm 3xl:text-lg mt-3\">\n                                {getSlideDetails[Postion].feedback}\n                              </p>\n                            </div>\n\n                            <div>\n                              <p className=\"hidden text-left font-PlusJakartaSansRegular text-mTextColor text-base 3xl:text-xl\">\n                                {t(\"suggestion\")}\n                              </p>\n\n                              <p className=\"text-left font-PlusJakartaSansRegular text-mTextColorLogin text-sm 3xl:text-lg mt-3\">\n                                {getSlideDetails[Postion].suggestion}\n                              </p>\n                            </div>\n\n                            <div className=\"\">\n                              <div className=\"w-full flex-row flex \">\n                                <div className=\"w-4/5\">\n                                  <p className=\"text-left font-PlusJakartaSansRegular text-mTextColor text-base 3xl:text-xl\">\n                                    {t(\"helpful\")}\n                                  </p>\n                                </div>\n                                <div className=\"w-1/5 justify-center items-center flex p-1\">\n                                  <div className=\"w-1/2 justify-center items-center flex\">\n                                    <img\n                                      onClick={likeClick}\n                                      src={\n                                        likeselect\n                                          ? Images.likeclick\n                                          : Images.like\n                                      }\n                                      alt=\"Upload Icon\"\n                                      className=\" w-5 h-5 cursor-pointer \"\n                                    />\n                                  </div>\n                                  <div className=\"w-1/2 justify-center items-center flex\">\n                                    <img\n                                      onClick={dislikeClick}\n                                      src={\n                                        dislikeselect\n                                          ? Images.dislikeclick\n                                          : Images.dislike\n                                      }\n                                      alt=\"Upload Icon\"\n                                      className=\" w-5 h-5  cursor-pointer\"\n                                    />\n                                  </div>\n                                </div>\n                              </div>\n\n                              {dislikeselect || likeselect ? (\n                                <div className=\"mt-5\">\n                                  <div className=\"mt-2 border border-mBorderColor rounded-md bg-mCardbgColor min-h-24\">\n                                    <textarea\n                                      id=\"message\"\n                                      rows=\"5\"\n                                      value={inputValue}\n                                      onChange={(e) =>\n                                        setInputValue(e.target.value)\n                                      }\n                                      maxLength={maxChars}\n                                      className=\"block  w-full border-black h-full text-sm 3xl:text-xl break-words text-mTextColor placeholder-mTextColorLogin px-2 py-3 text-start justify-start items-start  rounded-md   font-PlusJakartaSansRegular border-none focus:border-none  bg-mCardbgColor border-4 !outline-none\"\n                                      placeholder={\n                                        \"how can we improve? let us know.\"\n                                      }\n                                    ></textarea>\n                                  </div>\n                                  <div className=\"justify-end items-end flex \">\n                                    <p className=\"mt-2 text-mTextColorLogin font-PlusJakartaSansRegular  text-xs 3xl:text-xl\">\n                                      max: {inputValue.length} / {maxChars}\n                                    </p>\n                                  </div>\n                                  <div className=\"w-full justify-end items-start flex mt-6\">\n                                    <div className=\"w-1/3\">\n                                      <PrimaryButton\n                                        label={t(\"submit\")}\n                                        onClick={() => {\n                                          Submit();\n                                        }}\n                                      ></PrimaryButton>\n                                    </div>\n                                  </div>\n                                </div>\n                              ) : (\n                                <div></div>\n                              )}\n                            </div>\n                          </div>\n                        </div>\n                      </div>\n                    ) : (\n                      <div></div>\n                    )}\n                    <div className=\"h-20\"></div>\n                  </div>\n                </div>\n                <div className=\"w-2/5 h-full overflow-y-scroll py-4 pr-4 scrollbar-hide mb-2\">\n                  <div className=\"content\">\n                    {!isEmptyObject(summarydetails) ? (\n                      <div>\n                        <div className=\" flex flex-col w-full bg-white  rounded-2xl p-6 justify-center items-center\">\n                          <div className=\"justify-between flex-row flex w-full \">\n                            <div className=\"flex\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-mTextColor text-lg 3xl:text-2xl\">\n                                {t(\"summary\")}\n                              </p>\n                              <div\n                                className=\"ml-2 mt-1 cursor-pointer  justify-center items-center flex\"\n                                onClick={() => infoclick(summarydetails.notes)}\n                              >\n                                <img\n                                  src={Images.infobtn}\n                                  alt=\"Profile\"\n                                  className=\"cursor-pointer w-5 h-5\"\n                                />\n                                {/* <SharefileIcon className=\"w-4 h-4 md:w-6 md:h-6 mt-1 ml-1 flex-shrink-0 \" /> */}\n                              </div>\n                            </div>\n                            <div onClick={() => openUrl()}>\n                              <p className=\"font-PlusJakartaSansSemiBold text-mButtonColor text-base 3xl:text-xl cursor-pointer\">\n                                {t(\"DownloadReport\")}\n                              </p>\n                            </div>\n                          </div>\n\n                          <div className=\"w-full mt-5 flex-row justify-center items-center py-5 flex \">\n                            <div\n                              ref={scoremeterRef}\n                              className=\"w-3/5 h-full justify-start flex items-start gauge-container\"\n                              style={{\n                                display: \"flex\",\n                                justifyContent: \"center\",\n                                alignItems: \"center\",\n                              }}\n                            >\n                              <GaugeChart\n                                id=\"gauge-chart-custom\"\n                                nrOfLevels={1} // Sets the number of arc levels\n                                arcsLength={[\n                                  percentage / 10,\n                                  1 - percentage / 10,\n                                ]}\n                                colors={[Color.mButtonColor, Color.trackColor]} // Sets color for the arc\n                                arcWidth={0.25} // Sets arc width, reduce this for thinner arcs\n                                percent={percentage / 10} // Sets the percentage the gauge is filled\n                                needleColor={Color.mArcColor} // Sets the needle color\n                                needleBaseColor={Color.needleColor} // Sets the needle base color\n                                cornerRadius={0} // Removes edge radius\n                                arcPadding={0}\n                                animate={animate} // Control animation\n                                hideText={true} // Removes padding between arcs\n                              />\n                            </div>\n                            <div className=\"w-2/5 h-full items-center justify-center flex flex-col \">\n                              <p className=\"font-PlusJakartaSansSemiBold text-6xl \">\n                                {isValidScore(summarydetails.overall_rating)}\n                                {/* {\n                                  summarydetails[0].overall_rating\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-xl mt-3\">\n                                {t(\"OverallScore\")}\n                              </p>\n                            </div>\n                          </div>\n                          <div className=\"w-full h-28 mt-10 flex-row flex \">\n                            <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-3xl 3xl:text-4xl text-mTextColor\">\n                                {isValidScore(summarydetails.team)}\n                                {/* {\n                                  summarydetails[0].team_exp\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColor text-sm 3xl:text-xl mt-3\">\n                                {t(\"Teamexperience\")}\n                              </p>\n                            </div>\n                            <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-3xl 3xl:text-4xl text-mTextColor\">\n                                {isValidScore(summarydetails.market_potential)}\n                                {/* {\n                                  summarydetails[0].market_potential\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColor text-sm 3xl:text-xl mt-3\">\n                                {t(\"Marketpotential\")}\n                              </p>\n                            </div>\n                            <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-3xl 3xl:text-4xl text-mTextColor\">\n                                {isValidScore(\n                                  summarydetails.product_market_fit\n                                )}\n                                {/* {\n                                  summarydetails[0].flow_and_clarity\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColor text-sm 3xl:text-xl mt-3\">\n                                {t(\"Flowandclarity\")}\n                              </p>\n                            </div>\n                          </div>\n\n                          <div className=\"w-full h-px bg-mBorderColor mt-10\"></div>\n\n                          <div className=\"grid grid-cols-1 gap-10 w-full mt-10\">\n                            <div>\n                              <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base 3xl:text-xl text-mTextColor \">\n                                {/* {t(\"areasforimprovement\")} */}\n                                Summary\n                              </p>\n\n                              <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt- leading-6\">\n                                {summarydetails.summary}\n                              </p>\n                            </div>\n\n                            <div>\n                              <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base 3xl:text-xl text-mTextColor \">\n                                {t(\"mostpromisingaspects\")}\n                              </p>\n\n                              {/* <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\">\n                                {summarydetails.most_promising_aspects}\n                              </p> */}\n                              <ul className=\"list-disc pl-5 space-y-2\">\n                                {summarydetails.most_promising_aspects\n                                  .split(\"\\n\")\n                                  .map((line, index) => (\n                                    <li\n                                      key={index}\n                                      className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\"\n                                    >\n                                      <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\">\n                                        {\" \"}\n                                        {line.trim()}{\" \"}\n                                      </p>\n                                    </li>\n                                  ))}\n                              </ul>\n                            </div>\n\n                            <div className=\"hidden\">\n                              <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base 3xl:text-xl text-mTextColor \">\n                                {t(\"recommendations\")}\n                              </p>\n\n                              <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\">\n                                {summarydetails.notes}\n                              </p>\n                            </div>\n                          </div>\n                          <div className=\"absolute items-center justify-center flex hidden\">\n                            <button\n                              className={`floating-button w-[50px] h-[50px] 3xl:w-[70px] 3xl:h-[70px] `}\n                              onClick={ClickChat}\n                            >\n                              <ChatIcon className=\"w-6 h-6 3xl:w-8 3xl:h-8 flex-shrink-0 \" />\n                              {/* You can replace this with any icon */}\n                            </button>\n                          </div>\n                        </div>\n                      </div>\n                    ) : (\n                      <div></div>\n                    )}\n                  </div>\n                  <div className=\"h-20\"></div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div className=\"xl:hidden block  p-3 overflow-auto\">\n            <div className=\"horizontal-list\">\n              {getSlideDetails.map((item, i) => (\n                <div key={item.id} className=\"h-auto min-w-44 w-auto\">\n                  <div\n                    className={`${\n                      Postion === i ? \" bg-transparent\" : \"bg-white\"\n                    }  ${\n                      Postion === i ? \" border-mGreyFour\" : \"border-white\"\n                    } rounded-lg p-5 border cursor-pointer`}\n                    onClick={() => handleItemClick(item.id, i)}\n                  >\n                    <p\n                      className=\"text-left font-PlusJakartaSansRegular font-normal  text-mTextColor text-sm\"\n                      style={{\n                        whiteSpace: \"nowrap\",\n                        overflow: \"hidden\",\n                        textOverflow: \"ellipsis\",\n                      }}\n                    >\n                      {item.title}\n                    </p>\n\n                    <div className=\"border-mGreyFour rounded-md mt-2 p-2  \">\n                      <img alt=\"name\" src={item.slide_image} className=\" \" />\n                    </div>\n                  </div>\n                  <div className=\"h-3 \"></div>\n                </div>\n              ))}\n            </div>\n            <div className=\"content\">\n              {!isEmptyObject(summarydetails) ? (\n                <div>\n                  <div className=\" flex flex-col w-full bg-white  rounded-2xl p-6 justify-center items-center\">\n                    <div className=\"justify-between flex-row flex w-full \">\n                      <div className=\"flex\">\n                        <p className=\"font-PlusJakartaSansSemiBold text-mTextColor text-lg 3xl:text-2xl\">\n                          {t(\"summary\")}\n                        </p>\n                        <div\n                          className=\"ml-2 mt-1 cursor-pointer  justify-center items-center flex\"\n                          onClick={() => infoclick(summarydetails.notes)}\n                        >\n                          <img\n                            src={Images.infobtn}\n                            alt=\"Profile\"\n                            className=\"cursor-pointer w-5 h-5\"\n                          />\n                          {/* <SharefileIcon className=\"w-4 h-4 md:w-6 md:h-6 mt-1 ml-1 flex-shrink-0 \" /> */}\n                        </div>\n                      </div>\n                      <div onClick={() => openUrl()}>\n                        <p className=\"font-PlusJakartaSansSemiBold text-mButtonColor text-base 3xl:text-xl cursor-pointer\">\n                          {t(\"DownloadReport\")}\n                        </p>\n                      </div>\n                    </div>\n\n                    <div className=\"w-full mt-5 flex-row justify-center items-center py-5 flex \">\n                      <div\n                        className=\"w-3/5 h-full justify-start flex items-start gauge-container\"\n                        style={{\n                          display: \"flex\",\n                          justifyContent: \"center\",\n                          alignItems: \"center\",\n                        }}\n                      >\n                        <GaugeChart\n                          id=\"gauge-chart-custom\"\n                          nrOfLevels={1} // Sets the number of arc levels\n                          arcsLength={[percentage / 10, 1 - percentage / 10]}\n                          colors={[Color.mButtonColor, Color.trackColor]} // Sets color for the arc\n                          arcWidth={0.25} // Sets arc width, reduce this for thinner arcs\n                          percent={percentage / 10} // Sets the percentage the gauge is filled\n                          needleColor={Color.mArcColor} // Sets the needle color\n                          needleBaseColor={Color.needleColor} // Sets the needle base color\n                          cornerRadius={0} // Removes edge radius\n                          arcPadding={0}\n                          animate={animate} // Control animation\n                          hideText={true} // Removes padding between arcs\n                        />\n                      </div>\n                      <div className=\"w-2/5 h-full items-center justify-center flex flex-col \">\n                        <p className=\"font-PlusJakartaSansSemiBold text-6xl \">\n                          {isValidScore(summarydetails.overall_rating)}\n                          {/* {\n                                  summarydetails[0].overall_rating\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                        </p>\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-xl mt-3\">\n                          {t(\"OverallScore\")}\n                        </p>\n                      </div>\n                    </div>\n                    <div className=\"w-full h-28 mt-10 flex-row flex \">\n                      <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                        <p className=\"font-PlusJakartaSansSemiBold text-3xl 3xl:text-4xl text-mTextColor\">\n                          {isValidScore(summarydetails.team)}\n                          {/* {\n                                  summarydetails[0].team_exp\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                        </p>\n                        <p className=\"font-PlusJakartaSansRegular text-mTextColor text-sm 3xl:text-xl mt-3\">\n                          {t(\"Teamexperience\")}\n                        </p>\n                      </div>\n                      <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                        <p className=\"font-PlusJakartaSansSemiBold text-3xl 3xl:text-4xl text-mTextColor\">\n                          {isValidScore(summarydetails.market_potential)}\n                          {/* {\n                                  summarydetails[0].market_potential\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                        </p>\n                        <p className=\"font-PlusJakartaSansRegular text-mTextColor text-sm 3xl:text-xl mt-3\">\n                          {t(\"Marketpotential\")}\n                        </p>\n                      </div>\n                      <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                        <p className=\"font-PlusJakartaSansSemiBold text-3xl 3xl:text-4xl text-mTextColor\">\n                          {isValidScore(summarydetails.product_market_fit)}\n                          {/* {\n                                  summarydetails[0].flow_and_clarity\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                        </p>\n                        <p className=\"font-PlusJakartaSansRegular text-mTextColor text-sm 3xl:text-xl mt-3\">\n                          {t(\"Flowandclarity\")}\n                        </p>\n                      </div>\n                    </div>\n\n                    <div className=\"w-full h-px bg-mBorderColor mt-10\"></div>\n\n                    <div className=\"grid grid-cols-1 gap-10 w-full mt-10\">\n                      <div>\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base 3xl:text-xl text-mTextColor \">\n                          {/* {t(\"areasforimprovement\")} */}\n                          Summary\n                        </p>\n\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt- leading-6\">\n                          {summarydetails.summary}\n                        </p>\n                      </div>\n\n                      <div>\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base 3xl:text-xl text-mTextColor \">\n                          {t(\"mostpromisingaspects\")}\n                        </p>\n\n                        {/* <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\">\n                          {summarydetails.most_promising_aspects}\n                         \n                        </p> */}\n\n                        <ul className=\"list-disc pl-5 space-y-2\">\n                          {summarydetails.most_promising_aspects\n                            .split(\"\\n\")\n                            .map((line, index) => (\n                              <li\n                                key={index}\n                                className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\"\n                              >\n                                <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\">\n                                  {\" \"}\n                                  {line.trim()}{\" \"}\n                                </p>\n                              </li>\n                            ))}\n                        </ul>\n                      </div>\n\n                      <div className=\"hidden\">\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base 3xl:text-xl text-mTextColor \">\n                          {t(\"recommendations\")}\n                        </p>\n\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\">\n                          {summarydetails.notes}\n                        </p>\n                      </div>\n                    </div>\n                    <div className=\"absolute items-center justify-center flex hidden\">\n                      <button\n                        className={`floating-button w-[50px] h-[50px] 3xl:w-[70px] 3xl:h-[70px] `}\n                        onClick={ClickChat}\n                      >\n                        <ChatIcon className=\"w-6 h-6 3xl:w-8 3xl:h-8 flex-shrink-0 \" />\n                        {/* You can replace this with any icon */}\n                      </button>\n                    </div>\n                  </div>\n                </div>\n              ) : (\n                <div></div>\n              )}\n            </div>\n            <div className=\"mt-3 overflow-auto overflow-y-auto\">\n              <div className=\"content\">\n                {getSlideDetails.length > 0 ? (\n                  <div>\n                    {/* <div className=\" rounded-2xl bg-white border-mBorderColor border\">\n                      <div className=\"p-1\">\n                        <img\n                          alt=\"name\"\n                          src={getSlideDetails[Postion].slide_image}\n                          className=\" \"\n                        />\n                      </div>\n                    </div> */}\n\n                    <div className=\" rounded-2xl bg-white mt-5 p-6 overflow-auto\">\n                      <div className=\"grid grid-cols-1 gap-7 w-full\">\n                        {/* <p className=\"text-left font-PlusJakartaSansRegular text-mTextColorLogin text-sm 3xl:text-lg mt-3\">\n                          {formatTextWithLineBreaks(getllmResponse)}\n                        </p> */}\n\n                        <div\n                          className=\"bg-white p-4 rounded-sm md:rounded-md lg:rounded-lg grid grid-cols-1 gap-5\"\n                          key={deckreview.id}\n                        >\n                          {deckreview.type_of_risk.map((typeofriskitem) => (\n                            <div\n                              className=\"bg-white p-4 rounded-sm md:rounded-md lg:rounded-lg grid grid-cols-1 gap-4\"\n                              key={deckreview.id}\n                            >\n                              <p className=\"font-PlusJakartaSansSemiBold text-base text-mButtonColor\">\n                                {typeofriskitem.title}\n                                {\" ( \"}\n                                {typeofriskitem.risk_score}\n                                {\" ) \"}\n                              </p>\n\n                              <p className=\"font-PlusJakartaSansRegular text-base text-mTextColor\">\n                                {typeofriskitem.explanation}\n                              </p>\n\n                              <div className=\"ml-5 mt-3\">\n                                <p className=\"font-PlusJakartaSansSemiBold text-base text-mTextColor\">\n                                  Key factors influencing\n                                </p>\n\n                                {/* <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\">\n                                      {typeofriskitem.key_factors_influencing}\n\n                                     \n                                    </p> */}\n                                <div className=\"mt-2\">\n                                  <ul className=\"list-disc pl-5 space-y-2\">\n                                    {typeofriskitem.key_factors_influencing\n                                      .split(\"\\n\")\n                                      .map((line, index) => (\n                                        <li\n                                          key={index}\n                                          className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\"\n                                        >\n                                          <p className=\"font-PlusJakartaSansRegular text-base text-mTextColorLogin mt-1\">\n                                            {\" \"}\n                                            {line.trim()}{\" \"}\n                                          </p>\n                                        </li>\n                                      ))}\n                                  </ul>\n                                </div>\n                              </div>\n\n                              <div className=\"ml-5\">\n                                <p className=\"font-PlusJakartaSansSemiBold text-base text-mTextColor\">\n                                  Strategies to manage product risk\n                                </p>\n\n                                {/* <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\">\n                                      {\n                                        typeofriskitem.strategies_to_manage_product_risk\n                                      }\n                                    </p> */}\n                                <div className=\"mt-2\">\n                                  <ul className=\"list-disc pl-5 space-y-2\">\n                                    {typeofriskitem.strategies_to_manage_product_risk\n                                      .split(\"\\n\")\n                                      .map((line, index) => (\n                                        <li\n                                          key={index}\n                                          className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\"\n                                        >\n                                          <p className=\"font-PlusJakartaSansRegular text-base text-mTextColorLogin mt-1\">\n                                            {\" \"}\n                                            {line.trim()}{\" \"}\n                                          </p>\n                                        </li>\n                                      ))}\n                                  </ul>\n                                </div>\n                              </div>\n                            </div>\n                          ))}\n                        </div>\n\n                        <p className=\"hidden text-left font-PlusJakartaSansSemiBold text-mTextColor text-lg\">\n                          Slide-by-slide analysis\n                        </p>\n\n                        <div>\n                          <p className=\"text-left hidden font-PlusJakartaSansRegular text-mTextColor text-base\">\n                            {t(\"feedback\")}\n                          </p>\n\n                          <p className=\"text-left font-PlusJakartaSansRegular text-mTextColorLogin text-sm mt-3 hidden\">\n                            {getSlideDetails[Postion].feedback}\n                          </p>\n                        </div>\n\n                        <div>\n                          <p className=\"text-left font-PlusJakartaSansRegular text-mTextColor text-base hidden\">\n                            {t(\"suggestion\")}\n                          </p>\n\n                          <p className=\"text-left font-PlusJakartaSansRegular text-mTextColorLogin text-sm mt-3 hidden\">\n                            {getSlideDetails[Postion].suggestion}\n                          </p>\n                        </div>\n\n                        <div className=\"\">\n                          <div className=\"w-full flex-row flex \">\n                            <div className=\"w-3/4\">\n                              <p className=\"text-left font-PlusJakartaSansRegular text-mTextColor text-base \">\n                                {t(\"helpful\")}\n                              </p>\n                            </div>\n                            <div className=\"w-1/4 justify-center items-center flex p-1\">\n                              <div className=\"w-1/2 justify-center items-center flex\">\n                                <img\n                                  onClick={likeClick}\n                                  src={\n                                    likeselect ? Images.likeclick : Images.like\n                                  }\n                                  alt=\"Upload Icon\"\n                                  className=\" w-4 h-4 cursor-pointer \"\n                                />\n                              </div>\n                              <div className=\"w-1/2 justify-center items-center flex\">\n                                <img\n                                  onClick={dislikeClick}\n                                  src={\n                                    dislikeselect\n                                      ? Images.dislikeclick\n                                      : Images.dislike\n                                  }\n                                  alt=\"Upload Icon\"\n                                  className=\" w-4 h-4 cursor-pointer\"\n                                />\n                              </div>\n                            </div>\n                          </div>\n\n                          {dislikeselect || likeselect ? (\n                            <div className=\"mt-5\">\n                              <div className=\"mt-2 border border-mBorderColor rounded-md bg-mCardbgColor h-24\">\n                                <textarea\n                                  id=\"message\"\n                                  rows=\"5\"\n                                  value={inputValue}\n                                  onChange={(e) =>\n                                    setInputValue(e.target.value)\n                                  }\n                                  maxLength={maxChars}\n                                  className=\"block  w-full border-black h-full text-sm break-words text-mTextColor placeholder-mTextColorLogin px-2 py-3 text-start justify-start items-start  rounded-md   font-PlusJakartaSansRegular border-none focus:border-none  bg-mCardbgColor border-4 !outline-none\"\n                                  placeholder={\n                                    \"how can we improve? let us know.\"\n                                  }\n                                ></textarea>\n                              </div>\n                              <div className=\"justify-end items-end flex \">\n                                <p className=\"mt-2 text-mTextColorLogin font-PlusJakartaSansRegular  text-xs\">\n                                  max: {inputValue.length} / {maxChars}\n                                </p>\n                              </div>\n                              <div className=\"w-full justify-end items-start flex mt-6\">\n                                <div className=\"w-1/2\">\n                                  <PrimaryButton\n                                    label={t(\"submit\")}\n                                    onClick={() => {\n                                      Submit();\n                                    }}\n                                  ></PrimaryButton>\n                                </div>\n                              </div>\n                            </div>\n                          ) : (\n                            <div></div>\n                          )}\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                ) : (\n                  <div></div>\n                )}\n                <div className=\"h-4\"></div>\n              </div>\n            </div>\n\n            <div className=\"w-full h-full overflow-y-scroll  pr-2 scrollbar-hide \">\n              <div className=\"content\"></div>\n              <div className=\"h-20\"></div>\n            </div>\n          </div>\n          <AlertDialog\n            isOpen={isAlertOpen}\n            onClose={closeAlert}\n            message={description}\n            isShowDes={true}\n          />\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default Deckdetails;\n","import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { mGetallMaster } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\n\nexport const fetchMasterData = createAsyncThunk(\"masterSlice\", async () => {\n  // Call Master data\n  const response = await mGetallMaster();\n  if (response.status === 200) {\n    if (response?.data.message.status) {\n      return response?.data.message;\n    } else {\n      return response?.data.message.status;\n    }\n  } else {\n    const errorMessage = response.data?.message || \"Server Error\";\n    toast.error(errorMessage);\n    console.log(\"Error\");\n  }\n});\n\n// Create Master list Slice\nconst masterSlice = createSlice({\n  name: \"masterSlice\",\n  initialState: {\n    MasterdataList: {},\n    status: \"idle\", // 'idle', 'loading', 'succeeded', 'failed'\n    error: null,\n  },\n  reducers: {},\n  extraReducers: (builder) => {\n    builder\n      .addCase(fetchMasterData.pending, (state) => {\n        state.status = \"loading\";\n      })\n      .addCase(fetchMasterData.fulfilled, (state, action) => {\n        state.status = \"succeeded\";\n        state.MasterdataList = action.payload.master_data;\n      })\n      .addCase(fetchMasterData.rejected, (state, action) => {\n        state.status = \"failed\";\n        state.error = action.payload.status;\n      });\n  },\n});\n\nexport default masterSlice.reducer;\n","import { configureStore } from \"@reduxjs/toolkit\";\nimport userReducer from \"../redux/slice/userSlice\";\nimport masterSlice from \"./slice/masterSlice\";\n\n//configure the store\nexport const store = configureStore({\n  reducer: {\n    userInfo: userReducer,\n    master: masterSlice,\n  },\n});\n\nexport default store;\n","import { formatProdErrorMessage as _formatProdErrorMessage, formatProdErrorMessage as _formatProdErrorMessage2, formatProdErrorMessage as _formatProdErrorMessage3, formatProdErrorMessage as _formatProdErrorMessage4, formatProdErrorMessage as _formatProdErrorMessage5, formatProdErrorMessage as _formatProdErrorMessage6, formatProdErrorMessage as _formatProdErrorMessage7 } from \"@reduxjs/toolkit\";\nimport type { Reducer, ReducersMapObject, Middleware, Action, StoreEnhancer, Store, UnknownAction } from 'redux';\nimport { applyMiddleware, createStore, compose, combineReducers, isPlainObject } from 'redux';\nimport type { DevToolsEnhancerOptions as DevToolsOptions } from './devtoolsExtension';\nimport { composeWithDevTools } from './devtoolsExtension';\nimport type { ThunkMiddlewareFor, GetDefaultMiddleware } from './getDefaultMiddleware';\nimport { buildGetDefaultMiddleware } from './getDefaultMiddleware';\nimport type { ExtractDispatchExtensions, ExtractStoreExtensions, ExtractStateExtensions, UnknownIfNonSpecific } from './tsHelpers';\nimport type { Tuple } from './utils';\nimport type { GetDefaultEnhancers } from './getDefaultEnhancers';\nimport { buildGetDefaultEnhancers } from './getDefaultEnhancers';\n\n/**\n * Options for `configureStore()`.\n *\n * @public\n */\nexport interface ConfigureStoreOptions<S = any, A extends Action = UnknownAction, M extends Tuple<Middlewares<S>> = Tuple<Middlewares<S>>, E extends Tuple<Enhancers> = Tuple<Enhancers>, P = S> {\n  /**\n   * A single reducer function that will be used as the root reducer, or an\n   * object of slice reducers that will be passed to `combineReducers()`.\n   */\n  reducer: Reducer<S, A, P> | ReducersMapObject<S, A, P>;\n\n  /**\n   * An array of Redux middleware to install, or a callback receiving `getDefaultMiddleware` and returning a Tuple of middleware.\n   * If not supplied, defaults to the set of middleware returned by `getDefaultMiddleware()`.\n   *\n   * @example `middleware: (gDM) => gDM().concat(logger, apiMiddleware, yourCustomMiddleware)`\n   * @see https://redux-toolkit.js.org/api/getDefaultMiddleware#intended-usage\n   */\n  middleware?: (getDefaultMiddleware: GetDefaultMiddleware<S>) => M;\n\n  /**\n   * Whether to enable Redux DevTools integration. Defaults to `true`.\n   *\n   * Additional configuration can be done by passing Redux DevTools options\n   */\n  devTools?: boolean | DevToolsOptions;\n\n  /**\n   * The initial state, same as Redux's createStore.\n   * You may optionally specify it to hydrate the state\n   * from the server in universal apps, or to restore a previously serialized\n   * user session. If you use `combineReducers()` to produce the root reducer\n   * function (either directly or indirectly by passing an object as `reducer`),\n   * this must be an object with the same shape as the reducer map keys.\n   */\n  // we infer here, and instead complain if the reducer doesn't match\n  preloadedState?: P;\n\n  /**\n   * The store enhancers to apply. See Redux's `createStore()`.\n   * All enhancers will be included before the DevTools Extension enhancer.\n   * If you need to customize the order of enhancers, supply a callback\n   * function that will receive a `getDefaultEnhancers` function that returns a Tuple,\n   * and should return a Tuple of enhancers (such as `getDefaultEnhancers().concat(offline)`).\n   * If you only need to add middleware, you can use the `middleware` parameter instead.\n   */\n  enhancers?: (getDefaultEnhancers: GetDefaultEnhancers<M>) => E;\n}\nexport type Middlewares<S> = ReadonlyArray<Middleware<{}, S>>;\ntype Enhancers = ReadonlyArray<StoreEnhancer>;\n\n/**\n * A Redux store returned by `configureStore()`. Supports dispatching\n * side-effectful _thunks_ in addition to plain actions.\n *\n * @public\n */\nexport type EnhancedStore<S = any, A extends Action = UnknownAction, E extends Enhancers = Enhancers> = ExtractStoreExtensions<E> & Store<S, A, UnknownIfNonSpecific<ExtractStateExtensions<E>>>;\n\n/**\n * A friendly abstraction over the standard Redux `createStore()` function.\n *\n * @param options The store configuration.\n * @returns A configured Redux store.\n *\n * @public\n */\nexport function configureStore<S = any, A extends Action = UnknownAction, M extends Tuple<Middlewares<S>> = Tuple<[ThunkMiddlewareFor<S>]>, E extends Tuple<Enhancers> = Tuple<[StoreEnhancer<{\n  dispatch: ExtractDispatchExtensions<M>;\n}>, StoreEnhancer]>, P = S>(options: ConfigureStoreOptions<S, A, M, E, P>): EnhancedStore<S, A, E> {\n  const getDefaultMiddleware = buildGetDefaultMiddleware<S>();\n  const {\n    reducer = undefined,\n    middleware,\n    devTools = true,\n    preloadedState = undefined,\n    enhancers = undefined\n  } = options || {};\n  let rootReducer: Reducer<S, A, P>;\n  if (typeof reducer === 'function') {\n    rootReducer = reducer;\n  } else if (isPlainObject(reducer)) {\n    rootReducer = ((combineReducers(reducer) as unknown) as Reducer<S, A, P>);\n  } else {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(1) : '`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers');\n  }\n  if (process.env.NODE_ENV !== 'production' && middleware && typeof middleware !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(2) : '`middleware` field must be a callback');\n  }\n  let finalMiddleware: Tuple<Middlewares<S>>;\n  if (typeof middleware === 'function') {\n    finalMiddleware = middleware(getDefaultMiddleware);\n    if (process.env.NODE_ENV !== 'production' && !Array.isArray(finalMiddleware)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(3) : 'when using a middleware builder function, an array of middleware must be returned');\n    }\n  } else {\n    finalMiddleware = getDefaultMiddleware();\n  }\n  if (process.env.NODE_ENV !== 'production' && finalMiddleware.some((item: any) => typeof item !== 'function')) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(4) : 'each middleware provided to configureStore must be a function');\n  }\n  let finalCompose = compose;\n  if (devTools) {\n    finalCompose = composeWithDevTools({\n      // Enable capture of stack traces for dispatched Redux actions\n      trace: process.env.NODE_ENV !== 'production',\n      ...(typeof devTools === 'object' && devTools)\n    });\n  }\n  const middlewareEnhancer = applyMiddleware(...finalMiddleware);\n  const getDefaultEnhancers = buildGetDefaultEnhancers<M>(middlewareEnhancer);\n  if (process.env.NODE_ENV !== 'production' && enhancers && typeof enhancers !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(5) : '`enhancers` field must be a callback');\n  }\n  let storeEnhancers = typeof enhancers === 'function' ? enhancers(getDefaultEnhancers) : getDefaultEnhancers();\n  if (process.env.NODE_ENV !== 'production' && !Array.isArray(storeEnhancers)) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(6) : '`enhancers` callback must return an array');\n  }\n  if (process.env.NODE_ENV !== 'production' && storeEnhancers.some((item: any) => typeof item !== 'function')) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(7) : 'each enhancer provided to configureStore must be a function');\n  }\n  if (process.env.NODE_ENV !== 'production' && finalMiddleware.length && !storeEnhancers.includes(middlewareEnhancer)) {\n    console.error('middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`');\n  }\n  const composedEnhancer: StoreEnhancer<any> = finalCompose(...storeEnhancers);\n  return createStore(rootReducer, (preloadedState as P), composedEnhancer);\n}","import { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport compose from './compose';\nimport { Middleware, MiddlewareAPI } from './types/middleware';\nimport { StoreEnhancer, Dispatch } from './types/store';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param middlewares The middleware chain to be applied.\n * @returns A store enhancer applying the middleware.\n *\n * @template Ext Dispatch signature added by a middleware.\n * @template S The type of the state supported by a middleware.\n */\nexport default function applyMiddleware(): StoreEnhancer;\nexport default function applyMiddleware<Ext1, S>(middleware1: Middleware<Ext1, S, any>): StoreEnhancer<{\n  dispatch: Ext1;\n}>;\nexport default function applyMiddleware<Ext1, Ext2, S>(middleware1: Middleware<Ext1, S, any>, middleware2: Middleware<Ext2, S, any>): StoreEnhancer<{\n  dispatch: Ext1 & Ext2;\n}>;\nexport default function applyMiddleware<Ext1, Ext2, Ext3, S>(middleware1: Middleware<Ext1, S, any>, middleware2: Middleware<Ext2, S, any>, middleware3: Middleware<Ext3, S, any>): StoreEnhancer<{\n  dispatch: Ext1 & Ext2 & Ext3;\n}>;\nexport default function applyMiddleware<Ext1, Ext2, Ext3, Ext4, S>(middleware1: Middleware<Ext1, S, any>, middleware2: Middleware<Ext2, S, any>, middleware3: Middleware<Ext3, S, any>, middleware4: Middleware<Ext4, S, any>): StoreEnhancer<{\n  dispatch: Ext1 & Ext2 & Ext3 & Ext4;\n}>;\nexport default function applyMiddleware<Ext1, Ext2, Ext3, Ext4, Ext5, S>(middleware1: Middleware<Ext1, S, any>, middleware2: Middleware<Ext2, S, any>, middleware3: Middleware<Ext3, S, any>, middleware4: Middleware<Ext4, S, any>, middleware5: Middleware<Ext5, S, any>): StoreEnhancer<{\n  dispatch: Ext1 & Ext2 & Ext3 & Ext4 & Ext5;\n}>;\nexport default function applyMiddleware<Ext, S = any>(...middlewares: Middleware<any, S, any>[]): StoreEnhancer<{\n  dispatch: Ext;\n}>;\nexport default function applyMiddleware(...middlewares: Middleware[]): StoreEnhancer<any> {\n  return createStore => (reducer, preloadedState) => {\n    const store = createStore(reducer, preloadedState);\n    let dispatch: Dispatch = () => {\n      throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n    };\n    const middlewareAPI: MiddlewareAPI = {\n      getState: store.getState,\n      dispatch: (action, ...args) => dispatch(action, ...args)\n    };\n    const chain = middlewares.map(middleware => middleware(middlewareAPI));\n    dispatch = compose<typeof dispatch>(...chain)(store.dispatch);\n    return {\n      ...store,\n      dispatch\n    };\n  };\n}","import React from \"react\";\nimport { Navigate, Outlet } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\n\nconst PrivateRoute = () => {\n  const user = useSelector((state) => state.userInfo.user);\n\n  // alert(\"Get User Details :\" + user);\n\n  if (!user) {\n    return <Navigate to=\"/login\" />;\n  }\n  return <Outlet />;\n};\n\nexport default PrivateRoute;\n","'use client'\nimport React, { useState, useRef, useEffect, createContext, useMemo, useContext, useCallback } from 'react';\n\nfunction useLoadGsiScript(options = {}) {\r\n    const { nonce, onScriptLoadSuccess, onScriptLoadError } = options;\r\n    const [scriptLoadedSuccessfully, setScriptLoadedSuccessfully] = useState(false);\r\n    const onScriptLoadSuccessRef = useRef(onScriptLoadSuccess);\r\n    onScriptLoadSuccessRef.current = onScriptLoadSuccess;\r\n    const onScriptLoadErrorRef = useRef(onScriptLoadError);\r\n    onScriptLoadErrorRef.current = onScriptLoadError;\r\n    useEffect(() => {\r\n        const scriptTag = document.createElement('script');\r\n        scriptTag.src = 'https://accounts.google.com/gsi/client';\r\n        scriptTag.async = true;\r\n        scriptTag.defer = true;\r\n        scriptTag.nonce = nonce;\r\n        scriptTag.onload = () => {\r\n            var _a;\r\n            setScriptLoadedSuccessfully(true);\r\n            (_a = onScriptLoadSuccessRef.current) === null || _a === void 0 ? void 0 : _a.call(onScriptLoadSuccessRef);\r\n        };\r\n        scriptTag.onerror = () => {\r\n            var _a;\r\n            setScriptLoadedSuccessfully(false);\r\n            (_a = onScriptLoadErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onScriptLoadErrorRef);\r\n        };\r\n        document.body.appendChild(scriptTag);\r\n        return () => {\r\n            document.body.removeChild(scriptTag);\r\n        };\r\n    }, [nonce]);\r\n    return scriptLoadedSuccessfully;\r\n}\n\nconst GoogleOAuthContext = createContext(null);\r\nfunction GoogleOAuthProvider({ clientId, nonce, onScriptLoadSuccess, onScriptLoadError, children, }) {\r\n    const scriptLoadedSuccessfully = useLoadGsiScript({\r\n        nonce,\r\n        onScriptLoadSuccess,\r\n        onScriptLoadError,\r\n    });\r\n    const contextValue = useMemo(() => ({\r\n        clientId,\r\n        scriptLoadedSuccessfully,\r\n    }), [clientId, scriptLoadedSuccessfully]);\r\n    return (React.createElement(GoogleOAuthContext.Provider, { value: contextValue }, children));\r\n}\r\nfunction useGoogleOAuth() {\r\n    const context = useContext(GoogleOAuthContext);\r\n    if (!context) {\r\n        throw new Error('Google OAuth components must be used within GoogleOAuthProvider');\r\n    }\r\n    return context;\r\n}\n\nfunction extractClientId(credentialResponse) {\r\n    var _a;\r\n    const clientId = (_a = credentialResponse === null || credentialResponse === void 0 ? void 0 : credentialResponse.clientId) !== null && _a !== void 0 ? _a : credentialResponse === null || credentialResponse === void 0 ? void 0 : credentialResponse.client_id;\r\n    return clientId;\r\n}\n\nconst containerHeightMap = { large: 40, medium: 32, small: 20 };\r\nfunction GoogleLogin({ onSuccess, onError, useOneTap, promptMomentNotification, type = 'standard', theme = 'outline', size = 'large', text, shape, logo_alignment, width, locale, click_listener, containerProps, ...props }) {\r\n    const btnContainerRef = useRef(null);\r\n    const { clientId, scriptLoadedSuccessfully } = useGoogleOAuth();\r\n    const onSuccessRef = useRef(onSuccess);\r\n    onSuccessRef.current = onSuccess;\r\n    const onErrorRef = useRef(onError);\r\n    onErrorRef.current = onError;\r\n    const promptMomentNotificationRef = useRef(promptMomentNotification);\r\n    promptMomentNotificationRef.current = promptMomentNotification;\r\n    useEffect(() => {\r\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j;\r\n        if (!scriptLoadedSuccessfully)\r\n            return;\r\n        (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.initialize({\r\n            client_id: clientId,\r\n            callback: (credentialResponse) => {\r\n                var _a;\r\n                if (!(credentialResponse === null || credentialResponse === void 0 ? void 0 : credentialResponse.credential)) {\r\n                    return (_a = onErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onErrorRef);\r\n                }\r\n                const { credential, select_by } = credentialResponse;\r\n                onSuccessRef.current({\r\n                    credential,\r\n                    clientId: extractClientId(credentialResponse),\r\n                    select_by,\r\n                });\r\n            },\r\n            ...props,\r\n        });\r\n        (_f = (_e = (_d = window === null || window === void 0 ? void 0 : window.google) === null || _d === void 0 ? void 0 : _d.accounts) === null || _e === void 0 ? void 0 : _e.id) === null || _f === void 0 ? void 0 : _f.renderButton(btnContainerRef.current, {\r\n            type,\r\n            theme,\r\n            size,\r\n            text,\r\n            shape,\r\n            logo_alignment,\r\n            width,\r\n            locale,\r\n            click_listener,\r\n        });\r\n        if (useOneTap)\r\n            (_j = (_h = (_g = window === null || window === void 0 ? void 0 : window.google) === null || _g === void 0 ? void 0 : _g.accounts) === null || _h === void 0 ? void 0 : _h.id) === null || _j === void 0 ? void 0 : _j.prompt(promptMomentNotificationRef.current);\r\n        return () => {\r\n            var _a, _b, _c;\r\n            if (useOneTap)\r\n                (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.cancel();\r\n        };\r\n        // eslint-disable-next-line react-hooks/exhaustive-deps\r\n    }, [\r\n        clientId,\r\n        scriptLoadedSuccessfully,\r\n        useOneTap,\r\n        type,\r\n        theme,\r\n        size,\r\n        text,\r\n        shape,\r\n        logo_alignment,\r\n        width,\r\n        locale,\r\n    ]);\r\n    return (React.createElement(\"div\", { ...containerProps, ref: btnContainerRef, style: { height: containerHeightMap[size], ...containerProps === null || containerProps === void 0 ? void 0 : containerProps.style } }));\r\n}\n\nfunction googleLogout() {\r\n    var _a, _b, _c;\r\n    (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.disableAutoSelect();\r\n}\n\n/* eslint-disable import/export */\r\nfunction useGoogleLogin({ flow = 'implicit', scope = '', onSuccess, onError, onNonOAuthError, overrideScope, state, ...props }) {\r\n    const { clientId, scriptLoadedSuccessfully } = useGoogleOAuth();\r\n    const clientRef = useRef();\r\n    const onSuccessRef = useRef(onSuccess);\r\n    onSuccessRef.current = onSuccess;\r\n    const onErrorRef = useRef(onError);\r\n    onErrorRef.current = onError;\r\n    const onNonOAuthErrorRef = useRef(onNonOAuthError);\r\n    onNonOAuthErrorRef.current = onNonOAuthError;\r\n    useEffect(() => {\r\n        var _a, _b;\r\n        if (!scriptLoadedSuccessfully)\r\n            return;\r\n        const clientMethod = flow === 'implicit' ? 'initTokenClient' : 'initCodeClient';\r\n        const client = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.oauth2[clientMethod]({\r\n            client_id: clientId,\r\n            scope: overrideScope ? scope : `openid profile email ${scope}`,\r\n            callback: (response) => {\r\n                var _a, _b;\r\n                if (response.error)\r\n                    return (_a = onErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onErrorRef, response);\r\n                (_b = onSuccessRef.current) === null || _b === void 0 ? void 0 : _b.call(onSuccessRef, response);\r\n            },\r\n            error_callback: (nonOAuthError) => {\r\n                var _a;\r\n                (_a = onNonOAuthErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onNonOAuthErrorRef, nonOAuthError);\r\n            },\r\n            state,\r\n            ...props,\r\n        });\r\n        clientRef.current = client;\r\n        // eslint-disable-next-line react-hooks/exhaustive-deps\r\n    }, [clientId, scriptLoadedSuccessfully, flow, scope, state]);\r\n    const loginImplicitFlow = useCallback((overrideConfig) => { var _a; return (_a = clientRef.current) === null || _a === void 0 ? void 0 : _a.requestAccessToken(overrideConfig); }, []);\r\n    const loginAuthCodeFlow = useCallback(() => { var _a; return (_a = clientRef.current) === null || _a === void 0 ? void 0 : _a.requestCode(); }, []);\r\n    return flow === 'implicit' ? loginImplicitFlow : loginAuthCodeFlow;\r\n}\n\nfunction useGoogleOneTapLogin({ onSuccess, onError, promptMomentNotification, cancel_on_tap_outside, prompt_parent_id, state_cookie_domain, hosted_domain, use_fedcm_for_prompt = false, disabled, auto_select, }) {\r\n    const { clientId, scriptLoadedSuccessfully } = useGoogleOAuth();\r\n    const onSuccessRef = useRef(onSuccess);\r\n    onSuccessRef.current = onSuccess;\r\n    const onErrorRef = useRef(onError);\r\n    onErrorRef.current = onError;\r\n    const promptMomentNotificationRef = useRef(promptMomentNotification);\r\n    promptMomentNotificationRef.current = promptMomentNotification;\r\n    useEffect(() => {\r\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j;\r\n        if (!scriptLoadedSuccessfully)\r\n            return;\r\n        if (disabled) {\r\n            (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.cancel();\r\n            return;\r\n        }\r\n        (_f = (_e = (_d = window === null || window === void 0 ? void 0 : window.google) === null || _d === void 0 ? void 0 : _d.accounts) === null || _e === void 0 ? void 0 : _e.id) === null || _f === void 0 ? void 0 : _f.initialize({\r\n            client_id: clientId,\r\n            callback: (credentialResponse) => {\r\n                var _a;\r\n                if (!(credentialResponse === null || credentialResponse === void 0 ? void 0 : credentialResponse.credential)) {\r\n                    return (_a = onErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onErrorRef);\r\n                }\r\n                const { credential, select_by } = credentialResponse;\r\n                onSuccessRef.current({\r\n                    credential,\r\n                    clientId: extractClientId(credentialResponse),\r\n                    select_by,\r\n                });\r\n            },\r\n            hosted_domain,\r\n            cancel_on_tap_outside,\r\n            prompt_parent_id,\r\n            state_cookie_domain,\r\n            use_fedcm_for_prompt,\r\n            auto_select,\r\n        });\r\n        (_j = (_h = (_g = window === null || window === void 0 ? void 0 : window.google) === null || _g === void 0 ? void 0 : _g.accounts) === null || _h === void 0 ? void 0 : _h.id) === null || _j === void 0 ? void 0 : _j.prompt(promptMomentNotificationRef.current);\r\n        return () => {\r\n            var _a, _b, _c;\r\n            (_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.cancel();\r\n        };\r\n    }, [\r\n        clientId,\r\n        scriptLoadedSuccessfully,\r\n        cancel_on_tap_outside,\r\n        prompt_parent_id,\r\n        state_cookie_domain,\r\n        hosted_domain,\r\n        use_fedcm_for_prompt,\r\n        disabled,\r\n        auto_select,\r\n    ]);\r\n}\n\n/**\r\n * Checks if the user granted all the specified scope or scopes\r\n * @returns True if all the scopes are granted\r\n */\r\nfunction hasGrantedAllScopesGoogle(tokenResponse, firstScope, ...restScopes) {\r\n    var _a, _b, _c;\r\n    if (!(window === null || window === void 0 ? void 0 : window.google))\r\n        return false;\r\n    return (((_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.oauth2) === null || _c === void 0 ? void 0 : _c.hasGrantedAllScopes(tokenResponse, firstScope, ...restScopes)) || false);\r\n}\n\n/**\r\n * Checks if the user granted any of the specified scope or scopes.\r\n * @returns True if any of the scopes are granted\r\n */\r\nfunction hasGrantedAnyScopeGoogle(tokenResponse, firstScope, ...restScopes) {\r\n    var _a, _b, _c;\r\n    if (!(window === null || window === void 0 ? void 0 : window.google))\r\n        return false;\r\n    return (((_c = (_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b.oauth2) === null || _c === void 0 ? void 0 : _c.hasGrantedAnyScope(tokenResponse, firstScope, ...restScopes)) || false);\r\n}\n\nexport { GoogleLogin, GoogleOAuthProvider, googleLogout, hasGrantedAllScopesGoogle, hasGrantedAnyScopeGoogle, useGoogleLogin, useGoogleOAuth, useGoogleOneTapLogin };\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcBack(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5 12H19M5 12L11 6M5 12L11 18\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcBack);\nexport default __webpack_public_path__ + \"static/media/ic_back.4bdc6fb70e19c0c85dd276a9224291a2.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcEmail(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10 19H6.2C5.0799 19 4.51984 19 4.09202 18.782C3.71569 18.5903 3.40973 18.2843 3.21799 17.908C3 17.4802 3 16.9201 3 15.8V8.2C3 7.0799 3 6.51984 3.21799 6.09202C3.40973 5.71569 3.71569 5.40973 4.09202 5.21799C4.51984 5 5.0799 5 6.2 5H17.8C18.9201 5 19.4802 5 19.908 5.21799C20.2843 5.40973 20.5903 5.71569 20.782 6.09202C21 6.51984 21 7.0799 21 8.2V10M20.6067 8.26229L15.5499 11.6335C14.2669 12.4888 13.6254 12.9165 12.932 13.0827C12.3192 13.2295 11.6804 13.2295 11.0677 13.0827C10.3743 12.9165 9.73279 12.4888 8.44975 11.6335L3.14746 8.09863M14 21L16.025 20.595C16.2015 20.5597 16.2898 20.542 16.3721 20.5097C16.4452 20.4811 16.5147 20.4439 16.579 20.399C16.6516 20.3484 16.7152 20.2848 16.8426 20.1574L21 16C21.5523 15.4477 21.5523 14.5523 21 14C20.4477 13.4477 19.5523 13.4477 19 14L14.8426 18.1574C14.7152 18.2848 14.6516 18.3484 14.601 18.421C14.5561 18.4853 14.5189 18.5548 14.4903 18.6279C14.458 18.7102 14.4403 18.7985 14.405 18.975L14 21Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcEmail);\nexport default __webpack_public_path__ + \"static/media/ic_email.45ad464cd04b438e3ecf9cb6af3ab3d4.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcPwdshow(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3 14C3 9.02944 7.02944 5 12 5C16.9706 5 21 9.02944 21 14M17 14C17 16.7614 14.7614 19 12 19C9.23858 19 7 16.7614 7 14C7 11.2386 9.23858 9 12 9C14.7614 9 17 11.2386 17 14Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcPwdshow);\nexport default __webpack_public_path__ + \"static/media/ic_pwdshow.f71ec01df7f9be1a97a24f25dfe0157f.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcPwdhide(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9.60997 9.60714C8.05503 10.4549 7 12.1043 7 14C7 16.7614 9.23858 19 12 19C13.8966 19 15.5466 17.944 16.3941 16.3878M21 14C21 9.02944 16.9706 5 12 5C11.5582 5 11.1238 5.03184 10.699 5.09334M3 14C3 11.0069 4.46104 8.35513 6.70883 6.71886M3 3L21 21\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcPwdhide);\nexport default __webpack_public_path__ + \"static/media/ic_pwdhide.c77d775a8bff1caedf2d2a38028ae90c.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\nimport { ReactComponent as PwdShow } from \"../assets/Images/ic_pwdshow.svg\";\nimport { ReactComponent as PwdHide } from \"../assets/Images/ic_pwdhide.svg\";\n\n// Custom Input text\nconst InputContainer = ({\n  value,\n  label,\n  name,\n  placeholder,\n  type,\n  onChange,\n  disabled,\n  secureTextEntry,\n  PasswordVisibility,\n  setshowPassword,\n  maxLength,\n  showIcon,\n  Icon,\n  clickInfoIcon,\n}) => (\n  <div\n    className={`flex flex-row justify-between border-mBorderColor h-12 rounded-lg p-3 w-full focus:outline-none focus:mBlueOne hover:mBorderColor mt-3 border ${\n      disabled ? \"bg-mDisabled\" : \"bg-white\"\n    }`}\n  >\n    <input\n      type={type}\n      placeholder={placeholder}\n      value={value}\n      onChange={onChange}\n      maxLength={maxLength}\n      required\n      disabled={disabled}\n      className={`text-sm  3xl:text-base  text-mTextColor placeholder-mTextColorLogin font-PlusJakartaSansRegular font-normal w-full border-none focus:border-none  border-4 !outline-none`}\n    ></input>\n\n    {/* Check the ride side image showing or not */}\n    {showIcon && <Icon className=\"w-6 h-6 flex-shrink-0\" />}\n\n    {/* Visiable or hide the password */}\n    {secureTextEntry && (\n      <button className=\"flex-row-reverse ml-4 \" onClick={PasswordVisibility}>\n        {setshowPassword ? <PwdShow /> : <PwdHide />}\n      </button>\n    )}\n  </div>\n);\n\nexport default InputContainer;\n//t\n","import React from \"react\";\n\n// Custom Text\nconst Headingtext = ({ label, changecolor }) => (\n  <p\n    className={`font-PlusJakartaSansSemiBold text-2xl md:text-4xl ${\n      changecolor ? \"text-white\" : \"text-mTextColor\"\n    } `}\n  >\n    {label}\n  </p>\n);\n\nexport default Headingtext;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport Loader from \"../../Utils/Loader\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as BackIcon } from \"../../assets/Images/ic_back.svg\";\nimport { ReactComponent as EmailIcon } from \"../../assets/Images/ic_email.svg\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { Images, isValidEmail } from \"../../Utils/Constants\";\nimport { toast } from \"react-toastify\";\nimport { useNavigate } from \"react-router-dom\";\nimport { mSendotptomail } from \"../../Services/allAPI\";\nimport Headingtext from \"../../Components/Headingtext\";\nimport TextView from \"../../Components/TextView\";\nimport LogoText from \"../../Components/LogoText\";\n\nconst ResetPassword = () => {\n  const [loading, setLoading] = useState(false);\n  const { t } = useTranslation(\"\");\n  const [email, setEmail] = useState(\"\");\n  const navigate = useNavigate();\n\n  //Send OTP Click\n\n  const sendOTPClick = () => {\n    if (!isValidEmail(email)) {\n      toast.error(t(\"vaildmail\"));\n      return;\n    }\n    ForgetPwdCall();\n  };\n\n  const ForgetPwdCall = async () => {\n    // navigate(\"/resetpasswordotp\");\n    setLoading(true);\n    const response = await mSendotptomail({\n      email: email,\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      toast.success(response?.data.message.message);\n      if (response?.data.message.status) {\n        navigate(\"/resetpasswordotp\", {\n          state: {\n            mEmail: email,\n          },\n        });\n        //  navigate(\"/resetpasswordotp\");\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  const mBackClick = () => {\n    navigate(\"/login\");\n  };\n\n  // Check Disable button\n  const isDisabled = !email;\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <section className=\"min-h-screen flex flex-row\">\n          <div className=\"hidden lg:block w-3/5 bg-mwhite  flex-col items-start justify-start p-5\">\n            <div className=\"mt-3 ml-3\">\n              {/* <img\n                src={Images.zenpivot}\n                alt=\"google Icon\"\n                className=\" h-9 w-28\"\n              /> */}\n              <LogoText label={t(\"appname\")} />\n            </div>\n\n            <div className=\"w-full h-auto justify-center items-center flex\">\n              <img src={Images.forgetpwd} alt=\"login\" className=\"w-2/3 \" />\n            </div>\n          </div>\n          <div className=\" lg:w-2/5 w-full pl-5 py-5 lg:pl-20 lg:py-10 bg-mBackground items-center justify-start flex \">\n            <div className=\"grid gap-10 grid-cols-1 w-11/12\">\n              <div className=\"flex flex-row items-center justify-start\">\n                <BackIcon\n                  className=\"w-6 h-6  flex-shrink-0 cursor-pointer mr-2\"\n                  onClick={mBackClick}\n                />{\" \"}\n                <p className=\"font-PlusJakartaSansRegular font-normal text-sm 3xl:text-base\">\n                  {t(\"GoBack\")}\n                </p>\n              </div>\n              <div>\n                <Headingtext label={t(\"ResetPassword\")} />\n              </div>\n              <div>\n                <TextView label={t(\"EMail\")} ismandatory={true} />\n\n                <InputContainer\n                  type=\"email\"\n                  value={email}\n                  placeholder={t(\"Enteryouremail\")}\n                  label=\"email\"\n                  name=\"email\"\n                  disabled={false}\n                  maxLength={60}\n                  showIcon={true}\n                  Icon={EmailIcon}\n                  onChange={(e) => {\n                    setEmail(e.target.value);\n                    // setforgetPwd({ ...forgetPwd, email: event.target.value });\n                  }}\n                />\n              </div>\n              <PrimaryButton\n                label={t(\"SendOtp\")}\n                onClick={sendOTPClick}\n                onDisable={isDisabled}\n              ></PrimaryButton>\n            </div>\n          </div>\n        </section>\n      )}\n    </>\n  );\n};\n\nexport default ResetPassword;\n","import React from 'react';\n\ntype AllowedInputTypes = 'password' | 'text' | 'number' | 'tel';\n\ntype InputProps = Required<\n  Pick<\n    React.InputHTMLAttributes<HTMLInputElement>,\n    | 'value'\n    | 'onChange'\n    | 'onFocus'\n    | 'onBlur'\n    | 'onKeyDown'\n    | 'onPaste'\n    | 'aria-label'\n    | 'autoComplete'\n    | 'style'\n    | 'inputMode'\n    | 'onInput'\n  > & {\n    ref: React.RefCallback<HTMLInputElement>;\n    placeholder: string | undefined;\n    className: string | undefined;\n    type: AllowedInputTypes;\n  }\n>;\n\ninterface OTPInputProps {\n  /** Value of the OTP input */\n  value?: string;\n  /** Number of OTP inputs to be rendered */\n  numInputs?: number;\n  /** Callback to be called when the OTP value changes */\n  onChange: (otp: string) => void;\n  /** Callback to be called when pasting content into the component */\n  onPaste?: (event: React.ClipboardEvent<HTMLDivElement>) => void;\n  /** Function to render the input */\n  renderInput: (inputProps: InputProps, index: number) => React.ReactNode;\n  /** Whether the first input should be auto focused */\n  shouldAutoFocus?: boolean;\n  /** Placeholder for the inputs */\n  placeholder?: string;\n  /** Function to render the separator */\n  renderSeparator?: ((index: number) => React.ReactNode) | React.ReactNode;\n  /** Style for the container */\n  containerStyle?: React.CSSProperties | string;\n  /** Style for the input */\n  inputStyle?: React.CSSProperties | string;\n  /** The type that will be passed to the input being rendered */\n  inputType?: AllowedInputTypes;\n  /** Do not apply the default styles to the inputs, will be removed in future versions */\n  skipDefaultStyles?: boolean; // TODO: Remove in next major release\n}\n\nconst isStyleObject = (obj: unknown) => typeof obj === 'object' && obj !== null;\n\nconst OTPInput = ({\n  value = '',\n  numInputs = 4,\n  onChange,\n  onPaste,\n  renderInput,\n  shouldAutoFocus = false,\n  inputType = 'text',\n  renderSeparator,\n  placeholder,\n  containerStyle,\n  inputStyle,\n  skipDefaultStyles = false,\n}: OTPInputProps) => {\n  const [activeInput, setActiveInput] = React.useState(0);\n  const inputRefs = React.useRef<Array<HTMLInputElement | null>>([]);\n\n  const getOTPValue = () => (value ? value.toString().split('') : []);\n\n  const isInputNum = inputType === 'number' || inputType === 'tel';\n\n  React.useEffect(() => {\n    inputRefs.current = inputRefs.current.slice(0, numInputs);\n  }, [numInputs]);\n\n  React.useEffect(() => {\n    if (shouldAutoFocus) {\n      inputRefs.current[0]?.focus();\n    }\n  }, [shouldAutoFocus]);\n\n  const getPlaceholderValue = () => {\n    if (typeof placeholder === 'string') {\n      if (placeholder.length === numInputs) {\n        return placeholder;\n      }\n\n      if (placeholder.length > 0) {\n        console.error('Length of the placeholder should be equal to the number of inputs.');\n      }\n    }\n    return undefined;\n  };\n\n  const isInputValueValid = (value: string) => {\n    const isTypeValid = isInputNum ? !isNaN(Number(value)) : typeof value === 'string';\n    return isTypeValid && value.trim().length === 1;\n  };\n\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const { value } = event.target;\n\n    if (isInputValueValid(value)) {\n      changeCodeAtFocus(value);\n      focusInput(activeInput + 1);\n    }\n  };\n\n  const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const { nativeEvent } = event;\n    const value = event.target.value;\n\n    if (!isInputValueValid(value)) {\n      // Pasting from the native autofill suggestion on a mobile device can pass\n      // the pasted string as one long input to one of the cells. This ensures\n      // that we handle the full input and not just the first character.\n      if (value.length === numInputs) {\n        const hasInvalidInput = value.split('').some((cellInput) => !isInputValueValid(cellInput));\n        if (!hasInvalidInput) {\n          handleOTPChange(value.split(''));\n          focusInput(numInputs - 1);\n        }\n      }\n\n      // @ts-expect-error - This was added previously to handle and edge case\n      // for dealing with keyCode \"229 Unidentified\" on Android. Check if this is\n      // still needed.\n      if (nativeEvent.data === null && nativeEvent.inputType === 'deleteContentBackward') {\n        event.preventDefault();\n        changeCodeAtFocus('');\n        focusInput(activeInput - 1);\n      }\n\n      // Clear the input if it's not valid value because firefox allows\n      // pasting non-numeric characters in a number type input\n      event.target.value = '';\n    }\n  };\n\n  const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => (index: number) => {\n    setActiveInput(index);\n    event.target.select();\n  };\n\n  const handleBlur = () => {\n    setActiveInput(activeInput - 1);\n  };\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n    const otp = getOTPValue();\n    if ([event.code, event.key].includes('Backspace')) {\n      event.preventDefault();\n      changeCodeAtFocus('');\n      focusInput(activeInput - 1);\n    } else if (event.code === 'Delete') {\n      event.preventDefault();\n      changeCodeAtFocus('');\n    } else if (event.code === 'ArrowLeft') {\n      event.preventDefault();\n      focusInput(activeInput - 1);\n    } else if (event.code === 'ArrowRight') {\n      event.preventDefault();\n      focusInput(activeInput + 1);\n    }\n    // React does not trigger onChange when the same value is entered\n    // again. So we need to focus the next input manually in this case.\n    else if (event.key === otp[activeInput]) {\n      event.preventDefault();\n      focusInput(activeInput + 1);\n    } else if (\n      event.code === 'Spacebar' ||\n      event.code === 'Space' ||\n      event.code === 'ArrowUp' ||\n      event.code === 'ArrowDown'\n    ) {\n      event.preventDefault();\n    }\n  };\n\n  const focusInput = (index: number) => {\n    const activeInput = Math.max(Math.min(numInputs - 1, index), 0);\n\n    if (inputRefs.current[activeInput]) {\n      inputRefs.current[activeInput]?.focus();\n      inputRefs.current[activeInput]?.select();\n      setActiveInput(activeInput);\n    }\n  };\n\n  const changeCodeAtFocus = (value: string) => {\n    const otp = getOTPValue();\n    otp[activeInput] = value[0];\n    handleOTPChange(otp);\n  };\n\n  const handleOTPChange = (otp: Array<string>) => {\n    const otpValue = otp.join('');\n    onChange(otpValue);\n  };\n\n  const handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n    event.preventDefault();\n\n    const otp = getOTPValue();\n    let nextActiveInput = activeInput;\n\n    // Get pastedData in an array of max size (num of inputs - current position)\n    const pastedData = event.clipboardData\n      .getData('text/plain')\n      .slice(0, numInputs - activeInput)\n      .split('');\n\n    // Prevent pasting if the clipboard data contains non-numeric values for number inputs\n    if (isInputNum && pastedData.some((value) => isNaN(Number(value)))) {\n      return;\n    }\n\n    // Paste data from focused input onwards\n    for (let pos = 0; pos < numInputs; ++pos) {\n      if (pos >= activeInput && pastedData.length > 0) {\n        otp[pos] = pastedData.shift() ?? '';\n        nextActiveInput++;\n      }\n    }\n\n    focusInput(nextActiveInput);\n    handleOTPChange(otp);\n  };\n\n  return (\n    <div\n      style={Object.assign({ display: 'flex', alignItems: 'center' }, isStyleObject(containerStyle) && containerStyle)}\n      className={typeof containerStyle === 'string' ? containerStyle : undefined}\n      onPaste={onPaste}\n    >\n      {Array.from({ length: numInputs }, (_, index) => index).map((index) => (\n        <React.Fragment key={index}>\n          {renderInput(\n            {\n              value: getOTPValue()[index] ?? '',\n              placeholder: getPlaceholderValue()?.[index] ?? undefined,\n              ref: (element) => (inputRefs.current[index] = element),\n              onChange: handleChange,\n              onFocus: (event) => handleFocus(event)(index),\n              onBlur: handleBlur,\n              onKeyDown: handleKeyDown,\n              onPaste: handlePaste,\n              autoComplete: 'off',\n              'aria-label': `Please enter OTP character ${index + 1}`,\n              style: Object.assign(\n                !skipDefaultStyles ? ({ width: '1em', textAlign: 'center' } as const) : {},\n                isStyleObject(inputStyle) ? inputStyle : {}\n              ),\n              className: typeof inputStyle === 'string' ? inputStyle : undefined,\n              type: inputType,\n              inputMode: isInputNum ? 'numeric' : 'text',\n              onInput: handleInputChange,\n            },\n            index\n          )}\n          {index < numInputs - 1 && (typeof renderSeparator === 'function' ? renderSeparator(index) : renderSeparator)}\n        </React.Fragment>\n      ))}\n    </div>\n  );\n};\n\nexport type { OTPInputProps, InputProps, AllowedInputTypes };\nexport default OTPInput;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport Loader from \"../../Utils/Loader\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as BackIcon } from \"../../assets/Images/ic_back.svg\";\nimport { ReactComponent as EmailIcon } from \"../../assets/Images/ic_email.svg\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport OTPInput from \"react-otp-input\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport { Images } from \"../../Utils/Constants\";\nimport { mResetpassword } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport Headingtext from \"../../Components/Headingtext\";\nimport TextView from \"../../Components/TextView\";\nimport LogoText from \"../../Components/LogoText\";\n\nconst ResetPasswordOTP = () => {\n  const [loading, setLoading] = useState(false);\n  const { t } = useTranslation(\"\");\n  const [showPassword, setShowPassword] = useState(false);\n  const [password, setPassword] = useState(\"\");\n  const navigate = useNavigate();\n\n  const [code, setCode] = useState(\"\");\n  const handleChange = (code) => {\n    setCode(code);\n    // const regex = /^[0-9\\b]+$/;\n    // if (code === \"\" || regex.test(code)) {\n    //   setCode(code);\n    //   console.log(code);\n    // }\n  };\n\n  const location = useLocation();\n  const email = location.state?.mEmail || \"\";\n\n  //Send OTP Click\n\n  const savePwdClick = () => {\n    ForgetPwdOTPCall();\n  };\n\n  const ForgetPwdOTPCall = async () => {\n    // navigate(\"/resetpasswordotp\");\n    setLoading(true);\n    const response = await mResetpassword({\n      email: email,\n      otp: code,\n      new_password: password,\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        navigate(\"/login\");\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  // Password Show and hide\n  const PasswordVisibility = () => {\n    setShowPassword(!showPassword);\n  };\n\n  const mBackClick = () => {\n    navigate(\"/resetpassword\");\n  };\n\n  // Check Disable button\n  const isDisabled = !password || !(code.length === 4);\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <section className=\"min-h-screen flex flex-row\">\n          <div className=\"hidden lg:block w-3/5 bg-mwhite flex-col items-start justify-start p-5\">\n            <div className=\"mt-3 ml-3\">\n              {/* <img\n                src={Images.zenpivot}\n                alt=\"google Icon\"\n                className=\" h-9 w-28\"\n              /> */}\n              <LogoText label={t(\"appname\")} />\n            </div>\n\n            <div className=\"w-full h-auto justify-center items-center flex\">\n              <img src={Images.forgetpwd} alt=\"login\" className=\"w-2/3 \" />\n            </div>\n          </div>\n          <div className=\"lg:w-2/5 w-full pl-5 py-5 lg:pl-20 lg:py-10 bg-mBackground items-center justify-start flex \">\n            <div className=\"grid gap-10 grid-cols-1 w-11/12\">\n              <div className=\"flex flex-row items-center justify-start\">\n                <BackIcon\n                  className=\"w-6 h-6 flex-shrink-0 cursor-pointer\"\n                  onClick={mBackClick}\n                />{\" \"}\n                <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-base\">\n                  {t(\"GoBack\")}\n                </p>\n              </div>\n              <div>\n                <Headingtext label={t(\"ResetPassword\")} />\n              </div>\n              <div>\n                <TextView label={t(\"VerifyOTP\")} ismandatory={true} />\n\n                {/* <div className=\"mt-2\">\n                  <OTPInput\n                    value={code}\n                    onChange={handleChange}\n                    inputType=\"tel\"\n                    numInputs={4}\n                    isInputNum={true}\n                    shouldAutoFocus={true}\n                    renderInput={(props) => (\n                      <input {...props} placeholder={\"-\"} />\n                    )}\n                    inputStyle={{\n                      border: \"1px solid rgba(13, 13, 13, 0.10)\",\n                      borderRadius: \"8px\",\n                      width: \"110px\",\n                      height: \"56px\",\n                      fontSize: \"16px\",\n                      marginRight: \"10px\",\n                      color: \"rgba(13, 13, 13, 0.70)\",\n                      fontWeight: \"400\",\n                    }}\n                    focusStyle={{\n                      border: \"1px solid blue\",\n                      boxShadow: \"0 0 5px rgba(0, 0, 255, 0.5)\",\n                    }}\n                  />\n                </div> */}\n\n                <div className=\"mt-2\">\n                  <OTPInput\n                    value={code}\n                    onChange={handleChange}\n                    inputType=\"tel\"\n                    numInputs={4}\n                    isInputNum={true}\n                    shouldAutoFocus={true}\n                    renderInput={(props) => (\n                      <input {...props} placeholder=\"-\" />\n                    )}\n                    inputStyle={{\n                      border: \"1px solid rgba(13, 13, 13, 0.10)\",\n                      borderRadius: \"8px\",\n                      width: \"100%\",\n                      height: \"3.5rem\", // Adjusting for better responsiveness\n                      fontSize: \"1rem\", // 16px in rem\n                      color: \"rgba(13, 13, 13, 0.70)\",\n                      fontWeight: \"400\",\n                      marginRight: \"10px\",\n                    }}\n                    focusStyle={{\n                      border: \"1px solid blue\",\n                      boxShadow: \"0 0 5px rgba(0, 0, 255, 0.5)\",\n                    }}\n                    containerStyle={{\n                      display: \"flex\",\n                      justifyContent: \"center\", // Centering the OTP input fields\n                      gap: \"10px\", // Adding spacing between inputs\n                    }}\n                  />\n                </div>\n              </div>\n              <div>\n                <TextView label={t(\"NewPassword\")} ismandatory={true} />\n                <InputContainer\n                  type={showPassword ? \"text\" : \"password\"}\n                  value={password}\n                  placeholder={t(\"EnterNewPassword\")}\n                  label=\"password\"\n                  name=\"password\"\n                  disabled={false}\n                  maxLength={60}\n                  secureTextEntry={true}\n                  PasswordVisibility={PasswordVisibility}\n                  setshowPassword={showPassword}\n                  onChange={(e) => {\n                    setPassword(e.target.value);\n                    // setLogin({ ...login, password: e.target.value });\n                  }}\n                />\n              </div>\n              <PrimaryButton\n                label={t(\"SavePassword\")}\n                onClick={savePwdClick}\n                onDisable={isDisabled}\n              ></PrimaryButton>\n            </div>\n          </div>\n        </section>\n      )}\n    </>\n  );\n};\n\nexport default ResetPasswordOTP;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcDropdown(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6 9L12 15L18 9\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcDropdown);\nexport default __webpack_public_path__ + \"static/media/ic_dropdown.3a5a16441d8b2d666a12a5eb1579e7bc.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, useEffect, useRef } from \"react\";\nimport Loader from \"../../Utils/Loader\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as BackIcon } from \"../../assets/Images/ic_back.svg\";\nimport { ReactComponent as EmailIcon } from \"../../assets/Images/ic_email.svg\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { Images, isValidEmail } from \"../../Utils/Constants\";\nimport { toast } from \"react-toastify\";\nimport { mGetMaster, mGooglelogin, mLogin } from \"../../Services/allAPI\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setUser } from \"../../redux/slice/userSlice\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport { googleLogout, useGoogleLogin } from \"@react-oauth/google\";\nimport axios from \"axios\";\nimport { ReactComponent as Icondrop } from \"../../assets/Images/ic_dropdown.svg\";\nimport Headingtext from \"../../Components/Headingtext\";\nimport TextView from \"../../Components/TextView\";\nimport {\n  fetchDashboardData,\n  fetchMasterData,\n} from \"../../redux/slice/masterSlice\";\nimport LogoText from \"../../Components/LogoText\";\n\nconst Login = () => {\n  const [loading, setLoading] = useState(false);\n  const { t } = useTranslation(\"\");\n  const [email, setEmail] = useState(\"\");\n  const [showPassword, setShowPassword] = useState(false);\n  const [password, setPassword] = useState(\"\");\n  const [isChecked, setisChecked] = useState(false);\n  const dispatch = useDispatch();\n  const navigate = useNavigate();\n\n  // Get Deck id\n\n  const location = useLocation();\n  const mGetdeckId = location.state?.mdeckId || \"\";\n  const mGetdeckName = location.state?.mdeckName || \"\";\n\n  const PasswordVisibility = () => {\n    setShowPassword(!showPassword);\n  };\n\n  const handleCheckboxChange = (event) => {\n    setisChecked(event.target.checked);\n  };\n\n  const handlefwd = () => {\n    navigate(\"/resetpassword\");\n  };\n\n  const loginClick = () => {\n    if (!isValidEmail(email)) {\n      toast.error(t(\"vaildmail\"));\n      return;\n    }\n    LoginCall();\n  };\n\n  // Login API Call\n  const LoginCall = async () => {\n    setLoading(true);\n    const response = await mLogin({\n      email: email,\n      password: password,\n      deck_id: mGetdeckId,\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        // if (isChecked) {\n        dispatch(setUser({ user: response?.data.message.userinfo }));\n        localStorage.setItem(\n          \"UserInfo\",\n          JSON.stringify(response?.data.message.userinfo)\n        );\n        const savedData = localStorage.getItem(\"UserInfo\");\n        // console.log(savedData);\n        // }\n\n        navigate(\"/dashboard\");\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  const ClickCreateAccount = () => {\n    navigate(\"/signup\");\n  };\n\n  // Check Disable button\n  const isDisabled = !email || !password;\n\n  // Google login start\n\n  const [userImageBase64, setUserImageBase64] = useState(null);\n\n  const [userDetails, setUserDetails] = useState([]);\n  const [profile, setProfile] = useState([]);\n  const [profileLoaded, setProfileLoaded] = useState(false);\n  const [selectedOption, setSelectedOption] = useState(\"Select User Type\");\n\n  const googleLogin = useGoogleLogin({\n    onSuccess: (codeResponse) => setUserDetails(codeResponse),\n    onError: (error) => console.log(\"Login Failed:\", error),\n  });\n\n  const gmailLoginClick = () => {\n    if (selectedOption === \"Select User Type\") {\n      toast.error(\"Please Select User Type\");\n    } else {\n      googleLogin();\n      console.log(\"sghdkhg\");\n    }\n  };\n\n  // console.log(\"Google Login : \" + JSON.stringify(profile));\n  useEffect(() => {\n    //  MasterCall();\n    if (userDetails.length !== 0) {\n      axios\n        .get(\n          `https://www.googleapis.com/oauth2/v1/userinfo?access_token=${userDetails.access_token}`,\n          {\n            headers: {\n              Authorization: `Bearer ${userDetails.access_token}`,\n              Accept: \"application/json\",\n            },\n          }\n        )\n        .then((res) => {\n          setProfile(res.data);\n          convertToBase64(userDetails.picture);\n          setProfileLoaded(true);\n          if (profile.length !== 0) {\n            //\n            //   SignupCall();\n          }\n\n          //SignupCall();\n        })\n        .catch((err) => console.log(err));\n    }\n  }, [userDetails]);\n\n  useEffect(() => {\n    if (profileLoaded) {\n      // Convert image to base64 and then trigger the signup call\n      convertToBase64(profile.picture)\n        .then(() => {\n          if (profile.name) {\n            SignupCall(); // Call Signup API\n          }\n        })\n        .catch((err) => console.log(err));\n    }\n  }, [profileLoaded, profile]);\n\n  // Google login end\n\n  //Convert Google user image to base64\n  const convertToBase64 = async (imageUrl) => {\n    try {\n      const response = await fetch(imageUrl);\n      const blob = await response.blob();\n\n      const reader = new FileReader();\n      reader.onloadend = () => {\n        setUserImageBase64(reader.result); // This will be the base64 string\n      };\n      reader.readAsDataURL(blob);\n    } catch (error) {\n      console.error(\"Error converting image to base64:\", error);\n    }\n  };\n\n  // Signup API Call\n  const SignupCall = async () => {\n    setLoading(true);\n    //  console.log(\"Error\" + profile.name);\n    const response = await mGooglelogin({\n      user_name: profile.name,\n      email: profile.email,\n      user_type: selectedOption,\n      deck_id: \"\",\n      profile_image: \"\",\n      file_name: \"\",\n      file_type: \"\",\n      deal_name: \"\",\n      coupon_code: \"\",\n      company_name: \"\",\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        dispatch(setUser({ user: response?.data.message.user_info }));\n        localStorage.setItem(\n          \"UserInfo\",\n          JSON.stringify(response?.data.message.userinfo)\n        );\n        const savedData = localStorage.getItem(\"UserInfo\");\n        console.log(savedData);\n        //alert(JSON.stringify(savedData));\n\n        // console.log(savedData);\n        navigate(\"/dashboard\");\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  // Dropdown Start\n\n  const [isOpen, setIsOpen] = useState(false);\n  //const [userType, setuserType] = useState([]);\n\n  const toggleDropdown = () => {\n    setIsOpen(!isOpen);\n  };\n\n  const handleOptionClick = (option) => {\n    setSelectedOption(option);\n    setIsOpen(false);\n  };\n  //Dropdown end\n\n  // window.addEventListener(\"popstate\", () => {\n  //   alert(\"sdsdhg\");\n  // });\n\n  // Get Master data start\n\n  useEffect(() => {\n    dispatch(fetchMasterData());\n  }, [dispatch]);\n\n  const masterdataList = useSelector((state) => state.master.MasterdataList);\n  let status = useSelector((state) => state.master.status);\n  const error = useSelector((state) => state.master.error);\n\n  useEffect(() => {\n    if (masterdataList?.customer_group?.length > 0) {\n      setSelectedOption(masterdataList.customer_group[0].name);\n    }\n  }, [masterdataList]);\n\n  console.log(status);\n\n  if (status === \"loading\" || status === \"idle\") {\n    return (\n      <div>\n        <Loader />\n      </div>\n    );\n  }\n\n  if (status === \"failed\") {\n    return <div>Error: {error}</div>;\n  }\n\n  // Get master data end\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <section className=\"min-h-screen overflow-y-auto bg-red-400 flex flex-row\">\n          <div className=\" hidden lg:block w-3/5 bg-mwhite  flex-col items-start justify-start p-5\">\n            <div className=\"mt-3 ml-3\">\n              {/* <img\n                src={Images.zenpivot}\n                alt=\"google Icon\"\n                className=\" h-9 w-28\"\n              /> */}\n\n              <LogoText label={t(\"appname\")} />\n            </div>\n\n            <div className=\"w-full h-auto justify-center items-center flex\">\n              <img src={Images.loginbg} alt=\"login\" className=\"w-2/3 \" />\n            </div>\n          </div>\n          <div className=\" lg:w-2/5 w-full pl-5 py-5 lg:pl-20 lg:py-10 bg-mBackground items-center justify-start lg:justify-center flex \">\n            <div className=\"grid gap-7 grid-cols-1 w-11/12\">\n              <div>\n                <Headingtext label={t(\"LogIn\")} />\n              </div>\n\n              <div\n                className=\"h-14 w-full border border-mBorderColor hidden rounded-lg justify-center items-center flex cursor-pointer\"\n                onClick={gmailLoginClick}\n              >\n                <img\n                  src={Images.google}\n                  alt=\"google Icon\"\n                  className=\" w-6 h-6  cursor-pointer\"\n                />\n                <p className=\"font-PlusJakartaSansRegular font-normal text-base 3xl:text-lg ml-2\">\n                  {\" \"}\n                  {t(\"Google\")}\n                </p>\n              </div>\n\n              <div className=\"hidden flex items-center before:flex-1 before:border-t before:border-mBorderColor after:flex-1 after:border-t after:border-mBorderColor\">\n                <p className=\"mx-2 mb-0 text-center font-PlusJakartaSansRegular text-sm   text-mTextColorLogin\">\n                  {t(\"or\")}\n                </p>\n              </div>\n\n              <div>\n                <div className=\" \">\n                  <TextView label={t(\"Joinas\")} />\n\n                  <div className=\"border-mBorderColor h-12 3xl:h-14 rounded-lg p-3 w-full border bg-white mt-3 flex-row justify-between flex\">\n                    <div className=\" items-center justify-center flex  w-full\">\n                      <div className=\"relative  w-full\">\n                        <button\n                          className=\"custom-dropdown-toggle\"\n                          onClick={toggleDropdown}\n                        >\n                          <p\n                            className={`font-PlusJakartaSansRegular font-normal text-mTextColorLogin text-sm 3xl:text-base`}\n                          >\n                            {selectedOption}\n                          </p>\n                        </button>\n\n                        {/* Dropdown menu */}\n                        <ul\n                          className={`custom-dropdown-menu  ${\n                            isOpen ? \"show\" : \"\"\n                          }`}\n                        >\n                          {masterdataList.customer_group.map((option) => (\n                            <li\n                              key={option.name}\n                              className={`custom-dropdown-option ${\n                                selectedOption === option.name ? \"selected\" : \"\"\n                              }`}\n                              onClick={() => handleOptionClick(option.name)}\n                            >\n                              <p\n                                className={`font-PlusJakartaSansRegular font-normal text-mTextColorLogin text-sm 3xl:text-base ${\n                                  selectedOption === option.name\n                                    ? \"text-white\"\n                                    : \"text-mTextColorLogin\"\n                                }`}\n                              >\n                                {option.name}\n                              </p>\n                            </li>\n                          ))}\n                        </ul>\n                      </div>\n                    </div>\n                    <Icondrop className=\"w-6 h-6 flex-shrink-0\" />\n                  </div>\n                </div>\n\n                <div>\n                  <div className=\"mt-4\">\n                    <TextView label={t(\"EMail\")} ismandatory={true} />\n                  </div>\n\n                  <InputContainer\n                    type=\"email\"\n                    value={email}\n                    placeholder={t(\"Enteryouremail\")}\n                    label=\"email\"\n                    name=\"email\"\n                    disabled={false}\n                    maxLength={60}\n                    showIcon={true}\n                    Icon={EmailIcon}\n                    onChange={(e) => {\n                      setEmail(e.target.value);\n                      // setforgetPwd({ ...forgetPwd, email: event.target.value });\n                    }}\n                  />\n                </div>\n\n                <div>\n                  <div className=\"mt-4\">\n                    <TextView label={t(\"Password\")} ismandatory={true} />\n                  </div>\n                  <InputContainer\n                    type={showPassword ? \"text\" : \"password\"}\n                    value={password}\n                    placeholder={t(\"EnterPassword\")}\n                    label=\"password\"\n                    name=\"password\"\n                    disabled={false}\n                    maxLength={60}\n                    secureTextEntry={true}\n                    PasswordVisibility={PasswordVisibility}\n                    setshowPassword={showPassword}\n                    onChange={(e) => {\n                      setPassword(e.target.value);\n                      // setLogin({ ...login, password: e.target.value });\n                    }}\n                  />\n                </div>\n\n                <div className=\"w-full flex flex-row  items-center mt-8\">\n                  <div className=\"w-1/2\">\n                    <div className=\"flex flex-col\">\n                      <div className=\"flex items-center\">\n                        <input\n                          type=\"checkbox\"\n                          id=\"privacyTermsCheckbox\"\n                          checked={isChecked}\n                          onChange={handleCheckboxChange}\n                          className=\"form-checkbox h-4 w-4 \"\n                        />\n                        <label\n                          htmlFor=\"privacyTermsCheckbox\"\n                          className=\"ml-2 text-sm 3xl:text-base text-mTextColorLogin font-PlusJakartaSansRegular\"\n                        >\n                          {t(\"RememberMe\")}\n                        </label>\n                      </div>\n                    </div>\n                  </div>\n\n                  <div className=\"w-1/2\">\n                    <p\n                      className=\"text-right font-PlusJakartaSansSemiBold text-sm 3xl:text-base text-mButtonColor cursor-pointer\"\n                      onClick={handlefwd}\n                    >\n                      Forget Password?\n                    </p>\n                  </div>\n                </div>\n\n                <div className=\"mt-4\">\n                  <PrimaryButton\n                    label={t(\"login\")}\n                    onClick={loginClick}\n                    onDisable={isDisabled}\n                  ></PrimaryButton>\n                </div>\n                <div className=\"flex-row flex justify-center mt-4\">\n                  <p className=\"text-center font-PlusJakartaSansRegular text-sm 3xl:text-base text-mTextColorLogin\">\n                    {t(\"noaccount\")}\n                  </p>\n                  <button\n                    className=\"text-center font-PlusJakartaSansSemiBold text-sm 3xl:text-base text-mButtonColor ml-2\"\n                    onClick={ClickCreateAccount}\n                  >\n                    {t(\"Signup\")}\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </section>\n      )}\n    </>\n  );\n};\n\nexport default Login;\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcUser(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M16 7C16 9.20914 14.2091 11 12 11C9.79086 11 8 9.20914 8 7C8 4.79086 9.79086 3 12 3C14.2091 3 16 4.79086 16 7Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12 14C8.13401 14 5 17.134 5 21H19C19 17.134 15.866 14 12 14Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcUser);\nexport default __webpack_public_path__ + \"static/media/ic_user.a08fd53015023fe6a239d1d7c42700d9.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, useEffect, useRef } from \"react\";\nimport Loader from \"../../Utils/Loader\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as UserIcon } from \"../../assets/Images/ic_user.svg\";\nimport { ReactComponent as EmailIcon } from \"../../assets/Images/ic_email.svg\";\nimport { ReactComponent as Icondrop } from \"../../assets/Images/ic_dropdown.svg\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { Images, isValidEmail, mTimerValue } from \"../../Utils/Constants\";\nimport { toast } from \"react-toastify\";\nimport {\n  mGetMaster,\n  mGooglelogin,\n  mLogin,\n  mSignup,\n} from \"../../Services/allAPI\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setUser } from \"../../redux/slice/userSlice\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport \"../../assets/DropdownMenu.css\";\nimport { googleLogout, useGoogleLogin } from \"@react-oauth/google\";\nimport axios from \"axios\";\nimport Headingtext from \"../../Components/Headingtext\";\nimport TextView from \"../../Components/TextView\";\nimport { fetchMasterData } from \"../../redux/slice/masterSlice\";\nimport LogoText from \"../../Components/LogoText\";\n\nconst Signup = () => {\n  const [loading, setLoading] = useState(false);\n  const { t } = useTranslation(\"\");\n  const [email, setEmail] = useState(\"\");\n  const [name, setName] = useState(\"\");\n  const [showPassword, setShowPassword] = useState(false);\n  const [password, setPassword] = useState(\"\");\n  const [invitecode, setInvitecode] = useState(\"\");\n  const [companyname, setCompanyname] = useState(\"\");\n  const [isChecked, setisChecked] = useState(false);\n  const dispatch = useDispatch();\n  const navigate = useNavigate();\n  const [userImageBase64, setUserImageBase64] = useState(null);\n\n  const [userType, setuserType] = useState([]);\n  // Set Progressbar\n  const [progress, setProgress] = useState(0);\n  const [isRunning, setIsRunning] = useState(true);\n\n  // Get Deck id\n\n  const location = useLocation();\n  const mGetdeckId = location.state?.mdeckId || \"\";\n  const mGetdeckName = location.state?.mdeckName || \"\";\n\n  // Google login start\n\n  const [userDetails, setUserDetails] = useState([]);\n  const [profile, setProfile] = useState([]);\n  const [profileLoaded, setProfileLoaded] = useState(false);\n  const [timerStart, settimerStart] = useState(false);\n\n  const googleLogin = useGoogleLogin({\n    onSuccess: (codeResponse) => setUserDetails(codeResponse),\n    onError: (error) => console.log(\"Login Failed:\", error),\n  });\n\n  const gmailLoginClick = () => {\n    console.log(\"sghdkhg\");\n    if (selectedOption === \"Select User Type\") {\n      toast.error(\"Please Select User Type\");\n    } else if (invitecode === \"\") {\n      toast.error(\"Please enter vaild invite code\");\n    } else {\n      googleLogin();\n      console.log(\"sghdkhg\");\n    }\n  };\n\n  console.log(\"Google Login : \" + JSON.stringify(profile));\n  useEffect(() => {\n    if (userDetails.length !== 0) {\n      axios\n        .get(\n          `https://www.googleapis.com/oauth2/v1/userinfo?access_token=${userDetails.access_token}`,\n          {\n            headers: {\n              Authorization: `Bearer ${userDetails.access_token}`,\n              Accept: \"application/json\",\n            },\n          }\n        )\n        .then((res) => {\n          setProfile(res.data);\n          convertToBase64(userDetails.picture);\n          setProfileLoaded(true);\n          if (profile.length !== 0) {\n            //\n            //   SignupCall();\n          }\n\n          //SignupCall();\n        })\n        .catch((err) => console.log(err));\n    }\n  }, [userDetails]);\n\n  useEffect(() => {\n    if (profileLoaded) {\n      // Convert image to base64 and then trigger the signup call\n      convertToBase64(profile.picture)\n        .then(() => {\n          if (profile.name) {\n            SignupCall(); // Call Signup API\n          }\n        })\n        .catch((err) => console.log(err));\n    }\n  }, [profileLoaded, profile]);\n\n  // Google login end\n\n  if (!location.state || !location.state.mdeckId) {\n  } else {\n  }\n\n  // One min interval\n  useEffect(() => {\n    if (!isRunning) return;\n\n    const intervalTime = mTimerValue / 100; // Update every 0.6 seconds (1% of 60 seconds)\n\n    const interval = setInterval(() => {\n      setProgress((prevProgress) => {\n        if (prevProgress >= 100) {\n          clearInterval(interval);\n          return 100;\n        }\n        return prevProgress + 1;\n      });\n    }, intervalTime);\n\n    return () => clearInterval(interval);\n  }, [isRunning]);\n\n  //Convert Google user image to base64\n  const convertToBase64 = async (imageUrl) => {\n    try {\n      const response = await fetch(imageUrl);\n      const blob = await response.blob();\n\n      const reader = new FileReader();\n      reader.onloadend = () => {\n        setUserImageBase64(reader.result); // This will be the base64 string\n      };\n      reader.readAsDataURL(blob);\n    } catch (error) {\n      console.error(\"Error converting image to base64:\", error);\n    }\n  };\n\n  // Signup API Call\n  const SignupCall = async () => {\n    setLoading(true);\n    console.log(\"Error\" + profile.name);\n    const response = await mGooglelogin({\n      user_name: profile.name,\n      email: profile.email,\n      user_type: selectedOption,\n      deck_id: mGetdeckId,\n      file_name: \"\",\n      file_type: \"\",\n      profile_image: \"\",\n      deal_name: \"\",\n      coupon_code: invitecode,\n      company_name: companyname,\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        dispatch(setUser({ user: response?.data.message.userinfo }));\n\n        toast.success(response?.data.message.message);\n\n        localStorage.setItem(\n          \"UserInfo\",\n          JSON.stringify(response?.data.message.userinfo)\n        );\n        const savedData = localStorage.getItem(\"UserInfo\");\n        console.log(savedData);\n        //  alert(JSON.stringify(savedData));\n        if (mGetdeckId.length !== 0) {\n          navigate(\"/question\", {\n            state: {\n              mdeckId: mGetdeckId,\n              mdeckName: mGetdeckName,\n            },\n          });\n        } else {\n          navigate(\"/dashboard\");\n        }\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  const PasswordVisibility = () => {\n    setShowPassword(!showPassword);\n  };\n\n  const handleCheckboxChange = (event) => {\n    setisChecked(event.target.checked);\n  };\n\n  const registerClick = () => {\n    if (!isValidEmail(email)) {\n      toast.error(t(\"vaildmail\"));\n      return;\n    }\n    NormalSignupCall();\n  };\n\n  // Login API Call\n  const NormalSignupCall = async () => {\n    setLoading(true);\n    const response = await mSignup({\n      email: email,\n      password: password,\n      user_type: selectedOption,\n      deck_id: mGetdeckId,\n      user_name: name,\n      deal_name: \"\",\n      coupon_code: invitecode,\n      company_name: companyname,\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        dispatch(setUser({ user: response?.data.message.userinfo }));\n\n        toast.success(response?.data.message.message);\n\n        localStorage.setItem(\n          \"UserInfo\",\n          JSON.stringify(response?.data.message.userinfo)\n        );\n        const savedData = localStorage.getItem(\"UserInfo\");\n        console.log(savedData);\n        if (mGetdeckId.length !== 0) {\n          ///question\n          navigate(\"/dashboard\", {\n            state: {\n              mdeckId: mGetdeckId,\n              mdeckName: mGetdeckName,\n            },\n          });\n        } else {\n          navigate(\"/dashboard\");\n        }\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  const loginClick = () => {\n    navigate(\"/login\", {\n      state: {\n        mdeckId: mGetdeckId,\n        mdeckName: mGetdeckName,\n      },\n    });\n    //  navigate(\"/login\");\n  };\n\n  const [isOpen, setIsOpen] = useState(false);\n  const [selectedOption, setSelectedOption] = useState(\"Select User Type\");\n\n  const toggleDropdown = () => {\n    setIsOpen(!isOpen);\n  };\n\n  const handleOptionClick = (option) => {\n    setSelectedOption(option);\n    setIsOpen(false);\n  };\n\n  const masterdataList = useSelector((state) => state.master.MasterdataList);\n  let status = useSelector((state) => state.master.status);\n  const error = useSelector((state) => state.master.error);\n\n  // Get Master data start\n\n  useEffect(() => {\n    dispatch(fetchMasterData());\n\n    // alert(JSON.stringify(masterdataList.customer_group[0].name));\n  }, [dispatch]);\n\n  useEffect(() => {\n    if (masterdataList?.customer_group?.length > 0) {\n      setSelectedOption(masterdataList.customer_group[0].name);\n    }\n  }, [masterdataList]);\n\n  console.log(status);\n\n  if (status === \"loading\" || status === \"idle\") {\n    return (\n      <div>\n        <Loader />\n      </div>\n    );\n  }\n\n  if (status === \"failed\") {\n    return <div>Error: {error}</div>;\n  }\n\n  // Get master data end\n\n  // Check Disable button\n  const isDisabled =\n    !name ||\n    !email ||\n    !password ||\n    !isChecked ||\n    !invitecode ||\n    selectedOption === \"Select User Type\" ||\n    (mGetdeckId.length !== 0 && isRunning && progress !== 100);\n\n  const isLoginDisbled =\n    mGetdeckId.length !== 0 && isRunning && progress !== 100;\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <section className=\"min-h-screen flex flex-row\">\n          <div className=\"w-3/5 hidden lg:block bg-mwhite  flex-col items-start justify-start p-5\">\n            <div className=\"mt-3 ml-3\">\n              {/* <img src={Images.zenpivot} alt=\"google Icon\" className=\" \" /> */}\n              <LogoText label={t(\"appname\")} />\n            </div>\n\n            <div className=\"w-full h-auto justify-center items-center flex\">\n              <img src={Images.loginbg} alt=\"login\" className=\"w-2/3 \" />\n            </div>\n          </div>\n          <div className=\" lg:w-2/5 w-full pl-5 py-5 lg:pl-20 lg:py-10  bg-mBackground items-center justify-start flex \">\n            <div className=\"grid gap-7 grid-cols-1 w-11/12\">\n              <div>\n                <Headingtext label={t(\"Signup\")} />\n              </div>\n\n              <div\n                className={` hidden h-14 w-full border border-mBorderColor rounded-lg justify-center items-center flex ${\n                  isLoginDisbled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n                }`}\n                // onClick={googleloginClick}\n                onClick={gmailLoginClick}\n                disabled={isLoginDisbled}\n              >\n                <img\n                  src={Images.google}\n                  alt=\"Upload Icon\"\n                  className={`w-6 h-6 `}\n                />\n                <p className=\"font-PlusJakartaSansRegular font-normal text-base 3xl:text-base ml-2\">\n                  {\" \"}\n                  {t(\"Google\")}\n                </p>\n              </div>\n\n              <div className=\"hidden flex items-center before:flex-1 before:border-t before:border-mBorderColor after:flex-1 after:border-t after:border-mBorderColor\">\n                <p className=\"mx-2 mb-0 text-center font-PlusJakartaSansRegular text-sm   text-mTextColorLogin\">\n                  {t(\"or\")}\n                </p>\n              </div>\n              <div>\n                <div className=\" \">\n                  <TextView label={t(\"Joinas\")} ismandatory={true} />\n\n                  <div className=\"border-mBorderColor h-14 rounded-lg p-3 w-full border bg-white mt-3 flex-row justify-between flex\">\n                    <div className=\" items-center justify-center flex w-full\">\n                      <div className=\"relative  w-full\">\n                        <button\n                          className=\"custom-dropdown-toggle\"\n                          onClick={toggleDropdown}\n                        >\n                          <p\n                            className={`font-PlusJakartaSansRegular font-normal text-mTextColorLogin text-sm 3xl:text-base `}\n                          >\n                            {selectedOption}\n                          </p>\n                        </button>\n\n                        {/* Dropdown menu */}\n                        <ul\n                          className={`custom-dropdown-menu  ${\n                            isOpen ? \"show\" : \"\"\n                          }`}\n                        >\n                          {masterdataList.customer_group.map((option) => (\n                            <li\n                              key={option.name}\n                              className={`custom-dropdown-option ${\n                                selectedOption === option.name ? \"selected\" : \"\"\n                              }`}\n                              onClick={() => handleOptionClick(option.name)}\n                            >\n                              <p\n                                className={`font-PlusJakartaSansRegular font-normal text-mTextColorLogin text-sm 3xl:text-base ${\n                                  selectedOption === option.name\n                                    ? \"text-white\"\n                                    : \"text-mTextColorLogin\"\n                                }`}\n                              >\n                                {option.name}\n                              </p>\n                            </li>\n                          ))}\n                        </ul>\n                      </div>\n                    </div>\n                    <Icondrop className=\"w-6 h-6 flex-shrink-0\" />\n                  </div>\n                </div>\n\n                <div>\n                  <div className=\"mt-4\">\n                    <TextView label={t(\"Name\")} ismandatory={true} />\n                  </div>\n                  <InputContainer\n                    type=\"text\"\n                    value={name}\n                    placeholder={t(\"EnterYourName\")}\n                    label=\"text\"\n                    name=\"text\"\n                    disabled={false}\n                    maxLength={60}\n                    showIcon={true}\n                    Icon={UserIcon}\n                    onChange={(e) => {\n                      setName(e.target.value);\n                      // setforgetPwd({ ...forgetPwd, email: event.target.value });\n                    }}\n                  />\n                </div>\n\n                <div>\n                  <div className=\"mt-4\">\n                    <TextView label={t(\"EMail\")} ismandatory={true} />\n                  </div>\n                  <InputContainer\n                    type=\"email\"\n                    value={email}\n                    placeholder={t(\"Enteryouremail\")}\n                    label=\"email\"\n                    name=\"email\"\n                    disabled={false}\n                    maxLength={60}\n                    showIcon={true}\n                    Icon={EmailIcon}\n                    onChange={(e) => {\n                      setEmail(e.target.value);\n                      // setforgetPwd({ ...forgetPwd, email: event.target.value });\n                    }}\n                  />\n                </div>\n\n                <div>\n                  <div className=\"mt-4\">\n                    <TextView label={t(\"Password\")} ismandatory={true} />\n                  </div>\n                  <InputContainer\n                    type={showPassword ? \"text\" : \"password\"}\n                    value={password}\n                    placeholder={t(\"EnterPassword\")}\n                    label=\"password\"\n                    name=\"password\"\n                    disabled={false}\n                    maxLength={60}\n                    secureTextEntry={true}\n                    PasswordVisibility={PasswordVisibility}\n                    setshowPassword={showPassword}\n                    onChange={(e) => {\n                      setPassword(e.target.value);\n                      // setLogin({ ...login, password: e.target.value });\n                    }}\n                  />\n                </div>\n\n                <div>\n                  <div className=\"mt-4\">\n                    <TextView label={t(\"referralcode\")} ismandatory={true} />\n                  </div>\n                  <InputContainer\n                    type={\"text\"}\n                    value={invitecode}\n                    placeholder={t(\"enterreferralcode\")}\n                    label=\"referralcode\"\n                    name=\"passwreferralcodeord\"\n                    disabled={false}\n                    maxLength={8}\n                    secureTextEntry={false}\n                    onChange={(e) => {\n                      setInvitecode(e.target.value);\n                      // setLogin({ ...login, password: e.target.value });\n                    }}\n                  />\n                </div>\n\n                <div>\n                  <div className=\"mt-4\">\n                    <TextView label={t(\"company\")} ismandatory={false} />\n                  </div>\n                  <InputContainer\n                    type={\"text\"}\n                    value={companyname}\n                    placeholder={t(\"entercompany\")}\n                    label=\"entercompany\"\n                    name=\"entercompany\"\n                    disabled={false}\n                    maxLength={1000}\n                    secureTextEntry={false}\n                    onChange={(e) => {\n                      setCompanyname(e.target.value);\n                      // setLogin({ ...login, password: e.target.value });\n                    }}\n                  />\n                </div>\n\n                {mGetdeckId.length !== 0 ? (\n                  <div className=\"mt-10\">\n                    <ProgressBar progress={progress} />\n                    <p className=\"font-PlusJakartaSansRegular text-mTextColor font-normal text-sm mt-2\">\n                      {mGetdeckName}\n                    </p>\n                  </div>\n                ) : (\n                  <div></div>\n                )}\n\n                <div className=\"w-full flex flex-row  items-center mt-8\">\n                  <div className=\"flex flex-col\">\n                    <div className=\"flex items-center\">\n                      <input\n                        type=\"checkbox\"\n                        id=\"privacyTermsCheckbox\"\n                        checked={isChecked}\n                        onChange={handleCheckboxChange}\n                        className=\"form-checkbox h-4 w-4 \"\n                      />\n\n                      <label\n                        htmlFor=\"privacyTermsCheckbox\"\n                        className=\"ml-2  text-mTextColorLogin text-sm 3xl:text-base font-PlusJakartaSansRegular\"\n                      >\n                        {t(\"Iagreetothe\")}{\" \"}\n                        {/* <a\n                          href=\"https://theprevc.webflow.io/privacy-policy\"\n                          target=\"_blank\"\n                          rel=\"noopener noreferrer\"\n                          className=\"text-mButtonColor hover:underline text-sm 3xl:text-base font-PlusJakartaSansRegular\"\n                        >\n                          {t(\"TermsOfUse\")}\n                        </a>{\" \"}\n                        {t(\"and\")}{\" \"} */}\n                        <a\n                          href=\"https://www.theprevc.com/privacy-policy\"\n                          target=\"_blank\"\n                          rel=\"noopener noreferrer\"\n                          className=\"text-mButtonColor hover:underline text-sm 3xl:text-base font-PlusJakartaSansRegular\"\n                        >\n                          {t(\"PrivacyPolicy\")}\n                        </a>\n                        .\n                      </label>\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"mt-4\">\n                  <PrimaryButton\n                    label={t(\"Signup\")}\n                    onClick={registerClick}\n                    onDisable={isDisabled}\n                  ></PrimaryButton>\n                </div>\n                <div className=\"flex-row flex justify-center mt-4\">\n                  <p className=\"text-center font-PlusJakartaSansRegular text-sm 3xl:text-base text-mTextColorLogin\">\n                    {t(\"alreadyaccount\")}\n                  </p>\n                  <button\n                    className={`text-center font-PlusJakartaSansSemiBold text-sm  3xl:text-base ml-2 ${\n                      isLoginDisbled\n                        ? \"text-mButtonDisable cursor-not-allowed\"\n                        : \"text-mButtonColor\"\n                    } `}\n                    onClick={loginClick}\n                    disabled={isLoginDisbled}\n                  >\n                    {t(\"login\")}\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </section>\n      )}\n    </>\n  );\n};\n\nconst ProgressBar = ({ progress }) => {\n  return (\n    <div className=\"bg-mBorderColor rounded-md\">\n      <div\n        className=\"progress-bar\"\n        style={{\n          width: `${progress}%`,\n          backgroundColor: progress < 100 ? \"#3A7D50\" : \"#3A7D50\",\n          overflow: \"hidden\",\n          position: \"relative\",\n        }}\n      >\n        <span\n          className=\"progress-text font-PlusJakartaSansSemiBold text-base\"\n          style={{}}\n        >\n          {progress}%\n        </span>\n      </div>\n    </div>\n  );\n};\n\nexport default Signup;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcSparkles(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 21,\n    viewBox: \"0 0 20 21\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4.16683 6.33317V9.6665M8.33349 2.1665V5.49984M15.0002 13.8332V17.1665M2.50016 7.99984H5.83349M6.66683 3.83317H10.0002M13.3335 15.4998H16.6668M11.6668 6.33317L14.0238 8.69019M16.264 3.6216L16.7354 4.09301C17.0654 4.42302 17.2304 4.58803 17.2923 4.7783C17.3466 4.94567 17.3466 5.12596 17.2923 5.29333C17.2304 5.4836 17.0654 5.64861 16.7354 5.97862L5.43805 17.276C5.10804 17.606 4.94303 17.771 4.75276 17.8328C4.58539 17.8872 4.4051 17.8872 4.23773 17.8328C4.04746 17.771 3.88245 17.606 3.55243 17.276L3.08103 16.8046C2.75102 16.4746 2.58601 16.3096 2.52418 16.1193C2.4698 15.9519 2.4698 15.7716 2.52418 15.6043C2.58601 15.414 2.75102 15.249 3.08103 14.919L14.3784 3.6216C14.7084 3.29159 14.8734 3.12658 15.0637 3.06476C15.2311 3.01037 15.4113 3.01037 15.5787 3.06476C15.769 3.12658 15.934 3.29159 16.264 3.6216Z\",\n    stroke: \"white\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcSparkles);\nexport default __webpack_public_path__ + \"static/media/ic_sparkles.b7643d50a2427b41f9cbf8c9bc6c568d.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useCallback } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as SparklesIcon } from \"../assets/Images/ic_sparkles_green.svg\";\nimport { useNavigate } from \"react-router-dom\";\nimport TextView from \"./TextView\";\n\nconst FirstPdfUploader = ({\n  onFileSelect,\n  Onlogin,\n  hidelogin,\n  isBorder,\n  mClickstatus,\n  subscriptionstatus,\n  balancedeck,\n}) => {\n  //alert(balancedeck);\n  const onDrop = useCallback(\n    (acceptedFiles) => {\n      // Ensure that only PDF files are accepted\n      const pdfFiles = acceptedFiles.filter(\n        (file) => file.type === \"application/pdf\"\n      );\n      if (pdfFiles.length > 0) {\n        // alert(pdfFiles[0]);\n        onFileSelect(pdfFiles[0]); // Pass the selected file back to the parent component\n      } else {\n        /// alert(\"Accpet only PDF\");\n      }\n    },\n    [onFileSelect]\n  );\n\n  const { getRootProps, getInputProps, isDragActive } = useDropzone({\n    onDrop,\n\n    accept: {\n      \"application/pdf\": [\".pdf\"], // Accept only PDF files\n    },\n    // disabled: balancedeck > 0 ? false : true,\n    // disabled: !subscriptionstatus || balancedeck === 0 ? false : true,\n    // disabled: !subscriptionstatus && balancedeck === 0,\n  });\n\n  const { t } = useTranslation(\"\");\n  const navigate = useNavigate();\n\n  const mBackClick = () => {\n    navigate(\"/login\");\n  };\n\n  return (\n    <div\n      className={`mt-8 border    ${mClickstatus ? \"pointer-events-none\" : \"\"} ${\n        mClickstatus ? \"cursor-not-allowed\" : \"cursor-pointer\"\n      } ${\n        isBorder\n          ? \"h-72 3xl:h-96 border-mBorderColor\"\n          : \"h-72 3xl:h-96 border-white\"\n      } w-full rounded-2xl bg-white justify-center items-center flex flex-col`}\n      {...getRootProps()}\n    >\n      <div className=\"h-14 3xl:h-14 w-3/4 lg:w-1/2 rounded-lg bg-mButtonColorligth items-center justify-center flex px-4 py-3\">\n        <SparklesIcon className=\"w-6 h-6 3xl:w-8 3xl:h-8 flex-shrink-0 cursor-pointer\" />\n        <p className=\"ml-2 font-PlusJakartaSansSemiBold text-mButtonColor text-base 3xl:text-lg\">\n          {\" \"}\n          {t(\"UploadPitchDeck\")}{\" \"}\n        </p>\n      </div>\n      <input\n        {...getInputProps()}\n        className=\"\"\n        id=\"file\"\n        type=\"file\"\n        accept=\".pdf\"\n        style={{ display: \"none\" }}\n      />\n      <div className=\"w-1/2 mt-4\">\n        <div className=\"flex items-center before:flex-1 before:border-t before:border-mBorderColor after:flex-1 after:border-t after:border-mBorderColor\">\n          <p className=\"mx-2 mb-0 text-center font-PlusJakartaSansRegular text-sm  3xl:text-base  text-mTextColorLogin\">\n            {t(\"or\")}\n          </p>\n        </div>\n      </div>\n      <div className=\"w-1/2 mt-4\">\n        <div className=\"mx-2 justify-center items-center w-full flex\">\n          <TextView isCenter={true} label={t(\"draganddrop\")} />\n        </div>\n      </div>\n\n      {/* {!subscriptionstatus || balancedeck === 0 ? (\n        <div class=\"flex flex-col justify-end mt-4\">\n          <p class=\" font-PlusJakartaSansRegular font-normal text-mTextColor text-sm  xl:text-base 3xl:text-lg text-center p-4\">\n            Your subscription end. Please purchase\n          </p>\n        </div>\n      ) : (\n        <div></div>\n      )} */}\n    </div>\n  );\n};\n\nexport default FirstPdfUploader;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport Loader from \"../../Utils/Loader\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as BackIcon } from \"../../assets/Images/ic_back.svg\";\nimport { ReactComponent as SparklesIcon } from \"../../assets/Images/ic_sparkles.svg\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { Images, isValidEmail } from \"../../Utils/Constants\";\nimport { toast } from \"react-toastify\";\nimport { useNavigate } from \"react-router-dom\";\nimport PdfUploader from \"../../Components/PdfUploader\";\nimport { mUploadDeck } from \"../../Services/allAPI\";\nimport Headingtext from \"../../Components/Headingtext\";\nimport TextView from \"../../Components/TextView\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { removeUser } from \"../../redux/slice/userSlice\";\nimport DeleteDialog from \"../../Components/DeleteDialog\";\nimport LogoText from \"../../Components/LogoText\";\nimport FirstPdfUploader from \"../../Components/FirstPdfUploader\";\n\nconst Uploadpicthdeck = () => {\n  const [loading, setLoading] = useState(false);\n  const { t } = useTranslation(\"\");\n  const [email, setEmail] = useState(\"\");\n  const navigate = useNavigate();\n  const [base64, setBase64] = useState(\"\");\n  const [FileName, setFileName] = useState(\"\");\n  const [deckId, setdeckId] = useState(\"\");\n  const dispatch = useDispatch();\n\n  // Clear local stoage\n\n  localStorage.clear();\n  dispatch(removeUser());\n\n  //Send OTP Click\n\n  const sendOTPClick = () => {\n    if (!isValidEmail(email)) {\n      toast.error(t(\"vaildmail\"));\n      return;\n    }\n    ForgetPwdCall();\n  };\n\n  const ForgetPwdCall = async () => {\n    navigate(\"/resetpasswordotp\");\n  };\n\n  const mBackClick = () => {\n    navigate(\"/login\");\n  };\n\n  const loginClick = () => {\n    navigate(\"/login\");\n  };\n\n  const registerClick = () => {\n    navigate(\"/signup\");\n  };\n\n  // Check Disable button\n  const isDisabled = !email;\n\n  const handleFileSelect1 = async (file) => {\n    //  setSelectedFile(file);\n    console.log(file);\n\n    if (!file) {\n      alert(\"Please select a file first!\");\n      return;\n    }\n\n    const base64String = await convertToBase64(file);\n    setBase64(base64String);\n\n    console.log(\"Base64 String:\", base64String);\n\n    var mCropImage = \"\";\n\n    if (base64String.length === 0) {\n      mCropImage = base64String.replace(\"data:application/pdf;base64,\", \"\");\n    } else {\n      mCropImage = base64String.replace(\"data:application/pdf;base64,\", \"\");\n    }\n\n    // console.log(mCropImage);\n    setFileName(file.name);\n    setLoading(true);\n    const response = await mUploadDeck({\n      deck_name: file.name,\n      deck_doc: mCropImage,\n    });\n    console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        // toast.success(response?.data.message.message);\n\n        setdeckId(response?.data.message.deck_id);\n\n        navigate(\"/signup\", {\n          state: {\n            mdeckId: response?.data.message.deck_id,\n            mdeckName: file.name,\n          },\n        });\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  //Function to convert file to Base64\n  const convertToBase64 = (file) => {\n    console.log(file);\n    return new Promise((resolve, reject) => {\n      const reader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => resolve(reader.result);\n      reader.onerror = (error) => reject(error);\n    });\n  };\n\n  const skipclick = () => {\n    navigate(\"/login\");\n  };\n\n  // if (typeof window.localStorage !== \"undefined\") {\n  //   alert(\"localStorage is supported\");\n  // } else {\n  //   alert(\"localStorage is not supported in this browser\");\n  // }\n\n  // State to store screen width and height\n  const [windowSize, setWindowSize] = useState({\n    width: window.innerWidth,\n    height: window.innerHeight,\n  });\n\n  // Function to update state with new screen size\n  const handleResize = () => {\n    setWindowSize({\n      width: window.innerWidth,\n      height: window.innerHeight,\n    });\n  };\n\n  // Add an event listener when the component mounts\n  useEffect(() => {\n    window.addEventListener(\"resize\", handleResize);\n\n    // Clean up event listener when the component unmounts\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  }, []);\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <section className=\"min-h-screen w-full flex flex-row justify-center\">\n          <div className=\" hidden lg:block w-3/5 bg-mwhite  flex-col items-start justify-start p-5\">\n            <div className=\"mt-3 ml-3\">\n              {/* <img\n                src={Images.zenpivot}\n                alt=\"google Icon\"\n                className=\" h-9 w-28\"\n              /> */}\n              <LogoText label={t(\"appname\")} />\n            </div>\n\n            {/* <div>\n              <h1>Screen Size</h1>\n              <p>Width: {windowSize.width}px</p>\n              <p>Height: {windowSize.height}px</p>\n            </div> */}\n\n            <div className=\"w-full h-auto justify-center items-center flex\">\n              <img src={Images.pitchdeckbg} alt=\"login\" className=\"w-2/3 \" />\n            </div>\n          </div>\n          <div className=\" lg:w-2/5 w-full pl-2 py-5 lg:pl-20 lg:py-10 items-center justify-center lg:items-start lg:justify-start bg-mBackground  flex-col flex \">\n            <div className=\"w-11/12 h-full \">\n              <div className=\"grid gap-2 grid-cols-4 h-2 mt-3 items-center justify-center \">\n                <div className=\" h-1 bg-mButtonColor rounded-full\"></div>\n                <div className=\" h-1 bg-mTextColorLogin rounded-full\"></div>\n                <div className=\" h-1 bg-mTextColorLogin rounded-full\"></div>\n                <div className=\" h-1 bg-mTextColorLogin rounded-full\"></div>\n              </div>\n\n              <div className=\"mt-4  w-full justify-between flex\">\n                <div>\n                  <p className=\"text-mTextColor font-PlusJakartaSansMedium text-sm  3xl:text-base\">\n                    Step 1 / 4\n                  </p>\n                </div>\n\n                <div onClick={() => skipclick()}>\n                  <p className=\"text-mTextColor font-PlusJakartaSansMedium text-sm 3xl:text-base cursor-pointer\">\n                    {t(\"skip\")}\n                  </p>\n                </div>\n              </div>\n\n              <div className=\"mt-10 w-full p-2  items-center justify-center flex-col flex\">\n                <div>\n                  <Headingtext label={t(\"UploadPitchDeck\")} />\n                </div>\n\n                <div className=\"mt-4 items-center justify-center flex\">\n                  <TextView isCenter={true} label={t(\"UploadPitchDeckmsg\")} />\n                </div>\n\n                <FirstPdfUploader\n                  onFileSelect={handleFileSelect1}\n                  hidelogin={0}\n                />\n              </div>\n\n              <div\n                className=\"h-14 w-full mt-10 bg-mButtonColorligth rounded-lg items-center justify-center flex cursor-pointer\"\n                onClick={registerClick}\n              >\n                <p className=\"ml-2 font-PlusJakartaSansSemiBold text-mButtonColor text-base 3xl:text-base\">\n                  {\" \"}\n                  {t(\"Signup\")}{\" \"}\n                </p>\n              </div>\n\n              <div className=\"flex-row flex justify-center mt-4\">\n                <p className=\"text-center font-PlusJakartaSansRegular text-sm  3xl:text-base text-mTextColorLogin\">\n                  {t(\"alreadyaccount\")}\n                </p>\n                <button\n                  className=\"text-center font-PlusJakartaSansSemiBold text-sm  3xl:text-base text-mButtonColor ml-2\"\n                  onClick={loginClick}\n                >\n                  {t(\"login\")}\n                </button>\n              </div>\n            </div>\n          </div>\n        </section>\n      )}\n    </>\n  );\n};\n\nexport default Uploadpicthdeck;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport Loader from \"../../Utils/Loader\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as BackIcon } from \"../../assets/Images/ic_back.svg\";\nimport { ReactComponent as SparklesIcon } from \"../../assets/Images/ic_sparkles.svg\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { Color, Images, isValidEmail } from \"../../Utils/Constants\";\nimport { toast } from \"react-toastify\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport GaugeChart from \"react-gauge-chart\";\nimport { getDeckscore } from \"../../Services/allAPI\";\nimport LogoText from \"../../Components/LogoText\";\n\nconst Deckscore = () => {\n  const [loading, setLoading] = useState(false);\n  const { t } = useTranslation(\"\");\n  const [email, setEmail] = useState(\"\");\n  const navigate = useNavigate();\n  const [deckScore, setdeckScore] = useState({});\n\n  // Get Deck id\n  const location = useLocation();\n  const mGetdeckId = location.state?.mdeckId || \"\";\n  const mGetdeckName = location.state?.mdeckName || \"\";\n\n  const [percentage, setpercentage] = useState(0);\n\n  const mBackClick = () => {\n    navigate(\"/question\");\n  };\n\n  const ProceedClick = () => {};\n\n  const skipclick = () => {\n    navigate(\"/login\");\n  };\n\n  useEffect(() => {\n    getDeckScoreCall();\n  }, []);\n\n  const getDeckScoreCall = async () => {\n    setLoading(true);\n    const response = await getDeckscore({\n      // deck_id: mGetdeckId,\n      deck_id: \"Deck-Review-0014\",\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setdeckScore(response?.data.message.deck_score);\n\n        setpercentage(\n          response?.data.message.deck_score.overall_rating\n            .split(\":\")[1]\n            .split(\"/\")[0] / 10\n        );\n\n        //console.log(\"API Response -> \" + serviceDetails.process_steps[0].steps);\n      } else {\n        toast.error(response?.data.message.status);\n        console.log(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n\n    //  await AsyncStorage.setItem('userInfo', JSON.stringify(response?.data));\n  };\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <section className=\"min-h-screen flex flex-row\">\n          <div className=\"hidden lg:block w-3/5 bg-mwhite  flex-col items-start justify-start p-5\">\n            <div className=\"mt-3 ml-3\">\n              {/* <img\n                src={Images.zenpivot}\n                alt=\"google Icon\"\n                className=\" h-9 w-28\"\n              /> */}\n              <LogoText label={t(\"appname\")} />\n            </div>\n\n            <div className=\"w-full h-auto justify-center items-center flex\">\n              <img src={Images.scorebg} alt=\"login\" className=\"w-2/3 \" />\n            </div>\n          </div>\n          <div className=\"lg:w-2/5 w-full pl-2 py-5 lg:pl-20 lg:py-10 items-center justify-center lg:items-start lg:justify-start bg-mBackground  flex-col flex \">\n            <div className=\"w-11/12 h-full \">\n              <div className=\"grid gap-5 grid-cols-4   w-full h-2 mt-5 items-center justify-center \">\n                <div className=\" h-1 bg-mButtonColor rounded-full\"></div>\n                <div className=\" h-1 bg-mButtonColor rounded-full\"></div>\n                <div className=\" h-1 bg-mButtonColor rounded-full\"></div>\n                <div className=\" h-1 bg-mTextColorLogin rounded-full\"></div>\n              </div>\n\n              <div className=\"mt-4  w-full justify-between flex\">\n                <div>\n                  <p className=\"text-mTextColor font-PlusJakartaSansMedium text-sm 3xl:text-base\">\n                    Step 3 / 4\n                  </p>\n                </div>\n\n                <div onClick={() => skipclick()}>\n                  <p className=\"text-mTextColor font-PlusJakartaSansMedium text-sm cursor-pointer 3xl:text-base\">\n                    {t(\"skip\")}\n                  </p>\n                </div>\n              </div>\n\n              <div className=\"mt-10 w-full p-2  items-start justify-start flex-col flex\">\n                <div className=\"flex flex-row items-center justify-center\">\n                  <BackIcon\n                    className=\"w-6 h-6  flex-shrink-0 cursor-pointer\"\n                    onClick={() => mBackClick()}\n                  />{\" \"}\n                  <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-base\">\n                    {t(\"GoBack\")}\n                  </p>\n                </div>\n\n                <div>\n                  <p className=\"font-PlusJakartaSansSemiBold text-4xl mt-10\">\n                    {t(\"PitchDeckScores\")}\n                  </p>\n                </div>\n\n                {Object.keys(deckScore).length > 0 ? (\n                  <div>\n                    <div className=\"w-full h-44 mt-10 flex-row flex \">\n                      <div className=\"w-3/5 h-full \">\n                        <div style={{ width: \"300px\", margin: \"0 auto\" }}>\n                          <GaugeChart\n                            id=\"gauge-chart-custom\"\n                            nrOfLevels={1} // Sets the number of arc levels\n                            arcsLength={[percentage / 10, 1 - percentage / 10]}\n                            colors={[Color.mButtonColor, Color.trackColor]} // Sets color for the arc\n                            arcWidth={0.25} // Sets arc width, reduce this for thinner arcs\n                            percent={percentage / 10} // Sets the percentage the gauge is filled\n                            needleColor={Color.mArcColor} // Sets the needle color\n                            needleBaseColor={Color.needleColor} // Sets the needle base color\n                            cornerRadius={0} // Removes edge radius\n                            arcPadding={0}\n                            hideText={true} // Removes padding between arcs\n                          />\n                        </div>\n                      </div>\n                      <div className=\"w-2/5 h-full items-center justify-center flex flex-col\">\n                        <p className=\"font-PlusJakartaSansSemiBold text-7xl \">\n                          {deckScore.overall_rating.split(\":\")[1].split(\"/\")[0]}\n                        </p>\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base mt-3\">\n                          {t(\"OverallScore\")}\n                        </p>\n                      </div>\n                    </div>\n\n                    <div className=\"w-full h-28 mt-10 flex-row flex \">\n                      <div className=\"w-1/2 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg mr-3 px-5\">\n                        <p className=\"font-PlusJakartaSansSemiBold text-5xl \">\n                          {\" \"}\n                          {deckScore.team_exp.split(\":\")[1].split(\"/\")[0]}\n                        </p>\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base mt-3\">\n                          {t(\"Teamexperience\")}\n                        </p>\n                      </div>\n                      <div className=\"w-1/2 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 px-5\">\n                        <p className=\"font-PlusJakartaSansSemiBold text-5xl \">\n                          {\" \"}\n                          {\n                            deckScore.market_potential\n                              .split(\":\")[1]\n                              .split(\"/\")[0]\n                          }\n                        </p>\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base mt-3\">\n                          {t(\"Marketpotential\")}\n                        </p>\n                      </div>\n                    </div>\n\n                    <div className=\"w-full h-28 mt-5  flex flex-col items-start justify-center bg-white border border-mBorderColor rounded-lg mr-3 px-5\">\n                      <p className=\"font-PlusJakartaSansSemiBold text-5xl \">\n                        {deckScore.flow_and_clarity.split(\":\")[1].split(\"/\")[0]}\n                      </p>\n                      <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base mt-3\">\n                        {t(\"Flowandclarity\")}\n                      </p>\n                    </div>\n                  </div>\n                ) : (\n                  <div></div>\n                )}\n\n                <div className=\"w-full mt-10\">\n                  <PrimaryButton\n                    label={t(\"Proceed\")}\n                    onClick={ProceedClick}\n                  ></PrimaryButton>\n                </div>\n              </div>\n            </div>\n          </div>\n        </section>\n      )}\n    </>\n  );\n};\n\nexport default Deckscore;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcUpload(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3 11V12C3 16.9706 7.02944 21 12 21C16.9706 21 21 16.9706 21 12V11M8 7L12 3M12 3L16 7M12 3V15\",\n    stroke: \"#2A7A5A\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcUpload);\nexport default __webpack_public_path__ + \"static/media/ic_upload.0dc57009aee0facb6de5827cb7eedb88.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgNewIcDocclose(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 26,\n    height: 26,\n    viewBox: \"0 0 26 26\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n    opacity: 0.2,\n    width: 26,\n    height: 26,\n    rx: 13,\n    fill: \"#EB5757\"\n  })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M11.8589 12.9607L7.07362 7H9.09816L12.319 11.0891C12.5276 11.3512 12.6687 11.5662 12.7423 11.7339C12.816 11.8912 12.8528 12.0695 12.8528 12.2687H13.1472C13.1472 12.0695 13.184 11.8912 13.2577 11.7339C13.3313 11.5662 13.4724 11.3512 13.681 11.0891L16.9018 7H18.9264L14.1411 12.9607L19 19H16.9939L13.8282 15.0839C13.5583 14.7484 13.3742 14.4915 13.2761 14.3132C13.1902 14.1245 13.1472 13.9201 13.1472 13.6999H12.8528C12.8528 13.9201 12.8037 14.1245 12.7055 14.3132C12.6196 14.4915 12.4417 14.7484 12.1718 15.0839L9.00613 19H7L11.8589 12.9607Z\",\n    fill: \"#FF3850\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgNewIcDocclose);\nexport default __webpack_public_path__ + \"static/media/new_ic_docclose.9cda18374156c0ee05a637104d061c73.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/ic_close.svg\";\nimport { ReactComponent as UploadIcon } from \"../../assets/Images/ic_upload.svg\";\nimport TextView from \"../../Components/TextView\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { createVault } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport { ReactComponent as Docclose } from \"../../assets/Images/new_ic_docclose.svg\";\n\nimport \"../../Components/HorizontalListView/HorizontalListView.css\";\nimport { Images } from \"../../Utils/Constants\";\n\nconst CreateNewVault = ({ onConfirm, onCancel, show }) => {\n  const { t } = useTranslation(\"\");\n  const [valutname, setValutName] = useState(\"\");\n  const [description, setDescription] = useState(\"\");\n  const isDisabled = !valutname || !description;\n\n  const inputRef = useRef();\n  const [loading, setLoading] = useState(false);\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  const newVaultClick = async () => {\n    const updateRoomRequest = {\n      user_name: UserInfoData.user_email,\n      vault_name: valutname,\n      description: description,\n\n      upload_doc: JSON.stringify(UploadFiles),\n    };\n\n    console.log(updateRoomRequest);\n    JSON.stringify(updateRoomRequest);\n\n    // alert(JSON.stringify(updateRoomRequest));\n\n    setLoading(true);\n    const response = await createVault(updateRoomRequest);\n    JSON.stringify(response);\n    console.log(response);\n    // alert(JSON.stringify(response));\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        onConfirm();\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  const [UploadFiles, setUploadFiles] = useState([]);\n\n  const handleFileChange = (e) => {\n    // const selectedFile = e.target.files[0];\n    // setFile(selectedFile);\n    // console.log(\"file : \" + file);\n    // if (selectedFile) {\n    //   convertToBase64(selectedFile);\n    // }\n\n    if (UploadFiles.length >= 10) {\n      alert(\"You have reached your upload limit\");\n    } else {\n      if (e.target.files && e.target.files.length > 0) {\n        const reader = new FileReader();\n\n        // reader.addEventListener(\"load\", () => setImgSrc(reader.result));\n        reader.readAsDataURL(e.target.files[0]);\n\n        const file = e.target.files[0];\n        if (file) {\n          const fileName = file.name.split(\".\");\n          const fileExtension = file.name.split(\".\").pop();\n          console.log(file);\n          console.log(fileName[0]);\n          console.log(fileExtension);\n          convertToBase64(file, fileName[0], fileExtension);\n        }\n      }\n    }\n  };\n\n  const convertToBase64 = (file, fileName, fileExtension) => {\n    const reader = new FileReader();\n    reader.readAsDataURL(file);\n    console.log(fileExtension);\n    reader.onloadend = () => {\n      var attachFile = \"\";\n      if (fileExtension === \"pdf\") {\n        attachFile = reader.result.replace(\"data:application/pdf;base64,\", \"\");\n      } else if (fileExtension === \"docx\" || file === \"doc\") {\n        attachFile = reader.result.replace(\n          \"data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,\",\n          \"\"\n        );\n      } else if (fileExtension === \"png\") {\n        attachFile = reader.result.replace(\"data:image/png;base64,\", \"\");\n      } else if (fileExtension === \"jpg\" || fileExtension === \"jpeg\") {\n        attachFile = reader.result.replace(\"data:image/jpeg;base64,\", \"\");\n      } else if (fileExtension === \"xlsx\") {\n        attachFile = reader.result.replace(\n          \"data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,\",\n          \"\"\n        );\n      }\n      console.log(attachFile);\n      let myObject = {\n        file_type: fileExtension,\n        file: attachFile,\n        file_name: fileName,\n      }; // create an object\n\n      setUploadFiles([...UploadFiles, myObject]);\n      console.log(UploadFiles);\n    };\n    reader.onerror = (error) => {\n      console.error(\"Error: \", error);\n    };\n  };\n\n  const onChooseFile = () => {\n    inputRef.current.click();\n  };\n\n  const onDeleteImage = (index) => {\n    setUploadFiles(UploadFiles.filter((person, i) => i !== index));\n  };\n\n  const dialogRef = useRef();\n\n  // Close the dialog when clicking outside of it\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (dialogRef.current && !dialogRef.current.contains(event.target)) {\n        onCancel(); // Call onClose if the click is outside the dialog\n      }\n    };\n\n    if (show) {\n      document.addEventListener(\"mousedown\", handleClickOutside);\n    }\n\n    // Cleanup the event listener on component unmount\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [show, onCancel]);\n\n  if (!show) return null; // Don't render if the dialog is not open\n\n  const items = [\"Item 1\", \"Item 2\"];\n  return (\n    <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50  z-50\">\n      {/* max-w-sm */}\n      <div\n        className=\"bg-mDashboardBg rounded-lg h-90 mx-2 overflow-auto shadow-xl w-full md:w-2/5 lg:w-1/3 p-4\"\n        ref={dialogRef}\n      >\n        <div className=\"justify-between flex\">\n          <div>\n            <p className=\"font-PlusJakartaSansSemiBold text-lg text-mTextColor\">\n              {t(\"CreateNewVault\")}\n            </p>\n          </div>\n\n          <div>\n            <button onClick={onCancel}>\n              <CloseIcon className=\"mb-4 \" />\n            </button>\n          </div>\n        </div>\n\n        <div className=\"mt-10\">\n          <div className=\"mt-4\">\n            <TextView label={t(\"VaultName\")} />\n          </div>\n          <InputContainer\n            type=\"text\"\n            value={valutname}\n            placeholder={t(\"EnterVaultName\")}\n            label=\"text\"\n            name=\"text\"\n            disabled={false}\n            maxLength={100}\n            showIcon={false}\n            onChange={(e) => {\n              setValutName(e.target.value);\n            }}\n          />\n        </div>\n        <div className=\"mt-4\">\n          <div className=\"mt-4\">\n            <TextView label={t(\"Description\")} />\n          </div>\n          <div className=\"h-32 mt-2 border-mGreyFour text-start justify-start items-start flex text-xs  lg:text-sm  rounded-md w-full  border bg-mLightColorOne\">\n            <textarea\n              id=\"message\"\n              rows=\"5\"\n              value={description}\n              onChange={(e) => setDescription(e.target.value)}\n              maxLength={3000}\n              className=\"block  w-full border-black  text-sm h-full break-words text-mTextColor px-2 py-3 text-start justify-start items-start  rounded-md   font-PlusJakartaSansRegular border-none focus:border-none  bg-mLightColorOne border-4 !outline-none\"\n              placeholder={t(\"EnterDescription\")}\n            ></textarea>\n          </div>\n        </div>\n        <div className=\"mt-4\">\n          <div className=\"mt-4\">\n            <div className=\"flex justify-between items-center\">\n              <div>\n                <TextView label={t(\"UploadFiles\")} />\n              </div>\n              <div>\n                {UploadFiles.length === 0 ? (\n                  <div></div>\n                ) : (\n                  <div className=\"cursor-pointer\" onClick={onChooseFile}>\n                    <TextView label={t(\"addfile\")} />\n                    <input\n                      type=\"file\"\n                      style={{\n                        display: \"none\",\n                      }}\n                      ref={inputRef}\n                      onChange={handleFileChange}\n                      accept=\".pdf,.doc,.docx,.xls,.xlsx,.png,.jpg,.jpeg,\"\n                    />\n                  </div>\n                )}\n              </div>\n            </div>\n          </div>\n          <div className=\"h-auto mt-2 border-mGreyFour text-start flex text-xs  lg:text-sm  rounded-md w-full  border bg-mLightColorOne items-center justify-center flex-col\">\n            {UploadFiles.length === 0 ? (\n              <div\n                className=\"w-full h-full min-h-44 justify-center items-center flex flex-col\"\n                onClick={onChooseFile}\n              >\n                <div className=\"flex \">\n                  <UploadIcon className=\" \" />\n                  <p className=\"font-PlusJakartaSansSemiBold text-lg text-mButtonColor ml-3\">\n                    {t(\"UploadFiles\")}\n                  </p>\n                </div>\n                <div className=\"mt-2\">\n                  <p className=\"font-PlusJakartaSansRegular text-lg text-mTextColorLogin \">\n                    {t(\"totalfiles\")}\n                  </p>\n                </div>\n                <input\n                  type=\"file\"\n                  style={{\n                    display: \"none\",\n                  }}\n                  ref={inputRef}\n                  onChange={handleFileChange}\n                  accept=\".pdf,.doc,.docx,.xls,.xlsx,.png,.jpg,.jpeg,\"\n                />\n              </div>\n            ) : (\n              <div className=\"horizontal-list\">\n                {UploadFiles.map((item, index) => (\n                  <div\n                    key={item.id}\n                    className=\"justify-center items-center flex p-2 \"\n                  >\n                    <div className=\"w-32 bg-white p-1 border border-mGreyFive rounded-lg\">\n                      <div className=\"w-full flex justify-end items-center \">\n                        <Docclose\n                          className=\"w-5 h-5 text-right \"\n                          onClick={() => {\n                            onDeleteImage(index);\n                          }}\n                        />\n                      </div>\n\n                      <div className=\"w-full flex flex-row justify-center items-center mt-2\">\n                        {item.file_type === \"pdf\" ? (\n                          <img\n                            src={Images.Pdf}\n                            alt=\"Profile\"\n                            className=\"cursor-pointer w-11 h-11\"\n                          />\n                        ) : item.file_type === \"docx\" ||\n                          item.file_type === \"doc\" ? (\n                          <img\n                            src={Images.Word}\n                            alt=\"Profile\"\n                            className=\"cursor-pointer w-11 h-11\"\n                          />\n                        ) : item.file_type === \"xlsx\" ? (\n                          <img\n                            src={Images.Excel}\n                            alt=\"Profile\"\n                            className=\"cursor-pointer w-11 h-11\"\n                          />\n                        ) : item.file_type === \"png\" ||\n                          item.file_type === \"jpg\" ||\n                          item.file_type === \"jpeg\" ? (\n                          <img\n                            src={Images.Image}\n                            alt=\"Profile\"\n                            className=\"cursor-pointer w-11 h-11\"\n                          />\n                        ) : (\n                          <img\n                            src={Images.Image}\n                            alt=\"Profile\"\n                            className=\"cursor-pointer w-11 h-11\"\n                          />\n                        )}\n                      </div>\n                      <p className=\"mt-1 font-OpenSauceSansRegular text-sm text-mGreySeven text-center line-clamp-2\">\n                        {item.file_name}.{item.file_type}\n                      </p>\n                      <div className=\"h-4\"></div>\n                    </div>\n                  </div>\n                ))}\n              </div>\n\n              //////////////\n              // <div className=\"horizontal-list\">\n              //   {UploadFiles.map((item, index) => (\n              //     <div\n              //       key={item.id}\n              //       className=\"justify-center items-center flex p-3\"\n              //     >\n              //       <div className=\"h-36 w-36 bg-white p-1 border border-mGreyFive rounded-lg\">\n              //         <div className=\"w-full flex justify-end items-center \">\n              //           <Docclose\n              //             className=\"w-5 h-5 text-right \"\n              //             onClick={() => {\n              //               onDeleteImage(index);\n              //             }}\n              //           />\n              //         </div>\n              //         {/*      */}\n              //         <div className=\"w-full flex flex-row justify-center items-center mt-2\">\n              //           {item.file_type === \"pdf\" ? (\n              //             <Pdf className=\"w-14 h-14  \" />\n              //           ) : item.file_type === \"docx\" ||\n              //             item.file_type === \"doc\" ? (\n              //             <Word className=\"w-14 h-14  \" />\n              //           ) : item.file_type === \"xlsx\" ? (\n              //             <Excel className=\"w-14 h-14  \" />\n              //           ) : item.file_type === \"png\" ||\n              //             item.file_type === \"jpg\" ||\n              //             item.file_type === \"jpeg\" ? (\n              //             <Watermark className=\"w-14 h-14  \" />\n              //           ) : (\n              //             <Watermark className=\"w-14 h-14  \" />\n              //           )}\n              //         </div>\n              //         <p className=\"mt-1 font-OpenSauceSansRegular text-mTwelve text-mGreySeven text-center line-clamp-2\">\n              //           {/* <MarqueeLabel\n              //                   filename={item.name}\n              //                   fileExt={item.document_type}\n              //                 /> */}\n              //           {item.file_name}.{item.file_type}\n              //         </p>\n              //       </div>\n              //     </div>\n              //   ))}\n              // </div>\n            )}\n          </div>\n        </div>\n\n        <div className=\"mt-10\">\n          <PrimaryButton\n            label={t(\"createvalut\")}\n            onClick={newVaultClick}\n            onDisable={isDisabled}\n          ></PrimaryButton>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default CreateNewVault;\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport Loader from \"../../Utils/Loader\";\nimport {\n  getPdfURL,\n  getscorecard,\n  getscoremeter,\n  mGetpdfanddownloadcount,\n  mGetslideimages,\n  mUserFeedback,\n} from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport {\n  Color,\n  formatTextWithLineBreaks,\n  Images,\n  isEmptyObject,\n  isValidScore,\n} from \"../../Utils/Constants\";\nimport { ReactComponent as ChatIcon } from \"../../assets/Images/ic_chat.svg\";\nimport { toPng } from \"html-to-image\"; // Correctly import toPng\n\nimport GaugeChart from \"react-gauge-chart\";\nimport HeaderMenu from \"../../Components/HeaderMenu\";\nimport { AlertDialog } from \"../../Components/AlertDialog\";\n\nconst DeckdetailsDialog = ({ onDeckid, onCancel, show }) => {\n  const { t } = useTranslation(\"\");\n  const navigate = useNavigate();\n  const maxChars = 300;\n  const [loading, setLoading] = useState(false);\n  const [getSlideDetails, setGetSlideDetails] = useState([]);\n  const [getllmResponse, setGetllmResponse] = useState(\"\");\n  const [Postion, setPostion] = useState(0);\n  const [summarydetails, setSummaryDetails] = useState({});\n  const [deckreview, setdeckreview] = useState({});\n  const [percentage, setpercentage] = useState(0);\n  const [deckpdfurl, setDeckpdfurl] = useState(\"\");\n  const [likeselect, setLikeselect] = useState(false);\n  const [dislikeselect, setDislikeClick] = useState(false);\n  const [editOpen, seteditOpen] = useState(false);\n  const [inputValue, setInputValue] = useState(\"\");\n  const [animate, setAnimate] = useState(true);\n  const [showDialog, setShowDialog] = useState(false);\n\n  const scoremeterRef = useRef(null);\n\n  var mSubmitClick = false;\n\n  const location = useLocation();\n  const mDeck_Id = onDeckid || \"Deck-Review-0317\";\n\n  useEffect(() => {\n    downloadPDF();\n    getParticularDeck();\n  }, []);\n\n  const validateDeckReview = (deckReview) => {\n    if (deckReview === null || deckReview === undefined) {\n      // alert(\"aa\");\n      return false;\n    } else if (typeof deckReview === \"string\") {\n      //alert(\"bb\");\n      return false;\n    } else if (\n      typeof deckReview === \"object\" &&\n      !Array.isArray(deckReview) &&\n      !isEmptyObject(deckReview)\n    ) {\n      //alert(\"cc\");\n      return true;\n    } else {\n      return false;\n    }\n  };\n\n  //Get Particular Deck API call\n  const getParticularDeck = async () => {\n    setLoading(true);\n    const response = await mGetslideimages({\n      doc_name: mDeck_Id,\n      // doc_name: \"Deck-Review-0333\",\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        if (validateDeckReview(response?.data.message.deck_review)) {\n          setGetSlideDetails(response?.data.message.deck_details);\n\n          setGetllmResponse(response?.data.message.llm_response);\n          setdeckreview(response?.data.message.deck_review);\n          setSummaryDetails(response?.data.message.deck_review.summary);\n\n          setAnimate(true);\n          // setpercentage(\n          //   response?.data.message.summary_details[0].overall_rating\n          //     .split(\":\")[1]\n          //     .split(\"/\")[0] / 10\n          // );\n\n          setpercentage(\n            isValidScore(\n              response?.data.message.deck_review.summary.overall_rating\n            )\n          );\n        } else {\n          toast.error(\"Details not found\");\n        }\n        //console.log(\"API Response -> \" + serviceDetails.process_steps[0].steps);\n      } else {\n        toast.error(response?.data.message.status);\n        console.log(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  const handleItemClick = (mDeck_Id, mPostion) => {\n    setAnimate(false);\n    setPostion(mPostion);\n    setDislikeClick(false);\n    setLikeselect(false);\n    setInputValue(\"\");\n  };\n\n  const likeClick = () => {\n    seteditOpen(true);\n    setLikeselect(true);\n    setDislikeClick(false);\n    mSubmitClick = true;\n    Submit();\n  };\n\n  const dislikeClick = () => {\n    seteditOpen(true);\n    setDislikeClick(true);\n    setLikeselect(false);\n    mSubmitClick = true;\n    Submit();\n  };\n\n  const Submit = async () => {\n    const deckdetailsdata = {\n      title: getSlideDetails[Postion].slide_no,\n      user_feedback: inputValue,\n      like: likeselect ? 1 : 0,\n      dislike: dislikeselect ? 1 : 0,\n      user_feedback_status: 1,\n    };\n\n    setLoading(true);\n    const response = await mUserFeedback({\n      deck_id: mDeck_Id,\n      user_feedback: inputValue,\n      like: likeselect ? 1 : 0,\n      dislike: dislikeselect ? 1 : 0,\n      user_feedback_status: 1,\n      //deck_risk_table: JSON.stringify([deckdetailsdata]),\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n\n        if (mSubmitClick) {\n          mSubmitClick = false;\n        } else {\n          setDislikeClick(false);\n          setLikeselect(false);\n          setInputValue(\"\");\n        }\n\n        //console.log(\"API Response -> \" + serviceDetails.process_steps[0].steps);\n      } else {\n        toast.error(response?.data.message.status);\n        console.log(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  // Open PDF File\n  const openUrl = () => {\n    // window.open(deckpdfurl, \"_blank\");\n    // GetpdfdownloadCall(mDeck_Id);\n    if (deckpdfurl.length !== 0) {\n      window.open(deckpdfurl, \"_blank\");\n      //handleDownload(deckpdfurl);\n      GetpdfdownloadCall(mDeck_Id);\n    }\n  };\n\n  // const handleDownload = async (pdfurl) => {\n  //   try {\n  //     const response = await fetch(pdfurl, {\n  //       method: \"GET\",\n  //       headers: {\n  //         \"Content-Type\": \"application/pdf\",\n  //       },\n  //     });\n  //     if (!response.ok) {\n  //       throw new Error(\"Failed to download PDF\");\n  //     }\n\n  //     const blob = await response.blob();\n  //     const url = window.URL.createObjectURL(blob);\n  //     const link = document.createElement(\"a\");\n  //     link.href = url;\n  //     link.download = \"filename.pdf\"; // specify the filename\n  //     document.body.appendChild(link);\n  //     link.click();\n  //     link.remove();\n\n  //     // Clean up the URL object\n  //     window.URL.revokeObjectURL(url);\n  //   } catch (error) {\n  //     console.error(\"Error downloading the PDF:\", error);\n  //   }\n  // };\n\n  const downloadPDF = async () => {\n    // setLoading(true);\n    const response = await getPdfURL({\n      deck_id: mDeck_Id,\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setDeckpdfurl(response?.data.message.deck_pdf);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  const GetpdfdownloadCall = async (Deck_Id) => {\n    setLoading(true);\n    const response = await mGetpdfanddownloadcount({\n      doc_name: Deck_Id,\n      pdf_downlad_count: 1,\n    });\n\n    console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n      } else {\n        toast.error(response?.data.message.message);\n        // console.log(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  const mBackClick = () => {\n    // navigate(\"/mydecks\");\n    onCancel(); // Navigate back to the previous page\n  };\n\n  const ClickChat = () => {\n    //navigate(\"/mydecks\");\n    onCancel(); // Navigate back to the previous page\n  };\n\n  const [isAlertOpen, setIsAlertOpen] = useState(false);\n  const [description, setdescription] = useState(\"\");\n\n  const infoclick = (description) => {\n    setAnimate(false);\n    setIsAlertOpen(true);\n    setdescription(description);\n  };\n\n  const closeAlert = () => setIsAlertOpen(false);\n\n  // Send Image to server start\n\n  useEffect(() => {\n    if (deckreview) {\n      downloadScoreCard();\n    }\n  }, [deckreview]);\n\n  const downloadScoreCard = async () => {\n    if (scoremeterRef.current === null) return;\n    toPng(scoremeterRef.current)\n      .then((dataUrl) => {\n        setAnimate(false);\n        const link = document.createElement(\"a\");\n        link.href = dataUrl;\n        link.download = \"scoremeter-card.png\";\n        // link.click();\n        // alert(link.url);\n\n        uploadScorecardImage(dataUrl);\n      })\n      .catch((err) => console.error(\"Failed to generate image\", err));\n  };\n\n  const uploadScorecardImage = async (file) => {\n    const response = await getscoremeter({\n      deck_id: mDeck_Id,\n      file_name: \"score meter\",\n      file_type: \"png\",\n      file: file.replace(\"data:image/png;base64,\", \"\"),\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n\n      if (response?.data.message.status) {\n        const data = response?.data.message.score_card_details;\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n\n    // Assuming your server returns the image URL\n  };\n\n  // Send Image to server End\n\n  return (\n    <>\n      {loading ? (\n        <div className=\"xl:overflow-hidden h-screen bg-mDashboardBg fixed inset-0\">\n          <Loader />\n        </div>\n      ) : (\n        <div className=\"xl:overflow-hidden overflow-auto h-screen bg-mDashboardBg fixed inset-0\">\n          <div>\n            <HeaderMenu\n              title={t(\"summary\")}\n              isShowing={true}\n              onClick={mBackClick}\n              isCallBtn={true}\n            />\n          </div>\n          <div className=\"hidden xl:block\">\n            <div className=\"h-screen flex\">\n              <div className=\"w-72 h-full overflow-y-scroll p-4 scrollbar-hide mb-2\">\n                <div className=\" mb-4 ml-3\">\n                  {getSlideDetails.map((item, i) => (\n                    <div key={item.id} className=\"mb-3 \">\n                      <div\n                        className={`${\n                          Postion === i ? \" bg-transparent\" : \"bg-white\"\n                        }  ${\n                          Postion === i ? \" border-mGreyFour\" : \"border-white\"\n                        } rounded-lg p-5 border cursor-pointer`}\n                        onClick={() => handleItemClick(item.id, i)}\n                      >\n                        <p className=\"text-left font-PlusJakartaSansRegular line-clamp-2  font-normal text-mTextColor text-sm 3xl:text-xl\">\n                          {item.title}\n                        </p>\n\n                        <div className=\"border-mGreyFour rounded-md mt-2 p-2 \">\n                          <img\n                            alt=\"name\"\n                            src={item.slide_image}\n                            className=\" \"\n                          />\n                        </div>\n                      </div>\n                      <div className=\"h-3 \"></div>\n                    </div>\n                  ))}\n                  <div className=\"h-20\"></div>\n                </div>\n              </div>\n              <div className=\"w-full h-full flex\">\n                <div className=\"w-3/5 h-full overflow-y-scroll p-4 scrollbar-hide mb-2\">\n                  <div className=\"content\">\n                    {getSlideDetails.length > 0 ? (\n                      <div>\n                        <div className=\" hidden rounded-2xl bg-white border-mBorderColor border justify-center items-center \">\n                          <div className=\"p-1\">\n                            <img\n                              alt=\"name\"\n                              src={getSlideDetails[Postion].slide_image}\n                              className=\" \"\n                            />\n                          </div>\n                        </div>\n\n                        <div className=\" rounded-2xl bg-white mt-5 p-6\">\n                          <div className=\"grid grid-cols-1 gap-7 w-full\">\n                            {/* <p className=\"text-left font-PlusJakartaSansRegular text-mTextColorLogin text-sm 3xl:text-lg mt-3\">\n                              {formatTextWithLineBreaks(getllmResponse)}\n                            </p> */}\n                            {/* <p>afashl</p> */}\n\n                            {/* {deckreview.map((item) => (\n                              \n                            ))} */}\n\n                            <div\n                              className=\"bg-white p-4 rounded-sm md:rounded-md lg:rounded-lg grid grid-cols-1 gap-5\"\n                              key={deckreview.id}\n                            >\n                              {deckreview.type_of_risk.map((typeofriskitem) => (\n                                <div\n                                  className=\"bg-white p-4 rounded-sm md:rounded-md lg:rounded-lg grid grid-cols-1 gap-4\"\n                                  key={deckreview.id}\n                                >\n                                  <p className=\"font-PlusJakartaSansSemiBold text-base text-mButtonColor\">\n                                    {typeofriskitem.title}\n                                    {\" ( \"}\n                                    {typeofriskitem.risk_score}\n                                    {\" ) \"}\n                                  </p>\n\n                                  <p className=\"font-PlusJakartaSansRegular text-base text-mTextColor\">\n                                    {typeofriskitem.explanation}\n                                  </p>\n\n                                  <div className=\"ml-5 mt-3\">\n                                    <p className=\"font-PlusJakartaSansSemiBold text-base text-mTextColor\">\n                                      Key factors influencing\n                                    </p>\n\n                                    {/* <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\">\n                                      {typeofriskitem.key_factors_influencing}\n\n                                     \n                                    </p> */}\n                                    <div className=\"mt-2\">\n                                      <ul className=\"list-disc pl-5 space-y-2\">\n                                        {typeofriskitem.key_factors_influencing\n                                          .split(\"\\n\")\n                                          .map((line, index) => (\n                                            <li\n                                              key={index}\n                                              className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\"\n                                            >\n                                              <p className=\"font-PlusJakartaSansRegular text-base text-mTextColorLogin mt-1\">\n                                                {\" \"}\n                                                {line.trim()}{\" \"}\n                                              </p>\n                                            </li>\n                                          ))}\n                                      </ul>\n                                    </div>\n                                  </div>\n\n                                  <div className=\"ml-5\">\n                                    <p className=\"font-PlusJakartaSansSemiBold text-base text-mTextColor\">\n                                      Strategies to manage product risk\n                                    </p>\n\n                                    {/* <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\">\n                                      {\n                                        typeofriskitem.strategies_to_manage_product_risk\n                                      }\n                                    </p> */}\n                                    <div className=\"mt-2\">\n                                      <ul className=\"list-disc pl-5 space-y-2\">\n                                        {typeofriskitem.strategies_to_manage_product_risk\n                                          .split(\"\\n\")\n                                          .map((line, index) => (\n                                            <li\n                                              key={index}\n                                              className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\"\n                                            >\n                                              <p className=\"font-PlusJakartaSansRegular text-base text-mTextColorLogin mt-1\">\n                                                {\" \"}\n                                                {line.trim()}{\" \"}\n                                              </p>\n                                            </li>\n                                          ))}\n                                      </ul>\n                                    </div>\n                                  </div>\n                                </div>\n                              ))}\n                            </div>\n\n                            <p className=\"text-left hidden font-PlusJakartaSansSemiBold text-mTextColor text-lg 3xl:text-xl\">\n                              Slide-by-slide analysis\n                            </p>\n\n                            <div>\n                              <p className=\"hidden text-left font-PlusJakartaSansRegular text-mTextColor text-base 3xl:text-xl\">\n                                {t(\"feedback\")}\n                              </p>\n\n                              <p className=\"text-left font-PlusJakartaSansRegular text-mTextColorLogin text-sm 3xl:text-lg mt-3\">\n                                {getSlideDetails[Postion].feedback}\n                              </p>\n                            </div>\n\n                            <div>\n                              <p className=\"hidden text-left font-PlusJakartaSansRegular text-mTextColor text-base 3xl:text-xl\">\n                                {t(\"suggestion\")}\n                              </p>\n\n                              <p className=\"text-left font-PlusJakartaSansRegular text-mTextColorLogin text-sm 3xl:text-lg mt-3\">\n                                {getSlideDetails[Postion].suggestion}\n                              </p>\n                            </div>\n\n                            <div className=\"\">\n                              <div className=\"w-full flex-row flex \">\n                                <div className=\"w-4/5\">\n                                  <p className=\"text-left font-PlusJakartaSansRegular text-mTextColor text-base 3xl:text-xl\">\n                                    {t(\"helpful\")}\n                                  </p>\n                                </div>\n                                <div className=\"w-1/5 justify-center items-center flex p-1\">\n                                  <div className=\"w-1/2 justify-center items-center flex\">\n                                    <img\n                                      onClick={likeClick}\n                                      src={\n                                        likeselect\n                                          ? Images.likeclick\n                                          : Images.like\n                                      }\n                                      alt=\"Upload Icon\"\n                                      className=\" w-5 h-5 cursor-pointer \"\n                                    />\n                                  </div>\n                                  <div className=\"w-1/2 justify-center items-center flex\">\n                                    <img\n                                      onClick={dislikeClick}\n                                      src={\n                                        dislikeselect\n                                          ? Images.dislikeclick\n                                          : Images.dislike\n                                      }\n                                      alt=\"Upload Icon\"\n                                      className=\" w-5 h-5  cursor-pointer\"\n                                    />\n                                  </div>\n                                </div>\n                              </div>\n\n                              {dislikeselect || likeselect ? (\n                                <div className=\"mt-5\">\n                                  <div className=\"mt-2 border border-mBorderColor rounded-md bg-mCardbgColor min-h-24\">\n                                    <textarea\n                                      id=\"message\"\n                                      rows=\"5\"\n                                      value={inputValue}\n                                      onChange={(e) =>\n                                        setInputValue(e.target.value)\n                                      }\n                                      maxLength={maxChars}\n                                      className=\"block  w-full border-black h-full text-sm 3xl:text-xl break-words text-mTextColor placeholder-mTextColorLogin px-2 py-3 text-start justify-start items-start  rounded-md   font-PlusJakartaSansRegular border-none focus:border-none  bg-mCardbgColor border-4 !outline-none\"\n                                      placeholder={\n                                        \"how can we improve? let us know.\"\n                                      }\n                                    ></textarea>\n                                  </div>\n                                  <div className=\"justify-end items-end flex \">\n                                    <p className=\"mt-2 text-mTextColorLogin font-PlusJakartaSansRegular  text-xs 3xl:text-xl\">\n                                      max: {inputValue.length} / {maxChars}\n                                    </p>\n                                  </div>\n                                  <div className=\"w-full justify-end items-start flex mt-6\">\n                                    <div className=\"w-1/3\">\n                                      <PrimaryButton\n                                        label={t(\"submit\")}\n                                        onClick={() => {\n                                          Submit();\n                                        }}\n                                      ></PrimaryButton>\n                                    </div>\n                                  </div>\n                                </div>\n                              ) : (\n                                <div></div>\n                              )}\n                            </div>\n                          </div>\n                        </div>\n                      </div>\n                    ) : (\n                      <div></div>\n                    )}\n                    <div className=\"h-20\"></div>\n                  </div>\n                </div>\n                <div className=\"w-2/5 h-full overflow-y-scroll py-4 pr-4 scrollbar-hide mb-2\">\n                  <div className=\"content\">\n                    {!isEmptyObject(summarydetails) ? (\n                      <div>\n                        <div className=\" flex flex-col w-full bg-white  rounded-2xl p-6 justify-center items-center\">\n                          <div className=\"justify-between flex-row flex w-full \">\n                            <div className=\"flex\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-mTextColor text-lg 3xl:text-2xl\">\n                                {t(\"summary\")}\n                              </p>\n                              <div\n                                className=\"ml-2 mt-1 cursor-pointer  justify-center items-center flex\"\n                                onClick={() => infoclick(summarydetails.notes)}\n                              >\n                                <img\n                                  src={Images.infobtn}\n                                  alt=\"Profile\"\n                                  className=\"cursor-pointer w-5 h-5\"\n                                />\n                                {/* <SharefileIcon className=\"w-4 h-4 md:w-6 md:h-6 mt-1 ml-1 flex-shrink-0 \" /> */}\n                              </div>\n                            </div>\n                            <div onClick={() => openUrl()}>\n                              <p className=\"font-PlusJakartaSansSemiBold text-mButtonColor text-base 3xl:text-xl cursor-pointer\">\n                                {t(\"DownloadReport\")}\n                              </p>\n                            </div>\n                          </div>\n\n                          <div className=\"w-full mt-5 flex-row justify-center items-center py-5 flex \">\n                            <div\n                              ref={scoremeterRef}\n                              className=\"w-3/5 h-full justify-start flex items-start gauge-container\"\n                              style={{\n                                display: \"flex\",\n                                justifyContent: \"center\",\n                                alignItems: \"center\",\n                              }}\n                            >\n                              <GaugeChart\n                                id=\"gauge-chart-custom\"\n                                nrOfLevels={1} // Sets the number of arc levels\n                                arcsLength={[\n                                  percentage / 10,\n                                  1 - percentage / 10,\n                                ]}\n                                colors={[Color.mButtonColor, Color.trackColor]} // Sets color for the arc\n                                arcWidth={0.25} // Sets arc width, reduce this for thinner arcs\n                                percent={percentage / 10} // Sets the percentage the gauge is filled\n                                needleColor={Color.mArcColor} // Sets the needle color\n                                needleBaseColor={Color.needleColor} // Sets the needle base color\n                                cornerRadius={0} // Removes edge radius\n                                arcPadding={0}\n                                animate={animate} // Control animation\n                                hideText={true} // Removes padding between arcs\n                              />\n                            </div>\n                            <div className=\"w-2/5 h-full items-center justify-center flex flex-col \">\n                              <p className=\"font-PlusJakartaSansSemiBold text-6xl \">\n                                {isValidScore(summarydetails.overall_rating)}\n                                {/* {\n                                  summarydetails[0].overall_rating\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-xl mt-3\">\n                                {t(\"OverallScore\")}\n                              </p>\n                            </div>\n                          </div>\n                          <div className=\"w-full h-28 mt-10 flex-row flex \">\n                            <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-3xl 3xl:text-4xl text-mTextColor\">\n                                {isValidScore(summarydetails.team)}\n                                {/* {\n                                  summarydetails[0].team_exp\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColor text-sm 3xl:text-xl mt-3\">\n                                {t(\"Teamexperience\")}\n                              </p>\n                            </div>\n                            <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-3xl 3xl:text-4xl text-mTextColor\">\n                                {isValidScore(summarydetails.market_potential)}\n                                {/* {\n                                  summarydetails[0].market_potential\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColor text-sm 3xl:text-xl mt-3\">\n                                {t(\"Marketpotential\")}\n                              </p>\n                            </div>\n                            <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-3xl 3xl:text-4xl text-mTextColor\">\n                                {isValidScore(\n                                  summarydetails.product_market_fit\n                                )}\n                                {/* {\n                                  summarydetails[0].flow_and_clarity\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColor text-sm 3xl:text-xl mt-3\">\n                                {t(\"Flowandclarity\")}\n                              </p>\n                            </div>\n                          </div>\n\n                          <div className=\"w-full h-px bg-mBorderColor mt-10\"></div>\n\n                          <div className=\"grid grid-cols-1 gap-10 w-full mt-10\">\n                            <div>\n                              <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base 3xl:text-xl text-mTextColor \">\n                                {/* {t(\"areasforimprovement\")} */}\n                                Summary\n                              </p>\n\n                              <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt- leading-6\">\n                                {summarydetails.summary}\n                              </p>\n                            </div>\n\n                            <div>\n                              <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base 3xl:text-xl text-mTextColor \">\n                                {t(\"mostpromisingaspects\")}\n                              </p>\n\n                              {/* <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\">\n                                {summarydetails.most_promising_aspects}\n                              </p> */}\n                              <ul className=\"list-disc pl-5 space-y-2\">\n                                {summarydetails.most_promising_aspects\n                                  .split(\"\\n\")\n                                  .map((line, index) => (\n                                    <li\n                                      key={index}\n                                      className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\"\n                                    >\n                                      <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\">\n                                        {\" \"}\n                                        {line.trim()}{\" \"}\n                                      </p>\n                                    </li>\n                                  ))}\n                              </ul>\n                            </div>\n\n                            <div className=\"hidden\">\n                              <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base 3xl:text-xl text-mTextColor \">\n                                {t(\"recommendations\")}\n                              </p>\n\n                              <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\">\n                                {summarydetails.notes}\n                              </p>\n                            </div>\n                          </div>\n                          <div className=\"absolute items-center justify-center flex hidden\">\n                            <button\n                              className={`floating-button w-[50px] h-[50px] 3xl:w-[70px] 3xl:h-[70px] `}\n                              onClick={ClickChat}\n                            >\n                              <ChatIcon className=\"w-6 h-6 3xl:w-8 3xl:h-8 flex-shrink-0 \" />\n                              {/* You can replace this with any icon */}\n                            </button>\n                          </div>\n                        </div>\n                      </div>\n                    ) : (\n                      <div></div>\n                    )}\n                  </div>\n                  <div className=\"h-20\"></div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div className=\"xl:hidden block  p-3 overflow-auto\">\n            <div className=\"horizontal-list\">\n              {getSlideDetails.map((item, i) => (\n                <div key={item.id} className=\"h-auto min-w-44 w-auto\">\n                  <div\n                    className={`${\n                      Postion === i ? \" bg-transparent\" : \"bg-white\"\n                    }  ${\n                      Postion === i ? \" border-mGreyFour\" : \"border-white\"\n                    } rounded-lg p-5 border cursor-pointer`}\n                    onClick={() => handleItemClick(item.id, i)}\n                  >\n                    <p\n                      className=\"text-left font-PlusJakartaSansRegular font-normal  text-mTextColor text-sm\"\n                      style={{\n                        whiteSpace: \"nowrap\",\n                        overflow: \"hidden\",\n                        textOverflow: \"ellipsis\",\n                      }}\n                    >\n                      {item.title}\n                    </p>\n\n                    <div className=\"border-mGreyFour rounded-md mt-2 p-2  \">\n                      <img alt=\"name\" src={item.slide_image} className=\" \" />\n                    </div>\n                  </div>\n                  <div className=\"h-3 \"></div>\n                </div>\n              ))}\n            </div>\n\n            <div className=\"content\">\n              {!isEmptyObject(summarydetails) ? (\n                <div>\n                  <div className=\" flex flex-col w-full bg-white  rounded-2xl p-6 justify-center items-center\">\n                    <div className=\"justify-between flex-row flex w-full \">\n                      <div className=\"flex\">\n                        <p className=\"font-PlusJakartaSansSemiBold text-mTextColor text-lg 3xl:text-2xl\">\n                          {t(\"summary\")}\n                        </p>\n                        <div\n                          className=\"ml-2 mt-1 cursor-pointer  justify-center items-center flex\"\n                          onClick={() => infoclick(summarydetails.notes)}\n                        >\n                          <img\n                            src={Images.infobtn}\n                            alt=\"Profile\"\n                            className=\"cursor-pointer w-5 h-5\"\n                          />\n                          {/* <SharefileIcon className=\"w-4 h-4 md:w-6 md:h-6 mt-1 ml-1 flex-shrink-0 \" /> */}\n                        </div>\n                      </div>\n                      <div onClick={() => openUrl()}>\n                        <p className=\"font-PlusJakartaSansSemiBold text-mButtonColor text-base 3xl:text-xl cursor-pointer\">\n                          {t(\"DownloadReport\")}\n                        </p>\n                      </div>\n                    </div>\n\n                    <div className=\"w-full mt-5 flex-row justify-center items-center py-5 flex \">\n                      <div\n                        className=\"w-3/5 h-full justify-start flex items-start gauge-container\"\n                        style={{\n                          display: \"flex\",\n                          justifyContent: \"center\",\n                          alignItems: \"center\",\n                        }}\n                      >\n                        <GaugeChart\n                          id=\"gauge-chart-custom\"\n                          nrOfLevels={1} // Sets the number of arc levels\n                          arcsLength={[percentage / 10, 1 - percentage / 10]}\n                          colors={[Color.mButtonColor, Color.trackColor]} // Sets color for the arc\n                          arcWidth={0.25} // Sets arc width, reduce this for thinner arcs\n                          percent={percentage / 10} // Sets the percentage the gauge is filled\n                          needleColor={Color.mArcColor} // Sets the needle color\n                          needleBaseColor={Color.needleColor} // Sets the needle base color\n                          cornerRadius={0} // Removes edge radius\n                          arcPadding={0}\n                          animate={animate} // Control animation\n                          hideText={true} // Removes padding between arcs\n                        />\n                      </div>\n                      <div className=\"w-2/5 h-full items-center justify-center flex flex-col \">\n                        <p className=\"font-PlusJakartaSansSemiBold text-6xl \">\n                          {isValidScore(summarydetails.overall_rating)}\n                          {/* {\n                                  summarydetails[0].overall_rating\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                        </p>\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-xl mt-3\">\n                          {t(\"OverallScore\")}\n                        </p>\n                      </div>\n                    </div>\n                    <div className=\"w-full h-28 mt-10 flex-row flex \">\n                      <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                        <p className=\"font-PlusJakartaSansSemiBold text-3xl 3xl:text-4xl text-mTextColor\">\n                          {isValidScore(summarydetails.team)}\n                          {/* {\n                                  summarydetails[0].team_exp\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                        </p>\n                        <p className=\"font-PlusJakartaSansRegular text-mTextColor text-sm 3xl:text-xl mt-3\">\n                          {t(\"Teamexperience\")}\n                        </p>\n                      </div>\n                      <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                        <p className=\"font-PlusJakartaSansSemiBold text-3xl 3xl:text-4xl text-mTextColor\">\n                          {isValidScore(summarydetails.market_potential)}\n                          {/* {\n                                  summarydetails[0].market_potential\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                        </p>\n                        <p className=\"font-PlusJakartaSansRegular text-mTextColor text-sm 3xl:text-xl mt-3\">\n                          {t(\"Marketpotential\")}\n                        </p>\n                      </div>\n                      <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                        <p className=\"font-PlusJakartaSansSemiBold text-3xl 3xl:text-4xl text-mTextColor\">\n                          {isValidScore(summarydetails.product_market_fit)}\n                          {/* {\n                                  summarydetails[0].flow_and_clarity\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                        </p>\n                        <p className=\"font-PlusJakartaSansRegular text-mTextColor text-sm 3xl:text-xl mt-3\">\n                          {t(\"Flowandclarity\")}\n                        </p>\n                      </div>\n                    </div>\n\n                    <div className=\"w-full h-px bg-mBorderColor mt-10\"></div>\n\n                    <div className=\"grid grid-cols-1 gap-10 w-full mt-10\">\n                      <div>\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base 3xl:text-xl text-mTextColor \">\n                          {/* {t(\"areasforimprovement\")} */}\n                          Summary\n                        </p>\n\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt- leading-6\">\n                          {summarydetails.summary}\n                        </p>\n                      </div>\n\n                      <div>\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base 3xl:text-xl text-mTextColor \">\n                          {t(\"mostpromisingaspects\")}\n                        </p>\n\n                        {/* <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\">\n                          {summarydetails.most_promising_aspects}\n                        </p> */}\n                        <ul className=\"list-disc pl-5 space-y-2\">\n                          {summarydetails.most_promising_aspects\n                            .split(\"\\n\")\n                            .map((line, index) => (\n                              <li\n                                key={index}\n                                className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\"\n                              >\n                                <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\">\n                                  {\" \"}\n                                  {line.trim()}{\" \"}\n                                </p>\n                              </li>\n                            ))}\n                        </ul>\n                      </div>\n\n                      <div className=\"hidden\">\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-base 3xl:text-xl text-mTextColor \">\n                          {t(\"recommendations\")}\n                        </p>\n\n                        <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-lg text-mTextColorLogin mt-3 leading-6\">\n                          {summarydetails.notes}\n                        </p>\n                      </div>\n                    </div>\n                    <div className=\"absolute items-center justify-center flex hidden\">\n                      <button\n                        className={`floating-button w-[50px] h-[50px] 3xl:w-[70px] 3xl:h-[70px] `}\n                        onClick={ClickChat}\n                      >\n                        <ChatIcon className=\"w-6 h-6 3xl:w-8 3xl:h-8 flex-shrink-0 \" />\n                        {/* You can replace this with any icon */}\n                      </button>\n                    </div>\n                  </div>\n                </div>\n              ) : (\n                <div></div>\n              )}\n            </div>\n\n            <div className=\"mt-3 overflow-auto overflow-y-auto\">\n              <div className=\"content\">\n                {getSlideDetails.length > 0 ? (\n                  <div>\n                    {/* <div className=\" rounded-2xl bg-white border-mBorderColor border\">\n                      <div className=\"p-1\">\n                        <img\n                          alt=\"name\"\n                          src={getSlideDetails[Postion].slide_image}\n                          className=\" \"\n                        />\n                      </div>\n                    </div> */}\n\n                    <div className=\" rounded-2xl bg-white mt-5 p-6 overflow-auto\">\n                      <div className=\"grid grid-cols-1 gap-7 w-full\">\n                        {/* <p className=\"text-left font-PlusJakartaSansRegular text-mTextColorLogin text-sm 3xl:text-lg mt-3\">\n                          {formatTextWithLineBreaks(getllmResponse)}\n                        </p> */}\n\n                        <div\n                          className=\"bg-white p-4 rounded-sm md:rounded-md lg:rounded-lg grid grid-cols-1 gap-5\"\n                          key={deckreview.id}\n                        >\n                          {deckreview.type_of_risk.map((typeofriskitem) => (\n                            <div\n                              className=\"bg-white p-4 rounded-sm md:rounded-md lg:rounded-lg grid grid-cols-1 gap-4\"\n                              key={deckreview.id}\n                            >\n                              <p className=\"font-PlusJakartaSansSemiBold text-base text-mButtonColor\">\n                                {typeofriskitem.title}\n                                {\" ( \"}\n                                {typeofriskitem.risk_score}\n                                {\" ) \"}\n                              </p>\n\n                              <p className=\"font-PlusJakartaSansRegular text-base text-mTextColor\">\n                                {typeofriskitem.explanation}\n                              </p>\n\n                              <div className=\"ml-5 mt-3\">\n                                <p className=\"font-PlusJakartaSansSemiBold text-base text-mTextColor\">\n                                  Key factors influencing\n                                </p>\n\n                                {/* <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\">\n                                      {typeofriskitem.key_factors_influencing}\n\n                                     \n                                    </p> */}\n                                <div className=\"mt-2\">\n                                  <ul className=\"list-disc pl-5 space-y-2\">\n                                    {typeofriskitem.key_factors_influencing\n                                      .split(\"\\n\")\n                                      .map((line, index) => (\n                                        <li\n                                          key={index}\n                                          className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\"\n                                        >\n                                          <p className=\"font-PlusJakartaSansRegular text-base text-mTextColorLogin mt-1\">\n                                            {\" \"}\n                                            {line.trim()}{\" \"}\n                                          </p>\n                                        </li>\n                                      ))}\n                                  </ul>\n                                </div>\n                              </div>\n\n                              <div className=\"ml-5\">\n                                <p className=\"font-PlusJakartaSansSemiBold text-base text-mTextColor\">\n                                  Strategies to manage product risk\n                                </p>\n\n                                {/* <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\">\n                                      {\n                                        typeofriskitem.strategies_to_manage_product_risk\n                                      }\n                                    </p> */}\n                                <div className=\"mt-2\">\n                                  <ul className=\"list-disc pl-5 space-y-2\">\n                                    {typeofriskitem.strategies_to_manage_product_risk\n                                      .split(\"\\n\")\n                                      .map((line, index) => (\n                                        <li\n                                          key={index}\n                                          className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin mt-1\"\n                                        >\n                                          <p className=\"font-PlusJakartaSansRegular text-base text-mTextColorLogin mt-1\">\n                                            {\" \"}\n                                            {line.trim()}{\" \"}\n                                          </p>\n                                        </li>\n                                      ))}\n                                  </ul>\n                                </div>\n                              </div>\n                            </div>\n                          ))}\n                        </div>\n\n                        <p className=\"hidden text-left font-PlusJakartaSansSemiBold text-mTextColor text-lg\">\n                          Slide-by-slide analysis\n                        </p>\n\n                        <div>\n                          <p className=\"hidden text-left font-PlusJakartaSansRegular text-mTextColor text-base\">\n                            {t(\"feedback\")}\n                          </p>\n\n                          <p className=\"text-left font-PlusJakartaSansRegular text-mTextColorLogin text-sm mt-3 hidden\">\n                            {getSlideDetails[Postion].feedback}\n                          </p>\n                        </div>\n\n                        <div>\n                          <p className=\"text-left font-PlusJakartaSansRegular text-mTextColor text-base hidden\">\n                            {t(\"suggestion\")}\n                          </p>\n\n                          <p className=\"text-left font-PlusJakartaSansRegular text-mTextColorLogin text-sm mt-3 hidden\">\n                            {getSlideDetails[Postion].suggestion}\n                          </p>\n                        </div>\n\n                        <div className=\"\">\n                          <div className=\"w-full flex-row flex \">\n                            <div className=\"w-3/4\">\n                              <p className=\"text-left font-PlusJakartaSansRegular text-mTextColor text-base \">\n                                {t(\"helpful\")}\n                              </p>\n                            </div>\n                            <div className=\"w-1/4 justify-center items-center flex p-1\">\n                              <div className=\"w-1/2 justify-center items-center flex\">\n                                <img\n                                  onClick={likeClick}\n                                  src={\n                                    likeselect ? Images.likeclick : Images.like\n                                  }\n                                  alt=\"Upload Icon\"\n                                  className=\" w-4 h-4 cursor-pointer \"\n                                />\n                              </div>\n                              <div className=\"w-1/2 justify-center items-center flex\">\n                                <img\n                                  onClick={dislikeClick}\n                                  src={\n                                    dislikeselect\n                                      ? Images.dislikeclick\n                                      : Images.dislike\n                                  }\n                                  alt=\"Upload Icon\"\n                                  className=\" w-4 h-4 cursor-pointer\"\n                                />\n                              </div>\n                            </div>\n                          </div>\n\n                          {dislikeselect || likeselect ? (\n                            <div className=\"mt-5\">\n                              <div className=\"mt-2 border border-mBorderColor rounded-md bg-mCardbgColor h-24\">\n                                <textarea\n                                  id=\"message\"\n                                  rows=\"5\"\n                                  value={inputValue}\n                                  onChange={(e) =>\n                                    setInputValue(e.target.value)\n                                  }\n                                  maxLength={maxChars}\n                                  className=\"block  w-full border-black h-full text-sm break-words text-mTextColor placeholder-mTextColorLogin px-2 py-3 text-start justify-start items-start  rounded-md   font-PlusJakartaSansRegular border-none focus:border-none  bg-mCardbgColor border-4 !outline-none\"\n                                  placeholder={\n                                    \"how can we improve? let us know.\"\n                                  }\n                                ></textarea>\n                              </div>\n                              <div className=\"justify-end items-end flex \">\n                                <p className=\"mt-2 text-mTextColorLogin font-PlusJakartaSansRegular  text-xs\">\n                                  max: {inputValue.length} / {maxChars}\n                                </p>\n                              </div>\n                              <div className=\"w-full justify-end items-start flex mt-6\">\n                                <div className=\"w-1/2\">\n                                  <PrimaryButton\n                                    label={t(\"submit\")}\n                                    onClick={() => {\n                                      Submit();\n                                    }}\n                                  ></PrimaryButton>\n                                </div>\n                              </div>\n                            </div>\n                          ) : (\n                            <div></div>\n                          )}\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                ) : (\n                  <div></div>\n                )}\n                <div className=\"h-4\"></div>\n              </div>\n            </div>\n\n            <div className=\"w-full h-full overflow-y-scroll  pr-2 scrollbar-hide \">\n              <div className=\"content\"></div>\n              <div className=\"h-20\"></div>\n            </div>\n          </div>\n          <AlertDialog\n            isOpen={isAlertOpen}\n            onClose={closeAlert}\n            message={description}\n            isShowDes={true}\n          />\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default DeckdetailsDialog;\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport Loader from \"../../Utils/Loader\";\nimport SideMenu from \"../../Components/SideMenu\";\nimport { Images } from \"../../Utils/Constants\";\nimport { mGetDashboard } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\n\nimport Headingtext from \"../../Components/Headingtext\";\n\nimport HeaderMenu from \"../../Components/HeaderMenu\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport Titletext from \"../../Components/Titletext\";\nimport { AlertDialog } from \"../../Components/AlertDialog\";\nimport Deckdetails from \"../DeckDetails/Deckdetails\";\nimport CreateNewVault from \"../Valut/CreateNewVault\";\nimport Deckdetailscopy from \"../DeckDetails/DeckdetailsDialog\";\nimport DeckdetailsDialog from \"../DeckDetails/DeckdetailsDialog\";\n\nconst MyDecks = () => {\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const navigate = useNavigate();\n  const [dashboarddata, setDashboardData] = useState([]);\n\n  const [balancedeck, setbalancedeck] = useState(0);\n  const gridRef = useRef(null);\n  const location = useLocation(); // For accessing the current location state\n  const [selectedRow, setSelectedRow] = useState(null);\n  const rowRefs = useRef([]); // Array of refs for each row\n  const [scrollPosition, setScrollPosition] = useState(0);\n  const [newValutShow, setnewValutShow] = useState(false);\n  const [selectedDeck, setselectedDeck] = useState(\"\");\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  //\n  useEffect(() => {\n    MyDecksAPICall();\n  }, []);\n\n  // Dashboard API call\n  const MyDecksAPICall = async () => {\n    setLoading(true);\n    const response = await mGetDashboard({\n      user_name: UserInfoData.user_email,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setDashboardData(response?.data.message.deck_details);\n        setbalancedeck(response?.data.message.balance_deck);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n  const [isAlertOpen, setIsAlertOpen] = useState(false);\n  const [Description, setDescription] = useState(\"\");\n\n  const handleItemClick = (mDeck, rowIndex) => {\n    if (mDeck.deck_status) {\n      setDescription(mDeck.deck_response);\n      setIsAlertOpen(true);\n    } else {\n      setselectedDeck(mDeck.id);\n      setnewValutShow(true);\n      // navigate(\"/deckdetails\", {\n      //   state: {\n      //     mDeck_Id: mDeck.id,\n      //   },\n      // });\n    }\n  };\n\n  const clickClose = () => setnewValutShow(false);\n\n  const closeAlert = () => setIsAlertOpen(false);\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div>\n          <div className=\"flex h-screen overflow-hidden bg-no-repeat bg-cover\">\n            {/* Sidebar */}\n            <SideMenu mFrom={1} mProfile={-1} />\n\n            {/* Main content */}\n            <div className=\"flex flex-col flex-grow overflow-hidden bg-mDashboardBg\">\n              {/* Top Navigation */}\n              <HeaderMenu\n                title={t(\"DeckUploader\")}\n                balancedeck={balancedeck}\n                balancedeckstatus={true}\n              />\n\n              {/* Scrollable content */}\n              <main className=\"flex-grow overflow-auto mt-2 mb-2 mr-2 p-4 md:p-4 lg:p-8 \">\n                {dashboarddata.length !== 0 ? (\n                  <div\n                    className=\"grid sm:grid-cols-1 md:grid-cols-3 lg:grid-cols-4 lg:gap-6 gap-4 w-full\"\n                    ref={gridRef}\n                  >\n                    {dashboarddata.map((item, i) => (\n                      <div\n                        key={item.id}\n                        ref={(el) => (rowRefs.current[i] = el)}\n                        className=\"shadow-sm\"\n                      >\n                        <div\n                          className={`rounded-lg p-4 bg-white cursor-pointer  ${\n                            item.deck_status ? \"blur-sm\" : \"\"\n                          } `}\n                          onClick={() => handleItemClick(item, i)}\n                        >\n                          <p className=\"text-left font-PlusJakartaSansSemiBold text-lg\">\n                            {t(\"PitchDeck\")} {i + 1}\n                          </p>\n\n                          {/* Image container */}\n                          <div className=\"rounded-lg mt-4 justify-center items-center flex\">\n                            <img\n                              alt=\"name\"\n                              src={item.deck_profile_image}\n                              className=\"max-h-36 min-h-36 w-full object-cover rounded-lg\"\n                            />\n                          </div>\n                        </div>\n                      </div>\n                    ))}\n                  </div>\n                ) : (\n                  <div className=\"justify-center items-center flex-col flex w-full h-full\">\n                    <img\n                      className=\"rounded-lg bg-white\"\n                      src={Images.nodata}\n                      alt=\"review\"\n                    />\n                    <div className=\"mt-10\">\n                      <Titletext label={t(\"nodata\")} />\n                    </div>\n                  </div>\n                )}\n              </main>\n\n              {newValutShow ? (\n                <DeckdetailsDialog\n                  show={newValutShow}\n                  onDeckid={selectedDeck}\n                  onCancel={clickClose}\n                />\n              ) : (\n                <div></div>\n              )}\n            </div>\n\n            <AlertDialog\n              isOpen={isAlertOpen}\n              onClose={closeAlert}\n              message={Description}\n              isShowDes={true}\n            />\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default MyDecks;\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/ic_close.svg\";\nimport { ReactComponent as UploadIcon } from \"../../assets/Images/ic_upload.svg\";\nimport TextView from \"../../Components/TextView\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport { mCreateServices, paymentordercreate } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport Loader from \"../../Utils/Loader\";\n\nconst ServiceviewDialog = ({ show, onConfirm, onCancel, service }) => {\n  const { t } = useTranslation(\"\");\n  const [valutname, setValutName] = useState(\"\");\n  const [description, setDescription] = useState(\"\");\n  const isDisabled = !valutname || !description;\n  const [loading, setLoading] = useState(false);\n\n  useEffect(() => {\n    const script = document.createElement(\"script\");\n    script.src = \"https://checkout.razorpay.com/v1/checkout.js\";\n    script.async = true;\n    document.body.appendChild(script);\n  }, []);\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  const CreateService = () => {\n    //  CreateServiceAPICall();\n    handlePayment();\n  };\n  // Call your Python backend to create an order\n  const handlePayment = async () => {\n    var price = service.service_price * 100;\n    const response = await paymentordercreate({\n      amount: price,\n    });\n\n    if (response.status === 200) {\n      try {\n        // Configure Razorpay options\n        const options = {\n          key: process.env.REACT_APP_RAZORPAY_KEY_ID, // Razorpay API key\n          amount: response?.data.message.order_id.amount,\n          currency: response?.data.message.order_id.currency,\n          name: \"theprevc\",\n          description:\n            UserInfoData.user_name + \" Purchase the Service \" + service.id,\n          order_id: response?.data.message.order_id.id,\n          handler: function (paymentresponse) {\n            // Handle successful payment here\n            console.log(JSON.stringify(paymentresponse));\n            console.log(response?.data.message.order_id.amount);\n            console.log(\"Payment Success:\", JSON.stringify(paymentresponse));\n            CreateServiceAPICall(\n              response?.data.message.order_id.amount,\n              paymentresponse.razorpay_payment_id,\n              paymentresponse.razorpay_order_id\n            );\n          },\n          prefill: {\n            name: UserInfoData.user_name,\n            email: UserInfoData.user_email,\n            //  contact: \"9999999999\",\n          },\n          theme: {\n            color: \"#2A7A5A\",\n          },\n        };\n\n        // Open Razorpay checkout\n        const rzp = new window.Razorpay(options);\n        rzp.open();\n      } catch (error) {\n        console.error(\"Payment error:\", error);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  // Service Page API call\n  const CreateServiceAPICall = async (Amount, paymentId, orderId) => {\n    setLoading(true);\n    const response = await mCreateServices({\n      user_name: UserInfoData.user_email,\n      service_id: service.id,\n      payment_transaction_id: paymentId,\n      amount: Amount / 100,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        onConfirm();\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const dialogRef = useRef();\n\n  // Close the dialog when clicking outside of it\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (dialogRef.current && !dialogRef.current.contains(event.target)) {\n        onCancel(); // Call onClose if the click is outside the dialog\n      }\n    };\n\n    if (show) {\n      document.addEventListener(\"mousedown\", handleClickOutside);\n    }\n\n    // Cleanup the event listener on component unmount\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [show, onCancel]);\n\n  if (!show) return null; // Don't render if the dialog is not open\n\n  return (\n    <>\n      {loading ? (\n        <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50  z-50\">\n          {/* max-w-sm */}\n          <div\n            className=\"bg-mDashboardBg rounded-lg max-h-[50%] mx-2 overflow-auto shadow-xl w-full md:w-2/5 lg:w-1/3 p-4\"\n            ref={dialogRef}\n          >\n            <Loader />\n          </div>\n        </div>\n      ) : (\n        <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50  z-50\">\n          {/* max-w-sm */}\n          <div\n            className=\"bg-mDashboardBg rounded-lg max-h-[90%] mx-2 overflow-auto shadow-xl w-full md:w-2/5 lg:w-1/3 p-4\"\n            ref={dialogRef}\n          >\n            <div className=\"justify-between flex\">\n              <div>\n                <p className=\"font-PlusJakartaSansSemiBold text-lg text-mTextColor\">\n                  {service.service_name}\n                </p>\n              </div>\n\n              <div>\n                <button onClick={onCancel}>\n                  <CloseIcon className=\"mb-4 \" />\n                </button>\n              </div>\n            </div>\n\n            <div>\n              <p className=\"font-PlusJakartaSansRegular text-base text-mTextColor\">\n                {t(\"Description\")}\n              </p>\n\n              <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColor mt-1 leading-6 line-clamp-10 min-h-16\">\n                {service.description}\n              </p>\n            </div>\n\n            <div className=\"mt-10 w-full justify-between flex h-14 \">\n              <div className=\"justify-center flex items-center\">\n                <DashboardTitle\n                  label={t(\"rupess\") + \" \" + service.pricing_format}\n                />\n              </div>\n\n              <div className=\"w-40\">\n                <PrimaryButton\n                  label={t(\"Proceed\")}\n                  onClick={CreateService}\n                ></PrimaryButton>\n              </div>\n            </div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default ServiceviewDialog;\n","var _line, _circle, _circle2, _circle3, _circle4, _circle5, _circle6, _circle7, _circle8;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcEmptyround(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 9,\n    height: 204,\n    viewBox: \"0 0 9 204\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _line || (_line = /*#__PURE__*/React.createElement(\"line\", {\n    x1: 4.5,\n    y1: 2.18557e-8,\n    x2: 4.49999,\n    y2: 200,\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.1\n  })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 4.5,\n    cy: 4.5,\n    r: 4.5,\n    fill: \"#0D0D0D\"\n  })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 4.5,\n    cy: 4.5,\n    r: 4,\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.1\n  })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 4.5,\n    cy: 69.5,\n    r: 4.5,\n    fill: \"#FAFAFA\"\n  })), _circle4 || (_circle4 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 4.5,\n    cy: 69.5,\n    r: 4,\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.1\n  })), _circle5 || (_circle5 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 4.5,\n    cy: 134.5,\n    r: 4.5,\n    fill: \"#FAFAFA\"\n  })), _circle6 || (_circle6 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 4.5,\n    cy: 134.5,\n    r: 4,\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.1\n  })), _circle7 || (_circle7 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 4.5,\n    cy: 199.5,\n    r: 4.5,\n    fill: \"#FAFAFA\"\n  })), _circle8 || (_circle8 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 4.5,\n    cy: 199.5,\n    r: 4,\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.1\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcEmptyround);\nexport default __webpack_public_path__ + \"static/media/ic_emptyround.9d64c1b59a591825ccd60420ba13547d.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/ic_close.svg\";\nimport { ReactComponent as EmptyroundIcon } from \"../../assets/Images/ic_emptyround.svg\";\nimport { ReactComponent as UploadIcon } from \"../../assets/Images/ic_upload.svg\";\nimport TextView from \"../../Components/TextView\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport { mCreateServices } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport Loader from \"../../Utils/Loader\";\n\nconst MyServiceviewDialog = ({ show, onConfirm, onCancel, service }) => {\n  const { t } = useTranslation(\"\");\n  const [valutname, setValutName] = useState(\"\");\n  const [description, setDescription] = useState(\"\");\n  const isDisabled = !valutname || !description;\n  const [loading, setLoading] = useState(false);\n\n  const CreateService = () => {\n    // if (!isValidEmail(email)) {\n    //   toast.error(t(\"vaildmail\"));\n    //   return;\n    // }\n    // NormalSignupCall();\n  };\n\n  //alert(JSON.stringify(service));\n\n  const uploaddocClick = () => {};\n  const downloadinvoice = (Invoiceurl) => {\n    // alert(service.service_invoice);\n    window.open(service.service_invoice, \"_blank\");\n  };\n\n  const dialogRef = useRef();\n\n  // Close the dialog when clicking outside of it\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (dialogRef.current && !dialogRef.current.contains(event.target)) {\n        onCancel(); // Call onClose if the click is outside the dialog\n      }\n    };\n\n    if (show) {\n      document.addEventListener(\"mousedown\", handleClickOutside);\n    }\n\n    // Cleanup the event listener on component unmount\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [show, onCancel]);\n\n  if (!show) return null; // Don't render if the dialog is not open\n\n  return (\n    <>\n      {loading ? (\n        <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50  z-50\">\n          {/* max-w-sm */}\n          <div\n            className=\"bg-mDashboardBg rounded-lg max-h-[50%] mx-2 overflow-auto shadow-xl w-full md:w-2/5 lg:w-1/3 p-4\"\n            ref={dialogRef}\n          >\n            <Loader />\n          </div>\n        </div>\n      ) : (\n        <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50  z-50\">\n          {/* max-w-sm */}\n          <div\n            className=\"bg-mDashboardBg rounded-lg max-h-[90%] mx-2 overflow-auto shadow-xl w-full md:w-2/5 lg:w-1/3 p-4\"\n            ref={dialogRef}\n          >\n            <div className=\"justify-between flex\">\n              <div>\n                <p className=\"font-PlusJakartaSansSemiBold text-lg text-mTextColor\">\n                  {/* {t(\"ServiceProgress\")} */}\n                </p>\n              </div>\n\n              <div>\n                <button onClick={onCancel}>\n                  <CloseIcon className=\"mb-4 \" />\n                </button>\n              </div>\n            </div>\n\n            <div className=\"relative\">\n              <div className=\"absolute top-1 left-1.5 w-0.5 bg-mBorderColor h-90\"></div>\n\n              {service.process_steps.map((service, index) => (\n                <div key={service.steps} className=\"mb-6 relative pl-8\">\n                  <div className=\"absolute left-0 top-1 flex items-center justify-center w-4 h-4 rounded-full bg-mTextColor\"></div>\n                  <div className=\"flex justify-start items-center mb-1\">\n                    <div className=\"flex justify-between items-start mb-8  w-full\">\n                      <div className={`text-sm  text-black`}>\n                        <div className=\"flex\">\n                          <p className=\"font-PlusJakartaSansSemiBold text-mTextColor text-base\">\n                            {service.steps}\n                          </p>\n                        </div>\n\n                        {service.step_status ? (\n                          service.steps === \"Payment Done\" ? (\n                            <div>\n                              <p\n                                className=\"mt-1.5 font-PlusJakartaSansRegular text-mButtonColor text-mFourteen underline cursor-pointer\"\n                                onClick={() =>\n                                  downloadinvoice(service.service_invoice)\n                                }\n                              >\n                                Download Invoice\n                              </p>\n                            </div>\n                          ) : (\n                            <div></div>\n                          )\n                        ) : (\n                          <div>\n                            <p className=\"mt-1.5 font-PlusJakartaSansRegular text-mTextColorLogin text-mFourteen \">\n                              {service.tat} Days\n                            </p>\n\n                            {service.doc_status ? (\n                              <div className=\"mt-3\">\n                                <button\n                                  className={`  text-white text-base px-5 rounded-full h-8 font-PlusJakartaSansSemiBold ${\"bg-mButtonColor\"}`}\n                                  onClick={uploaddocClick}\n                                >\n                                  {t(\"uploaddoc\")}\n                                </button>\n                              </div>\n                            ) : (\n                              <div></div>\n                            )}\n                          </div>\n                        )}\n                      </div>\n                      <div className={`text-sm  text-black`}>\n                        <p\n                          className={`font-PlusJakartaSansRegular text-base ${\n                            service.current_status === \"Under Progress\"\n                              ? \"text-mBlueOne\"\n                              : service.current_status === \"Completed\"\n                              ? \"text-mButtonColor\"\n                              : service.current_status === \"Hold\"\n                              ? \"text-orange-400\"\n                              : \"text-mTextColor\"\n                          }`}\n                        >\n                          {service.current_status}\n                        </p>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              ))}\n            </div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default MyServiceviewDialog;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { userviewstatus } from \"../Services/allAPI\";\nimport { toast } from \"react-toastify\";\n\nexport const UserAlertDialog = ({ isOpen, onClose, Confirm }) => {\n  const dialogRef = useRef();\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  // Close the dialog when clicking outside of it\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (dialogRef.current && !dialogRef.current.contains(event.target)) {\n        onClose(); // Call onClose if the click is outside the dialog\n      }\n    };\n\n    if (isOpen) {\n      document.addEventListener(\"mousedown\", handleClickOutside);\n    }\n\n    // Cleanup the event listener on component unmount\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [isOpen, onClose]);\n\n  if (!isOpen) return null; // Don't render if the dialog is not open\n\n  const clickSubmit = () => {\n    UserViewAPICall();\n  };\n\n  // Service Page API call\n  const UserViewAPICall = async (typeofchat) => {\n    setLoading(true);\n    const response = await userviewstatus({\n      user_name: UserInfoData.user_email,\n      view_status: true,\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        localStorage.setItem(\n          \"UserInfo\",\n          JSON.stringify(response?.data.message.userinfo)\n        );\n        Confirm();\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  return (\n    <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50 z-50\">\n      <div\n        ref={dialogRef} // Attach the ref to the dialog\n        className=\"bg-white flex flex-col w-[95%] lg:w-1/3 items-start justify-center p-4 rounded shadow-lg\"\n      >\n        <h2 className=\"text-lg font-PlusJakartaSansSemiBold\">Description</h2>\n\n        <p className=\"mt-2 font-PlusJakartaSansRegular text-base\">{\"\"}</p>\n\n        <div className=\"w-full justify-center items-center gap-5 lg:gap-10 mt-4 flex\">\n          <button\n            onClick={onClose}\n            className=\" px-10 py-2 min-w-32 bg-mButtonColor font-PlusJakartaSansRegular text-base text-white rounded\"\n          >\n            {t(\"cancel\")}\n          </button>\n\n          <button\n            onClick={() => clickSubmit()}\n            className=\"px-10 py-2  min-w-32 bg-mButtonColor font-PlusJakartaSansRegular text-base text-white rounded\"\n          >\n            {t(\"ok\")}\n          </button>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { useEffect } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport Loader from \"../../Utils/Loader\";\nimport SideMenu from \"../../Components/SideMenu\";\nimport { Images } from \"../../Utils/Constants\";\nimport { mGetDashboard, mServices } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\n\nimport Headingtext from \"../../Components/Headingtext\";\nimport HeaderMenu from \"../../Components/HeaderMenu\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport SecondaryButton from \"../../Components/SecondaryButton\";\nimport CreateNewVault from \"../Valut/CreateNewVault\";\nimport ServiceviewDialog from \"./ServiceviewDialog\";\nimport Titletext from \"../../Components/Titletext\";\nimport MyServiceviewDialog from \"./MyServiceviewDialog\";\nimport { UserAlertDialog } from \"../../Components/UserAlertDialog\";\n\nconst ServicePage = () => {\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const navigate = useNavigate();\n  const [servicedata, setServiceData] = useState([]);\n  const [myservicedata, setMyServiceData] = useState([]);\n  const [ShowserviceDetails, setShowserviceDetails] = useState(false);\n  const [Showselectedservice, setShowselectedservice] = useState({});\n\n  const [ShowmyserviceDetails, setShowmyserviceDetails] = useState(false);\n  const [Showselectedmyservice, setShowselectedmyservice] = useState({});\n\n  //Set user Alert Msg\n  const [isAlertOpen, setIsAlertOpen] = useState(false);\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  //\n  useEffect(() => {\n    ServicePageAPICall();\n    if (!UserInfoData.view_status) {\n      setIsAlertOpen(true);\n    }\n  }, []);\n\n  //Set user Alert close\n  const closeAlert = () => setIsAlertOpen(false);\n\n  //Set user Alert reload page\n  const Confirm = () => {\n    setIsAlertOpen(false);\n    window.location.reload();\n  };\n\n  // Service Page API call\n  const ServicePageAPICall = async () => {\n    setLoading(true);\n    const response = await mServices({\n      user_name: UserInfoData.user_email,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setServiceData(response?.data.message.our_services);\n        setMyServiceData(response?.data.message.my_services);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const handleItemClick = (mDeck_Id) => {\n    navigate(\"/deckdetails\", {\n      state: {\n        mDeck_Id: mDeck_Id,\n      },\n    });\n  };\n\n  const viewClick = (item) => {\n    setShowselectedservice(item);\n    console.log(item);\n    setShowserviceDetails(true);\n  };\n\n  const myserviceClick = (item) => {\n    setShowselectedmyservice(item);\n    console.log(item);\n    setShowmyserviceDetails(true);\n  };\n\n  const clickClose = () => {\n    setShowserviceDetails(false);\n  };\n\n  const myserviceClose = () => {\n    setShowmyserviceDetails(false);\n  };\n\n  const newserviceCreate = () => {\n    ServicePageAPICall();\n    setShowserviceDetails(false);\n  };\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div>\n          <div className=\"flex h-screen overflow-hidden  bg-no-repeat bg-cover\">\n            {/* Sidebar */}\n            <SideMenu mFrom={4} mProfile={-1} />\n\n            {/* Main content */}\n            <div className=\"flex flex-col flex-grow overflow-hidden  bg-mDashboardBg\">\n              {/* Top Navigation */}\n\n              <HeaderMenu title={t(\"Services\")} />\n\n              {/* Scrollable content scrollbar-hide */}\n              <main\n                className={`flex-grow  overflow-auto  mt-2 mb-2 mr-2 p-2 md:p-6 lg:p-8 ${\n                  !UserInfoData.view_status ? \"blur-sm pointer-events-none\" : \"\"\n                }`}\n              >\n                {servicedata.length !== 0 ? (\n                  <div>\n                    <div>\n                      <DashboardTitle label={t(\"OurServices\")} />\n\n                      <div className=\"grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 3xl:grid-cols-4 gap-6 w-full mt-5\">\n                        {servicedata.map((item) => (\n                          <div\n                            className=\"bg-white p-4 rounded-sm md:rounded-md lg:rounded-lg grid grid-cols-1 gap-5\"\n                            key={item.id}\n                          >\n                            <DashboardTitle label={item.service_name} />\n\n                            <div>\n                              <p className=\"font-PlusJakartaSansRegular text-base text-mTextColor\">\n                                {t(\"Description\")}\n                              </p>\n\n                              <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColor mt-1 leading-6 line-clamp-3 min-h-16\">\n                                {item.description}\n                              </p>\n                            </div>\n\n                            <DashboardTitle\n                              label={t(\"rupess\") + \" \" + item.pricing_format}\n                            />\n\n                            <SecondaryButton\n                              label={t(\"View\")}\n                              onClick={() => viewClick(item)}\n                            ></SecondaryButton>\n                          </div>\n                        ))}\n                      </div>\n                    </div>\n\n                    <div className=\"mt-10\">\n                      {myservicedata.length === 0 ? (\n                        <div></div>\n                      ) : (\n                        <DashboardTitle label={t(\"MyServices\")} />\n                      )}\n\n                      <div className=\"grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 3xl:grid-cols-4  gap-6 w-full mt-5\">\n                        {myservicedata.map((item) => (\n                          <div\n                            className=\"bg-white p-4 rounded-lg grid grid-cols-1 gap-5\"\n                            key={item.id}\n                          >\n                            <DashboardTitle label={item.service_name} />\n\n                            <div>\n                              <p className=\"font-PlusJakartaSansRegular text-base text-mTextColor\">\n                                {t(\"Description\")}\n                              </p>\n\n                              <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColor mt-1 leading-6 line-clamp-3 min-h-16\">\n                                {item.description}\n                              </p>\n                            </div>\n\n                            <DashboardTitle\n                              label={t(\"rupess\") + \" \" + item.pricing_format}\n                            />\n\n                            <SecondaryButton\n                              label={t(\"View\")}\n                              onClick={() => myserviceClick(item)}\n                            ></SecondaryButton>\n                          </div>\n                        ))}\n                      </div>\n                    </div>\n                  </div>\n                ) : (\n                  <div className=\"justify-center items-center flex-col flex w-full h-full \">\n                    <img\n                      className=\"rounded-lg bg-white \"\n                      src={Images.nodata}\n                      alt=\"review\"\n                    />\n                    <div className=\"mt-10\">\n                      {\" \"}\n                      <Titletext label={t(\"nodata\")} />\n                    </div>\n                  </div>\n                )}\n              </main>\n\n              {ShowserviceDetails ? (\n                <ServiceviewDialog\n                  show={ShowserviceDetails}\n                  onConfirm={newserviceCreate}\n                  service={Showselectedservice}\n                  onCancel={clickClose}\n                />\n              ) : (\n                <div></div>\n              )}\n\n              {ShowmyserviceDetails ? (\n                <MyServiceviewDialog\n                  show={ShowmyserviceDetails}\n                  // onConfirm={newserviceCreate}\n                  service={Showselectedmyservice}\n                  onCancel={myserviceClose}\n                />\n              ) : (\n                <div></div>\n              )}\n\n              <UserAlertDialog\n                isOpen={isAlertOpen}\n                onClose={closeAlert}\n                Confirm={Confirm}\n              />\n            </div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default ServicePage;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcAdd(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6 12H18M12 6V18\",\n    stroke: \"white\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcAdd);\nexport default __webpack_public_path__ + \"static/media/ic_add.d527d9100c9958fbf5ffde0d1ee2b280.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcMenu(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 21,\n    height: 22,\n    viewBox: \"0 0 21 22\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10.8111 16.0944V16.1029M10.8111 11V11.0085M10.8111 5.9057V5.91419M10.8111 11.8491C10.3422 11.8491 9.96204 11.469 9.96204 11C9.96204 10.5311 10.3422 10.151 10.8111 10.151C11.28 10.151 11.6602 10.5311 11.6602 11C11.6602 11.469 11.28 11.8491 10.8111 11.8491ZM10.8111 16.9434C10.3422 16.9434 9.96204 16.5633 9.96204 16.0944C9.96204 15.6254 10.3422 15.2453 10.8111 15.2453C11.28 15.2453 11.6602 15.6254 11.6602 16.0944C11.6602 16.5633 11.28 16.9434 10.8111 16.9434ZM10.8111 6.75475C10.3422 6.75475 9.96204 6.37462 9.96204 5.9057C9.96204 5.43678 10.3422 5.05664 10.8111 5.05664C11.28 5.05664 11.6602 5.43678 11.6602 5.9057C11.6602 6.37462 11.28 6.75475 10.8111 6.75475Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeWidth: 0.849056,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcMenu);\nexport default __webpack_public_path__ + \"static/media/ic_menu.32f9d0db6f5ac16ac051d9e1ce4bb3fa.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcMenuedit(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12.9165 4.58357L15.2735 6.94059M10.8333 17.4997H17.5M2.5 17.5L2.53954 17.2232C2.67947 16.2438 2.74943 15.754 2.90857 15.2968C3.04979 14.8911 3.2427 14.5052 3.48255 14.1488C3.75285 13.7472 4.10266 13.3974 4.80229 12.6977L14.5089 2.99109C15.1598 2.34021 16.2151 2.34021 16.866 2.99108C17.5168 3.64196 17.5168 4.69723 16.866 5.34811L6.9812 15.2329C6.3465 15.8676 6.02914 16.1849 5.66767 16.4373C5.34681 16.6613 5.00077 16.8469 4.63665 16.9902C4.22642 17.1517 3.78646 17.2405 2.90661 17.418L2.5 17.5Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcMenuedit);\nexport default __webpack_public_path__ + \"static/media/ic_menuedit.eed02c8305dcf68c04f5bd3357caa672.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcMenudelete(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M15.0002 5L14.3328 15.0107C14.2743 15.8875 14.2451 16.3259 14.0557 16.6583C13.889 16.951 13.6375 17.1863 13.3344 17.3332C12.9901 17.5 12.5508 17.5 11.672 17.5H8.3283C7.44955 17.5 7.01018 17.5 6.66591 17.3332C6.36281 17.1863 6.11132 16.951 5.9446 16.6583C5.75522 16.3259 5.726 15.8875 5.66754 15.0107L5.00016 5M3.3335 5H16.6668M13.3335 5L13.108 4.32339C12.8894 3.66771 12.7801 3.33987 12.5774 3.09748C12.3984 2.88345 12.1686 2.71777 11.9089 2.61565C11.6149 2.5 11.2693 2.5 10.5781 2.5H9.42219C8.73104 2.5 8.38546 2.5 8.09142 2.61565C7.83176 2.71777 7.6019 2.88345 7.4229 3.09748C7.22021 3.33987 7.11093 3.66771 6.89236 4.32339L6.66683 5\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcMenudelete);\nexport default __webpack_public_path__ + \"static/media/ic_menudelete.c9988d226fa9f2f90be3e80f3b00bf02.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/ic_close.svg\";\nimport { ReactComponent as UploadIcon } from \"../../assets/Images/ic_upload.svg\";\nimport TextView from \"../../Components/TextView\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { updatenewFile, updateVault } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport Loader from \"../../Utils/Loader\";\n\nimport { ReactComponent as Docclose } from \"../../assets/Images/new_ic_docclose.svg\";\n\nimport \"../../Components/HorizontalListView/HorizontalListView.css\";\nimport { Images } from \"../../Utils/Constants\";\n\nconst CreateNewFile = ({\n  onConfirm,\n  onCancel,\n  show,\n  isEdit,\n  Title,\n  selectedItem,\n  valutdetails,\n  buttonname,\n}) => {\n  const { t } = useTranslation(\"\");\n  const [valutname, setValutName] = useState(valutdetails.vault_name);\n  const [description, setDescription] = useState(valutdetails.description);\n\n  const [loading, setLoading] = useState(false);\n\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  const newVaultClick = () => {\n    if (isEdit) {\n      onUpdateNewFile();\n    } else {\n      onLoadEdit();\n    }\n  };\n\n  // Edit API call\n  const onLoadEdit = async () => {\n    setLoading(true);\n    const response = await updateVault({\n      user_name: UserInfoData.user_email,\n      vault_id: valutdetails.id,\n      vault_name: valutname,\n      description: description,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        // setDashboardData(response?.data.message.deck_details);\n        toast.success(response?.data.message.message);\n        onConfirm();\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  // Update new File API call\n  const onUpdateNewFile = async () => {\n    setLoading(true);\n    const response = await updatenewFile({\n      user_name: UserInfoData.user_email,\n      vault_id: valutdetails.id,\n      file_name: UploadFiles[0].file_name,\n      file_type: UploadFiles[0].file_type,\n      file: UploadFiles[0].file,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        // setDashboardData(response?.data.message.deck_details);\n        toast.success(response?.data.message.message);\n        onConfirm();\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  //Upload New file start\n  const inputRef = useRef();\n  const [UploadFiles, setUploadFiles] = useState([]);\n\n  const handleFileChange = (e) => {\n    // const selectedFile = e.target.files[0];\n    // setFile(selectedFile);\n    // console.log(\"file : \" + file);\n    // if (selectedFile) {\n    //   convertToBase64(selectedFile);\n    // }\n    if (e.target.files && e.target.files.length > 0) {\n      const reader = new FileReader();\n\n      // reader.addEventListener(\"load\", () => setImgSrc(reader.result));\n      reader.readAsDataURL(e.target.files[0]);\n\n      const file = e.target.files[0];\n      if (file) {\n        const fileName = file.name.split(\".\");\n        const fileExtension = file.name.split(\".\").pop();\n        console.log(file);\n        console.log(fileName[0]);\n        console.log(fileExtension);\n        convertToBase64(file, fileName[0], fileExtension);\n      }\n    }\n  };\n\n  const convertToBase64 = (file, fileName, fileExtension) => {\n    const reader = new FileReader();\n    reader.readAsDataURL(file);\n    console.log(fileExtension);\n    reader.onloadend = () => {\n      var attachFile = \"\";\n      if (fileExtension === \"pdf\") {\n        attachFile = reader.result.replace(\"data:application/pdf;base64,\", \"\");\n      } else if (fileExtension === \"docx\" || file === \"doc\") {\n        attachFile = reader.result.replace(\n          \"data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,\",\n          \"\"\n        );\n      } else if (fileExtension === \"png\") {\n        attachFile = reader.result.replace(\"data:image/png;base64,\", \"\");\n      } else if (fileExtension === \"jpg\" || fileExtension === \"jpeg\") {\n        attachFile = reader.result.replace(\"data:image/jpeg;base64,\", \"\");\n      } else if (fileExtension === \"xlsx\") {\n        attachFile = reader.result.replace(\n          \"data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,\",\n          \"\"\n        );\n      }\n      console.log(attachFile);\n      let myObject = {\n        file_type: fileExtension,\n        file: attachFile,\n        file_name: fileName,\n      }; // create an object\n\n      setUploadFiles([...UploadFiles, myObject]);\n      console.log(UploadFiles);\n    };\n    reader.onerror = (error) => {\n      console.error(\"Error: \", error);\n    };\n  };\n\n  const onChooseFile = () => {\n    inputRef.current.click();\n  };\n\n  const onDeleteImage = (index) => {\n    setUploadFiles(UploadFiles.filter((person, i) => i !== index));\n  };\n\n  // UPload new file end\n\n  const isDisabled =\n    !valutname || !description || (isEdit && UploadFiles.length === 0);\n\n  const dialogRef = useRef();\n\n  // Close the dialog when clicking outside of it\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (dialogRef.current && !dialogRef.current.contains(event.target)) {\n        onCancel(); // Call onClose if the click is outside the dialog\n      }\n    };\n\n    if (show) {\n      document.addEventListener(\"mousedown\", handleClickOutside);\n    }\n\n    // Cleanup the event listener on component unmount\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [show, onCancel]);\n\n  if (!show) return null;\n\n  return (\n    <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50  z-50\">\n      {loading ? (\n        <div className=\"h-1/3\">\n          <Loader />\n        </div>\n      ) : (\n        <div\n          className={`bg-mDashboardBg ${\n            isEdit ? \"h-90\" : \"\"\n          } rounded-lg mx-2 overflow-auto shadow-xl w-full md:w-2/5 lg:w-1/3 p-4`}\n          ref={dialogRef}\n        >\n          <div className=\"justify-between flex\">\n            <div>\n              <p className=\"font-PlusJakartaSansSemiBold text-lg text-mTextColor\">\n                {Title}\n              </p>\n            </div>\n\n            <div>\n              <button onClick={onCancel}>\n                <CloseIcon className=\"mb-4 \" />\n              </button>\n            </div>\n          </div>\n\n          <div className=\"mt-5\">\n            <div className=\"mt-4\">\n              <TextView label={t(\"Filename\")} />\n            </div>\n            <InputContainer\n              type=\"text\"\n              value={valutname}\n              placeholder={t(\"EnterVaultName\")}\n              label=\"text\"\n              name=\"text\"\n              disabled={false}\n              maxLength={100}\n              showIcon={false}\n              onChange={(e) => {\n                setValutName(e.target.value);\n              }}\n            />\n          </div>\n          <div className=\"mt-4\">\n            <div className=\"mt-4\">\n              <TextView label={t(\"Description\")} />\n            </div>\n            <div className=\"h-32 mt-2 border-mGreyFour text-start justify-start items-start flex text-xs  lg:text-sm  rounded-md w-full  border bg-mLightColorOne\">\n              <textarea\n                id=\"message\"\n                rows=\"5\"\n                value={description}\n                onChange={(e) => setDescription(e.target.value)}\n                maxLength={3000}\n                className=\"block  w-full border-black  text-sm h-full break-words text-mTextColor px-2 py-3 text-start justify-start items-start  rounded-md   font-PlusJakartaSansRegular border-none focus:border-none  bg-mLightColorOne border-4 !outline-none\"\n                placeholder={t(\"EnterDescription\")}\n              ></textarea>\n            </div>\n          </div>\n          {!isEdit ? (\n            <div></div>\n          ) : (\n            <div className=\"mt-4\">\n              <div className=\"mt-4\">\n                <TextView label={t(\"UploadFile\")} />\n              </div>\n              <div className=\"min-h-40 mt-2 border-mGreyFour text-start flex text-xs  lg:text-sm  rounded-md w-full  border bg-mLightColorOne items-center justify-center flex-col\">\n                {UploadFiles.length === 0 ? (\n                  <div\n                    className=\"w-full h-full justify-center items-center flex flex-col\"\n                    onClick={onChooseFile}\n                  >\n                    <div className=\"flex \">\n                      <UploadIcon className=\" \" />\n                      <p className=\"font-PlusJakartaSansSemiBold text-lg text-mButtonColor ml-3\">\n                        {t(\"UploadFile\")}\n                      </p>\n                    </div>\n\n                    <input\n                      type=\"file\"\n                      style={{\n                        display: \"none\",\n                      }}\n                      ref={inputRef}\n                      onChange={handleFileChange}\n                      accept=\".pdf,.doc,.docx,.xls,.xlsx,.png,.jpg,.jpeg,\"\n                    />\n                  </div>\n                ) : (\n                  <div className=\"horizontal-list\">\n                    {UploadFiles.map((item, index) => (\n                      <div\n                        key={item.id}\n                        className=\"justify-center items-center flex p-2 \"\n                      >\n                        <div className=\"w-32 bg-white p-1 border border-mGreyFive rounded-lg\">\n                          <div className=\"w-full flex justify-end items-center \">\n                            <Docclose\n                              className=\"w-5 h-5 text-right \"\n                              onClick={() => {\n                                onDeleteImage(index);\n                              }}\n                            />\n                          </div>\n\n                          <div className=\"w-full flex flex-row justify-center items-center mt-2\">\n                            {item.file_type === \"pdf\" ? (\n                              <img\n                                src={Images.Pdf}\n                                alt=\"Profile\"\n                                className=\"cursor-pointer w-11 h-11\"\n                              />\n                            ) : item.file_type === \"docx\" ||\n                              item.file_type === \"doc\" ? (\n                              <img\n                                src={Images.Word}\n                                alt=\"Profile\"\n                                className=\"cursor-pointer w-11 h-11\"\n                              />\n                            ) : item.file_type === \"xlsx\" ? (\n                              <img\n                                src={Images.Excel}\n                                alt=\"Profile\"\n                                className=\"cursor-pointer w-11 h-11\"\n                              />\n                            ) : item.file_type === \"png\" ||\n                              item.file_type === \"jpg\" ||\n                              item.file_type === \"jpeg\" ? (\n                              <img\n                                src={Images.Image}\n                                alt=\"Profile\"\n                                className=\"cursor-pointer w-11 h-11\"\n                              />\n                            ) : (\n                              <img\n                                src={Images.Image}\n                                alt=\"Profile\"\n                                className=\"cursor-pointer w-11 h-11\"\n                              />\n                            )}\n                          </div>\n                          <p className=\"mt-1 font-OpenSauceSansRegular text-sm text-mGreySeven text-center line-clamp-2\">\n                            {item.file_name}.{item.file_type}\n                          </p>\n                          <div className=\"h-4\"></div>\n                        </div>\n                      </div>\n                    ))}\n                  </div>\n                )}\n              </div>\n            </div>\n          )}\n\n          <div className=\"mt-10\">\n            <PrimaryButton\n              label={buttonname}\n              onClick={newVaultClick}\n              onDisable={isDisabled}\n            ></PrimaryButton>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default CreateNewFile;\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport Loader from \"../../Utils/Loader\";\nimport SideMenu from \"../../Components/SideMenu\";\nimport { Images } from \"../../Utils/Constants\";\nimport {\n  deleteVault,\n  getVaultList,\n  mGetDashboard,\n} from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\n\nimport Headingtext from \"../../Components/Headingtext\";\nimport HeaderMenu from \"../../Components/HeaderMenu\";\nimport { ReactComponent as AddIcon } from \"../../assets/Images/ic_add.svg\";\nimport CreateNewVault from \"./CreateNewVault\";\nimport { ReactComponent as MenuIcon } from \"../../assets/Images/ic_menu.svg\";\nimport { ReactComponent as MenuEditIcon } from \"../../assets/Images/ic_menuedit.svg\";\nimport { ReactComponent as MenuDeleteIcon } from \"../../assets/Images/ic_menudelete.svg\";\nimport DeleteDialog from \"../../Components/DeleteDialog\";\nimport Titletext from \"../../Components/Titletext\";\nimport CreateNewFile from \"./CreateNewFile\";\nimport { UserAlertDialog } from \"../../Components/UserAlertDialog\";\n\nconst ValutPage = () => {\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const navigate = useNavigate();\n  const [valutdata, setvalutdata] = useState([]);\n  const [newValutShow, setnewValutShow] = useState(false);\n  const menuRef = useRef(null);\n  const [Valutitem, setValutitem] = useState({});\n\n  // Close the menu on outside click\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (menuRef.current && !menuRef.current.contains(event.target)) {\n        setActiveMenu(null);\n      }\n    };\n    document.addEventListener(\"mousedown\", handleClickOutside);\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [menuRef]);\n\n  //Set user Alert Msg\n  const [isAlertOpen, setIsAlertOpen] = useState(false);\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  //\n  useEffect(() => {\n    VaultListAPICall();\n    if (!UserInfoData.view_status) {\n      setIsAlertOpen(true);\n    }\n  }, []);\n\n  //Set user Alert close\n  const closeAlert = () => setIsAlertOpen(false);\n\n  //Set user Alert reload page\n  const Confirm = () => {\n    setIsAlertOpen(false);\n    window.location.reload();\n  };\n  // Service Page API call\n  const VaultListAPICall = async () => {\n    setLoading(true);\n    const response = await getVaultList({\n      user_name: UserInfoData.user_email,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setvalutdata(response?.data.message.vault_details);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const handleItemClick = (mDeck_Id) => {\n    navigate(\"/deckdetails\", {\n      state: {\n        mDeck_Id: mDeck_Id,\n      },\n    });\n  };\n\n  const newvalutClick = () => {\n    setnewValutShow(true);\n  };\n\n  const newvalutCreate = () => {\n    VaultListAPICall();\n    setnewValutShow(false);\n  };\n\n  const clickClose = () => {\n    setnewValutShow(false);\n  };\n\n  const [activeMenu, setActiveMenu] = useState(null);\n\n  const menuClick = (id) => {\n    setActiveMenu(activeMenu === id ? null : id);\n  };\n\n  const clickEdit = (item, event) => {\n    //alert(`Edit ${item.id}`);\n    setActiveMenu(null);\n\n    navigate(\"/valutdetails\", {\n      state: {\n        mValut_Id: item.id,\n      },\n    });\n  };\n  const [newFileShow, setnewFileShow] = useState(false);\n  const [selectedFiles, setselectedFiles] = useState({});\n  const [isEdit, setisEdit] = useState(false);\n  const [Title, setTitle] = useState(t(\"CreateNewFile\"));\n  const [buttonname, setButtonname] = useState(t(\"uploadnow\"));\n  const clickEditdetails = (item, event) => {\n    // alert(`Edit ${item.Task}`);\n    setselectedFiles(item);\n    setActiveMenu(null);\n    setnewFileShow(true);\n    setisEdit(true);\n\n    setTitle(t(\"EditDetails\"));\n    setButtonname(t(\"update\"));\n  };\n\n  const newfileCreate = () => {\n    VaultListAPICall();\n    setnewFileShow(false);\n  };\n\n  const clickDelete = (item, event) => {\n    setActiveMenu(null);\n    setValutitem(item);\n    setIsDialogOpen(true);\n  };\n\n  //Delete dialog\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n\n  const closeDialog = () => {\n    setIsDialogOpen(false);\n  };\n\n  const confirmDelete = () => {\n    // Perform delete action here\n    console.log(\"Item deleted\");\n\n    ondeleteAPICall();\n  };\n\n  // Service Page API call\n  const ondeleteAPICall = async () => {\n    setLoading(true);\n    const response = await deleteVault({\n      user_name: UserInfoData.user_email,\n      vault_id: Valutitem.id,\n      delete: 1,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        closeDialog();\n        VaultListAPICall();\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const clickEditClose = () => {\n    setnewFileShow(false);\n  };\n\n  // Delete dialog end\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div className=\"flex h-screen overflow-hidden bg-gray-100\">\n          {/* Sidebar */}\n          <SideMenu mFrom={5} mProfile={-1} />\n\n          {/* Main content */}\n          <div className=\"flex flex-col flex-grow overflow-hidden ml-4 mr-4 mt-3\">\n            {/* Top Navigation */}\n            <HeaderMenu title={t(\"Valut\")} />\n\n            {/* Scrollable content */}\n            <main\n              className={`flex-grow overflow-auto  mt-5 mb-3 scrollbar-hide ${\n                !UserInfoData.view_status ? \"blur-sm pointer-events-none\" : \"\"\n              }`}\n            >\n              {/* Adjusted padding top to avoid overlap */}\n\n              <div className=\"w-full justify-between flex\">\n                <div className=\"h-9 items-center justify-center flex\">\n                  <p className=\"font-PlusJakartaSansSemiBold text-sm md:text-base xl:text-lg 3xl:text-lg text-mTextColor\">\n                    Vault\n                  </p>\n                </div>\n\n                <div>\n                  <div\n                    className=\"h-8 md:h-9 3xl:h-9 rounded-lg bg-mButtonColor items-center justify-center flex p-2 md:p-3 cursor-pointer\"\n                    onClick={newvalutClick}\n                  >\n                    <AddIcon className=\"w-6 h-6 flex-shrink-0 \" />\n                    <p className=\"ml-2 font-PlusJakartaSansSemiBold text-white text-base\">\n                      {t(\"NewVault\")}\n                    </p>\n                  </div>\n                </div>\n              </div>\n\n              <div className=\"mt-5\">\n                {valutdata.length !== 0 ? (\n                  <div className=\"grid-container\">\n                    {valutdata.map((item) => (\n                      <div\n                        key={item.id}\n                        className=\" grid-itemValut bg-white flex justify-start items-center w-full\"\n                      >\n                        <div\n                          className=\"w-[95%] flex justify-start items-center \"\n                          onClick={() => clickEdit(item)}\n                        >\n                          <div className=\"w-10 h-[40px]\">\n                            <img\n                              src={Images.folderimage}\n                              alt=\"Profile\"\n                              className=\"cursor-pointer\"\n                              onClick={() => clickEdit(item)}\n                            />\n                          </div>\n                          <div className=\"ml-3\">\n                            <p className=\"font-PlusJakartaSansRegular text-mTextColor  text-sm md:text-base xl:text-lg 3xl:text-lg items-center justify-center flex\">\n                              {item.vault_name}\n                            </p>\n                          </div>\n                        </div>\n                        <div className=\"w-[5%] cursor-pointer items-center justify-center flex\">\n                          <MenuIcon\n                            className=\"w-8 h-8 flex-shrink-0 \"\n                            onClick={() => menuClick(item.id)}\n                          />\n                        </div>\n\n                        {activeMenu === item.id && (\n                          <div\n                            className=\"absolute  lg:right-0 mt-20 w-40 3xl:w-56 bg-white p-3 rounded-xl shadow shadow-mChatbg z-10\"\n                            ref={menuRef}\n                          >\n                            <ul>\n                              <li\n                                className=\"px-2 py-2  cursor-pointer\"\n                                onClick={() => clickEditdetails(item)}\n                              >\n                                <div className=\"flex flex-row justify-start items-center\">\n                                  <MenuEditIcon className=\"w-5 h-5 3xl:w-6 3xl:h-6 flex-shrink-0 \" />\n                                  <p className=\"font-PlusJakartaSansRegular  text-mTextColorLogin text-base 3xl:text-base ml-3\">\n                                    {t(\"EditDetails\")}{\" \"}\n                                  </p>\n                                </div>\n                              </li>\n                              <li\n                                className=\"px-2 py-2 mt-2 cursor-pointer\"\n                                onClick={() => clickDelete(item)}\n                              >\n                                <div className=\"flex flex-row justify-start items-center\">\n                                  <MenuDeleteIcon className=\"w-5 h-5 3xl:w-6 3xl:h-6 flex-shrink-0 \" />\n                                  <p className=\"font-PlusJakartaSansRegular  text-mTextColorLogin text-base 3xl:text-base ml-3\">\n                                    {t(\"Delete\")}{\" \"}\n                                  </p>\n                                </div>\n                              </li>\n                            </ul>\n                          </div>\n                        )}\n                      </div>\n                    ))}\n                  </div>\n                ) : (\n                  <div className=\"justify-center items-center flex-col flex w-full h-full \">\n                    <img\n                      className=\"rounded-lg bg-white \"\n                      src={Images.nodata}\n                      alt=\"review\"\n                    />\n                    <div className=\"mt-10\">\n                      {\" \"}\n                      <Titletext label={t(\"nodata\")} />\n                    </div>\n                  </div>\n                )}\n              </div>\n            </main>\n\n            {newFileShow ? (\n              <CreateNewFile\n                show={newFileShow}\n                onConfirm={newfileCreate}\n                onCancel={clickEditClose}\n                Title={Title}\n                selectedItem={selectedFiles}\n                valutdetails={selectedFiles}\n                isEdit={false}\n                buttonname={buttonname}\n              />\n            ) : (\n              <div></div>\n            )}\n\n            {newValutShow ? (\n              <CreateNewVault\n                show={newValutShow}\n                onConfirm={newvalutCreate}\n                onCancel={clickClose}\n              />\n            ) : (\n              <div></div>\n            )}\n\n            <UserAlertDialog\n              isOpen={isAlertOpen}\n              onClose={closeAlert}\n              Confirm={Confirm}\n            />\n          </div>\n          <DeleteDialog\n            isOpen={isDialogOpen}\n            onCancel={closeDialog}\n            onConfirm={confirmDelete}\n            title={\"Delete Confirmation\"}\n            message={\" Are you sure you want to delete this item? \"}\n          />\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default ValutPage;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcLeftarrow(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9 18L15 12L9 6\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcLeftarrow);\nexport default __webpack_public_path__ + \"static/media/ic_leftarrow.78aa7055f07095aaa35ff213ea28e69c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcDownarrow(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6 9L12 15L18 9\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcDownarrow);\nexport default __webpack_public_path__ + \"static/media/ic_downarrow.0ebc67081bce3fa899b7090a2bd17b42.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcSharefile(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10.3009 13.6946L20.102 3.89705M10.5795 14.1351L12.8019 18.58C13.339 19.6541 13.6075 20.1912 13.9458 20.3352C14.2394 20.4602 14.575 20.4376 14.8492 20.2743C15.1651 20.0862 15.3591 19.518 15.7472 18.3815L19.9463 6.08398C20.2845 5.09372 20.4535 4.59859 20.3378 4.27106C20.2371 3.98611 20.013 3.76198 19.7281 3.6613C19.4005 3.54558 18.9054 3.71465 17.9151 4.05279L5.61763 8.25193C4.48114 8.64 3.91289 8.83404 3.72478 9.14995C3.56153 9.4241 3.53891 9.7597 3.66389 10.0533C3.80791 10.3916 4.34498 10.6601 5.41912 11.1972L9.86397 13.4196C10.041 13.5081 10.1295 13.5523 10.2061 13.6115C10.2742 13.6639 10.3352 13.7249 10.3876 13.793C10.4468 13.8697 10.491 13.9581 10.5795 14.1351Z\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcSharefile);\nexport default __webpack_public_path__ + \"static/media/ic_sharefile.3c000eecfc751d81cf4fefa88fe19c93.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcDotted(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 21,\n    height: 22,\n    viewBox: \"0 0 21 22\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M15.9059 11.0004H15.9144M10.8116 11.0004H10.82M5.71722 11.0004H5.72571M11.6606 11.0004C11.6606 11.4693 11.2805 11.8495 10.8116 11.8495C10.3426 11.8495 9.9625 11.4693 9.9625 11.0004C9.9625 10.5315 10.3426 10.1514 10.8116 10.1514C11.2805 10.1514 11.6606 10.5315 11.6606 11.0004ZM16.7549 11.0004C16.7549 11.4693 16.3748 11.8495 15.9059 11.8495C15.437 11.8495 15.0568 11.4693 15.0568 11.0004C15.0568 10.5315 15.437 10.1514 15.9059 10.1514C16.3748 10.1514 16.7549 10.5315 16.7549 11.0004ZM6.56628 11.0004C6.56628 11.4693 6.18614 11.8495 5.71722 11.8495C5.2483 11.8495 4.86816 11.4693 4.86816 11.0004C4.86816 10.5315 5.2483 10.1514 5.71722 10.1514C6.18614 10.1514 6.56628 10.5315 6.56628 11.0004Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeWidth: 0.849056,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcDotted);\nexport default __webpack_public_path__ + \"static/media/ic_dotted.af61cb7122a1c0155cc8fe61a4f63a91.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcDownload(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6.66634 9.99967L9.99967 13.333M9.99967 13.333L13.333 9.99967M9.99967 13.333V3.33301M3.33301 16.6663H16.6663\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcDownload);\nexport default __webpack_public_path__ + \"static/media/ic_download.864a3157ae4fb6f38fd05c1f66d028b9.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\n\n// Custom text view\nconst TextViewlight = ({ label, isCenter }) => (\n  <p\n    className={`font-PlusJakartaSansRegular font-normal leading-7 text-mTextColorLogin text-sm md:text-base xl:text-lg 3xl:text-lg ${\n      isCenter ? \"text-center\" : \"\"\n    }`}\n  >\n    {label}\n  </p>\n);\n\nexport default TextViewlight;\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/ic_close.svg\";\nimport { ReactComponent as UploadIcon } from \"../../assets/Images/ic_upload.svg\";\nimport TextView from \"../../Components/TextView\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport {\n  invitePeople,\n  shareFile,\n  shareVault,\n  updatenewFile,\n  updateVault,\n} from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport Loader from \"../../Utils/Loader\";\nimport \"../../Components/Autocomplete/Autocompletestyle.css\";\nimport { Images } from \"../../Utils/Constants\";\nimport TextViewlight from \"../../Components/TextViewlight\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport { ReactComponent as Docclose } from \"../../assets/Images/new_ic_docclose.svg\";\nimport { ReactComponent as Icondrop } from \"../../assets/Images/ic_dropdown.svg\";\n\nconst ShareFile = ({\n  show,\n  onConfirm,\n  onCancel,\n  invitepeople,\n  selectedItem,\n  isShareValut,\n  valutId,\n}) => {\n  const { t } = useTranslation(\"\");\n  const [valutname, setValutName] = useState(\"\");\n\n  const [description, setDescription] = useState(\"\");\n\n  const [loading, setLoading] = useState(false);\n\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  const newVaultClick = () => {\n    // alert(JSON.stringify(selectedPeople));\n\n    if (isShareValut) {\n      mShareValut();\n    } else {\n      mShareFile();\n    }\n  };\n\n  // Service Page API call\n  const mShareFile = async () => {\n    setLoading(true);\n    const response = await shareFile({\n      user_name: UserInfoData.user_email,\n      vault_id: valutId,\n      invite_people: JSON.stringify(selectedPeople),\n      file_id: selectedItem.doc_id,\n      share_link: \"http://localhost:3002/valutdetails/\" + selectedItem.doc_id,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  // Service Page API call\n  const mShareValut = async () => {\n    setLoading(true);\n    const response = await shareVault({\n      user_name: UserInfoData.user_email,\n      vault_id: valutId,\n      invite_people: JSON.stringify(selectedPeople),\n      file_id: \"\",\n      share_link: \"http://localhost:3002/valutdetails/\" + valutId,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  // Filter start\n\n  const [filteredSuggestions, setFilteredSuggestions] = useState([]);\n  const [inputValue, setInputValue] = useState(\"\");\n  const [selectedPeople, setselectedPeople] = useState([]);\n\n  const handleChange = (event) => {\n    const inputValue = event.target.value;\n    setInputValue(inputValue);\n\n    // Filter suggestions based on input value\n    const filteredSuggestions = invitepeople.filter((suggestion) =>\n      suggestion.name.toLowerCase().includes(inputValue.toLowerCase())\n    );\n    setFilteredSuggestions(filteredSuggestions);\n  };\n\n  const handleSelect = (value) => {\n    setInputValue(\"\");\n    setFilteredSuggestions([]);\n\n    let myObject = {\n      email_id: value.email_id,\n      full_name: value.full_name,\n      view_status: \"Can view only\",\n      image: value.image,\n      id: value.id,\n    }; // create an object\n\n    if (selectedPeople.length === 0) {\n      setselectedPeople([...selectedPeople, myObject]);\n    }\n\n    const exists = selectedPeople.some(\n      (person) => person.email_id === value.email_id\n    );\n\n    if (!exists) {\n      setselectedPeople([...selectedPeople, myObject]); // Add new item if it doesn't exist\n    } else {\n    }\n  };\n\n  // Filter end\n\n  const onDeleteImage = (index) => {\n    setselectedPeople(selectedPeople.filter((person, i) => i !== index));\n  };\n\n  const isDisabled = selectedPeople.length === 0;\n\n  const copylink = () => {\n    var link = \"http://localhost:3002/valutdetails/\" + valutId;\n    if (isShareValut) {\n      link = \"http://localhost:3002/valutdetails/\" + valutId;\n    } else {\n      link = \"http://localhost:3002/valutdetails/\" + selectedItem.doc_id;\n    }\n    navigator.clipboard\n      .writeText(link)\n      .then(() => {\n        toast.success(\"Link Copied\");\n        // Reset copied state after 2 seconds\n        // setTimeout(() => {\n        //   setCopied(false);\n        // }, 2000);\n      })\n      .catch((err) => {\n        console.error(\"Failed to copy text: \", err);\n      });\n  };\n\n  // Drop down start\n  const Dropdownitems = [\"Can view only\", \"Can edit\"];\n\n  const [isOpen, setIsOpen] = useState(false);\n  const [selectedOption, setSelectedOption] = useState(\"Can view only\");\n\n  const [activeMenu, setActiveMenu] = useState(null);\n\n  const toggleDropdown = (index, email, SelecItem) => {\n    setActiveMenu(activeMenu === index ? null : index);\n    setIsOpen(!isOpen);\n  };\n\n  const handleOptionClick = (option, index) => {\n    const updatedItems = selectedPeople.map((item, index1) => {\n      if (index === index1) {\n        return { ...item, view_status: option }; // Update the name of the matched item\n      }\n      return item; // Return unchanged items\n    });\n\n    //Update the state with the new array\n    setselectedPeople(updatedItems);\n\n    setSelectedOption(option);\n    setActiveMenu(null);\n    setIsOpen(false);\n  };\n\n  const dialogRef = useRef();\n\n  // Close the dialog when clicking outside of it\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (dialogRef.current && !dialogRef.current.contains(event.target)) {\n        onCancel(); // Call onClose if the click is outside the dialog\n      }\n    };\n\n    if (show) {\n      document.addEventListener(\"mousedown\", handleClickOutside);\n    }\n\n    // Cleanup the event listener on component unmount\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [show, onCancel]);\n\n  if (!show) return null; // Don't render if the dialog is not open\n\n  // Drop down end\n  return (\n    <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50  z-50\">\n      {loading ? (\n        <div className=\"h-2/4\">\n          <Loader />\n        </div>\n      ) : (\n        <div\n          className={`bg-mDashboardBg  rounded-lg mx-2 overflow-auto shadow-xl w-full md:w-2/5 lg:w-1/3 p-4`}\n          ref={dialogRef}\n        >\n          <div className=\"justify-between flex\">\n            <div>\n              <p className=\"font-PlusJakartaSansSemiBold text-lg text-mTextColor\">\n                {t(\"ShareFile\")}\n              </p>\n            </div>\n\n            <div>\n              <button onClick={onCancel}>\n                <CloseIcon className=\"mb-4 \" />\n              </button>\n            </div>\n          </div>\n\n          <div className=\"mt-5\">\n            <div className=\"mt-4\">\n              <DashboardTitle label={t(\"InvitePeople\")} />\n            </div>\n            <div className=\"mt-2\">\n              <div className=\"autocomplete-container absolute\">\n                <input\n                  className=\"autocomplete-input font-PlusJakartaSansMedium\"\n                  type=\"text\"\n                  // style={{\n                  //   display: \"none\",\n                  // }}\n                  value={inputValue}\n                  onChange={handleChange}\n                  placeholder=\"Type to search people...\"\n                />\n                <ul className=\"autocomplete-suggestions\">\n                  {filteredSuggestions.map((suggestion, index) => (\n                    <li\n                      key={index}\n                      className=\"autocomplete-suggestion\"\n                      onClick={() => handleSelect(suggestion)}\n                    >\n                      <div className=\"w-full h-full\">\n                        <div className=\"flex-row flex h-full\">\n                          <img\n                            className=\"rounded-full bg-white w-9 h-9\"\n                            src={\n                              suggestion.image.length === 0\n                                ? Images.avatar\n                                : suggestion.image\n                            }\n                            alt=\"\"\n                          />\n                          <div className=\"h-9 flex  ml-2 justify-center items-center\">\n                            <TextViewlight label={suggestion.name} />\n                          </div>\n                        </div>\n                      </div>\n                    </li>\n                  ))}\n                </ul>\n              </div>\n            </div>\n          </div>\n\n          <div className=\"w-full h-px bg-mBorderColor mt-10\"></div>\n\n          <div className=\"mt-4\">\n            <div className=\"mt-4 \">\n              {selectedPeople.length === 0 ? (\n                <div></div>\n              ) : (\n                <DashboardTitle label={t(\"Peoplewithaccess\")} />\n              )}\n\n              <div className=\"mt-4\"></div>\n              {selectedPeople.map((item, index) => (\n                <div\n                  className=\"bg-white mt-2  p-4 rounded-lg grid grid-cols-1 gap-5\"\n                  key={item.email_id}\n                >\n                  <div className=\"w-full h-full flex\">\n                    <div className=\"flex-row flex h-full w-2/3\">\n                      <div className=\"relative w-11 h-11\">\n                        <img\n                          className=\"rounded-full bg-white w-11 h-11\"\n                          src={\n                            item.image.length === 0 ? Images.avatar : item.image\n                          }\n                          alt=\"\"\n                        />\n                        <button\n                          className=\"absolute top-0 right-8 bg-white  rounded-full \"\n                          onClick={() => {\n                            onDeleteImage(index);\n                          }}\n                        >\n                          <Docclose className=\"w-5 h-5 text-gray-700\" />\n                        </button>\n                      </div>\n\n                      {/* <img\n                        className=\"rounded-full bg-white w-9 h-9\"\n                        src={\n                          item.image.length === 0 ? Images.avatar : item.image\n                        }\n                        alt=\"\"\n                      /> */}\n                      <div className=\"h-9 flex  ml-2 justify-center items-center\">\n                        <TextViewlight label={item.full_name} />\n                      </div>\n                    </div>\n\n                    <div className=\"h-full w-1/3 \">\n                      <div className=\"  w-full h-full bg-white justify-center items-center flex\">\n                        <div className=\"items-center justify-center flex  w-full\">\n                          <div className=\"relative  w-full\">\n                            <button\n                              className=\"custom-dropdown-toggle\"\n                              onClick={() =>\n                                toggleDropdown(\n                                  index,\n                                  item.email_id,\n                                  selectedOption\n                                )\n                              }\n                            >\n                              <p\n                                className={`font-PlusJakartaSansRegular font-normal text-mTextColorLogin text-sm `}\n                              >\n                                {/* {selectedOption} */}\n                                {item.view_status}\n                              </p>\n                            </button>\n\n                            {/* Dropdown menu */}\n\n                            <ul\n                              className={`custom-dropdown-menu   ${\n                                activeMenu === index && isOpen ? \"show\" : \"\"\n                              }`}\n                            >\n                              {Dropdownitems.map((option) => (\n                                <li\n                                  key={option}\n                                  className={`custom-dropdown-option ${\n                                    item.view_status === option\n                                      ? \"selected\"\n                                      : \"\"\n                                  }`}\n                                  onClick={() =>\n                                    handleOptionClick(option, index)\n                                  }\n                                >\n                                  <p\n                                    className={`font-PlusJakartaSansRegular font-normal text-mTextColorLogin text-sm ${\n                                      item.view_status === option\n                                        ? \"text-white\"\n                                        : \"text-mTextColorLogin\"\n                                    }`}\n                                  >\n                                    {option}\n                                  </p>\n                                </li>\n                              ))}\n                            </ul>\n\n                            {/* {activeMenu === index && (\n                              \n                            )} */}\n                          </div>\n                        </div>\n                        <Icondrop className=\"w-6 h-6 flex-shrink-0\" />\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              ))}\n            </div>\n          </div>\n\n          <div className=\"w-full flex mt-10\">\n            <div\n              className=\"h-14 w-1/2  bg-mButtonColorligth rounded-lg items-center justify-center flex cursor-pointer mr-4\"\n              onClick={copylink}\n            >\n              <p className=\"ml-2 font-PlusJakartaSansSemiBold text-mButtonColor text-base\">\n                {\" \"}\n                {t(\"CopyLink\")}{\" \"}\n              </p>\n            </div>\n\n            <div className=\" w-1/2 ml-4\">\n              <PrimaryButton\n                label={\"Done\"}\n                onClick={newVaultClick}\n                onDisable={isDisabled}\n              ></PrimaryButton>\n            </div>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default ShareFile;\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport Loader from \"../../Utils/Loader\";\nimport SideMenu from \"../../Components/SideMenu\";\nimport { Images } from \"../../Utils/Constants\";\nimport {\n  deleteFile,\n  getVault,\n  invitePeople,\n  mGetDashboard,\n} from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\n\nimport Headingtext from \"../../Components/Headingtext\";\nimport HeaderMenu from \"../../Components/HeaderMenu\";\nimport { ReactComponent as AddIcon } from \"../../assets/Images/ic_add.svg\";\nimport { ReactComponent as RightIcon } from \"../../assets/Images/ic_leftarrow.svg\";\nimport { ReactComponent as DownarrowIcon } from \"../../assets/Images/ic_downarrow.svg\";\nimport { ReactComponent as SharefileIcon } from \"../../assets/Images/ic_sharefile.svg\";\nimport { ReactComponent as DottedIcon } from \"../../assets/Images/ic_dotted.svg\";\nimport { ReactComponent as DownloadIcon } from \"../../assets/Images/ic_download.svg\";\nimport CreateNewVault from \"./CreateNewVault\";\nimport TextView from \"../../Components/TextView\";\nimport { ReactComponent as MenuEditIcon } from \"../../assets/Images/ic_menuedit.svg\";\nimport { ReactComponent as MenuDeleteIcon } from \"../../assets/Images/ic_menudelete.svg\";\nimport CreateNewFile from \"./CreateNewFile\";\nimport { ReactComponent as MenuIcon } from \"../../assets/Images/ic_menu.svg\";\nimport { ReactComponent as Docclose } from \"../../assets/Images/new_ic_docclose.svg\";\n\nimport DeleteDialog from \"../../Components/DeleteDialog\";\nimport ShareFile from \"./ShareFile\";\nimport { AlertDialog } from \"../../Components/AlertDialog\";\n\nconst ValutDetails = () => {\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const navigate = useNavigate();\n  const [dashboarddata, setDashboardData] = useState([\n    { deck_profile_image: \"test\", id: \"\" },\n  ]);\n  const menuRef = useRef(null);\n  const [isEdit, setisEdit] = useState(false);\n  const [Title, setTitle] = useState(t(\"CreateNewFile\"));\n  const [buttonname, setButtonname] = useState(t(\"uploadnow\"));\n  const [getFiles, setgetFiles] = useState([]);\n  const [selectedFiles, setselectedFiles] = useState({});\n  const [getValutDetails, setValutDetails] = useState([]);\n  const [isValut, setisValut] = useState(false);\n\n  //Get Valut id\n\n  const location = useLocation();\n  const Valut_Id = location.state?.mValut_Id || \"Deck-Review-0023\";\n\n  // Add new file\n  const [newFileShow, setnewFileShow] = useState(false);\n\n  // Show share option\n  const [mShareFile, setmShareFile] = useState(false);\n  const [invitepeople, setInvitepeople] = useState([]);\n\n  const newfileCreate = () => {\n    getValutAPICall();\n    setnewFileShow(false);\n  };\n\n  const clickClose = () => {\n    setnewFileShow(false);\n  };\n\n  const shareClose = () => {\n    setmShareFile(false);\n  };\n\n  // Hide menu start\n\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (menuRef.current && !menuRef.current.contains(event.target)) {\n        setActiveMenu(null);\n      }\n    };\n    document.addEventListener(\"mousedown\", handleClickOutside);\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [menuRef]);\n\n  //Hide menu start\n\n  // Add new file end\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  //\n  useEffect(() => {\n    getValutAPICall();\n    getinvitePeople();\n  }, []);\n\n  // Service Page API call\n  const getValutAPICall = async () => {\n    setLoading(true);\n    const response = await getVault({\n      vault_id: Valut_Id,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        // setDashboardData(response?.data.message.deck_details);\n        setgetFiles(response?.data.message.vault_details.file_upload);\n        setValutDetails(response?.data.message.vault_details);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  // Update new File API call\n  const getinvitePeople = async () => {\n    setLoading(true);\n    const response = await invitePeople({});\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setInvitepeople(response?.data.message.invite_people);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const newvalutClick = () => {\n    setActiveMenu(null);\n    setnewFileShow(true);\n    setisEdit(false);\n    setTitle(t(\"CreateNewFile\"));\n    setButtonname(t(\"uploadnow\"));\n  };\n\n  // const items = [\n  //   { id: 1, name: \"Item 1\" },\n  //   { id: 2, name: \"Item 2\" },\n  //   { id: 3, name: \"Item 3\" },\n  //   { id: 4, name: \"Item 4\" },\n  //   { id: 5, name: \"Item 5\" },\n  //   { id: 6, name: \"Item 6\" },\n  // ];\n\n  const [activeMenu, setActiveMenu] = useState(null);\n\n  const toggleMenu = (id) => {\n    setActiveMenu(activeMenu === id ? null : id);\n  };\n\n  const clickEdit = (item, event) => {\n    // alert(`Edit ${item.Task}`);\n    setselectedFiles(item);\n    setActiveMenu(null);\n    setnewFileShow(true);\n    setisEdit(false);\n\n    setTitle(t(\"EditDetails\"));\n    setButtonname(t(\"update\"));\n  };\n\n  const clickDownload = (item, event) => {\n    setActiveMenu(null);\n    setIsDialogOpen(true);\n  };\n\n  const clickShare = (mFrom, item, event) => {\n    setisValut(mFrom === \"Valut\" ? true : false);\n    // alert(isValut);\n\n    setActiveMenu(null);\n    setselectedFiles(item);\n    setmShareFile(true);\n  };\n\n  const clickDelete = (item, event) => {\n    setActiveMenu(null);\n    setIsDialogOpen(true);\n    setselectedFiles(item);\n  };\n\n  //Delete dialog\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n\n  const closeDialog = () => {\n    setIsDialogOpen(false);\n  };\n\n  const confirmDelete = () => {\n    // Perform delete action here\n    console.log(\"Item deleted\");\n    ondeleteAPICall();\n  };\n\n  // Service Page API call\n  const ondeleteAPICall = async () => {\n    setLoading(true);\n    const response = await deleteFile({\n      user_name: UserInfoData.user_email,\n      vault_id: Valut_Id,\n      file_id: selectedFiles.doc_id,\n      delete: 1,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        closeDialog();\n        getValutAPICall();\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const onBack = () => {\n    navigate(\"/valut\");\n  };\n\n  // Open or download file\n\n  const openUrl = (pdfurl) => {\n    setActiveMenu(null);\n    window.open(pdfurl, \"_blank\");\n  };\n  const [isAlertOpen, setIsAlertOpen] = useState(false);\n  const [description, setdescription] = useState(\"\");\n  const infoclick = (description) => {\n    setIsAlertOpen(true);\n    setdescription(description);\n  };\n\n  const closeAlert = () => setIsAlertOpen(false);\n\n  // Delete dialog end\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div className=\"flex h-screen overflow-hidden bg-gray-100\">\n          {/* Sidebar */}\n          <SideMenu mFrom={5} mProfile={-1} />\n\n          {/* Main content */}\n          <div className=\"flex flex-col flex-grow overflow-hidden ml-4 mr-4 mt-3\">\n            {/* Top Navigation */}\n            <HeaderMenu title={t(\"Valut\")} />\n\n            {/* Scrollable content */}\n            <main className=\"flex-grow overflow-auto  mt-1 mb-3 scrollbar-hide \">\n              {/* Adjusted padding top to avoid overlap */}\n\n              <div className=\" w-full justify-between flex flex-col md:flex-row mt-5\">\n                <div className=\"h-9 items-center justify-start md:justify-center flex \">\n                  <div className=\"cursor-pointer \" onClick={onBack}>\n                    <p className=\"font-PlusJakartaSansSemiBold text-sm md:text-base xl:text-lg 3xl:text-lg text-mTextColorLogin\">\n                      Vault\n                    </p>\n                  </div>\n                  <RightIcon className=\"w-4 h-4 md:w-5 md:h-5 xl:w-6 xl:h-6  flex-shrink-0 ml-2\" />\n                  <p className=\"font-PlusJakartaSansSemiBold text-sm md:text-base xl:text-lg 3xl:text-lg text-mTextColor ml-2\">\n                    {getValutDetails.vault_name}\n                  </p>\n                  <div\n                    className=\"ml-2 mt-1 cursor-pointer  justify-center items-center flex\"\n                    onClick={() => infoclick(getValutDetails.description)}\n                  >\n                    <img\n                      src={Images.infobtn}\n                      alt=\"Profile\"\n                      className=\"cursor-pointer w-5 h-5\"\n                    />\n                    {/* <SharefileIcon className=\"w-4 h-4 md:w-6 md:h-6 mt-1 ml-1 flex-shrink-0 \" /> */}\n                  </div>\n                </div>\n\n                <div className=\"flex mt-5 md:mt-0 \">\n                  <div\n                    className=\" h-8 md:h-9  3xl:h-9 rounded-lg bg-white items-center justify-center flex  p-2 md:p-3 cursor-pointer mr-3 md:mr-6\"\n                    onClick={() => clickShare(\"Valut\")}\n                  >\n                    <TextView label={t(\"ShareLink\")} />\n                    <SharefileIcon className=\"w-4 h-4 md:w-6 md:h-6 mt-1 ml-1 flex-shrink-0 \" />\n                  </div>\n                  {/* <div\n                    className=\"h-9  rounded-lg bg-white items-center justify-center flex p-3 cursor-pointer mr-6\"\n                    onClick={newvalutClick}\n                  >\n                    <TextView label={t(\"DocumentType\")} />\n                    <DownarrowIcon className=\"w-6 h-6 mt-1 ml-2 flex-shrink-0 \" />\n                  </div> */}\n                  <div\n                    className=\" h-8 md:h-9 3xl:h-9 rounded-lg bg-mButtonColor items-center justify-center flex p-2 md:p-3 cursor-pointer\"\n                    onClick={newvalutClick}\n                  >\n                    <AddIcon className=\"w-5 h-5 md:w-6 md:h-6 flex-shrink-0 \" />\n                    <p className=\"ml-1 md:ml-2 font-PlusJakartaSansRegular text-white text-sm md:text-base xl:text-lg 3xl:text-lg\">\n                      {t(\"NewFile\")}\n                    </p>\n                  </div>\n                </div>\n              </div>\n\n              <div className=\"grid-container mt-5\">\n                {getFiles.map((item) => (\n                  <div\n                    key={item.doc_id}\n                    className=\"grid-itemValutdetails bg-white flex justify-start items-center w-full\"\n                  >\n                    <div\n                      className=\"w-[95%] flex justify-start items-center \"\n                      // onClick={() => clickEdit(item)}\n                    >\n                      <div className=\"w-1/5  h-full justify-center items-center flex\">\n                        {/* <img\n                          src={Images.folderimage}\n                          alt=\"Profile\"\n                          className=\"cursor-pointer w-9 h-9\"\n                          onClick={() => clickEdit(item)}\n                        /> */}\n\n                        {item.file_type === \"pdf\" ? (\n                          <img\n                            src={Images.Pdf}\n                            alt=\"Profile\"\n                            className=\"cursor-pointer w-9 h-9\"\n                            onClick={() => clickEdit(item)}\n                          />\n                        ) : item.file_type === \"docx\" ||\n                          item.file_type === \"doc\" ? (\n                          <img\n                            src={Images.Word}\n                            alt=\"Profile\"\n                            className=\"cursor-pointer w-9 h-9\"\n                            onClick={() => clickEdit(item)}\n                          />\n                        ) : item.file_type === \"xlsx\" ? (\n                          <img\n                            src={Images.Excel}\n                            alt=\"Profile\"\n                            className=\"cursor-pointer w-9 h-9\"\n                            onClick={() => clickEdit(item)}\n                          />\n                        ) : item.file_type === \"png\" ||\n                          item.file_type === \"jpg\" ||\n                          item.file_type === \"jpeg\" ? (\n                          // <Watermark className=\"w-14 h-14  \" />\n                          <img\n                            src={Images.Image}\n                            alt=\"Profile\"\n                            className=\"cursor-pointer w-9 h-9\"\n                            onClick={() => clickEdit(item)}\n                          />\n                        ) : (\n                          <img\n                            src={Images.Image}\n                            alt=\"Profile\"\n                            className=\"cursor-pointer w-9 h-9\"\n                            onClick={() => clickEdit(item)}\n                          />\n                        )}\n                      </div>\n                      <div className=\"w-4/5 h-full mr-1 ml-1\">\n                        <p className=\"font-PlusJakartaSansRegular text-mTextColor text-sm break-words break-all text-left  xl:text-sm 3xl:text-sm items-center justify-start flex\">\n                          {item.file_name}\n                        </p>\n                      </div>\n                    </div>\n                    <div className=\"w-[5%] cursor-pointer items-center justify-center flex\">\n                      <MenuIcon\n                        className=\"w-8 h-8 flex-shrink-0 \"\n                        onClick={() => toggleMenu(item.doc_id)}\n                      />\n                    </div>\n\n                    {activeMenu === item.doc_id && (\n                      <div\n                        className=\"popup-menuValutdetails right-2 mt-2 w-40 bg-white p-3 rounded-xl shadow-xl shadow-mChatbg z-10\"\n                        ref={menuRef}\n                      >\n                        <ul>\n                          <li\n                            className=\"px-2 py-2 mt-2 cursor-pointer\"\n                            onClick={() => openUrl(item.file)}\n                          >\n                            <div className=\"flex flex-row justify-start items-center\">\n                              <DownloadIcon className=\"w-5 h-5 3xl:w-5 3xl:h-5 flex-shrink-0 \" />\n                              <p className=\"font-PlusJakartaSansRegular  text-mTextColorLogin text-base  3xl:text-base ml-3\">\n                                {t(\"download\")}{\" \"}\n                              </p>\n                            </div>\n                          </li>\n\n                          <li\n                            className=\"px-2 py-2  cursor-pointer\"\n                            onClick={() => clickEdit(item)}\n                          >\n                            <div className=\"flex flex-row justify-start items-center\">\n                              <MenuEditIcon className=\"w-5 h-5 3xl:w-5 3xl:h-5 flex-shrink-0 \" />\n                              <p className=\"font-PlusJakartaSansRegular  text-mTextColorLogin text-base 3xl:text-base ml-3\">\n                                {t(\"EditDetails\")}{\" \"}\n                              </p>\n                            </div>\n                          </li>\n\n                          <li\n                            className=\"px-2 py-2 mt-2 cursor-pointer\"\n                            onClick={() => clickShare(\"Item\", item)}\n                          >\n                            <div className=\"flex flex-row justify-start items-center\">\n                              <SharefileIcon className=\"w-5 h-5 3xl:w-5 3xl:h-5 flex-shrink-0 \" />\n                              <p className=\"font-PlusJakartaSansRegular  text-mTextColorLogin text-base 3xl:text-base ml-3\">\n                                {t(\"Share\")}{\" \"}\n                              </p>\n                            </div>\n                          </li>\n                          <li\n                            className=\"px-2 py-2 mt-2 cursor-pointer\"\n                            onClick={() => clickDelete(item)}\n                          >\n                            <div className=\"flex flex-row justify-start items-center\">\n                              <MenuDeleteIcon className=\"w-5 h-5 3xl:w-5 3xl:h-5 flex-shrink-0 \" />\n                              <p className=\"font-PlusJakartaSansRegular  text-mTextColorLogin text-base 3xl:text-base ml-3\">\n                                {t(\"Delete\")}{\" \"}\n                              </p>\n                            </div>\n                          </li>\n                        </ul>\n                      </div>\n                    )}\n                  </div>\n                ))}\n              </div>\n            </main>\n\n            {newFileShow ? (\n              <CreateNewFile\n                show={newFileShow}\n                onConfirm={newfileCreate}\n                onCancel={clickClose}\n                Title={Title}\n                selectedItem={selectedFiles}\n                valutdetails={getValutDetails}\n                isEdit={isEdit}\n                buttonname={buttonname}\n              />\n            ) : (\n              <div></div>\n            )}\n\n            {mShareFile ? (\n              <ShareFile\n                show={mShareFile}\n                onConfirm={newfileCreate}\n                onCancel={shareClose}\n                invitepeople={invitepeople}\n                selectedItem={selectedFiles}\n                isShareValut={isValut}\n                valutId={Valut_Id}\n              />\n            ) : (\n              <div></div>\n            )}\n\n            <DeleteDialog\n              isOpen={isDialogOpen}\n              onCancel={closeDialog}\n              onConfirm={confirmDelete}\n              title={\"Delete Confirmation\"}\n              message={\" Are you sure you want to delete this item? \"}\n            />\n\n            <AlertDialog\n              isOpen={isAlertOpen}\n              onClose={closeAlert}\n              message={description}\n              isShowDes={true}\n            />\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default ValutDetails;\n","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nexport { _objectSpread2 as default };","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n  return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n  return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n  return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n  INIT: \"@@redux/INIT\" + randomString(),\n  REPLACE: \"@@redux/REPLACE\" + randomString(),\n  PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n    return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n  }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n  if (typeof obj !== 'object' || obj === null) return false;\n  var proto = obj;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n  if (val === void 0) return 'undefined';\n  if (val === null) return 'null';\n  var type = typeof val;\n\n  switch (type) {\n    case 'boolean':\n    case 'string':\n    case 'number':\n    case 'symbol':\n    case 'function':\n      {\n        return type;\n      }\n  }\n\n  if (Array.isArray(val)) return 'array';\n  if (isDate(val)) return 'date';\n  if (isError(val)) return 'error';\n  var constructorName = ctorName(val);\n\n  switch (constructorName) {\n    case 'Symbol':\n    case 'Promise':\n    case 'WeakMap':\n    case 'WeakSet':\n    case 'Map':\n    case 'Set':\n      return constructorName;\n  } // other\n\n\n  return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n  return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n  return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n  if (val instanceof Date) return true;\n  return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n  var typeOfVal = typeof val;\n\n  if (process.env.NODE_ENV !== 'production') {\n    typeOfVal = miniKindOf(val);\n  }\n\n  return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n  }\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n  /**\n   * This makes a shallow copy of currentListeners so we can use\n   * nextListeners as a temporary list while dispatching.\n   *\n   * This prevents any bugs around consumers calling\n   * subscribe/unsubscribe in the middle of a dispatch.\n   */\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n\n\n  function getState() {\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n    }\n\n    return currentState;\n  }\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n\n\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n    }\n\n    var isSubscribed = true;\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      if (isDispatching) {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n      }\n\n      isSubscribed = false;\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n      currentListeners = null;\n    };\n  }\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n\n\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n    }\n\n    if (isDispatching) {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n\n\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n    }\n\n    currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n    // Any reducers that existed in both the new and old rootReducer\n    // will receive the previous state. This effectively populates\n    // the new state tree with any relevant data from the old one.\n\n    dispatch({\n      type: ActionTypes.REPLACE\n    });\n  }\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n\n\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object' || observer === null) {\n          throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return {\n          unsubscribe: unsubscribe\n        };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  } // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n\n\n  dispatch({\n    type: ActionTypes.INIT\n  });\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n\n\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n  } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n  if (action && action.type === ActionTypes.REPLACE) return;\n\n  if (unexpectedKeys.length > 0) {\n    return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, {\n      type: ActionTypes.INIT\n    });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n    }\n\n    if (typeof reducer(undefined, {\n      type: ActionTypes.PROBE_UNKNOWN_ACTION()\n    }) === 'undefined') {\n      throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n    }\n  });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n      }\n    }\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n\n  var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n  // keys multiple times.\n\n  var unexpectedKeyCache;\n\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n\n  var shapeAssertionError;\n\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination(state, action) {\n    if (state === void 0) {\n      state = {};\n    }\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n\n    var hasChanged = false;\n    var nextState = {};\n\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n\n      if (typeof nextStateForKey === 'undefined') {\n        var actionType = action && action.type;\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n      }\n\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n\n    hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n    return hasChanged ? nextState : state;\n  };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(this, arguments));\n  };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n  }\n\n  var boundActionCreators = {};\n\n  for (var key in actionCreators) {\n    var actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n\n  return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(void 0, arguments));\n    };\n  });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function () {\n      var store = createStore.apply(void 0, arguments);\n\n      var _dispatch = function dispatch() {\n        throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n      };\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch() {\n          return _dispatch.apply(void 0, arguments);\n        }\n      };\n      var chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(void 0, chain)(store.dispatch);\n      return _objectSpread(_objectSpread({}, store), {}, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","import { useState, useRef, useEffect } from 'react';\n\nfunction areInputsEqual(newInputs, lastInputs) {\n  if (newInputs.length !== lastInputs.length) {\n    return false;\n  }\n\n  for (var i = 0; i < newInputs.length; i++) {\n    if (newInputs[i] !== lastInputs[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction useMemoOne(getResult, inputs) {\n  var initial = useState(function () {\n    return {\n      inputs: inputs,\n      result: getResult()\n    };\n  })[0];\n  var isFirstRun = useRef(true);\n  var committed = useRef(initial);\n  var useCache = isFirstRun.current || Boolean(inputs && committed.current.inputs && areInputsEqual(inputs, committed.current.inputs));\n  var cache = useCache ? committed.current : {\n    inputs: inputs,\n    result: getResult()\n  };\n  useEffect(function () {\n    isFirstRun.current = false;\n    committed.current = cache;\n  }, [cache]);\n  return cache.result;\n}\nfunction useCallbackOne(callback, inputs) {\n  return useMemoOne(function () {\n    return callback;\n  }, inputs);\n}\nvar useMemo = useMemoOne;\nvar useCallback = useCallbackOne;\n\nexport { useCallback, useCallbackOne, useMemo, useMemoOne };\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    if (isProduction) {\n        throw new Error(prefix);\n    }\n    var provided = typeof message === 'function' ? message() : message;\n    var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n    throw new Error(value);\n}\n\nexport { invariant as default };\n","import invariant from 'tiny-invariant';\n\nvar getRect = function getRect(_ref) {\n  var top = _ref.top,\n      right = _ref.right,\n      bottom = _ref.bottom,\n      left = _ref.left;\n  var width = right - left;\n  var height = bottom - top;\n  var rect = {\n    top: top,\n    right: right,\n    bottom: bottom,\n    left: left,\n    width: width,\n    height: height,\n    x: left,\n    y: top,\n    center: {\n      x: (right + left) / 2,\n      y: (bottom + top) / 2\n    }\n  };\n  return rect;\n};\nvar expand = function expand(target, expandBy) {\n  return {\n    top: target.top - expandBy.top,\n    left: target.left - expandBy.left,\n    bottom: target.bottom + expandBy.bottom,\n    right: target.right + expandBy.right\n  };\n};\nvar shrink = function shrink(target, shrinkBy) {\n  return {\n    top: target.top + shrinkBy.top,\n    left: target.left + shrinkBy.left,\n    bottom: target.bottom - shrinkBy.bottom,\n    right: target.right - shrinkBy.right\n  };\n};\n\nvar shift = function shift(target, shiftBy) {\n  return {\n    top: target.top + shiftBy.y,\n    left: target.left + shiftBy.x,\n    bottom: target.bottom + shiftBy.y,\n    right: target.right + shiftBy.x\n  };\n};\n\nvar noSpacing = {\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0\n};\nvar createBox = function createBox(_ref2) {\n  var borderBox = _ref2.borderBox,\n      _ref2$margin = _ref2.margin,\n      margin = _ref2$margin === void 0 ? noSpacing : _ref2$margin,\n      _ref2$border = _ref2.border,\n      border = _ref2$border === void 0 ? noSpacing : _ref2$border,\n      _ref2$padding = _ref2.padding,\n      padding = _ref2$padding === void 0 ? noSpacing : _ref2$padding;\n  var marginBox = getRect(expand(borderBox, margin));\n  var paddingBox = getRect(shrink(borderBox, border));\n  var contentBox = getRect(shrink(paddingBox, padding));\n  return {\n    marginBox: marginBox,\n    borderBox: getRect(borderBox),\n    paddingBox: paddingBox,\n    contentBox: contentBox,\n    margin: margin,\n    border: border,\n    padding: padding\n  };\n};\n\nvar parse = function parse(raw) {\n  var value = raw.slice(0, -2);\n  var suffix = raw.slice(-2);\n\n  if (suffix !== 'px') {\n    return 0;\n  }\n\n  var result = Number(value);\n  !!isNaN(result) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not parse value [raw: \" + raw + \", without suffix: \" + value + \"]\") : invariant(false) : void 0;\n  return result;\n};\n\nvar getWindowScroll = function getWindowScroll() {\n  return {\n    x: window.pageXOffset,\n    y: window.pageYOffset\n  };\n};\n\nvar offset = function offset(original, change) {\n  var borderBox = original.borderBox,\n      border = original.border,\n      margin = original.margin,\n      padding = original.padding;\n  var shifted = shift(borderBox, change);\n  return createBox({\n    borderBox: shifted,\n    border: border,\n    margin: margin,\n    padding: padding\n  });\n};\nvar withScroll = function withScroll(original, scroll) {\n  if (scroll === void 0) {\n    scroll = getWindowScroll();\n  }\n\n  return offset(original, scroll);\n};\nvar calculateBox = function calculateBox(borderBox, styles) {\n  var margin = {\n    top: parse(styles.marginTop),\n    right: parse(styles.marginRight),\n    bottom: parse(styles.marginBottom),\n    left: parse(styles.marginLeft)\n  };\n  var padding = {\n    top: parse(styles.paddingTop),\n    right: parse(styles.paddingRight),\n    bottom: parse(styles.paddingBottom),\n    left: parse(styles.paddingLeft)\n  };\n  var border = {\n    top: parse(styles.borderTopWidth),\n    right: parse(styles.borderRightWidth),\n    bottom: parse(styles.borderBottomWidth),\n    left: parse(styles.borderLeftWidth)\n  };\n  return createBox({\n    borderBox: borderBox,\n    margin: margin,\n    padding: padding,\n    border: border\n  });\n};\nvar getBox = function getBox(el) {\n  var borderBox = el.getBoundingClientRect();\n  var styles = window.getComputedStyle(el);\n  return calculateBox(borderBox, styles);\n};\n\nexport { calculateBox, createBox, expand, getBox, getRect, offset, shrink, withScroll };\n","var safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(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","var rafSchd = function rafSchd(fn) {\n  var lastArgs = [];\n  var frameId = null;\n\n  var wrapperFn = function wrapperFn() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    lastArgs = args;\n\n    if (frameId) {\n      return;\n    }\n\n    frameId = requestAnimationFrame(function () {\n      frameId = null;\n      fn.apply(void 0, lastArgs);\n    });\n  };\n\n  wrapperFn.cancel = function () {\n    if (!frameId) {\n      return;\n    }\n\n    cancelAnimationFrame(frameId);\n    frameId = null;\n  };\n\n  return wrapperFn;\n};\n\nexport default rafSchd;\n","import React, { useLayoutEffect, useEffect, useRef, useState, useContext } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport { createStore as createStore$1, applyMiddleware, compose, bindActionCreators } from 'redux';\nimport { Provider, connect } from 'react-redux';\nimport { useMemo, useCallback } from 'use-memo-one';\nimport { getRect, expand, offset, withScroll, getBox, createBox, calculateBox } from 'css-box-model';\nimport memoizeOne from 'memoize-one';\nimport rafSchd from 'raf-schd';\nimport ReactDOM from 'react-dom';\n\nvar isProduction = process.env.NODE_ENV === 'production';\nvar spacesAndTabs = /[ \\t]{2,}/g;\nvar lineStartWithSpaces = /^[ \\t]*/gm;\n\nvar clean = function clean(value) {\n  return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n};\n\nvar getDevMessage = function getDevMessage(message) {\n  return clean(\"\\n  %creact-beautiful-dnd\\n\\n  %c\" + clean(message) + \"\\n\\n  %c\\uD83D\\uDC77\\u200D This is a development only message. It will be removed in production builds.\\n\");\n};\n\nvar getFormattedMessage = function getFormattedMessage(message) {\n  return [getDevMessage(message), 'color: #00C584; font-size: 1.2em; font-weight: bold;', 'line-height: 1.5', 'color: #723874;'];\n};\nvar isDisabledFlag = '__react-beautiful-dnd-disable-dev-warnings';\nfunction log(type, message) {\n  var _console;\n\n  if (isProduction) {\n    return;\n  }\n\n  if (typeof window !== 'undefined' && window[isDisabledFlag]) {\n    return;\n  }\n\n  (_console = console)[type].apply(_console, getFormattedMessage(message));\n}\nvar warning = log.bind(null, 'warn');\nvar error = log.bind(null, 'error');\n\nfunction noop() {}\n\nfunction getOptions(shared, fromBinding) {\n  return _extends({}, shared, {}, fromBinding);\n}\n\nfunction bindEvents(el, bindings, sharedOptions) {\n  var unbindings = bindings.map(function (binding) {\n    var options = getOptions(sharedOptions, binding.options);\n    el.addEventListener(binding.eventName, binding.fn, options);\n    return function unbind() {\n      el.removeEventListener(binding.eventName, binding.fn, options);\n    };\n  });\n  return function unbindAll() {\n    unbindings.forEach(function (unbind) {\n      unbind();\n    });\n  };\n}\n\nvar isProduction$1 = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction RbdInvariant(message) {\n  this.message = message;\n}\n\nRbdInvariant.prototype.toString = function toString() {\n  return this.message;\n};\n\nfunction invariant(condition, message) {\n  if (condition) {\n    return;\n  }\n\n  if (isProduction$1) {\n    throw new RbdInvariant(prefix);\n  } else {\n    throw new RbdInvariant(prefix + \": \" + (message || ''));\n  }\n}\n\nvar ErrorBoundary = function (_React$Component) {\n  _inheritsLoose(ErrorBoundary, _React$Component);\n\n  function ErrorBoundary() {\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 = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.callbacks = null;\n    _this.unbind = noop;\n\n    _this.onWindowError = function (event) {\n      var callbacks = _this.getCallbacks();\n\n      if (callbacks.isDragging()) {\n        callbacks.tryAbort();\n        process.env.NODE_ENV !== \"production\" ? warning(\"\\n        An error was caught by our window 'error' event listener while a drag was occurring.\\n        The active drag has been aborted.\\n      \") : void 0;\n      }\n\n      var err = event.error;\n\n      if (err instanceof RbdInvariant) {\n        event.preventDefault();\n\n        if (process.env.NODE_ENV !== 'production') {\n          error(err.message);\n        }\n      }\n    };\n\n    _this.getCallbacks = function () {\n      if (!_this.callbacks) {\n        throw new Error('Unable to find AppCallbacks in <ErrorBoundary/>');\n      }\n\n      return _this.callbacks;\n    };\n\n    _this.setCallbacks = function (callbacks) {\n      _this.callbacks = callbacks;\n    };\n\n    return _this;\n  }\n\n  var _proto = ErrorBoundary.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.unbind = bindEvents(window, [{\n      eventName: 'error',\n      fn: this.onWindowError\n    }]);\n  };\n\n  _proto.componentDidCatch = function componentDidCatch(err) {\n    if (err instanceof RbdInvariant) {\n      if (process.env.NODE_ENV !== 'production') {\n        error(err.message);\n      }\n\n      this.setState({});\n      return;\n    }\n\n    throw err;\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.unbind();\n  };\n\n  _proto.render = function render() {\n    return this.props.children(this.setCallbacks);\n  };\n\n  return ErrorBoundary;\n}(React.Component);\n\nvar dragHandleUsageInstructions = \"\\n  Press space bar to start a drag.\\n  When dragging you can use the arrow keys to move the item around and escape to cancel.\\n  Some screen readers may require you to be in focus mode or to use your pass through key\\n\";\n\nvar position = function position(index) {\n  return index + 1;\n};\n\nvar onDragStart = function onDragStart(start) {\n  return \"\\n  You have lifted an item in position \" + position(start.source.index) + \"\\n\";\n};\n\nvar withLocation = function withLocation(source, destination) {\n  var isInHomeList = source.droppableId === destination.droppableId;\n  var startPosition = position(source.index);\n  var endPosition = position(destination.index);\n\n  if (isInHomeList) {\n    return \"\\n      You have moved the item from position \" + startPosition + \"\\n      to position \" + endPosition + \"\\n    \";\n  }\n\n  return \"\\n    You have moved the item from position \" + startPosition + \"\\n    in list \" + source.droppableId + \"\\n    to list \" + destination.droppableId + \"\\n    in position \" + endPosition + \"\\n  \";\n};\n\nvar withCombine = function withCombine(id, source, combine) {\n  var inHomeList = source.droppableId === combine.droppableId;\n\n  if (inHomeList) {\n    return \"\\n      The item \" + id + \"\\n      has been combined with \" + combine.draggableId;\n  }\n\n  return \"\\n      The item \" + id + \"\\n      in list \" + source.droppableId + \"\\n      has been combined with \" + combine.draggableId + \"\\n      in list \" + combine.droppableId + \"\\n    \";\n};\n\nvar onDragUpdate = function onDragUpdate(update) {\n  var location = update.destination;\n\n  if (location) {\n    return withLocation(update.source, location);\n  }\n\n  var combine = update.combine;\n\n  if (combine) {\n    return withCombine(update.draggableId, update.source, combine);\n  }\n\n  return 'You are over an area that cannot be dropped on';\n};\n\nvar returnedToStart = function returnedToStart(source) {\n  return \"\\n  The item has returned to its starting position\\n  of \" + position(source.index) + \"\\n\";\n};\n\nvar onDragEnd = function onDragEnd(result) {\n  if (result.reason === 'CANCEL') {\n    return \"\\n      Movement cancelled.\\n      \" + returnedToStart(result.source) + \"\\n    \";\n  }\n\n  var location = result.destination;\n  var combine = result.combine;\n\n  if (location) {\n    return \"\\n      You have dropped the item.\\n      \" + withLocation(result.source, location) + \"\\n    \";\n  }\n\n  if (combine) {\n    return \"\\n      You have dropped the item.\\n      \" + withCombine(result.draggableId, result.source, combine) + \"\\n    \";\n  }\n\n  return \"\\n    The item has been dropped while not over a drop area.\\n    \" + returnedToStart(result.source) + \"\\n  \";\n};\n\nvar preset = {\n  dragHandleUsageInstructions: dragHandleUsageInstructions,\n  onDragStart: onDragStart,\n  onDragUpdate: onDragUpdate,\n  onDragEnd: onDragEnd\n};\n\nvar origin = {\n  x: 0,\n  y: 0\n};\nvar add = function add(point1, point2) {\n  return {\n    x: point1.x + point2.x,\n    y: point1.y + point2.y\n  };\n};\nvar subtract = function subtract(point1, point2) {\n  return {\n    x: point1.x - point2.x,\n    y: point1.y - point2.y\n  };\n};\nvar isEqual = function isEqual(point1, point2) {\n  return point1.x === point2.x && point1.y === point2.y;\n};\nvar negate = function negate(point) {\n  return {\n    x: point.x !== 0 ? -point.x : 0,\n    y: point.y !== 0 ? -point.y : 0\n  };\n};\nvar patch = function patch(line, value, otherValue) {\n  var _ref;\n\n  if (otherValue === void 0) {\n    otherValue = 0;\n  }\n\n  return _ref = {}, _ref[line] = value, _ref[line === 'x' ? 'y' : 'x'] = otherValue, _ref;\n};\nvar distance = function distance(point1, point2) {\n  return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));\n};\nvar closest = function closest(target, points) {\n  return Math.min.apply(Math, points.map(function (point) {\n    return distance(target, point);\n  }));\n};\nvar apply = function apply(fn) {\n  return function (point) {\n    return {\n      x: fn(point.x),\n      y: fn(point.y)\n    };\n  };\n};\n\nvar executeClip = (function (frame, subject) {\n  var result = getRect({\n    top: Math.max(subject.top, frame.top),\n    right: Math.min(subject.right, frame.right),\n    bottom: Math.min(subject.bottom, frame.bottom),\n    left: Math.max(subject.left, frame.left)\n  });\n\n  if (result.width <= 0 || result.height <= 0) {\n    return null;\n  }\n\n  return result;\n});\n\nvar offsetByPosition = function offsetByPosition(spacing, point) {\n  return {\n    top: spacing.top + point.y,\n    left: spacing.left + point.x,\n    bottom: spacing.bottom + point.y,\n    right: spacing.right + point.x\n  };\n};\nvar getCorners = function getCorners(spacing) {\n  return [{\n    x: spacing.left,\n    y: spacing.top\n  }, {\n    x: spacing.right,\n    y: spacing.top\n  }, {\n    x: spacing.left,\n    y: spacing.bottom\n  }, {\n    x: spacing.right,\n    y: spacing.bottom\n  }];\n};\nvar noSpacing = {\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0\n};\n\nvar scroll = function scroll(target, frame) {\n  if (!frame) {\n    return target;\n  }\n\n  return offsetByPosition(target, frame.scroll.diff.displacement);\n};\n\nvar increase = function increase(target, axis, withPlaceholder) {\n  if (withPlaceholder && withPlaceholder.increasedBy) {\n    var _extends2;\n\n    return _extends({}, target, (_extends2 = {}, _extends2[axis.end] = target[axis.end] + withPlaceholder.increasedBy[axis.line], _extends2));\n  }\n\n  return target;\n};\n\nvar clip = function clip(target, frame) {\n  if (frame && frame.shouldClipSubject) {\n    return executeClip(frame.pageMarginBox, target);\n  }\n\n  return getRect(target);\n};\n\nvar getSubject = (function (_ref) {\n  var page = _ref.page,\n      withPlaceholder = _ref.withPlaceholder,\n      axis = _ref.axis,\n      frame = _ref.frame;\n  var scrolled = scroll(page.marginBox, frame);\n  var increased = increase(scrolled, axis, withPlaceholder);\n  var clipped = clip(increased, frame);\n  return {\n    page: page,\n    withPlaceholder: withPlaceholder,\n    active: clipped\n  };\n});\n\nvar scrollDroppable = (function (droppable, newScroll) {\n  !droppable.frame ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n  var scrollable = droppable.frame;\n  var scrollDiff = subtract(newScroll, scrollable.scroll.initial);\n  var scrollDisplacement = negate(scrollDiff);\n\n  var frame = _extends({}, scrollable, {\n    scroll: {\n      initial: scrollable.scroll.initial,\n      current: newScroll,\n      diff: {\n        value: scrollDiff,\n        displacement: scrollDisplacement\n      },\n      max: scrollable.scroll.max\n    }\n  });\n\n  var subject = getSubject({\n    page: droppable.subject.page,\n    withPlaceholder: droppable.subject.withPlaceholder,\n    axis: droppable.axis,\n    frame: frame\n  });\n\n  var result = _extends({}, droppable, {\n    frame: frame,\n    subject: subject\n  });\n\n  return result;\n});\n\nfunction isInteger(value) {\n  if (Number.isInteger) {\n    return Number.isInteger(value);\n  }\n\n  return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\nfunction values(map) {\n  if (Object.values) {\n    return Object.values(map);\n  }\n\n  return Object.keys(map).map(function (key) {\n    return map[key];\n  });\n}\nfunction findIndex(list, predicate) {\n  if (list.findIndex) {\n    return list.findIndex(predicate);\n  }\n\n  for (var i = 0; i < list.length; i++) {\n    if (predicate(list[i])) {\n      return i;\n    }\n  }\n\n  return -1;\n}\nfunction find(list, predicate) {\n  if (list.find) {\n    return list.find(predicate);\n  }\n\n  var index = findIndex(list, predicate);\n\n  if (index !== -1) {\n    return list[index];\n  }\n\n  return undefined;\n}\nfunction toArray(list) {\n  return Array.prototype.slice.call(list);\n}\n\nvar toDroppableMap = memoizeOne(function (droppables) {\n  return droppables.reduce(function (previous, current) {\n    previous[current.descriptor.id] = current;\n    return previous;\n  }, {});\n});\nvar toDraggableMap = memoizeOne(function (draggables) {\n  return draggables.reduce(function (previous, current) {\n    previous[current.descriptor.id] = current;\n    return previous;\n  }, {});\n});\nvar toDroppableList = memoizeOne(function (droppables) {\n  return values(droppables);\n});\nvar toDraggableList = memoizeOne(function (draggables) {\n  return values(draggables);\n});\n\nvar getDraggablesInsideDroppable = memoizeOne(function (droppableId, draggables) {\n  var result = toDraggableList(draggables).filter(function (draggable) {\n    return droppableId === draggable.descriptor.droppableId;\n  }).sort(function (a, b) {\n    return a.descriptor.index - b.descriptor.index;\n  });\n  return result;\n});\n\nfunction tryGetDestination(impact) {\n  if (impact.at && impact.at.type === 'REORDER') {\n    return impact.at.destination;\n  }\n\n  return null;\n}\nfunction tryGetCombine(impact) {\n  if (impact.at && impact.at.type === 'COMBINE') {\n    return impact.at.combine;\n  }\n\n  return null;\n}\n\nvar removeDraggableFromList = memoizeOne(function (remove, list) {\n  return list.filter(function (item) {\n    return item.descriptor.id !== remove.descriptor.id;\n  });\n});\n\nvar moveToNextCombine = (function (_ref) {\n  var isMovingForward = _ref.isMovingForward,\n      draggable = _ref.draggable,\n      destination = _ref.destination,\n      insideDestination = _ref.insideDestination,\n      previousImpact = _ref.previousImpact;\n\n  if (!destination.isCombineEnabled) {\n    return null;\n  }\n\n  var location = tryGetDestination(previousImpact);\n\n  if (!location) {\n    return null;\n  }\n\n  function getImpact(target) {\n    var at = {\n      type: 'COMBINE',\n      combine: {\n        draggableId: target,\n        droppableId: destination.descriptor.id\n      }\n    };\n    return _extends({}, previousImpact, {\n      at: at\n    });\n  }\n\n  var all = previousImpact.displaced.all;\n  var closestId = all.length ? all[0] : null;\n\n  if (isMovingForward) {\n    return closestId ? getImpact(closestId) : null;\n  }\n\n  var withoutDraggable = removeDraggableFromList(draggable, insideDestination);\n\n  if (!closestId) {\n    if (!withoutDraggable.length) {\n      return null;\n    }\n\n    var last = withoutDraggable[withoutDraggable.length - 1];\n    return getImpact(last.descriptor.id);\n  }\n\n  var indexOfClosest = findIndex(withoutDraggable, function (d) {\n    return d.descriptor.id === closestId;\n  });\n  !(indexOfClosest !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find displaced item in set') : invariant(false) : void 0;\n  var proposedIndex = indexOfClosest - 1;\n\n  if (proposedIndex < 0) {\n    return null;\n  }\n\n  var before = withoutDraggable[proposedIndex];\n  return getImpact(before.descriptor.id);\n});\n\nvar isHomeOf = (function (draggable, destination) {\n  return draggable.descriptor.droppableId === destination.descriptor.id;\n});\n\nvar noDisplacedBy = {\n  point: origin,\n  value: 0\n};\nvar emptyGroups = {\n  invisible: {},\n  visible: {},\n  all: []\n};\nvar noImpact = {\n  displaced: emptyGroups,\n  displacedBy: noDisplacedBy,\n  at: null\n};\n\nvar isWithin = (function (lowerBound, upperBound) {\n  return function (value) {\n    return lowerBound <= value && value <= upperBound;\n  };\n});\n\nvar isPartiallyVisibleThroughFrame = (function (frame) {\n  var isWithinVertical = isWithin(frame.top, frame.bottom);\n  var isWithinHorizontal = isWithin(frame.left, frame.right);\n  return function (subject) {\n    var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n\n    if (isContained) {\n      return true;\n    }\n\n    var isPartiallyVisibleVertically = isWithinVertical(subject.top) || isWithinVertical(subject.bottom);\n    var isPartiallyVisibleHorizontally = isWithinHorizontal(subject.left) || isWithinHorizontal(subject.right);\n    var isPartiallyContained = isPartiallyVisibleVertically && isPartiallyVisibleHorizontally;\n\n    if (isPartiallyContained) {\n      return true;\n    }\n\n    var isBiggerVertically = subject.top < frame.top && subject.bottom > frame.bottom;\n    var isBiggerHorizontally = subject.left < frame.left && subject.right > frame.right;\n    var isTargetBiggerThanFrame = isBiggerVertically && isBiggerHorizontally;\n\n    if (isTargetBiggerThanFrame) {\n      return true;\n    }\n\n    var isTargetBiggerOnOneAxis = isBiggerVertically && isPartiallyVisibleHorizontally || isBiggerHorizontally && isPartiallyVisibleVertically;\n    return isTargetBiggerOnOneAxis;\n  };\n});\n\nvar isTotallyVisibleThroughFrame = (function (frame) {\n  var isWithinVertical = isWithin(frame.top, frame.bottom);\n  var isWithinHorizontal = isWithin(frame.left, frame.right);\n  return function (subject) {\n    var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n    return isContained;\n  };\n});\n\nvar vertical = {\n  direction: 'vertical',\n  line: 'y',\n  crossAxisLine: 'x',\n  start: 'top',\n  end: 'bottom',\n  size: 'height',\n  crossAxisStart: 'left',\n  crossAxisEnd: 'right',\n  crossAxisSize: 'width'\n};\nvar horizontal = {\n  direction: 'horizontal',\n  line: 'x',\n  crossAxisLine: 'y',\n  start: 'left',\n  end: 'right',\n  size: 'width',\n  crossAxisStart: 'top',\n  crossAxisEnd: 'bottom',\n  crossAxisSize: 'height'\n};\n\nvar isTotallyVisibleThroughFrameOnAxis = (function (axis) {\n  return function (frame) {\n    var isWithinVertical = isWithin(frame.top, frame.bottom);\n    var isWithinHorizontal = isWithin(frame.left, frame.right);\n    return function (subject) {\n      if (axis === vertical) {\n        return isWithinVertical(subject.top) && isWithinVertical(subject.bottom);\n      }\n\n      return isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n    };\n  };\n});\n\nvar getDroppableDisplaced = function getDroppableDisplaced(target, destination) {\n  var displacement = destination.frame ? destination.frame.scroll.diff.displacement : origin;\n  return offsetByPosition(target, displacement);\n};\n\nvar isVisibleInDroppable = function isVisibleInDroppable(target, destination, isVisibleThroughFrameFn) {\n  if (!destination.subject.active) {\n    return false;\n  }\n\n  return isVisibleThroughFrameFn(destination.subject.active)(target);\n};\n\nvar isVisibleInViewport = function isVisibleInViewport(target, viewport, isVisibleThroughFrameFn) {\n  return isVisibleThroughFrameFn(viewport)(target);\n};\n\nvar isVisible = function isVisible(_ref) {\n  var toBeDisplaced = _ref.target,\n      destination = _ref.destination,\n      viewport = _ref.viewport,\n      withDroppableDisplacement = _ref.withDroppableDisplacement,\n      isVisibleThroughFrameFn = _ref.isVisibleThroughFrameFn;\n  var displacedTarget = withDroppableDisplacement ? getDroppableDisplaced(toBeDisplaced, destination) : toBeDisplaced;\n  return isVisibleInDroppable(displacedTarget, destination, isVisibleThroughFrameFn) && isVisibleInViewport(displacedTarget, viewport, isVisibleThroughFrameFn);\n};\n\nvar isPartiallyVisible = function isPartiallyVisible(args) {\n  return isVisible(_extends({}, args, {\n    isVisibleThroughFrameFn: isPartiallyVisibleThroughFrame\n  }));\n};\nvar isTotallyVisible = function isTotallyVisible(args) {\n  return isVisible(_extends({}, args, {\n    isVisibleThroughFrameFn: isTotallyVisibleThroughFrame\n  }));\n};\nvar isTotallyVisibleOnAxis = function isTotallyVisibleOnAxis(args) {\n  return isVisible(_extends({}, args, {\n    isVisibleThroughFrameFn: isTotallyVisibleThroughFrameOnAxis(args.destination.axis)\n  }));\n};\n\nvar getShouldAnimate = function getShouldAnimate(id, last, forceShouldAnimate) {\n  if (typeof forceShouldAnimate === 'boolean') {\n    return forceShouldAnimate;\n  }\n\n  if (!last) {\n    return true;\n  }\n\n  var invisible = last.invisible,\n      visible = last.visible;\n\n  if (invisible[id]) {\n    return false;\n  }\n\n  var previous = visible[id];\n  return previous ? previous.shouldAnimate : true;\n};\n\nfunction getTarget(draggable, displacedBy) {\n  var marginBox = draggable.page.marginBox;\n  var expandBy = {\n    top: displacedBy.point.y,\n    right: 0,\n    bottom: 0,\n    left: displacedBy.point.x\n  };\n  return getRect(expand(marginBox, expandBy));\n}\n\nfunction getDisplacementGroups(_ref) {\n  var afterDragging = _ref.afterDragging,\n      destination = _ref.destination,\n      displacedBy = _ref.displacedBy,\n      viewport = _ref.viewport,\n      forceShouldAnimate = _ref.forceShouldAnimate,\n      last = _ref.last;\n  return afterDragging.reduce(function process(groups, draggable) {\n    var target = getTarget(draggable, displacedBy);\n    var id = draggable.descriptor.id;\n    groups.all.push(id);\n    var isVisible = isPartiallyVisible({\n      target: target,\n      destination: destination,\n      viewport: viewport,\n      withDroppableDisplacement: true\n    });\n\n    if (!isVisible) {\n      groups.invisible[draggable.descriptor.id] = true;\n      return groups;\n    }\n\n    var shouldAnimate = getShouldAnimate(id, last, forceShouldAnimate);\n    var displacement = {\n      draggableId: id,\n      shouldAnimate: shouldAnimate\n    };\n    groups.visible[id] = displacement;\n    return groups;\n  }, {\n    all: [],\n    visible: {},\n    invisible: {}\n  });\n}\n\nfunction getIndexOfLastItem(draggables, options) {\n  if (!draggables.length) {\n    return 0;\n  }\n\n  var indexOfLastItem = draggables[draggables.length - 1].descriptor.index;\n  return options.inHomeList ? indexOfLastItem : indexOfLastItem + 1;\n}\n\nfunction goAtEnd(_ref) {\n  var insideDestination = _ref.insideDestination,\n      inHomeList = _ref.inHomeList,\n      displacedBy = _ref.displacedBy,\n      destination = _ref.destination;\n  var newIndex = getIndexOfLastItem(insideDestination, {\n    inHomeList: inHomeList\n  });\n  return {\n    displaced: emptyGroups,\n    displacedBy: displacedBy,\n    at: {\n      type: 'REORDER',\n      destination: {\n        droppableId: destination.descriptor.id,\n        index: newIndex\n      }\n    }\n  };\n}\n\nfunction calculateReorderImpact(_ref2) {\n  var draggable = _ref2.draggable,\n      insideDestination = _ref2.insideDestination,\n      destination = _ref2.destination,\n      viewport = _ref2.viewport,\n      displacedBy = _ref2.displacedBy,\n      last = _ref2.last,\n      index = _ref2.index,\n      forceShouldAnimate = _ref2.forceShouldAnimate;\n  var inHomeList = isHomeOf(draggable, destination);\n\n  if (index == null) {\n    return goAtEnd({\n      insideDestination: insideDestination,\n      inHomeList: inHomeList,\n      displacedBy: displacedBy,\n      destination: destination\n    });\n  }\n\n  var match = find(insideDestination, function (item) {\n    return item.descriptor.index === index;\n  });\n\n  if (!match) {\n    return goAtEnd({\n      insideDestination: insideDestination,\n      inHomeList: inHomeList,\n      displacedBy: displacedBy,\n      destination: destination\n    });\n  }\n\n  var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n  var sliceFrom = insideDestination.indexOf(match);\n  var impacted = withoutDragging.slice(sliceFrom);\n  var displaced = getDisplacementGroups({\n    afterDragging: impacted,\n    destination: destination,\n    displacedBy: displacedBy,\n    last: last,\n    viewport: viewport.frame,\n    forceShouldAnimate: forceShouldAnimate\n  });\n  return {\n    displaced: displaced,\n    displacedBy: displacedBy,\n    at: {\n      type: 'REORDER',\n      destination: {\n        droppableId: destination.descriptor.id,\n        index: index\n      }\n    }\n  };\n}\n\nfunction didStartAfterCritical(draggableId, afterCritical) {\n  return Boolean(afterCritical.effected[draggableId]);\n}\n\nvar fromCombine = (function (_ref) {\n  var isMovingForward = _ref.isMovingForward,\n      destination = _ref.destination,\n      draggables = _ref.draggables,\n      combine = _ref.combine,\n      afterCritical = _ref.afterCritical;\n\n  if (!destination.isCombineEnabled) {\n    return null;\n  }\n\n  var combineId = combine.draggableId;\n  var combineWith = draggables[combineId];\n  var combineWithIndex = combineWith.descriptor.index;\n  var didCombineWithStartAfterCritical = didStartAfterCritical(combineId, afterCritical);\n\n  if (didCombineWithStartAfterCritical) {\n    if (isMovingForward) {\n      return combineWithIndex;\n    }\n\n    return combineWithIndex - 1;\n  }\n\n  if (isMovingForward) {\n    return combineWithIndex + 1;\n  }\n\n  return combineWithIndex;\n});\n\nvar fromReorder = (function (_ref) {\n  var isMovingForward = _ref.isMovingForward,\n      isInHomeList = _ref.isInHomeList,\n      insideDestination = _ref.insideDestination,\n      location = _ref.location;\n\n  if (!insideDestination.length) {\n    return null;\n  }\n\n  var currentIndex = location.index;\n  var proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n  var firstIndex = insideDestination[0].descriptor.index;\n  var lastIndex = insideDestination[insideDestination.length - 1].descriptor.index;\n  var upperBound = isInHomeList ? lastIndex : lastIndex + 1;\n\n  if (proposedIndex < firstIndex) {\n    return null;\n  }\n\n  if (proposedIndex > upperBound) {\n    return null;\n  }\n\n  return proposedIndex;\n});\n\nvar moveToNextIndex = (function (_ref) {\n  var isMovingForward = _ref.isMovingForward,\n      isInHomeList = _ref.isInHomeList,\n      draggable = _ref.draggable,\n      draggables = _ref.draggables,\n      destination = _ref.destination,\n      insideDestination = _ref.insideDestination,\n      previousImpact = _ref.previousImpact,\n      viewport = _ref.viewport,\n      afterCritical = _ref.afterCritical;\n  var wasAt = previousImpact.at;\n  !wasAt ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot move in direction without previous impact location') : invariant(false) : void 0;\n\n  if (wasAt.type === 'REORDER') {\n    var _newIndex = fromReorder({\n      isMovingForward: isMovingForward,\n      isInHomeList: isInHomeList,\n      location: wasAt.destination,\n      insideDestination: insideDestination\n    });\n\n    if (_newIndex == null) {\n      return null;\n    }\n\n    return calculateReorderImpact({\n      draggable: draggable,\n      insideDestination: insideDestination,\n      destination: destination,\n      viewport: viewport,\n      last: previousImpact.displaced,\n      displacedBy: previousImpact.displacedBy,\n      index: _newIndex\n    });\n  }\n\n  var newIndex = fromCombine({\n    isMovingForward: isMovingForward,\n    destination: destination,\n    displaced: previousImpact.displaced,\n    draggables: draggables,\n    combine: wasAt.combine,\n    afterCritical: afterCritical\n  });\n\n  if (newIndex == null) {\n    return null;\n  }\n\n  return calculateReorderImpact({\n    draggable: draggable,\n    insideDestination: insideDestination,\n    destination: destination,\n    viewport: viewport,\n    last: previousImpact.displaced,\n    displacedBy: previousImpact.displacedBy,\n    index: newIndex\n  });\n});\n\nvar getCombinedItemDisplacement = (function (_ref) {\n  var displaced = _ref.displaced,\n      afterCritical = _ref.afterCritical,\n      combineWith = _ref.combineWith,\n      displacedBy = _ref.displacedBy;\n  var isDisplaced = Boolean(displaced.visible[combineWith] || displaced.invisible[combineWith]);\n\n  if (didStartAfterCritical(combineWith, afterCritical)) {\n    return isDisplaced ? origin : negate(displacedBy.point);\n  }\n\n  return isDisplaced ? displacedBy.point : origin;\n});\n\nvar whenCombining = (function (_ref) {\n  var afterCritical = _ref.afterCritical,\n      impact = _ref.impact,\n      draggables = _ref.draggables;\n  var combine = tryGetCombine(impact);\n  !combine ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n  var combineWith = combine.draggableId;\n  var center = draggables[combineWith].page.borderBox.center;\n  var displaceBy = getCombinedItemDisplacement({\n    displaced: impact.displaced,\n    afterCritical: afterCritical,\n    combineWith: combineWith,\n    displacedBy: impact.displacedBy\n  });\n  return add(center, displaceBy);\n});\n\nvar distanceFromStartToBorderBoxCenter = function distanceFromStartToBorderBoxCenter(axis, box) {\n  return box.margin[axis.start] + box.borderBox[axis.size] / 2;\n};\n\nvar distanceFromEndToBorderBoxCenter = function distanceFromEndToBorderBoxCenter(axis, box) {\n  return box.margin[axis.end] + box.borderBox[axis.size] / 2;\n};\n\nvar getCrossAxisBorderBoxCenter = function getCrossAxisBorderBoxCenter(axis, target, isMoving) {\n  return target[axis.crossAxisStart] + isMoving.margin[axis.crossAxisStart] + isMoving.borderBox[axis.crossAxisSize] / 2;\n};\n\nvar goAfter = function goAfter(_ref) {\n  var axis = _ref.axis,\n      moveRelativeTo = _ref.moveRelativeTo,\n      isMoving = _ref.isMoving;\n  return patch(axis.line, moveRelativeTo.marginBox[axis.end] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\n};\nvar goBefore = function goBefore(_ref2) {\n  var axis = _ref2.axis,\n      moveRelativeTo = _ref2.moveRelativeTo,\n      isMoving = _ref2.isMoving;\n  return patch(axis.line, moveRelativeTo.marginBox[axis.start] - distanceFromEndToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\n};\nvar goIntoStart = function goIntoStart(_ref3) {\n  var axis = _ref3.axis,\n      moveInto = _ref3.moveInto,\n      isMoving = _ref3.isMoving;\n  return patch(axis.line, moveInto.contentBox[axis.start] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveInto.contentBox, isMoving));\n};\n\nvar whenReordering = (function (_ref) {\n  var impact = _ref.impact,\n      draggable = _ref.draggable,\n      draggables = _ref.draggables,\n      droppable = _ref.droppable,\n      afterCritical = _ref.afterCritical;\n  var insideDestination = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n  var draggablePage = draggable.page;\n  var axis = droppable.axis;\n\n  if (!insideDestination.length) {\n    return goIntoStart({\n      axis: axis,\n      moveInto: droppable.page,\n      isMoving: draggablePage\n    });\n  }\n\n  var displaced = impact.displaced,\n      displacedBy = impact.displacedBy;\n  var closestAfter = displaced.all[0];\n\n  if (closestAfter) {\n    var closest = draggables[closestAfter];\n\n    if (didStartAfterCritical(closestAfter, afterCritical)) {\n      return goBefore({\n        axis: axis,\n        moveRelativeTo: closest.page,\n        isMoving: draggablePage\n      });\n    }\n\n    var withDisplacement = offset(closest.page, displacedBy.point);\n    return goBefore({\n      axis: axis,\n      moveRelativeTo: withDisplacement,\n      isMoving: draggablePage\n    });\n  }\n\n  var last = insideDestination[insideDestination.length - 1];\n\n  if (last.descriptor.id === draggable.descriptor.id) {\n    return draggablePage.borderBox.center;\n  }\n\n  if (didStartAfterCritical(last.descriptor.id, afterCritical)) {\n    var page = offset(last.page, negate(afterCritical.displacedBy.point));\n    return goAfter({\n      axis: axis,\n      moveRelativeTo: page,\n      isMoving: draggablePage\n    });\n  }\n\n  return goAfter({\n    axis: axis,\n    moveRelativeTo: last.page,\n    isMoving: draggablePage\n  });\n});\n\nvar withDroppableDisplacement = (function (droppable, point) {\n  var frame = droppable.frame;\n\n  if (!frame) {\n    return point;\n  }\n\n  return add(point, frame.scroll.diff.displacement);\n});\n\nvar getResultWithoutDroppableDisplacement = function getResultWithoutDroppableDisplacement(_ref) {\n  var impact = _ref.impact,\n      draggable = _ref.draggable,\n      droppable = _ref.droppable,\n      draggables = _ref.draggables,\n      afterCritical = _ref.afterCritical;\n  var original = draggable.page.borderBox.center;\n  var at = impact.at;\n\n  if (!droppable) {\n    return original;\n  }\n\n  if (!at) {\n    return original;\n  }\n\n  if (at.type === 'REORDER') {\n    return whenReordering({\n      impact: impact,\n      draggable: draggable,\n      draggables: draggables,\n      droppable: droppable,\n      afterCritical: afterCritical\n    });\n  }\n\n  return whenCombining({\n    impact: impact,\n    draggables: draggables,\n    afterCritical: afterCritical\n  });\n};\n\nvar getPageBorderBoxCenterFromImpact = (function (args) {\n  var withoutDisplacement = getResultWithoutDroppableDisplacement(args);\n  var droppable = args.droppable;\n  var withDisplacement = droppable ? withDroppableDisplacement(droppable, withoutDisplacement) : withoutDisplacement;\n  return withDisplacement;\n});\n\nvar scrollViewport = (function (viewport, newScroll) {\n  var diff = subtract(newScroll, viewport.scroll.initial);\n  var displacement = negate(diff);\n  var frame = getRect({\n    top: newScroll.y,\n    bottom: newScroll.y + viewport.frame.height,\n    left: newScroll.x,\n    right: newScroll.x + viewport.frame.width\n  });\n  var updated = {\n    frame: frame,\n    scroll: {\n      initial: viewport.scroll.initial,\n      max: viewport.scroll.max,\n      current: newScroll,\n      diff: {\n        value: diff,\n        displacement: displacement\n      }\n    }\n  };\n  return updated;\n});\n\nfunction getDraggables(ids, draggables) {\n  return ids.map(function (id) {\n    return draggables[id];\n  });\n}\n\nfunction tryGetVisible(id, groups) {\n  for (var i = 0; i < groups.length; i++) {\n    var displacement = groups[i].visible[id];\n\n    if (displacement) {\n      return displacement;\n    }\n  }\n\n  return null;\n}\n\nvar speculativelyIncrease = (function (_ref) {\n  var impact = _ref.impact,\n      viewport = _ref.viewport,\n      destination = _ref.destination,\n      draggables = _ref.draggables,\n      maxScrollChange = _ref.maxScrollChange;\n  var scrolledViewport = scrollViewport(viewport, add(viewport.scroll.current, maxScrollChange));\n  var scrolledDroppable = destination.frame ? scrollDroppable(destination, add(destination.frame.scroll.current, maxScrollChange)) : destination;\n  var last = impact.displaced;\n  var withViewportScroll = getDisplacementGroups({\n    afterDragging: getDraggables(last.all, draggables),\n    destination: destination,\n    displacedBy: impact.displacedBy,\n    viewport: scrolledViewport.frame,\n    last: last,\n    forceShouldAnimate: false\n  });\n  var withDroppableScroll = getDisplacementGroups({\n    afterDragging: getDraggables(last.all, draggables),\n    destination: scrolledDroppable,\n    displacedBy: impact.displacedBy,\n    viewport: viewport.frame,\n    last: last,\n    forceShouldAnimate: false\n  });\n  var invisible = {};\n  var visible = {};\n  var groups = [last, withViewportScroll, withDroppableScroll];\n  last.all.forEach(function (id) {\n    var displacement = tryGetVisible(id, groups);\n\n    if (displacement) {\n      visible[id] = displacement;\n      return;\n    }\n\n    invisible[id] = true;\n  });\n\n  var newImpact = _extends({}, impact, {\n    displaced: {\n      all: last.all,\n      invisible: invisible,\n      visible: visible\n    }\n  });\n\n  return newImpact;\n});\n\nvar withViewportDisplacement = (function (viewport, point) {\n  return add(viewport.scroll.diff.displacement, point);\n});\n\nvar getClientFromPageBorderBoxCenter = (function (_ref) {\n  var pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n      draggable = _ref.draggable,\n      viewport = _ref.viewport;\n  var withoutPageScrollChange = withViewportDisplacement(viewport, pageBorderBoxCenter);\n  var offset = subtract(withoutPageScrollChange, draggable.page.borderBox.center);\n  return add(draggable.client.borderBox.center, offset);\n});\n\nvar isTotallyVisibleInNewLocation = (function (_ref) {\n  var draggable = _ref.draggable,\n      destination = _ref.destination,\n      newPageBorderBoxCenter = _ref.newPageBorderBoxCenter,\n      viewport = _ref.viewport,\n      withDroppableDisplacement = _ref.withDroppableDisplacement,\n      _ref$onlyOnMainAxis = _ref.onlyOnMainAxis,\n      onlyOnMainAxis = _ref$onlyOnMainAxis === void 0 ? false : _ref$onlyOnMainAxis;\n  var changeNeeded = subtract(newPageBorderBoxCenter, draggable.page.borderBox.center);\n  var shifted = offsetByPosition(draggable.page.borderBox, changeNeeded);\n  var args = {\n    target: shifted,\n    destination: destination,\n    withDroppableDisplacement: withDroppableDisplacement,\n    viewport: viewport\n  };\n  return onlyOnMainAxis ? isTotallyVisibleOnAxis(args) : isTotallyVisible(args);\n});\n\nvar moveToNextPlace = (function (_ref) {\n  var isMovingForward = _ref.isMovingForward,\n      draggable = _ref.draggable,\n      destination = _ref.destination,\n      draggables = _ref.draggables,\n      previousImpact = _ref.previousImpact,\n      viewport = _ref.viewport,\n      previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n      previousClientSelection = _ref.previousClientSelection,\n      afterCritical = _ref.afterCritical;\n\n  if (!destination.isEnabled) {\n    return null;\n  }\n\n  var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n  var isInHomeList = isHomeOf(draggable, destination);\n  var impact = moveToNextCombine({\n    isMovingForward: isMovingForward,\n    draggable: draggable,\n    destination: destination,\n    insideDestination: insideDestination,\n    previousImpact: previousImpact\n  }) || moveToNextIndex({\n    isMovingForward: isMovingForward,\n    isInHomeList: isInHomeList,\n    draggable: draggable,\n    draggables: draggables,\n    destination: destination,\n    insideDestination: insideDestination,\n    previousImpact: previousImpact,\n    viewport: viewport,\n    afterCritical: afterCritical\n  });\n\n  if (!impact) {\n    return null;\n  }\n\n  var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n    impact: impact,\n    draggable: draggable,\n    droppable: destination,\n    draggables: draggables,\n    afterCritical: afterCritical\n  });\n  var isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n    draggable: draggable,\n    destination: destination,\n    newPageBorderBoxCenter: pageBorderBoxCenter,\n    viewport: viewport.frame,\n    withDroppableDisplacement: false,\n    onlyOnMainAxis: true\n  });\n\n  if (isVisibleInNewLocation) {\n    var clientSelection = getClientFromPageBorderBoxCenter({\n      pageBorderBoxCenter: pageBorderBoxCenter,\n      draggable: draggable,\n      viewport: viewport\n    });\n    return {\n      clientSelection: clientSelection,\n      impact: impact,\n      scrollJumpRequest: null\n    };\n  }\n\n  var distance = subtract(pageBorderBoxCenter, previousPageBorderBoxCenter);\n  var cautious = speculativelyIncrease({\n    impact: impact,\n    viewport: viewport,\n    destination: destination,\n    draggables: draggables,\n    maxScrollChange: distance\n  });\n  return {\n    clientSelection: previousClientSelection,\n    impact: cautious,\n    scrollJumpRequest: distance\n  };\n});\n\nvar getKnownActive = function getKnownActive(droppable) {\n  var rect = droppable.subject.active;\n  !rect ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot get clipped area from droppable') : invariant(false) : void 0;\n  return rect;\n};\n\nvar getBestCrossAxisDroppable = (function (_ref) {\n  var isMovingForward = _ref.isMovingForward,\n      pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n      source = _ref.source,\n      droppables = _ref.droppables,\n      viewport = _ref.viewport;\n  var active = source.subject.active;\n\n  if (!active) {\n    return null;\n  }\n\n  var axis = source.axis;\n  var isBetweenSourceClipped = isWithin(active[axis.start], active[axis.end]);\n  var candidates = toDroppableList(droppables).filter(function (droppable) {\n    return droppable !== source;\n  }).filter(function (droppable) {\n    return droppable.isEnabled;\n  }).filter(function (droppable) {\n    return Boolean(droppable.subject.active);\n  }).filter(function (droppable) {\n    return isPartiallyVisibleThroughFrame(viewport.frame)(getKnownActive(droppable));\n  }).filter(function (droppable) {\n    var activeOfTarget = getKnownActive(droppable);\n\n    if (isMovingForward) {\n      return active[axis.crossAxisEnd] < activeOfTarget[axis.crossAxisEnd];\n    }\n\n    return activeOfTarget[axis.crossAxisStart] < active[axis.crossAxisStart];\n  }).filter(function (droppable) {\n    var activeOfTarget = getKnownActive(droppable);\n    var isBetweenDestinationClipped = isWithin(activeOfTarget[axis.start], activeOfTarget[axis.end]);\n    return isBetweenSourceClipped(activeOfTarget[axis.start]) || isBetweenSourceClipped(activeOfTarget[axis.end]) || isBetweenDestinationClipped(active[axis.start]) || isBetweenDestinationClipped(active[axis.end]);\n  }).sort(function (a, b) {\n    var first = getKnownActive(a)[axis.crossAxisStart];\n    var second = getKnownActive(b)[axis.crossAxisStart];\n\n    if (isMovingForward) {\n      return first - second;\n    }\n\n    return second - first;\n  }).filter(function (droppable, index, array) {\n    return getKnownActive(droppable)[axis.crossAxisStart] === getKnownActive(array[0])[axis.crossAxisStart];\n  });\n\n  if (!candidates.length) {\n    return null;\n  }\n\n  if (candidates.length === 1) {\n    return candidates[0];\n  }\n\n  var contains = candidates.filter(function (droppable) {\n    var isWithinDroppable = isWithin(getKnownActive(droppable)[axis.start], getKnownActive(droppable)[axis.end]);\n    return isWithinDroppable(pageBorderBoxCenter[axis.line]);\n  });\n\n  if (contains.length === 1) {\n    return contains[0];\n  }\n\n  if (contains.length > 1) {\n    return contains.sort(function (a, b) {\n      return getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start];\n    })[0];\n  }\n\n  return candidates.sort(function (a, b) {\n    var first = closest(pageBorderBoxCenter, getCorners(getKnownActive(a)));\n    var second = closest(pageBorderBoxCenter, getCorners(getKnownActive(b)));\n\n    if (first !== second) {\n      return first - second;\n    }\n\n    return getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start];\n  })[0];\n});\n\nvar getCurrentPageBorderBoxCenter = function getCurrentPageBorderBoxCenter(draggable, afterCritical) {\n  var original = draggable.page.borderBox.center;\n  return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? subtract(original, afterCritical.displacedBy.point) : original;\n};\nvar getCurrentPageBorderBox = function getCurrentPageBorderBox(draggable, afterCritical) {\n  var original = draggable.page.borderBox;\n  return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? offsetByPosition(original, negate(afterCritical.displacedBy.point)) : original;\n};\n\nvar getClosestDraggable = (function (_ref) {\n  var pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n      viewport = _ref.viewport,\n      destination = _ref.destination,\n      insideDestination = _ref.insideDestination,\n      afterCritical = _ref.afterCritical;\n  var sorted = insideDestination.filter(function (draggable) {\n    return isTotallyVisible({\n      target: getCurrentPageBorderBox(draggable, afterCritical),\n      destination: destination,\n      viewport: viewport.frame,\n      withDroppableDisplacement: true\n    });\n  }).sort(function (a, b) {\n    var distanceToA = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(a, afterCritical)));\n    var distanceToB = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(b, afterCritical)));\n\n    if (distanceToA < distanceToB) {\n      return -1;\n    }\n\n    if (distanceToB < distanceToA) {\n      return 1;\n    }\n\n    return a.descriptor.index - b.descriptor.index;\n  });\n  return sorted[0] || null;\n});\n\nvar getDisplacedBy = memoizeOne(function getDisplacedBy(axis, displaceBy) {\n  var displacement = displaceBy[axis.line];\n  return {\n    value: displacement,\n    point: patch(axis.line, displacement)\n  };\n});\n\nvar getRequiredGrowthForPlaceholder = function getRequiredGrowthForPlaceholder(droppable, placeholderSize, draggables) {\n  var axis = droppable.axis;\n\n  if (droppable.descriptor.mode === 'virtual') {\n    return patch(axis.line, placeholderSize[axis.line]);\n  }\n\n  var availableSpace = droppable.subject.page.contentBox[axis.size];\n  var insideDroppable = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n  var spaceUsed = insideDroppable.reduce(function (sum, dimension) {\n    return sum + dimension.client.marginBox[axis.size];\n  }, 0);\n  var requiredSpace = spaceUsed + placeholderSize[axis.line];\n  var needsToGrowBy = requiredSpace - availableSpace;\n\n  if (needsToGrowBy <= 0) {\n    return null;\n  }\n\n  return patch(axis.line, needsToGrowBy);\n};\n\nvar withMaxScroll = function withMaxScroll(frame, max) {\n  return _extends({}, frame, {\n    scroll: _extends({}, frame.scroll, {\n      max: max\n    })\n  });\n};\n\nvar addPlaceholder = function addPlaceholder(droppable, draggable, draggables) {\n  var frame = droppable.frame;\n  !!isHomeOf(draggable, droppable) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should not add placeholder space to home list') : invariant(false) : void 0;\n  !!droppable.subject.withPlaceholder ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot add placeholder size to a subject when it already has one') : invariant(false) : void 0;\n  var placeholderSize = getDisplacedBy(droppable.axis, draggable.displaceBy).point;\n  var requiredGrowth = getRequiredGrowthForPlaceholder(droppable, placeholderSize, draggables);\n  var added = {\n    placeholderSize: placeholderSize,\n    increasedBy: requiredGrowth,\n    oldFrameMaxScroll: droppable.frame ? droppable.frame.scroll.max : null\n  };\n\n  if (!frame) {\n    var _subject = getSubject({\n      page: droppable.subject.page,\n      withPlaceholder: added,\n      axis: droppable.axis,\n      frame: droppable.frame\n    });\n\n    return _extends({}, droppable, {\n      subject: _subject\n    });\n  }\n\n  var maxScroll = requiredGrowth ? add(frame.scroll.max, requiredGrowth) : frame.scroll.max;\n  var newFrame = withMaxScroll(frame, maxScroll);\n  var subject = getSubject({\n    page: droppable.subject.page,\n    withPlaceholder: added,\n    axis: droppable.axis,\n    frame: newFrame\n  });\n  return _extends({}, droppable, {\n    subject: subject,\n    frame: newFrame\n  });\n};\nvar removePlaceholder = function removePlaceholder(droppable) {\n  var added = droppable.subject.withPlaceholder;\n  !added ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot remove placeholder form subject when there was none') : invariant(false) : void 0;\n  var frame = droppable.frame;\n\n  if (!frame) {\n    var _subject2 = getSubject({\n      page: droppable.subject.page,\n      axis: droppable.axis,\n      frame: null,\n      withPlaceholder: null\n    });\n\n    return _extends({}, droppable, {\n      subject: _subject2\n    });\n  }\n\n  var oldMaxScroll = added.oldFrameMaxScroll;\n  !oldMaxScroll ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected droppable with frame to have old max frame scroll when removing placeholder') : invariant(false) : void 0;\n  var newFrame = withMaxScroll(frame, oldMaxScroll);\n  var subject = getSubject({\n    page: droppable.subject.page,\n    axis: droppable.axis,\n    frame: newFrame,\n    withPlaceholder: null\n  });\n  return _extends({}, droppable, {\n    subject: subject,\n    frame: newFrame\n  });\n};\n\nvar moveToNewDroppable = (function (_ref) {\n  var previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n      moveRelativeTo = _ref.moveRelativeTo,\n      insideDestination = _ref.insideDestination,\n      draggable = _ref.draggable,\n      draggables = _ref.draggables,\n      destination = _ref.destination,\n      viewport = _ref.viewport,\n      afterCritical = _ref.afterCritical;\n\n  if (!moveRelativeTo) {\n    if (insideDestination.length) {\n      return null;\n    }\n\n    var proposed = {\n      displaced: emptyGroups,\n      displacedBy: noDisplacedBy,\n      at: {\n        type: 'REORDER',\n        destination: {\n          droppableId: destination.descriptor.id,\n          index: 0\n        }\n      }\n    };\n    var proposedPageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n      impact: proposed,\n      draggable: draggable,\n      droppable: destination,\n      draggables: draggables,\n      afterCritical: afterCritical\n    });\n    var withPlaceholder = isHomeOf(draggable, destination) ? destination : addPlaceholder(destination, draggable, draggables);\n    var isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n      draggable: draggable,\n      destination: withPlaceholder,\n      newPageBorderBoxCenter: proposedPageBorderBoxCenter,\n      viewport: viewport.frame,\n      withDroppableDisplacement: false,\n      onlyOnMainAxis: true\n    });\n    return isVisibleInNewLocation ? proposed : null;\n  }\n\n  var isGoingBeforeTarget = Boolean(previousPageBorderBoxCenter[destination.axis.line] <= moveRelativeTo.page.borderBox.center[destination.axis.line]);\n\n  var proposedIndex = function () {\n    var relativeTo = moveRelativeTo.descriptor.index;\n\n    if (moveRelativeTo.descriptor.id === draggable.descriptor.id) {\n      return relativeTo;\n    }\n\n    if (isGoingBeforeTarget) {\n      return relativeTo;\n    }\n\n    return relativeTo + 1;\n  }();\n\n  var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n  return calculateReorderImpact({\n    draggable: draggable,\n    insideDestination: insideDestination,\n    destination: destination,\n    viewport: viewport,\n    displacedBy: displacedBy,\n    last: emptyGroups,\n    index: proposedIndex\n  });\n});\n\nvar moveCrossAxis = (function (_ref) {\n  var isMovingForward = _ref.isMovingForward,\n      previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n      draggable = _ref.draggable,\n      isOver = _ref.isOver,\n      draggables = _ref.draggables,\n      droppables = _ref.droppables,\n      viewport = _ref.viewport,\n      afterCritical = _ref.afterCritical;\n  var destination = getBestCrossAxisDroppable({\n    isMovingForward: isMovingForward,\n    pageBorderBoxCenter: previousPageBorderBoxCenter,\n    source: isOver,\n    droppables: droppables,\n    viewport: viewport\n  });\n\n  if (!destination) {\n    return null;\n  }\n\n  var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n  var moveRelativeTo = getClosestDraggable({\n    pageBorderBoxCenter: previousPageBorderBoxCenter,\n    viewport: viewport,\n    destination: destination,\n    insideDestination: insideDestination,\n    afterCritical: afterCritical\n  });\n  var impact = moveToNewDroppable({\n    previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n    destination: destination,\n    draggable: draggable,\n    draggables: draggables,\n    moveRelativeTo: moveRelativeTo,\n    insideDestination: insideDestination,\n    viewport: viewport,\n    afterCritical: afterCritical\n  });\n\n  if (!impact) {\n    return null;\n  }\n\n  var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n    impact: impact,\n    draggable: draggable,\n    droppable: destination,\n    draggables: draggables,\n    afterCritical: afterCritical\n  });\n  var clientSelection = getClientFromPageBorderBoxCenter({\n    pageBorderBoxCenter: pageBorderBoxCenter,\n    draggable: draggable,\n    viewport: viewport\n  });\n  return {\n    clientSelection: clientSelection,\n    impact: impact,\n    scrollJumpRequest: null\n  };\n});\n\nvar whatIsDraggedOver = (function (impact) {\n  var at = impact.at;\n\n  if (!at) {\n    return null;\n  }\n\n  if (at.type === 'REORDER') {\n    return at.destination.droppableId;\n  }\n\n  return at.combine.droppableId;\n});\n\nvar getDroppableOver = function getDroppableOver(impact, droppables) {\n  var id = whatIsDraggedOver(impact);\n  return id ? droppables[id] : null;\n};\n\nvar moveInDirection = (function (_ref) {\n  var state = _ref.state,\n      type = _ref.type;\n  var isActuallyOver = getDroppableOver(state.impact, state.dimensions.droppables);\n  var isMainAxisMovementAllowed = Boolean(isActuallyOver);\n  var home = state.dimensions.droppables[state.critical.droppable.id];\n  var isOver = isActuallyOver || home;\n  var direction = isOver.axis.direction;\n  var isMovingOnMainAxis = direction === 'vertical' && (type === 'MOVE_UP' || type === 'MOVE_DOWN') || direction === 'horizontal' && (type === 'MOVE_LEFT' || type === 'MOVE_RIGHT');\n\n  if (isMovingOnMainAxis && !isMainAxisMovementAllowed) {\n    return null;\n  }\n\n  var isMovingForward = type === 'MOVE_DOWN' || type === 'MOVE_RIGHT';\n  var draggable = state.dimensions.draggables[state.critical.draggable.id];\n  var previousPageBorderBoxCenter = state.current.page.borderBoxCenter;\n  var _state$dimensions = state.dimensions,\n      draggables = _state$dimensions.draggables,\n      droppables = _state$dimensions.droppables;\n  return isMovingOnMainAxis ? moveToNextPlace({\n    isMovingForward: isMovingForward,\n    previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n    draggable: draggable,\n    destination: isOver,\n    draggables: draggables,\n    viewport: state.viewport,\n    previousClientSelection: state.current.client.selection,\n    previousImpact: state.impact,\n    afterCritical: state.afterCritical\n  }) : moveCrossAxis({\n    isMovingForward: isMovingForward,\n    previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n    draggable: draggable,\n    isOver: isOver,\n    draggables: draggables,\n    droppables: droppables,\n    viewport: state.viewport,\n    afterCritical: state.afterCritical\n  });\n});\n\nfunction isMovementAllowed(state) {\n  return state.phase === 'DRAGGING' || state.phase === 'COLLECTING';\n}\n\nfunction isPositionInFrame(frame) {\n  var isWithinVertical = isWithin(frame.top, frame.bottom);\n  var isWithinHorizontal = isWithin(frame.left, frame.right);\n  return function run(point) {\n    return isWithinVertical(point.y) && isWithinHorizontal(point.x);\n  };\n}\n\nfunction getHasOverlap(first, second) {\n  return first.left < second.right && first.right > second.left && first.top < second.bottom && first.bottom > second.top;\n}\n\nfunction getFurthestAway(_ref) {\n  var pageBorderBox = _ref.pageBorderBox,\n      draggable = _ref.draggable,\n      candidates = _ref.candidates;\n  var startCenter = draggable.page.borderBox.center;\n  var sorted = candidates.map(function (candidate) {\n    var axis = candidate.axis;\n    var target = patch(candidate.axis.line, pageBorderBox.center[axis.line], candidate.page.borderBox.center[axis.crossAxisLine]);\n    return {\n      id: candidate.descriptor.id,\n      distance: distance(startCenter, target)\n    };\n  }).sort(function (a, b) {\n    return b.distance - a.distance;\n  });\n  return sorted[0] ? sorted[0].id : null;\n}\n\nfunction getDroppableOver$1(_ref2) {\n  var pageBorderBox = _ref2.pageBorderBox,\n      draggable = _ref2.draggable,\n      droppables = _ref2.droppables;\n  var candidates = toDroppableList(droppables).filter(function (item) {\n    if (!item.isEnabled) {\n      return false;\n    }\n\n    var active = item.subject.active;\n\n    if (!active) {\n      return false;\n    }\n\n    if (!getHasOverlap(pageBorderBox, active)) {\n      return false;\n    }\n\n    if (isPositionInFrame(active)(pageBorderBox.center)) {\n      return true;\n    }\n\n    var axis = item.axis;\n    var childCenter = active.center[axis.crossAxisLine];\n    var crossAxisStart = pageBorderBox[axis.crossAxisStart];\n    var crossAxisEnd = pageBorderBox[axis.crossAxisEnd];\n    var isContained = isWithin(active[axis.crossAxisStart], active[axis.crossAxisEnd]);\n    var isStartContained = isContained(crossAxisStart);\n    var isEndContained = isContained(crossAxisEnd);\n\n    if (!isStartContained && !isEndContained) {\n      return true;\n    }\n\n    if (isStartContained) {\n      return crossAxisStart < childCenter;\n    }\n\n    return crossAxisEnd > childCenter;\n  });\n\n  if (!candidates.length) {\n    return null;\n  }\n\n  if (candidates.length === 1) {\n    return candidates[0].descriptor.id;\n  }\n\n  return getFurthestAway({\n    pageBorderBox: pageBorderBox,\n    draggable: draggable,\n    candidates: candidates\n  });\n}\n\nvar offsetRectByPosition = function offsetRectByPosition(rect, point) {\n  return getRect(offsetByPosition(rect, point));\n};\n\nvar withDroppableScroll = (function (droppable, area) {\n  var frame = droppable.frame;\n\n  if (!frame) {\n    return area;\n  }\n\n  return offsetRectByPosition(area, frame.scroll.diff.value);\n});\n\nfunction getIsDisplaced(_ref) {\n  var displaced = _ref.displaced,\n      id = _ref.id;\n  return Boolean(displaced.visible[id] || displaced.invisible[id]);\n}\n\nfunction atIndex(_ref) {\n  var draggable = _ref.draggable,\n      closest = _ref.closest,\n      inHomeList = _ref.inHomeList;\n\n  if (!closest) {\n    return null;\n  }\n\n  if (!inHomeList) {\n    return closest.descriptor.index;\n  }\n\n  if (closest.descriptor.index > draggable.descriptor.index) {\n    return closest.descriptor.index - 1;\n  }\n\n  return closest.descriptor.index;\n}\n\nvar getReorderImpact = (function (_ref2) {\n  var targetRect = _ref2.pageBorderBoxWithDroppableScroll,\n      draggable = _ref2.draggable,\n      destination = _ref2.destination,\n      insideDestination = _ref2.insideDestination,\n      last = _ref2.last,\n      viewport = _ref2.viewport,\n      afterCritical = _ref2.afterCritical;\n  var axis = destination.axis;\n  var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n  var displacement = displacedBy.value;\n  var targetStart = targetRect[axis.start];\n  var targetEnd = targetRect[axis.end];\n  var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n  var closest = find(withoutDragging, function (child) {\n    var id = child.descriptor.id;\n    var childCenter = child.page.borderBox.center[axis.line];\n    var didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n    var isDisplaced = getIsDisplaced({\n      displaced: last,\n      id: id\n    });\n\n    if (didStartAfterCritical$1) {\n      if (isDisplaced) {\n        return targetEnd <= childCenter;\n      }\n\n      return targetStart < childCenter - displacement;\n    }\n\n    if (isDisplaced) {\n      return targetEnd <= childCenter + displacement;\n    }\n\n    return targetStart < childCenter;\n  });\n  var newIndex = atIndex({\n    draggable: draggable,\n    closest: closest,\n    inHomeList: isHomeOf(draggable, destination)\n  });\n  return calculateReorderImpact({\n    draggable: draggable,\n    insideDestination: insideDestination,\n    destination: destination,\n    viewport: viewport,\n    last: last,\n    displacedBy: displacedBy,\n    index: newIndex\n  });\n});\n\nvar combineThresholdDivisor = 4;\nvar getCombineImpact = (function (_ref) {\n  var draggable = _ref.draggable,\n      targetRect = _ref.pageBorderBoxWithDroppableScroll,\n      previousImpact = _ref.previousImpact,\n      destination = _ref.destination,\n      insideDestination = _ref.insideDestination,\n      afterCritical = _ref.afterCritical;\n\n  if (!destination.isCombineEnabled) {\n    return null;\n  }\n\n  var axis = destination.axis;\n  var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n  var displacement = displacedBy.value;\n  var targetStart = targetRect[axis.start];\n  var targetEnd = targetRect[axis.end];\n  var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n  var combineWith = find(withoutDragging, function (child) {\n    var id = child.descriptor.id;\n    var childRect = child.page.borderBox;\n    var childSize = childRect[axis.size];\n    var threshold = childSize / combineThresholdDivisor;\n    var didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n    var isDisplaced = getIsDisplaced({\n      displaced: previousImpact.displaced,\n      id: id\n    });\n\n    if (didStartAfterCritical$1) {\n      if (isDisplaced) {\n        return targetEnd > childRect[axis.start] + threshold && targetEnd < childRect[axis.end] - threshold;\n      }\n\n      return targetStart > childRect[axis.start] - displacement + threshold && targetStart < childRect[axis.end] - displacement - threshold;\n    }\n\n    if (isDisplaced) {\n      return targetEnd > childRect[axis.start] + displacement + threshold && targetEnd < childRect[axis.end] + displacement - threshold;\n    }\n\n    return targetStart > childRect[axis.start] + threshold && targetStart < childRect[axis.end] - threshold;\n  });\n\n  if (!combineWith) {\n    return null;\n  }\n\n  var impact = {\n    displacedBy: displacedBy,\n    displaced: previousImpact.displaced,\n    at: {\n      type: 'COMBINE',\n      combine: {\n        draggableId: combineWith.descriptor.id,\n        droppableId: destination.descriptor.id\n      }\n    }\n  };\n  return impact;\n});\n\nvar getDragImpact = (function (_ref) {\n  var pageOffset = _ref.pageOffset,\n      draggable = _ref.draggable,\n      draggables = _ref.draggables,\n      droppables = _ref.droppables,\n      previousImpact = _ref.previousImpact,\n      viewport = _ref.viewport,\n      afterCritical = _ref.afterCritical;\n  var pageBorderBox = offsetRectByPosition(draggable.page.borderBox, pageOffset);\n  var destinationId = getDroppableOver$1({\n    pageBorderBox: pageBorderBox,\n    draggable: draggable,\n    droppables: droppables\n  });\n\n  if (!destinationId) {\n    return noImpact;\n  }\n\n  var destination = droppables[destinationId];\n  var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n  var pageBorderBoxWithDroppableScroll = withDroppableScroll(destination, pageBorderBox);\n  return getCombineImpact({\n    pageBorderBoxWithDroppableScroll: pageBorderBoxWithDroppableScroll,\n    draggable: draggable,\n    previousImpact: previousImpact,\n    destination: destination,\n    insideDestination: insideDestination,\n    afterCritical: afterCritical\n  }) || getReorderImpact({\n    pageBorderBoxWithDroppableScroll: pageBorderBoxWithDroppableScroll,\n    draggable: draggable,\n    destination: destination,\n    insideDestination: insideDestination,\n    last: previousImpact.displaced,\n    viewport: viewport,\n    afterCritical: afterCritical\n  });\n});\n\nvar patchDroppableMap = (function (droppables, updated) {\n  var _extends2;\n\n  return _extends({}, droppables, (_extends2 = {}, _extends2[updated.descriptor.id] = updated, _extends2));\n});\n\nvar clearUnusedPlaceholder = function clearUnusedPlaceholder(_ref) {\n  var previousImpact = _ref.previousImpact,\n      impact = _ref.impact,\n      droppables = _ref.droppables;\n  var last = whatIsDraggedOver(previousImpact);\n  var now = whatIsDraggedOver(impact);\n\n  if (!last) {\n    return droppables;\n  }\n\n  if (last === now) {\n    return droppables;\n  }\n\n  var lastDroppable = droppables[last];\n\n  if (!lastDroppable.subject.withPlaceholder) {\n    return droppables;\n  }\n\n  var updated = removePlaceholder(lastDroppable);\n  return patchDroppableMap(droppables, updated);\n};\n\nvar recomputePlaceholders = (function (_ref2) {\n  var draggable = _ref2.draggable,\n      draggables = _ref2.draggables,\n      droppables = _ref2.droppables,\n      previousImpact = _ref2.previousImpact,\n      impact = _ref2.impact;\n  var cleaned = clearUnusedPlaceholder({\n    previousImpact: previousImpact,\n    impact: impact,\n    droppables: droppables\n  });\n  var isOver = whatIsDraggedOver(impact);\n\n  if (!isOver) {\n    return cleaned;\n  }\n\n  var droppable = droppables[isOver];\n\n  if (isHomeOf(draggable, droppable)) {\n    return cleaned;\n  }\n\n  if (droppable.subject.withPlaceholder) {\n    return cleaned;\n  }\n\n  var patched = addPlaceholder(droppable, draggable, draggables);\n  return patchDroppableMap(cleaned, patched);\n});\n\nvar update = (function (_ref) {\n  var state = _ref.state,\n      forcedClientSelection = _ref.clientSelection,\n      forcedDimensions = _ref.dimensions,\n      forcedViewport = _ref.viewport,\n      forcedImpact = _ref.impact,\n      scrollJumpRequest = _ref.scrollJumpRequest;\n  var viewport = forcedViewport || state.viewport;\n  var dimensions = forcedDimensions || state.dimensions;\n  var clientSelection = forcedClientSelection || state.current.client.selection;\n  var offset = subtract(clientSelection, state.initial.client.selection);\n  var client = {\n    offset: offset,\n    selection: clientSelection,\n    borderBoxCenter: add(state.initial.client.borderBoxCenter, offset)\n  };\n  var page = {\n    selection: add(client.selection, viewport.scroll.current),\n    borderBoxCenter: add(client.borderBoxCenter, viewport.scroll.current),\n    offset: add(client.offset, viewport.scroll.diff.value)\n  };\n  var current = {\n    client: client,\n    page: page\n  };\n\n  if (state.phase === 'COLLECTING') {\n    return _extends({\n      phase: 'COLLECTING'\n    }, state, {\n      dimensions: dimensions,\n      viewport: viewport,\n      current: current\n    });\n  }\n\n  var draggable = dimensions.draggables[state.critical.draggable.id];\n  var newImpact = forcedImpact || getDragImpact({\n    pageOffset: page.offset,\n    draggable: draggable,\n    draggables: dimensions.draggables,\n    droppables: dimensions.droppables,\n    previousImpact: state.impact,\n    viewport: viewport,\n    afterCritical: state.afterCritical\n  });\n  var withUpdatedPlaceholders = recomputePlaceholders({\n    draggable: draggable,\n    impact: newImpact,\n    previousImpact: state.impact,\n    draggables: dimensions.draggables,\n    droppables: dimensions.droppables\n  });\n\n  var result = _extends({}, state, {\n    current: current,\n    dimensions: {\n      draggables: dimensions.draggables,\n      droppables: withUpdatedPlaceholders\n    },\n    impact: newImpact,\n    viewport: viewport,\n    scrollJumpRequest: scrollJumpRequest || null,\n    forceShouldAnimate: scrollJumpRequest ? false : null\n  });\n\n  return result;\n});\n\nfunction getDraggables$1(ids, draggables) {\n  return ids.map(function (id) {\n    return draggables[id];\n  });\n}\n\nvar recompute = (function (_ref) {\n  var impact = _ref.impact,\n      viewport = _ref.viewport,\n      draggables = _ref.draggables,\n      destination = _ref.destination,\n      forceShouldAnimate = _ref.forceShouldAnimate;\n  var last = impact.displaced;\n  var afterDragging = getDraggables$1(last.all, draggables);\n  var displaced = getDisplacementGroups({\n    afterDragging: afterDragging,\n    destination: destination,\n    displacedBy: impact.displacedBy,\n    viewport: viewport.frame,\n    forceShouldAnimate: forceShouldAnimate,\n    last: last\n  });\n  return _extends({}, impact, {\n    displaced: displaced\n  });\n});\n\nvar getClientBorderBoxCenter = (function (_ref) {\n  var impact = _ref.impact,\n      draggable = _ref.draggable,\n      droppable = _ref.droppable,\n      draggables = _ref.draggables,\n      viewport = _ref.viewport,\n      afterCritical = _ref.afterCritical;\n  var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n    impact: impact,\n    draggable: draggable,\n    draggables: draggables,\n    droppable: droppable,\n    afterCritical: afterCritical\n  });\n  return getClientFromPageBorderBoxCenter({\n    pageBorderBoxCenter: pageBorderBoxCenter,\n    draggable: draggable,\n    viewport: viewport\n  });\n});\n\nvar refreshSnap = (function (_ref) {\n  var state = _ref.state,\n      forcedDimensions = _ref.dimensions,\n      forcedViewport = _ref.viewport;\n  !(state.movementMode === 'SNAP') ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n  var needsVisibilityCheck = state.impact;\n  var viewport = forcedViewport || state.viewport;\n  var dimensions = forcedDimensions || state.dimensions;\n  var draggables = dimensions.draggables,\n      droppables = dimensions.droppables;\n  var draggable = draggables[state.critical.draggable.id];\n  var isOver = whatIsDraggedOver(needsVisibilityCheck);\n  !isOver ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Must be over a destination in SNAP movement mode') : invariant(false) : void 0;\n  var destination = droppables[isOver];\n  var impact = recompute({\n    impact: needsVisibilityCheck,\n    viewport: viewport,\n    destination: destination,\n    draggables: draggables\n  });\n  var clientSelection = getClientBorderBoxCenter({\n    impact: impact,\n    draggable: draggable,\n    droppable: destination,\n    draggables: draggables,\n    viewport: viewport,\n    afterCritical: state.afterCritical\n  });\n  return update({\n    impact: impact,\n    clientSelection: clientSelection,\n    state: state,\n    dimensions: dimensions,\n    viewport: viewport\n  });\n});\n\nvar getHomeLocation = (function (descriptor) {\n  return {\n    index: descriptor.index,\n    droppableId: descriptor.droppableId\n  };\n});\n\nvar getLiftEffect = (function (_ref) {\n  var draggable = _ref.draggable,\n      home = _ref.home,\n      draggables = _ref.draggables,\n      viewport = _ref.viewport;\n  var displacedBy = getDisplacedBy(home.axis, draggable.displaceBy);\n  var insideHome = getDraggablesInsideDroppable(home.descriptor.id, draggables);\n  var rawIndex = insideHome.indexOf(draggable);\n  !(rawIndex !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected draggable to be inside home list') : invariant(false) : void 0;\n  var afterDragging = insideHome.slice(rawIndex + 1);\n  var effected = afterDragging.reduce(function (previous, item) {\n    previous[item.descriptor.id] = true;\n    return previous;\n  }, {});\n  var afterCritical = {\n    inVirtualList: home.descriptor.mode === 'virtual',\n    displacedBy: displacedBy,\n    effected: effected\n  };\n  var displaced = getDisplacementGroups({\n    afterDragging: afterDragging,\n    destination: home,\n    displacedBy: displacedBy,\n    last: null,\n    viewport: viewport.frame,\n    forceShouldAnimate: false\n  });\n  var impact = {\n    displaced: displaced,\n    displacedBy: displacedBy,\n    at: {\n      type: 'REORDER',\n      destination: getHomeLocation(draggable.descriptor)\n    }\n  };\n  return {\n    impact: impact,\n    afterCritical: afterCritical\n  };\n});\n\nvar patchDimensionMap = (function (dimensions, updated) {\n  return {\n    draggables: dimensions.draggables,\n    droppables: patchDroppableMap(dimensions.droppables, updated)\n  };\n});\n\nvar start = function start(key) {\n  if (process.env.NODE_ENV !== 'production') {\n    {\n      return;\n    }\n  }\n};\nvar finish = function finish(key) {\n  if (process.env.NODE_ENV !== 'production') {\n    {\n      return;\n    }\n  }\n};\n\nvar offsetDraggable = (function (_ref) {\n  var draggable = _ref.draggable,\n      offset$1 = _ref.offset,\n      initialWindowScroll = _ref.initialWindowScroll;\n  var client = offset(draggable.client, offset$1);\n  var page = withScroll(client, initialWindowScroll);\n\n  var moved = _extends({}, draggable, {\n    placeholder: _extends({}, draggable.placeholder, {\n      client: client\n    }),\n    client: client,\n    page: page\n  });\n\n  return moved;\n});\n\nvar getFrame = (function (droppable) {\n  var frame = droppable.frame;\n  !frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected Droppable to have a frame') : invariant(false) : void 0;\n  return frame;\n});\n\nvar adjustAdditionsForScrollChanges = (function (_ref) {\n  var additions = _ref.additions,\n      updatedDroppables = _ref.updatedDroppables,\n      viewport = _ref.viewport;\n  var windowScrollChange = viewport.scroll.diff.value;\n  return additions.map(function (draggable) {\n    var droppableId = draggable.descriptor.droppableId;\n    var modified = updatedDroppables[droppableId];\n    var frame = getFrame(modified);\n    var droppableScrollChange = frame.scroll.diff.value;\n    var totalChange = add(windowScrollChange, droppableScrollChange);\n    var moved = offsetDraggable({\n      draggable: draggable,\n      offset: totalChange,\n      initialWindowScroll: viewport.scroll.initial\n    });\n    return moved;\n  });\n});\n\nvar publishWhileDraggingInVirtual = (function (_ref) {\n  var state = _ref.state,\n      published = _ref.published;\n  start();\n  var withScrollChange = published.modified.map(function (update) {\n    var existing = state.dimensions.droppables[update.droppableId];\n    var scrolled = scrollDroppable(existing, update.scroll);\n    return scrolled;\n  });\n\n  var droppables = _extends({}, state.dimensions.droppables, {}, toDroppableMap(withScrollChange));\n\n  var updatedAdditions = toDraggableMap(adjustAdditionsForScrollChanges({\n    additions: published.additions,\n    updatedDroppables: droppables,\n    viewport: state.viewport\n  }));\n\n  var draggables = _extends({}, state.dimensions.draggables, {}, updatedAdditions);\n\n  published.removals.forEach(function (id) {\n    delete draggables[id];\n  });\n  var dimensions = {\n    droppables: droppables,\n    draggables: draggables\n  };\n  var wasOverId = whatIsDraggedOver(state.impact);\n  var wasOver = wasOverId ? dimensions.droppables[wasOverId] : null;\n  var draggable = dimensions.draggables[state.critical.draggable.id];\n  var home = dimensions.droppables[state.critical.droppable.id];\n\n  var _getLiftEffect = getLiftEffect({\n    draggable: draggable,\n    home: home,\n    draggables: draggables,\n    viewport: state.viewport\n  }),\n      onLiftImpact = _getLiftEffect.impact,\n      afterCritical = _getLiftEffect.afterCritical;\n\n  var previousImpact = wasOver && wasOver.isCombineEnabled ? state.impact : onLiftImpact;\n  var impact = getDragImpact({\n    pageOffset: state.current.page.offset,\n    draggable: dimensions.draggables[state.critical.draggable.id],\n    draggables: dimensions.draggables,\n    droppables: dimensions.droppables,\n    previousImpact: previousImpact,\n    viewport: state.viewport,\n    afterCritical: afterCritical\n  });\n  finish();\n\n  var draggingState = _extends({\n    phase: 'DRAGGING'\n  }, state, {\n    phase: 'DRAGGING',\n    impact: impact,\n    onLiftImpact: onLiftImpact,\n    dimensions: dimensions,\n    afterCritical: afterCritical,\n    forceShouldAnimate: false\n  });\n\n  if (state.phase === 'COLLECTING') {\n    return draggingState;\n  }\n\n  var dropPending = _extends({\n    phase: 'DROP_PENDING'\n  }, draggingState, {\n    phase: 'DROP_PENDING',\n    reason: state.reason,\n    isWaiting: false\n  });\n\n  return dropPending;\n});\n\nvar isSnapping = function isSnapping(state) {\n  return state.movementMode === 'SNAP';\n};\n\nvar postDroppableChange = function postDroppableChange(state, updated, isEnabledChanging) {\n  var dimensions = patchDimensionMap(state.dimensions, updated);\n\n  if (!isSnapping(state) || isEnabledChanging) {\n    return update({\n      state: state,\n      dimensions: dimensions\n    });\n  }\n\n  return refreshSnap({\n    state: state,\n    dimensions: dimensions\n  });\n};\n\nfunction removeScrollJumpRequest(state) {\n  if (state.isDragging && state.movementMode === 'SNAP') {\n    return _extends({\n      phase: 'DRAGGING'\n    }, state, {\n      scrollJumpRequest: null\n    });\n  }\n\n  return state;\n}\n\nvar idle = {\n  phase: 'IDLE',\n  completed: null,\n  shouldFlush: false\n};\nvar reducer = (function (state, action) {\n  if (state === void 0) {\n    state = idle;\n  }\n\n  if (action.type === 'FLUSH') {\n    return _extends({}, idle, {\n      shouldFlush: true\n    });\n  }\n\n  if (action.type === 'INITIAL_PUBLISH') {\n    !(state.phase === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INITIAL_PUBLISH must come after a IDLE phase') : invariant(false) : void 0;\n    var _action$payload = action.payload,\n        critical = _action$payload.critical,\n        clientSelection = _action$payload.clientSelection,\n        viewport = _action$payload.viewport,\n        dimensions = _action$payload.dimensions,\n        movementMode = _action$payload.movementMode;\n    var draggable = dimensions.draggables[critical.draggable.id];\n    var home = dimensions.droppables[critical.droppable.id];\n    var client = {\n      selection: clientSelection,\n      borderBoxCenter: draggable.client.borderBox.center,\n      offset: origin\n    };\n    var initial = {\n      client: client,\n      page: {\n        selection: add(client.selection, viewport.scroll.initial),\n        borderBoxCenter: add(client.selection, viewport.scroll.initial),\n        offset: add(client.selection, viewport.scroll.diff.value)\n      }\n    };\n    var isWindowScrollAllowed = toDroppableList(dimensions.droppables).every(function (item) {\n      return !item.isFixedOnPage;\n    });\n\n    var _getLiftEffect = getLiftEffect({\n      draggable: draggable,\n      home: home,\n      draggables: dimensions.draggables,\n      viewport: viewport\n    }),\n        impact = _getLiftEffect.impact,\n        afterCritical = _getLiftEffect.afterCritical;\n\n    var result = {\n      phase: 'DRAGGING',\n      isDragging: true,\n      critical: critical,\n      movementMode: movementMode,\n      dimensions: dimensions,\n      initial: initial,\n      current: initial,\n      isWindowScrollAllowed: isWindowScrollAllowed,\n      impact: impact,\n      afterCritical: afterCritical,\n      onLiftImpact: impact,\n      viewport: viewport,\n      scrollJumpRequest: null,\n      forceShouldAnimate: null\n    };\n    return result;\n  }\n\n  if (action.type === 'COLLECTION_STARTING') {\n    if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n      return state;\n    }\n\n    !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Collection cannot start from phase \" + state.phase) : invariant(false) : void 0;\n\n    var _result = _extends({\n      phase: 'COLLECTING'\n    }, state, {\n      phase: 'COLLECTING'\n    });\n\n    return _result;\n  }\n\n  if (action.type === 'PUBLISH_WHILE_DRAGGING') {\n    !(state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Unexpected \" + action.type + \" received in phase \" + state.phase) : invariant(false) : void 0;\n    return publishWhileDraggingInVirtual({\n      state: state,\n      published: action.payload\n    });\n  }\n\n  if (action.type === 'MOVE') {\n    if (state.phase === 'DROP_PENDING') {\n      return state;\n    }\n\n    !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" not permitted in phase \" + state.phase) : invariant(false) : void 0;\n    var _clientSelection = action.payload.client;\n\n    if (isEqual(_clientSelection, state.current.client.selection)) {\n      return state;\n    }\n\n    return update({\n      state: state,\n      clientSelection: _clientSelection,\n      impact: isSnapping(state) ? state.impact : null\n    });\n  }\n\n  if (action.type === 'UPDATE_DROPPABLE_SCROLL') {\n    if (state.phase === 'DROP_PENDING') {\n      return removeScrollJumpRequest(state);\n    }\n\n    if (state.phase === 'COLLECTING') {\n      return removeScrollJumpRequest(state);\n    }\n\n    !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" not permitted in phase \" + state.phase) : invariant(false) : void 0;\n    var _action$payload2 = action.payload,\n        id = _action$payload2.id,\n        newScroll = _action$payload2.newScroll;\n    var target = state.dimensions.droppables[id];\n\n    if (!target) {\n      return state;\n    }\n\n    var scrolled = scrollDroppable(target, newScroll);\n    return postDroppableChange(state, scrolled, false);\n  }\n\n  if (action.type === 'UPDATE_DROPPABLE_IS_ENABLED') {\n    if (state.phase === 'DROP_PENDING') {\n      return state;\n    }\n\n    !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Attempting to move in an unsupported phase \" + state.phase) : invariant(false) : void 0;\n    var _action$payload3 = action.payload,\n        _id = _action$payload3.id,\n        isEnabled = _action$payload3.isEnabled;\n    var _target = state.dimensions.droppables[_id];\n    !_target ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find Droppable[id: \" + _id + \"] to toggle its enabled state\") : invariant(false) : void 0;\n    !(_target.isEnabled !== isEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Trying to set droppable isEnabled to \" + String(isEnabled) + \"\\n      but it is already \" + String(_target.isEnabled)) : invariant(false) : void 0;\n\n    var updated = _extends({}, _target, {\n      isEnabled: isEnabled\n    });\n\n    return postDroppableChange(state, updated, true);\n  }\n\n  if (action.type === 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED') {\n    if (state.phase === 'DROP_PENDING') {\n      return state;\n    }\n\n    !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Attempting to move in an unsupported phase \" + state.phase) : invariant(false) : void 0;\n    var _action$payload4 = action.payload,\n        _id2 = _action$payload4.id,\n        isCombineEnabled = _action$payload4.isCombineEnabled;\n    var _target2 = state.dimensions.droppables[_id2];\n    !_target2 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find Droppable[id: \" + _id2 + \"] to toggle its isCombineEnabled state\") : invariant(false) : void 0;\n    !(_target2.isCombineEnabled !== isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Trying to set droppable isCombineEnabled to \" + String(isCombineEnabled) + \"\\n      but it is already \" + String(_target2.isCombineEnabled)) : invariant(false) : void 0;\n\n    var _updated = _extends({}, _target2, {\n      isCombineEnabled: isCombineEnabled\n    });\n\n    return postDroppableChange(state, _updated, true);\n  }\n\n  if (action.type === 'MOVE_BY_WINDOW_SCROLL') {\n    if (state.phase === 'DROP_PENDING' || state.phase === 'DROP_ANIMATING') {\n      return state;\n    }\n\n    !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot move by window in phase \" + state.phase) : invariant(false) : void 0;\n    !state.isWindowScrollAllowed ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Window scrolling is currently not supported for fixed lists') : invariant(false) : void 0;\n    var _newScroll = action.payload.newScroll;\n\n    if (isEqual(state.viewport.scroll.current, _newScroll)) {\n      return removeScrollJumpRequest(state);\n    }\n\n    var _viewport = scrollViewport(state.viewport, _newScroll);\n\n    if (isSnapping(state)) {\n      return refreshSnap({\n        state: state,\n        viewport: _viewport\n      });\n    }\n\n    return update({\n      state: state,\n      viewport: _viewport\n    });\n  }\n\n  if (action.type === 'UPDATE_VIEWPORT_MAX_SCROLL') {\n    if (!isMovementAllowed(state)) {\n      return state;\n    }\n\n    var maxScroll = action.payload.maxScroll;\n\n    if (isEqual(maxScroll, state.viewport.scroll.max)) {\n      return state;\n    }\n\n    var withMaxScroll = _extends({}, state.viewport, {\n      scroll: _extends({}, state.viewport.scroll, {\n        max: maxScroll\n      })\n    });\n\n    return _extends({\n      phase: 'DRAGGING'\n    }, state, {\n      viewport: withMaxScroll\n    });\n  }\n\n  if (action.type === 'MOVE_UP' || action.type === 'MOVE_DOWN' || action.type === 'MOVE_LEFT' || action.type === 'MOVE_RIGHT') {\n    if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n      return state;\n    }\n\n    !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" received while not in DRAGGING phase\") : invariant(false) : void 0;\n\n    var _result2 = moveInDirection({\n      state: state,\n      type: action.type\n    });\n\n    if (!_result2) {\n      return state;\n    }\n\n    return update({\n      state: state,\n      impact: _result2.impact,\n      clientSelection: _result2.clientSelection,\n      scrollJumpRequest: _result2.scrollJumpRequest\n    });\n  }\n\n  if (action.type === 'DROP_PENDING') {\n    var reason = action.payload.reason;\n    !(state.phase === 'COLLECTING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only move into the DROP_PENDING phase from the COLLECTING phase') : invariant(false) : void 0;\n\n    var newState = _extends({\n      phase: 'DROP_PENDING'\n    }, state, {\n      phase: 'DROP_PENDING',\n      isWaiting: true,\n      reason: reason\n    });\n\n    return newState;\n  }\n\n  if (action.type === 'DROP_ANIMATE') {\n    var _action$payload5 = action.payload,\n        completed = _action$payload5.completed,\n        dropDuration = _action$payload5.dropDuration,\n        newHomeClientOffset = _action$payload5.newHomeClientOffset;\n    !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot animate drop from phase \" + state.phase) : invariant(false) : void 0;\n    var _result3 = {\n      phase: 'DROP_ANIMATING',\n      completed: completed,\n      dropDuration: dropDuration,\n      newHomeClientOffset: newHomeClientOffset,\n      dimensions: state.dimensions\n    };\n    return _result3;\n  }\n\n  if (action.type === 'DROP_COMPLETE') {\n    var _completed = action.payload.completed;\n    return {\n      phase: 'IDLE',\n      completed: _completed,\n      shouldFlush: false\n    };\n  }\n\n  return state;\n});\n\nvar beforeInitialCapture = function beforeInitialCapture(args) {\n  return {\n    type: 'BEFORE_INITIAL_CAPTURE',\n    payload: args\n  };\n};\nvar lift = function lift(args) {\n  return {\n    type: 'LIFT',\n    payload: args\n  };\n};\nvar initialPublish = function initialPublish(args) {\n  return {\n    type: 'INITIAL_PUBLISH',\n    payload: args\n  };\n};\nvar publishWhileDragging = function publishWhileDragging(args) {\n  return {\n    type: 'PUBLISH_WHILE_DRAGGING',\n    payload: args\n  };\n};\nvar collectionStarting = function collectionStarting() {\n  return {\n    type: 'COLLECTION_STARTING',\n    payload: null\n  };\n};\nvar updateDroppableScroll = function updateDroppableScroll(args) {\n  return {\n    type: 'UPDATE_DROPPABLE_SCROLL',\n    payload: args\n  };\n};\nvar updateDroppableIsEnabled = function updateDroppableIsEnabled(args) {\n  return {\n    type: 'UPDATE_DROPPABLE_IS_ENABLED',\n    payload: args\n  };\n};\nvar updateDroppableIsCombineEnabled = function updateDroppableIsCombineEnabled(args) {\n  return {\n    type: 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED',\n    payload: args\n  };\n};\nvar move = function move(args) {\n  return {\n    type: 'MOVE',\n    payload: args\n  };\n};\nvar moveByWindowScroll = function moveByWindowScroll(args) {\n  return {\n    type: 'MOVE_BY_WINDOW_SCROLL',\n    payload: args\n  };\n};\nvar updateViewportMaxScroll = function updateViewportMaxScroll(args) {\n  return {\n    type: 'UPDATE_VIEWPORT_MAX_SCROLL',\n    payload: args\n  };\n};\nvar moveUp = function moveUp() {\n  return {\n    type: 'MOVE_UP',\n    payload: null\n  };\n};\nvar moveDown = function moveDown() {\n  return {\n    type: 'MOVE_DOWN',\n    payload: null\n  };\n};\nvar moveRight = function moveRight() {\n  return {\n    type: 'MOVE_RIGHT',\n    payload: null\n  };\n};\nvar moveLeft = function moveLeft() {\n  return {\n    type: 'MOVE_LEFT',\n    payload: null\n  };\n};\nvar flush = function flush() {\n  return {\n    type: 'FLUSH',\n    payload: null\n  };\n};\nvar animateDrop = function animateDrop(args) {\n  return {\n    type: 'DROP_ANIMATE',\n    payload: args\n  };\n};\nvar completeDrop = function completeDrop(args) {\n  return {\n    type: 'DROP_COMPLETE',\n    payload: args\n  };\n};\nvar drop = function drop(args) {\n  return {\n    type: 'DROP',\n    payload: args\n  };\n};\nvar dropPending = function dropPending(args) {\n  return {\n    type: 'DROP_PENDING',\n    payload: args\n  };\n};\nvar dropAnimationFinished = function dropAnimationFinished() {\n  return {\n    type: 'DROP_ANIMATION_FINISHED',\n    payload: null\n  };\n};\n\nfunction checkIndexes(insideDestination) {\n  if (insideDestination.length <= 1) {\n    return;\n  }\n\n  var indexes = insideDestination.map(function (d) {\n    return d.descriptor.index;\n  });\n  var errors = {};\n\n  for (var i = 1; i < indexes.length; i++) {\n    var current = indexes[i];\n    var previous = indexes[i - 1];\n\n    if (current !== previous + 1) {\n      errors[current] = true;\n    }\n  }\n\n  if (!Object.keys(errors).length) {\n    return;\n  }\n\n  var formatted = indexes.map(function (index) {\n    var hasError = Boolean(errors[index]);\n    return hasError ? \"[\\uD83D\\uDD25\" + index + \"]\" : \"\" + index;\n  }).join(', ');\n  process.env.NODE_ENV !== \"production\" ? warning(\"\\n    Detected non-consecutive <Draggable /> indexes.\\n\\n    (This can cause unexpected bugs)\\n\\n    \" + formatted + \"\\n  \") : void 0;\n}\n\nfunction validateDimensions(critical, dimensions) {\n  if (process.env.NODE_ENV !== 'production') {\n    var insideDestination = getDraggablesInsideDroppable(critical.droppable.id, dimensions.draggables);\n    checkIndexes(insideDestination);\n  }\n}\n\nvar lift$1 = (function (marshal) {\n  return function (_ref) {\n    var getState = _ref.getState,\n        dispatch = _ref.dispatch;\n    return function (next) {\n      return function (action) {\n        if (action.type !== 'LIFT') {\n          next(action);\n          return;\n        }\n\n        var _action$payload = action.payload,\n            id = _action$payload.id,\n            clientSelection = _action$payload.clientSelection,\n            movementMode = _action$payload.movementMode;\n        var initial = getState();\n\n        if (initial.phase === 'DROP_ANIMATING') {\n          dispatch(completeDrop({\n            completed: initial.completed\n          }));\n        }\n\n        !(getState().phase === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unexpected phase to start a drag') : invariant(false) : void 0;\n        dispatch(flush());\n        dispatch(beforeInitialCapture({\n          draggableId: id,\n          movementMode: movementMode\n        }));\n        var scrollOptions = {\n          shouldPublishImmediately: movementMode === 'SNAP'\n        };\n        var request = {\n          draggableId: id,\n          scrollOptions: scrollOptions\n        };\n\n        var _marshal$startPublish = marshal.startPublishing(request),\n            critical = _marshal$startPublish.critical,\n            dimensions = _marshal$startPublish.dimensions,\n            viewport = _marshal$startPublish.viewport;\n\n        validateDimensions(critical, dimensions);\n        dispatch(initialPublish({\n          critical: critical,\n          dimensions: dimensions,\n          clientSelection: clientSelection,\n          movementMode: movementMode,\n          viewport: viewport\n        }));\n      };\n    };\n  };\n});\n\nvar style = (function (marshal) {\n  return function () {\n    return function (next) {\n      return function (action) {\n        if (action.type === 'INITIAL_PUBLISH') {\n          marshal.dragging();\n        }\n\n        if (action.type === 'DROP_ANIMATE') {\n          marshal.dropping(action.payload.completed.result.reason);\n        }\n\n        if (action.type === 'FLUSH' || action.type === 'DROP_COMPLETE') {\n          marshal.resting();\n        }\n\n        next(action);\n      };\n    };\n  };\n});\n\nvar curves = {\n  outOfTheWay: 'cubic-bezier(0.2, 0, 0, 1)',\n  drop: 'cubic-bezier(.2,1,.1,1)'\n};\nvar combine = {\n  opacity: {\n    drop: 0,\n    combining: 0.7\n  },\n  scale: {\n    drop: 0.75\n  }\n};\nvar timings = {\n  outOfTheWay: 0.2,\n  minDropTime: 0.33,\n  maxDropTime: 0.55\n};\nvar outOfTheWayTiming = timings.outOfTheWay + \"s \" + curves.outOfTheWay;\nvar transitions = {\n  fluid: \"opacity \" + outOfTheWayTiming,\n  snap: \"transform \" + outOfTheWayTiming + \", opacity \" + outOfTheWayTiming,\n  drop: function drop(duration) {\n    var timing = duration + \"s \" + curves.drop;\n    return \"transform \" + timing + \", opacity \" + timing;\n  },\n  outOfTheWay: \"transform \" + outOfTheWayTiming,\n  placeholder: \"height \" + outOfTheWayTiming + \", width \" + outOfTheWayTiming + \", margin \" + outOfTheWayTiming\n};\n\nvar moveTo = function moveTo(offset) {\n  return isEqual(offset, origin) ? null : \"translate(\" + offset.x + \"px, \" + offset.y + \"px)\";\n};\n\nvar transforms = {\n  moveTo: moveTo,\n  drop: function drop(offset, isCombining) {\n    var translate = moveTo(offset);\n\n    if (!translate) {\n      return null;\n    }\n\n    if (!isCombining) {\n      return translate;\n    }\n\n    return translate + \" scale(\" + combine.scale.drop + \")\";\n  }\n};\n\nvar minDropTime = timings.minDropTime,\n    maxDropTime = timings.maxDropTime;\nvar dropTimeRange = maxDropTime - minDropTime;\nvar maxDropTimeAtDistance = 1500;\nvar cancelDropModifier = 0.6;\nvar getDropDuration = (function (_ref) {\n  var current = _ref.current,\n      destination = _ref.destination,\n      reason = _ref.reason;\n  var distance$1 = distance(current, destination);\n\n  if (distance$1 <= 0) {\n    return minDropTime;\n  }\n\n  if (distance$1 >= maxDropTimeAtDistance) {\n    return maxDropTime;\n  }\n\n  var percentage = distance$1 / maxDropTimeAtDistance;\n  var duration = minDropTime + dropTimeRange * percentage;\n  var withDuration = reason === 'CANCEL' ? duration * cancelDropModifier : duration;\n  return Number(withDuration.toFixed(2));\n});\n\nvar getNewHomeClientOffset = (function (_ref) {\n  var impact = _ref.impact,\n      draggable = _ref.draggable,\n      dimensions = _ref.dimensions,\n      viewport = _ref.viewport,\n      afterCritical = _ref.afterCritical;\n  var draggables = dimensions.draggables,\n      droppables = dimensions.droppables;\n  var droppableId = whatIsDraggedOver(impact);\n  var destination = droppableId ? droppables[droppableId] : null;\n  var home = droppables[draggable.descriptor.droppableId];\n  var newClientCenter = getClientBorderBoxCenter({\n    impact: impact,\n    draggable: draggable,\n    draggables: draggables,\n    afterCritical: afterCritical,\n    droppable: destination || home,\n    viewport: viewport\n  });\n  var offset = subtract(newClientCenter, draggable.client.borderBox.center);\n  return offset;\n});\n\nvar getDropImpact = (function (_ref) {\n  var draggables = _ref.draggables,\n      reason = _ref.reason,\n      lastImpact = _ref.lastImpact,\n      home = _ref.home,\n      viewport = _ref.viewport,\n      onLiftImpact = _ref.onLiftImpact;\n\n  if (!lastImpact.at || reason !== 'DROP') {\n    var recomputedHomeImpact = recompute({\n      draggables: draggables,\n      impact: onLiftImpact,\n      destination: home,\n      viewport: viewport,\n      forceShouldAnimate: true\n    });\n    return {\n      impact: recomputedHomeImpact,\n      didDropInsideDroppable: false\n    };\n  }\n\n  if (lastImpact.at.type === 'REORDER') {\n    return {\n      impact: lastImpact,\n      didDropInsideDroppable: true\n    };\n  }\n\n  var withoutMovement = _extends({}, lastImpact, {\n    displaced: emptyGroups\n  });\n\n  return {\n    impact: withoutMovement,\n    didDropInsideDroppable: true\n  };\n});\n\nvar drop$1 = (function (_ref) {\n  var getState = _ref.getState,\n      dispatch = _ref.dispatch;\n  return function (next) {\n    return function (action) {\n      if (action.type !== 'DROP') {\n        next(action);\n        return;\n      }\n\n      var state = getState();\n      var reason = action.payload.reason;\n\n      if (state.phase === 'COLLECTING') {\n        dispatch(dropPending({\n          reason: reason\n        }));\n        return;\n      }\n\n      if (state.phase === 'IDLE') {\n        return;\n      }\n\n      var isWaitingForDrop = state.phase === 'DROP_PENDING' && state.isWaiting;\n      !!isWaitingForDrop ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A DROP action occurred while DROP_PENDING and still waiting') : invariant(false) : void 0;\n      !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot drop in phase: \" + state.phase) : invariant(false) : void 0;\n      var critical = state.critical;\n      var dimensions = state.dimensions;\n      var draggable = dimensions.draggables[state.critical.draggable.id];\n\n      var _getDropImpact = getDropImpact({\n        reason: reason,\n        lastImpact: state.impact,\n        afterCritical: state.afterCritical,\n        onLiftImpact: state.onLiftImpact,\n        home: state.dimensions.droppables[state.critical.droppable.id],\n        viewport: state.viewport,\n        draggables: state.dimensions.draggables\n      }),\n          impact = _getDropImpact.impact,\n          didDropInsideDroppable = _getDropImpact.didDropInsideDroppable;\n\n      var destination = didDropInsideDroppable ? tryGetDestination(impact) : null;\n      var combine = didDropInsideDroppable ? tryGetCombine(impact) : null;\n      var source = {\n        index: critical.draggable.index,\n        droppableId: critical.droppable.id\n      };\n      var result = {\n        draggableId: draggable.descriptor.id,\n        type: draggable.descriptor.type,\n        source: source,\n        reason: reason,\n        mode: state.movementMode,\n        destination: destination,\n        combine: combine\n      };\n      var newHomeClientOffset = getNewHomeClientOffset({\n        impact: impact,\n        draggable: draggable,\n        dimensions: dimensions,\n        viewport: state.viewport,\n        afterCritical: state.afterCritical\n      });\n      var completed = {\n        critical: state.critical,\n        afterCritical: state.afterCritical,\n        result: result,\n        impact: impact\n      };\n      var isAnimationRequired = !isEqual(state.current.client.offset, newHomeClientOffset) || Boolean(result.combine);\n\n      if (!isAnimationRequired) {\n        dispatch(completeDrop({\n          completed: completed\n        }));\n        return;\n      }\n\n      var dropDuration = getDropDuration({\n        current: state.current.client.offset,\n        destination: newHomeClientOffset,\n        reason: reason\n      });\n      var args = {\n        newHomeClientOffset: newHomeClientOffset,\n        dropDuration: dropDuration,\n        completed: completed\n      };\n      dispatch(animateDrop(args));\n    };\n  };\n});\n\nvar getWindowScroll = (function () {\n  return {\n    x: window.pageXOffset,\n    y: window.pageYOffset\n  };\n});\n\nfunction getWindowScrollBinding(update) {\n  return {\n    eventName: 'scroll',\n    options: {\n      passive: true,\n      capture: false\n    },\n    fn: function fn(event) {\n      if (event.target !== window && event.target !== window.document) {\n        return;\n      }\n\n      update();\n    }\n  };\n}\n\nfunction getScrollListener(_ref) {\n  var onWindowScroll = _ref.onWindowScroll;\n\n  function updateScroll() {\n    onWindowScroll(getWindowScroll());\n  }\n\n  var scheduled = rafSchd(updateScroll);\n  var binding = getWindowScrollBinding(scheduled);\n  var unbind = noop;\n\n  function isActive() {\n    return unbind !== noop;\n  }\n\n  function start() {\n    !!isActive() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start scroll listener when already active') : invariant(false) : void 0;\n    unbind = bindEvents(window, [binding]);\n  }\n\n  function stop() {\n    !isActive() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop scroll listener when not active') : invariant(false) : void 0;\n    scheduled.cancel();\n    unbind();\n    unbind = noop;\n  }\n\n  return {\n    start: start,\n    stop: stop,\n    isActive: isActive\n  };\n}\n\nvar shouldEnd = function shouldEnd(action) {\n  return action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATE' || action.type === 'FLUSH';\n};\n\nvar scrollListener = (function (store) {\n  var listener = getScrollListener({\n    onWindowScroll: function onWindowScroll(newScroll) {\n      store.dispatch(moveByWindowScroll({\n        newScroll: newScroll\n      }));\n    }\n  });\n  return function (next) {\n    return function (action) {\n      if (!listener.isActive() && action.type === 'INITIAL_PUBLISH') {\n        listener.start();\n      }\n\n      if (listener.isActive() && shouldEnd(action)) {\n        listener.stop();\n      }\n\n      next(action);\n    };\n  };\n});\n\nvar getExpiringAnnounce = (function (announce) {\n  var wasCalled = false;\n  var isExpired = false;\n  var timeoutId = setTimeout(function () {\n    isExpired = true;\n  });\n\n  var result = function result(message) {\n    if (wasCalled) {\n      process.env.NODE_ENV !== \"production\" ? warning('Announcement already made. Not making a second announcement') : void 0;\n      return;\n    }\n\n    if (isExpired) {\n      process.env.NODE_ENV !== \"production\" ? warning(\"\\n        Announcements cannot be made asynchronously.\\n        Default message has already been announced.\\n      \") : void 0;\n      return;\n    }\n\n    wasCalled = true;\n    announce(message);\n    clearTimeout(timeoutId);\n  };\n\n  result.wasCalled = function () {\n    return wasCalled;\n  };\n\n  return result;\n});\n\nvar getAsyncMarshal = (function () {\n  var entries = [];\n\n  var execute = function execute(timerId) {\n    var index = findIndex(entries, function (item) {\n      return item.timerId === timerId;\n    });\n    !(index !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find timer') : invariant(false) : void 0;\n\n    var _entries$splice = entries.splice(index, 1),\n        entry = _entries$splice[0];\n\n    entry.callback();\n  };\n\n  var add = function add(fn) {\n    var timerId = setTimeout(function () {\n      return execute(timerId);\n    });\n    var entry = {\n      timerId: timerId,\n      callback: fn\n    };\n    entries.push(entry);\n  };\n\n  var flush = function flush() {\n    if (!entries.length) {\n      return;\n    }\n\n    var shallow = [].concat(entries);\n    entries.length = 0;\n    shallow.forEach(function (entry) {\n      clearTimeout(entry.timerId);\n      entry.callback();\n    });\n  };\n\n  return {\n    add: add,\n    flush: flush\n  };\n});\n\nvar areLocationsEqual = function areLocationsEqual(first, second) {\n  if (first == null && second == null) {\n    return true;\n  }\n\n  if (first == null || second == null) {\n    return false;\n  }\n\n  return first.droppableId === second.droppableId && first.index === second.index;\n};\nvar isCombineEqual = function isCombineEqual(first, second) {\n  if (first == null && second == null) {\n    return true;\n  }\n\n  if (first == null || second == null) {\n    return false;\n  }\n\n  return first.draggableId === second.draggableId && first.droppableId === second.droppableId;\n};\nvar isCriticalEqual = function isCriticalEqual(first, second) {\n  if (first === second) {\n    return true;\n  }\n\n  var isDraggableEqual = first.draggable.id === second.draggable.id && first.draggable.droppableId === second.draggable.droppableId && first.draggable.type === second.draggable.type && first.draggable.index === second.draggable.index;\n  var isDroppableEqual = first.droppable.id === second.droppable.id && first.droppable.type === second.droppable.type;\n  return isDraggableEqual && isDroppableEqual;\n};\n\nvar withTimings = function withTimings(key, fn) {\n  start();\n  fn();\n  finish();\n};\n\nvar getDragStart = function getDragStart(critical, mode) {\n  return {\n    draggableId: critical.draggable.id,\n    type: critical.droppable.type,\n    source: {\n      droppableId: critical.droppable.id,\n      index: critical.draggable.index\n    },\n    mode: mode\n  };\n};\n\nvar execute = function execute(responder, data, announce, getDefaultMessage) {\n  if (!responder) {\n    announce(getDefaultMessage(data));\n    return;\n  }\n\n  var willExpire = getExpiringAnnounce(announce);\n  var provided = {\n    announce: willExpire\n  };\n  responder(data, provided);\n\n  if (!willExpire.wasCalled()) {\n    announce(getDefaultMessage(data));\n  }\n};\n\nvar getPublisher = (function (getResponders, announce) {\n  var asyncMarshal = getAsyncMarshal();\n  var dragging = null;\n\n  var beforeCapture = function beforeCapture(draggableId, mode) {\n    !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeCapture as a drag start has already been published') : invariant(false) : void 0;\n    withTimings('onBeforeCapture', function () {\n      var fn = getResponders().onBeforeCapture;\n\n      if (fn) {\n        var before = {\n          draggableId: draggableId,\n          mode: mode\n        };\n        fn(before);\n      }\n    });\n  };\n\n  var beforeStart = function beforeStart(critical, mode) {\n    !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : invariant(false) : void 0;\n    withTimings('onBeforeDragStart', function () {\n      var fn = getResponders().onBeforeDragStart;\n\n      if (fn) {\n        fn(getDragStart(critical, mode));\n      }\n    });\n  };\n\n  var start = function start(critical, mode) {\n    !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : invariant(false) : void 0;\n    var data = getDragStart(critical, mode);\n    dragging = {\n      mode: mode,\n      lastCritical: critical,\n      lastLocation: data.source,\n      lastCombine: null\n    };\n    asyncMarshal.add(function () {\n      withTimings('onDragStart', function () {\n        return execute(getResponders().onDragStart, data, announce, preset.onDragStart);\n      });\n    });\n  };\n\n  var update = function update(critical, impact) {\n    var location = tryGetDestination(impact);\n    var combine = tryGetCombine(impact);\n    !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onDragMove when onDragStart has not been called') : invariant(false) : void 0;\n    var hasCriticalChanged = !isCriticalEqual(critical, dragging.lastCritical);\n\n    if (hasCriticalChanged) {\n      dragging.lastCritical = critical;\n    }\n\n    var hasLocationChanged = !areLocationsEqual(dragging.lastLocation, location);\n\n    if (hasLocationChanged) {\n      dragging.lastLocation = location;\n    }\n\n    var hasGroupingChanged = !isCombineEqual(dragging.lastCombine, combine);\n\n    if (hasGroupingChanged) {\n      dragging.lastCombine = combine;\n    }\n\n    if (!hasCriticalChanged && !hasLocationChanged && !hasGroupingChanged) {\n      return;\n    }\n\n    var data = _extends({}, getDragStart(critical, dragging.mode), {\n      combine: combine,\n      destination: location\n    });\n\n    asyncMarshal.add(function () {\n      withTimings('onDragUpdate', function () {\n        return execute(getResponders().onDragUpdate, data, announce, preset.onDragUpdate);\n      });\n    });\n  };\n\n  var flush = function flush() {\n    !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only flush responders while dragging') : invariant(false) : void 0;\n    asyncMarshal.flush();\n  };\n\n  var drop = function drop(result) {\n    !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onDragEnd when there is no matching onDragStart') : invariant(false) : void 0;\n    dragging = null;\n    withTimings('onDragEnd', function () {\n      return execute(getResponders().onDragEnd, result, announce, preset.onDragEnd);\n    });\n  };\n\n  var abort = function abort() {\n    if (!dragging) {\n      return;\n    }\n\n    var result = _extends({}, getDragStart(dragging.lastCritical, dragging.mode), {\n      combine: null,\n      destination: null,\n      reason: 'CANCEL'\n    });\n\n    drop(result);\n  };\n\n  return {\n    beforeCapture: beforeCapture,\n    beforeStart: beforeStart,\n    start: start,\n    update: update,\n    flush: flush,\n    drop: drop,\n    abort: abort\n  };\n});\n\nvar responders = (function (getResponders, announce) {\n  var publisher = getPublisher(getResponders, announce);\n  return function (store) {\n    return function (next) {\n      return function (action) {\n        if (action.type === 'BEFORE_INITIAL_CAPTURE') {\n          publisher.beforeCapture(action.payload.draggableId, action.payload.movementMode);\n          return;\n        }\n\n        if (action.type === 'INITIAL_PUBLISH') {\n          var critical = action.payload.critical;\n          publisher.beforeStart(critical, action.payload.movementMode);\n          next(action);\n          publisher.start(critical, action.payload.movementMode);\n          return;\n        }\n\n        if (action.type === 'DROP_COMPLETE') {\n          var result = action.payload.completed.result;\n          publisher.flush();\n          next(action);\n          publisher.drop(result);\n          return;\n        }\n\n        next(action);\n\n        if (action.type === 'FLUSH') {\n          publisher.abort();\n          return;\n        }\n\n        var state = store.getState();\n\n        if (state.phase === 'DRAGGING') {\n          publisher.update(state.critical, state.impact);\n        }\n      };\n    };\n  };\n});\n\nvar dropAnimationFinish = (function (store) {\n  return function (next) {\n    return function (action) {\n      if (action.type !== 'DROP_ANIMATION_FINISHED') {\n        next(action);\n        return;\n      }\n\n      var state = store.getState();\n      !(state.phase === 'DROP_ANIMATING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot finish a drop animating when no drop is occurring') : invariant(false) : void 0;\n      store.dispatch(completeDrop({\n        completed: state.completed\n      }));\n    };\n  };\n});\n\nvar dropAnimationFlushOnScroll = (function (store) {\n  var unbind = null;\n  var frameId = null;\n\n  function clear() {\n    if (frameId) {\n      cancelAnimationFrame(frameId);\n      frameId = null;\n    }\n\n    if (unbind) {\n      unbind();\n      unbind = null;\n    }\n  }\n\n  return function (next) {\n    return function (action) {\n      if (action.type === 'FLUSH' || action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATION_FINISHED') {\n        clear();\n      }\n\n      next(action);\n\n      if (action.type !== 'DROP_ANIMATE') {\n        return;\n      }\n\n      var binding = {\n        eventName: 'scroll',\n        options: {\n          capture: true,\n          passive: false,\n          once: true\n        },\n        fn: function flushDropAnimation() {\n          var state = store.getState();\n\n          if (state.phase === 'DROP_ANIMATING') {\n            store.dispatch(dropAnimationFinished());\n          }\n        }\n      };\n      frameId = requestAnimationFrame(function () {\n        frameId = null;\n        unbind = bindEvents(window, [binding]);\n      });\n    };\n  };\n});\n\nvar dimensionMarshalStopper = (function (marshal) {\n  return function () {\n    return function (next) {\n      return function (action) {\n        if (action.type === 'DROP_COMPLETE' || action.type === 'FLUSH' || action.type === 'DROP_ANIMATE') {\n          marshal.stopPublishing();\n        }\n\n        next(action);\n      };\n    };\n  };\n});\n\nvar focus = (function (marshal) {\n  var isWatching = false;\n  return function () {\n    return function (next) {\n      return function (action) {\n        if (action.type === 'INITIAL_PUBLISH') {\n          isWatching = true;\n          marshal.tryRecordFocus(action.payload.critical.draggable.id);\n          next(action);\n          marshal.tryRestoreFocusRecorded();\n          return;\n        }\n\n        next(action);\n\n        if (!isWatching) {\n          return;\n        }\n\n        if (action.type === 'FLUSH') {\n          isWatching = false;\n          marshal.tryRestoreFocusRecorded();\n          return;\n        }\n\n        if (action.type === 'DROP_COMPLETE') {\n          isWatching = false;\n          var result = action.payload.completed.result;\n\n          if (result.combine) {\n            marshal.tryShiftRecord(result.draggableId, result.combine.draggableId);\n          }\n\n          marshal.tryRestoreFocusRecorded();\n        }\n      };\n    };\n  };\n});\n\nvar shouldStop = function shouldStop(action) {\n  return action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATE' || action.type === 'FLUSH';\n};\n\nvar autoScroll = (function (autoScroller) {\n  return function (store) {\n    return function (next) {\n      return function (action) {\n        if (shouldStop(action)) {\n          autoScroller.stop();\n          next(action);\n          return;\n        }\n\n        if (action.type === 'INITIAL_PUBLISH') {\n          next(action);\n          var state = store.getState();\n          !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected phase to be DRAGGING after INITIAL_PUBLISH') : invariant(false) : void 0;\n          autoScroller.start(state);\n          return;\n        }\n\n        next(action);\n        autoScroller.scroll(store.getState());\n      };\n    };\n  };\n});\n\nvar pendingDrop = (function (store) {\n  return function (next) {\n    return function (action) {\n      next(action);\n\n      if (action.type !== 'PUBLISH_WHILE_DRAGGING') {\n        return;\n      }\n\n      var postActionState = store.getState();\n\n      if (postActionState.phase !== 'DROP_PENDING') {\n        return;\n      }\n\n      if (postActionState.isWaiting) {\n        return;\n      }\n\n      store.dispatch(drop({\n        reason: postActionState.reason\n      }));\n    };\n  };\n});\n\nvar composeEnhancers = process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n  name: 'react-beautiful-dnd'\n}) : compose;\nvar createStore = (function (_ref) {\n  var dimensionMarshal = _ref.dimensionMarshal,\n      focusMarshal = _ref.focusMarshal,\n      styleMarshal = _ref.styleMarshal,\n      getResponders = _ref.getResponders,\n      announce = _ref.announce,\n      autoScroller = _ref.autoScroller;\n  return createStore$1(reducer, composeEnhancers(applyMiddleware(style(styleMarshal), dimensionMarshalStopper(dimensionMarshal), lift$1(dimensionMarshal), drop$1, dropAnimationFinish, dropAnimationFlushOnScroll, pendingDrop, autoScroll(autoScroller), scrollListener, focus(focusMarshal), responders(getResponders, announce))));\n});\n\nvar clean$1 = function clean() {\n  return {\n    additions: {},\n    removals: {},\n    modified: {}\n  };\n};\nfunction createPublisher(_ref) {\n  var registry = _ref.registry,\n      callbacks = _ref.callbacks;\n  var staging = clean$1();\n  var frameId = null;\n\n  var collect = function collect() {\n    if (frameId) {\n      return;\n    }\n\n    callbacks.collectionStarting();\n    frameId = requestAnimationFrame(function () {\n      frameId = null;\n      start();\n      var _staging = staging,\n          additions = _staging.additions,\n          removals = _staging.removals,\n          modified = _staging.modified;\n      var added = Object.keys(additions).map(function (id) {\n        return registry.draggable.getById(id).getDimension(origin);\n      }).sort(function (a, b) {\n        return a.descriptor.index - b.descriptor.index;\n      });\n      var updated = Object.keys(modified).map(function (id) {\n        var entry = registry.droppable.getById(id);\n        var scroll = entry.callbacks.getScrollWhileDragging();\n        return {\n          droppableId: id,\n          scroll: scroll\n        };\n      });\n      var result = {\n        additions: added,\n        removals: Object.keys(removals),\n        modified: updated\n      };\n      staging = clean$1();\n      finish();\n      callbacks.publish(result);\n    });\n  };\n\n  var add = function add(entry) {\n    var id = entry.descriptor.id;\n    staging.additions[id] = entry;\n    staging.modified[entry.descriptor.droppableId] = true;\n\n    if (staging.removals[id]) {\n      delete staging.removals[id];\n    }\n\n    collect();\n  };\n\n  var remove = function remove(entry) {\n    var descriptor = entry.descriptor;\n    staging.removals[descriptor.id] = true;\n    staging.modified[descriptor.droppableId] = true;\n\n    if (staging.additions[descriptor.id]) {\n      delete staging.additions[descriptor.id];\n    }\n\n    collect();\n  };\n\n  var stop = function stop() {\n    if (!frameId) {\n      return;\n    }\n\n    cancelAnimationFrame(frameId);\n    frameId = null;\n    staging = clean$1();\n  };\n\n  return {\n    add: add,\n    remove: remove,\n    stop: stop\n  };\n}\n\nvar getMaxScroll = (function (_ref) {\n  var scrollHeight = _ref.scrollHeight,\n      scrollWidth = _ref.scrollWidth,\n      height = _ref.height,\n      width = _ref.width;\n  var maxScroll = subtract({\n    x: scrollWidth,\n    y: scrollHeight\n  }, {\n    x: width,\n    y: height\n  });\n  var adjustedMaxScroll = {\n    x: Math.max(0, maxScroll.x),\n    y: Math.max(0, maxScroll.y)\n  };\n  return adjustedMaxScroll;\n});\n\nvar getDocumentElement = (function () {\n  var doc = document.documentElement;\n  !doc ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find document.documentElement') : invariant(false) : void 0;\n  return doc;\n});\n\nvar getMaxWindowScroll = (function () {\n  var doc = getDocumentElement();\n  var maxScroll = getMaxScroll({\n    scrollHeight: doc.scrollHeight,\n    scrollWidth: doc.scrollWidth,\n    width: doc.clientWidth,\n    height: doc.clientHeight\n  });\n  return maxScroll;\n});\n\nvar getViewport = (function () {\n  var scroll = getWindowScroll();\n  var maxScroll = getMaxWindowScroll();\n  var top = scroll.y;\n  var left = scroll.x;\n  var doc = getDocumentElement();\n  var width = doc.clientWidth;\n  var height = doc.clientHeight;\n  var right = left + width;\n  var bottom = top + height;\n  var frame = getRect({\n    top: top,\n    left: left,\n    right: right,\n    bottom: bottom\n  });\n  var viewport = {\n    frame: frame,\n    scroll: {\n      initial: scroll,\n      current: scroll,\n      max: maxScroll,\n      diff: {\n        value: origin,\n        displacement: origin\n      }\n    }\n  };\n  return viewport;\n});\n\nvar getInitialPublish = (function (_ref) {\n  var critical = _ref.critical,\n      scrollOptions = _ref.scrollOptions,\n      registry = _ref.registry;\n  start();\n  var viewport = getViewport();\n  var windowScroll = viewport.scroll.current;\n  var home = critical.droppable;\n  var droppables = registry.droppable.getAllByType(home.type).map(function (entry) {\n    return entry.callbacks.getDimensionAndWatchScroll(windowScroll, scrollOptions);\n  });\n  var draggables = registry.draggable.getAllByType(critical.draggable.type).map(function (entry) {\n    return entry.getDimension(windowScroll);\n  });\n  var dimensions = {\n    draggables: toDraggableMap(draggables),\n    droppables: toDroppableMap(droppables)\n  };\n  finish();\n  var result = {\n    dimensions: dimensions,\n    critical: critical,\n    viewport: viewport\n  };\n  return result;\n});\n\nfunction shouldPublishUpdate(registry, dragging, entry) {\n  if (entry.descriptor.id === dragging.id) {\n    return false;\n  }\n\n  if (entry.descriptor.type !== dragging.type) {\n    return false;\n  }\n\n  var home = registry.droppable.getById(entry.descriptor.droppableId);\n\n  if (home.descriptor.mode !== 'virtual') {\n    process.env.NODE_ENV !== \"production\" ? warning(\"\\n      You are attempting to add or remove a Draggable [id: \" + entry.descriptor.id + \"]\\n      while a drag is occurring. This is only supported for virtual lists.\\n\\n      See https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/patterns/virtual-lists.md\\n    \") : void 0;\n    return false;\n  }\n\n  return true;\n}\n\nvar createDimensionMarshal = (function (registry, callbacks) {\n  var collection = null;\n  var publisher = createPublisher({\n    callbacks: {\n      publish: callbacks.publishWhileDragging,\n      collectionStarting: callbacks.collectionStarting\n    },\n    registry: registry\n  });\n\n  var updateDroppableIsEnabled = function updateDroppableIsEnabled(id, isEnabled) {\n    !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update is enabled flag of Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n\n    if (!collection) {\n      return;\n    }\n\n    callbacks.updateDroppableIsEnabled({\n      id: id,\n      isEnabled: isEnabled\n    });\n  };\n\n  var updateDroppableIsCombineEnabled = function updateDroppableIsCombineEnabled(id, isCombineEnabled) {\n    if (!collection) {\n      return;\n    }\n\n    !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update isCombineEnabled flag of Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n    callbacks.updateDroppableIsCombineEnabled({\n      id: id,\n      isCombineEnabled: isCombineEnabled\n    });\n  };\n\n  var updateDroppableScroll = function updateDroppableScroll(id, newScroll) {\n    if (!collection) {\n      return;\n    }\n\n    !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update the scroll on Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n    callbacks.updateDroppableScroll({\n      id: id,\n      newScroll: newScroll\n    });\n  };\n\n  var scrollDroppable = function scrollDroppable(id, change) {\n    if (!collection) {\n      return;\n    }\n\n    registry.droppable.getById(id).callbacks.scroll(change);\n  };\n\n  var stopPublishing = function stopPublishing() {\n    if (!collection) {\n      return;\n    }\n\n    publisher.stop();\n    var home = collection.critical.droppable;\n    registry.droppable.getAllByType(home.type).forEach(function (entry) {\n      return entry.callbacks.dragStopped();\n    });\n    collection.unsubscribe();\n    collection = null;\n  };\n\n  var subscriber = function subscriber(event) {\n    !collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should only be subscribed when a collection is occurring') : invariant(false) : void 0;\n    var dragging = collection.critical.draggable;\n\n    if (event.type === 'ADDITION') {\n      if (shouldPublishUpdate(registry, dragging, event.value)) {\n        publisher.add(event.value);\n      }\n    }\n\n    if (event.type === 'REMOVAL') {\n      if (shouldPublishUpdate(registry, dragging, event.value)) {\n        publisher.remove(event.value);\n      }\n    }\n  };\n\n  var startPublishing = function startPublishing(request) {\n    !!collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start capturing critical dimensions as there is already a collection') : invariant(false) : void 0;\n    var entry = registry.draggable.getById(request.draggableId);\n    var home = registry.droppable.getById(entry.descriptor.droppableId);\n    var critical = {\n      draggable: entry.descriptor,\n      droppable: home.descriptor\n    };\n    var unsubscribe = registry.subscribe(subscriber);\n    collection = {\n      critical: critical,\n      unsubscribe: unsubscribe\n    };\n    return getInitialPublish({\n      critical: critical,\n      registry: registry,\n      scrollOptions: request.scrollOptions\n    });\n  };\n\n  var marshal = {\n    updateDroppableIsEnabled: updateDroppableIsEnabled,\n    updateDroppableIsCombineEnabled: updateDroppableIsCombineEnabled,\n    scrollDroppable: scrollDroppable,\n    updateDroppableScroll: updateDroppableScroll,\n    startPublishing: startPublishing,\n    stopPublishing: stopPublishing\n  };\n  return marshal;\n});\n\nvar canStartDrag = (function (state, id) {\n  if (state.phase === 'IDLE') {\n    return true;\n  }\n\n  if (state.phase !== 'DROP_ANIMATING') {\n    return false;\n  }\n\n  if (state.completed.result.draggableId === id) {\n    return false;\n  }\n\n  return state.completed.result.reason === 'DROP';\n});\n\nvar scrollWindow = (function (change) {\n  window.scrollBy(change.x, change.y);\n});\n\nvar getScrollableDroppables = memoizeOne(function (droppables) {\n  return toDroppableList(droppables).filter(function (droppable) {\n    if (!droppable.isEnabled) {\n      return false;\n    }\n\n    if (!droppable.frame) {\n      return false;\n    }\n\n    return true;\n  });\n});\n\nvar getScrollableDroppableOver = function getScrollableDroppableOver(target, droppables) {\n  var maybe = find(getScrollableDroppables(droppables), function (droppable) {\n    !droppable.frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid result') : invariant(false) : void 0;\n    return isPositionInFrame(droppable.frame.pageMarginBox)(target);\n  });\n  return maybe;\n};\n\nvar getBestScrollableDroppable = (function (_ref) {\n  var center = _ref.center,\n      destination = _ref.destination,\n      droppables = _ref.droppables;\n\n  if (destination) {\n    var _dimension = droppables[destination];\n\n    if (!_dimension.frame) {\n      return null;\n    }\n\n    return _dimension;\n  }\n\n  var dimension = getScrollableDroppableOver(center, droppables);\n  return dimension;\n});\n\nvar config = {\n  startFromPercentage: 0.25,\n  maxScrollAtPercentage: 0.05,\n  maxPixelScroll: 28,\n  ease: function ease(percentage) {\n    return Math.pow(percentage, 2);\n  },\n  durationDampening: {\n    stopDampeningAt: 1200,\n    accelerateAt: 360\n  }\n};\n\nvar getDistanceThresholds = (function (container, axis) {\n  var startScrollingFrom = container[axis.size] * config.startFromPercentage;\n  var maxScrollValueAt = container[axis.size] * config.maxScrollAtPercentage;\n  var thresholds = {\n    startScrollingFrom: startScrollingFrom,\n    maxScrollValueAt: maxScrollValueAt\n  };\n  return thresholds;\n});\n\nvar getPercentage = (function (_ref) {\n  var startOfRange = _ref.startOfRange,\n      endOfRange = _ref.endOfRange,\n      current = _ref.current;\n  var range = endOfRange - startOfRange;\n\n  if (range === 0) {\n    process.env.NODE_ENV !== \"production\" ? warning(\"\\n      Detected distance range of 0 in the fluid auto scroller\\n      This is unexpected and would cause a divide by 0 issue.\\n      Not allowing an auto scroll\\n    \") : void 0;\n    return 0;\n  }\n\n  var currentInRange = current - startOfRange;\n  var percentage = currentInRange / range;\n  return percentage;\n});\n\nvar minScroll = 1;\n\nvar getValueFromDistance = (function (distanceToEdge, thresholds) {\n  if (distanceToEdge > thresholds.startScrollingFrom) {\n    return 0;\n  }\n\n  if (distanceToEdge <= thresholds.maxScrollValueAt) {\n    return config.maxPixelScroll;\n  }\n\n  if (distanceToEdge === thresholds.startScrollingFrom) {\n    return minScroll;\n  }\n\n  var percentageFromMaxScrollValueAt = getPercentage({\n    startOfRange: thresholds.maxScrollValueAt,\n    endOfRange: thresholds.startScrollingFrom,\n    current: distanceToEdge\n  });\n  var percentageFromStartScrollingFrom = 1 - percentageFromMaxScrollValueAt;\n  var scroll = config.maxPixelScroll * config.ease(percentageFromStartScrollingFrom);\n  return Math.ceil(scroll);\n});\n\nvar accelerateAt = config.durationDampening.accelerateAt;\nvar stopAt = config.durationDampening.stopDampeningAt;\nvar dampenValueByTime = (function (proposedScroll, dragStartTime) {\n  var startOfRange = dragStartTime;\n  var endOfRange = stopAt;\n  var now = Date.now();\n  var runTime = now - startOfRange;\n\n  if (runTime >= stopAt) {\n    return proposedScroll;\n  }\n\n  if (runTime < accelerateAt) {\n    return minScroll;\n  }\n\n  var betweenAccelerateAtAndStopAtPercentage = getPercentage({\n    startOfRange: accelerateAt,\n    endOfRange: endOfRange,\n    current: runTime\n  });\n  var scroll = proposedScroll * config.ease(betweenAccelerateAtAndStopAtPercentage);\n  return Math.ceil(scroll);\n});\n\nvar getValue = (function (_ref) {\n  var distanceToEdge = _ref.distanceToEdge,\n      thresholds = _ref.thresholds,\n      dragStartTime = _ref.dragStartTime,\n      shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n  var scroll = getValueFromDistance(distanceToEdge, thresholds);\n\n  if (scroll === 0) {\n    return 0;\n  }\n\n  if (!shouldUseTimeDampening) {\n    return scroll;\n  }\n\n  return Math.max(dampenValueByTime(scroll, dragStartTime), minScroll);\n});\n\nvar getScrollOnAxis = (function (_ref) {\n  var container = _ref.container,\n      distanceToEdges = _ref.distanceToEdges,\n      dragStartTime = _ref.dragStartTime,\n      axis = _ref.axis,\n      shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n  var thresholds = getDistanceThresholds(container, axis);\n  var isCloserToEnd = distanceToEdges[axis.end] < distanceToEdges[axis.start];\n\n  if (isCloserToEnd) {\n    return getValue({\n      distanceToEdge: distanceToEdges[axis.end],\n      thresholds: thresholds,\n      dragStartTime: dragStartTime,\n      shouldUseTimeDampening: shouldUseTimeDampening\n    });\n  }\n\n  return -1 * getValue({\n    distanceToEdge: distanceToEdges[axis.start],\n    thresholds: thresholds,\n    dragStartTime: dragStartTime,\n    shouldUseTimeDampening: shouldUseTimeDampening\n  });\n});\n\nvar adjustForSizeLimits = (function (_ref) {\n  var container = _ref.container,\n      subject = _ref.subject,\n      proposedScroll = _ref.proposedScroll;\n  var isTooBigVertically = subject.height > container.height;\n  var isTooBigHorizontally = subject.width > container.width;\n\n  if (!isTooBigHorizontally && !isTooBigVertically) {\n    return proposedScroll;\n  }\n\n  if (isTooBigHorizontally && isTooBigVertically) {\n    return null;\n  }\n\n  return {\n    x: isTooBigHorizontally ? 0 : proposedScroll.x,\n    y: isTooBigVertically ? 0 : proposedScroll.y\n  };\n});\n\nvar clean$2 = apply(function (value) {\n  return value === 0 ? 0 : value;\n});\nvar getScroll = (function (_ref) {\n  var dragStartTime = _ref.dragStartTime,\n      container = _ref.container,\n      subject = _ref.subject,\n      center = _ref.center,\n      shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n  var distanceToEdges = {\n    top: center.y - container.top,\n    right: container.right - center.x,\n    bottom: container.bottom - center.y,\n    left: center.x - container.left\n  };\n  var y = getScrollOnAxis({\n    container: container,\n    distanceToEdges: distanceToEdges,\n    dragStartTime: dragStartTime,\n    axis: vertical,\n    shouldUseTimeDampening: shouldUseTimeDampening\n  });\n  var x = getScrollOnAxis({\n    container: container,\n    distanceToEdges: distanceToEdges,\n    dragStartTime: dragStartTime,\n    axis: horizontal,\n    shouldUseTimeDampening: shouldUseTimeDampening\n  });\n  var required = clean$2({\n    x: x,\n    y: y\n  });\n\n  if (isEqual(required, origin)) {\n    return null;\n  }\n\n  var limited = adjustForSizeLimits({\n    container: container,\n    subject: subject,\n    proposedScroll: required\n  });\n\n  if (!limited) {\n    return null;\n  }\n\n  return isEqual(limited, origin) ? null : limited;\n});\n\nvar smallestSigned = apply(function (value) {\n  if (value === 0) {\n    return 0;\n  }\n\n  return value > 0 ? 1 : -1;\n});\nvar getOverlap = function () {\n  var getRemainder = function getRemainder(target, max) {\n    if (target < 0) {\n      return target;\n    }\n\n    if (target > max) {\n      return target - max;\n    }\n\n    return 0;\n  };\n\n  return function (_ref) {\n    var current = _ref.current,\n        max = _ref.max,\n        change = _ref.change;\n    var targetScroll = add(current, change);\n    var overlap = {\n      x: getRemainder(targetScroll.x, max.x),\n      y: getRemainder(targetScroll.y, max.y)\n    };\n\n    if (isEqual(overlap, origin)) {\n      return null;\n    }\n\n    return overlap;\n  };\n}();\nvar canPartiallyScroll = function canPartiallyScroll(_ref2) {\n  var rawMax = _ref2.max,\n      current = _ref2.current,\n      change = _ref2.change;\n  var max = {\n    x: Math.max(current.x, rawMax.x),\n    y: Math.max(current.y, rawMax.y)\n  };\n  var smallestChange = smallestSigned(change);\n  var overlap = getOverlap({\n    max: max,\n    current: current,\n    change: smallestChange\n  });\n\n  if (!overlap) {\n    return true;\n  }\n\n  if (smallestChange.x !== 0 && overlap.x === 0) {\n    return true;\n  }\n\n  if (smallestChange.y !== 0 && overlap.y === 0) {\n    return true;\n  }\n\n  return false;\n};\nvar canScrollWindow = function canScrollWindow(viewport, change) {\n  return canPartiallyScroll({\n    current: viewport.scroll.current,\n    max: viewport.scroll.max,\n    change: change\n  });\n};\nvar getWindowOverlap = function getWindowOverlap(viewport, change) {\n  if (!canScrollWindow(viewport, change)) {\n    return null;\n  }\n\n  var max = viewport.scroll.max;\n  var current = viewport.scroll.current;\n  return getOverlap({\n    current: current,\n    max: max,\n    change: change\n  });\n};\nvar canScrollDroppable = function canScrollDroppable(droppable, change) {\n  var frame = droppable.frame;\n\n  if (!frame) {\n    return false;\n  }\n\n  return canPartiallyScroll({\n    current: frame.scroll.current,\n    max: frame.scroll.max,\n    change: change\n  });\n};\nvar getDroppableOverlap = function getDroppableOverlap(droppable, change) {\n  var frame = droppable.frame;\n\n  if (!frame) {\n    return null;\n  }\n\n  if (!canScrollDroppable(droppable, change)) {\n    return null;\n  }\n\n  return getOverlap({\n    current: frame.scroll.current,\n    max: frame.scroll.max,\n    change: change\n  });\n};\n\nvar getWindowScrollChange = (function (_ref) {\n  var viewport = _ref.viewport,\n      subject = _ref.subject,\n      center = _ref.center,\n      dragStartTime = _ref.dragStartTime,\n      shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n  var scroll = getScroll({\n    dragStartTime: dragStartTime,\n    container: viewport.frame,\n    subject: subject,\n    center: center,\n    shouldUseTimeDampening: shouldUseTimeDampening\n  });\n  return scroll && canScrollWindow(viewport, scroll) ? scroll : null;\n});\n\nvar getDroppableScrollChange = (function (_ref) {\n  var droppable = _ref.droppable,\n      subject = _ref.subject,\n      center = _ref.center,\n      dragStartTime = _ref.dragStartTime,\n      shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n  var frame = droppable.frame;\n\n  if (!frame) {\n    return null;\n  }\n\n  var scroll = getScroll({\n    dragStartTime: dragStartTime,\n    container: frame.pageMarginBox,\n    subject: subject,\n    center: center,\n    shouldUseTimeDampening: shouldUseTimeDampening\n  });\n  return scroll && canScrollDroppable(droppable, scroll) ? scroll : null;\n});\n\nvar scroll$1 = (function (_ref) {\n  var state = _ref.state,\n      dragStartTime = _ref.dragStartTime,\n      shouldUseTimeDampening = _ref.shouldUseTimeDampening,\n      scrollWindow = _ref.scrollWindow,\n      scrollDroppable = _ref.scrollDroppable;\n  var center = state.current.page.borderBoxCenter;\n  var draggable = state.dimensions.draggables[state.critical.draggable.id];\n  var subject = draggable.page.marginBox;\n\n  if (state.isWindowScrollAllowed) {\n    var viewport = state.viewport;\n\n    var _change = getWindowScrollChange({\n      dragStartTime: dragStartTime,\n      viewport: viewport,\n      subject: subject,\n      center: center,\n      shouldUseTimeDampening: shouldUseTimeDampening\n    });\n\n    if (_change) {\n      scrollWindow(_change);\n      return;\n    }\n  }\n\n  var droppable = getBestScrollableDroppable({\n    center: center,\n    destination: whatIsDraggedOver(state.impact),\n    droppables: state.dimensions.droppables\n  });\n\n  if (!droppable) {\n    return;\n  }\n\n  var change = getDroppableScrollChange({\n    dragStartTime: dragStartTime,\n    droppable: droppable,\n    subject: subject,\n    center: center,\n    shouldUseTimeDampening: shouldUseTimeDampening\n  });\n\n  if (change) {\n    scrollDroppable(droppable.descriptor.id, change);\n  }\n});\n\nvar createFluidScroller = (function (_ref) {\n  var scrollWindow = _ref.scrollWindow,\n      scrollDroppable = _ref.scrollDroppable;\n  var scheduleWindowScroll = rafSchd(scrollWindow);\n  var scheduleDroppableScroll = rafSchd(scrollDroppable);\n  var dragging = null;\n\n  var tryScroll = function tryScroll(state) {\n    !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fluid scroll if not dragging') : invariant(false) : void 0;\n    var _dragging = dragging,\n        shouldUseTimeDampening = _dragging.shouldUseTimeDampening,\n        dragStartTime = _dragging.dragStartTime;\n    scroll$1({\n      state: state,\n      scrollWindow: scheduleWindowScroll,\n      scrollDroppable: scheduleDroppableScroll,\n      dragStartTime: dragStartTime,\n      shouldUseTimeDampening: shouldUseTimeDampening\n    });\n  };\n\n  var start$1 = function start$1(state) {\n    start();\n    !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start auto scrolling when already started') : invariant(false) : void 0;\n    var dragStartTime = Date.now();\n    var wasScrollNeeded = false;\n\n    var fakeScrollCallback = function fakeScrollCallback() {\n      wasScrollNeeded = true;\n    };\n\n    scroll$1({\n      state: state,\n      dragStartTime: 0,\n      shouldUseTimeDampening: false,\n      scrollWindow: fakeScrollCallback,\n      scrollDroppable: fakeScrollCallback\n    });\n    dragging = {\n      dragStartTime: dragStartTime,\n      shouldUseTimeDampening: wasScrollNeeded\n    };\n    finish();\n\n    if (wasScrollNeeded) {\n      tryScroll(state);\n    }\n  };\n\n  var stop = function stop() {\n    if (!dragging) {\n      return;\n    }\n\n    scheduleWindowScroll.cancel();\n    scheduleDroppableScroll.cancel();\n    dragging = null;\n  };\n\n  return {\n    start: start$1,\n    stop: stop,\n    scroll: tryScroll\n  };\n});\n\nvar createJumpScroller = (function (_ref) {\n  var move = _ref.move,\n      scrollDroppable = _ref.scrollDroppable,\n      scrollWindow = _ref.scrollWindow;\n\n  var moveByOffset = function moveByOffset(state, offset) {\n    var client = add(state.current.client.selection, offset);\n    move({\n      client: client\n    });\n  };\n\n  var scrollDroppableAsMuchAsItCan = function scrollDroppableAsMuchAsItCan(droppable, change) {\n    if (!canScrollDroppable(droppable, change)) {\n      return change;\n    }\n\n    var overlap = getDroppableOverlap(droppable, change);\n\n    if (!overlap) {\n      scrollDroppable(droppable.descriptor.id, change);\n      return null;\n    }\n\n    var whatTheDroppableCanScroll = subtract(change, overlap);\n    scrollDroppable(droppable.descriptor.id, whatTheDroppableCanScroll);\n    var remainder = subtract(change, whatTheDroppableCanScroll);\n    return remainder;\n  };\n\n  var scrollWindowAsMuchAsItCan = function scrollWindowAsMuchAsItCan(isWindowScrollAllowed, viewport, change) {\n    if (!isWindowScrollAllowed) {\n      return change;\n    }\n\n    if (!canScrollWindow(viewport, change)) {\n      return change;\n    }\n\n    var overlap = getWindowOverlap(viewport, change);\n\n    if (!overlap) {\n      scrollWindow(change);\n      return null;\n    }\n\n    var whatTheWindowCanScroll = subtract(change, overlap);\n    scrollWindow(whatTheWindowCanScroll);\n    var remainder = subtract(change, whatTheWindowCanScroll);\n    return remainder;\n  };\n\n  var jumpScroller = function jumpScroller(state) {\n    var request = state.scrollJumpRequest;\n\n    if (!request) {\n      return;\n    }\n\n    var destination = whatIsDraggedOver(state.impact);\n    !destination ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot perform a jump scroll when there is no destination') : invariant(false) : void 0;\n    var droppableRemainder = scrollDroppableAsMuchAsItCan(state.dimensions.droppables[destination], request);\n\n    if (!droppableRemainder) {\n      return;\n    }\n\n    var viewport = state.viewport;\n    var windowRemainder = scrollWindowAsMuchAsItCan(state.isWindowScrollAllowed, viewport, droppableRemainder);\n\n    if (!windowRemainder) {\n      return;\n    }\n\n    moveByOffset(state, windowRemainder);\n  };\n\n  return jumpScroller;\n});\n\nvar createAutoScroller = (function (_ref) {\n  var scrollDroppable = _ref.scrollDroppable,\n      scrollWindow = _ref.scrollWindow,\n      move = _ref.move;\n  var fluidScroller = createFluidScroller({\n    scrollWindow: scrollWindow,\n    scrollDroppable: scrollDroppable\n  });\n  var jumpScroll = createJumpScroller({\n    move: move,\n    scrollWindow: scrollWindow,\n    scrollDroppable: scrollDroppable\n  });\n\n  var scroll = function scroll(state) {\n    if (state.phase !== 'DRAGGING') {\n      return;\n    }\n\n    if (state.movementMode === 'FLUID') {\n      fluidScroller.scroll(state);\n      return;\n    }\n\n    if (!state.scrollJumpRequest) {\n      return;\n    }\n\n    jumpScroll(state);\n  };\n\n  var scroller = {\n    scroll: scroll,\n    start: fluidScroller.start,\n    stop: fluidScroller.stop\n  };\n  return scroller;\n});\n\nvar prefix$1 = 'data-rbd';\nvar dragHandle = function () {\n  var base = prefix$1 + \"-drag-handle\";\n  return {\n    base: base,\n    draggableId: base + \"-draggable-id\",\n    contextId: base + \"-context-id\"\n  };\n}();\nvar draggable = function () {\n  var base = prefix$1 + \"-draggable\";\n  return {\n    base: base,\n    contextId: base + \"-context-id\",\n    id: base + \"-id\"\n  };\n}();\nvar droppable = function () {\n  var base = prefix$1 + \"-droppable\";\n  return {\n    base: base,\n    contextId: base + \"-context-id\",\n    id: base + \"-id\"\n  };\n}();\nvar scrollContainer = {\n  contextId: prefix$1 + \"-scroll-container-context-id\"\n};\n\nvar makeGetSelector = function makeGetSelector(context) {\n  return function (attribute) {\n    return \"[\" + attribute + \"=\\\"\" + context + \"\\\"]\";\n  };\n};\n\nvar getStyles = function getStyles(rules, property) {\n  return rules.map(function (rule) {\n    var value = rule.styles[property];\n\n    if (!value) {\n      return '';\n    }\n\n    return rule.selector + \" { \" + value + \" }\";\n  }).join(' ');\n};\n\nvar noPointerEvents = 'pointer-events: none;';\nvar getStyles$1 = (function (contextId) {\n  var getSelector = makeGetSelector(contextId);\n\n  var dragHandle$1 = function () {\n    var grabCursor = \"\\n      cursor: -webkit-grab;\\n      cursor: grab;\\n    \";\n    return {\n      selector: getSelector(dragHandle.contextId),\n      styles: {\n        always: \"\\n          -webkit-touch-callout: none;\\n          -webkit-tap-highlight-color: rgba(0,0,0,0);\\n          touch-action: manipulation;\\n        \",\n        resting: grabCursor,\n        dragging: noPointerEvents,\n        dropAnimating: grabCursor\n      }\n    };\n  }();\n\n  var draggable$1 = function () {\n    var transition = \"\\n      transition: \" + transitions.outOfTheWay + \";\\n    \";\n    return {\n      selector: getSelector(draggable.contextId),\n      styles: {\n        dragging: transition,\n        dropAnimating: transition,\n        userCancel: transition\n      }\n    };\n  }();\n\n  var droppable$1 = {\n    selector: getSelector(droppable.contextId),\n    styles: {\n      always: \"overflow-anchor: none;\"\n    }\n  };\n  var body = {\n    selector: 'body',\n    styles: {\n      dragging: \"\\n        cursor: grabbing;\\n        cursor: -webkit-grabbing;\\n        user-select: none;\\n        -webkit-user-select: none;\\n        -moz-user-select: none;\\n        -ms-user-select: none;\\n        overflow-anchor: none;\\n      \"\n    }\n  };\n  var rules = [draggable$1, dragHandle$1, droppable$1, body];\n  return {\n    always: getStyles(rules, 'always'),\n    resting: getStyles(rules, 'resting'),\n    dragging: getStyles(rules, 'dragging'),\n    dropAnimating: getStyles(rules, 'dropAnimating'),\n    userCancel: getStyles(rules, 'userCancel')\n  };\n});\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;\n\nvar getHead = function getHead() {\n  var head = document.querySelector('head');\n  !head ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find the head to append a style to') : invariant(false) : void 0;\n  return head;\n};\n\nvar createStyleEl = function createStyleEl(nonce) {\n  var el = document.createElement('style');\n\n  if (nonce) {\n    el.setAttribute('nonce', nonce);\n  }\n\n  el.type = 'text/css';\n  return el;\n};\n\nfunction useStyleMarshal(contextId, nonce) {\n  var styles = useMemo(function () {\n    return getStyles$1(contextId);\n  }, [contextId]);\n  var alwaysRef = useRef(null);\n  var dynamicRef = useRef(null);\n  var setDynamicStyle = useCallback(memoizeOne(function (proposed) {\n    var el = dynamicRef.current;\n    !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot set dynamic style element if it is not set') : invariant(false) : void 0;\n    el.textContent = proposed;\n  }), []);\n  var setAlwaysStyle = useCallback(function (proposed) {\n    var el = alwaysRef.current;\n    !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot set dynamic style element if it is not set') : invariant(false) : void 0;\n    el.textContent = proposed;\n  }, []);\n  useIsomorphicLayoutEffect(function () {\n    !(!alwaysRef.current && !dynamicRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'style elements already mounted') : invariant(false) : void 0;\n    var always = createStyleEl(nonce);\n    var dynamic = createStyleEl(nonce);\n    alwaysRef.current = always;\n    dynamicRef.current = dynamic;\n    always.setAttribute(prefix$1 + \"-always\", contextId);\n    dynamic.setAttribute(prefix$1 + \"-dynamic\", contextId);\n    getHead().appendChild(always);\n    getHead().appendChild(dynamic);\n    setAlwaysStyle(styles.always);\n    setDynamicStyle(styles.resting);\n    return function () {\n      var remove = function remove(ref) {\n        var current = ref.current;\n        !current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot unmount ref as it is not set') : invariant(false) : void 0;\n        getHead().removeChild(current);\n        ref.current = null;\n      };\n\n      remove(alwaysRef);\n      remove(dynamicRef);\n    };\n  }, [nonce, setAlwaysStyle, setDynamicStyle, styles.always, styles.resting, contextId]);\n  var dragging = useCallback(function () {\n    return setDynamicStyle(styles.dragging);\n  }, [setDynamicStyle, styles.dragging]);\n  var dropping = useCallback(function (reason) {\n    if (reason === 'DROP') {\n      setDynamicStyle(styles.dropAnimating);\n      return;\n    }\n\n    setDynamicStyle(styles.userCancel);\n  }, [setDynamicStyle, styles.dropAnimating, styles.userCancel]);\n  var resting = useCallback(function () {\n    if (!dynamicRef.current) {\n      return;\n    }\n\n    setDynamicStyle(styles.resting);\n  }, [setDynamicStyle, styles.resting]);\n  var marshal = useMemo(function () {\n    return {\n      dragging: dragging,\n      dropping: dropping,\n      resting: resting\n    };\n  }, [dragging, dropping, resting]);\n  return marshal;\n}\n\nvar getWindowFromEl = (function (el) {\n  return el && el.ownerDocument ? el.ownerDocument.defaultView : window;\n});\n\nfunction isHtmlElement(el) {\n  return el instanceof getWindowFromEl(el).HTMLElement;\n}\n\nfunction findDragHandle(contextId, draggableId) {\n  var selector = \"[\" + dragHandle.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n  var possible = toArray(document.querySelectorAll(selector));\n\n  if (!possible.length) {\n    process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find any drag handles in the context \\\"\" + contextId + \"\\\"\") : void 0;\n    return null;\n  }\n\n  var handle = find(possible, function (el) {\n    return el.getAttribute(dragHandle.draggableId) === draggableId;\n  });\n\n  if (!handle) {\n    process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find drag handle with id \\\"\" + draggableId + \"\\\" as no handle with a matching id was found\") : void 0;\n    return null;\n  }\n\n  if (!isHtmlElement(handle)) {\n    process.env.NODE_ENV !== \"production\" ? warning('drag handle needs to be a HTMLElement') : void 0;\n    return null;\n  }\n\n  return handle;\n}\n\nfunction useFocusMarshal(contextId) {\n  var entriesRef = useRef({});\n  var recordRef = useRef(null);\n  var restoreFocusFrameRef = useRef(null);\n  var isMountedRef = useRef(false);\n  var register = useCallback(function register(id, focus) {\n    var entry = {\n      id: id,\n      focus: focus\n    };\n    entriesRef.current[id] = entry;\n    return function unregister() {\n      var entries = entriesRef.current;\n      var current = entries[id];\n\n      if (current !== entry) {\n        delete entries[id];\n      }\n    };\n  }, []);\n  var tryGiveFocus = useCallback(function tryGiveFocus(tryGiveFocusTo) {\n    var handle = findDragHandle(contextId, tryGiveFocusTo);\n\n    if (handle && handle !== document.activeElement) {\n      handle.focus();\n    }\n  }, [contextId]);\n  var tryShiftRecord = useCallback(function tryShiftRecord(previous, redirectTo) {\n    if (recordRef.current === previous) {\n      recordRef.current = redirectTo;\n    }\n  }, []);\n  var tryRestoreFocusRecorded = useCallback(function tryRestoreFocusRecorded() {\n    if (restoreFocusFrameRef.current) {\n      return;\n    }\n\n    if (!isMountedRef.current) {\n      return;\n    }\n\n    restoreFocusFrameRef.current = requestAnimationFrame(function () {\n      restoreFocusFrameRef.current = null;\n      var record = recordRef.current;\n\n      if (record) {\n        tryGiveFocus(record);\n      }\n    });\n  }, [tryGiveFocus]);\n  var tryRecordFocus = useCallback(function tryRecordFocus(id) {\n    recordRef.current = null;\n    var focused = document.activeElement;\n\n    if (!focused) {\n      return;\n    }\n\n    if (focused.getAttribute(dragHandle.draggableId) !== id) {\n      return;\n    }\n\n    recordRef.current = id;\n  }, []);\n  useIsomorphicLayoutEffect(function () {\n    isMountedRef.current = true;\n    return function clearFrameOnUnmount() {\n      isMountedRef.current = false;\n      var frameId = restoreFocusFrameRef.current;\n\n      if (frameId) {\n        cancelAnimationFrame(frameId);\n      }\n    };\n  }, []);\n  var marshal = useMemo(function () {\n    return {\n      register: register,\n      tryRecordFocus: tryRecordFocus,\n      tryRestoreFocusRecorded: tryRestoreFocusRecorded,\n      tryShiftRecord: tryShiftRecord\n    };\n  }, [register, tryRecordFocus, tryRestoreFocusRecorded, tryShiftRecord]);\n  return marshal;\n}\n\nfunction createRegistry() {\n  var entries = {\n    draggables: {},\n    droppables: {}\n  };\n  var subscribers = [];\n\n  function subscribe(cb) {\n    subscribers.push(cb);\n    return function unsubscribe() {\n      var index = subscribers.indexOf(cb);\n\n      if (index === -1) {\n        return;\n      }\n\n      subscribers.splice(index, 1);\n    };\n  }\n\n  function notify(event) {\n    if (subscribers.length) {\n      subscribers.forEach(function (cb) {\n        return cb(event);\n      });\n    }\n  }\n\n  function findDraggableById(id) {\n    return entries.draggables[id] || null;\n  }\n\n  function getDraggableById(id) {\n    var entry = findDraggableById(id);\n    !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find draggable entry with id [\" + id + \"]\") : invariant(false) : void 0;\n    return entry;\n  }\n\n  var draggableAPI = {\n    register: function register(entry) {\n      entries.draggables[entry.descriptor.id] = entry;\n      notify({\n        type: 'ADDITION',\n        value: entry\n      });\n    },\n    update: function update(entry, last) {\n      var current = entries.draggables[last.descriptor.id];\n\n      if (!current) {\n        return;\n      }\n\n      if (current.uniqueId !== entry.uniqueId) {\n        return;\n      }\n\n      delete entries.draggables[last.descriptor.id];\n      entries.draggables[entry.descriptor.id] = entry;\n    },\n    unregister: function unregister(entry) {\n      var draggableId = entry.descriptor.id;\n      var current = findDraggableById(draggableId);\n\n      if (!current) {\n        return;\n      }\n\n      if (entry.uniqueId !== current.uniqueId) {\n        return;\n      }\n\n      delete entries.draggables[draggableId];\n      notify({\n        type: 'REMOVAL',\n        value: entry\n      });\n    },\n    getById: getDraggableById,\n    findById: findDraggableById,\n    exists: function exists(id) {\n      return Boolean(findDraggableById(id));\n    },\n    getAllByType: function getAllByType(type) {\n      return values(entries.draggables).filter(function (entry) {\n        return entry.descriptor.type === type;\n      });\n    }\n  };\n\n  function findDroppableById(id) {\n    return entries.droppables[id] || null;\n  }\n\n  function getDroppableById(id) {\n    var entry = findDroppableById(id);\n    !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find droppable entry with id [\" + id + \"]\") : invariant(false) : void 0;\n    return entry;\n  }\n\n  var droppableAPI = {\n    register: function register(entry) {\n      entries.droppables[entry.descriptor.id] = entry;\n    },\n    unregister: function unregister(entry) {\n      var current = findDroppableById(entry.descriptor.id);\n\n      if (!current) {\n        return;\n      }\n\n      if (entry.uniqueId !== current.uniqueId) {\n        return;\n      }\n\n      delete entries.droppables[entry.descriptor.id];\n    },\n    getById: getDroppableById,\n    findById: findDroppableById,\n    exists: function exists(id) {\n      return Boolean(findDroppableById(id));\n    },\n    getAllByType: function getAllByType(type) {\n      return values(entries.droppables).filter(function (entry) {\n        return entry.descriptor.type === type;\n      });\n    }\n  };\n\n  function clean() {\n    entries.draggables = {};\n    entries.droppables = {};\n    subscribers.length = 0;\n  }\n\n  return {\n    draggable: draggableAPI,\n    droppable: droppableAPI,\n    subscribe: subscribe,\n    clean: clean\n  };\n}\n\nfunction useRegistry() {\n  var registry = useMemo(createRegistry, []);\n  useEffect(function () {\n    return function unmount() {\n      requestAnimationFrame(registry.clean);\n    };\n  }, [registry]);\n  return registry;\n}\n\nvar StoreContext = React.createContext(null);\n\nvar getBodyElement = (function () {\n  var body = document.body;\n  !body ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find document.body') : invariant(false) : void 0;\n  return body;\n});\n\nvar visuallyHidden = {\n  position: 'absolute',\n  width: '1px',\n  height: '1px',\n  margin: '-1px',\n  border: '0',\n  padding: '0',\n  overflow: 'hidden',\n  clip: 'rect(0 0 0 0)',\n  'clip-path': 'inset(100%)'\n};\n\nvar getId = function getId(contextId) {\n  return \"rbd-announcement-\" + contextId;\n};\nfunction useAnnouncer(contextId) {\n  var id = useMemo(function () {\n    return getId(contextId);\n  }, [contextId]);\n  var ref = useRef(null);\n  useEffect(function setup() {\n    var el = document.createElement('div');\n    ref.current = el;\n    el.id = id;\n    el.setAttribute('aria-live', 'assertive');\n    el.setAttribute('aria-atomic', 'true');\n\n    _extends(el.style, visuallyHidden);\n\n    getBodyElement().appendChild(el);\n    return function cleanup() {\n      setTimeout(function remove() {\n        var body = getBodyElement();\n\n        if (body.contains(el)) {\n          body.removeChild(el);\n        }\n\n        if (el === ref.current) {\n          ref.current = null;\n        }\n      });\n    };\n  }, [id]);\n  var announce = useCallback(function (message) {\n    var el = ref.current;\n\n    if (el) {\n      el.textContent = message;\n      return;\n    }\n\n    process.env.NODE_ENV !== \"production\" ? warning(\"\\n      A screen reader message was trying to be announced but it was unable to do so.\\n      This can occur if you unmount your <DragDropContext /> in your onDragEnd.\\n      Consider calling provided.announce() before the unmount so that the instruction will\\n      not be lost for users relying on a screen reader.\\n\\n      Message not passed to screen reader:\\n\\n      \\\"\" + message + \"\\\"\\n    \") : void 0;\n  }, []);\n  return announce;\n}\n\nvar count = 0;\nvar defaults = {\n  separator: '::'\n};\nfunction reset() {\n  count = 0;\n}\nfunction useUniqueId(prefix, options) {\n  if (options === void 0) {\n    options = defaults;\n  }\n\n  return useMemo(function () {\n    return \"\" + prefix + options.separator + count++;\n  }, [options.separator, prefix]);\n}\n\nfunction getElementId(_ref) {\n  var contextId = _ref.contextId,\n      uniqueId = _ref.uniqueId;\n  return \"rbd-hidden-text-\" + contextId + \"-\" + uniqueId;\n}\nfunction useHiddenTextElement(_ref2) {\n  var contextId = _ref2.contextId,\n      text = _ref2.text;\n  var uniqueId = useUniqueId('hidden-text', {\n    separator: '-'\n  });\n  var id = useMemo(function () {\n    return getElementId({\n      contextId: contextId,\n      uniqueId: uniqueId\n    });\n  }, [uniqueId, contextId]);\n  useEffect(function mount() {\n    var el = document.createElement('div');\n    el.id = id;\n    el.textContent = text;\n    el.style.display = 'none';\n    getBodyElement().appendChild(el);\n    return function unmount() {\n      var body = getBodyElement();\n\n      if (body.contains(el)) {\n        body.removeChild(el);\n      }\n    };\n  }, [id, text]);\n  return id;\n}\n\nvar AppContext = React.createContext(null);\n\nvar peerDependencies = {\n\treact: \"^16.8.5 || ^17.0.0 || ^18.0.0\",\n\t\"react-dom\": \"^16.8.5 || ^17.0.0 || ^18.0.0\"\n};\n\nvar semver = /(\\d+)\\.(\\d+)\\.(\\d+)/;\n\nvar getVersion = function getVersion(value) {\n  var result = semver.exec(value);\n  !(result != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Unable to parse React version \" + value) : invariant(false) : void 0;\n  var major = Number(result[1]);\n  var minor = Number(result[2]);\n  var patch = Number(result[3]);\n  return {\n    major: major,\n    minor: minor,\n    patch: patch,\n    raw: value\n  };\n};\n\nvar isSatisfied = function isSatisfied(expected, actual) {\n  if (actual.major > expected.major) {\n    return true;\n  }\n\n  if (actual.major < expected.major) {\n    return false;\n  }\n\n  if (actual.minor > expected.minor) {\n    return true;\n  }\n\n  if (actual.minor < expected.minor) {\n    return false;\n  }\n\n  return actual.patch >= expected.patch;\n};\n\nvar checkReactVersion = (function (peerDepValue, actualValue) {\n  var peerDep = getVersion(peerDepValue);\n  var actual = getVersion(actualValue);\n\n  if (isSatisfied(peerDep, actual)) {\n    return;\n  }\n\n  process.env.NODE_ENV !== \"production\" ? warning(\"\\n    React version: [\" + actual.raw + \"]\\n    does not satisfy expected peer dependency version: [\" + peerDep.raw + \"]\\n\\n    This can result in run time bugs, and even fatal crashes\\n  \") : void 0;\n});\n\nvar suffix = \"\\n  We expect a html5 doctype: <!doctype html>\\n  This is to ensure consistent browser layout and measurement\\n\\n  More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/doctype.md\\n\";\nvar checkDoctype = (function (doc) {\n  var doctype = doc.doctype;\n\n  if (!doctype) {\n    process.env.NODE_ENV !== \"production\" ? warning(\"\\n      No <!doctype html> found.\\n\\n      \" + suffix + \"\\n    \") : void 0;\n    return;\n  }\n\n  if (doctype.name.toLowerCase() !== 'html') {\n    process.env.NODE_ENV !== \"production\" ? warning(\"\\n      Unexpected <!doctype> found: (\" + doctype.name + \")\\n\\n      \" + suffix + \"\\n    \") : void 0;\n  }\n\n  if (doctype.publicId !== '') {\n    process.env.NODE_ENV !== \"production\" ? warning(\"\\n      Unexpected <!doctype> publicId found: (\" + doctype.publicId + \")\\n      A html5 doctype does not have a publicId\\n\\n      \" + suffix + \"\\n    \") : void 0;\n  }\n});\n\nfunction useDev(useHook) {\n  if (process.env.NODE_ENV !== 'production') {\n    useHook();\n  }\n}\n\nfunction useDevSetupWarning(fn, inputs) {\n  useDev(function () {\n    useEffect(function () {\n      try {\n        fn();\n      } catch (e) {\n        error(\"\\n          A setup problem was encountered.\\n\\n          > \" + e.message + \"\\n        \");\n      }\n    }, inputs);\n  });\n}\n\nfunction useStartupValidation() {\n  useDevSetupWarning(function () {\n    checkReactVersion(peerDependencies.react, React.version);\n    checkDoctype(document);\n  }, []);\n}\n\nfunction usePrevious(current) {\n  var ref = useRef(current);\n  useEffect(function () {\n    ref.current = current;\n  });\n  return ref;\n}\n\nfunction create() {\n  var lock = null;\n\n  function isClaimed() {\n    return Boolean(lock);\n  }\n\n  function isActive(value) {\n    return value === lock;\n  }\n\n  function claim(abandon) {\n    !!lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot claim lock as it is already claimed') : invariant(false) : void 0;\n    var newLock = {\n      abandon: abandon\n    };\n    lock = newLock;\n    return newLock;\n  }\n\n  function release() {\n    !lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot release lock when there is no lock') : invariant(false) : void 0;\n    lock = null;\n  }\n\n  function tryAbandon() {\n    if (lock) {\n      lock.abandon();\n      release();\n    }\n  }\n\n  return {\n    isClaimed: isClaimed,\n    isActive: isActive,\n    claim: claim,\n    release: release,\n    tryAbandon: tryAbandon\n  };\n}\n\nvar tab = 9;\nvar enter = 13;\nvar escape = 27;\nvar space = 32;\nvar pageUp = 33;\nvar pageDown = 34;\nvar end = 35;\nvar home = 36;\nvar arrowLeft = 37;\nvar arrowUp = 38;\nvar arrowRight = 39;\nvar arrowDown = 40;\n\nvar _preventedKeys;\nvar preventedKeys = (_preventedKeys = {}, _preventedKeys[enter] = true, _preventedKeys[tab] = true, _preventedKeys);\nvar preventStandardKeyEvents = (function (event) {\n  if (preventedKeys[event.keyCode]) {\n    event.preventDefault();\n  }\n});\n\nvar supportedEventName = function () {\n  var base = 'visibilitychange';\n\n  if (typeof document === 'undefined') {\n    return base;\n  }\n\n  var candidates = [base, \"ms\" + base, \"webkit\" + base, \"moz\" + base, \"o\" + base];\n  var supported = find(candidates, function (eventName) {\n    return \"on\" + eventName in document;\n  });\n  return supported || base;\n}();\n\nvar primaryButton = 0;\nvar sloppyClickThreshold = 5;\n\nfunction isSloppyClickThresholdExceeded(original, current) {\n  return Math.abs(current.x - original.x) >= sloppyClickThreshold || Math.abs(current.y - original.y) >= sloppyClickThreshold;\n}\n\nvar idle$1 = {\n  type: 'IDLE'\n};\n\nfunction getCaptureBindings(_ref) {\n  var cancel = _ref.cancel,\n      completed = _ref.completed,\n      getPhase = _ref.getPhase,\n      setPhase = _ref.setPhase;\n  return [{\n    eventName: 'mousemove',\n    fn: function fn(event) {\n      var button = event.button,\n          clientX = event.clientX,\n          clientY = event.clientY;\n\n      if (button !== primaryButton) {\n        return;\n      }\n\n      var point = {\n        x: clientX,\n        y: clientY\n      };\n      var phase = getPhase();\n\n      if (phase.type === 'DRAGGING') {\n        event.preventDefault();\n        phase.actions.move(point);\n        return;\n      }\n\n      !(phase.type === 'PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot be IDLE') : invariant(false) : void 0;\n      var pending = phase.point;\n\n      if (!isSloppyClickThresholdExceeded(pending, point)) {\n        return;\n      }\n\n      event.preventDefault();\n      var actions = phase.actions.fluidLift(point);\n      setPhase({\n        type: 'DRAGGING',\n        actions: actions\n      });\n    }\n  }, {\n    eventName: 'mouseup',\n    fn: function fn(event) {\n      var phase = getPhase();\n\n      if (phase.type !== 'DRAGGING') {\n        cancel();\n        return;\n      }\n\n      event.preventDefault();\n      phase.actions.drop({\n        shouldBlockNextClick: true\n      });\n      completed();\n    }\n  }, {\n    eventName: 'mousedown',\n    fn: function fn(event) {\n      if (getPhase().type === 'DRAGGING') {\n        event.preventDefault();\n      }\n\n      cancel();\n    }\n  }, {\n    eventName: 'keydown',\n    fn: function fn(event) {\n      var phase = getPhase();\n\n      if (phase.type === 'PENDING') {\n        cancel();\n        return;\n      }\n\n      if (event.keyCode === escape) {\n        event.preventDefault();\n        cancel();\n        return;\n      }\n\n      preventStandardKeyEvents(event);\n    }\n  }, {\n    eventName: 'resize',\n    fn: cancel\n  }, {\n    eventName: 'scroll',\n    options: {\n      passive: true,\n      capture: false\n    },\n    fn: function fn() {\n      if (getPhase().type === 'PENDING') {\n        cancel();\n      }\n    }\n  }, {\n    eventName: 'webkitmouseforcedown',\n    fn: function fn(event) {\n      var phase = getPhase();\n      !(phase.type !== 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unexpected phase') : invariant(false) : void 0;\n\n      if (phase.actions.shouldRespectForcePress()) {\n        cancel();\n        return;\n      }\n\n      event.preventDefault();\n    }\n  }, {\n    eventName: supportedEventName,\n    fn: cancel\n  }];\n}\n\nfunction useMouseSensor(api) {\n  var phaseRef = useRef(idle$1);\n  var unbindEventsRef = useRef(noop);\n  var startCaptureBinding = useMemo(function () {\n    return {\n      eventName: 'mousedown',\n      fn: function onMouseDown(event) {\n        if (event.defaultPrevented) {\n          return;\n        }\n\n        if (event.button !== primaryButton) {\n          return;\n        }\n\n        if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) {\n          return;\n        }\n\n        var draggableId = api.findClosestDraggableId(event);\n\n        if (!draggableId) {\n          return;\n        }\n\n        var actions = api.tryGetLock(draggableId, stop, {\n          sourceEvent: event\n        });\n\n        if (!actions) {\n          return;\n        }\n\n        event.preventDefault();\n        var point = {\n          x: event.clientX,\n          y: event.clientY\n        };\n        unbindEventsRef.current();\n        startPendingDrag(actions, point);\n      }\n    };\n  }, [api]);\n  var preventForcePressBinding = useMemo(function () {\n    return {\n      eventName: 'webkitmouseforcewillbegin',\n      fn: function fn(event) {\n        if (event.defaultPrevented) {\n          return;\n        }\n\n        var id = api.findClosestDraggableId(event);\n\n        if (!id) {\n          return;\n        }\n\n        var options = api.findOptionsForDraggable(id);\n\n        if (!options) {\n          return;\n        }\n\n        if (options.shouldRespectForcePress) {\n          return;\n        }\n\n        if (!api.canGetLock(id)) {\n          return;\n        }\n\n        event.preventDefault();\n      }\n    };\n  }, [api]);\n  var listenForCapture = useCallback(function listenForCapture() {\n    var options = {\n      passive: false,\n      capture: true\n    };\n    unbindEventsRef.current = bindEvents(window, [preventForcePressBinding, startCaptureBinding], options);\n  }, [preventForcePressBinding, startCaptureBinding]);\n  var stop = useCallback(function () {\n    var current = phaseRef.current;\n\n    if (current.type === 'IDLE') {\n      return;\n    }\n\n    phaseRef.current = idle$1;\n    unbindEventsRef.current();\n    listenForCapture();\n  }, [listenForCapture]);\n  var cancel = useCallback(function () {\n    var phase = phaseRef.current;\n    stop();\n\n    if (phase.type === 'DRAGGING') {\n      phase.actions.cancel({\n        shouldBlockNextClick: true\n      });\n    }\n\n    if (phase.type === 'PENDING') {\n      phase.actions.abort();\n    }\n  }, [stop]);\n  var bindCapturingEvents = useCallback(function bindCapturingEvents() {\n    var options = {\n      capture: true,\n      passive: false\n    };\n    var bindings = getCaptureBindings({\n      cancel: cancel,\n      completed: stop,\n      getPhase: function getPhase() {\n        return phaseRef.current;\n      },\n      setPhase: function setPhase(phase) {\n        phaseRef.current = phase;\n      }\n    });\n    unbindEventsRef.current = bindEvents(window, bindings, options);\n  }, [cancel, stop]);\n  var startPendingDrag = useCallback(function startPendingDrag(actions, point) {\n    !(phaseRef.current.type === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected to move from IDLE to PENDING drag') : invariant(false) : void 0;\n    phaseRef.current = {\n      type: 'PENDING',\n      point: point,\n      actions: actions\n    };\n    bindCapturingEvents();\n  }, [bindCapturingEvents]);\n  useIsomorphicLayoutEffect(function mount() {\n    listenForCapture();\n    return function unmount() {\n      unbindEventsRef.current();\n    };\n  }, [listenForCapture]);\n}\n\nvar _scrollJumpKeys;\n\nfunction noop$1() {}\n\nvar scrollJumpKeys = (_scrollJumpKeys = {}, _scrollJumpKeys[pageDown] = true, _scrollJumpKeys[pageUp] = true, _scrollJumpKeys[home] = true, _scrollJumpKeys[end] = true, _scrollJumpKeys);\n\nfunction getDraggingBindings(actions, stop) {\n  function cancel() {\n    stop();\n    actions.cancel();\n  }\n\n  function drop() {\n    stop();\n    actions.drop();\n  }\n\n  return [{\n    eventName: 'keydown',\n    fn: function fn(event) {\n      if (event.keyCode === escape) {\n        event.preventDefault();\n        cancel();\n        return;\n      }\n\n      if (event.keyCode === space) {\n        event.preventDefault();\n        drop();\n        return;\n      }\n\n      if (event.keyCode === arrowDown) {\n        event.preventDefault();\n        actions.moveDown();\n        return;\n      }\n\n      if (event.keyCode === arrowUp) {\n        event.preventDefault();\n        actions.moveUp();\n        return;\n      }\n\n      if (event.keyCode === arrowRight) {\n        event.preventDefault();\n        actions.moveRight();\n        return;\n      }\n\n      if (event.keyCode === arrowLeft) {\n        event.preventDefault();\n        actions.moveLeft();\n        return;\n      }\n\n      if (scrollJumpKeys[event.keyCode]) {\n        event.preventDefault();\n        return;\n      }\n\n      preventStandardKeyEvents(event);\n    }\n  }, {\n    eventName: 'mousedown',\n    fn: cancel\n  }, {\n    eventName: 'mouseup',\n    fn: cancel\n  }, {\n    eventName: 'click',\n    fn: cancel\n  }, {\n    eventName: 'touchstart',\n    fn: cancel\n  }, {\n    eventName: 'resize',\n    fn: cancel\n  }, {\n    eventName: 'wheel',\n    fn: cancel,\n    options: {\n      passive: true\n    }\n  }, {\n    eventName: supportedEventName,\n    fn: cancel\n  }];\n}\n\nfunction useKeyboardSensor(api) {\n  var unbindEventsRef = useRef(noop$1);\n  var startCaptureBinding = useMemo(function () {\n    return {\n      eventName: 'keydown',\n      fn: function onKeyDown(event) {\n        if (event.defaultPrevented) {\n          return;\n        }\n\n        if (event.keyCode !== space) {\n          return;\n        }\n\n        var draggableId = api.findClosestDraggableId(event);\n\n        if (!draggableId) {\n          return;\n        }\n\n        var preDrag = api.tryGetLock(draggableId, stop, {\n          sourceEvent: event\n        });\n\n        if (!preDrag) {\n          return;\n        }\n\n        event.preventDefault();\n        var isCapturing = true;\n        var actions = preDrag.snapLift();\n        unbindEventsRef.current();\n\n        function stop() {\n          !isCapturing ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop capturing a keyboard drag when not capturing') : invariant(false) : void 0;\n          isCapturing = false;\n          unbindEventsRef.current();\n          listenForCapture();\n        }\n\n        unbindEventsRef.current = bindEvents(window, getDraggingBindings(actions, stop), {\n          capture: true,\n          passive: false\n        });\n      }\n    };\n  }, [api]);\n  var listenForCapture = useCallback(function tryStartCapture() {\n    var options = {\n      passive: false,\n      capture: true\n    };\n    unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n  }, [startCaptureBinding]);\n  useIsomorphicLayoutEffect(function mount() {\n    listenForCapture();\n    return function unmount() {\n      unbindEventsRef.current();\n    };\n  }, [listenForCapture]);\n}\n\nvar idle$2 = {\n  type: 'IDLE'\n};\nvar timeForLongPress = 120;\nvar forcePressThreshold = 0.15;\n\nfunction getWindowBindings(_ref) {\n  var cancel = _ref.cancel,\n      getPhase = _ref.getPhase;\n  return [{\n    eventName: 'orientationchange',\n    fn: cancel\n  }, {\n    eventName: 'resize',\n    fn: cancel\n  }, {\n    eventName: 'contextmenu',\n    fn: function fn(event) {\n      event.preventDefault();\n    }\n  }, {\n    eventName: 'keydown',\n    fn: function fn(event) {\n      if (getPhase().type !== 'DRAGGING') {\n        cancel();\n        return;\n      }\n\n      if (event.keyCode === escape) {\n        event.preventDefault();\n      }\n\n      cancel();\n    }\n  }, {\n    eventName: supportedEventName,\n    fn: cancel\n  }];\n}\n\nfunction getHandleBindings(_ref2) {\n  var cancel = _ref2.cancel,\n      completed = _ref2.completed,\n      getPhase = _ref2.getPhase;\n  return [{\n    eventName: 'touchmove',\n    options: {\n      capture: false\n    },\n    fn: function fn(event) {\n      var phase = getPhase();\n\n      if (phase.type !== 'DRAGGING') {\n        cancel();\n        return;\n      }\n\n      phase.hasMoved = true;\n      var _event$touches$ = event.touches[0],\n          clientX = _event$touches$.clientX,\n          clientY = _event$touches$.clientY;\n      var point = {\n        x: clientX,\n        y: clientY\n      };\n      event.preventDefault();\n      phase.actions.move(point);\n    }\n  }, {\n    eventName: 'touchend',\n    fn: function fn(event) {\n      var phase = getPhase();\n\n      if (phase.type !== 'DRAGGING') {\n        cancel();\n        return;\n      }\n\n      event.preventDefault();\n      phase.actions.drop({\n        shouldBlockNextClick: true\n      });\n      completed();\n    }\n  }, {\n    eventName: 'touchcancel',\n    fn: function fn(event) {\n      if (getPhase().type !== 'DRAGGING') {\n        cancel();\n        return;\n      }\n\n      event.preventDefault();\n      cancel();\n    }\n  }, {\n    eventName: 'touchforcechange',\n    fn: function fn(event) {\n      var phase = getPhase();\n      !(phase.type !== 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n      var touch = event.touches[0];\n\n      if (!touch) {\n        return;\n      }\n\n      var isForcePress = touch.force >= forcePressThreshold;\n\n      if (!isForcePress) {\n        return;\n      }\n\n      var shouldRespect = phase.actions.shouldRespectForcePress();\n\n      if (phase.type === 'PENDING') {\n        if (shouldRespect) {\n          cancel();\n        }\n\n        return;\n      }\n\n      if (shouldRespect) {\n        if (phase.hasMoved) {\n          event.preventDefault();\n          return;\n        }\n\n        cancel();\n        return;\n      }\n\n      event.preventDefault();\n    }\n  }, {\n    eventName: supportedEventName,\n    fn: cancel\n  }];\n}\n\nfunction useTouchSensor(api) {\n  var phaseRef = useRef(idle$2);\n  var unbindEventsRef = useRef(noop);\n  var getPhase = useCallback(function getPhase() {\n    return phaseRef.current;\n  }, []);\n  var setPhase = useCallback(function setPhase(phase) {\n    phaseRef.current = phase;\n  }, []);\n  var startCaptureBinding = useMemo(function () {\n    return {\n      eventName: 'touchstart',\n      fn: function onTouchStart(event) {\n        if (event.defaultPrevented) {\n          return;\n        }\n\n        var draggableId = api.findClosestDraggableId(event);\n\n        if (!draggableId) {\n          return;\n        }\n\n        var actions = api.tryGetLock(draggableId, stop, {\n          sourceEvent: event\n        });\n\n        if (!actions) {\n          return;\n        }\n\n        var touch = event.touches[0];\n        var clientX = touch.clientX,\n            clientY = touch.clientY;\n        var point = {\n          x: clientX,\n          y: clientY\n        };\n        unbindEventsRef.current();\n        startPendingDrag(actions, point);\n      }\n    };\n  }, [api]);\n  var listenForCapture = useCallback(function listenForCapture() {\n    var options = {\n      capture: true,\n      passive: false\n    };\n    unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n  }, [startCaptureBinding]);\n  var stop = useCallback(function () {\n    var current = phaseRef.current;\n\n    if (current.type === 'IDLE') {\n      return;\n    }\n\n    if (current.type === 'PENDING') {\n      clearTimeout(current.longPressTimerId);\n    }\n\n    setPhase(idle$2);\n    unbindEventsRef.current();\n    listenForCapture();\n  }, [listenForCapture, setPhase]);\n  var cancel = useCallback(function () {\n    var phase = phaseRef.current;\n    stop();\n\n    if (phase.type === 'DRAGGING') {\n      phase.actions.cancel({\n        shouldBlockNextClick: true\n      });\n    }\n\n    if (phase.type === 'PENDING') {\n      phase.actions.abort();\n    }\n  }, [stop]);\n  var bindCapturingEvents = useCallback(function bindCapturingEvents() {\n    var options = {\n      capture: true,\n      passive: false\n    };\n    var args = {\n      cancel: cancel,\n      completed: stop,\n      getPhase: getPhase\n    };\n    var unbindTarget = bindEvents(window, getHandleBindings(args), options);\n    var unbindWindow = bindEvents(window, getWindowBindings(args), options);\n\n    unbindEventsRef.current = function unbindAll() {\n      unbindTarget();\n      unbindWindow();\n    };\n  }, [cancel, getPhase, stop]);\n  var startDragging = useCallback(function startDragging() {\n    var phase = getPhase();\n    !(phase.type === 'PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot start dragging from phase \" + phase.type) : invariant(false) : void 0;\n    var actions = phase.actions.fluidLift(phase.point);\n    setPhase({\n      type: 'DRAGGING',\n      actions: actions,\n      hasMoved: false\n    });\n  }, [getPhase, setPhase]);\n  var startPendingDrag = useCallback(function startPendingDrag(actions, point) {\n    !(getPhase().type === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected to move from IDLE to PENDING drag') : invariant(false) : void 0;\n    var longPressTimerId = setTimeout(startDragging, timeForLongPress);\n    setPhase({\n      type: 'PENDING',\n      point: point,\n      actions: actions,\n      longPressTimerId: longPressTimerId\n    });\n    bindCapturingEvents();\n  }, [bindCapturingEvents, getPhase, setPhase, startDragging]);\n  useIsomorphicLayoutEffect(function mount() {\n    listenForCapture();\n    return function unmount() {\n      unbindEventsRef.current();\n      var phase = getPhase();\n\n      if (phase.type === 'PENDING') {\n        clearTimeout(phase.longPressTimerId);\n        setPhase(idle$2);\n      }\n    };\n  }, [getPhase, listenForCapture, setPhase]);\n  useIsomorphicLayoutEffect(function webkitHack() {\n    var unbind = bindEvents(window, [{\n      eventName: 'touchmove',\n      fn: function fn() {},\n      options: {\n        capture: false,\n        passive: false\n      }\n    }]);\n    return unbind;\n  }, []);\n}\n\nfunction useValidateSensorHooks(sensorHooks) {\n  useDev(function () {\n    var previousRef = usePrevious(sensorHooks);\n    useDevSetupWarning(function () {\n      !(previousRef.current.length === sensorHooks.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot change the amount of sensor hooks after mounting') : invariant(false) : void 0;\n    });\n  });\n}\n\nvar interactiveTagNames = {\n  input: true,\n  button: true,\n  textarea: true,\n  select: true,\n  option: true,\n  optgroup: true,\n  video: true,\n  audio: true\n};\n\nfunction isAnInteractiveElement(parent, current) {\n  if (current == null) {\n    return false;\n  }\n\n  var hasAnInteractiveTag = Boolean(interactiveTagNames[current.tagName.toLowerCase()]);\n\n  if (hasAnInteractiveTag) {\n    return true;\n  }\n\n  var attribute = current.getAttribute('contenteditable');\n\n  if (attribute === 'true' || attribute === '') {\n    return true;\n  }\n\n  if (current === parent) {\n    return false;\n  }\n\n  return isAnInteractiveElement(parent, current.parentElement);\n}\n\nfunction isEventInInteractiveElement(draggable, event) {\n  var target = event.target;\n\n  if (!isHtmlElement(target)) {\n    return false;\n  }\n\n  return isAnInteractiveElement(draggable, target);\n}\n\nvar getBorderBoxCenterPosition = (function (el) {\n  return getRect(el.getBoundingClientRect()).center;\n});\n\nfunction isElement(el) {\n  return el instanceof getWindowFromEl(el).Element;\n}\n\nvar supportedMatchesName = function () {\n  var base = 'matches';\n\n  if (typeof document === 'undefined') {\n    return base;\n  }\n\n  var candidates = [base, 'msMatchesSelector', 'webkitMatchesSelector'];\n  var value = find(candidates, function (name) {\n    return name in Element.prototype;\n  });\n  return value || base;\n}();\n\nfunction closestPonyfill(el, selector) {\n  if (el == null) {\n    return null;\n  }\n\n  if (el[supportedMatchesName](selector)) {\n    return el;\n  }\n\n  return closestPonyfill(el.parentElement, selector);\n}\n\nfunction closest$1(el, selector) {\n  if (el.closest) {\n    return el.closest(selector);\n  }\n\n  return closestPonyfill(el, selector);\n}\n\nfunction getSelector(contextId) {\n  return \"[\" + dragHandle.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n}\n\nfunction findClosestDragHandleFromEvent(contextId, event) {\n  var target = event.target;\n\n  if (!isElement(target)) {\n    process.env.NODE_ENV !== \"production\" ? warning('event.target must be a Element') : void 0;\n    return null;\n  }\n\n  var selector = getSelector(contextId);\n  var handle = closest$1(target, selector);\n\n  if (!handle) {\n    return null;\n  }\n\n  if (!isHtmlElement(handle)) {\n    process.env.NODE_ENV !== \"production\" ? warning('drag handle must be a HTMLElement') : void 0;\n    return null;\n  }\n\n  return handle;\n}\n\nfunction tryGetClosestDraggableIdFromEvent(contextId, event) {\n  var handle = findClosestDragHandleFromEvent(contextId, event);\n\n  if (!handle) {\n    return null;\n  }\n\n  return handle.getAttribute(dragHandle.draggableId);\n}\n\nfunction findDraggable(contextId, draggableId) {\n  var selector = \"[\" + draggable.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n  var possible = toArray(document.querySelectorAll(selector));\n  var draggable$1 = find(possible, function (el) {\n    return el.getAttribute(draggable.id) === draggableId;\n  });\n\n  if (!draggable$1) {\n    return null;\n  }\n\n  if (!isHtmlElement(draggable$1)) {\n    process.env.NODE_ENV !== \"production\" ? warning('Draggable element is not a HTMLElement') : void 0;\n    return null;\n  }\n\n  return draggable$1;\n}\n\nfunction preventDefault(event) {\n  event.preventDefault();\n}\n\nfunction _isActive(_ref) {\n  var expected = _ref.expected,\n      phase = _ref.phase,\n      isLockActive = _ref.isLockActive,\n      shouldWarn = _ref.shouldWarn;\n\n  if (!isLockActive()) {\n    if (shouldWarn) {\n      process.env.NODE_ENV !== \"production\" ? warning(\"\\n        Cannot perform action.\\n        The sensor no longer has an action lock.\\n\\n        Tips:\\n\\n        - Throw away your action handlers when forceStop() is called\\n        - Check actions.isActive() if you really need to\\n      \") : void 0;\n    }\n\n    return false;\n  }\n\n  if (expected !== phase) {\n    if (shouldWarn) {\n      process.env.NODE_ENV !== \"production\" ? warning(\"\\n        Cannot perform action.\\n        The actions you used belong to an outdated phase\\n\\n        Current phase: \" + expected + \"\\n        You called an action from outdated phase: \" + phase + \"\\n\\n        Tips:\\n\\n        - Do not use preDragActions actions after calling preDragActions.lift()\\n      \") : void 0;\n    }\n\n    return false;\n  }\n\n  return true;\n}\n\nfunction canStart(_ref2) {\n  var lockAPI = _ref2.lockAPI,\n      store = _ref2.store,\n      registry = _ref2.registry,\n      draggableId = _ref2.draggableId;\n\n  if (lockAPI.isClaimed()) {\n    return false;\n  }\n\n  var entry = registry.draggable.findById(draggableId);\n\n  if (!entry) {\n    process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find draggable with id: \" + draggableId) : void 0;\n    return false;\n  }\n\n  if (!entry.options.isEnabled) {\n    return false;\n  }\n\n  if (!canStartDrag(store.getState(), draggableId)) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction tryStart(_ref3) {\n  var lockAPI = _ref3.lockAPI,\n      contextId = _ref3.contextId,\n      store = _ref3.store,\n      registry = _ref3.registry,\n      draggableId = _ref3.draggableId,\n      forceSensorStop = _ref3.forceSensorStop,\n      sourceEvent = _ref3.sourceEvent;\n  var shouldStart = canStart({\n    lockAPI: lockAPI,\n    store: store,\n    registry: registry,\n    draggableId: draggableId\n  });\n\n  if (!shouldStart) {\n    return null;\n  }\n\n  var entry = registry.draggable.getById(draggableId);\n  var el = findDraggable(contextId, entry.descriptor.id);\n\n  if (!el) {\n    process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find draggable element with id: \" + draggableId) : void 0;\n    return null;\n  }\n\n  if (sourceEvent && !entry.options.canDragInteractiveElements && isEventInInteractiveElement(el, sourceEvent)) {\n    return null;\n  }\n\n  var lock = lockAPI.claim(forceSensorStop || noop);\n  var phase = 'PRE_DRAG';\n\n  function getShouldRespectForcePress() {\n    return entry.options.shouldRespectForcePress;\n  }\n\n  function isLockActive() {\n    return lockAPI.isActive(lock);\n  }\n\n  function tryDispatch(expected, getAction) {\n    if (_isActive({\n      expected: expected,\n      phase: phase,\n      isLockActive: isLockActive,\n      shouldWarn: true\n    })) {\n      store.dispatch(getAction());\n    }\n  }\n\n  var tryDispatchWhenDragging = tryDispatch.bind(null, 'DRAGGING');\n\n  function lift$1(args) {\n    function completed() {\n      lockAPI.release();\n      phase = 'COMPLETED';\n    }\n\n    if (phase !== 'PRE_DRAG') {\n      completed();\n      !(phase === 'PRE_DRAG') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot lift in phase \" + phase) : invariant(false) : void 0;\n    }\n\n    store.dispatch(lift(args.liftActionArgs));\n    phase = 'DRAGGING';\n\n    function finish(reason, options) {\n      if (options === void 0) {\n        options = {\n          shouldBlockNextClick: false\n        };\n      }\n\n      args.cleanup();\n\n      if (options.shouldBlockNextClick) {\n        var unbind = bindEvents(window, [{\n          eventName: 'click',\n          fn: preventDefault,\n          options: {\n            once: true,\n            passive: false,\n            capture: true\n          }\n        }]);\n        setTimeout(unbind);\n      }\n\n      completed();\n      store.dispatch(drop({\n        reason: reason\n      }));\n    }\n\n    return _extends({\n      isActive: function isActive() {\n        return _isActive({\n          expected: 'DRAGGING',\n          phase: phase,\n          isLockActive: isLockActive,\n          shouldWarn: false\n        });\n      },\n      shouldRespectForcePress: getShouldRespectForcePress,\n      drop: function drop(options) {\n        return finish('DROP', options);\n      },\n      cancel: function cancel(options) {\n        return finish('CANCEL', options);\n      }\n    }, args.actions);\n  }\n\n  function fluidLift(clientSelection) {\n    var move$1 = rafSchd(function (client) {\n      tryDispatchWhenDragging(function () {\n        return move({\n          client: client\n        });\n      });\n    });\n    var api = lift$1({\n      liftActionArgs: {\n        id: draggableId,\n        clientSelection: clientSelection,\n        movementMode: 'FLUID'\n      },\n      cleanup: function cleanup() {\n        return move$1.cancel();\n      },\n      actions: {\n        move: move$1\n      }\n    });\n    return _extends({}, api, {\n      move: move$1\n    });\n  }\n\n  function snapLift() {\n    var actions = {\n      moveUp: function moveUp$1() {\n        return tryDispatchWhenDragging(moveUp);\n      },\n      moveRight: function moveRight$1() {\n        return tryDispatchWhenDragging(moveRight);\n      },\n      moveDown: function moveDown$1() {\n        return tryDispatchWhenDragging(moveDown);\n      },\n      moveLeft: function moveLeft$1() {\n        return tryDispatchWhenDragging(moveLeft);\n      }\n    };\n    return lift$1({\n      liftActionArgs: {\n        id: draggableId,\n        clientSelection: getBorderBoxCenterPosition(el),\n        movementMode: 'SNAP'\n      },\n      cleanup: noop,\n      actions: actions\n    });\n  }\n\n  function abortPreDrag() {\n    var shouldRelease = _isActive({\n      expected: 'PRE_DRAG',\n      phase: phase,\n      isLockActive: isLockActive,\n      shouldWarn: true\n    });\n\n    if (shouldRelease) {\n      lockAPI.release();\n    }\n  }\n\n  var preDrag = {\n    isActive: function isActive() {\n      return _isActive({\n        expected: 'PRE_DRAG',\n        phase: phase,\n        isLockActive: isLockActive,\n        shouldWarn: false\n      });\n    },\n    shouldRespectForcePress: getShouldRespectForcePress,\n    fluidLift: fluidLift,\n    snapLift: snapLift,\n    abort: abortPreDrag\n  };\n  return preDrag;\n}\n\nvar defaultSensors = [useMouseSensor, useKeyboardSensor, useTouchSensor];\nfunction useSensorMarshal(_ref4) {\n  var contextId = _ref4.contextId,\n      store = _ref4.store,\n      registry = _ref4.registry,\n      customSensors = _ref4.customSensors,\n      enableDefaultSensors = _ref4.enableDefaultSensors;\n  var useSensors = [].concat(enableDefaultSensors ? defaultSensors : [], customSensors || []);\n  var lockAPI = useState(function () {\n    return create();\n  })[0];\n  var tryAbandonLock = useCallback(function tryAbandonLock(previous, current) {\n    if (previous.isDragging && !current.isDragging) {\n      lockAPI.tryAbandon();\n    }\n  }, [lockAPI]);\n  useIsomorphicLayoutEffect(function listenToStore() {\n    var previous = store.getState();\n    var unsubscribe = store.subscribe(function () {\n      var current = store.getState();\n      tryAbandonLock(previous, current);\n      previous = current;\n    });\n    return unsubscribe;\n  }, [lockAPI, store, tryAbandonLock]);\n  useIsomorphicLayoutEffect(function () {\n    return lockAPI.tryAbandon;\n  }, [lockAPI.tryAbandon]);\n  var canGetLock = useCallback(function (draggableId) {\n    return canStart({\n      lockAPI: lockAPI,\n      registry: registry,\n      store: store,\n      draggableId: draggableId\n    });\n  }, [lockAPI, registry, store]);\n  var tryGetLock = useCallback(function (draggableId, forceStop, options) {\n    return tryStart({\n      lockAPI: lockAPI,\n      registry: registry,\n      contextId: contextId,\n      store: store,\n      draggableId: draggableId,\n      forceSensorStop: forceStop,\n      sourceEvent: options && options.sourceEvent ? options.sourceEvent : null\n    });\n  }, [contextId, lockAPI, registry, store]);\n  var findClosestDraggableId = useCallback(function (event) {\n    return tryGetClosestDraggableIdFromEvent(contextId, event);\n  }, [contextId]);\n  var findOptionsForDraggable = useCallback(function (id) {\n    var entry = registry.draggable.findById(id);\n    return entry ? entry.options : null;\n  }, [registry.draggable]);\n  var tryReleaseLock = useCallback(function tryReleaseLock() {\n    if (!lockAPI.isClaimed()) {\n      return;\n    }\n\n    lockAPI.tryAbandon();\n\n    if (store.getState().phase !== 'IDLE') {\n      store.dispatch(flush());\n    }\n  }, [lockAPI, store]);\n  var isLockClaimed = useCallback(lockAPI.isClaimed, [lockAPI]);\n  var api = useMemo(function () {\n    return {\n      canGetLock: canGetLock,\n      tryGetLock: tryGetLock,\n      findClosestDraggableId: findClosestDraggableId,\n      findOptionsForDraggable: findOptionsForDraggable,\n      tryReleaseLock: tryReleaseLock,\n      isLockClaimed: isLockClaimed\n    };\n  }, [canGetLock, tryGetLock, findClosestDraggableId, findOptionsForDraggable, tryReleaseLock, isLockClaimed]);\n  useValidateSensorHooks(useSensors);\n\n  for (var i = 0; i < useSensors.length; i++) {\n    useSensors[i](api);\n  }\n}\n\nvar createResponders = function createResponders(props) {\n  return {\n    onBeforeCapture: props.onBeforeCapture,\n    onBeforeDragStart: props.onBeforeDragStart,\n    onDragStart: props.onDragStart,\n    onDragEnd: props.onDragEnd,\n    onDragUpdate: props.onDragUpdate\n  };\n};\n\nfunction getStore(lazyRef) {\n  !lazyRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find store from lazy ref') : invariant(false) : void 0;\n  return lazyRef.current;\n}\n\nfunction App(props) {\n  var contextId = props.contextId,\n      setCallbacks = props.setCallbacks,\n      sensors = props.sensors,\n      nonce = props.nonce,\n      dragHandleUsageInstructions = props.dragHandleUsageInstructions;\n  var lazyStoreRef = useRef(null);\n  useStartupValidation();\n  var lastPropsRef = usePrevious(props);\n  var getResponders = useCallback(function () {\n    return createResponders(lastPropsRef.current);\n  }, [lastPropsRef]);\n  var announce = useAnnouncer(contextId);\n  var dragHandleUsageInstructionsId = useHiddenTextElement({\n    contextId: contextId,\n    text: dragHandleUsageInstructions\n  });\n  var styleMarshal = useStyleMarshal(contextId, nonce);\n  var lazyDispatch = useCallback(function (action) {\n    getStore(lazyStoreRef).dispatch(action);\n  }, []);\n  var marshalCallbacks = useMemo(function () {\n    return bindActionCreators({\n      publishWhileDragging: publishWhileDragging,\n      updateDroppableScroll: updateDroppableScroll,\n      updateDroppableIsEnabled: updateDroppableIsEnabled,\n      updateDroppableIsCombineEnabled: updateDroppableIsCombineEnabled,\n      collectionStarting: collectionStarting\n    }, lazyDispatch);\n  }, [lazyDispatch]);\n  var registry = useRegistry();\n  var dimensionMarshal = useMemo(function () {\n    return createDimensionMarshal(registry, marshalCallbacks);\n  }, [registry, marshalCallbacks]);\n  var autoScroller = useMemo(function () {\n    return createAutoScroller(_extends({\n      scrollWindow: scrollWindow,\n      scrollDroppable: dimensionMarshal.scrollDroppable\n    }, bindActionCreators({\n      move: move\n    }, lazyDispatch)));\n  }, [dimensionMarshal.scrollDroppable, lazyDispatch]);\n  var focusMarshal = useFocusMarshal(contextId);\n  var store = useMemo(function () {\n    return createStore({\n      announce: announce,\n      autoScroller: autoScroller,\n      dimensionMarshal: dimensionMarshal,\n      focusMarshal: focusMarshal,\n      getResponders: getResponders,\n      styleMarshal: styleMarshal\n    });\n  }, [announce, autoScroller, dimensionMarshal, focusMarshal, getResponders, styleMarshal]);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (lazyStoreRef.current && lazyStoreRef.current !== store) {\n      process.env.NODE_ENV !== \"production\" ? warning('unexpected store change') : void 0;\n    }\n  }\n\n  lazyStoreRef.current = store;\n  var tryResetStore = useCallback(function () {\n    var current = getStore(lazyStoreRef);\n    var state = current.getState();\n\n    if (state.phase !== 'IDLE') {\n      current.dispatch(flush());\n    }\n  }, []);\n  var isDragging = useCallback(function () {\n    var state = getStore(lazyStoreRef).getState();\n    return state.isDragging || state.phase === 'DROP_ANIMATING';\n  }, []);\n  var appCallbacks = useMemo(function () {\n    return {\n      isDragging: isDragging,\n      tryAbort: tryResetStore\n    };\n  }, [isDragging, tryResetStore]);\n  setCallbacks(appCallbacks);\n  var getCanLift = useCallback(function (id) {\n    return canStartDrag(getStore(lazyStoreRef).getState(), id);\n  }, []);\n  var getIsMovementAllowed = useCallback(function () {\n    return isMovementAllowed(getStore(lazyStoreRef).getState());\n  }, []);\n  var appContext = useMemo(function () {\n    return {\n      marshal: dimensionMarshal,\n      focus: focusMarshal,\n      contextId: contextId,\n      canLift: getCanLift,\n      isMovementAllowed: getIsMovementAllowed,\n      dragHandleUsageInstructionsId: dragHandleUsageInstructionsId,\n      registry: registry\n    };\n  }, [contextId, dimensionMarshal, dragHandleUsageInstructionsId, focusMarshal, getCanLift, getIsMovementAllowed, registry]);\n  useSensorMarshal({\n    contextId: contextId,\n    store: store,\n    registry: registry,\n    customSensors: sensors,\n    enableDefaultSensors: props.enableDefaultSensors !== false\n  });\n  useEffect(function () {\n    return tryResetStore;\n  }, [tryResetStore]);\n  return React.createElement(AppContext.Provider, {\n    value: appContext\n  }, React.createElement(Provider, {\n    context: StoreContext,\n    store: store\n  }, props.children));\n}\n\nvar count$1 = 0;\nfunction reset$1() {\n  count$1 = 0;\n}\nfunction useInstanceCount() {\n  return useMemo(function () {\n    return \"\" + count$1++;\n  }, []);\n}\n\nfunction resetServerContext() {\n  reset$1();\n  reset();\n}\nfunction DragDropContext(props) {\n  var contextId = useInstanceCount();\n  var dragHandleUsageInstructions = props.dragHandleUsageInstructions || preset.dragHandleUsageInstructions;\n  return React.createElement(ErrorBoundary, null, function (setCallbacks) {\n    return React.createElement(App, {\n      nonce: props.nonce,\n      contextId: contextId,\n      setCallbacks: setCallbacks,\n      dragHandleUsageInstructions: dragHandleUsageInstructions,\n      enableDefaultSensors: props.enableDefaultSensors,\n      sensors: props.sensors,\n      onBeforeCapture: props.onBeforeCapture,\n      onBeforeDragStart: props.onBeforeDragStart,\n      onDragStart: props.onDragStart,\n      onDragUpdate: props.onDragUpdate,\n      onDragEnd: props.onDragEnd\n    }, props.children);\n  });\n}\n\nvar isEqual$1 = function isEqual(base) {\n  return function (value) {\n    return base === value;\n  };\n};\n\nvar isScroll = isEqual$1('scroll');\nvar isAuto = isEqual$1('auto');\nvar isVisible$1 = isEqual$1('visible');\n\nvar isEither = function isEither(overflow, fn) {\n  return fn(overflow.overflowX) || fn(overflow.overflowY);\n};\n\nvar isBoth = function isBoth(overflow, fn) {\n  return fn(overflow.overflowX) && fn(overflow.overflowY);\n};\n\nvar isElementScrollable = function isElementScrollable(el) {\n  var style = window.getComputedStyle(el);\n  var overflow = {\n    overflowX: style.overflowX,\n    overflowY: style.overflowY\n  };\n  return isEither(overflow, isScroll) || isEither(overflow, isAuto);\n};\n\nvar isBodyScrollable = function isBodyScrollable() {\n  if (process.env.NODE_ENV === 'production') {\n    return false;\n  }\n\n  var body = getBodyElement();\n  var html = document.documentElement;\n  !html ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n\n  if (!isElementScrollable(body)) {\n    return false;\n  }\n\n  var htmlStyle = window.getComputedStyle(html);\n  var htmlOverflow = {\n    overflowX: htmlStyle.overflowX,\n    overflowY: htmlStyle.overflowY\n  };\n\n  if (isBoth(htmlOverflow, isVisible$1)) {\n    return false;\n  }\n\n  process.env.NODE_ENV !== \"production\" ? warning(\"\\n    We have detected that your <body> element might be a scroll container.\\n    We have found no reliable way of detecting whether the <body> element is a scroll container.\\n    Under most circumstances a <body> scroll bar will be on the <html> element (document.documentElement)\\n\\n    Because we cannot determine if the <body> is a scroll container, and generally it is not one,\\n    we will be treating the <body> as *not* a scroll container\\n\\n    More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/how-we-detect-scroll-containers.md\\n  \") : void 0;\n  return false;\n};\n\nvar getClosestScrollable = function getClosestScrollable(el) {\n  if (el == null) {\n    return null;\n  }\n\n  if (el === document.body) {\n    return isBodyScrollable() ? el : null;\n  }\n\n  if (el === document.documentElement) {\n    return null;\n  }\n\n  if (!isElementScrollable(el)) {\n    return getClosestScrollable(el.parentElement);\n  }\n\n  return el;\n};\n\nvar checkForNestedScrollContainers = (function (scrollable) {\n  if (!scrollable) {\n    return;\n  }\n\n  var anotherScrollParent = getClosestScrollable(scrollable.parentElement);\n\n  if (!anotherScrollParent) {\n    return;\n  }\n\n  process.env.NODE_ENV !== \"production\" ? warning(\"\\n    Droppable: unsupported nested scroll container detected.\\n    A Droppable can only have one scroll parent (which can be itself)\\n    Nested scroll containers are currently not supported.\\n\\n    We hope to support nested scroll containers soon: https://github.com/atlassian/react-beautiful-dnd/issues/131\\n  \") : void 0;\n});\n\nvar getScroll$1 = (function (el) {\n  return {\n    x: el.scrollLeft,\n    y: el.scrollTop\n  };\n});\n\nvar getIsFixed = function getIsFixed(el) {\n  if (!el) {\n    return false;\n  }\n\n  var style = window.getComputedStyle(el);\n\n  if (style.position === 'fixed') {\n    return true;\n  }\n\n  return getIsFixed(el.parentElement);\n};\n\nvar getEnv = (function (start) {\n  var closestScrollable = getClosestScrollable(start);\n  var isFixedOnPage = getIsFixed(start);\n  return {\n    closestScrollable: closestScrollable,\n    isFixedOnPage: isFixedOnPage\n  };\n});\n\nvar getDroppableDimension = (function (_ref) {\n  var descriptor = _ref.descriptor,\n      isEnabled = _ref.isEnabled,\n      isCombineEnabled = _ref.isCombineEnabled,\n      isFixedOnPage = _ref.isFixedOnPage,\n      direction = _ref.direction,\n      client = _ref.client,\n      page = _ref.page,\n      closest = _ref.closest;\n\n  var frame = function () {\n    if (!closest) {\n      return null;\n    }\n\n    var scrollSize = closest.scrollSize,\n        frameClient = closest.client;\n    var maxScroll = getMaxScroll({\n      scrollHeight: scrollSize.scrollHeight,\n      scrollWidth: scrollSize.scrollWidth,\n      height: frameClient.paddingBox.height,\n      width: frameClient.paddingBox.width\n    });\n    return {\n      pageMarginBox: closest.page.marginBox,\n      frameClient: frameClient,\n      scrollSize: scrollSize,\n      shouldClipSubject: closest.shouldClipSubject,\n      scroll: {\n        initial: closest.scroll,\n        current: closest.scroll,\n        max: maxScroll,\n        diff: {\n          value: origin,\n          displacement: origin\n        }\n      }\n    };\n  }();\n\n  var axis = direction === 'vertical' ? vertical : horizontal;\n  var subject = getSubject({\n    page: page,\n    withPlaceholder: null,\n    axis: axis,\n    frame: frame\n  });\n  var dimension = {\n    descriptor: descriptor,\n    isCombineEnabled: isCombineEnabled,\n    isFixedOnPage: isFixedOnPage,\n    axis: axis,\n    isEnabled: isEnabled,\n    client: client,\n    page: page,\n    frame: frame,\n    subject: subject\n  };\n  return dimension;\n});\n\nvar getClient = function getClient(targetRef, closestScrollable) {\n  var base = getBox(targetRef);\n\n  if (!closestScrollable) {\n    return base;\n  }\n\n  if (targetRef !== closestScrollable) {\n    return base;\n  }\n\n  var top = base.paddingBox.top - closestScrollable.scrollTop;\n  var left = base.paddingBox.left - closestScrollable.scrollLeft;\n  var bottom = top + closestScrollable.scrollHeight;\n  var right = left + closestScrollable.scrollWidth;\n  var paddingBox = {\n    top: top,\n    right: right,\n    bottom: bottom,\n    left: left\n  };\n  var borderBox = expand(paddingBox, base.border);\n  var client = createBox({\n    borderBox: borderBox,\n    margin: base.margin,\n    border: base.border,\n    padding: base.padding\n  });\n  return client;\n};\n\nvar getDimension = (function (_ref) {\n  var ref = _ref.ref,\n      descriptor = _ref.descriptor,\n      env = _ref.env,\n      windowScroll = _ref.windowScroll,\n      direction = _ref.direction,\n      isDropDisabled = _ref.isDropDisabled,\n      isCombineEnabled = _ref.isCombineEnabled,\n      shouldClipSubject = _ref.shouldClipSubject;\n  var closestScrollable = env.closestScrollable;\n  var client = getClient(ref, closestScrollable);\n  var page = withScroll(client, windowScroll);\n\n  var closest = function () {\n    if (!closestScrollable) {\n      return null;\n    }\n\n    var frameClient = getBox(closestScrollable);\n    var scrollSize = {\n      scrollHeight: closestScrollable.scrollHeight,\n      scrollWidth: closestScrollable.scrollWidth\n    };\n    return {\n      client: frameClient,\n      page: withScroll(frameClient, windowScroll),\n      scroll: getScroll$1(closestScrollable),\n      scrollSize: scrollSize,\n      shouldClipSubject: shouldClipSubject\n    };\n  }();\n\n  var dimension = getDroppableDimension({\n    descriptor: descriptor,\n    isEnabled: !isDropDisabled,\n    isCombineEnabled: isCombineEnabled,\n    isFixedOnPage: env.isFixedOnPage,\n    direction: direction,\n    client: client,\n    page: page,\n    closest: closest\n  });\n  return dimension;\n});\n\nvar immediate = {\n  passive: false\n};\nvar delayed = {\n  passive: true\n};\nvar getListenerOptions = (function (options) {\n  return options.shouldPublishImmediately ? immediate : delayed;\n});\n\nfunction useRequiredContext(Context) {\n  var result = useContext(Context);\n  !result ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find required context') : invariant(false) : void 0;\n  return result;\n}\n\nvar getClosestScrollableFromDrag = function getClosestScrollableFromDrag(dragging) {\n  return dragging && dragging.env.closestScrollable || null;\n};\n\nfunction useDroppablePublisher(args) {\n  var whileDraggingRef = useRef(null);\n  var appContext = useRequiredContext(AppContext);\n  var uniqueId = useUniqueId('droppable');\n  var registry = appContext.registry,\n      marshal = appContext.marshal;\n  var previousRef = usePrevious(args);\n  var descriptor = useMemo(function () {\n    return {\n      id: args.droppableId,\n      type: args.type,\n      mode: args.mode\n    };\n  }, [args.droppableId, args.mode, args.type]);\n  var publishedDescriptorRef = useRef(descriptor);\n  var memoizedUpdateScroll = useMemo(function () {\n    return memoizeOne(function (x, y) {\n      !whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only update scroll when dragging') : invariant(false) : void 0;\n      var scroll = {\n        x: x,\n        y: y\n      };\n      marshal.updateDroppableScroll(descriptor.id, scroll);\n    });\n  }, [descriptor.id, marshal]);\n  var getClosestScroll = useCallback(function () {\n    var dragging = whileDraggingRef.current;\n\n    if (!dragging || !dragging.env.closestScrollable) {\n      return origin;\n    }\n\n    return getScroll$1(dragging.env.closestScrollable);\n  }, []);\n  var updateScroll = useCallback(function () {\n    var scroll = getClosestScroll();\n    memoizedUpdateScroll(scroll.x, scroll.y);\n  }, [getClosestScroll, memoizedUpdateScroll]);\n  var scheduleScrollUpdate = useMemo(function () {\n    return rafSchd(updateScroll);\n  }, [updateScroll]);\n  var onClosestScroll = useCallback(function () {\n    var dragging = whileDraggingRef.current;\n    var closest = getClosestScrollableFromDrag(dragging);\n    !(dragging && closest) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find scroll options while scrolling') : invariant(false) : void 0;\n    var options = dragging.scrollOptions;\n\n    if (options.shouldPublishImmediately) {\n      updateScroll();\n      return;\n    }\n\n    scheduleScrollUpdate();\n  }, [scheduleScrollUpdate, updateScroll]);\n  var getDimensionAndWatchScroll = useCallback(function (windowScroll, options) {\n    !!whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot collect a droppable while a drag is occurring') : invariant(false) : void 0;\n    var previous = previousRef.current;\n    var ref = previous.getDroppableRef();\n    !ref ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot collect without a droppable ref') : invariant(false) : void 0;\n    var env = getEnv(ref);\n    var dragging = {\n      ref: ref,\n      descriptor: descriptor,\n      env: env,\n      scrollOptions: options\n    };\n    whileDraggingRef.current = dragging;\n    var dimension = getDimension({\n      ref: ref,\n      descriptor: descriptor,\n      env: env,\n      windowScroll: windowScroll,\n      direction: previous.direction,\n      isDropDisabled: previous.isDropDisabled,\n      isCombineEnabled: previous.isCombineEnabled,\n      shouldClipSubject: !previous.ignoreContainerClipping\n    });\n    var scrollable = env.closestScrollable;\n\n    if (scrollable) {\n      scrollable.setAttribute(scrollContainer.contextId, appContext.contextId);\n      scrollable.addEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n\n      if (process.env.NODE_ENV !== 'production') {\n        checkForNestedScrollContainers(scrollable);\n      }\n    }\n\n    return dimension;\n  }, [appContext.contextId, descriptor, onClosestScroll, previousRef]);\n  var getScrollWhileDragging = useCallback(function () {\n    var dragging = whileDraggingRef.current;\n    var closest = getClosestScrollableFromDrag(dragging);\n    !(dragging && closest) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only recollect Droppable client for Droppables that have a scroll container') : invariant(false) : void 0;\n    return getScroll$1(closest);\n  }, []);\n  var dragStopped = useCallback(function () {\n    var dragging = whileDraggingRef.current;\n    !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop drag when no active drag') : invariant(false) : void 0;\n    var closest = getClosestScrollableFromDrag(dragging);\n    whileDraggingRef.current = null;\n\n    if (!closest) {\n      return;\n    }\n\n    scheduleScrollUpdate.cancel();\n    closest.removeAttribute(scrollContainer.contextId);\n    closest.removeEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n  }, [onClosestScroll, scheduleScrollUpdate]);\n  var scroll = useCallback(function (change) {\n    var dragging = whileDraggingRef.current;\n    !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot scroll when there is no drag') : invariant(false) : void 0;\n    var closest = getClosestScrollableFromDrag(dragging);\n    !closest ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot scroll a droppable with no closest scrollable') : invariant(false) : void 0;\n    closest.scrollTop += change.y;\n    closest.scrollLeft += change.x;\n  }, []);\n  var callbacks = useMemo(function () {\n    return {\n      getDimensionAndWatchScroll: getDimensionAndWatchScroll,\n      getScrollWhileDragging: getScrollWhileDragging,\n      dragStopped: dragStopped,\n      scroll: scroll\n    };\n  }, [dragStopped, getDimensionAndWatchScroll, getScrollWhileDragging, scroll]);\n  var entry = useMemo(function () {\n    return {\n      uniqueId: uniqueId,\n      descriptor: descriptor,\n      callbacks: callbacks\n    };\n  }, [callbacks, descriptor, uniqueId]);\n  useIsomorphicLayoutEffect(function () {\n    publishedDescriptorRef.current = entry.descriptor;\n    registry.droppable.register(entry);\n    return function () {\n      if (whileDraggingRef.current) {\n        process.env.NODE_ENV !== \"production\" ? warning('Unsupported: changing the droppableId or type of a Droppable during a drag') : void 0;\n        dragStopped();\n      }\n\n      registry.droppable.unregister(entry);\n    };\n  }, [callbacks, descriptor, dragStopped, entry, marshal, registry.droppable]);\n  useIsomorphicLayoutEffect(function () {\n    if (!whileDraggingRef.current) {\n      return;\n    }\n\n    marshal.updateDroppableIsEnabled(publishedDescriptorRef.current.id, !args.isDropDisabled);\n  }, [args.isDropDisabled, marshal]);\n  useIsomorphicLayoutEffect(function () {\n    if (!whileDraggingRef.current) {\n      return;\n    }\n\n    marshal.updateDroppableIsCombineEnabled(publishedDescriptorRef.current.id, args.isCombineEnabled);\n  }, [args.isCombineEnabled, marshal]);\n}\n\nfunction noop$2() {}\n\nvar empty = {\n  width: 0,\n  height: 0,\n  margin: noSpacing\n};\n\nvar getSize = function getSize(_ref) {\n  var isAnimatingOpenOnMount = _ref.isAnimatingOpenOnMount,\n      placeholder = _ref.placeholder,\n      animate = _ref.animate;\n\n  if (isAnimatingOpenOnMount) {\n    return empty;\n  }\n\n  if (animate === 'close') {\n    return empty;\n  }\n\n  return {\n    height: placeholder.client.borderBox.height,\n    width: placeholder.client.borderBox.width,\n    margin: placeholder.client.margin\n  };\n};\n\nvar getStyle = function getStyle(_ref2) {\n  var isAnimatingOpenOnMount = _ref2.isAnimatingOpenOnMount,\n      placeholder = _ref2.placeholder,\n      animate = _ref2.animate;\n  var size = getSize({\n    isAnimatingOpenOnMount: isAnimatingOpenOnMount,\n    placeholder: placeholder,\n    animate: animate\n  });\n  return {\n    display: placeholder.display,\n    boxSizing: 'border-box',\n    width: size.width,\n    height: size.height,\n    marginTop: size.margin.top,\n    marginRight: size.margin.right,\n    marginBottom: size.margin.bottom,\n    marginLeft: size.margin.left,\n    flexShrink: '0',\n    flexGrow: '0',\n    pointerEvents: 'none',\n    transition: animate !== 'none' ? transitions.placeholder : null\n  };\n};\n\nfunction Placeholder(props) {\n  var animateOpenTimerRef = useRef(null);\n  var tryClearAnimateOpenTimer = useCallback(function () {\n    if (!animateOpenTimerRef.current) {\n      return;\n    }\n\n    clearTimeout(animateOpenTimerRef.current);\n    animateOpenTimerRef.current = null;\n  }, []);\n  var animate = props.animate,\n      onTransitionEnd = props.onTransitionEnd,\n      onClose = props.onClose,\n      contextId = props.contextId;\n\n  var _useState = useState(props.animate === 'open'),\n      isAnimatingOpenOnMount = _useState[0],\n      setIsAnimatingOpenOnMount = _useState[1];\n\n  useEffect(function () {\n    if (!isAnimatingOpenOnMount) {\n      return noop$2;\n    }\n\n    if (animate !== 'open') {\n      tryClearAnimateOpenTimer();\n      setIsAnimatingOpenOnMount(false);\n      return noop$2;\n    }\n\n    if (animateOpenTimerRef.current) {\n      return noop$2;\n    }\n\n    animateOpenTimerRef.current = setTimeout(function () {\n      animateOpenTimerRef.current = null;\n      setIsAnimatingOpenOnMount(false);\n    });\n    return tryClearAnimateOpenTimer;\n  }, [animate, isAnimatingOpenOnMount, tryClearAnimateOpenTimer]);\n  var onSizeChangeEnd = useCallback(function (event) {\n    if (event.propertyName !== 'height') {\n      return;\n    }\n\n    onTransitionEnd();\n\n    if (animate === 'close') {\n      onClose();\n    }\n  }, [animate, onClose, onTransitionEnd]);\n  var style = getStyle({\n    isAnimatingOpenOnMount: isAnimatingOpenOnMount,\n    animate: props.animate,\n    placeholder: props.placeholder\n  });\n  return React.createElement(props.placeholder.tagName, {\n    style: style,\n    'data-rbd-placeholder-context-id': contextId,\n    onTransitionEnd: onSizeChangeEnd,\n    ref: props.innerRef\n  });\n}\n\nvar Placeholder$1 = React.memo(Placeholder);\n\nvar DroppableContext = React.createContext(null);\n\nfunction checkIsValidInnerRef(el) {\n  !(el && isHtmlElement(el)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"\\n    provided.innerRef has not been provided with a HTMLElement.\\n\\n    You can find a guide on using the innerRef callback functions at:\\n    https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/using-inner-ref.md\\n  \") : invariant(false) : void 0;\n}\n\nfunction isBoolean(value) {\n  return typeof value === 'boolean';\n}\n\nfunction runChecks(args, checks) {\n  checks.forEach(function (check) {\n    return check(args);\n  });\n}\n\nvar shared = [function required(_ref) {\n  var props = _ref.props;\n  !props.droppableId ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A Droppable requires a droppableId prop') : invariant(false) : void 0;\n  !(typeof props.droppableId === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"A Droppable requires a [string] droppableId. Provided: [\" + typeof props.droppableId + \"]\") : invariant(false) : void 0;\n}, function _boolean(_ref2) {\n  var props = _ref2.props;\n  !isBoolean(props.isDropDisabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isDropDisabled must be a boolean') : invariant(false) : void 0;\n  !isBoolean(props.isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isCombineEnabled must be a boolean') : invariant(false) : void 0;\n  !isBoolean(props.ignoreContainerClipping) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ignoreContainerClipping must be a boolean') : invariant(false) : void 0;\n}, function ref(_ref3) {\n  var getDroppableRef = _ref3.getDroppableRef;\n  checkIsValidInnerRef(getDroppableRef());\n}];\nvar standard = [function placeholder(_ref4) {\n  var props = _ref4.props,\n      getPlaceholderRef = _ref4.getPlaceholderRef;\n\n  if (!props.placeholder) {\n    return;\n  }\n\n  var ref = getPlaceholderRef();\n\n  if (ref) {\n    return;\n  }\n\n  process.env.NODE_ENV !== \"production\" ? warning(\"\\n      Droppable setup issue [droppableId: \\\"\" + props.droppableId + \"\\\"]:\\n      DroppableProvided > placeholder could not be found.\\n\\n      Please be sure to add the {provided.placeholder} React Node as a child of your Droppable.\\n      More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/api/droppable.md\\n    \") : void 0;\n}];\nvar virtual = [function hasClone(_ref5) {\n  var props = _ref5.props;\n  !props.renderClone ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Must provide a clone render function (renderClone) for virtual lists') : invariant(false) : void 0;\n}, function hasNoPlaceholder(_ref6) {\n  var getPlaceholderRef = _ref6.getPlaceholderRef;\n  !!getPlaceholderRef() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected virtual list to not have a placeholder') : invariant(false) : void 0;\n}];\nfunction useValidation(args) {\n  useDevSetupWarning(function () {\n    runChecks(args, shared);\n\n    if (args.props.mode === 'standard') {\n      runChecks(args, standard);\n    }\n\n    if (args.props.mode === 'virtual') {\n      runChecks(args, virtual);\n    }\n  });\n}\n\nvar AnimateInOut = function (_React$PureComponent) {\n  _inheritsLoose(AnimateInOut, _React$PureComponent);\n\n  function AnimateInOut() {\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 = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;\n    _this.state = {\n      isVisible: Boolean(_this.props.on),\n      data: _this.props.on,\n      animate: _this.props.shouldAnimate && _this.props.on ? 'open' : 'none'\n    };\n\n    _this.onClose = function () {\n      if (_this.state.animate !== 'close') {\n        return;\n      }\n\n      _this.setState({\n        isVisible: false\n      });\n    };\n\n    return _this;\n  }\n\n  AnimateInOut.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n    if (!props.shouldAnimate) {\n      return {\n        isVisible: Boolean(props.on),\n        data: props.on,\n        animate: 'none'\n      };\n    }\n\n    if (props.on) {\n      return {\n        isVisible: true,\n        data: props.on,\n        animate: 'open'\n      };\n    }\n\n    if (state.isVisible) {\n      return {\n        isVisible: true,\n        data: state.data,\n        animate: 'close'\n      };\n    }\n\n    return {\n      isVisible: false,\n      animate: 'close',\n      data: null\n    };\n  };\n\n  var _proto = AnimateInOut.prototype;\n\n  _proto.render = function render() {\n    if (!this.state.isVisible) {\n      return null;\n    }\n\n    var provided = {\n      onClose: this.onClose,\n      data: this.state.data,\n      animate: this.state.animate\n    };\n    return this.props.children(provided);\n  };\n\n  return AnimateInOut;\n}(React.PureComponent);\n\nvar zIndexOptions = {\n  dragging: 5000,\n  dropAnimating: 4500\n};\n\nvar getDraggingTransition = function getDraggingTransition(shouldAnimateDragMovement, dropping) {\n  if (dropping) {\n    return transitions.drop(dropping.duration);\n  }\n\n  if (shouldAnimateDragMovement) {\n    return transitions.snap;\n  }\n\n  return transitions.fluid;\n};\n\nvar getDraggingOpacity = function getDraggingOpacity(isCombining, isDropAnimating) {\n  if (!isCombining) {\n    return null;\n  }\n\n  return isDropAnimating ? combine.opacity.drop : combine.opacity.combining;\n};\n\nvar getShouldDraggingAnimate = function getShouldDraggingAnimate(dragging) {\n  if (dragging.forceShouldAnimate != null) {\n    return dragging.forceShouldAnimate;\n  }\n\n  return dragging.mode === 'SNAP';\n};\n\nfunction getDraggingStyle(dragging) {\n  var dimension = dragging.dimension;\n  var box = dimension.client;\n  var offset = dragging.offset,\n      combineWith = dragging.combineWith,\n      dropping = dragging.dropping;\n  var isCombining = Boolean(combineWith);\n  var shouldAnimate = getShouldDraggingAnimate(dragging);\n  var isDropAnimating = Boolean(dropping);\n  var transform = isDropAnimating ? transforms.drop(offset, isCombining) : transforms.moveTo(offset);\n  var style = {\n    position: 'fixed',\n    top: box.marginBox.top,\n    left: box.marginBox.left,\n    boxSizing: 'border-box',\n    width: box.borderBox.width,\n    height: box.borderBox.height,\n    transition: getDraggingTransition(shouldAnimate, dropping),\n    transform: transform,\n    opacity: getDraggingOpacity(isCombining, isDropAnimating),\n    zIndex: isDropAnimating ? zIndexOptions.dropAnimating : zIndexOptions.dragging,\n    pointerEvents: 'none'\n  };\n  return style;\n}\n\nfunction getSecondaryStyle(secondary) {\n  return {\n    transform: transforms.moveTo(secondary.offset),\n    transition: secondary.shouldAnimateDisplacement ? null : 'none'\n  };\n}\n\nfunction getStyle$1(mapped) {\n  return mapped.type === 'DRAGGING' ? getDraggingStyle(mapped) : getSecondaryStyle(mapped);\n}\n\nfunction getDimension$1(descriptor, el, windowScroll) {\n  if (windowScroll === void 0) {\n    windowScroll = origin;\n  }\n\n  var computedStyles = window.getComputedStyle(el);\n  var borderBox = el.getBoundingClientRect();\n  var client = calculateBox(borderBox, computedStyles);\n  var page = withScroll(client, windowScroll);\n  var placeholder = {\n    client: client,\n    tagName: el.tagName.toLowerCase(),\n    display: computedStyles.display\n  };\n  var displaceBy = {\n    x: client.marginBox.width,\n    y: client.marginBox.height\n  };\n  var dimension = {\n    descriptor: descriptor,\n    placeholder: placeholder,\n    displaceBy: displaceBy,\n    client: client,\n    page: page\n  };\n  return dimension;\n}\n\nfunction useDraggablePublisher(args) {\n  var uniqueId = useUniqueId('draggable');\n  var descriptor = args.descriptor,\n      registry = args.registry,\n      getDraggableRef = args.getDraggableRef,\n      canDragInteractiveElements = args.canDragInteractiveElements,\n      shouldRespectForcePress = args.shouldRespectForcePress,\n      isEnabled = args.isEnabled;\n  var options = useMemo(function () {\n    return {\n      canDragInteractiveElements: canDragInteractiveElements,\n      shouldRespectForcePress: shouldRespectForcePress,\n      isEnabled: isEnabled\n    };\n  }, [canDragInteractiveElements, isEnabled, shouldRespectForcePress]);\n  var getDimension = useCallback(function (windowScroll) {\n    var el = getDraggableRef();\n    !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot get dimension when no ref is set') : invariant(false) : void 0;\n    return getDimension$1(descriptor, el, windowScroll);\n  }, [descriptor, getDraggableRef]);\n  var entry = useMemo(function () {\n    return {\n      uniqueId: uniqueId,\n      descriptor: descriptor,\n      options: options,\n      getDimension: getDimension\n    };\n  }, [descriptor, getDimension, options, uniqueId]);\n  var publishedRef = useRef(entry);\n  var isFirstPublishRef = useRef(true);\n  useIsomorphicLayoutEffect(function () {\n    registry.draggable.register(publishedRef.current);\n    return function () {\n      return registry.draggable.unregister(publishedRef.current);\n    };\n  }, [registry.draggable]);\n  useIsomorphicLayoutEffect(function () {\n    if (isFirstPublishRef.current) {\n      isFirstPublishRef.current = false;\n      return;\n    }\n\n    var last = publishedRef.current;\n    publishedRef.current = entry;\n    registry.draggable.update(entry, last);\n  }, [entry, registry.draggable]);\n}\n\nfunction useValidation$1(props, contextId, getRef) {\n  useDevSetupWarning(function () {\n    function prefix(id) {\n      return \"Draggable[id: \" + id + \"]: \";\n    }\n\n    var id = props.draggableId;\n    !id ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Draggable requires a draggableId') : invariant(false) : void 0;\n    !(typeof id === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Draggable requires a [string] draggableId.\\n      Provided: [type: \" + typeof id + \"] (value: \" + id + \")\") : invariant(false) : void 0;\n    !isInteger(props.index) ? process.env.NODE_ENV !== \"production\" ? invariant(false, prefix(id) + \" requires an integer index prop\") : invariant(false) : void 0;\n\n    if (props.mapped.type === 'DRAGGING') {\n      return;\n    }\n\n    checkIsValidInnerRef(getRef());\n\n    if (props.isEnabled) {\n      !findDragHandle(contextId, id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, prefix(id) + \" Unable to find drag handle\") : invariant(false) : void 0;\n    }\n  });\n}\nfunction useClonePropValidation(isClone) {\n  useDev(function () {\n    var initialRef = useRef(isClone);\n    useDevSetupWarning(function () {\n      !(isClone === initialRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Draggable isClone prop value changed during component life') : invariant(false) : void 0;\n    }, [isClone]);\n  });\n}\n\nfunction preventHtml5Dnd(event) {\n  event.preventDefault();\n}\n\nfunction Draggable(props) {\n  var ref = useRef(null);\n  var setRef = useCallback(function (el) {\n    ref.current = el;\n  }, []);\n  var getRef = useCallback(function () {\n    return ref.current;\n  }, []);\n\n  var _useRequiredContext = useRequiredContext(AppContext),\n      contextId = _useRequiredContext.contextId,\n      dragHandleUsageInstructionsId = _useRequiredContext.dragHandleUsageInstructionsId,\n      registry = _useRequiredContext.registry;\n\n  var _useRequiredContext2 = useRequiredContext(DroppableContext),\n      type = _useRequiredContext2.type,\n      droppableId = _useRequiredContext2.droppableId;\n\n  var descriptor = useMemo(function () {\n    return {\n      id: props.draggableId,\n      index: props.index,\n      type: type,\n      droppableId: droppableId\n    };\n  }, [props.draggableId, props.index, type, droppableId]);\n  var children = props.children,\n      draggableId = props.draggableId,\n      isEnabled = props.isEnabled,\n      shouldRespectForcePress = props.shouldRespectForcePress,\n      canDragInteractiveElements = props.canDragInteractiveElements,\n      isClone = props.isClone,\n      mapped = props.mapped,\n      dropAnimationFinishedAction = props.dropAnimationFinished;\n  useValidation$1(props, contextId, getRef);\n  useClonePropValidation(isClone);\n\n  if (!isClone) {\n    var forPublisher = useMemo(function () {\n      return {\n        descriptor: descriptor,\n        registry: registry,\n        getDraggableRef: getRef,\n        canDragInteractiveElements: canDragInteractiveElements,\n        shouldRespectForcePress: shouldRespectForcePress,\n        isEnabled: isEnabled\n      };\n    }, [descriptor, registry, getRef, canDragInteractiveElements, shouldRespectForcePress, isEnabled]);\n    useDraggablePublisher(forPublisher);\n  }\n\n  var dragHandleProps = useMemo(function () {\n    return isEnabled ? {\n      tabIndex: 0,\n      role: 'button',\n      'aria-describedby': dragHandleUsageInstructionsId,\n      'data-rbd-drag-handle-draggable-id': draggableId,\n      'data-rbd-drag-handle-context-id': contextId,\n      draggable: false,\n      onDragStart: preventHtml5Dnd\n    } : null;\n  }, [contextId, dragHandleUsageInstructionsId, draggableId, isEnabled]);\n  var onMoveEnd = useCallback(function (event) {\n    if (mapped.type !== 'DRAGGING') {\n      return;\n    }\n\n    if (!mapped.dropping) {\n      return;\n    }\n\n    if (event.propertyName !== 'transform') {\n      return;\n    }\n\n    dropAnimationFinishedAction();\n  }, [dropAnimationFinishedAction, mapped]);\n  var provided = useMemo(function () {\n    var style = getStyle$1(mapped);\n    var onTransitionEnd = mapped.type === 'DRAGGING' && mapped.dropping ? onMoveEnd : null;\n    var result = {\n      innerRef: setRef,\n      draggableProps: {\n        'data-rbd-draggable-context-id': contextId,\n        'data-rbd-draggable-id': draggableId,\n        style: style,\n        onTransitionEnd: onTransitionEnd\n      },\n      dragHandleProps: dragHandleProps\n    };\n    return result;\n  }, [contextId, dragHandleProps, draggableId, mapped, onMoveEnd, setRef]);\n  var rubric = useMemo(function () {\n    return {\n      draggableId: descriptor.id,\n      type: descriptor.type,\n      source: {\n        index: descriptor.index,\n        droppableId: descriptor.droppableId\n      }\n    };\n  }, [descriptor.droppableId, descriptor.id, descriptor.index, descriptor.type]);\n  return children(provided, mapped.snapshot, rubric);\n}\n\nvar isStrictEqual = (function (a, b) {\n  return a === b;\n});\n\nvar whatIsDraggedOverFromResult = (function (result) {\n  var combine = result.combine,\n      destination = result.destination;\n\n  if (destination) {\n    return destination.droppableId;\n  }\n\n  if (combine) {\n    return combine.droppableId;\n  }\n\n  return null;\n});\n\nvar getCombineWithFromResult = function getCombineWithFromResult(result) {\n  return result.combine ? result.combine.draggableId : null;\n};\n\nvar getCombineWithFromImpact = function getCombineWithFromImpact(impact) {\n  return impact.at && impact.at.type === 'COMBINE' ? impact.at.combine.draggableId : null;\n};\n\nfunction getDraggableSelector() {\n  var memoizedOffset = memoizeOne(function (x, y) {\n    return {\n      x: x,\n      y: y\n    };\n  });\n  var getMemoizedSnapshot = memoizeOne(function (mode, isClone, draggingOver, combineWith, dropping) {\n    return {\n      isDragging: true,\n      isClone: isClone,\n      isDropAnimating: Boolean(dropping),\n      dropAnimation: dropping,\n      mode: mode,\n      draggingOver: draggingOver,\n      combineWith: combineWith,\n      combineTargetFor: null\n    };\n  });\n  var getMemoizedProps = memoizeOne(function (offset, mode, dimension, isClone, draggingOver, combineWith, forceShouldAnimate) {\n    return {\n      mapped: {\n        type: 'DRAGGING',\n        dropping: null,\n        draggingOver: draggingOver,\n        combineWith: combineWith,\n        mode: mode,\n        offset: offset,\n        dimension: dimension,\n        forceShouldAnimate: forceShouldAnimate,\n        snapshot: getMemoizedSnapshot(mode, isClone, draggingOver, combineWith, null)\n      }\n    };\n  });\n\n  var selector = function selector(state, ownProps) {\n    if (state.isDragging) {\n      if (state.critical.draggable.id !== ownProps.draggableId) {\n        return null;\n      }\n\n      var offset = state.current.client.offset;\n      var dimension = state.dimensions.draggables[ownProps.draggableId];\n      var draggingOver = whatIsDraggedOver(state.impact);\n      var combineWith = getCombineWithFromImpact(state.impact);\n      var forceShouldAnimate = state.forceShouldAnimate;\n      return getMemoizedProps(memoizedOffset(offset.x, offset.y), state.movementMode, dimension, ownProps.isClone, draggingOver, combineWith, forceShouldAnimate);\n    }\n\n    if (state.phase === 'DROP_ANIMATING') {\n      var completed = state.completed;\n\n      if (completed.result.draggableId !== ownProps.draggableId) {\n        return null;\n      }\n\n      var isClone = ownProps.isClone;\n      var _dimension = state.dimensions.draggables[ownProps.draggableId];\n      var result = completed.result;\n      var mode = result.mode;\n\n      var _draggingOver = whatIsDraggedOverFromResult(result);\n\n      var _combineWith = getCombineWithFromResult(result);\n\n      var duration = state.dropDuration;\n      var dropping = {\n        duration: duration,\n        curve: curves.drop,\n        moveTo: state.newHomeClientOffset,\n        opacity: _combineWith ? combine.opacity.drop : null,\n        scale: _combineWith ? combine.scale.drop : null\n      };\n      return {\n        mapped: {\n          type: 'DRAGGING',\n          offset: state.newHomeClientOffset,\n          dimension: _dimension,\n          dropping: dropping,\n          draggingOver: _draggingOver,\n          combineWith: _combineWith,\n          mode: mode,\n          forceShouldAnimate: null,\n          snapshot: getMemoizedSnapshot(mode, isClone, _draggingOver, _combineWith, dropping)\n        }\n      };\n    }\n\n    return null;\n  };\n\n  return selector;\n}\n\nfunction getSecondarySnapshot(combineTargetFor) {\n  return {\n    isDragging: false,\n    isDropAnimating: false,\n    isClone: false,\n    dropAnimation: null,\n    mode: null,\n    draggingOver: null,\n    combineTargetFor: combineTargetFor,\n    combineWith: null\n  };\n}\n\nvar atRest = {\n  mapped: {\n    type: 'SECONDARY',\n    offset: origin,\n    combineTargetFor: null,\n    shouldAnimateDisplacement: true,\n    snapshot: getSecondarySnapshot(null)\n  }\n};\n\nfunction getSecondarySelector() {\n  var memoizedOffset = memoizeOne(function (x, y) {\n    return {\n      x: x,\n      y: y\n    };\n  });\n  var getMemoizedSnapshot = memoizeOne(getSecondarySnapshot);\n  var getMemoizedProps = memoizeOne(function (offset, combineTargetFor, shouldAnimateDisplacement) {\n    if (combineTargetFor === void 0) {\n      combineTargetFor = null;\n    }\n\n    return {\n      mapped: {\n        type: 'SECONDARY',\n        offset: offset,\n        combineTargetFor: combineTargetFor,\n        shouldAnimateDisplacement: shouldAnimateDisplacement,\n        snapshot: getMemoizedSnapshot(combineTargetFor)\n      }\n    };\n  });\n\n  var getFallback = function getFallback(combineTargetFor) {\n    return combineTargetFor ? getMemoizedProps(origin, combineTargetFor, true) : null;\n  };\n\n  var getProps = function getProps(ownId, draggingId, impact, afterCritical) {\n    var visualDisplacement = impact.displaced.visible[ownId];\n    var isAfterCriticalInVirtualList = Boolean(afterCritical.inVirtualList && afterCritical.effected[ownId]);\n    var combine = tryGetCombine(impact);\n    var combineTargetFor = combine && combine.draggableId === ownId ? draggingId : null;\n\n    if (!visualDisplacement) {\n      if (!isAfterCriticalInVirtualList) {\n        return getFallback(combineTargetFor);\n      }\n\n      if (impact.displaced.invisible[ownId]) {\n        return null;\n      }\n\n      var change = negate(afterCritical.displacedBy.point);\n\n      var _offset = memoizedOffset(change.x, change.y);\n\n      return getMemoizedProps(_offset, combineTargetFor, true);\n    }\n\n    if (isAfterCriticalInVirtualList) {\n      return getFallback(combineTargetFor);\n    }\n\n    var displaceBy = impact.displacedBy.point;\n    var offset = memoizedOffset(displaceBy.x, displaceBy.y);\n    return getMemoizedProps(offset, combineTargetFor, visualDisplacement.shouldAnimate);\n  };\n\n  var selector = function selector(state, ownProps) {\n    if (state.isDragging) {\n      if (state.critical.draggable.id === ownProps.draggableId) {\n        return null;\n      }\n\n      return getProps(ownProps.draggableId, state.critical.draggable.id, state.impact, state.afterCritical);\n    }\n\n    if (state.phase === 'DROP_ANIMATING') {\n      var completed = state.completed;\n\n      if (completed.result.draggableId === ownProps.draggableId) {\n        return null;\n      }\n\n      return getProps(ownProps.draggableId, completed.result.draggableId, completed.impact, completed.afterCritical);\n    }\n\n    return null;\n  };\n\n  return selector;\n}\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n  var draggingSelector = getDraggableSelector();\n  var secondarySelector = getSecondarySelector();\n\n  var selector = function selector(state, ownProps) {\n    return draggingSelector(state, ownProps) || secondarySelector(state, ownProps) || atRest;\n  };\n\n  return selector;\n};\nvar mapDispatchToProps = {\n  dropAnimationFinished: dropAnimationFinished\n};\nvar ConnectedDraggable = connect(makeMapStateToProps, mapDispatchToProps, null, {\n  context: StoreContext,\n  pure: true,\n  areStatePropsEqual: isStrictEqual\n})(Draggable);\n\nfunction PrivateDraggable(props) {\n  var droppableContext = useRequiredContext(DroppableContext);\n  var isUsingCloneFor = droppableContext.isUsingCloneFor;\n\n  if (isUsingCloneFor === props.draggableId && !props.isClone) {\n    return null;\n  }\n\n  return React.createElement(ConnectedDraggable, props);\n}\nfunction PublicDraggable(props) {\n  var isEnabled = typeof props.isDragDisabled === 'boolean' ? !props.isDragDisabled : true;\n  var canDragInteractiveElements = Boolean(props.disableInteractiveElementBlocking);\n  var shouldRespectForcePress = Boolean(props.shouldRespectForcePress);\n  return React.createElement(PrivateDraggable, _extends({}, props, {\n    isClone: false,\n    isEnabled: isEnabled,\n    canDragInteractiveElements: canDragInteractiveElements,\n    shouldRespectForcePress: shouldRespectForcePress\n  }));\n}\n\nfunction Droppable(props) {\n  var appContext = useContext(AppContext);\n  !appContext ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find app context') : invariant(false) : void 0;\n  var contextId = appContext.contextId,\n      isMovementAllowed = appContext.isMovementAllowed;\n  var droppableRef = useRef(null);\n  var placeholderRef = useRef(null);\n  var children = props.children,\n      droppableId = props.droppableId,\n      type = props.type,\n      mode = props.mode,\n      direction = props.direction,\n      ignoreContainerClipping = props.ignoreContainerClipping,\n      isDropDisabled = props.isDropDisabled,\n      isCombineEnabled = props.isCombineEnabled,\n      snapshot = props.snapshot,\n      useClone = props.useClone,\n      updateViewportMaxScroll = props.updateViewportMaxScroll,\n      getContainerForClone = props.getContainerForClone;\n  var getDroppableRef = useCallback(function () {\n    return droppableRef.current;\n  }, []);\n  var setDroppableRef = useCallback(function (value) {\n    droppableRef.current = value;\n  }, []);\n  var getPlaceholderRef = useCallback(function () {\n    return placeholderRef.current;\n  }, []);\n  var setPlaceholderRef = useCallback(function (value) {\n    placeholderRef.current = value;\n  }, []);\n  useValidation({\n    props: props,\n    getDroppableRef: getDroppableRef,\n    getPlaceholderRef: getPlaceholderRef\n  });\n  var onPlaceholderTransitionEnd = useCallback(function () {\n    if (isMovementAllowed()) {\n      updateViewportMaxScroll({\n        maxScroll: getMaxWindowScroll()\n      });\n    }\n  }, [isMovementAllowed, updateViewportMaxScroll]);\n  useDroppablePublisher({\n    droppableId: droppableId,\n    type: type,\n    mode: mode,\n    direction: direction,\n    isDropDisabled: isDropDisabled,\n    isCombineEnabled: isCombineEnabled,\n    ignoreContainerClipping: ignoreContainerClipping,\n    getDroppableRef: getDroppableRef\n  });\n  var placeholder = React.createElement(AnimateInOut, {\n    on: props.placeholder,\n    shouldAnimate: props.shouldAnimatePlaceholder\n  }, function (_ref) {\n    var onClose = _ref.onClose,\n        data = _ref.data,\n        animate = _ref.animate;\n    return React.createElement(Placeholder$1, {\n      placeholder: data,\n      onClose: onClose,\n      innerRef: setPlaceholderRef,\n      animate: animate,\n      contextId: contextId,\n      onTransitionEnd: onPlaceholderTransitionEnd\n    });\n  });\n  var provided = useMemo(function () {\n    return {\n      innerRef: setDroppableRef,\n      placeholder: placeholder,\n      droppableProps: {\n        'data-rbd-droppable-id': droppableId,\n        'data-rbd-droppable-context-id': contextId\n      }\n    };\n  }, [contextId, droppableId, placeholder, setDroppableRef]);\n  var isUsingCloneFor = useClone ? useClone.dragging.draggableId : null;\n  var droppableContext = useMemo(function () {\n    return {\n      droppableId: droppableId,\n      type: type,\n      isUsingCloneFor: isUsingCloneFor\n    };\n  }, [droppableId, isUsingCloneFor, type]);\n\n  function getClone() {\n    if (!useClone) {\n      return null;\n    }\n\n    var dragging = useClone.dragging,\n        render = useClone.render;\n    var node = React.createElement(PrivateDraggable, {\n      draggableId: dragging.draggableId,\n      index: dragging.source.index,\n      isClone: true,\n      isEnabled: true,\n      shouldRespectForcePress: false,\n      canDragInteractiveElements: true\n    }, function (draggableProvided, draggableSnapshot) {\n      return render(draggableProvided, draggableSnapshot, dragging);\n    });\n    return ReactDOM.createPortal(node, getContainerForClone());\n  }\n\n  return React.createElement(DroppableContext.Provider, {\n    value: droppableContext\n  }, children(provided, snapshot), getClone());\n}\n\nvar isMatchingType = function isMatchingType(type, critical) {\n  return type === critical.droppable.type;\n};\n\nvar getDraggable = function getDraggable(critical, dimensions) {\n  return dimensions.draggables[critical.draggable.id];\n};\n\nvar makeMapStateToProps$1 = function makeMapStateToProps() {\n  var idleWithAnimation = {\n    placeholder: null,\n    shouldAnimatePlaceholder: true,\n    snapshot: {\n      isDraggingOver: false,\n      draggingOverWith: null,\n      draggingFromThisWith: null,\n      isUsingPlaceholder: false\n    },\n    useClone: null\n  };\n\n  var idleWithoutAnimation = _extends({}, idleWithAnimation, {\n    shouldAnimatePlaceholder: false\n  });\n\n  var getDraggableRubric = memoizeOne(function (descriptor) {\n    return {\n      draggableId: descriptor.id,\n      type: descriptor.type,\n      source: {\n        index: descriptor.index,\n        droppableId: descriptor.droppableId\n      }\n    };\n  });\n  var getMapProps = memoizeOne(function (id, isEnabled, isDraggingOverForConsumer, isDraggingOverForImpact, dragging, renderClone) {\n    var draggableId = dragging.descriptor.id;\n    var isHome = dragging.descriptor.droppableId === id;\n\n    if (isHome) {\n      var useClone = renderClone ? {\n        render: renderClone,\n        dragging: getDraggableRubric(dragging.descriptor)\n      } : null;\n      var _snapshot = {\n        isDraggingOver: isDraggingOverForConsumer,\n        draggingOverWith: isDraggingOverForConsumer ? draggableId : null,\n        draggingFromThisWith: draggableId,\n        isUsingPlaceholder: true\n      };\n      return {\n        placeholder: dragging.placeholder,\n        shouldAnimatePlaceholder: false,\n        snapshot: _snapshot,\n        useClone: useClone\n      };\n    }\n\n    if (!isEnabled) {\n      return idleWithoutAnimation;\n    }\n\n    if (!isDraggingOverForImpact) {\n      return idleWithAnimation;\n    }\n\n    var snapshot = {\n      isDraggingOver: isDraggingOverForConsumer,\n      draggingOverWith: draggableId,\n      draggingFromThisWith: null,\n      isUsingPlaceholder: true\n    };\n    return {\n      placeholder: dragging.placeholder,\n      shouldAnimatePlaceholder: true,\n      snapshot: snapshot,\n      useClone: null\n    };\n  });\n\n  var selector = function selector(state, ownProps) {\n    var id = ownProps.droppableId;\n    var type = ownProps.type;\n    var isEnabled = !ownProps.isDropDisabled;\n    var renderClone = ownProps.renderClone;\n\n    if (state.isDragging) {\n      var critical = state.critical;\n\n      if (!isMatchingType(type, critical)) {\n        return idleWithoutAnimation;\n      }\n\n      var dragging = getDraggable(critical, state.dimensions);\n      var isDraggingOver = whatIsDraggedOver(state.impact) === id;\n      return getMapProps(id, isEnabled, isDraggingOver, isDraggingOver, dragging, renderClone);\n    }\n\n    if (state.phase === 'DROP_ANIMATING') {\n      var completed = state.completed;\n\n      if (!isMatchingType(type, completed.critical)) {\n        return idleWithoutAnimation;\n      }\n\n      var _dragging = getDraggable(completed.critical, state.dimensions);\n\n      return getMapProps(id, isEnabled, whatIsDraggedOverFromResult(completed.result) === id, whatIsDraggedOver(completed.impact) === id, _dragging, renderClone);\n    }\n\n    if (state.phase === 'IDLE' && state.completed && !state.shouldFlush) {\n      var _completed = state.completed;\n\n      if (!isMatchingType(type, _completed.critical)) {\n        return idleWithoutAnimation;\n      }\n\n      var wasOver = whatIsDraggedOver(_completed.impact) === id;\n      var wasCombining = Boolean(_completed.impact.at && _completed.impact.at.type === 'COMBINE');\n      var isHome = _completed.critical.droppable.id === id;\n\n      if (wasOver) {\n        return wasCombining ? idleWithAnimation : idleWithoutAnimation;\n      }\n\n      if (isHome) {\n        return idleWithAnimation;\n      }\n\n      return idleWithoutAnimation;\n    }\n\n    return idleWithoutAnimation;\n  };\n\n  return selector;\n};\nvar mapDispatchToProps$1 = {\n  updateViewportMaxScroll: updateViewportMaxScroll\n};\n\nfunction getBody() {\n  !document.body ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'document.body is not ready') : invariant(false) : void 0;\n  return document.body;\n}\n\nvar defaultProps = {\n  mode: 'standard',\n  type: 'DEFAULT',\n  direction: 'vertical',\n  isDropDisabled: false,\n  isCombineEnabled: false,\n  ignoreContainerClipping: false,\n  renderClone: null,\n  getContainerForClone: getBody\n};\nvar ConnectedDroppable = connect(makeMapStateToProps$1, mapDispatchToProps$1, null, {\n  context: StoreContext,\n  pure: true,\n  areStatePropsEqual: isStrictEqual\n})(Droppable);\nConnectedDroppable.defaultProps = defaultProps;\n\nexport { DragDropContext, PublicDraggable as Draggable, ConnectedDroppable as Droppable, resetServerContext, useKeyboardSensor, useMouseSensor, useTouchSensor };\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcMenudot(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 21,\n    height: 21,\n    viewBox: \"0 0 21 21\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M15.9054 10.1889H15.9139M10.8111 10.1889H10.8196M5.71673 10.1889H5.72522M11.6601 10.1889C11.6601 10.6578 11.28 11.038 10.8111 11.038C10.3421 11.038 9.96201 10.6578 9.96201 10.1889C9.96201 9.71998 10.3421 9.33984 10.8111 9.33984C11.28 9.33984 11.6601 9.71998 11.6601 10.1889ZM16.7545 10.1889C16.7545 10.6578 16.3743 11.038 15.9054 11.038C15.4365 11.038 15.0563 10.6578 15.0563 10.1889C15.0563 9.71998 15.4365 9.33984 15.9054 9.33984C16.3743 9.33984 16.7545 9.71998 16.7545 10.1889ZM6.56579 10.1889C6.56579 10.6578 6.18565 11.038 5.71673 11.038C5.24781 11.038 4.86768 10.6578 4.86768 10.1889C4.86768 9.71998 5.24781 9.33984 5.71673 9.33984C6.18565 9.33984 6.56579 9.71998 6.56579 10.1889Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeWidth: 0.849056,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcMenudot);\nexport default __webpack_public_path__ + \"static/media/ic_menudot.b27a14e0e9b411431241245e793d17fb.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\n// Custom Text\nconst Menutext = ({ label }) => (\n  <p className=\"font-PlusJakartaSansRegular break-words leading-6 text-mTextColor text-sm\">\n    {label}\n  </p>\n);\n\nexport default Menutext;\n","import React from \"react\";\n// Custom Text\nconst Menutitletext = ({ label }) => (\n  <p className=\"font-PlusJakartaSansRegular text-mTextColorLogin text-sm\">\n    {label}\n  </p>\n);\n\nexport default Menutitletext;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgEiStatus(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12 3V6M12 18V21M6 12H3M21 12H18M5.63672 5.63672L7.75977 7.75977M16.2422 16.2422L18.3633 18.3633M18.3652 5.63477L16.2441 7.75586M7.75781 16.2422L5.63477 18.3652\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEiStatus);\nexport default __webpack_public_path__ + \"static/media/EI_status.070c8d1a5f8091a822ee69b4e38d9093.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgEiDate(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3 10H21M7 3V5M17 3V5M6.2 21H17.8C18.9201 21 19.4802 21 19.908 20.782C20.2843 20.5903 20.5903 20.2843 20.782 19.908C21 19.4802 21 18.9201 21 17.8V8.2C21 7.07989 21 6.51984 20.782 6.09202C20.5903 5.71569 20.2843 5.40973 19.908 5.21799C19.4802 5 18.9201 5 17.8 5H6.2C5.0799 5 4.51984 5 4.09202 5.21799C3.71569 5.40973 3.40973 5.71569 3.21799 6.09202C3 6.51984 3 7.07989 3 8.2V17.8C3 18.9201 3 19.4802 3.21799 19.908C3.40973 20.2843 3.71569 20.5903 4.09202 20.782C4.51984 21 5.07989 21 6.2 21Z\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEiDate);\nexport default __webpack_public_path__ + \"static/media/EI_date.13e7c7dbdefe37879a33b8402f7d4cea.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgEiDeal(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8 7V6.2C8 5.0799 8 4.51984 8.21799 4.09202C8.40973 3.71569 8.71569 3.40973 9.09202 3.21799C9.51984 3 10.0799 3 11.2 3H12.8C13.9201 3 14.4802 3 14.908 3.21799C15.2843 3.40973 15.5903 3.71569 15.782 4.09202C16 4.51984 16 5.0799 16 6.2V7M7 21V7.00169M17 21V7M7 7.00169C7.24373 7 7.50929 7 7.8 7H16M7 7.00169C5.83507 7.00979 5.16873 7.05658 4.63803 7.32698C4.07354 7.6146 3.6146 8.07354 3.32698 8.63803C3 9.27976 3 10.1198 3 11.8V16.2C3 17.8802 3 18.7202 3.32698 19.362C3.6146 19.9265 4.07354 20.3854 4.63803 20.673C5.27976 21 6.11984 21 7.8 21H16.2C17.8802 21 18.7202 21 19.362 20.673C19.9265 20.3854 20.3854 19.9265 20.673 19.362C21 18.7202 21 17.8802 21 16.2V11.8C21 10.1198 21 9.27976 20.673 8.63803C20.3854 8.07354 19.9265 7.6146 19.362 7.32698C18.7202 7 17.8802 7 16.2 7H17M17 7H16\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEiDeal);\nexport default __webpack_public_path__ + \"static/media/EI_deal.beb2ef052fcb85f8734d2e10c1bef1c8.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgEiSector(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8 7V6.2C8 5.0799 8 4.51984 8.21799 4.09202C8.40973 3.71569 8.71569 3.40973 9.09202 3.21799C9.51984 3 10.0799 3 11.2 3H12.8C13.9201 3 14.4802 3 14.908 3.21799C15.2843 3.40973 15.5903 3.71569 15.782 4.09202C16 4.51984 16 5.0799 16 6.2V7M7 21V7.00169M17 21V7M7 7.00169C7.24373 7 7.50929 7 7.8 7H16M7 7.00169C5.83507 7.00979 5.16873 7.05658 4.63803 7.32698C4.07354 7.6146 3.6146 8.07354 3.32698 8.63803C3 9.27976 3 10.1198 3 11.8V16.2C3 17.8802 3 18.7202 3.32698 19.362C3.6146 19.9265 4.07354 20.3854 4.63803 20.673C5.27976 21 6.11984 21 7.8 21H16.2C17.8802 21 18.7202 21 19.362 20.673C19.9265 20.3854 20.3854 19.9265 20.673 19.362C21 18.7202 21 17.8802 21 16.2V11.8C21 10.1198 21 9.27976 20.673 8.63803C20.3854 8.07354 19.9265 7.6146 19.362 7.32698C18.7202 7 17.8802 7 16.2 7H17M17 7H16\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEiSector);\nexport default __webpack_public_path__ + \"static/media/EI_sector.beb2ef052fcb85f8734d2e10c1bef1c8.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgEiPitchdeck(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M14 12C14 14.7614 11.7614 17 9 17H7C4.23858 17 2 14.7614 2 12C2 9.23858 4.23858 7 7 7H7.5M10 12C10 9.23858 12.2386 7 15 7H17C19.7614 7 22 9.23858 22 12C22 14.7614 19.7614 17 17 17H16.5\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEiPitchdeck);\nexport default __webpack_public_path__ + \"static/media/EI_pitchdeck.b87dc97c55cda822435fd136ff55bac9.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgEiOnepager(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M13 3H8.2C7.0799 3 6.51984 3 6.09202 3.21799C5.71569 3.40973 5.40973 3.71569 5.21799 4.09202C5 4.51984 5 5.0799 5 6.2V17.8C5 18.9201 5 19.4802 5.21799 19.908C5.40973 20.2843 5.71569 20.5903 6.09202 20.782C6.51984 21 7.0799 21 8.2 21H9M13 3L19 9M13 3V7.4C13 7.96005 13 8.24008 13.109 8.45399C13.2049 8.64215 13.3578 8.79513 13.546 8.89101C13.7599 9 14.0399 9 14.6 9H19M19 9V11M15 15C13.3431 15 12 16.3431 12 18C12 19.6569 13.3431 21 15 21M19 21C20.6569 21 22 19.6569 22 18C22 16.3431 20.6569 15 19 15M15 18H19\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEiOnepager);\nexport default __webpack_public_path__ + \"static/media/EI_onepager.a9fd85c62fe1be29838243fed77ffd92.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgEiRevenue(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3 10H21M7 3V5M17 3V5M6.2 21H17.8C18.9201 21 19.4802 21 19.908 20.782C20.2843 20.5903 20.5903 20.2843 20.782 19.908C21 19.4802 21 18.9201 21 17.8V8.2C21 7.07989 21 6.51984 20.782 6.09202C20.5903 5.71569 20.2843 5.40973 19.908 5.21799C19.4802 5 18.9201 5 17.8 5H6.2C5.0799 5 4.51984 5 4.09202 5.21799C3.71569 5.40973 3.40973 5.71569 3.21799 6.09202C3 6.51984 3 7.07989 3 8.2V17.8C3 18.9201 3 19.4802 3.21799 19.908C3.40973 20.2843 3.71569 20.5903 4.09202 20.782C4.51984 21 5.07989 21 6.2 21Z\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEiRevenue);\nexport default __webpack_public_path__ + \"static/media/EI_revenue.13e7c7dbdefe37879a33b8402f7d4cea.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgEiBurn(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M18 8.5V8.35417C18 6.50171 16.4983 5 14.6458 5H9.5C7.567 5 6 6.567 6 8.5C6 10.433 7.567 12 9.5 12H14.5C16.433 12 18 13.567 18 15.5C18 17.433 16.433 19 14.5 19H9.42708C7.53436 19 6 17.4656 6 15.5729V15.5M12 3V21\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEiBurn);\nexport default __webpack_public_path__ + \"static/media/EI_burn.736f92a35ca00e5eb560fab2025b5256.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcStar(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M11.244 4.174C11.4755 3.50808 11.5912 3.17513 11.7624 3.08285C11.9105 3.00298 12.0889 3.00298 12.237 3.08285C12.4081 3.17513 12.5239 3.50808 12.7553 4.174L14.2856 8.57639C14.3515 8.76592 14.3844 8.86068 14.4438 8.93125C14.4962 8.99359 14.5631 9.04218 14.6386 9.07278C14.7241 9.10743 14.8244 9.10947 15.025 9.11356L19.6848 9.20852C20.3896 9.22288 20.742 9.23007 20.8827 9.36432C21.0044 9.48051 21.0595 9.65014 21.0294 9.81569C20.9945 10.007 20.7136 10.2199 20.1518 10.6459L16.4377 13.4616C16.2778 13.5829 16.1979 13.6435 16.1491 13.7217C16.106 13.7909 16.0805 13.8695 16.0747 13.9507C16.0682 14.0427 16.0972 14.1387 16.1553 14.3308L17.505 18.7919C17.7091 19.4667 17.8112 19.8041 17.727 19.9793C17.6541 20.131 17.5098 20.2358 17.343 20.2583C17.1503 20.2842 16.861 20.0829 16.2823 19.6802L12.4566 17.0181C12.2919 16.9035 12.2096 16.8462 12.1201 16.8239C12.041 16.8043 11.9584 16.8043 11.8793 16.8239C11.7898 16.8462 11.7074 16.9035 11.5427 17.0181L7.71707 19.6802C7.13839 20.0829 6.84905 20.2842 6.65635 20.2583C6.48958 20.2358 6.34528 20.131 6.2724 19.9793C6.18818 19.8041 6.29025 19.4667 6.4944 18.7919L7.84405 14.3308C7.90215 14.1387 7.93121 14.0427 7.92466 13.9507C7.91889 13.8695 7.89334 13.7909 7.85026 13.7217C7.80148 13.6435 7.72154 13.5829 7.56164 13.4616L3.8476 10.6459C3.28581 10.2199 3.00491 10.007 2.97003 9.81569C2.93985 9.65014 2.99496 9.48051 3.11669 9.36432C3.25734 9.23007 3.60976 9.22289 4.31462 9.20852L8.97442 9.11356C9.17503 9.10947 9.27533 9.10743 9.36079 9.07278C9.43629 9.04218 9.50316 8.99359 9.55559 8.93125C9.61495 8.86068 9.64789 8.76592 9.71377 8.57639L11.244 4.174Z\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcStar);\nexport default __webpack_public_path__ + \"static/media/ic_star.472e44172db5caa90e5519164e29cea1.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcNoofinv(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M15.5 8.5L8.5 15.5M9.5 9.5H9.51M14.5 14.5H14.51M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12ZM10 9.5C10 9.77614 9.77614 10 9.5 10C9.22386 10 9 9.77614 9 9.5C9 9.22386 9.22386 9 9.5 9C9.77614 9 10 9.22386 10 9.5ZM15 14.5C15 14.7761 14.7761 15 14.5 15C14.2239 15 14 14.7761 14 14.5C14 14.2239 14.2239 14 14.5 14C14.7761 14 15 14.2239 15 14.5Z\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcNoofinv);\nexport default __webpack_public_path__ + \"static/media/ic_noofinv.b9efde1468b94353facf7139bf38d02d.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcLinkedin(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M11.6667 5.83301H13.3333C15.6345 5.83301 17.5 7.69849 17.5 9.99967C17.5 12.3009 15.6345 14.1663 13.3333 14.1663H11.6667M8.33333 5.83301H6.66667C4.36548 5.83301 2.5 7.69849 2.5 9.99967C2.5 12.3009 4.36548 14.1663 6.66667 14.1663H8.33333M6.66667 9.99967H13.3333\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcLinkedin);\nexport default __webpack_public_path__ + \"static/media/ic_linkedin.d86abf8158869fb41345c073e4f79614.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/ic_close.svg\";\nimport { Images } from \"../../Utils/Constants\";\nimport Menutext from \"../../Components/Menutext\";\nimport Menutitletext from \"../../Components/Menutitletext\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport { ReactComponent as EIStatusIcon } from \"../../assets/Images/EI_status.svg\";\nimport { ReactComponent as EIDateIcon } from \"../../assets/Images/EI_date.svg\";\nimport { ReactComponent as EIDealIcon } from \"../../assets/Images/EI_deal.svg\";\nimport { ReactComponent as EISectorIcon } from \"../../assets/Images/EI_sector.svg\";\nimport { ReactComponent as EIPitchdeckIcon } from \"../../assets/Images/EI_pitchdeck.svg\";\nimport { ReactComponent as EIOnepagerIcon } from \"../../assets/Images/EI_onepager.svg\";\nimport { ReactComponent as EIRevenueIcon } from \"../../assets/Images/EI_revenue.svg\";\nimport { ReactComponent as EIBurnIcon } from \"../../assets/Images/EI_burn.svg\";\nimport { ReactComponent as StarIcon } from \"../../assets/Images/ic_star.svg\";\nimport { ReactComponent as NoofIcon } from \"../../assets/Images/ic_noofinv.svg\";\nimport { ReactComponent as LinkedinIcon } from \"../../assets/Images/ic_linkedin.svg\";\nimport { toast } from \"react-toastify\";\n\nimport TextView from \"../../Components/TextView\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { mEditCRM } from \"../../Services/allAPI\";\n\nconst EditStartupInvestors = ({\n  show,\n  onConfirm,\n  onCancel,\n  getInvestors,\n  clickRefresh,\n}) => {\n  const { t } = useTranslation(\"\");\n  const [valutname, setValutName] = useState(\"\");\n  const [description, setDescription] = useState(\"\");\n  const [message, setMessage] = useState(getInvestors.notes);\n  const [loading, setLoading] = useState(false);\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  const submitClick = () => {\n    SaveAPICall();\n  };\n\n  // Service Page API call\n  const SaveAPICall = async () => {\n    setLoading(true);\n    const response = await mEditCRM({\n      user_name: UserInfoData.user_email,\n      investor_fav_id: getInvestors.investor_fav_id,\n      notes: message,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n\n        clickRefresh();\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      setLoading(false);\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const isDisable = !message;\n\n  const dialogRef = useRef();\n  // Close the modal when clicking outside of it\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      // Check if click is outside the dialog\n\n      if (dialogRef.current && !dialogRef.current.contains(event.target)) {\n        onCancel(); // Close the dialog if the click is outside\n      }\n    };\n\n    // Add the event listener when the dialog is shown\n    if (show) {\n      document.addEventListener(\"mousedown\", handleClickOutside);\n    }\n\n    // Remove the event listener when the dialog is closed\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [show, onCancel]);\n\n  return (\n    <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50 p-2 z-50\">\n      {/* max-w-sm */}\n      <div\n        className=\"bg-mDashboardBg rounded-md overflow-auto scrollbar-hide shadow-xl w-full  md:w-1/2 lg:w-1/3 py-4 pl-8 pr-4 h-90\"\n        ref={dialogRef}\n      >\n        <div className=\"justify-between flex \">\n          <div></div>\n\n          <div>\n            <button onClick={onCancel}>\n              <CloseIcon className=\"\" />\n            </button>\n          </div>\n        </div>\n\n        <div className=\"flex-row flex w-full justify-center items-center\">\n          <img\n            className=\"rounded-lg bg-white w-9 h-9\"\n            src={getInvestors.image}\n            alt=\"\"\n          />\n          <div className=\"h-full flex w-full ml-2 flex-col\">\n            <DashboardTitle label={getInvestors.investor_name} />\n\n            <div className=\"mt-1\">\n              <Menutitletext label={getInvestors.investor_type} />\n            </div>\n          </div>\n        </div>\n\n        <div className=\"mt-10 grid grid-cols-1 gap-5\">\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIStatusIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"Status\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              <Menutext label={getInvestors.investor_status} />\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <StarIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"industry\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              <div className=\"horizontal-listnew \">\n                {getInvestors.industryexisting_investments.map(\n                  (stagesitem, index) => (\n                    <div\n                      className=\"justify-start items-center flex\"\n                      key={stagesitem.industry}\n                    >\n                      <Menutext label={stagesitem.industry} />\n                      {getInvestors.industryexisting_investments.length === 1\n                        ? \"\"\n                        : getInvestors.industryexisting_investments.length ===\n                          index + 1\n                        ? \"\"\n                        : \",\"}\n                    </div>\n                  )\n                )}\n              </div>\n            </div>\n          </div>\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIDateIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"AppliedDate\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              <Menutext label={\"\"} />\n            </div>\n          </div>\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <NoofIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"Website\")} />\n              </div>\n            </div>\n\n            <div\n              className=\"w-3/5 cursor-pointer\"\n              onClick={() => {\n                window.open(getInvestors.website, \"_blank\");\n              }}\n            >\n              <p className=\"font-PlusJakartaSansRegular break-words  text-blue-500 underline hover:text-blue-700 text-sm\">\n                {getInvestors.website}\n              </p>\n            </div>\n          </div>\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <LinkedinIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"LinkedIn\")} />\n              </div>\n            </div>\n            <div\n              className=\"w-3/5 cursor-pointer\"\n              onClick={() => {\n                window.open(getInvestors.linkedin, \"_blank\");\n              }}\n            >\n              <p className=\"font-PlusJakartaSansRegular break-words  text-blue-500 underline hover:text-blue-700 text-sm\">\n                {getInvestors.linkedin}\n              </p>\n            </div>\n          </div>\n          <div>\n            <DashboardTitle label={t(\"Description\")} />\n            <div className=\"mt-3\">\n              <Menutext label={getInvestors.description} />\n            </div>\n          </div>\n        </div>\n        <div className=\"mt-5\">\n          <DashboardTitle label={t(\"Notes\")} />\n          <div className=\"mt-4 border border-mBorderColor rounded-md bg-white\">\n            <textarea\n              id=\"message\"\n              rows=\"5\"\n              value={message}\n              onChange={(e) => setMessage(e.target.value)}\n              // className=\"block h-28 resize-none overflow-y-auto w-full border-black  text-sm break-words text-mTextColor placeholder-mTextColorLogin px-2 py-3 text-start justify-start items-start  rounded-md   font-PlusJakartaSansRegular border-none focus:border-none  bg-white border-4 !outline-none\"\n              className=\"h-32 w-full resize-none overflow-y-auto  border-mBorderColor p-2 rounded-md text-sm break-words text-mTextColor placeholder-mTextColorLogin text-start justify-start items-start font-PlusJakartaSansRegular   bg-white !outline-none\"\n              placeholder={\"Write something...\"}\n            ></textarea>\n          </div>\n        </div>\n        <div className=\"mt-4\">\n          <PrimaryButton\n            label={t(\"save\")}\n            onClick={submitClick}\n            onDisable={isDisable}\n          ></PrimaryButton>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default EditStartupInvestors;\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\n\nimport { toast } from \"react-toastify\";\nimport { ReactComponent as MenuIcon } from \"../../assets/Images/ic_menudot.svg\";\nimport { ReactComponent as MenuEditIcon } from \"../../assets/Images/ic_menuedit.svg\";\nimport { ReactComponent as MenuDeleteIcon } from \"../../assets/Images/ic_menudelete.svg\";\nimport Menutext from \"../../Components/Menutext\";\nimport Menutitletext from \"../../Components/Menutitletext\";\nimport { Images } from \"../../Utils/Constants\";\nimport ServiceviewDialog from \"../ServicePage/ServiceviewDialog\";\nimport EditInvestors from \"./EditStartupInvestors\";\nimport DeleteDialog from \"../../Components/DeleteDialog\";\nimport {\n  mCRMBoard,\n  mDeleteCRM,\n  mgetCRMBoard,\n  mMoveCRMBoard,\n} from \"../../Services/allAPI\";\nimport Titletext from \"../../Components/Titletext\";\nimport Loader from \"../../Utils/Loader\";\nimport axios from \"axios\";\n\nconst BoardView = () => {\n  const [dashboarddate, setDashboardData] = useState([]);\n  const menuRef = useRef(null);\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const navigate = useNavigate();\n\n  const [ShowInvestorDetails, setShowInvestorDetails] = useState(false);\n  const [SelectInvestor, setSelectInvestor] = useState({});\n\n  //const [crmdata, setCRMdata] = useState([]);\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  let CRMdataItems = [];\n\n  // Data call\n\n  useEffect(() => {\n    BoardAPICall();\n  }, []);\n\n  // Service Page API call\n  const BoardAPICall = async () => {\n    setLoading(true);\n    const response = await mCRMBoard({\n      user_name: UserInfoData.user_email,\n    });\n    //alert(response.status);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        const shortlistedItem = {\n          title:\n            \"Shortlisted\" +\n            \"(\" +\n            response?.data.message.investors_board.shortlisted.length +\n            \")\",\n          items: response?.data.message.investors_board.shortlisted,\n          itemsTitle: \"Shortlisted\",\n        };\n        CRMdataItems.push(shortlistedItem);\n\n        const contactedItem = {\n          title:\n            \"Contacted\" +\n            \"(\" +\n            response?.data.message.investors_board.contacted.length +\n            \")\",\n          items: response?.data.message.investors_board.contacted,\n          itemsTitle: \"Contacted\",\n        };\n\n        CRMdataItems.push(contactedItem);\n\n        const pitchedItem = {\n          title:\n            \"Pitched\" +\n            \"(\" +\n            response?.data.message.investors_board.pitched.length +\n            \")\",\n          items: response?.data.message.investors_board.pitched,\n          itemsTitle: \"Pitched\",\n        };\n\n        CRMdataItems.push(pitchedItem);\n\n        const wonItem = {\n          title:\n            \"Won\" +\n            \"(\" +\n            response?.data.message.investors_board.won.length +\n            \")\",\n          items: response?.data.message.investors_board.won,\n          itemsTitle: \"Won\",\n        };\n\n        CRMdataItems.push(wonItem);\n\n        setColumns(CRMdataItems);\n\n        // console.log(CRMdataItems);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  //\n  // Close the menu on outside click\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (menuRef.current && !menuRef.current.contains(event.target)) {\n        setActiveMenu(null);\n      }\n    };\n    document.addEventListener(\"mousedown\", handleClickOutside);\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [menuRef]);\n\n  const [columns, setColumns] = useState(CRMdataItems);\n\n  const onDragEnd = (result, columns, setColumns) => {\n    if (!result.destination) return;\n    const { source, destination } = result;\n    if (source.droppableId !== destination.droppableId) {\n      const sourceColumn = columns[source.droppableId];\n      const destColumn = columns[destination.droppableId];\n      const sourceItems = [...sourceColumn.items];\n      const destItems = [...destColumn.items];\n      const [removed] = sourceItems.splice(source.index, 1);\n      destItems.splice(destination.index, 0, removed);\n\n      // console.log(\"Source Index:\", result.draggableId);\n      // console.log(\"Destination Index:\", destColumn.title);\n\n      // toast.success(result.draggableId);\n      // toast.success(destColumn.title);\n\n      ChangeCRMStatusAPICall(result.draggableId, destColumn.title);\n\n      setColumns({\n        ...columns,\n        [source.droppableId]: {\n          ...sourceColumn,\n          items: sourceItems,\n        },\n        [destination.droppableId]: {\n          ...destColumn,\n          items: destItems,\n        },\n      });\n    } else {\n      const column = columns[source.droppableId];\n      const copiedItems = [...column.items];\n      const [removed] = copiedItems.splice(source.index, 1);\n      copiedItems.splice(destination.index, 0, removed);\n      setColumns({\n        ...columns,\n        [source.droppableId]: {\n          ...column,\n          items: copiedItems,\n        },\n      });\n    }\n  };\n\n  // Service Page API call\n  const ChangeCRMStatusAPICall = async (investorid, movedstatus) => {\n    setLoading(true);\n    const response = await mMoveCRMBoard({\n      user_name: UserInfoData.user_email,\n      investor_fav_id: investorid,\n      moved_status: movedstatus,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        // console.log(CRMdataItems);\n        toast.success(response?.data.message.message);\n        BoardAPICall();\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const [gridshow, setGridShow] = useState(true);\n\n  const listclick = () => {\n    setGridShow(false);\n  };\n\n  const gridclick = () => {\n    setGridShow(true);\n  };\n\n  // Drag and drop end\n\n  const menuClick = (item) => {\n    setActiveMenu(activeMenu === item.id ? null : item.id);\n  };\n  const clickEdit = (item, event) => {\n    // alert(`Edit ${item.Task}`);\n    setSelectInvestor(item);\n    setActiveMenu(null);\n    setShowInvestorDetails(true);\n  };\n\n  const clickClose = () => {\n    setShowInvestorDetails(false);\n  };\n\n  const clickRefresh = () => {\n    setShowInvestorDetails(false);\n    BoardAPICall();\n  };\n\n  const clickDelete = (item, event) => {\n    setActiveMenu(null);\n    setSelectInvestor(item);\n    setIsDialogOpen(true);\n  };\n  const [activeMenu, setActiveMenu] = useState(null);\n\n  //Delete dialog\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n\n  const closeDialog = () => {\n    setIsDialogOpen(false);\n  };\n\n  const confirmDelete = () => {\n    // Perform delete action here\n    console.log(\"Item deleted\");\n    closeDialog();\n\n    DeleteAPICall();\n  };\n\n  // Service Page API call\n  const DeleteAPICall = async () => {\n    setLoading(true);\n    const response = await mDeleteCRM({\n      user_name: UserInfoData.user_email,\n      investor_fav_id: SelectInvestor.investor_fav_id,\n      delete: 1,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.status);\n        clickRefresh();\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div>\n          <p className=\"ml-5 font-PlusJakartaSansRegular text-mTextColorLogin text-sm\">\n            *Drag and drop the card to change its status\n          </p>\n\n          <DragDropContext\n            onDragEnd={(result) => onDragEnd(result, columns, setColumns)}\n          >\n            <div className=\"flex  md:mr-5\">\n              <div className=\"m-2 md:flex w-full md:min-h-svh \">\n                {Object.entries(columns).map(([columnId, column], index) => {\n                  return (\n                    <Droppable key={columnId} droppableId={columnId}>\n                      {(provided, snapshot) => (\n                        <div\n                          className=\"min-h-28 flex flex-col bg-white w-full md:min-w-80 rounded-2xl p-2 md:mr-4 mb-4 md:mb-1\"\n                          ref={provided.innerRef}\n                          {...provided.droppableProps}\n                        >\n                          <div className=\"p-2\">\n                            <DashboardTitle label={column.title} />\n                          </div>\n                          {column.items.length !== 0 ? (\n                            column.items.map((item, index) => (\n                              <Draggable\n                                key={item.id}\n                                draggableId={item.investor_fav_id}\n                                index={index}\n                              >\n                                {(provided, snapshot) => (\n                                  <div\n                                    className=\"p-2  rounded-lg mb-2 relative\"\n                                    ref={provided.innerRef}\n                                    {...provided.draggableProps}\n                                    {...provided.dragHandleProps}\n                                  >\n                                    <div className=\"flex min-h-28 flex-col justify-start items-start p-4 bg-mMenuSelect mt-3 rounded-xl w-full\">\n                                      <div\n                                        className=\"flex-row flex h-full w-full justify-center items-center\"\n                                        onClick={() => clickEdit(item)}\n                                      >\n                                        <img\n                                          className=\"rounded-full bg-white w-11 h-11 p-px \"\n                                          src={item.image}\n                                          alt=\"review\"\n                                        />\n                                        <div className=\"h-full flex w-full ml-2 flex-col\">\n                                          <Menutext\n                                            label={item.investor_name}\n                                          />\n\n                                          <div className=\"mt-1\">\n                                            <Menutitletext\n                                              label={item.investor_type}\n                                            />\n                                          </div>\n                                        </div>\n                                      </div>\n                                      <div className=\"mt-4 flex flex-row justify-between items-center w-full \">\n                                        <div>\n                                          <p\n                                            className={`font-PlusJakartaSansRegular ${\n                                              column.itemsTitle ===\n                                              \"Shortlisted\"\n                                                ? \"text-Shortlisted\"\n                                                : column.itemsTitle ===\n                                                  \"Contacted\"\n                                                ? \"text-Contacted\"\n                                                : column.itemsTitle ===\n                                                  \"Pitched\"\n                                                ? \"text-Pitched\"\n                                                : \"text-Won\"\n                                            }  text-base`}\n                                          >\n                                            {column.itemsTitle}\n                                          </p>\n                                        </div>\n                                        <div className=\"cursor-pointer\">\n                                          <MenuIcon\n                                            className=\"w-6 h-6 flex-shrink-0 \"\n                                            onClick={() => menuClick(item)}\n                                          />\n                                        </div>\n                                      </div>\n                                    </div>\n                                    {activeMenu === item.id && (\n                                      <div\n                                        className=\"absolute right-0 mt-1 w-40 bg-white p-3 rounded-xl shadow shadow-mChatbg z-10\"\n                                        ref={menuRef}\n                                      >\n                                        <ul>\n                                          <li\n                                            className=\"px-2 py-2  cursor-pointer\"\n                                            onClick={() => clickEdit(item)}\n                                          >\n                                            <div className=\"flex flex-row justify-start items-center\">\n                                              <MenuEditIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                                              <p className=\"font-PlusJakartaSansRegular  text-mTextColorLogin text-base ml-3\">\n                                                {t(\"EditDetails\")}{\" \"}\n                                              </p>\n                                            </div>\n                                          </li>\n                                          <li\n                                            className=\"px-2 py-2 mt-2 cursor-pointer\"\n                                            onClick={() => clickDelete(item)}\n                                          >\n                                            <div className=\"flex flex-row justify-start items-center\">\n                                              <MenuDeleteIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                                              <p className=\"font-PlusJakartaSansRegular  text-mTextColorLogin text-base ml-3\">\n                                                {t(\"Delete\")}{\" \"}\n                                              </p>\n                                            </div>\n                                          </li>\n                                        </ul>\n                                      </div>\n                                    )}\n                                  </div>\n                                )}\n                              </Draggable>\n                            ))\n                          ) : (\n                            <div className=\"w-full h-full justify-center items-center flex\"></div>\n                          )}\n\n                          {provided.placeholder}\n                        </div>\n                      )}\n                    </Droppable>\n                  );\n                })}\n              </div>\n            </div>\n          </DragDropContext>\n          {ShowInvestorDetails ? (\n            <EditInvestors\n              show={ShowInvestorDetails}\n              onCancel={clickClose}\n              clickRefresh={clickRefresh}\n              getInvestors={SelectInvestor}\n            />\n          ) : (\n            <div></div>\n          )}\n          {/* Delete Confirmation Dialog */}\n          <DeleteDialog\n            isOpen={isDialogOpen}\n            onCancel={closeDialog}\n            onConfirm={confirmDelete}\n            title={\"Delete Confirmation\"}\n            message={\" Are you sure you want to delete this item? \"}\n          />\n        </div>\n      )}\n    </>\n  );\n};\nexport default BoardView;\n\n// Design files\n\n// Data Start\n\n// const data = [\n//   {\n//     id: \"109\",\n//     Task: \"One\",\n\n//     Due_Date: \"25-May-2020\",\n//   },\n//   {\n//     id: \"2\",\n//     Task: \"Two\",\n\n//     Due_Date: \"26-May-2020\",\n//   },\n//   {\n//     id: \"3\",\n//     Task: \"Three\",\n\n//     Due_Date: \"27-May-2020\",\n//   },\n//   {\n//     id: \"4\",\n//     Task: \"Fouasfsafr\",\n\n//     Due_Date: \"23-Aug-2020\",\n//   },\n//   {\n//     id: \"5\",\n//     Task: \"Five\",\n\n//     Due_Date: \"05-Jan-2021\",\n//   },\n//   {\n//     id: \"6\",\n//     Task: \"Sixddd\",\n\n//     Due_Date: \"05-Jan-2021\",\n//   },\n//   {\n//     id: \"7\",\n//     Task: \"Seven\",\n\n//     Due_Date: \"05-Jan-2021\",\n//   },\n//   {\n//     id: \"8\",\n//     Task: \"Eigth\",\n\n//     Due_Date: \"05-Jan-2021\",\n//   },\n// ];\n\n// const columnsFromBackend = {\n//   [1]: {\n//     title: \"Deal\",\n//     items: data,\n//   },\n//   [2]: {\n//     title: \"Contacted\",\n//     items: [],\n//   },\n//   [3]: {\n//     title: \"Evaluating\",\n//     items: [],\n//   },\n//   [4]: {\n//     title: \"Diligence\",\n//     items: [],\n//   },\n//   [5]: {\n//     title: \"Investment Committee\",\n//     items: [],\n//   },\n//   [6]: {\n//     title: \"Invested\",\n//     items: [],\n//   },\n// };\n\n// const columnsFromBackend = [\n//   {\n//     title: \"Shortlisted\",\n//     items: data,\n//   },\n//   {\n//     title: \"Contacted\",\n//     items: [],\n//   },\n//   {\n//     title: \"Pitched\",\n//     items: [],\n//   },\n//   {\n//     title: \"Won\",\n//     items: [],\n//   },\n// ];\n\n//Data End\n","import React, {\n  useCallback,\n  useEffect,\n  useState,\n  useRef,\n  forwardRef,\n  useImperativeHandle,\n} from \"react\";\nimport PropTypes from \"prop-types\";\nimport Menutext from \"./Menutext\";\nimport { useTranslation } from \"react-i18next\";\n\nconst MultiRangeSlider = forwardRef(\n  ({ min, max, onChange, handleButtonClick }, ref) => {\n    const [minVal, setMinVal] = useState(min);\n    const [maxVal, setMaxVal] = useState(max);\n    const minValRef = useRef(min);\n    const maxValRef = useRef(max);\n    const range = useRef(null);\n    const { t } = useTranslation(\"\");\n\n    const buttonRef = useRef(null);\n\n    // Expose methods to parent component\n    useImperativeHandle(ref, () => ({\n      triggerButtonClick() {\n        if (buttonRef.current) {\n          buttonRef.current.click(); // Trigger button click\n        }\n      },\n    }));\n\n    const handleClick = () => {\n      setMinVal(min);\n      setMaxVal(max);\n      minValRef.current = min;\n      maxValRef.current = max;\n    };\n\n    // Convert to percentage\n    const getPercent = useCallback(\n      (value) => Math.round(((value - min) / (max - min)) * 100),\n      [min, max]\n    );\n\n    handleButtonClick = () => {\n      alert(\"Button in child component clicked!\");\n    };\n\n    // Set width of the range to decrease from the left side\n    useEffect(() => {\n      const minPercent = getPercent(minVal);\n      const maxPercent = getPercent(maxValRef.current);\n\n      if (range.current) {\n        range.current.style.left = `${minPercent}%`;\n        range.current.style.width = `${maxPercent - minPercent}%`;\n      }\n    }, [minVal, getPercent]);\n\n    // Set width of the range to decrease from the right side\n    useEffect(() => {\n      const minPercent = getPercent(minValRef.current);\n      const maxPercent = getPercent(maxVal);\n\n      if (range.current) {\n        range.current.style.width = `${maxPercent - minPercent}%`;\n      }\n    }, [maxVal, getPercent]);\n\n    // Get min and max values when their state changes\n    useEffect(() => {\n      onChange({ min: minVal, max: maxVal });\n    }, [minVal, maxVal, onChange]);\n\n    return (\n      <div>\n        <div className=\"w-full h-11  flex flex-row justify-between\">\n          <div className=\"justify-center items-center flex\">\n            <Menutext label={t(\"rupess\") + \" \" + minVal} />\n          </div>\n          <div className=\"justify-center items-center flex\">\n            <Menutext label={t(\"rupess\") + \" \" + maxVal} />\n          </div>\n        </div>\n\n        <div className=\"container mt-3\">\n          <input\n            type=\"range\"\n            min={min}\n            max={max}\n            value={minVal}\n            onChange={(event) => {\n              const value = Math.min(Number(event.target.value), maxVal - 1);\n              setMinVal(value);\n              minValRef.current = value;\n            }}\n            className=\"thumb thumb--left\"\n            style={{ zIndex: minVal > max - 100 && \"5\" }}\n          />\n          <input\n            type=\"range\"\n            min={min}\n            max={max}\n            value={maxVal}\n            onChange={(event) => {\n              const value = Math.max(Number(event.target.value), minVal + 1);\n              setMaxVal(value);\n              maxValRef.current = value;\n            }}\n            className=\"thumb thumb--right\"\n          />\n\n          <div className=\"slider\">\n            <div className=\"slider__track\" />\n            <div ref={range} className=\"slider__range\" />\n            {/* <div className=\"slider__left-value\">{minVal}</div>\n      <div className=\"slider__right-value\">{maxVal}</div> */}\n          </div>\n        </div>\n        <button ref={buttonRef} onClick={handleClick}></button>\n      </div>\n    );\n  }\n);\n\nMultiRangeSlider.propTypes = {\n  min: PropTypes.number.isRequired,\n  max: PropTypes.number.isRequired,\n  onChange: PropTypes.func.isRequired,\n};\n\nexport default MultiRangeSlider;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcTickgray(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3.33301 10.5096L7.43557 14.5837L16.6663 5.41699\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcTickgray);\nexport default __webpack_public_path__ + \"static/media/ic_tickgray.1a974d5e4c5baee3af8c1e287eeb33a8.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcCountry(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3 12H21M3 12C3 16.9706 7.02944 21 12 21M3 12C3 7.02944 7.02944 3 12 3M21 12C21 16.9706 16.9706 21 12 21M21 12C21 7.02944 16.9706 3 12 3M12 21C4.75561 13.08 8.98151 5.7 12 3M12 21C19.2444 13.08 15.0185 5.7 12 3\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcCountry);\nexport default __webpack_public_path__ + \"static/media/ic_country.3830757ed42057851dd18a79f84ed785.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcCalendar(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3 10H21M7 3V5M17 3V5M6.2 21H17.8C18.9201 21 19.4802 21 19.908 20.782C20.2843 20.5903 20.5903 20.2843 20.782 19.908C21 19.4802 21 18.9201 21 17.8V8.2C21 7.07989 21 6.51984 20.782 6.09202C20.5903 5.71569 20.2843 5.40973 19.908 5.21799C19.4802 5 18.9201 5 17.8 5H6.2C5.0799 5 4.51984 5 4.09202 5.21799C3.71569 5.40973 3.40973 5.71569 3.21799 6.09202C3 6.51984 3 7.07989 3 8.2V17.8C3 18.9201 3 19.4802 3.21799 19.908C3.40973 20.2843 3.71569 20.5903 4.09202 20.782C4.51984 21 5.07989 21 6.2 21Z\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcCalendar);\nexport default __webpack_public_path__ + \"static/media/ic_calendar.13e7c7dbdefe37879a33b8402f7d4cea.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcStage(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M22 8.00007H20M20 8.00007H19C17 6.00185 14 3.99986 12 6.00007M20 8.00007V16.0001M12 6.00007L8.99956 9.0017C8.9202 9.08109 8.88052 9.12078 8.84859 9.15592C8.15499 9.91901 8.15528 11.0844 8.84927 11.8471C8.88121 11.8822 8.92098 11.922 9.00031 12.0012C9.07967 12.0805 9.11936 12.1202 9.15449 12.1521C9.91743 12.8455 11.0824 12.8453 11.8451 12.1517C11.8802 12.1198 11.9199 12.0801 11.9992 12.0008L12.9996 11.0004M12 6.00007C10 3.99986 7 6.00192 5 8.00013H4M2 8.00013H4M4 8.00013V16.0001M20 16.0001V19.0001H22M20 16.0001H17.1716M15 13.0001L16.5 14.5001C16.5796 14.5797 16.6195 14.6196 16.6515 14.6548C17.3449 15.4176 17.3449 16.5825 16.6515 17.3453C16.6195 17.3806 16.5796 17.4205 16.5 17.5001C16.4204 17.5797 16.3805 17.6196 16.3453 17.6516C15.5824 18.345 14.4176 18.345 13.6547 17.6516C13.6195 17.6196 13.5796 17.5797 13.5 17.5001L13 17.0001C12.4548 17.5453 12.1821 17.8179 11.888 17.9637C11.3285 18.241 10.6715 18.241 10.112 17.9637C9.81788 17.8179 9.54525 17.5453 9 17.0001C8.31085 17.9189 6.89563 17.7913 6.38197 16.764L6 16.0001H4M4 16.0001V19.0001H2\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcStage);\nexport default __webpack_public_path__ + \"static/media/ic_stage.96b3d6d3145f18cd73cc6f0b05758c68.svg\";\nexport { ForwardRef as ReactComponent };","import React, {\n  useEffect,\n  useRef,\n  forwardRef,\n  useImperativeHandle,\n} from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport Menutitletext from \"../../Components/Menutitletext\";\nimport MultiRangeSlider from \"../../Components/MultiRangeSlider\";\nimport Menutext from \"../../Components/Menutext\";\nimport { Images, isEmptyObject } from \"../../Utils/Constants\";\nimport {\n  mgetInvestordb,\n  mInvestordb,\n  mInvestorShortlist,\n} from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport Loader from \"../../Utils/Loader\";\nimport { ReactComponent as DottedIcon } from \"../../assets/Images/ic_dotted.svg\";\nimport { ReactComponent as TickIcon } from \"../../assets/Images/ic_tickgray.svg\";\nimport { ReactComponent as UserIcon } from \"../../assets/Images/ic_user.svg\";\nimport ViewSuggestedInvestors from \"./ViewSuggestedStartupInvestors\";\nimport Titletext from \"../../Components/Titletext\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport ViewSuggestedStartupInvestors from \"./ViewSuggestedStartupInvestors\";\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/ic_close.svg\";\n\nconst SuggestedStartupInvestors = ({ onShowDialog, onDialogCancel }) => {\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const navigate = useNavigate();\n  const [rangeValues, setRangeValues] = useState([0, 1000]);\n  const [investordb, setinvestordb] = useState([]);\n  const menuRef = useRef(null);\n  const [ShowInvestorDetails, setShowInvestorDetails] = useState(false);\n  const [ShowInvestorItem, setShowInvestorItem] = useState({});\n  const [showDialog, setshowDialog] = useState(false);\n  const [checkSizeMin, setcheckSizeMin] = useState(0);\n  const [checkSizeMax, setcheckSizeMax] = useState(1000);\n\n  //alert(onShowDialog);\n\n  // Filter Function Start\n\n  //Filter Function  End\n\n  // Slider Range select\n  const handleRangeChange = (values) => {\n    // setRangeValues(values);\n    setcheckSizeMin(values.min);\n    setcheckSizeMax(values.max);\n    console.log(\"Selected \" + values.min + \"  \" + values.max);\n  };\n\n  // Close the menu on outside click\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (menuRef.current && !menuRef.current.contains(event.target)) {\n        setActiveMenu(null);\n      }\n    };\n    document.addEventListener(\"mousedown\", handleClickOutside);\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [menuRef]);\n\n  //Get suggested Investor\n\n  useEffect(() => {\n    ServicePageAPICall();\n  }, []);\n\n  useEffect(() => {\n    if (onShowDialog) {\n      setshowDialog(true);\n    } else {\n      setshowDialog(false);\n    }\n    console.log(\"Dialog state changed: \", onShowDialog);\n  }, [onShowDialog]);\n\n  // Service Page API call\n  const ServicePageAPICall = async () => {\n    setLoading(true);\n    const response = await mInvestordb({\n      // user_name: UserInfoData.user_email,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setinvestordb(response?.data.message.investor_db);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const [activeMenu, setActiveMenu] = useState(null);\n\n  const toggleMenu = (id) => {\n    setActiveMenu(activeMenu === id ? null : id);\n  };\n\n  const clickShortlist = (item, event) => {\n    setActiveMenu(null);\n    ShortlistAPICall(item.id);\n  };\n\n  const clickViewInvestor = (item, event) => {\n    setActiveMenu(null);\n    setShowInvestorDetails(true);\n    setShowInvestorItem(item);\n    // alert(\"dskdhg\");\n  };\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  // Shortlist API Call\n  const ShortlistAPICall = async (id) => {\n    setLoading(true);\n    const response = await mInvestorShortlist({\n      user_name: UserInfoData.user_email,\n      investor_id: id,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.status);\n        ServicePageAPICall();\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const clickClose = () => {\n    setShowInvestorDetails(false);\n  };\n\n  // Investor Type Filter start\n  const InvestorType = [\n    { id: 1, name: \"Angel Investor\" },\n    { id: 2, name: \"Venture Capital\" },\n    { id: 3, name: \"Family Office\" },\n    { id: 4, name: \"Private Equity\" },\n  ];\n\n  // State to keep track of selected checkboxes\n  const [selectedInvestorType, setSelectedInvestorType] = useState([]);\n\n  // Handle checkbox change\n  const handleInvestorTypeCheckbox = (id) => {\n    setSelectedInvestorType((prevSelected) => {\n      if (prevSelected.includes(id)) {\n        // Remove from selected if already selected\n        return prevSelected.filter((filterId) => filterId !== id);\n      } else {\n        // Add to selected if not already selected\n        return [...prevSelected, id];\n      }\n    });\n  };\n\n  // Display the selected filters\n  var selectedFilterNames = InvestorType.filter((filter) =>\n    selectedInvestorType.includes(filter.id)\n  ).map((filter) => filter.name);\n\n  // Investor Type Filter End\n\n  // stage Filter Start\n  const stage = [\n    { id: 11, name: \"FMCG\" },\n    { id: 12, name: \"IT & ITES\" },\n    { id: 13, name: \" Agri-business\" },\n    { id: 14, name: \"Manufacturing\" },\n    { id: 15, name: \"BFSI\" },\n    { id: 16, name: \"Engg. & Construction\" },\n    { id: 17, name: \"Retail\" },\n    { id: 18, name: \"Food & Beverages\" },\n    { id: 19, name: \"Others\" },\n  ];\n\n  // State to keep track of selected checkboxes\n  const [selectedStage, setSelectedStage] = useState([]);\n\n  // Handle checkbox change\n  const handleStageCheckbox = (id) => {\n    setSelectedStage((prevSelected) => {\n      if (prevSelected.includes(id)) {\n        // Remove from selected if already selected\n        return prevSelected.filter((filterId) => filterId !== id);\n      } else {\n        // Add to selected if not already selected\n        return [...prevSelected, id];\n      }\n    });\n  };\n\n  // Display the selected filters\n  var selectedStageNames = stage\n    .filter((filter) => selectedStage.includes(filter.id))\n    .map((filter) => filter.name);\n\n  // stage Filter End\n\n  const filterClick = () => {\n    console.log(checkSizeMin);\n    console.log(checkSizeMax);\n    console.log(selectedFilterNames);\n    console.log(selectedStageNames);\n  };\n\n  const clearall = () => {\n    setSelectedStage([]);\n    setSelectedInvestorType([]);\n\n    if (childRef.current) {\n      childRef.current.triggerButtonClick(); // Call method exposed by child\n    }\n  };\n\n  const childRef = useRef(null);\n\n  const onCancel = () => {\n    setshowDialog(false);\n  };\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div className=\"w-full h-full flex flex-row\">\n          {/* Left Section (Filter) */}\n          <div className=\"hidden lg:block w-1/5 bg-white rounded-lg p-4 overflow-y-auto max-h-screen scrollbar-hide\">\n            <div className=\"grid grid-cols-1 gap-7\">\n              {/* Filter Section */}\n              <div className=\"flex flex-row justify-between\">\n                <DashboardTitle label={t(\"Filter\")} />\n                <div\n                  className=\"justify-center items-center flex cursor-pointer\"\n                  onClick={clearall}\n                >\n                  <p className=\"font-PlusJakartaSansRegular text-mButtonColor text-xs\">\n                    {t(\"Clearall\")}\n                  </p>\n                </div>\n              </div>\n\n              <div className=\"hidden\">\n                <Menutitletext label={t(\"CheckSize\")} />\n                <div className=\"flex flex-col items-center w-full mt-2\">\n                  <div className=\"mt-3 relative\">\n                    <MultiRangeSlider\n                      min={0}\n                      max={1000}\n                      ref={childRef}\n                      onChange={handleRangeChange}\n                    />\n                  </div>\n                </div>\n              </div>\n\n              <div className=\"w-full h-px bg-mBorderColor\"></div>\n\n              {/* Investor Type Section */}\n              <Menutitletext label={t(\"InvestorType\")} />\n              <div className=\"mt-5 grid grid-cols-1 gap-5\">\n                {InvestorType.map((item) => (\n                  <div className=\"flex flex-col\" key={item.id}>\n                    <div className=\"flex items-center justify-start\">\n                      <label className=\"text-sm text-mTextColorLogin font-PlusJakartaSansRegular flex items-center\">\n                        <input\n                          type=\"checkbox\"\n                          value={item.id}\n                          checked={selectedInvestorType.includes(item.id)}\n                          onChange={() => handleInvestorTypeCheckbox(item.id)}\n                          className=\"h-4 w-4 mr-2 font-PlusJakartaSansRegular\"\n                        />\n                        {item.name}\n                      </label>\n                    </div>\n                  </div>\n                ))}\n              </div>\n\n              <div className=\"w-full h-px bg-mBorderColor\"></div>\n\n              {/* Industry Section */}\n              <Menutitletext label={t(\"industry\")} />\n              <div className=\"mt-5 grid grid-cols-1 gap-5\">\n                {stage.map((item) => (\n                  <div className=\"flex flex-col\" key={item.id}>\n                    <div className=\"flex items-center justify-start\">\n                      <label className=\"text-sm text-mTextColorLogin font-PlusJakartaSansRegular flex items-center\">\n                        <input\n                          type=\"checkbox\"\n                          value={item.id}\n                          checked={selectedStage.includes(item.id)}\n                          onChange={() => handleStageCheckbox(item.id)}\n                          className=\"h-4 w-4 mr-2 font-PlusJakartaSansRegular\"\n                        />\n                        {item.name}\n                      </label>\n                    </div>\n                  </div>\n                ))}\n              </div>\n\n              <div className=\"w-full h-px bg-mBorderColor\"></div>\n\n              <div>\n                <button\n                  className=\"bg-mButtonColor text-white text-base px-5 rounded-md w-full h-9 font-PlusJakartaSansSemiBold\"\n                  onClick={filterClick}\n                >\n                  {t(\"submit\")}\n                </button>\n              </div>\n            </div>\n            <div className=\"h-9\"></div>\n          </div>\n\n          {/* Right Section (Investor List) */}\n          <div className=\"w-full lg:w-4/5 h-full lg:ml-5 overflow-y-auto max-h-screen scrollbar-hide\">\n            {investordb.length !== 0 ? (\n              <div className=\"grid-containeritemsugginv\">\n                {investordb.map((item) => (\n                  <div key={item.id} className=\"grid-itemsugginv bg-white p-3\">\n                    <div className=\"grid grid-cols-1 gap-5\">\n                      <div className=\"p-4 flex flex-row justify-between\">\n                        <div\n                          className=\"flex-row flex h-full w-full justify-center items-center\"\n                          onClick={() => clickViewInvestor(item)}\n                        >\n                          <img\n                            className=\"rounded-lg bg-white w-9 h-9\"\n                            src={\n                              item.image.length === 0\n                                ? Images.image\n                                : item.image\n                            }\n                            alt=\"\"\n                          />\n                          <div className=\"h-full flex w-full ml-2 flex-col\">\n                            <Menutext label={item.investor_name} />\n                            <div className=\"mt-1\">\n                              <Menutitletext label={item.investor_type} />\n                            </div>\n                          </div>\n                        </div>\n                        <div>\n                          <DottedIcon\n                            className=\"w-6 h-6 flex-shrink-0 cursor-pointer\"\n                            onClick={() => toggleMenu(item.id)}\n                          />\n                        </div>\n                      </div>\n\n                      <div className=\"w-full h-px bg-mBorderColor\"></div>\n\n                      <div\n                        className=\"grid grid-cols-3 gap-3 w-full\"\n                        onClick={() => clickViewInvestor(item)}\n                      >\n                        {item.funding_stages.map((stagesitem) => (\n                          <div\n                            className=\"p-2 rounded-md bg-mCardbgColor justify-center items-center flex\"\n                            key={stagesitem.id}\n                          >\n                            <p className=\"font-PlusJakartaSansRegular text-mTextColorLogin text-xs\">\n                              {stagesitem.funding_stages}\n                            </p>\n                          </div>\n                        ))}\n                      </div>\n                    </div>\n                    {activeMenu === item.id && (\n                      <div\n                        className=\"popup-menuValutdetails right-2 mt-2 w-40 bg-white p-3 rounded-xl shadow-xl shadow-mChatbg z-10\"\n                        ref={menuRef}\n                      >\n                        <ul>\n                          <li\n                            className=\"px-2 py-2 mt-2 cursor-pointer\"\n                            onClick={() => clickShortlist(item)}\n                          >\n                            <div className=\"flex flex-row justify-start items-center\">\n                              <TickIcon className=\"w-5 h-5 flex-shrink-0\" />\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColorLogin text-base ml-3\">\n                                {t(\"Shortlist\")}\n                              </p>\n                            </div>\n                          </li>\n                          <li\n                            className=\"px-2 py-2 mt-2 cursor-pointer\"\n                            onClick={() => clickViewInvestor(item)}\n                          >\n                            <div className=\"flex flex-row justify-start items-center\">\n                              <UserIcon className=\"w-5 h-5 flex-shrink-0\" />\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColorLogin text-base ml-3\">\n                                {t(\"ViewProfile\")}\n                              </p>\n                            </div>\n                          </li>\n                        </ul>\n                      </div>\n                    )}\n                  </div>\n                ))}\n              </div>\n            ) : (\n              <div className=\"justify-center items-center mt-16 flex-col flex w-full h-full\">\n                <img\n                  className=\"rounded-lg bg-white\"\n                  src={Images.nodata}\n                  alt=\"review\"\n                />\n                <div className=\"mt-10\">\n                  <Titletext label={t(\"nodata\")} />\n                </div>\n              </div>\n            )}\n            <div className=\"h-9\"></div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\nexport default SuggestedStartupInvestors;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcFilter(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1 2.6C1 2.03995 1 1.75992 1.10899 1.54601C1.20487 1.35785 1.35785 1.20487 1.54601 1.10899C1.75992 1 2.03995 1 2.6 1H17.4C17.9601 1 18.2401 1 18.454 1.10899C18.6422 1.20487 18.7951 1.35785 18.891 1.54601C19 1.75992 19 2.03995 19 2.6V4.33726C19 4.58185 19 4.70414 18.9724 4.81923C18.9479 4.92127 18.9075 5.01881 18.8526 5.10828C18.7908 5.2092 18.7043 5.29568 18.5314 5.46863L12.4686 11.5314C12.2957 11.7043 12.2092 11.7908 12.1474 11.8917C12.0925 11.9812 12.0521 12.0787 12.0276 12.1808C12 12.2959 12 12.4182 12 12.6627V15L8 19V12.6627C8 12.4182 8 12.2959 7.97237 12.1808C7.94787 12.0787 7.90747 11.9812 7.85264 11.8917C7.7908 11.7908 7.70432 11.7043 7.53137 11.5314L1.46863 5.46863C1.29568 5.29568 1.2092 5.2092 1.14736 5.10828C1.09253 5.01881 1.05213 4.92127 1.02763 4.81923C1 4.70414 1 4.58185 1 4.33726V2.6Z\",\n    stroke: \"#0D0D0D\",\n    strokeOpacity: 0.7,\n    strokeWidth: 1.5,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcFilter);\nexport default __webpack_public_path__ + \"static/media/ic_filter.fab2f3e2485cfc30990926e8dfd7bdba.svg\";\nexport { ForwardRef as ReactComponent };","import React, {\n  useEffect,\n  useRef,\n  useImperativeHandle,\n  forwardRef,\n} from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport Loader from \"../../Utils/Loader\";\nimport SideMenu from \"../../Components/SideMenu\";\nimport { mInvestordb } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport { useSelector } from \"react-redux\";\nimport HeaderMenu from \"../../Components/HeaderMenu\";\nimport BoardView from \"./BoardView\";\nimport SuggestedInvestors from \"./SuggestedStartupInvestors\";\nimport SuggestedStartupInvestors from \"./SuggestedStartupInvestors\";\nimport { ReactComponent as Filter } from \"../../assets/Images/ic_filter.svg\";\nimport { UserAlertDialog } from \"../../Components/UserAlertDialog\";\n\nconst StartupCRM = () => {\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const navigate = useNavigate();\n  const [boardView, setBoardView] = useState(true);\n  const [values, setValues] = useState([1, 10]);\n  const [isChecked, setisChecked] = useState(false);\n  const [investordb, setinvestordb] = useState([]);\n  const [showDialog, setshowDialog] = useState(false);\n\n  const user = useSelector((state) => state.userInfo.user);\n\n  console.log(\"Get User :\" + user);\n\n  //Set user Alert Msg\n  const [isAlertOpen, setIsAlertOpen] = useState(false);\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  //\n  useEffect(() => {\n    if (!UserInfoData.view_status) {\n      setIsAlertOpen(true);\n    }\n  }, []);\n\n  //Set user Alert close\n  const closeAlert = () => setIsAlertOpen(false);\n\n  //Set user Alert reload page\n  const Confirm = () => {\n    setIsAlertOpen(false);\n    window.location.reload();\n  };\n\n  const onBoardClick = () => {\n    // Handle the cancel action\n    setBoardView(false);\n    setshowDialog(false);\n  };\n  const onInvestorsClick = () => {\n    // Handle the cancel action\n    setBoardView(true);\n  };\n\n  const mFilterView = () => {\n    // setBoardView(true);\n    setshowDialog(true);\n  };\n\n  const clickClose = () => {\n    setshowDialog(false);\n  };\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div>\n          <div className=\"flex h-screen overflow-hidden bg-mDashboardBg  bg-no-repeat bg-cover\">\n            {/* Sidebar */}\n            <SideMenu mFrom={3} mProfile={-1} />\n\n            {/* Main content */}\n            <div className=\"flex flex-col flex-grow overflow-hidden \">\n              {/* Top Navigation */}\n\n              <HeaderMenu title={t(\"InvestorsCRM\")} />\n\n              {/* <div\n                className={`overflow-hidden ${\n                  !UserInfoData.view_status ? \"blur-sm pointer-events-none\" : \"\"\n                }`}\n              > */}\n              <div className=\"p-3 lg:p-4 mt-4 flex h-auto \">\n                <div\n                  className={`${\n                    boardView ? \"bg-mButtonColorligth\" : \"bg-white\"\n                  } rounded-md px-6 py-2 md:py-3 inline-block max-w-xs justify-center items-center   cursor-pointer`}\n                  onClick={() => onInvestorsClick()}\n                >\n                  <p\n                    className={`font-PlusJakartaSansRegular text-center flex w-full   ${\n                      boardView ? \"text-mButtonColor\" : \"text-mTextColorLogin\"\n                    }  text-sm lg:text-base `}\n                  >\n                    {t(\"SuggestedInvestors\")}\n                  </p>\n                </div>\n\n                <div\n                  className={` ${\n                    boardView ? \"bg-white\" : \"bg-mButtonColorligth\"\n                  } rounded-md px-6 lg:px-10 py-2 md:py-3 lg:inline-block max-w-xs cursor-pointer ml-3 justify-center items-center flex lg:ml-10`}\n                  onClick={() => onBoardClick()}\n                >\n                  <p\n                    className={`font-PlusJakartaSansRegular text-center ${\n                      boardView ? \"text-mTextColorLogin\" : \"text-mButtonColor\"\n                    }  text-sm lg:text-base  `}\n                  >\n                    {t(\"Board\")}\n                  </p>\n                </div>\n                {boardView ? (\n                  <div\n                    className=\"ml-2 mr-2 lg:hidden justify-center flex items-center h-auto\"\n                    onClick={() => mFilterView()}\n                  >\n                    <Filter className=\"w-5 h-5 flex-shrink-0 \" />\n                  </div>\n                ) : (\n                  <div></div>\n                )}\n              </div>\n\n              {/* Scrollable content */}\n              <main className=\"flex-grow overflow-auto  mt-1 mb-3 px-3 lg:px-4 \">\n                {/* Adjusted padding top to avoid overlap */}\n                {boardView || showDialog ? (\n                  <SuggestedStartupInvestors\n                    onShowDialog={showDialog}\n                    onDialogCancel={clickClose}\n                  />\n                ) : (\n                  <BoardView />\n                )}\n              </main>\n              {/* </div> */}\n\n              <UserAlertDialog\n                isOpen={isAlertOpen}\n                onClose={closeAlert}\n                Confirm={Confirm}\n              />\n            </div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default StartupCRM;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcTick(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 25,\n    viewBox: \"0 0 24 25\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3.42871 12.305L9.42871 18.305L20.5716 7.16211\",\n    stroke: \"#2A7A5A\",\n    strokeWidth: 2.05714,\n    strokeMiterlimit: 10,\n    strokeLinecap: \"square\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcTick);\nexport default __webpack_public_path__ + \"static/media/ic_tick.32cf21261282e34ec1131c9cb593ca7a.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport Loader from \"../../Utils/Loader\";\nimport {\n  buySubscription,\n  getSubscriptionplan,\n  mGetpdfanddownloadcount,\n  mGetslideimages,\n  mUserFeedback,\n  paymentordercreate,\n} from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\n\nimport { Images } from \"../../Utils/Constants\";\nimport SideMenu from \"../../Components/SideMenu\";\nimport { ReactComponent as BackIcon } from \"../../assets/Images/ic_summeryback.svg\";\nimport { ReactComponent as ChatIcon } from \"../../assets/Images/ic_chat.svg\";\nimport { ReactComponent as TickIcon } from \"../../assets/Images/ic_tick.svg\";\nimport HeaderMenu from \"../../Components/HeaderMenu\";\nimport Headingtext from \"../../Components/Headingtext\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport Titletext from \"../../Components/Titletext\";\nimport { UserAlertDialog } from \"../../Components/UserAlertDialog\";\n\nconst Subscription = () => {\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const [subscriptionPlan, setsubscriptionPlan] = useState([]);\n\n  const navigate = useNavigate();\n\n  // Razorpay\n\n  useEffect(() => {\n    const script = document.createElement(\"script\");\n    script.src = \"https://checkout.razorpay.com/v1/checkout.js\";\n    script.async = true;\n    document.body.appendChild(script);\n  }, []);\n\n  //Set user Alert Msg\n  const [isAlertOpen, setIsAlertOpen] = useState(false);\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  useEffect(() => {\n    if (!UserInfoData.view_status) {\n      GetsubscriptionListAPICall();\n\n      setIsAlertOpen(true);\n    }\n  }, []);\n\n  //Set user Alert close\n  const closeAlert = () => setIsAlertOpen(false);\n\n  //Set user Alert reload page\n  const Confirm = () => {\n    setIsAlertOpen(false);\n    window.location.reload();\n  };\n\n  const GetsubscriptionListAPICall = async () => {\n    setLoading(true);\n    const response = await getSubscriptionplan({\n      user_name: UserInfoData.user_email,\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setsubscriptionPlan(response?.data.message.subscription_plan_details);\n\n        //console.log(\"API Response -> \" + serviceDetails.process_steps[0].steps);\n      } else {\n        toast.error(response?.data.message.status);\n        console.log(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n\n    //  await AsyncStorage.setItem('userInfo', JSON.stringify(response?.data));\n  };\n\n  const mBackClick = () => {\n    navigate(\"/dashboard\");\n  };\n\n  // Calculate GST\n\n  const GST_RATE = 18; // 18% GST\n\n  const calculateGST = (amount) => {\n    return (amount * GST_RATE) / 100;\n  };\n\n  // Function to calculate total amount including GST\n  const calculateTotalAmount = (amount) => {\n    return parseFloat(amount) + calculateGST(amount);\n  };\n\n  const proClick = (item) => {\n    // BuySubscription(item);\n    handlePayment(item);\n  };\n\n  const handlePayment = async (item) => {\n    var price = item.offer_price * 100;\n    const response = await paymentordercreate({\n      amount: price,\n    });\n\n    if (response.status === 200) {\n      try {\n        // Configure Razorpay options\n        const options = {\n          key: process.env.REACT_APP_RAZORPAY_KEY_ID, // Razorpay API key\n          amount: response?.data.message.order_id.amount,\n          currency: response?.data.message.order_id.currency,\n          name: \"theprevc\",\n          description:\n            UserInfoData.user_name +\n            \" Purchase the Subscription \" +\n            item.plan_name,\n          order_id: response?.data.message.order_id.id,\n          handler: function (paymentresponse) {\n            // Handle successful payment here\n            console.log(JSON.stringify(paymentresponse));\n            console.log(response?.data.message.order_id.amount);\n            console.log(\"Payment Success:\", JSON.stringify(paymentresponse));\n            BuySubscription(\n              response?.data.message.order_id.amount,\n              paymentresponse.razorpay_payment_id,\n              paymentresponse.razorpay_order_id,\n              item\n            );\n          },\n          prefill: {\n            name: UserInfoData.user_name,\n            email: UserInfoData.user_email,\n            //  contact: \"9999999999\",\n          },\n          theme: {\n            color: \"#2A7A5A\",\n          },\n        };\n\n        // Open Razorpay checkout\n        const rzp = new window.Razorpay(options);\n        rzp.open();\n      } catch (error) {\n        console.error(\"Payment error:\", error);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const BuySubscription = async (Amount, paymentId, orderId, item) => {\n    setLoading(true);\n    const response = await buySubscription({\n      user_name: UserInfoData.user_email,\n      plan_id: item.id,\n      plan_amount: Amount / 100,\n      paid_amount: calculateTotalAmount(item.offer_price),\n      payment_id: paymentId,\n      payment_status: \"Paid\",\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        GetsubscriptionListAPICall();\n      } else {\n        toast.error(response?.data.message.status);\n        console.log(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div>\n          <div className=\"flex h-screen overflow-hidden bg-mDashboardBg  bg-no-repeat bg-cover\">\n            {/* Sidebar */}\n\n            {/* Main content */}\n            <div className=\"flex flex-col flex-grow overflow-hidden  bg-mDashboardBg\">\n              {/* Top Navigation */}\n\n              <HeaderMenu\n                title={t(\"Subscription\")}\n                isShowing={true}\n                notShowsubscription={true}\n                onClick={mBackClick}\n              />\n\n              {/* Scrollable content scrollbar-hide */}\n              <main\n                className={`flex-grow  overflow-auto  mt-2 mb-2 lg:mr-2 py-2 px-3 lg:py-8 lg:px-28 ${\n                  !UserInfoData.view_status ? \"blur-sm pointer-events-none\" : \"\"\n                }`}\n              >\n                <div>\n                  <Titletext label={t(\"Chooseyourplan\")} />\n                  <div className=\"grid grid-cols-1 gap-5 lg:grid-cols-3 lg:gap-10 w-full mt-3 lg:mt-7 p-1 lg:p-5  bg-mDashboardBg\">\n                    {subscriptionPlan.map((item) => (\n                      <div\n                        className={`p-3 lg:p-6 grid grid-cols-1 gap-5 rounded-xl md:rounded-2xl lg:rounded-3xl ${\n                          item.current_plan_purchase\n                            ? \"bg-mButtonColor\"\n                            : \"bg-white\"\n                        } shadow-lg`}\n                        key={item.id}\n                      >\n                        <div className=\"flex flex-row justify-between\">\n                          <Titletext\n                            label={item.plan_name}\n                            changecolor={item.current_plan_purchase}\n                          />\n                          {item.recommended_plan_status ? (\n                            <div className=\"rounded-full bg-mTextColor p-2 h-8\">\n                              <p\n                                className={`font-PlusJakartaSansRegular text-xs text-white`}\n                              >\n                                {t(\"Recommended\")}\n                              </p>\n                            </div>\n                          ) : (\n                            <div></div>\n                          )}\n                        </div>\n\n                        <div className=\"justify-center w-full items-center flex flex-col py-2\">\n                          <p\n                            className={`font-PlusJakartaSansRegular text-sm xl:text-base 3xl:text-base ${\n                              item.current_plan_purchase\n                                ? \"text-white\"\n                                : \"text-mTextColorLogin\"\n                            } line-through`}\n                          >\n                            {\"₹ \" + item.format_actual_plan_price}\n                          </p>\n\n                          <div className=\"flex flex-row justify-center items-center\">\n                            <Headingtext\n                              label={\"₹ \" + item.format_offer_price}\n                              changecolor={item.current_plan_purchase}\n                            />\n                            <p\n                              className={`font-PlusJakartaSansRegular text-xs xl:text-sm 3xl:text-sm ${\n                                item.current_plan_purchase\n                                  ? \"text-white\"\n                                  : \"text-mTextColorLogin\"\n                              } ml-1 `}\n                            >\n                              {\"Offer Price\"}\n                            </p>\n                          </div>\n                        </div>\n\n                        <div\n                          className={`md:h-14 h-11 w-full mt-2 lg:mt-10  ${\n                            item.current_plan_purchase\n                              ? \"bg-black\"\n                              : \"bg-mButtonColorligth\"\n                          }  rounded-lg items-center justify-center flex cursor-pointer`}\n                          onClick={() => proClick(item)}\n                        >\n                          <p\n                            className={`ml-2 font-PlusJakartaSansSemiBold  ${\n                              item.current_plan_purchase\n                                ? \"text-white\"\n                                : \"text-mButtonColor\"\n                            }  text-sm xl:text-base 3xl:text-base`}\n                          >\n                            {t(\"GetPro\")}\n                          </p>\n                        </div>\n\n                        <div className=\"flex flex-col justify-start w-full items-start\">\n                          <DashboardTitle\n                            label={t(\"Features\")}\n                            changecolor={item.current_plan_purchase}\n                          />\n\n                          <div className=\"grid grid-cols-1 gap-4 w-full mt-5\">\n                            {item.features.map((item1) => (\n                              <div\n                                className=\"flex flex-row  justify-start items-center\"\n                                key={item1.plan_feature}\n                              >\n                                <TickIcon className=\"w-4 h-4 md:w-5 md:h-5 flex-shrink-0 \" />\n                                <p\n                                  className={`font-PlusJakartaSansRegular text-sm xl:text-base 3xl:text-base ${\n                                    item.current_plan_purchase\n                                      ? \"text-white\"\n                                      : \"text-mTextColorLogin\"\n                                  }  ml-2`}\n                                >\n                                  {item1.plan_feature}\n                                </p>\n                              </div>\n                            ))}\n                          </div>\n                        </div>\n                      </div>\n                    ))}\n                  </div>\n                </div>\n              </main>\n            </div>\n            <UserAlertDialog\n              isOpen={isAlertOpen}\n              onClose={closeAlert}\n              Confirm={Confirm}\n            />\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default Subscription;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcCompany(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M2.5 17.5H2C2 17.7761 2.22386 18 2.5 18V17.5ZM17.5 17.5V18C17.7761 18 18 17.7761 18 17.5H17.5ZM5 5.33333C4.72386 5.33333 4.5 5.55719 4.5 5.83333C4.5 6.10948 4.72386 6.33333 5 6.33333V5.33333ZM5.83333 6.33333C6.10948 6.33333 6.33333 6.10948 6.33333 5.83333C6.33333 5.55719 6.10948 5.33333 5.83333 5.33333V6.33333ZM9.16667 5.33333C8.89052 5.33333 8.66667 5.55719 8.66667 5.83333C8.66667 6.10948 8.89052 6.33333 9.16667 6.33333V5.33333ZM10 6.33333C10.2761 6.33333 10.5 6.10948 10.5 5.83333C10.5 5.55719 10.2761 5.33333 10 5.33333V6.33333ZM5 7.83333C4.72386 7.83333 4.5 8.05719 4.5 8.33333C4.5 8.60948 4.72386 8.83333 5 8.83333V7.83333ZM5.83333 8.83333C6.10948 8.83333 6.33333 8.60948 6.33333 8.33333C6.33333 8.05719 6.10948 7.83333 5.83333 7.83333V8.83333ZM9.16667 7.83333C8.89052 7.83333 8.66667 8.05719 8.66667 8.33333C8.66667 8.60948 8.89052 8.83333 9.16667 8.83333V7.83333ZM10 8.83333C10.2761 8.83333 10.5 8.60948 10.5 8.33333C10.5 8.05719 10.2761 7.83333 10 7.83333V8.83333ZM5 10.3333C4.72386 10.3333 4.5 10.5572 4.5 10.8333C4.5 11.1095 4.72386 11.3333 5 11.3333V10.3333ZM5.83333 11.3333C6.10948 11.3333 6.33333 11.1095 6.33333 10.8333C6.33333 10.5572 6.10948 10.3333 5.83333 10.3333V11.3333ZM9.16667 10.3333C8.89052 10.3333 8.66667 10.5572 8.66667 10.8333C8.66667 11.1095 8.89052 11.3333 9.16667 11.3333V10.3333ZM10 11.3333C10.2761 11.3333 10.5 11.1095 10.5 10.8333C10.5 10.5572 10.2761 10.3333 10 10.3333V11.3333ZM9.16667 17.5V18H9.66667V17.5H9.16667ZM5.83333 17.5H5.33333V18H5.83333V17.5ZM15 8.66667C14.7239 8.66667 14.5 8.89052 14.5 9.16667C14.5 9.44281 14.7239 9.66667 15 9.66667V8.66667ZM15.0083 9.66667C15.2845 9.66667 15.5083 9.44281 15.5083 9.16667C15.5083 8.89052 15.2845 8.66667 15.0083 8.66667V9.66667ZM15 11.1667C14.7239 11.1667 14.5 11.3905 14.5 11.6667C14.5 11.9428 14.7239 12.1667 15 12.1667V11.1667ZM15.0083 12.1667C15.2845 12.1667 15.5083 11.9428 15.5083 11.6667C15.5083 11.3905 15.2845 11.1667 15.0083 11.1667V12.1667ZM15 13.6667C14.7239 13.6667 14.5 13.8905 14.5 14.1667C14.5 14.4428 14.7239 14.6667 15 14.6667V13.6667ZM15.0083 14.6667C15.2845 14.6667 15.5083 14.4428 15.5083 14.1667C15.5083 13.8905 15.2845 13.6667 15.0083 13.6667V14.6667ZM17.4092 6.28834L16.9637 6.51534L17.4092 6.28834ZM17.045 5.92416L16.818 6.36966L17.045 5.92416ZM12.045 2.59083L11.818 3.03633L12.045 2.59083ZM12.4092 2.95501L11.9637 3.182L12.4092 2.95501ZM2.59083 2.95501L3.03633 3.182L2.59083 2.95501ZM2.95501 2.59083L3.182 3.03633L2.95501 2.59083ZM2 3.83333V17.5H3V3.83333H2ZM3.83333 3H11.1667V2H3.83333V3ZM12 3.83333V5.83333H13V3.83333H12ZM12 5.83333V17.5H13V5.83333H12ZM2.5 18H12.5V17H2.5V18ZM12.5 18H17.5V17H12.5V18ZM17 7.16667V17.5H18V7.16667H17ZM12.5 6.33333H16.1667V5.33333H12.5V6.33333ZM5 6.33333H5.83333V5.33333H5V6.33333ZM9.16667 6.33333H10V5.33333H9.16667V6.33333ZM5 8.83333H5.83333V7.83333H5V8.83333ZM9.16667 8.83333H10V7.83333H9.16667V8.83333ZM5 11.3333H5.83333V10.3333H5V11.3333ZM9.16667 11.3333H10V10.3333H9.16667V11.3333ZM8.66667 15V17.5H9.66667V15H8.66667ZM9.16667 17H5.83333V18H9.16667V17ZM6.33333 17.5V15H5.33333V17.5H6.33333ZM7.5 13.8333C8.14433 13.8333 8.66667 14.3557 8.66667 15H9.66667C9.66667 13.8034 8.69662 12.8333 7.5 12.8333V13.8333ZM7.5 12.8333C6.30338 12.8333 5.33333 13.8034 5.33333 15H6.33333C6.33333 14.3557 6.85567 13.8333 7.5 13.8333V12.8333ZM15 9.66667H15.0083V8.66667H15V9.66667ZM15 12.1667H15.0083V11.1667H15V12.1667ZM15 14.6667H15.0083V13.6667H15V14.6667ZM18 7.16667C18 6.94156 18.0004 6.74266 17.987 6.57862C17.9731 6.40874 17.942 6.23271 17.8547 6.06135L16.9637 6.51534C16.9672 6.52223 16.9815 6.55201 16.9903 6.66005C16.9996 6.77393 17 6.92506 17 7.16667H18ZM16.1667 6.33333C16.4083 6.33333 16.5594 6.33372 16.6733 6.34303C16.7813 6.35185 16.8111 6.36615 16.818 6.36966L17.272 5.47866C17.1006 5.39134 16.9246 5.36023 16.7547 5.34635C16.5907 5.33294 16.3918 5.33333 16.1667 5.33333V6.33333ZM17.8547 6.06135C17.7268 5.81046 17.5229 5.60649 17.272 5.47866L16.818 6.36966C16.8807 6.40162 16.9317 6.45262 16.9637 6.51534L17.8547 6.06135ZM11.1667 3C11.4083 3 11.5594 3.00039 11.6733 3.00969C11.7813 3.01852 11.8111 3.03282 11.818 3.03633L12.272 2.14532C12.1006 2.05801 11.9246 2.02689 11.7547 2.01301C11.5907 1.99961 11.3918 2 11.1667 2V3ZM13 3.83333C13 3.60823 13.0004 3.40933 12.987 3.24529C12.9731 3.07541 12.942 2.89938 12.8547 2.72801L11.9637 3.182C11.9672 3.1889 11.9815 3.21868 11.9903 3.32672C11.9996 3.44059 12 3.59173 12 3.83333H13ZM11.818 3.03633C11.8807 3.06829 11.9317 3.11928 11.9637 3.182L12.8547 2.72801C12.7268 2.47713 12.5229 2.27316 12.272 2.14532L11.818 3.03633ZM3 3.83333C3 3.59173 3.00039 3.44059 3.00969 3.32672C3.01852 3.21868 3.03282 3.1889 3.03633 3.182L2.14532 2.72801C2.05801 2.89938 2.02689 3.07541 2.01301 3.24529C1.99961 3.40933 2 3.60823 2 3.83333H3ZM3.83333 2C3.60823 2 3.40933 1.99961 3.24529 2.01301C3.07541 2.02689 2.89938 2.05801 2.72801 2.14532L3.182 3.03633C3.1889 3.03282 3.21868 3.01852 3.32672 3.00969C3.44059 3.00039 3.59173 3 3.83333 3V2ZM3.03633 3.182C3.06829 3.11928 3.11928 3.06829 3.182 3.03633L2.72801 2.14532C2.47713 2.27316 2.27316 2.47713 2.14532 2.72801L3.03633 3.182Z\",\n    fill: \"#0D0D0D\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcCompany);\nexport default __webpack_public_path__ + \"static/media/ic_company.f075eea2146787df599197a4f617b294.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcSetting(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M15.6355 11.4953L16.6905 13.3518C16.5652 13.5969 16.4251 13.8376 16.27 14.0727C16.115 14.3079 15.9489 14.5315 15.7731 14.7432L13.6977 14.5118C13.1426 14.9674 12.5019 15.3225 11.8034 15.5493L10.8332 17.4542C10.5596 17.4844 10.2815 17.5 9.99985 17.5C9.71818 17.5 9.44013 17.4844 9.16652 17.4542L8.19378 15.5485C7.49491 15.3212 6.85396 14.9655 6.29876 14.5092L4.2114 14.7429C4.03553 14.5312 3.86951 14.3076 3.71446 14.0724C3.55941 13.8373 3.41931 13.5966 3.29395 13.3515L4.35498 11.4845C4.23137 11.0118 4.16651 10.5115 4.16651 10.0001C4.16651 9.47908 4.23483 8.97397 4.363 8.49329L3.29426 6.61334C3.41963 6.36826 3.55972 6.12759 3.71478 5.89243C3.86983 5.65727 4.03585 5.43369 4.21172 5.22192L6.34086 5.46106C6.88947 5.01729 7.51321 4.67236 8.19967 4.44987M8.19646 4.44997L9.16632 2.54577C9.43993 2.51553 9.71798 2.5 9.99965 2.5C10.2813 2.5 10.5594 2.51553 10.833 2.54577L11.8028 4.44997C12.4898 4.67263 13.1154 5.0147 13.6643 5.45897L15.7725 5.22218C15.9484 5.43395 16.1144 5.65753 16.2695 5.89269C16.4245 6.12784 16.5646 6.36852 16.69 6.6136L15.6323 8.47473M15.6325 8.47764C15.7634 8.963 15.8332 9.47342 15.8332 10.0001C15.8332 10.5179 15.7657 11.0199 15.6391 11.4979M12.4998 10.0001C12.4998 11.3808 11.3806 12.5001 9.99984 12.5001C8.61913 12.5001 7.49984 11.3808 7.49984 10.0001C7.49984 8.61942 8.61913 7.50013 9.99984 7.50013C11.3806 7.50013 12.4998 8.61942 12.4998 10.0001Z\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcSetting);\nexport default __webpack_public_path__ + \"static/media/ic_setting.d656ab6260366d28f1adf5aacb20ccc9.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { ReactComponent as CompanyIcon } from \"../assets/Images/ic_company.svg\";\nimport { ReactComponent as UserIcon } from \"../assets/Images/ic_user.svg\";\nimport { ReactComponent as CrownIcon } from \"../assets/Images/ic_crownblock.svg\";\nimport { ReactComponent as SettingsIcon } from \"../assets/Images/ic_setting.svg\";\n\nconst ProfileSideMenu = ({ mFrom, handleClick }) => {\n  const { t } = useTranslation(\"\");\n\n  // Get user details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  const Menus = [\n    {\n      title: t(\"GeneralInformation\"),\n      src: UserIcon,\n    },\n    {\n      title: t(\"CompanyInformation\"),\n      src: CompanyIcon,\n    },\n\n    {\n      title: t(\"SubscriptionInfo\"),\n      src: CrownIcon,\n    },\n    {\n      title: t(\"Accountsettings\"),\n      src: SettingsIcon,\n    },\n  ];\n\n  //alert(UserInfoData.user_type);\n\n  const filteredMenus = Menus.filter((menu) => {\n    // If the menu is \"Services\" or \"Valut\", include it only if isFeatureEnabled is true\n    if (menu.title === t(\"SubscriptionInfo\")) {\n      //alert(menu.title);\n      //return UserInfoData.subscription_status;\n      return false;\n    } else if (\n      menu.title === t(\"SubscriptionInfo\") ||\n      menu.title === t(\"CompanyInformation\")\n    ) {\n      return UserInfoData.user_type === \"Entrepreneur\" ? true : false;\n    } else if (\n      menu.title === t(\"SubscriptionInfo\") ||\n      menu.title === t(\"CompanyInformation\")\n    ) {\n      return UserInfoData.user_type === \"Investor\" ? true : false;\n    }\n\n    // Otherwise, include all other menus\n    return true;\n  });\n\n  // const InvestorMenus = [\n  //   {\n  //     title: t(\"GeneralInformation\"),\n  //     src: UserIcon,\n  //   },\n  //   {\n  //     title: t(\"Accountsettings\"),\n  //     src: SettingsIcon,\n  //   },\n  // ];\n\n  return (\n    <div className=\" h-full lg:h-screen\">\n      <div\n        className={` bg-dark-purple justify-center  h-full lg:h-screen items-start  overflow-hidden  px-2  `}\n      >\n        <div className=\" flex flex-col\">\n          <div className=\" p-1 \">\n            <div>\n              <ul className=\"mt-1  flex flex-row lg:flex-col\">\n                {filteredMenus.map((Menu, index) => (\n                  <li key={index} onClick={() => handleClick(index)}>\n                    <div className=\"py-1 lg:py-2  \">\n                      <div\n                        className={`flex rounded-sm lg:rounded-md cursor-pointer hover:bg-light-white text-gray-300 text-sm 3xl:text-sm items-center flex-row py-2 ml-5 lg:ml-0\n                      ${mFrom === index ? \"bg-mMenuSelect\" : \"bg-white\"}  ${\n                          mFrom === index ? \"px-1\" : \"px-0\"\n                        } `}\n                      >\n                        <Menu.src className=\"lg:w-5 lg:h-5 w-6 h-6  flex-shrink-0 \" />\n                        <p\n                          className={`hidden lg:block font-PlusJakartaSansRegular font-normal text-mTextColor text-sm  lg:text-sm 3xl:text-sm   ml-4`}\n                        >\n                          {\" \"}\n                          {Menu.title}{\" \"}\n                        </p>\n                      </div>\n                    </div>\n                  </li>\n                ))}\n              </ul>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default ProfileSideMenu;\n// UserInfoData.user_type === \"Investor\"\n//                   ? InvestorMenus.map((Menu, index) => (\n//                       <li key={index} onClick={() => handleClick(index)}>\n//                         <div className=\"py-1 lg:py-2  \">\n//                           <div\n//                             className={`flex rounded-sm lg:rounded-md cursor-pointer hover:bg-light-white text-gray-300 text-sm 3xl:text-sm items-center flex-row py-2 ml-5 lg:ml-0\n//                       ${mFrom === index ? \"bg-mMenuSelect\" : \"bg-white\"}  ${\n//                               mFrom === index ? \"px-1\" : \"px-0\"\n//                             } `}\n//                           >\n//                             <Menu.src className=\"lg:w-5 lg:h-5 w-6 h-6  flex-shrink-0 \" />\n//                             <p\n//                               className={`hidden lg:block font-PlusJakartaSansRegular font-normal text-mTextColor text-sm  lg:text-sm 3xl:text-sm   ml-4`}\n//                             >\n//                               {\" \"}\n//                               {Menu.title}{\" \"}\n//                             </p>\n//                           </div>\n//                         </div>\n//                       </li>\n//                     ))\n//                   :\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcEdit(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 18,\n    height: 18,\n    viewBox: \"0 0 18 18\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M11.6248 4.12551L13.7461 6.24683M9.75 15.75H15.75M2.25 15.7503L2.28559 15.5012C2.41152 14.6197 2.47449 14.1789 2.61772 13.7674C2.74481 13.4023 2.91843 13.055 3.13429 12.7342C3.37756 12.3728 3.69239 12.0579 4.32206 11.4283L13.0581 2.69227C13.6438 2.10648 14.5936 2.10648 15.1794 2.69227C15.7652 3.27806 15.7652 4.2278 15.1794 4.81359L6.28308 13.7099C5.71185 14.2811 5.42623 14.5667 5.1009 14.7939C4.81213 14.9955 4.50069 15.1625 4.17298 15.2915C3.80378 15.4368 3.40782 15.5167 2.61595 15.6765L2.25 15.7503Z\",\n    stroke: \"#2A7A5A\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcEdit);\nexport default __webpack_public_path__ + \"static/media/ic_edit.bc87520ce21bc2f7753f8049b69635a2.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcGender(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8.75065 17.5H4.66732C4.20061 17.5 3.96725 17.5 3.78899 17.4092C3.63219 17.3293 3.50471 17.2018 3.42481 17.045C3.33398 16.8667 3.33398 16.6334 3.33398 16.1667V14.7367C3.33398 14.207 3.33398 13.9422 3.37397 13.7213C3.55971 12.6954 4.36267 11.8924 5.38863 11.7067C5.45273 11.6951 5.5204 11.6868 5.59711 11.681C5.78465 11.6667 5.87841 11.6595 6.00366 11.6689C6.13384 11.6786 6.20665 11.6914 6.33229 11.7268C6.45317 11.7609 6.67089 11.8596 7.10633 12.0568C7.36561 12.1743 7.6367 12.2703 7.91732 12.3425M12.5007 5.83333C12.5007 7.67428 11.0083 9.16667 9.16732 9.16667C7.32637 9.16667 5.83398 7.67428 5.83398 5.83333C5.83398 3.99238 7.32637 2.5 9.16732 2.5C11.0083 2.5 12.5007 3.99238 12.5007 5.83333ZM13.7487 13.5099C13.1655 12.8607 12.1931 12.686 11.4624 13.2806C10.7318 13.8751 10.6289 14.8692 11.2027 15.5723C11.5266 15.9693 12.2963 16.6653 12.9051 17.1961C13.1939 17.4478 13.3383 17.5737 13.5129 17.6252C13.6618 17.6691 13.8355 17.6691 13.9844 17.6252C14.159 17.5737 14.3034 17.4478 14.5922 17.1961C15.201 16.6653 15.9707 15.9693 16.2946 15.5723C16.8684 14.8692 16.7781 13.8689 16.0349 13.2806C15.2917 12.6923 14.3318 12.8607 13.7487 13.5099Z\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcGender);\nexport default __webpack_public_path__ + \"static/media/ic_gender.0b0a83b8e77f432a75a07b9c02aed492.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcMobile(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4.2633 10.6059L6.79547 7.57246C7.05213 7.24247 7.18046 7.07747 7.24771 6.89242C7.30722 6.72867 7.33184 6.5543 7.32 6.38048C7.30661 6.18404 7.22898 5.98996 7.07372 5.6018L6.48147 4.12118C6.2517 3.54675 6.13681 3.25954 5.93862 3.07128C5.76399 2.90539 5.54514 2.79349 5.30841 2.74905C5.03975 2.6986 4.73965 2.77363 4.13944 2.92368L2.5 3.3336C2.5 11.6669 8.33308 17.5003 16.6667 17.5003L17.0764 15.8606C17.2264 15.2604 17.3014 14.9603 17.251 14.6916C17.2065 14.4549 17.0946 14.236 16.9288 14.0614C16.7405 13.8632 16.4533 13.7483 15.8789 13.5186L14.5576 12.9901C14.1147 12.8129 13.8933 12.7244 13.6726 12.7176C13.4775 12.7116 13.2837 12.7514 13.1067 12.8337C12.9064 12.9269 12.7378 13.0955 12.4006 13.4328L9.82861 15.9643\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcMobile);\nexport default __webpack_public_path__ + \"static/media/ic_mobile.e0ed0ce817186c04035049c68701179e.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcMail(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5 10.0003V8.33368H15V10.0003M2.5236 8.33373L8.5205 12.3475C9.05509 12.7039 9.32239 12.8821 9.6113 12.9514C9.86662 13.0126 10.1328 13.0126 10.3881 12.9514C10.677 12.8821 10.9443 12.7039 11.4789 12.3475L17.4758 8.33368M8.58178 3.39101L3.74845 6.4264C3.29268 6.71263 3.06479 6.85575 2.8995 7.04921C2.75321 7.22045 2.64313 7.41955 2.57593 7.63451C2.5 7.87738 2.5 8.14647 2.5 8.68467V14.0003C2.5 14.9338 2.5 15.4005 2.68166 15.757C2.84144 16.0706 3.09641 16.3256 3.41002 16.4854C3.76654 16.667 4.23325 16.667 5.16667 16.667H14.8333C15.7668 16.667 16.2335 16.667 16.59 16.4854C16.9036 16.3256 17.1586 16.0706 17.3183 15.757C17.5 15.4005 17.5 14.9338 17.5 14.0003V8.68467C17.5 8.14647 17.5 7.87738 17.4241 7.63451C17.3569 7.41955 17.2468 7.22045 17.1005 7.04921C16.9352 6.85575 16.7073 6.71263 16.2516 6.4264L11.4182 3.39101C10.9039 3.06798 10.6467 2.90647 10.3707 2.84351C10.1267 2.78784 9.87329 2.78784 9.62928 2.84351C9.35332 2.90647 9.09614 3.06798 8.58178 3.39101Z\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcMail);\nexport default __webpack_public_path__ + \"static/media/ic_mail.c8fb7c4fdbe9c7768c2be3a5f5b35baa.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport { ReactComponent as EditIcon } from \"../../assets/Images/ic_edit.svg\";\nimport { ReactComponent as UserIcon } from \"../../assets/Images/ic_user.svg\";\nimport { ReactComponent as GenderIcon } from \"../../assets/Images/ic_gender.svg\";\nimport { ReactComponent as MobileIcon } from \"../../assets/Images/ic_mobile.svg\";\nimport { ReactComponent as MailIcon } from \"../../assets/Images/ic_mail.svg\";\nimport { ReactComponent as LinkedinIcon } from \"../../assets/Images/ic_linkedin.svg\";\nimport TextView from \"../../Components/TextView\";\nimport TextViewlight from \"../../Components/TextViewlight\";\n\nconst Profileinfo = ({\n  mEditclick,\n  mEditAboutclick,\n  getprofileInformation,\n}) => {\n  const { t } = useTranslation(\"\");\n\n  const openWebsite = (url) => {\n    // Check if the URL already includes a protocol\n    const websiteUrl =\n      url.startsWith(\"http://\") || url.startsWith(\"https://\")\n        ? url\n        : `https://${url}`;\n\n    window.open(websiteUrl, \"_blank\");\n  };\n  return (\n    <>\n      {getprofileInformation.length > 0 ? (\n        <div>\n          <div className=\"bg-white rounded-md lg:rounded-xl p-2 lg:p-6\">\n            <div className=\"grid grid-cols-1 gap-5\">\n              <div className=\"h-9 justify-between flex \">\n                <div className=\"justify-center items-center flex\">\n                  <DashboardTitle label={t(\"PersonalInformation\")} />\n                </div>\n                <div\n                  className=\"h-7 lg:h-9 ml-3 lg:ml-6 p-2 lg:p-4 bg-mButtonColorligth rounded-md lg:rounded-lg items-center justify-center flex cursor-pointer\"\n                  onClick={mEditclick}\n                >\n                  <EditIcon className=\"w-5 h-5 3xl:w-5 3xl:h-5 flex-shrink-0 cursor-pointer\" />\n                  <p className=\"ml-2 font-PlusJakartaSansRegular text-mButtonColor text-base 3xl:text-base\">\n                    {t(\"Edit\")}\n                  </p>\n                </div>\n              </div>\n              <div className=\"w-full flex flex-col md:flex-row\">\n                <div className=\"w-full md:w-1/4 flex flex-row justify-start items-center \">\n                  <UserIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                  <div className=\"ml-3 justify-center items-center flex\">\n                    <TextView label={t(\"FullName\")} />\n                  </div>\n                </div>\n\n                <div className=\"w-full md:w-3/4 ml-10\">\n                  <TextViewlight label={getprofileInformation[0].full_name} />\n                </div>\n              </div>\n              <div className=\"w-full flex flex-col md:flex-row\">\n                <div className=\"w-full md:w-1/4 flex flex-row justify-start items-center \">\n                  <GenderIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                  <div className=\"ml-3 justify-center items-center flex\">\n                    <TextView label={t(\"Gender\")} />\n                  </div>\n                </div>\n\n                <div className=\"w-full md:w-3/4 ml-10\">\n                  <TextViewlight label={getprofileInformation[0].gender} />\n                </div>\n              </div>\n              <div className=\"w-full flex flex-col md:flex-row\">\n                <div className=\"w-full md:w-1/4 flex flex-row justify-start items-center \">\n                  <MobileIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                  <div className=\"ml-3 justify-center items-center flex\">\n                    <TextView label={t(\"MobileNumber\")} />\n                  </div>\n                </div>\n\n                <div className=\"w-full md:w-3/4 ml-10\">\n                  <TextViewlight label={getprofileInformation[0].mobile_no} />\n                </div>\n              </div>\n              <div className=\"w-full flex flex-col md:flex-row\">\n                <div className=\"w-full md:w-1/4 flex flex-row justify-start items-center \">\n                  <MailIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                  <div className=\"ml-3 justify-center items-center flex\">\n                    <TextView label={t(\"MailID\")} />\n                  </div>\n                </div>\n\n                <div className=\"w-full md:w-3/4 ml-10\">\n                  <TextViewlight label={getprofileInformation[0].mail_id} />\n                </div>\n              </div>\n              <div className=\"w-full flex flex-col md:flex-row\">\n                <div className=\"w-full md:w-1/4 flex flex-row justify-start items-center \">\n                  <LinkedinIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                  <div className=\"ml-3 justify-center items-center flex\">\n                    <TextView label={t(\"LinkedIn\")} />\n                  </div>\n                </div>\n\n                <div\n                  className=\"w-full md:w-3/4 ml-10\"\n                  onClick={() => {\n                    openWebsite(getprofileInformation[0].linkedin);\n                    //window.open(getprofileInformation[0].linkedin, \"_blank\");\n                  }}\n                >\n                  <p className=\"text-blue-500 underline hover:text-blue-700 font-PlusJakartaSansRegular font-normal leading-7 cursor-pointer text-sm md:text-base xl:text-lg 3xl:text-lg\">\n                    {getprofileInformation[0].linkedin}\n                  </p>\n                  {/* <TextViewlight label={getprofileInformation[0].linkedin} /> */}\n                </div>\n              </div>\n            </div>\n          </div>\n          <div className=\"bg-white rounded-xl p-6 mt-6\">\n            <div className=\"grid grid-cols-1 gap-5\">\n              <div className=\"h-9 justify-between flex \">\n                <div className=\"justify-center items-center flex\">\n                  <DashboardTitle label={t(\"About\")} />\n                </div>\n                <div\n                  className=\"h-7 lg:h-9 ml-3 lg:ml-6 p-2 lg:p-4 bg-mButtonColorligth rounded-lg items-center justify-center flex cursor-pointer\"\n                  onClick={mEditAboutclick}\n                >\n                  <EditIcon className=\"w-5 h-5 3xl:w-5 3xl:h-5  flex-shrink-0 cursor-pointer\" />\n                  <p className=\"ml-2 font-PlusJakartaSansRegular text-mButtonColor text-base 3xl:text-base\">\n                    {t(\"Edit\")}\n                  </p>\n                </div>\n              </div>\n              <div>\n                <TextViewlight label={getprofileInformation[0].about} />\n              </div>\n            </div>\n          </div>\n        </div>\n      ) : (\n        <div></div>\n      )}\n    </>\n  );\n};\n\nexport default Profileinfo;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcPostion(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M11.6663 16.0714L13.1663 17.5L16.6663 14.1667M3.33301 17.5C3.33301 14.2783 5.94468 11.6667 9.16634 11.6667C10.4057 11.6667 11.5548 12.0532 12.4997 12.7122M12.4997 5.83333C12.4997 7.67428 11.0073 9.16667 9.16634 9.16667C7.32539 9.16667 5.83301 7.67428 5.83301 5.83333C5.83301 3.99238 7.32539 2.5 9.16634 2.5C11.0073 2.5 12.4997 3.99238 12.4997 5.83333Z\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcPostion);\nexport default __webpack_public_path__ + \"static/media/ic_postion.b7e8420e876ac879996cf0f1de1baaae.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcSector(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6.66667 5.83333V5.16667C6.66667 4.23325 6.66667 3.76654 6.84832 3.41002C7.00811 3.09641 7.26308 2.84144 7.57668 2.68166C7.9332 2.5 8.39991 2.5 9.33333 2.5H10.6667C11.6001 2.5 12.0668 2.5 12.4233 2.68166C12.7369 2.84144 12.9919 3.09641 13.1517 3.41002C13.3333 3.76654 13.3333 4.23325 13.3333 5.16667V5.83333M5.83333 17.5V5.83474M14.1667 17.5V5.83333M5.83333 5.83474C6.03644 5.83333 6.25774 5.83333 6.5 5.83333H13.3333M5.83333 5.83474C4.86256 5.84149 4.30727 5.88048 3.86502 6.10582C3.39462 6.3455 3.01217 6.72795 2.77248 7.19836C2.5 7.73314 2.5 8.4332 2.5 9.83333V13.5C2.5 14.9001 2.5 15.6002 2.77248 16.135C3.01217 16.6054 3.39462 16.9878 3.86502 17.2275C4.3998 17.5 5.09987 17.5 6.5 17.5H13.5C14.9001 17.5 15.6002 17.5 16.135 17.2275C16.6054 16.9878 16.9878 16.6054 17.2275 16.135C17.5 15.6002 17.5 14.9001 17.5 13.5V9.83333C17.5 8.4332 17.5 7.73314 17.2275 7.19836C16.9878 6.72795 16.6054 6.3455 16.135 6.10582C15.6002 5.83333 14.9001 5.83333 13.5 5.83333H14.1667M14.1667 5.83333H13.3333\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcSector);\nexport default __webpack_public_path__ + \"static/media/ic_sector.9363011715acf5ed0b5eaefc4c7bb9d4.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcAddress(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10.0003 17.5C12.917 14.5 15.8337 11.8137 15.8337 8.5C15.8337 5.18629 13.222 2.5 10.0003 2.5C6.77866 2.5 4.16699 5.18629 4.16699 8.5C4.16699 11.8137 7.08366 14.5 10.0003 17.5Z\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10.0003 10C10.9208 10 11.667 9.25381 11.667 8.33333C11.667 7.41286 10.9208 6.66667 10.0003 6.66667C9.07985 6.66667 8.33366 7.41286 8.33366 8.33333C8.33366 9.25381 9.07985 10 10.0003 10Z\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcAddress);\nexport default __webpack_public_path__ + \"static/media/ic_address.be537f7e6bea4fc0670cd77801ac306f.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport { ReactComponent as EditIcon } from \"../../assets/Images/ic_edit.svg\";\nimport { ReactComponent as UserIcon } from \"../../assets/Images/ic_user.svg\";\nimport { ReactComponent as PostionIcon } from \"../../assets/Images/ic_postion.svg\";\nimport { ReactComponent as SectorIcon } from \"../../assets/Images/ic_sector.svg\";\nimport { ReactComponent as MailIcon } from \"../../assets/Images/ic_mail.svg\";\nimport { ReactComponent as LinkedinIcon } from \"../../assets/Images/ic_linkedin.svg\";\nimport { ReactComponent as AddressIcon } from \"../../assets/Images/ic_address.svg\";\nimport TextView from \"../../Components/TextView\";\nimport TextViewlight from \"../../Components/TextViewlight\";\n\nconst Companyinfo = ({\n  mcompEditclick,\n  mcompEditAboutclick,\n  companyInformation,\n}) => {\n  const { t } = useTranslation(\"\");\n\n  const openWebsite = (url) => {\n    // Check if the URL already includes a protocol\n    const websiteUrl =\n      url.startsWith(\"http://\") || url.startsWith(\"https://\")\n        ? url\n        : `https://${url}`;\n\n    window.open(websiteUrl, \"_blank\");\n  };\n\n  return (\n    <>\n      {companyInformation.length > 0 ? (\n        <div>\n          <div className=\"bg-white rounded-md lg:rounded-xl p-2 lg:p-6\">\n            <div className=\"grid grid-cols-1 gap-5\">\n              <div className=\"h-9 justify-between flex \">\n                <div className=\"justify-center items-center flex\">\n                  <DashboardTitle label={t(\"CompanyInformation\")} />\n                </div>\n                <div\n                  className=\"h-7 lg:h-9 ml-3 lg:ml-6 p-2 lg:p-4 bg-mButtonColorligth rounded-lg items-center justify-center flex cursor-pointer\"\n                  onClick={mcompEditclick}\n                >\n                  <EditIcon className=\"w-5 h-5 flex-shrink-0 cursor-pointer\" />\n                  <p className=\"ml-2 font-PlusJakartaSansRegular text-mButtonColor text-base\">\n                    {t(\"Edit\")}\n                  </p>\n                </div>\n              </div>\n              <div className=\"w-full flex flex-col md:flex-row\">\n                <div className=\"w-full md:w-1/4 flex flex-row justify-start items-center \">\n                  <UserIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                  <div className=\"ml-3 justify-center items-center flex\">\n                    <TextView label={t(\"CompanyName\")} />\n                  </div>\n                </div>\n\n                <div className=\"w-full md:w-3/4 ml-10\">\n                  <TextViewlight label={companyInformation[0].company_name} />\n                </div>\n              </div>\n              <div className=\"w-full flex flex-col md:flex-row\">\n                <div className=\"w-full md:w-1/4 flex flex-row justify-start items-center \">\n                  <PostionIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                  <div className=\"ml-3 justify-center items-center flex\">\n                    <TextView label={t(\"Position\")} />\n                  </div>\n                </div>\n\n                <div className=\"w-full md:w-3/4 ml-10\">\n                  <TextViewlight label={companyInformation[0].position} />\n                </div>\n              </div>\n              <div className=\"w-full flex flex-col md:flex-row\">\n                <div className=\"w-full md:w-1/4 flex flex-row justify-start items-center \">\n                  <SectorIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                  <div className=\"ml-3 justify-center items-center flex\">\n                    <TextView label={t(\"Sector\")} />\n                  </div>\n                </div>\n\n                <div className=\"w-full md:w-3/4 ml-10\">\n                  <TextViewlight label={companyInformation[0].sector} />\n                </div>\n              </div>\n              <div className=\"w-full flex flex-col md:flex-row\">\n                <div className=\"w-full md:w-1/4 flex flex-row justify-start items-center \">\n                  <MailIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                  <div className=\"ml-3 justify-center items-center flex\">\n                    <TextView label={t(\"MailID\")} />\n                  </div>\n                </div>\n\n                <div className=\"w-full md:w-3/4 ml-10\">\n                  <TextViewlight label={companyInformation[0].mail_id} />\n                </div>\n              </div>\n              <div className=\"w-full flex flex-col md:flex-row\">\n                <div className=\"w-full md:w-1/4 flex flex-row justify-start items-center \">\n                  <AddressIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                  <div className=\"ml-3 justify-center items-center flex\">\n                    <TextView label={t(\"Address\")} />\n                  </div>\n                </div>\n\n                <div className=\"w-full md:w-3/4 ml-10\">\n                  <TextViewlight label={companyInformation[0].address} />\n                </div>\n              </div>\n              <div className=\"w-full flex flex-col md:flex-row\">\n                <div className=\"w-full md:w-1/4 flex flex-row justify-start items-center \">\n                  <LinkedinIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                  <div className=\"ml-3 justify-center items-center flex\">\n                    <TextView label={t(\"Website\")} />\n                  </div>\n                </div>\n\n                <div\n                  className=\"w-full md:w-3/4 ml-10\"\n                  onClick={() => {\n                    // window.open(companyInformation[0].website, \"_blank\");\n                    openWebsite(companyInformation[0].website);\n                    // window.open(companyInformation[0].website, \"_blank\");\n                  }}\n                >\n                  <p className=\"text-blue-500 underline hover:text-blue-700 font-PlusJakartaSansRegular font-normal leading-7 cursor-pointer text-sm md:text-base xl:text-lg 3xl:text-lg\">\n                    {companyInformation[0].website}\n                  </p>\n                  {/* <TextViewlight label={companyInformation[0].website} /> */}\n                </div>\n              </div>\n            </div>\n          </div>\n          <div className=\"bg-white rounded-xl p-6 mt-6\">\n            <div className=\"grid grid-cols-1 gap-5\">\n              <div className=\"h-9 justify-between flex \">\n                <div className=\"justify-center items-center flex\">\n                  <DashboardTitle label={t(\"AboutCompany\")} />\n                </div>\n                <div\n                  className=\"h-7 lg:h-9 ml-3 lg:ml-6 p-2 lg:p-4 bg-mButtonColorligth rounded-lg items-center justify-center flex cursor-pointer\"\n                  onClick={mcompEditAboutclick}\n                >\n                  <EditIcon className=\"w-5 h-5 flex-shrink-0 cursor-pointer\" />\n                  <p className=\"ml-2 font-PlusJakartaSansRegular text-mButtonColor text-base\">\n                    {t(\"Edit\")}\n                  </p>\n                </div>\n              </div>\n              <div>\n                <TextViewlight label={companyInformation[0].company_about} />\n              </div>\n            </div>\n          </div>\n        </div>\n      ) : (\n        <div></div>\n      )}\n    </>\n  );\n};\n\nexport default Companyinfo;\n","import React, { useEffect } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport TextView from \"../../Components/TextView\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport { mNotificationDetails, passwordchange } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport Loader from \"../../Utils/Loader\";\n\nconst Accountinfo = () => {\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const [password, setPassword] = useState(\"\");\n  const [confirmpassword, setconfirmPassword] = useState(\"\");\n  const isDisabled = !password || !confirmpassword;\n  const [notificationdetails, setNotificationDetails] = useState([]);\n\n  // State to track selected checkboxes\n  // const [selectedItems, setSelectedItems] = useState([]);\n  const [stageselectedItems, setstageSelectedItems] = useState([]);\n\n  // Handle checkbox change event\n  const handlestageCheckboxChange = (id) => {\n    setstageSelectedItems((prevSelectedItems) => {\n      if (prevSelectedItems.includes(id)) {\n        // If the item is already selected, remove it from the list\n        return prevSelectedItems.filter((itemId) => itemId !== id);\n      } else {\n        // Otherwise, add it to the list\n        return [...prevSelectedItems, id];\n      }\n    });\n  };\n\n  useEffect(() => {\n    //NotificationDetails();\n  }, []);\n\n  const NotificationDetails = async () => {\n    setLoading(true);\n    const response = await mNotificationDetails({\n      user_name: UserInfoData.user_email,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setNotificationDetails(response?.data.message.notification_details);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const updatePwdClick = () => {\n    PasswordchangeAPICall();\n  };\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  // Password change API call\n  const PasswordchangeAPICall = async () => {\n    setLoading(true);\n    const response = await passwordchange({\n      user_name: UserInfoData.user_email,\n\n      current_password: password,\n      new_password: confirmpassword,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div>\n          <div className=\" p-2 md:p-6\">\n            <div className=\"grid grid-cols-1 gap-5\">\n              <div className=\"h-9 justify-between flex \">\n                <div className=\"justify-center items-center flex\">\n                  <DashboardTitle label={t(\"ChangePassword\")} />\n                </div>\n                <div className=\" hidden md:flex h-9 rounded-lg items-center justify-center  cursor-pointer\">\n                  <button\n                    className={`  text-white text-base 3xl:text-base px-5 rounded-md w-full h-9 font-PlusJakartaSansSemiBold ${\n                      isDisabled\n                        ? \"bg-mButtonDisable cursor-not-allowed\"\n                        : \"bg-mButtonColor\"\n                    }`}\n                    onClick={updatePwdClick}\n                  >\n                    {t(\"UpdatePassword\")}\n                  </button>\n                </div>\n              </div>\n              <div className=\"w-full md:w-1/2\">\n                <div className=\"mt-4\">\n                  <TextView label={t(\"CurrentPassword\")} />\n                </div>\n                <InputContainer\n                  type={\"text\"}\n                  value={password}\n                  placeholder={t(\"EnterPassword\")}\n                  label=\"password\"\n                  name=\"password\"\n                  disabled={false}\n                  maxLength={60}\n                  setshowPassword={false}\n                  onChange={(e) => {\n                    setPassword(e.target.value);\n                    // setLogin({ ...login, password: e.target.value });\n                  }}\n                />\n              </div>\n              <div className=\"w-full md:w-1/2\">\n                <div className=\"mt-4\">\n                  <TextView label={t(\"NewPassword\")} />\n                </div>\n                <InputContainer\n                  type={\"text\"}\n                  value={confirmpassword}\n                  placeholder={t(\"EnterNewPassword\")}\n                  label=\"password\"\n                  name=\"password\"\n                  disabled={false}\n                  maxLength={60}\n                  setshowPassword={false}\n                  onChange={(e) => {\n                    setconfirmPassword(e.target.value);\n                    // setLogin({ ...login, password: e.target.value });\n                  }}\n                />\n              </div>\n\n              <div className=\" flex md:hidden h-9 rounded-lg items-center justify-center  cursor-pointer\">\n                <button\n                  className={`  text-white text-base 3xl:text-base px-5 rounded-md w-full h-9 font-PlusJakartaSansSemiBold ${\n                    isDisabled\n                      ? \"bg-mButtonDisable cursor-not-allowed\"\n                      : \"bg-mButtonColor\"\n                  }`}\n                  onClick={updatePwdClick}\n                >\n                  {t(\"UpdatePassword\")}\n                </button>\n              </div>\n            </div>\n\n            <div className=\"mt-10 hidden\">\n              <div className=\"h-9  justify-between flex \">\n                <div className=\"justify-center items-center flex\">\n                  <DashboardTitle label={t(\"NotificationSettings\")} />\n                </div>\n                <div className=\" hidden md:flex h-9 rounded-lg items-center justify-center cursor-pointer\">\n                  <button\n                    className={`  text-white text-base 3xl:text-base  px-5 rounded-md w-full h-9 font-PlusJakartaSansSemiBold ${\n                      isDisabled\n                        ? \"bg-mButtonDisable cursor-not-allowed\"\n                        : \"bg-mButtonColor\"\n                    }`}\n                    onClick={updatePwdClick}\n                  >\n                    {t(\"save\")}\n                  </button>\n                </div>\n              </div>\n            </div>\n            <div className=\"mt-5 bg-white w-full rounded-md md:rounded-xl p-3 hidden\">\n              <div className=\"mt-5 grid grid-cols-1 gap-5\">\n                {notificationdetails.map((item) => (\n                  <div className=\"flex flex-col\" key={item.notification_type}>\n                    <div className=\"flex items-center\">\n                      <input\n                        type=\"checkbox\"\n                        id=\"privacyTermsCheckbox\"\n                        onChange={() => handlestageCheckboxChange(item.id)}\n                        className=\"h-4 w-4 font-PlusJakartaSansRegular text-mTextColor text-sm\"\n                      />\n                      <label\n                        htmlFor=\"privacyTermsCheckbox\"\n                        className=\"ml-2 text-sm 3xl:text-sm  text-mTextColorLogin font-PlusJakartaSansRegular\"\n                      >\n                        {item.notification_type}\n                      </label>\n                    </div>\n                  </div>\n                ))}\n              </div>\n              <div className=\"h-5\"></div>\n            </div>\n\n            <div className=\" mt-3  hidden h-9 rounded-lg items-center justify-center cursor-pointer\">\n              <button\n                className={`  text-white text-base 3xl:text-base px-5 rounded-md w-full h-9 font-PlusJakartaSansSemiBold ${\n                  isDisabled\n                    ? \"bg-mButtonDisable cursor-not-allowed\"\n                    : \"bg-mButtonColor\"\n                }`}\n                onClick={updatePwdClick}\n              >\n                {t(\"save\")}\n              </button>\n            </div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default Accountinfo;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcClosegreen(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5 5L15 15M15 5L5 15\",\n    stroke: \"#2A7A5A\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcClosegreen);\nexport default __webpack_public_path__ + \"static/media/ic_closegreen.13f7b663fd890685aed77673c6feff59.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcSubscriptions(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M18 8V7.2C18 6.0799 18 5.51984 17.782 5.09202C17.5903 4.71569 17.2843 4.40973 16.908 4.21799C16.4802 4 15.9201 4 14.8 4H6.2C5.07989 4 4.51984 4 4.09202 4.21799C3.71569 4.40973 3.40973 4.71569 3.21799 5.09202C3 5.51984 3 6.0799 3 7.2V8M21 12H19C17.8954 12 17 12.8954 17 14C17 15.1046 17.8954 16 19 16H21M3 8V16.8C3 17.9201 3 18.4802 3.21799 18.908C3.40973 19.2843 3.71569 19.5903 4.09202 19.782C4.51984 20 5.07989 20 6.2 20H17.8C18.9201 20 19.4802 20 19.908 19.782C20.2843 19.5903 20.5903 19.2843 20.782 18.908C21 18.4802 21 17.9201 21 16.8V11.2C21 10.0799 21 9.51984 20.782 9.09202C20.5903 8.71569 20.2843 8.40973 19.908 8.21799C19.4802 8 18.9201 8 17.8 8H3Z\",\n    stroke: \"#2A7A5A\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcSubscriptions);\nexport default __webpack_public_path__ + \"static/media/ic_subscriptions.858a337aedc23c1c3451ee0c401550e3.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcPaymentlist(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 21,\n    height: 17,\n    viewBox: \"0 0 21 17\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5 10H10.5M5 6H15M8 15H4.2C3.0799 15 2.51984 15 2.09202 14.782C1.71569 14.5903 1.40973 14.2843 1.21799 13.908C1 13.4802 1 12.9201 1 11.8V4.2C1 3.07989 1 2.51984 1.21799 2.09202C1.40973 1.71569 1.71569 1.40973 2.09202 1.21799C2.51984 1 3.0799 1 4.2 1H15.8C16.9201 1 17.4802 1 17.908 1.21799C18.2843 1.40973 18.5903 1.71569 18.782 2.09202C19 2.51984 19 3.0799 19 4.2V4.5M12 16L14.025 15.595C14.2015 15.5597 14.2898 15.542 14.3721 15.5097C14.4452 15.4811 14.5147 15.4439 14.579 15.399C14.6516 15.3484 14.7152 15.2848 14.8426 15.1574L19 11C19.5523 10.4477 19.5523 9.55228 19 9C18.4477 8.44772 17.5523 8.44772 17 9L12.8426 13.1574C12.7152 13.2848 12.6516 13.3484 12.601 13.421C12.5561 13.4853 12.5189 13.5548 12.4903 13.6279C12.458 13.7102 12.4403 13.7985 12.405 13.975L12 16Z\",\n    stroke: \"#2A7A5A\",\n    strokeWidth: 2,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcPaymentlist);\nexport default __webpack_public_path__ + \"static/media/ic_paymentlist.dd4459de296f8458d18421278a83d970.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/ic_closegreen.svg\";\nimport { ReactComponent as SubscriptionsIcon } from \"../../assets/Images/ic_subscriptions.svg\";\nimport { ReactComponent as PaymentIcon } from \"../../assets/Images/ic_paymentlist.svg\";\nimport { Images } from \"../../Utils/Constants\";\nimport { getpaymentdetails } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport Loader from \"../../Utils/Loader\";\nimport { UserAlertDialog } from \"../../Components/UserAlertDialog\";\n\nconst SubscriptionInfo = () => {\n  const { t } = useTranslation(\"\");\n  const [selectView, setSelectView] = useState(1);\n  const [loading, setLoading] = useState(false);\n  const [allpayments, setAllpayments] = useState([]);\n  const [successpayment, setSuccesspayment] = useState([]);\n  const [failedpayment, setFailedpayment] = useState([]);\n  const [currentPlan, setcurrentPlan] = useState({});\n\n  const ClickSucesspayment = () => {\n    setSelectView(2);\n  };\n\n  const ClickFailpayments = () => {\n    setSelectView(3);\n  };\n\n  const ClickAllpayments = () => {\n    setSelectView(1);\n  };\n\n  //Set user Alert Msg\n  const [isAlertOpen, setIsAlertOpen] = useState(false);\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  //\n  useEffect(() => {\n    ServicePageAPICall();\n    if (!UserInfoData.view_status) {\n      setIsAlertOpen(true);\n    }\n  }, []);\n\n  //Set user Alert close\n  const closeAlert = () => setIsAlertOpen(false);\n\n  //Set user Alert reload page\n  const Confirm = () => {\n    setIsAlertOpen(false);\n    window.location.reload();\n  };\n\n  // Service Page API call\n  const ServicePageAPICall = async () => {\n    setLoading(true);\n    const response = await getpaymentdetails({\n      user_name: UserInfoData.user_email,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setcurrentPlan(\n          response?.data.message.subscription_payment_details.current_plan\n        );\n        setAllpayments(\n          response?.data.message.subscription_payment_details.all_payments\n        );\n        setSuccesspayment(\n          response?.data.message.subscription_payment_details.success_payment\n        );\n        setFailedpayment(\n          response?.data.message.subscription_payment_details.failed_payment\n        );\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  // const data = [\n  //   {\n  //     code: \"#29359\",\n  //     amount: \"₹2500\",\n  //     status: \"Incomplete\",\n  //     time: \"03:09 AM\",\n  //     date: \"Mar 15, 2023\",\n  //     plan: \"Monthly\",\n  //     ipAddress: \"192.168.0.1\",\n  //     paymentMethod: \"****67836\",\n  //     statusStyle: \"bg-gray-200 text-gray-500\",\n  //   },\n  //   {\n  //     code: \"#29350\",\n  //     amount: \"₹2500\",\n  //     status: \"Succeeded\",\n  //     time: \"02:26 AM\",\n  //     date: \"Feb 15, 2023\",\n  //     plan: \"Monthly\",\n  //     ipAddress: \"192.168.0.1\",\n  //     paymentMethod: \"****67836\",\n  //     statusStyle: \"bg-green-100 text-green-500\",\n  //   },\n  //   {\n  //     code: \"#29340\",\n  //     amount: \"₹2500\",\n  //     status: \"Succeeded\",\n  //     time: \"12:09 AM\",\n  //     date: \"Jan 15, 2023\",\n  //     plan: \"Monthly\",\n  //     ipAddress: \"192.168.0.1\",\n  //     paymentMethod: \"****67836\",\n  //     statusStyle: \"bg-green-100 text-green-500\",\n  //   },\n  // ];\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div className={``}>\n          <div\n            className={`${\n              !UserInfoData.view_status ? \"blur-sm pointer-events-none\" : \"\"\n            }`}\n          >\n            <div className=\"h-16 md:h-9 justify-between flex flex-row\">\n              <div className=\"justify-center items-center flex\">\n                <SubscriptionsIcon className=\"w-4 h-4 md:w-5 md:h-5 flex-shrink-0 cursor-pointer\" />\n                <div className=\"ml:2 md:ml-3\">\n                  {\" \"}\n                  <DashboardTitle label={t(\"Subscriptions\")} />\n                </div>\n              </div>\n              <div className=\"hidden h-9 ml-1 md:ml-6 mt-3 md:mt-0 p-2 md:p-4 bg-mButtonColorligth rounded-lg items-center justify-center  cursor-pointer\">\n                <CloseIcon className=\"w-4 h-4 md:w-5 md:h-5 flex-shrink-0 cursor-pointer\" />\n                <p className=\"ml-2 font-PlusJakartaSansRegular text-mButtonColor text-xs md:text-base\">\n                  {t(\"CancelSubscription\")}\n                </p>\n              </div>\n            </div>\n            <div className=\"mt-7 w-full md:w-1/2 bg-white rounded-xl\">\n              <div className=\"justify-end flex\">\n                {\" \"}\n                {/* <div className=\"w-28 py-1 bg-mButtonColor justify-center items-center flex rounded-tr-xl\">\n                  <p className=\"ml-2 font-PlusJakartaSansRegular text-white text-xs \">\n                    {t(\"Billingmonthly\")}\n                  </p>\n                </div> */}\n              </div>\n              <div className=\"p-2 flex flex-row mb-2\">\n                <div>\n                  <img\n                    src={Images.crownimage}\n                    alt=\"Profile\"\n                    className=\"w-16 h-16 rounded-full ml-3\"\n                  />\n                </div>\n                <div className=\" ml-5 justify-center items-start flex flex-col\">\n                  <div className=\"flex\">\n                    <DashboardTitle label={currentPlan.plan_name} />\n                    <div className=\"ml-3\">\n                      <DashboardTitle\n                        label={t(\"rupess\") + currentPlan.format_offer_price}\n                      />\n                    </div>\n                  </div>\n\n                  {/* <div>\n                    <span className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin\">\n                      Next invoice on Jun 01,2023 for\n                    </span>{\" \"}\n                    <span className=\"font-PlusJakartaSansSemiBold text-sm text-mTextColorLogin\">\n                      {\" \"}\n                      ₹ 2500\n                    </span>\n                  </div> */}\n                </div>\n              </div>\n            </div>\n\n            <div className=\"justify-start items-center flex mt-10\">\n              <PaymentIcon className=\"w-4 h-4 md:w-5 md:h-5 flex-shrink-0 cursor-pointer\" />\n              <div className=\"ml:2 md:ml-3\">\n                {\" \"}\n                <DashboardTitle label={t(\"Payments\")} />\n              </div>\n            </div>\n            <div className=\"mt-5\">\n              <div className=\"mt-5 flex\">\n                <div\n                  onClick={() => ClickAllpayments()}\n                  className=\"cursor-pointer w-auto\"\n                >\n                  <p\n                    className={` text-base 3xl:text-base ${\n                      selectView === 1\n                        ? \"font-PlusJakartaSansSemiBold\"\n                        : \"font-PlusJakartaSansRegular\"\n                    }  ${\n                      selectView === 1\n                        ? \"text-mButtonColor\"\n                        : \"text-mTextColorLogin\"\n                    } text-mSeventeen `}\n                  >\n                    {t(\"Allpayments\")}\n                  </p>\n                </div>\n\n                <div\n                  onClick={() => ClickSucesspayment()}\n                  className=\"cursor-pointer w-auto ml-5 \"\n                >\n                  <p\n                    className={` text-base 3xl:text-base ${\n                      selectView === 2\n                        ? \"font-PlusJakartaSansSemiBold\"\n                        : \"font-PlusJakartaSansRegular\"\n                    }  ${\n                      selectView === 2\n                        ? \"text-mButtonColor\"\n                        : \"text-mTextColorLogin\"\n                    }  ml-5 text-mSeventeen `}\n                  >\n                    {t(\"Succeeded\")}\n                  </p>\n                </div>\n\n                <div\n                  onClick={() => ClickFailpayments()}\n                  className=\"cursor-pointer w-auto ml-5 \"\n                >\n                  <p\n                    className={`text-base 3xl:text-base ${\n                      selectView === 3\n                        ? \"font-PlusJakartaSansSemiBold\"\n                        : \"font-PlusJakartaSansRegular\"\n                    }  ${\n                      selectView === 3\n                        ? \"text-mButtonColor\"\n                        : \"text-mTextColorLogin\"\n                    }  ml-5 text-mSeventeen `}\n                  >\n                    {t(\"Failed\")}\n                  </p>\n                </div>\n              </div>\n              <div className=\"mt-3   flex relative justify-start items-center\">\n                <div className=\"w-full border border-mBorderColor absolute\">\n                  {\" \"}\n                </div>\n                {/* <div className=\"w-44 border-2 border-purple-500 relative\"> </div> */}\n                <div\n                  className={`w-28 border-2 ${\n                    selectView === 1\n                      ? \"border-mButtonColor\"\n                      : \"border-transparent\"\n                  } `}\n                ></div>\n                <div\n                  className={`w-28 ml-6 3xl:ml-11 border-2 ${\n                    selectView === 2\n                      ? \"border-mButtonColor\"\n                      : \"border-transparent\"\n                  } `}\n                ></div>\n                <div\n                  className={`w-24 border-2 ml-5 3xl:ml-5 ${\n                    selectView === 3\n                      ? \"border-mButtonColor\"\n                      : \"border-transparent\"\n                  } `}\n                ></div>\n              </div>\n\n              <div className=\"mt-3 flex\">\n                <p className=\"font-PlusJakartaSansSemiBold text-base  text-[#171A1F]\">\n                  {selectView === 1\n                    ? allpayments.length\n                    : selectView === 2\n                    ? successpayment.length\n                    : failedpayment.length}\n                </p>\n                <p className=\"ml-1 font-PlusJakartaSansSemiBold text-base text-[#6F7787]\">\n                  total\n                </p>\n              </div>\n\n              <div className=\"overflow-x-auto mt-3 border border-mBorderColor rounded-lg\">\n                <table className=\"min-w-full bg-white rounded-lg\">\n                  <thead className=\"bg-mshadowColor text-center\">\n                    <tr>\n                      <TabelHeading label={t(\"Code\")} />\n\n                      <TabelHeading label={t(\"Amount\")} />\n                      <TabelHeading label={t(\"Status\")} />\n                      <TabelHeading label={t(\"Time\")} />\n                      <TabelHeading label={t(\"Date\")} />\n                      <TabelHeading label={t(\"Plan\")} />\n                    </tr>\n                  </thead>\n                  <tbody>\n                    {/* {selectView === 1\n                      ? allpayments\n                      : selectView === 2\n                      ? successpayment\n                      : failedpayment.map((row, index) => (\n                          <tr\n                            key={index}\n                            className={` p-2 items-center justify-between text-center ${\n                              index % 2 === 0 ? \"bg-white\" : \"bg-mshadowColor\"\n                            }`}\n                          >\n                            <td className=\"px-2 py-4 text-sm font-PlusJakartaSansMedium text-mButtonColor\">\n                              {row.name}\n                            </td>\n\n                            <td className=\"px-6 py-4 text-sm font-PlusJakartaSansSemiBold text-mTextColor\">\n                              {t(\"rupess\")} {row.amount}\n                            </td>\n                            <td className=\"px-2 py-4\">\n                              <span\n                                className={`px-3 py-1 text-sm font-medium rounded-full `}\n                              >\n                                {row.payment_status}\n                              </span>\n                            </td>\n                            <td className=\"px-2 py-4 text-sm font-PlusJakartaSansRegular text-mTextColor\">\n                              {row.time}\n                            </td>\n                            <td className=\"px-2 py-4 text-sm font-PlusJakartaSansRegular text-mTextColor\">\n                              {row.date}\n                            </td>\n                            <td className=\"px-2 py-4 text-sm font-PlusJakartaSansRegular text-mTextColor\">\n                              {row.plan_name}\n                            </td>\n                          </tr>\n                        ))} */}\n                    {selectView === 1 && allpayments.length > 0\n                      ? allpayments.map((row, index) => (\n                          <tr\n                            key={index}\n                            className={`p-2 items-center justify-between text-center ${\n                              index % 2 === 0 ? \"bg-white\" : \"bg-mshadowColor\"\n                            }`}\n                          >\n                            <CodeHeading label={row.name} />\n\n                            <AmountHeading\n                              label={t(\"rupess\") + \" \" + row.amount}\n                            />\n\n                            <StatusHeading label={row.payment_status} />\n\n                            <TimeHeading label={row.time} />\n\n                            <TimeHeading label={row.date} />\n\n                            <TimeHeading label={row.plan_name} />\n                          </tr>\n                        ))\n                      : selectView === 2 && successpayment.length > 0\n                      ? successpayment.map((row, index) => (\n                          <tr\n                            key={index}\n                            className={`p-2 items-center justify-between text-center ${\n                              index % 2 === 0 ? \"bg-white\" : \"bg-mshadowColor\"\n                            }`}\n                          >\n                            <CodeHeading label={row.name} />\n                            <AmountHeading\n                              label={t(\"rupess\") + \" \" + row.amount}\n                            />\n                            <StatusHeading label={row.payment_status} />\n                            <TimeHeading label={row.time} />\n\n                            <TimeHeading label={row.date} />\n\n                            <TimeHeading label={row.plan_name} />\n                          </tr>\n                        ))\n                      : failedpayment.map((row, index) => (\n                          <tr\n                            key={index}\n                            className={`p-2 items-center justify-between text-center ${\n                              index % 2 === 0 ? \"bg-white\" : \"bg-mshadowColor\"\n                            }`}\n                          >\n                            <CodeHeading label={row.name} />\n\n                            <AmountHeading\n                              label={t(\"rupess\") + \" \" + row.amount}\n                            />\n                            <StatusHeading label={row.payment_status} />\n                            <TimeHeading label={row.time} />\n\n                            <TimeHeading label={row.date} />\n\n                            <TimeHeading label={row.plan_name} />\n                          </tr>\n                        ))}\n                  </tbody>\n                </table>\n              </div>\n              <div className=\"h-5\"></div>\n            </div>\n          </div>\n\n          <UserAlertDialog\n            isOpen={isAlertOpen}\n            onClose={closeAlert}\n            Confirm={Confirm}\n          />\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default SubscriptionInfo;\n\nexport const TabelHeading = ({ label }) => (\n  <th className=\"px-2 py-4 text-sm font-PlusJakartaSansSemiBold text-mTextColor\">\n    {label}\n  </th>\n);\n\nexport const CodeHeading = ({ label }) => (\n  <td className=\"px-2 py-4 text-sm 3xl:text-sm font-PlusJakartaSansMedium text-mButtonColor\">\n    {label}\n  </td>\n);\n\nexport const AmountHeading = ({ label }) => (\n  <td className=\"px-6 py-4 text-sm 3xl:text-sm font-PlusJakartaSansSemiBold text-mTextColor\">\n    {label}\n  </td>\n);\n\nexport const StatusHeading = ({ label }) => (\n  <th\n    className={`px-2 py-4 text-sm 3xl:text-sm font-PlusJakartaSansSemiBold ${\n      label === \"Paid\"\n        ? \"text-mButtonColor\"\n        : label === \"Success\"\n        ? \"text-mButtonColor\"\n        : \"text-red-500\"\n    }`}\n  >\n    {label}\n  </th>\n);\n\nexport const TimeHeading = ({ label }) => (\n  <th className=\"px-2 py-4 text-sm 3xl:text-sm font-PlusJakartaSansRegular text-mTextColor\">\n    {label}\n  </th>\n);\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/ic_close.svg\";\nimport { ReactComponent as UploadIcon } from \"../../assets/Images/ic_upload.svg\";\nimport TextView from \"../../Components/TextView\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { isValidEmail } from \"../../Utils/Constants\";\nimport { toast } from \"react-toastify\";\nimport { mEditAboutprofile, mEditpersonaldetails } from \"../../Services/allAPI\";\n\nconst Profileinfoedit = ({\n  show,\n  onCancel,\n  clickCompOutsideClose,\n  isEditAbout,\n  profileInformation,\n}) => {\n  // alert(JSON.stringify(profileInformation));\n  const { t } = useTranslation(\"\");\n  const [fullname, setFullName] = useState(profileInformation[0].full_name);\n  const [mobileno, setMobileno] = useState(profileInformation[0].mobile_no);\n  const [email, setEmailId] = useState(profileInformation[0].mail_id);\n  const [linkedin, setLinkedin] = useState(profileInformation[0].linkedin);\n  const [gender, setGender] = useState(profileInformation[0].gender);\n  const [about, setabout] = useState(profileInformation[0].about);\n  const [loading, setLoading] = useState(false);\n\n  const isDisabled = !fullname || !mobileno || !email || !gender;\n  const isAboutDisabled = !about;\n\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  const saveClick = () => {\n    if (!isValidEmail(email)) {\n      toast.error(t(\"vaildmail\"));\n      return;\n    }\n    SaveCall();\n  };\n\n  // Profile save API Call\n  const SaveCall = async () => {\n    setLoading(true);\n    const response = await mEditpersonaldetails({\n      user_name: UserInfoData.user_email,\n      full_name: fullname,\n      gender: gender,\n      mobile_no: mobileno,\n      mail_id: email,\n      linkedin: linkedin,\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        onCancel();\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  const aboutsaveClick = () => {\n    if (about === \"\") {\n      toast.error(\"Please enter about your details\");\n      return;\n    }\n    SaveAboutCall();\n  };\n\n  //  Save about API Call\n  const SaveAboutCall = async () => {\n    setLoading(true);\n    const response = await mEditAboutprofile({\n      user_name: UserInfoData.user_email,\n      about: about,\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        onCancel();\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  const dialogRef = useRef();\n\n  // Close the dialog when clicking outside of it\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (dialogRef.current && !dialogRef.current.contains(event.target)) {\n        clickCompOutsideClose(); // Call onClose if the click is outside the dialog\n      }\n    };\n\n    if (show) {\n      document.addEventListener(\"mousedown\", handleClickOutside);\n    }\n\n    // Cleanup the event listener on component unmount\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [show, clickCompOutsideClose]);\n\n  if (!show) return null; // Don't render if the dialog is not open\n\n  return (\n    <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50  z-50\">\n      {/* max-w-sm */}\n\n      {!isEditAbout ? (\n        <div\n          className=\"bg-mDashboardBg rounded-lg h-90  mx-2 overflow-auto shadow-xl w-full md:w-2/5 lg:w-1/3 p-4 \"\n          ref={dialogRef}\n        >\n          <div className=\"justify-between flex\">\n            <div>\n              <p className=\"font-PlusJakartaSansSemiBold text-lg text-mTextColor\">\n                {t(\"update\")} {t(\"PersonalInformation\")}\n              </p>\n            </div>\n\n            <div>\n              <button onClick={onCancel}>\n                <CloseIcon className=\"mb-4 \" />\n              </button>\n            </div>\n          </div>\n\n          <div className=\"mt-5\">\n            <div className=\"mt-4\">\n              <TextView label={t(\"FullName\")} ismandatory={true} />\n            </div>\n            <InputContainer\n              type=\"text\"\n              value={fullname}\n              placeholder={t(\"enter\") + t(\"FullName\")}\n              label=\"text\"\n              name=\"text\"\n              disabled={false}\n              maxLength={200}\n              showIcon={false}\n              onChange={(e) => {\n                setFullName(e.target.value);\n              }}\n            />\n          </div>\n          <div className=\"mt-5\">\n            <div className=\"mt-4\">\n              <TextView label={t(\"Gender\")} ismandatory={true} />\n            </div>\n\n            <div className=\"h-14  p-3 w-full justify-start flex items-center\">\n              <div className=\"flex flex-row\">\n                <input\n                  type=\"radio\"\n                  value=\"Male\"\n                  checked={gender === \"Male\"}\n                  onChange={(e) => setGender(e.target.value)}\n                />\n                <p className=\"font-PlusJakartaSansRegular font-normal text-mTextColor text-base ml-2\">\n                  Male\n                </p>\n              </div>\n              <div className=\"ml-5 flex flex-row\">\n                <input\n                  type=\"radio\"\n                  value=\"Female\"\n                  checked={gender === \"Female\"}\n                  onChange={(e) => setGender(e.target.value)}\n                />\n                <p className=\"font-PlusJakartaSansRegular font-normal text-mTextColor text-base ml-2\">\n                  Female\n                </p>\n              </div>\n            </div>\n          </div>\n          <div className=\"mt-5\">\n            <div className=\"mt-4\">\n              <TextView label={t(\"MobileNumber\")} ismandatory={true} />\n            </div>\n            <InputContainer\n              type=\"tel\"\n              value={mobileno}\n              placeholder={t(\"enter\") + t(\"MobileNumber\")}\n              label=\"mobile\"\n              name=\"mobile\"\n              disabled={false}\n              maxLength={10}\n              showIcon={false}\n              onChange={(e) => {\n                setMobileno(e.target.value);\n              }}\n            />\n          </div>\n          <div className=\"mt-5\">\n            <div className=\"mt-4\">\n              <TextView label={t(\"MailID\")} ismandatory={true} />\n            </div>\n            <InputContainer\n              type=\"email\"\n              value={email}\n              placeholder={t(\"enter\") + t(\"MailID\")}\n              label=\"email\"\n              name=\"email\"\n              disabled={false}\n              maxLength={200}\n              showIcon={false}\n              onChange={(e) => {\n                setEmailId(e.target.value);\n              }}\n            />\n          </div>\n\n          <div className=\"mt-5\">\n            <div className=\"mt-4\">\n              <TextView label={t(\"LinkedIn\")} />\n            </div>\n            <InputContainer\n              type=\"text\"\n              value={linkedin}\n              placeholder={t(\"enter\") + t(\"LinkedIn\")}\n              label=\"text\"\n              name=\"text\"\n              disabled={false}\n              maxLength={200}\n              showIcon={false}\n              onChange={(e) => {\n                setLinkedin(e.target.value);\n              }}\n            />\n          </div>\n          <div className=\"mt-5\">\n            <PrimaryButton\n              label={t(\"save\")}\n              onClick={saveClick}\n              onDisable={isDisabled}\n            ></PrimaryButton>\n          </div>\n        </div>\n      ) : (\n        <div\n          className=\"bg-mDashboardBg rounded-lg mx-2 overflow-auto shadow-xl w-full md:w-2/5 lg:w-1/3 p-4 \"\n          ref={dialogRef}\n        >\n          <div className=\"justify-between flex\">\n            <div>\n              <p className=\"font-PlusJakartaSansSemiBold text-lg text-mTextColor\">\n                {t(\"update\")} {t(\"PersonalInformation\")}\n              </p>\n            </div>\n\n            <div>\n              <button onClick={onCancel}>\n                <CloseIcon className=\"mb-4 \" />\n              </button>\n            </div>\n          </div>\n\n          <div className=\"mt-5\">\n            <div className=\"mt-4\">\n              <TextView label={t(\"About\")} ismandatory={true} />\n            </div>\n            <div className=\"h-32 mt-2 border-mGreyFour text-start justify-start items-start flex text-xs  lg:text-sm  rounded-md w-full  border bg-mLightColorOne\">\n              <textarea\n                id=\"message\"\n                rows=\"5\"\n                value={about}\n                onChange={(e) => setabout(e.target.value)}\n                maxLength={3000}\n                className=\"block  w-full border-black  text-sm h-full break-words text-mTextColor px-2 py-3 text-start justify-start items-start  rounded-md   font-PlusJakartaSansRegular border-none focus:border-none  bg-mLightColorOne border-4 !outline-none\"\n                placeholder={t(\"enter\") + t(\"About\")}\n              ></textarea>\n            </div>\n          </div>\n\n          <div className=\"mt-5\">\n            <PrimaryButton\n              label={t(\"save\")}\n              onClick={aboutsaveClick}\n              onDisable={isAboutDisabled}\n            ></PrimaryButton>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default Profileinfoedit;\n","export const findEntryByCode = (source, code) => {\n    if (code && source != null) {\n        const codex = source.findIndex((c) => {\n            return c.isoCode === code;\n        });\n        return codex !== -1 ? source[codex] : undefined;\n    }\n    return undefined;\n};\nexport const findStateByCodeAndCountryCode = (source, code, countryCode) => {\n    if (code && countryCode && source != null) {\n        const codex = source.findIndex((c) => {\n            return c.isoCode === code && c.countryCode === countryCode;\n        });\n        return codex !== -1 ? source[codex] : undefined;\n    }\n    return undefined;\n};\nexport function defaultKeyToCompare(entity) {\n    return entity.name;\n}\nexport const compare = (a, b, \n// eslint-disable-next-line no-unused-vars\nkeyToCompare = defaultKeyToCompare) => {\n    if (keyToCompare(a) < keyToCompare(b))\n        return -1;\n    if (keyToCompare(a) > keyToCompare(b))\n        return 1;\n    return 0;\n};\nexport const convertArrayToObject = (keys, arr) => {\n    const result = arr.map((subArr) => {\n        return Object.fromEntries(keys.map((key, index) => [key, subArr[index]]));\n    });\n    return result;\n};\n","import countryList from './assets/country.json';\nimport { compare, findEntryByCode } from './utils';\n// Get a country by isoCode.\nfunction getCountryByCode(isoCode) {\n    if (!isoCode)\n        return undefined;\n    return findEntryByCode(countryList, isoCode);\n}\n// Get a list of all countries.\nfunction getAllCountries() {\n    return countryList;\n}\nfunction sortByIsoCode(countries) {\n    return countries.sort((a, b) => {\n        return compare(a, b, (entity) => {\n            return entity.isoCode;\n        });\n    });\n}\nexport default {\n    getCountryByCode,\n    getAllCountries,\n    sortByIsoCode,\n};\n","import stateList from './assets/state.json';\nimport { findEntryByCode, findStateByCodeAndCountryCode, compare } from './utils';\n// Get a list of all states.\nexport function getAllStates() {\n    return stateList;\n}\n// Get a list of states belonging to a specific country.\nexport function getStatesOfCountry(countryCode = '') {\n    if (!countryCode)\n        return [];\n    // get data from file or cache\n    const states = stateList.filter((value) => {\n        return value.countryCode === countryCode;\n    });\n    return states.sort(compare);\n}\nexport function getStateByCodeAndCountry(stateCode, countryCode) {\n    if (!stateCode)\n        return undefined;\n    if (!countryCode)\n        return undefined;\n    return findStateByCodeAndCountryCode(stateList, stateCode, countryCode);\n}\n// to be deprecate\nexport function getStateByCode(isoCode) {\n    // eslint-disable-next-line no-console\n    console.warn(`WARNING! 'getStateByCode' has been deprecated, please use the new 'getStateByCodeAndCountry' function instead!`);\n    if (!isoCode)\n        return undefined;\n    return findEntryByCode(stateList, isoCode);\n}\nfunction sortByIsoCode(countries) {\n    return countries.sort((a, b) => {\n        return compare(a, b, (entity) => {\n            return `${entity.countryCode}-${entity.isoCode}`;\n        });\n    });\n}\nexport default {\n    getAllStates,\n    getStatesOfCountry,\n    getStateByCodeAndCountry,\n    getStateByCode,\n    sortByIsoCode,\n};\n","import cityList from './assets/city.json';\nimport { compare, convertArrayToObject } from './utils';\nconst KEYS = [\n    \"name\",\n    \"countryCode\",\n    \"stateCode\",\n    \"latitude\",\n    \"longitude\"\n];\nlet convertedCityList = [];\n// Get a list of all cities.\nfunction getAllCities(keys = KEYS) {\n    if (convertedCityList.length) {\n        return convertedCityList;\n    }\n    const cityJSON = cityList;\n    convertedCityList = convertArrayToObject(keys !== null && keys !== void 0 ? keys : KEYS, cityJSON);\n    return convertedCityList;\n}\n// Get a list of cities belonging to a specific state and country.\nfunction getCitiesOfState(countryCode, stateCode) {\n    if (!stateCode)\n        return [];\n    if (!countryCode)\n        return [];\n    const cityList = getAllCities();\n    const cities = cityList.filter((value) => {\n        return value.countryCode === countryCode && value.stateCode === stateCode;\n    });\n    return cities.sort(compare);\n}\n// Get a list of cities belonging to a specific country.\nfunction getCitiesOfCountry(countryCode) {\n    if (!countryCode)\n        return [];\n    const cityList = getAllCities();\n    const cities = cityList.filter((value) => {\n        return value.countryCode === countryCode;\n    });\n    return cities.sort(compare);\n}\nfunction sortByStateAndName(cities) {\n    return cities.sort((a, b) => {\n        const result = compare(a, b, (entity) => {\n            return `${entity.countryCode}-${entity.stateCode}`;\n        });\n        if (result !== 0)\n            return result;\n        return compare(a, b);\n    });\n}\nexport default {\n    getAllCities,\n    getCitiesOfState,\n    getCitiesOfCountry,\n    sortByStateAndName,\n};\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/ic_close.svg\";\nimport { ReactComponent as UploadIcon } from \"../../assets/Images/ic_upload.svg\";\nimport TextView from \"../../Components/TextView\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { Images, isValidEmail } from \"../../Utils/Constants\";\nimport { toast } from \"react-toastify\";\nimport { mEditAboutcompany, mEditcompanydetails } from \"../../Services/allAPI\";\nimport Loader from \"../../Utils/Loader\";\nimport { Country, State, City } from \"country-state-city\";\nimport \"../../Components/Autocomplete/Autocompletestyle.css\";\nimport TextViewlight from \"../../Components/TextViewlight\";\n\nconst Companyinfoedit = ({\n  show,\n  onCancel,\n  clickCompOutsideClose,\n  isEditAbout,\n  companyInformation,\n}) => {\n  const { t } = useTranslation(\"\");\n  const [companyname, setCompanyName] = useState(\n    companyInformation[0].company_name\n  );\n  const [postion, setPostion] = useState(companyInformation[0].position);\n  const [sector, setSector] = useState(companyInformation[0].sector);\n  const [email, setEmailId] = useState(companyInformation[0].mail_id);\n  const [address, setAddress] = useState(companyInformation[0].address);\n  const [website, setWebsite] = useState(companyInformation[0].website);\n\n  const [about, setabout] = useState(companyInformation[0].company_about);\n  const [loading, setLoading] = useState(false);\n\n  const isDisabled =\n    !companyname || !postion || !sector || !email || !address || !website;\n  const isAboutDisabled = !about;\n\n  const saveClick = () => {\n    if (!isValidEmail(email)) {\n      toast.error(t(\"vaildmail\"));\n      return;\n    }\n    SaveCall();\n  };\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  // Company save API Call\n  const SaveCall = async () => {\n    setLoading(true);\n    const response = await mEditcompanydetails({\n      user_name: UserInfoData.user_email,\n      company_name: companyname,\n      position: postion,\n      sector: sector,\n      mail_id: email,\n      address: address,\n      address_id: companyInformation[0].address_id,\n      city: selectedCity,\n      country: selectedCountry,\n      state: selectedState,\n      pincode: \"\",\n      website: website,\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        onCancel();\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  const saveAboutClick = () => {\n    SaveAboutCall();\n  };\n\n  // Company about save API Call\n  const SaveAboutCall = async () => {\n    setLoading(true);\n    const response = await mEditAboutcompany({\n      user_name: UserInfoData.user_email,\n      about_company: about,\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        onCancel();\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  // Select country state city start\n\n  const [selectedCountry, setSelectedCountry] = useState(\n    companyInformation[0].country\n  );\n  const [selectedCountryid, setSelectedCountryid] = useState(null);\n  const [selectedState, setSelectedState] = useState(\n    companyInformation[0].state\n  );\n  const [selectedStateid, setSelectedStateid] = useState(null);\n  const [selectedCity, setSelectedCity] = useState(companyInformation[0].city);\n  // const [inputValue, setInputValue] = useState(\"\");\n  const [Countryfiltered, setCountryFiltered] = useState([]);\n  const [mGetState, setmGetState] = useState([]);\n  const [Statefiltered, setStateFiltered] = useState([]);\n  const [mGetCity, setmGetCity] = useState([]);\n  const [Cityfiltered, setCityfiltered] = useState([]);\n  const [isCountryDropdownDisabled, setIsCountryDropdownDisabled] =\n    useState(false);\n\n  const [isStateDropdownDisabled, setIsStateDropdownDisabled] = useState(false);\n  const [isCityDropdownDisabled, setIsCityDropdownDisabled] = useState(false);\n\n  const [isStateDisabled, setIsStateDisabled] = useState(true);\n  const [isCityDisabled, setIsCityDisabled] = useState(true);\n\n  // Get country options for the dropdown\n  const countryOptions = Country.getAllCountries().map((country) => ({\n    value: country.isoCode,\n    label: country.name,\n  }));\n\n  const handleCountryChange = (event) => {\n    const inputValue = event.target.value;\n    // setInputValue(inputValue);\n    setSelectedCountry(inputValue);\n    setIsCountryDropdownDisabled(false);\n    const filteredSuggestions = countryOptions.filter((suggestion) =>\n      suggestion.label.toLowerCase().includes(inputValue.toLowerCase())\n    );\n    //alert(JSON.stringify(filteredSuggestions));\n    setCountryFiltered(filteredSuggestions);\n  };\n\n  const handleCountrySelect = (name, id) => {\n    setSelectedState(null);\n    setSelectedStateid(null);\n    setSelectedCity(null);\n    setSelectedCountry(name);\n    setIsStateDisabled(false);\n    setIsCityDisabled(true);\n    setSelectedCountryid(id);\n    setIsCountryDropdownDisabled(true);\n\n    const stateOptions = Countryfiltered\n      ? State.getStatesOfCountry(id).map((state) => ({\n          value: state.isoCode,\n          label: state.name,\n        }))\n      : [];\n    setmGetState(stateOptions);\n  };\n\n  const handleStateChange = (event) => {\n    if (!isStateDisabled) {\n      const inputValue = event.target.value;\n      setSelectedState(inputValue);\n      setIsStateDropdownDisabled(false);\n      const filteredStateSuggestions = mGetState.filter((suggestion) =>\n        suggestion.label.toLowerCase().includes(inputValue.toLowerCase())\n      );\n      setStateFiltered(filteredStateSuggestions);\n    }\n  };\n\n  const handleStateSelect = (name, id) => {\n    setSelectedStateid(id);\n    setSelectedState(name);\n    setIsCityDisabled(false);\n    setSelectedCity(null);\n    setIsStateDropdownDisabled(true);\n    const cityOptions = selectedState\n      ? City.getCitiesOfState(selectedCountryid, id).map((city) => ({\n          value: city.name,\n          label: city.name,\n        }))\n      : [];\n\n    setmGetCity(cityOptions);\n  };\n\n  const handleCityChange = (event) => {\n    // if (isCityDisabled) {\n    const inputValue = event.target.value;\n\n    setSelectedCity(inputValue);\n    setIsCityDropdownDisabled(false);\n    const filteredCitySuggestions = mGetCity.filter((suggestion) =>\n      suggestion.label.toLowerCase().includes(inputValue.toLowerCase())\n    );\n    setCityfiltered(filteredCitySuggestions);\n    // }\n  };\n\n  const handleCitySelect = (value) => {\n    setSelectedCity(value);\n    setIsCityDropdownDisabled(true);\n  };\n\n  // Select country state city end\n\n  const dialogRef = useRef();\n\n  // Close the dialog when clicking outside of it\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (dialogRef.current && !dialogRef.current.contains(event.target)) {\n        clickCompOutsideClose(); // Call onClose if the click is outside the dialog\n      }\n    };\n\n    if (show) {\n      document.addEventListener(\"mousedown\", handleClickOutside);\n    }\n\n    // Cleanup the event listener on component unmount\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [show, clickCompOutsideClose]);\n\n  if (!show) return null; // Don't render if the dialog is not open\n\n  return (\n    <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50  z-50\">\n      {/* max-w-sm */}\n\n      {!isEditAbout ? (\n        <div\n          className=\"bg-mDashboardBg rounded-lg h-90  mx-2 overflow-auto shadow-xl w-full md:w-2/5 lg:w-1/3 p-4 \"\n          ref={dialogRef}\n        >\n          <div className=\"justify-between flex\">\n            <div>\n              <p className=\"font-PlusJakartaSansSemiBold text-lg text-mTextColor\">\n                {t(\"update\")} {t(\"CompanyInformation\")}\n              </p>\n            </div>\n\n            <div>\n              <button onClick={onCancel}>\n                <CloseIcon className=\"mb-4 \" />\n              </button>\n            </div>\n          </div>\n\n          {loading ? (\n            // <div className=\"max-h-72\">\n            <Loader />\n          ) : (\n            <div>\n              <div className=\"mt-5\">\n                <div className=\"mt-4\">\n                  <TextView label={t(\"CompanyName\")} ismandatory={true} />\n                </div>\n                <InputContainer\n                  type=\"text\"\n                  value={companyname}\n                  placeholder={t(\"enter\") + t(\"CompanyName\")}\n                  label=\"text\"\n                  name=\"text\"\n                  disabled={false}\n                  maxLength={200}\n                  showIcon={false}\n                  onChange={(e) => {\n                    setCompanyName(e.target.value);\n                  }}\n                />\n              </div>\n\n              <div className=\"mt-5\">\n                <div className=\"mt-4\">\n                  <TextView label={t(\"Position\")} ismandatory={true} />\n                </div>\n                <InputContainer\n                  type=\"text\"\n                  value={postion}\n                  placeholder={t(\"enter\") + t(\"Position\")}\n                  label=\"text\"\n                  name=\"text\"\n                  disabled={false}\n                  maxLength={200}\n                  showIcon={false}\n                  onChange={(e) => {\n                    setPostion(e.target.value);\n                  }}\n                />\n              </div>\n\n              <div className=\"mt-5\">\n                <div className=\"mt-4\">\n                  <TextView label={t(\"Sector\")} ismandatory={true} />\n                </div>\n                <InputContainer\n                  type=\"text\"\n                  value={sector}\n                  placeholder={t(\"enter\") + t(\"Sector\")}\n                  label=\"text\"\n                  name=\"text\"\n                  disabled={false}\n                  maxLength={200}\n                  showIcon={false}\n                  onChange={(e) => {\n                    setSector(e.target.value);\n                  }}\n                />\n              </div>\n\n              <div className=\"mt-5\">\n                <div className=\"mt-4\">\n                  <TextView label={t(\"MailID\")} ismandatory={true} />\n                </div>\n                <InputContainer\n                  type=\"email\"\n                  value={email}\n                  placeholder={t(\"enter\") + t(\"MailID\")}\n                  label=\"email\"\n                  name=\"email\"\n                  disabled={false}\n                  maxLength={200}\n                  showIcon={false}\n                  onChange={(e) => {\n                    setEmailId(e.target.value);\n                  }}\n                />\n              </div>\n\n              <div className=\"mt-5\">\n                <div className=\"mt-4\">\n                  <TextView label={t(\"Address\")} ismandatory={true} />\n                </div>\n                <InputContainer\n                  type=\"text\"\n                  value={address}\n                  placeholder={t(\"enter\") + t(\"Address\")}\n                  label=\"text\"\n                  name=\"text\"\n                  disabled={false}\n                  maxLength={200}\n                  showIcon={false}\n                  onChange={(e) => {\n                    setAddress(e.target.value);\n                  }}\n                />\n              </div>\n\n              {/* Country Select */}\n              <div className=\"mt-5\">\n                <div className=\"mt-4\">\n                  <TextView label={t(\"Country\")} ismandatory={true} />\n                </div>\n                <div className=\" mt-3\">\n                  <div className=\"autocomplete-container absolute\">\n                    <input\n                      className=\"autocomplete-input font-PlusJakartaSansRegular text-sm  3xl:text-sm text-mTextColor placeholder-mTextColorLogin\"\n                      type=\"text\"\n                      value={selectedCountry}\n                      onChange={handleCountryChange}\n                      placeholder=\"Search country...\"\n                    />\n\n                    {!isCountryDropdownDisabled && (\n                      <ul className=\"autocomplete-suggestions\">\n                        {Countryfiltered.map((suggestion, index) => (\n                          <li\n                            key={index}\n                            className=\"autocomplete-suggestion font-PlusJakartaSansRegular text-mTextColor text-sm  3xl:text-sm\"\n                            onClick={() =>\n                              handleCountrySelect(\n                                suggestion.label,\n                                suggestion.value\n                              )\n                            }\n                          >\n                            <div className=\"w-full h-full\">\n                              <div className=\"flex-row flex h-full\">\n                                <div className=\"h-9 flex  ml-2 justify-center items-center\">\n                                  <TextViewlight label={suggestion.label} />\n                                </div>\n                              </div>\n                            </div>\n                          </li>\n                        ))}\n                      </ul>\n                    )}\n                  </div>\n                </div>\n              </div>\n\n              {/* State Select */}\n              <div className=\"mt-5\">\n                <div className=\"mt-4\">\n                  <TextView label={t(\"state\")} ismandatory={true} />\n                </div>\n                <div className=\" mt-3\">\n                  <div className=\"autocomplete-container absolute\">\n                    <input\n                      className={`autocomplete-input font-PlusJakartaSansRegular text-sm  3xl:text-sm text-mTextColor placeholder-mTextColorLogin ${\n                        isStateDisabled ? \"bg-mMenuSelect\" : \"bg-white\"\n                      }`}\n                      type=\"text\"\n                      value={selectedState}\n                      onChange={handleStateChange}\n                      disabled={isStateDisabled}\n                      placeholder=\"Search state...\"\n                    />\n\n                    {!isStateDropdownDisabled && (\n                      <ul className=\"autocomplete-suggestions\">\n                        {Statefiltered.map((suggestion, index) => (\n                          <li\n                            key={index}\n                            className=\"autocomplete-suggestion font-PlusJakartaSansRegular text-mTextColor text-sm  3xl:text-sm\"\n                            onClick={() =>\n                              handleStateSelect(\n                                suggestion.label,\n                                suggestion.value\n                              )\n                            }\n                          >\n                            <div className=\"w-full h-full\">\n                              <div className=\"flex-row flex h-full\">\n                                <div className=\"h-9 flex  ml-2 justify-center items-center\">\n                                  <TextViewlight label={suggestion.label} />\n                                </div>\n                              </div>\n                            </div>\n                          </li>\n                        ))}\n                      </ul>\n                    )}\n                  </div>\n                </div>\n              </div>\n\n              {/* City Select */}\n              <div className=\"mt-5\">\n                <div className=\"mt-4\">\n                  <TextView label={t(\"city\")} ismandatory={true} />\n                </div>\n                <div className=\" mt-3\">\n                  <div className=\"autocomplete-container absolute\">\n                    <input\n                      className={`autocomplete-input font-PlusJakartaSansRegular text-sm  3xl:text-sm text-mTextColor placeholder-mTextColorLogin ${\n                        isCityDisabled ? \"bg-mMenuSelect\" : \"bg-white\"\n                      }`}\n                      type=\"text\"\n                      value={selectedCity}\n                      onChange={handleCityChange}\n                      disabled={isCityDisabled}\n                      placeholder=\"Search City...\"\n                    />\n\n                    {!isCityDropdownDisabled && (\n                      <ul className=\"autocomplete-suggestions\">\n                        {Cityfiltered.map((suggestion, index) => (\n                          <li\n                            key={index}\n                            className=\"autocomplete-suggestion font-PlusJakartaSansRegular text-mTextColor text-sm  3xl:text-sm\"\n                            onClick={() => handleCitySelect(suggestion.label)}\n                          >\n                            <div className=\"w-full h-full\">\n                              <div className=\"flex-row flex h-full\">\n                                <div className=\"h-9 flex  ml-2 justify-center items-center\">\n                                  <TextViewlight label={suggestion.label} />\n                                </div>\n                              </div>\n                            </div>\n                          </li>\n                        ))}\n                      </ul>\n                    )}\n                  </div>\n                </div>\n              </div>\n\n              <div className=\"mt-5\">\n                <div className=\"mt-4\">\n                  <TextView label={t(\"Website\")} ismandatory={true} />\n                </div>\n                <InputContainer\n                  type=\"text\"\n                  value={website}\n                  placeholder={t(\"enter\") + t(\"Website\")}\n                  label=\"text\"\n                  name=\"text\"\n                  disabled={false}\n                  maxLength={200}\n                  showIcon={false}\n                  onChange={(e) => {\n                    setWebsite(e.target.value);\n                  }}\n                />\n              </div>\n\n              <div className=\"mt-5\">\n                <PrimaryButton\n                  label={t(\"save\")}\n                  onClick={saveClick}\n                  onDisable={isDisabled}\n                ></PrimaryButton>\n              </div>\n            </div>\n          )}\n        </div>\n      ) : (\n        <div\n          className=\"bg-mDashboardBg rounded-lg mx-2 overflow-auto shadow-xl w-full md:w-2/5 lg:w-1/3 p-4 \"\n          ref={dialogRef}\n        >\n          <div className=\"justify-between flex\">\n            <div>\n              <p className=\"font-PlusJakartaSansSemiBold text-lg text-mTextColor\">\n                {t(\"update\")} {t(\"CompanyInformation\")}\n              </p>\n            </div>\n\n            <div>\n              <button onClick={onCancel}>\n                <CloseIcon className=\"mb-4 \" />\n              </button>\n            </div>\n          </div>\n\n          {loading ? (\n            <div className=\"max-h-60\">\n              <Loader />\n            </div>\n          ) : (\n            <div>\n              <div className=\"mt-5\">\n                <div className=\"mt-4\">\n                  <TextView label={t(\"About\")} ismandatory={true} />\n                </div>\n                <div className=\"h-32 mt-2 border-mGreyFour text-start justify-start items-start flex text-xs  lg:text-sm  rounded-md w-full  border bg-mLightColorOne\">\n                  <textarea\n                    id=\"message\"\n                    rows=\"5\"\n                    value={about}\n                    onChange={(e) => setabout(e.target.value)}\n                    maxLength={3000}\n                    className=\"block  w-full border-black  text-sm h-full break-words text-mTextColor px-2 py-3 text-start justify-start items-start  rounded-md   font-PlusJakartaSansRegular border-none focus:border-none  bg-mLightColorOne border-4 !outline-none\"\n                    placeholder={t(\"enter\") + t(\"About\")}\n                  ></textarea>\n                </div>\n              </div>\n\n              <div className=\"mt-5\">\n                <PrimaryButton\n                  label={t(\"save\")}\n                  onClick={saveAboutClick}\n                  onDisable={isAboutDisabled}\n                ></PrimaryButton>\n              </div>\n            </div>\n          )}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default Companyinfoedit;\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport Loader from \"../../Utils/Loader\";\nimport SideMenu from \"../../Components/SideMenu\";\nimport { Images } from \"../../Utils/Constants\";\nimport { mGetprofile, setProfileImage } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport HeaderMenu from \"../../Components/HeaderMenu\";\nimport ProfileSideMenu from \"../../Components/ProfileSideMenu\";\n\nimport Profileinfo from \"./Profileinfo\";\nimport Companyinfo from \"./Companyinfo\";\nimport Accountinfo from \"./Accountinfo\";\nimport SubscriptionInfo from \"./SubscriptionInfo\";\nimport Profileinfoedit from \"./Profileinfoedit\";\nimport Companyinfoedit from \"./Companyinfoedit\";\nimport { useDispatch } from \"react-redux\";\nimport { setUser } from \"../../redux/slice/userSlice\";\n\nconst ProfilePage = () => {\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const [isEditAbout, setisEditAbout] = useState(false);\n\n  const [showView, setshowView] = useState(0);\n\n  const [profileEditShow, setprofileEditShow] = useState(false);\n  const [companyEditShow, setcompanyEditShow] = useState(false);\n\n  const [profileInformation, setProfileInformation] = useState([]);\n  const [companyInformation, setCompanyInformation] = useState([]);\n  const [UploadFiles, setUploadFiles] = useState([]);\n  const dispatch = useDispatch();\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  //\n  useEffect(() => {\n    ProfilePageAPICall();\n  }, []);\n\n  // Service Page API call\n  const ProfilePageAPICall = async () => {\n    setLoading(true);\n    const response = await mGetprofile({\n      user_name: UserInfoData.user_email,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      setUserImage(\"\");\n\n      if (response?.data.message.status) {\n        setProfileInformation(response?.data.message.profile_information);\n        setCompanyInformation(response?.data.message.company_information);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const handleClick = (itemName) => {\n    // alert(`You clicked on ${itemName}`);\n    if (itemName === 0) {\n      if (UserInfoData.user_type === \"Investor\") {\n        setshowView(0);\n      } else {\n        setshowView(0);\n      }\n    } else if (itemName === 1) {\n      if (UserInfoData.user_type === \"Investor\") {\n        setshowView(3);\n      } else {\n        setshowView(1);\n      }\n    } else if (itemName === 2) {\n      //setshowView(2);\n      setshowView(3);\n    } else if (itemName === 3) {\n      setshowView(3);\n    } else if (itemName === 4) {\n      setshowView(0);\n    }\n  };\n\n  const clickClose = () => {\n    ProfilePageAPICall();\n    setprofileEditShow(false);\n  };\n\n  const clickOutsideClose = () => {\n    setprofileEditShow(false);\n  };\n\n  const Editclick = () => {\n    setprofileEditShow(true);\n    setisEditAbout(false);\n  };\n\n  const EditAboutclick = () => {\n    setprofileEditShow(true);\n    setisEditAbout(true);\n  };\n\n  const CompEditclick = () => {\n    setcompanyEditShow(true);\n    setisEditAbout(false);\n  };\n\n  const CompEditAboutclick = () => {\n    setcompanyEditShow(true);\n    setisEditAbout(true);\n  };\n\n  const clickCompClose = () => {\n    ProfilePageAPICall();\n    setcompanyEditShow(false);\n  };\n\n  const clickCompOutsideClose = () => {\n    setcompanyEditShow(false);\n  };\n\n  // Image Change\n  const [userimage, setUserImage] = useState(\"\");\n  //const [uploadimage, setUploadImage] = useState(\"\");\n  const inputRef = useRef();\n  const onChooseImg = () => {\n    inputRef.current.click();\n  };\n\n  const handleFileChange = (e) => {\n    // const selectedFile = e.target.files[0];\n    // setFile(selectedFile);\n    // console.log(\"file : \" + file);\n    // if (selectedFile) {\n    //   convertToBase64(selectedFile);\n    // }\n    if (e.target.files && e.target.files.length > 0) {\n      const reader = new FileReader();\n\n      // reader.addEventListener(\"load\", () => setImgSrc(reader.result));\n      reader.readAsDataURL(e.target.files[0]);\n\n      const file = e.target.files[0];\n      if (file) {\n        const fileName = file.name.split(\".\");\n        const fileExtension = file.name.split(\".\").pop();\n        console.log(file);\n        console.log(fileName[0]);\n        console.log(fileExtension);\n        convertToBase64(file, fileName[0], fileExtension);\n      }\n    }\n  };\n\n  const convertToBase64 = (file, fileName, fileExtension) => {\n    const reader = new FileReader();\n    reader.readAsDataURL(file);\n    console.log(fileExtension);\n    reader.onloadend = () => {\n      setUserImage(reader.result);\n      var attachFile = \"\";\n      if (fileExtension === \"png\") {\n        attachFile = reader.result.replace(\"data:image/png;base64,\", \"\");\n      } else if (fileExtension === \"jpg\" || fileExtension === \"jpeg\") {\n        attachFile = reader.result.replace(\"data:image/jpeg;base64,\", \"\");\n      }\n      // setUploadImage(attachFile);\n      // console.log(attachFile);\n      let myObject = {\n        file_type: fileExtension,\n        file: attachFile,\n        file_name: fileName,\n      }; // create an object\n\n      // setUploadFiles([...UploadFiles, myObject]);\n      setUploadFiles((prevUploadFiles) => [...prevUploadFiles, myObject]);\n      console.log(\"UploadFiles\" + JSON.stringify(UploadFiles));\n      console.log(\"UploadFiles\" + userimage);\n      uploadImage(fileExtension, attachFile, fileName);\n    };\n    reader.onerror = (error) => {\n      console.error(\"Error: \", error);\n    };\n  };\n\n  // upload Image API call\n  const uploadImage = async (fileExtension, attachFile, fileName) => {\n    setLoading(true);\n    const response = await setProfileImage({\n      user_name: UserInfoData.user_email,\n      file_name: fileName,\n      file_type: fileExtension,\n      profile_image: attachFile,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n\n      if (response?.data.message.status) {\n        dispatch(setUser({ user: response?.data.message.userinfo }));\n        localStorage.setItem(\n          \"UserInfo\",\n          JSON.stringify(response?.data.message.userinfo)\n        );\n        toast.success(response?.data.message.message);\n        ProfilePageAPICall();\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const removeClick = () => {\n    setUserImage(\"\");\n\n    uploadImage(\"\", \"\", \"\");\n  };\n  // Image change End\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div>\n          <div className=\"flex h-screen overflow-hidden  bg-no-repeat bg-cover \">\n            {/* Sidebar */}\n            <SideMenu mFrom={-1} mProfile={0} />\n\n            {/* Main content bg-mDashboardBg */}\n            <div className=\"flex flex-col flex-grow overflow-hidden  bg-mDashboardBg\">\n              {/* Top Navigation */}\n\n              <HeaderMenu title={t(\"profile\")} notShowsubscription={true} />\n\n              {/* Scrollable content scrollbar-hide */}\n              <main className=\"flex-grow  overflow-auto  mt-2 mb-2 mr-2 p-3 md:p-5 lg:p-8\">\n                <div className=\"h-full\">\n                  <div className=\"w-full py-1 lg:py-2 items-center justify-start flex \">\n                    <div>\n                      {userimage.length === 0 ? (\n                        profileInformation.length > 0 ? (\n                          profileInformation[0].profile_image.length > 0 ? (\n                            <img\n                              src={profileInformation[0].profile_image}\n                              alt=\"Profile\"\n                              className=\"w-12 h-12 lg:w-16 lg:h-16 rounded-full ml-1 lg:ml-3\"\n                            />\n                          ) : (\n                            <img\n                              src={Images.profileimage}\n                              alt=\"Profile\"\n                              className=\"w-12 h-12 lg:w-16 lg:h-16 rounded-full ml-1 lg:ml-3\"\n                            />\n                            // <p>64</p>\n                          )\n                        ) : (\n                          <img\n                            src={Images.profileimage}\n                            alt=\"Profile\"\n                            className=\"w-12 h-12 lg:w-16 lg:h-16 rounded-full ml-1 lg:ml-3\"\n                          />\n                        )\n                      ) : (\n                        <img\n                          src={userimage}\n                          alt=\"Profile\"\n                          className=\"w-12 h-12 lg:w-16 lg:h-16 rounded-full ml-1 lg:ml-3 \"\n                        />\n                      )}\n                    </div>\n\n                    <div\n                      className=\"h-9 lg:h-11 ml-2 lg:ml-6 p-1 lg:p-3 bg-mButtonColorligth rounded-lg items-center justify-center flex  cursor-pointer\"\n                      onClick={() => onChooseImg()}\n                    >\n                      <div\n                        className=\"  justify-center items-center flex flex-col cursor-pointer absolute \"\n                        onClick={() => onChooseImg()}\n                      >\n                        <input\n                          className=\" h-44 w-full absolute\"\n                          id=\"file\"\n                          ref={inputRef}\n                          type=\"file\"\n                          accept=\"image/*\"\n                          style={{ display: \"none\" }}\n                          onChange={handleFileChange}\n                        />\n                      </div>\n                      <p className=\"ml-2 font-PlusJakartaSansSemiBold text-mButtonColor text-base 3xl:text-base \">\n                        {\" \"}\n                        {t(\"Change\")}{\" \"}\n                      </p>\n                    </div>\n\n                    <div\n                      className=\"h-9 lg:h-11 ml-2 lg:ml-6 p-1 lg:p-3 bg-white rounded-lg items-center justify-center flex cursor-pointer\"\n                      onClick={() => removeClick()}\n                    >\n                      <p className=\"ml-2 font-PlusJakartaSansSemiBold text-mTextColorLogin text-base 3xl:text-base \">\n                        {t(\"Remove\")}\n                      </p>\n                    </div>\n                  </div>\n                  <div className=\"mt-5 lg:mt-10 h-full w-full flex-col lg:flex-row flex rounded-xl \">\n                    <div className=\"w-full ml-2 lg:h-screen  lg:w-1/5 bg-white rounded-md lg:rounded-xl\">\n                      <ProfileSideMenu\n                        mFrom={showView}\n                        handleClick={handleClick}\n                      />\n                    </div>\n                    <div className=\"w-full lg:w-4/5 mt-3 lg:mt-0  h-full ml-2 lg:ml-4 \">\n                      {showView === 0 ? (\n                        <Profileinfo\n                          mEditclick={Editclick}\n                          mEditAboutclick={EditAboutclick}\n                          getprofileInformation={profileInformation}\n                        />\n                      ) : showView === 1 ? (\n                        <Companyinfo\n                          mcompEditclick={CompEditclick}\n                          mcompEditAboutclick={CompEditAboutclick}\n                          companyInformation={companyInformation}\n                        />\n                      ) : showView === 2 ? (\n                        <SubscriptionInfo />\n                      ) : (\n                        <Accountinfo />\n                      )}\n                    </div>\n                  </div>\n                </div>\n              </main>\n              {profileEditShow ? (\n                <Profileinfoedit\n                  show={profileEditShow}\n                  onCancel={clickClose}\n                  isEditAbout={isEditAbout}\n                  clickCompOutsideClose={clickOutsideClose}\n                  profileInformation={profileInformation}\n                />\n              ) : (\n                <div></div>\n              )}\n\n              {companyEditShow ? (\n                <Companyinfoedit\n                  show={companyEditShow}\n                  onCancel={clickCompClose}\n                  isEditAbout={isEditAbout}\n                  clickCompOutsideClose={clickCompOutsideClose}\n                  companyInformation={companyInformation}\n                />\n              ) : (\n                <div></div>\n              )}\n            </div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default ProfilePage;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcHelpuparrow(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12 18L12 6M12 6L17 11M12 6L7 11\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcHelpuparrow);\nexport default __webpack_public_path__ + \"static/media/ic_helpuparrow.6243ed6dad64d329af58d6a8a3af45f9.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcHelpdownarrow(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12 6V18M12 18L7 13M12 18L17 13\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcHelpdownarrow);\nexport default __webpack_public_path__ + \"static/media/ic_helpdownarrow.b6bbc47d2834f88c59ca8e9a2dbf72a4.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgNewIcWatermarkbg(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 128,\n    height: 128,\n    viewBox: \"0 0 128 128\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n    width: 128,\n    height: 128,\n    fill: \"#ECEFF2\"\n  })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M86.1085 37.4846L82.9397 31.4352L51.1499 46.2309C45.6166 48.8063 43.2246 55.3841 45.811 60.9122L46.1155 61.5629L87.5848 41.4986L95.8605 57.4879C102.54 70.3939 97.4255 86.2707 84.4682 92.8503L63.8268 103.332L53.5937 114.94L51.086 109.801L38.8792 116L31.7415 101.944L44.1715 95.6319L41.2727 89.6915L55.7703 89.7421L77.3305 78.7941C82.4822 76.1781 84.5159 69.8656 81.86 64.7343L80.6377 62.3728L38.6047 82.7098L31.5319 67.5929C25.2506 54.1675 31.0599 38.1928 44.4979 31.9385L75.6168 17.455L72.2356 11L99.8201 13.5383L86.1085 37.4846Z\",\n    fill: \"#B3BECD\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgNewIcWatermarkbg);\nexport default __webpack_public_path__ + \"static/media/new_ic_watermarkbg.39dc563fbcc88902ee9cc44cac26419a.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, useRef, useEffect } from \"react\";\n\nconst ReadMoreText = ({ text }) => {\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [isOverflowing, setIsOverflowing] = useState(false);\n  const textRef = useRef(null);\n\n  const openModal = () => {\n    setIsModalOpen(true);\n  };\n\n  useEffect(() => {\n    if (textRef.current) {\n      // Check if the text overflows\n      setIsOverflowing(\n        textRef.current.scrollHeight > textRef.current.clientHeight\n      );\n    }\n  }, [text]);\n\n  const closeModal = () => {\n    setIsModalOpen(false);\n  };\n\n  return (\n    <div className=\"font-PlusJakartaSansRegular break-words leading-6 text-mTextColor text-sm\">\n      {/* Display two lines only */}\n      <p ref={textRef} className=\"line-clamp-2 overflow-hidden\">\n        {text}\n      </p>\n\n      {/* \"Read More\" button */}\n\n      {isOverflowing && (\n        <button\n          onClick={openModal}\n          className=\"text-blue-500 font-PlusJakartaSansRegular break-words leading-6  text-sm mt-2\"\n        >\n          Read More\n        </button>\n      )}\n\n      {/* <button\n        onClick={openModal}\n        className=\"text-blue-500 font-PlusJakartaSansRegular break-words leading-6  text-sm mt-2\"\n      >\n        Read More\n      </button> */}\n\n      {/* Modal */}\n      {isModalOpen && (\n        <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-50\">\n          <div className=\"bg-white rounded-lg p-6 max-w-lg w-full mx-4\">\n            <p className=\"font-PlusJakartaSansRegular text-mTextColor mb-6\">\n              {text}\n            </p>\n            <button\n              onClick={closeModal}\n              className=\"bg-blue-500 font-PlusJakartaSansRegular text-white px-4 py-2 rounded\"\n            >\n              Close\n            </button>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default ReadMoreText;\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport Loader from \"../../Utils/Loader\";\nimport SideMenu from \"../../Components/SideMenu\";\nimport {\n  createsupportticket,\n  FAQSuppport,\n  getSupportTicket,\n  mNotificationDetails,\n  mServices,\n} from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport HeaderMenu from \"../../Components/HeaderMenu\";\nimport { ReactComponent as UparrowIcon } from \"../../assets/Images/ic_helpuparrow.svg\";\nimport { ReactComponent as DownarrowIcon } from \"../../assets/Images/ic_helpdownarrow.svg\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport TextView from \"../../Components/TextView\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport { ReactComponent as Icondrop } from \"../../assets/Images/ic_dropdown.svg\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { ReactComponent as Docclose } from \"../../assets/Images/new_ic_docclose.svg\";\nimport { ReactComponent as UploadIcon } from \"../../assets/Images/ic_upload.svg\";\nimport { ReactComponent as Watermark } from \"../../assets/Images/new_ic_watermarkbg.svg\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { fetchMasterData } from \"../../redux/slice/masterSlice\";\nimport { ReactComponent as EIStatusIcon } from \"../../assets/Images/EI_status.svg\";\nimport Menutext from \"../../Components/Menutext\";\nimport ReadMoreText from \"../../Components/ReadMoreText\";\n\nconst HelpSupport = () => {\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const navigate = useNavigate();\n  const [expandedIndex, setExpandedIndex] = useState();\n  const dispatch = useDispatch();\n\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  const [email, setEmail] = useState(UserInfoData.user_email);\n  const [message, setMessage] = useState(\"\");\n  const [FAQSupport, setFAQSupport] = useState([]);\n  const [supportticket, setSupportTicket] = useState([]);\n\n  //Get User Details\n\n  //\n  useEffect(() => {\n    FAQSuppportAPICall();\n    SupportTicketList();\n  }, []);\n\n  // Service Page API call\n  const FAQSuppportAPICall = async () => {\n    setLoading(true);\n    const response = await FAQSuppport({\n      user_name: UserInfoData.user_email,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setFAQSupport(response?.data.message.fsq_support);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const SupportTicketList = async () => {\n    setLoading(true);\n    const response = await getSupportTicket({\n      user_name: UserInfoData.user_email,\n      // user_name: \"padhunpn@gmail.com\",\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setSupportTicket(response?.data.message.support_ticket);\n\n        //console.log(\"API Response -> \" + serviceDetails.process_steps[0].steps);\n      } else {\n        toast.error(response?.data.message.status);\n        console.log(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n\n    //  await AsyncStorage.setItem('userInfo', JSON.stringify(response?.data));\n  };\n\n  const handleToggle = (index) => {\n    setExpandedIndex(expandedIndex === index ? null : index);\n  };\n\n  const [isOpen, setIsOpen] = useState(false);\n  const [selectedOption, setSelectedOption] = useState(\"Select User Type\");\n\n  const toggleDropdown = () => {\n    setIsOpen(!isOpen);\n  };\n\n  const handleOptionClick = (option) => {\n    setSelectedOption(option);\n    setIsOpen(false);\n  };\n\n  const submitticketClick = () => {\n    if (selectedOption === \"Select User Type\") {\n      toast.error(t(\"SelectIssueType\"));\n      return;\n    }\n    onCreateSupport();\n  };\n\n  // Create Support API call\n  const onCreateSupport = async () => {\n    setLoading(true);\n\n    const fileData =\n      UploadFiles && UploadFiles.length > 0\n        ? {\n            file_type: UploadFiles[0].file_type,\n            upload_file: UploadFiles[0].file_attach,\n            file_name: UploadFiles[0].file_name,\n          }\n        : {\n            file_type: \"\",\n            upload_file: \"\",\n            file_name: \"\",\n          };\n\n    const response = await createsupportticket({\n      user_name: UserInfoData.user_email,\n      ticket_type: selectedOption,\n      message: message,\n\n      file_type: fileData.file_type,\n      upload_file: fileData.upload_file,\n      file_name: fileData.file_name,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        setMessage(\"\");\n        setSelectedOption(\"Select User Type\");\n        setUploadFiles([]);\n        SupportTicketList();\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  // File upload Start\n\n  const [UploadFiles, setUploadFiles] = useState([]);\n  const inputRef = useRef();\n\n  const handleFileChange = (e) => {\n    if (UploadFiles.length >= 10) {\n      alert(\"You have reached your upload limit\");\n    } else {\n      if (e.target.files && e.target.files.length > 0) {\n        const reader = new FileReader();\n\n        // reader.addEventListener(\"load\", () => setImgSrc(reader.result));\n        reader.readAsDataURL(e.target.files[0]);\n\n        const file = e.target.files[0];\n        if (file) {\n          const fileName = file.name.split(\".\");\n          const fileExtension = file.name.split(\".\").pop();\n          console.log(file);\n          console.log(fileName[0]);\n          console.log(fileExtension);\n          convertToBase64(file, fileName[0], fileExtension);\n        }\n      }\n    }\n  };\n\n  const convertToBase64 = (file, fileName, fileExtension) => {\n    const reader = new FileReader();\n    reader.readAsDataURL(file);\n    console.log(fileExtension);\n    reader.onloadend = () => {\n      var attachFile = \"\";\n      if (fileExtension === \"pdf\") {\n        attachFile = reader.result.replace(\"data:application/pdf;base64,\", \"\");\n      } else if (fileExtension === \"docx\" || file === \"doc\") {\n        attachFile = reader.result.replace(\n          \"data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,\",\n          \"\"\n        );\n      } else if (fileExtension === \"png\") {\n        attachFile = reader.result.replace(\"data:image/png;base64,\", \"\");\n      } else if (fileExtension === \"jpg\" || fileExtension === \"jpeg\") {\n        attachFile = reader.result.replace(\"data:image/jpeg;base64,\", \"\");\n      } else if (fileExtension === \"xlsx\") {\n        attachFile = reader.result.replace(\n          \"data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,\",\n          \"\"\n        );\n      }\n      console.log(attachFile);\n      let myObject = {\n        file_type: fileExtension,\n        file_attach: attachFile,\n        file_name: fileName,\n      }; // create an object\n\n      setUploadFiles([...UploadFiles, myObject]);\n      console.log(UploadFiles);\n    };\n    reader.onerror = (error) => {\n      console.error(\"Error: \", error);\n    };\n  };\n\n  const onChooseFile = () => {\n    inputRef.current.click();\n  };\n\n  const onDeleteImage = (index) => {\n    setUploadFiles(UploadFiles.filter((person, i) => i !== index));\n  };\n\n  //File upload end\n\n  // Get Master data start\n\n  useEffect(() => {\n    dispatch(fetchMasterData());\n  }, [dispatch]);\n\n  const masterdataList = useSelector((state) => state.master.MasterdataList);\n  let status = useSelector((state) => state.master.status);\n  const error = useSelector((state) => state.master.error);\n\n  console.log(status);\n\n  if (status === \"loading\" || status === \"idle\") {\n    return (\n      <div>\n        <Loader />\n      </div>\n    );\n  }\n\n  if (status === \"failed\") {\n    return <div>Error: {error}</div>;\n  }\n\n  // Get master data end\n\n  const isDisabled = !email || !message;\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div className=\"\">\n          <div className=\"flex h-screen overflow-hidden  bg-no-repeat bg-cover\">\n            {/* Sidebar */}\n            <SideMenu mFrom={-1} mProfile={1} />\n\n            {/* Main content */}\n            <div className=\"flex flex-col flex-grow overflow-hidden  bg-mDashboardBg\">\n              {/* Top Navigation */}\n\n              <HeaderMenu title={t(\"HelpSupport\")} />\n\n              {/* Scrollable content scrollbar-hide */}\n              <main className=\"flex-grow  overflow-auto mt-4 px-3 lg:px-8 py-2 lg:py-6 \">\n                <div className=\"w-full h-auto flex flex-col lg:flex-row\">\n                  <div className=\"w-full lg:w-4/6 h-auto mr-2\">\n                    <div className=\"ml-1 hidden\">\n                      {\" \"}\n                      <DashboardTitle label={t(\"Frequentsupportquestions\")} />\n                    </div>\n                    <div className=\"w-full mt-5 hidden\">\n                      {FAQSupport.map((item, index) => (\n                        <div\n                          key={item.chapter_name}\n                          className=\"mb-4  border-gray-300 bg-white rounded-lg\"\n                        >\n                          <div\n                            className=\"py-4  flex justify-between items-center  cursor-pointer\"\n                            onClick={() => handleToggle(index)}\n                          >\n                            <div className=\"w-full flex px-2\">\n                              <div className=\"w-11/12  flex flex-col\">\n                                <div className=\"mt-1.5\">\n                                  <span className=\"font-PlusJakartaSansRegular text-mTextColor text-sm md:text-base 3xl:text-base\">\n                                    {item.fsq_question}\n                                  </span>\n                                </div>\n                              </div>\n                              <div className=\"w-1/12  justify-center items-center flex\">\n                                <span>\n                                  {expandedIndex === index ? (\n                                    <UparrowIcon className=\"w-6 h-6 3xl:w-6 3xl:h-6\" />\n                                  ) : (\n                                    <DownarrowIcon className=\"w-6 h-6 3xl:w-6 3xl:h-6\" />\n                                  )}\n                                </span>\n                              </div>\n                            </div>\n                          </div>\n\n                          {expandedIndex === index && (\n                            <div className=\"   \">\n                              <div className=\"p-4\">\n                                <p className=\"font-PlusJakartaSansRegular text-mTextColorLogin px-2 py-4 overflow-ellipsis text-sm xl:text-base  3xl:text-xl\">\n                                  {item.fsq_description}\n                                </p>\n                              </div>\n                            </div>\n                          )}\n                        </div>\n                      ))}\n                      <div className=\"h-14 w-full \"></div>\n                    </div>\n                    <div className=\"ml-1\">\n                      {\" \"}\n                      <DashboardTitle label={t(\"CustomerSupportstatus\")} />\n                    </div>\n                    <div className=\"grid grid-cols-1 gap-5 lg:grid-cols-2 w-full mt-3  bg-mDashboardBg\">\n                      {supportticket.map((item) => (\n                        <div\n                          className={`grid grid-cols-1 gap-5 rounded-xl  ${\n                            item.current_plan_purchase\n                              ? \"bg-mButtonColor\"\n                              : \"bg-white\"\n                          } shadow-lg`}\n                          key={item.id}\n                        >\n                          <div className=\"w-full justify-end flex h-8 \">\n                            <div className=\"w-2/5 bg-mButtonColor rounded-bl-xl justify-center items-center flex\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-base text-white\">\n                                {item.ticket_status}\n                              </p>\n                            </div>\n                          </div>\n                          <div className=\"grid grid-cols-1 gap-5 px-5 pb-2\">\n                            <div className=\"flex flex-col justify-center items-center\">\n                              <div className=\"w-full flex flex-row justify-start items-center\">\n                                <div className=\"ml-2\">\n                                  {\" \"}\n                                  <p className=\"font-PlusJakartaSansSemiBold text-base \">\n                                    {\" \"}\n                                    {t(\"ticket_type\")}\n                                  </p>\n                                </div>\n                              </div>\n                              <div className=\"w-full flex  mt-2\">\n                                <div className=\"ml-2\"></div>\n                                <Menutext label={item.ticket_type} />\n                              </div>\n                            </div>\n                            <div className=\"flex flex-col justify-center items-center\">\n                              <div className=\"w-full flex flex-row justify-start items-center\">\n                                <div className=\"ml-2\">\n                                  {\" \"}\n                                  <p className=\"font-PlusJakartaSansSemiBold text-base \">\n                                    {\" \"}\n                                    {t(\"description\")}\n                                  </p>\n                                </div>\n                              </div>\n                              <div className=\"w-full flex  mt-2\">\n                                <div className=\"ml-2\"></div>\n                                <ReadMoreText text={item.description} />\n                                {/* <p className=\"font-PlusJakartaSansRegular break-words leading-6 text-mTextColor text-sm line-clamp-2\">\n                                  {\" \"}\n                                  {item.description}{\" \"}\n                                </p> */}\n                              </div>\n                            </div>\n                          </div>\n                        </div>\n                      ))}\n                    </div>\n                  </div>\n                  <div className=\"w-full lg:w-2/6 h-auto ml-0 lg:ml-3 bg-white rounded-lg overflow-auto scrollbar-hide lg:rounded-2xl p-4 mt-4\">\n                    <div className=\"ml-1\">\n                      {\" \"}\n                      <DashboardTitle label={t(\"CustomerSupport\")} />\n                    </div>\n                    <div className=\"grid grid-cols-1 gap-4\">\n                      <div className=\"hidden\">\n                        <div className=\"mt-4 \">\n                          <TextView label={t(\"From\")} ismandatory={true} />\n                        </div>\n\n                        <InputContainer\n                          type=\"email\"\n                          value={email}\n                          placeholder={t(\"Enteryouremail\")}\n                          label=\"email\"\n                          name=\"email\"\n                          disabled={false}\n                          maxLength={60}\n                          showIcon={false}\n                          onChange={(e) => {\n                            setEmail(e.target.value);\n                            // setforgetPwd({ ...forgetPwd, email: event.target.value });\n                          }}\n                        />\n                      </div>\n                      <div className=\"mt-4  \">\n                        <TextView label={t(\"Issue\")} ismandatory={true} />\n\n                        <div className=\" border-mBorderColor h-14 rounded-lg p-3 w-full border bg-white mt-3 flex-row justify-between flex\">\n                          <div className=\"items-center justify-center flex  w-full\">\n                            <div className=\"relative  w-full\">\n                              <button\n                                className=\"custom-dropdown-toggle\"\n                                onClick={toggleDropdown}\n                              >\n                                <p\n                                  className={`font-PlusJakartaSansRegular font-normal text-mTextColorLogin text-sm  3xl:text-sm `}\n                                >\n                                  {selectedOption}\n                                </p>\n                              </button>\n\n                              {/* Dropdown menu */}\n                              <ul\n                                className={`custom-dropdown-menu   ${\n                                  isOpen ? \"show\" : \"\"\n                                }`}\n                              >\n                                {masterdataList.ticket_type.map((option) => (\n                                  <li\n                                    key={option.name}\n                                    className={`custom-dropdown-option ${\n                                      selectedOption === option.name\n                                        ? \"selected\"\n                                        : \"\"\n                                    }`}\n                                    onClick={() =>\n                                      handleOptionClick(option.name)\n                                    }\n                                  >\n                                    <p\n                                      className={`font-PlusJakartaSansRegular font-normal text-mTextColorLogin text-sm  3xl:text-sm ${\n                                        selectedOption === option.name\n                                          ? \"text-white\"\n                                          : \"text-mTextColorLogin\"\n                                      }`}\n                                    >\n                                      {option.name}\n                                    </p>\n                                  </li>\n                                ))}\n                              </ul>\n                            </div>\n                          </div>\n                          <Icondrop className=\"w-6 h-6 flex-shrink-0\" />\n                        </div>\n                      </div>\n\n                      <div className=\" h-full w-full\">\n                        <TextView label={t(\"Yourmessage\")} ismandatory={true} />\n\n                        <div className=\"mt-2 border border-mBorderColor rounded-md bg-white\">\n                          <textarea\n                            id=\"message\"\n                            rows=\"5\"\n                            value={message}\n                            onChange={(e) => setMessage(e.target.value)}\n                            // className=\"block h-28 resize-none overflow-y-auto w-full border-black  text-sm break-words text-mTextColor placeholder-mTextColorLogin px-2 py-3 text-start justify-start items-start  rounded-md   font-PlusJakartaSansRegular border-none focus:border-none  bg-white border-4 !outline-none\"\n                            className=\"h-32 w-full resize-none overflow-y-auto  border-mBorderColor p-2 rounded-md text-sm  3xl:text-sm break-words text-mTextColor placeholder-mTextColorLogin text-start justify-start items-start font-PlusJakartaSansRegular   bg-white !outline-none\"\n                            placeholder={\"How can we help you ?\"}\n                          ></textarea>\n                        </div>\n                      </div>\n\n                      <div className=\"\">\n                        <div>\n                          <div className=\"flex justify-between items-center\">\n                            <div>\n                              <TextView label={t(\"UploadFiles\")} />\n                            </div>\n                          </div>\n                        </div>\n                        <div className=\"min-h-44 h-auto mt-2 border-mGreyFour cursor-pointer text-start flex text-xs  lg:text-sm  rounded-md w-full  border bg-mLightColorOne items-center justify-center flex-col\">\n                          {UploadFiles.length === 0 ? (\n                            <div\n                              className=\" cursor-pointer flex-grow justify-center items-center flex  h-full w-full \"\n                              onClick={onChooseFile}\n                            >\n                              <div className=\"flex h-full\">\n                                <UploadIcon className=\" \" />\n                                <p className=\"font-PlusJakartaSansSemiBold text-sm  3xl:text-sm text-mButtonColor ml-3\">\n                                  {t(\"UploadFile\")}\n                                </p>\n                              </div>\n\n                              <input\n                                type=\"file\"\n                                style={{\n                                  display: \"none \",\n                                }}\n                                ref={inputRef}\n                                onChange={handleFileChange}\n                                accept=\".png,.jpg,.jpeg,\"\n                              />\n                            </div>\n                          ) : (\n                            <div className=\"horizontal-list justify-center items-center flex\">\n                              {UploadFiles.map((item, index) => (\n                                <div\n                                  key={item.id}\n                                  className=\"justify-center items-center flex p-3 \"\n                                >\n                                  <div className=\"h-full w-full bg-white p-1  border-mGreyFive rounded-lg\">\n                                    <div className=\"w-full flex justify-end items-center \">\n                                      <Docclose\n                                        className=\"w-5 h-5 text-right \"\n                                        onClick={() => {\n                                          onDeleteImage(index);\n                                        }}\n                                      />\n                                    </div>\n\n                                    <div className=\"w-full flex flex-row justify-center items-center mt-2\">\n                                      {item.file_type === \"png\" ? (\n                                        <img\n                                          src={\n                                            \"data:image/png;base64,\" +\n                                            item.file_attach\n                                          }\n                                          alt=\"Base64 Example\"\n                                        />\n                                      ) : item.file_type === \"jpg\" ||\n                                        item.file_type === \"jpeg\" ? (\n                                        <img\n                                          src={\n                                            \"data:image/png;base64,\" +\n                                            item.file_attach\n                                          }\n                                          alt=\"Base64 Example\"\n                                        />\n                                      ) : (\n                                        <Watermark className=\"w-14 h-14  \" />\n                                      )}\n                                    </div>\n                                    <p className=\"mt-1 font-OpenSauceSansRegular text-base text-mGreySeven text-center line-clamp-2\">\n                                      {item.file_name}.{item.file_type}\n                                    </p>\n                                  </div>\n                                </div>\n                              ))}\n                            </div>\n                          )}\n                        </div>\n                      </div>\n\n                      <div className=\"mt-4\">\n                        <PrimaryButton\n                          label={t(\"SubmitTicket\")}\n                          onClick={() => submitticketClick()}\n                          onDisable={isDisabled}\n                        ></PrimaryButton>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </main>\n            </div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default HelpSupport;\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgIcShare(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M11.5003 11.9995H5.41872M5.24634 12.7967L4.24158 15.7981C3.69128 17.4419 3.41613 18.2638 3.61359 18.7699C3.78506 19.2095 4.15335 19.5427 4.6078 19.6696C5.13111 19.8156 5.92151 19.4599 7.50231 18.7486L17.6367 14.1881C19.1797 13.4937 19.9512 13.1466 20.1896 12.6643C20.3968 12.2453 20.3968 11.7537 20.1896 11.3347C19.9512 10.8524 19.1797 10.5052 17.6367 9.81086L7.48483 5.24254C5.90879 4.53333 5.12078 4.17873 4.59799 4.32419C4.14397 4.45052 3.77572 4.78288 3.60365 5.22161C3.40551 5.72679 3.67772 6.54692 4.22215 8.18718L5.24829 11.2788C5.34179 11.5605 5.38855 11.7014 5.407 11.8455C5.42338 11.9733 5.42321 12.1027 5.40651 12.2305C5.38768 12.3745 5.34057 12.5152 5.24634 12.7967Z\",\n    stroke: \"#0D0D0D\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcShare);\nexport default __webpack_public_path__ + \"static/media/ic_share.3c25a3e6a217abc80a78209c6ac03a32.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgQuestion(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M21 20L20.7764 20.4472C20.9314 20.5247 21.1155 20.5164 21.2629 20.4253C21.4103 20.3342 21.5 20.1733 21.5 20H21ZM16.8052 18.0193L16.8745 17.5241L16.8052 18.0193ZM17.6757 18.3378L17.4521 18.785L17.6757 18.3378ZM17.1656 18.1044L17.0062 18.5783L17.1656 18.1044ZM3.21799 16.908L3.66349 16.681L3.21799 16.908ZM4.09202 17.782L4.31901 17.3365L4.09202 17.782ZM19.908 4.21799L19.681 4.66349L19.908 4.21799ZM20.782 5.09202L20.3365 5.31901L20.782 5.09202ZM4.09202 4.21799L4.31901 4.66349L4.09202 4.21799ZM3.21799 5.09202L3.66349 5.31901L3.21799 5.09202ZM11.6137 11.3964C11.4185 11.5917 11.4185 11.9083 11.6137 12.1036C11.809 12.2988 12.1256 12.2988 12.3208 12.1036L11.6137 11.3964ZM9.54605 8.62537C9.47722 8.8928 9.63822 9.16539 9.90564 9.23422C10.1731 9.30305 10.4457 9.14206 10.5145 8.87463L9.54605 8.62537ZM11.9668 14.25C11.6907 14.25 11.4668 14.4739 11.4668 14.75C11.4668 15.0261 11.6907 15.25 11.9668 15.25V14.25ZM11.9768 15.25C12.2529 15.25 12.4768 15.0261 12.4768 14.75C12.4768 14.4739 12.2529 14.25 11.9768 14.25V15.25ZM6.2 4.5H17.8V3.5H6.2V4.5ZM3.5 14.8V7.2H2.5V14.8H3.5ZM16.2446 17.5H6.2V18.5H16.2446V17.5ZM21.2236 19.5528L17.8993 17.8906L17.4521 18.785L20.7764 20.4472L21.2236 19.5528ZM16.2446 18.5C16.5397 18.5 16.6402 18.5011 16.7358 18.5145L16.8745 17.5241C16.6941 17.4989 16.513 17.5 16.2446 17.5V18.5ZM17.8993 17.8906C17.6592 17.7706 17.4977 17.6886 17.3251 17.6305L17.0062 18.5783C17.0977 18.6091 17.1881 18.6531 17.4521 18.785L17.8993 17.8906ZM16.7358 18.5145C16.8277 18.5274 16.9182 18.5487 17.0062 18.5783L17.3251 17.6305C17.1785 17.5812 17.0276 17.5456 16.8745 17.5241L16.7358 18.5145ZM2.5 14.8C2.5 15.3518 2.49961 15.7957 2.52891 16.1543C2.55868 16.5187 2.62159 16.8388 2.77248 17.135L3.66349 16.681C3.5964 16.5493 3.55031 16.3755 3.52559 16.0729C3.50039 15.7645 3.5 15.3683 3.5 14.8H2.5ZM6.2 17.5C5.6317 17.5 5.23554 17.4996 4.92712 17.4744C4.62454 17.4497 4.45069 17.4036 4.31901 17.3365L3.86502 18.2275C4.16117 18.3784 4.48126 18.4413 4.84569 18.4711C5.20428 18.5004 5.6482 18.5 6.2 18.5V17.5ZM2.77248 17.135C3.01217 17.6054 3.39462 17.9878 3.86502 18.2275L4.31901 17.3365C4.03677 17.1927 3.8073 16.9632 3.66349 16.681L2.77248 17.135ZM17.8 4.5C18.3683 4.5 18.7645 4.50039 19.0729 4.52559C19.3755 4.55031 19.5493 4.5964 19.681 4.66349L20.135 3.77248C19.8388 3.62159 19.5187 3.55868 19.1543 3.52891C18.7957 3.49961 18.3518 3.5 17.8 3.5V4.5ZM21.5 7.2C21.5 6.6482 21.5004 6.20428 21.4711 5.84569C21.4413 5.48126 21.3784 5.16117 21.2275 4.86502L20.3365 5.31901C20.4036 5.45069 20.4497 5.62454 20.4744 5.92712C20.4996 6.23554 20.5 6.6317 20.5 7.2H21.5ZM19.681 4.66349C19.9632 4.8073 20.1927 5.03677 20.3365 5.31901L21.2275 4.86502C20.9878 4.39462 20.6054 4.01217 20.135 3.77248L19.681 4.66349ZM6.2 3.5C5.6482 3.5 5.20428 3.49961 4.84569 3.52891C4.48126 3.55868 4.16117 3.62159 3.86502 3.77248L4.31901 4.66349C4.45069 4.5964 4.62454 4.55031 4.92712 4.52559C5.23554 4.50039 5.6317 4.5 6.2 4.5V3.5ZM3.5 7.2C3.5 6.6317 3.50039 6.23554 3.52559 5.92712C3.55031 5.62454 3.5964 5.45069 3.66349 5.31901L2.77248 4.86502C2.62159 5.16117 2.55868 5.48126 2.52891 5.84569C2.49961 6.20428 2.5 6.6482 2.5 7.2H3.5ZM3.86502 3.77248C3.39462 4.01217 3.01217 4.39462 2.77248 4.86502L3.66349 5.31901C3.8073 5.03677 4.03677 4.8073 4.31901 4.66349L3.86502 3.77248ZM13.4673 9.25C13.4673 9.61273 13.3195 9.86628 12.995 10.1794C12.8244 10.3441 12.6246 10.5066 12.3819 10.7084C12.1456 10.905 11.8808 11.1294 11.6137 11.3964L12.3208 12.1036C12.5538 11.8706 12.789 11.6705 13.0214 11.4772C13.2475 11.2892 13.4851 11.0963 13.6895 10.899C14.115 10.4883 14.4673 9.99184 14.4673 9.25H13.4673ZM11.9673 7.75C12.7957 7.75 13.4673 8.42157 13.4673 9.25H14.4673C14.4673 7.86929 13.348 6.75 11.9673 6.75V7.75ZM10.5145 8.87463C10.681 8.22756 11.269 7.75 11.9673 7.75V6.75C10.8017 6.75 9.82355 7.54721 9.54605 8.62537L10.5145 8.87463ZM11.9668 15.25H11.9768V14.25H11.9668V15.25ZM20.5 7.2V20H21.5V7.2H20.5Z\",\n    fill: \"#0D0D0D\"\n  })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgQuestion);\nexport default __webpack_public_path__ + \"static/media/question.e819d9aaada9bf4e15654a99936e3f8e.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\n\nconst MiniLoader = () => {\n  return (\n    <div className=\"flex items-center justify-center h-full\">\n      <div className=\"flex space-x-1 justify-center items-center\">\n        <div className=\"w-2 h-2 bg-mButtonColor rounded-full animate-bounce\"></div>\n        <div className=\"w-2 h-2 bg-mButtonColor rounded-full animate-bounce200\"></div>\n        <div className=\"w-2 h-2 bg-mButtonColor rounded-full animate-bounce400\"></div>\n        <p className=\" pl-2 font-PlusJakartaSansRegular text-mTextColor text-sm\">\n          Processing...\n        </p>\n        {/* <div className=\"w-2 h-2 bg-mButtonColor rounded-full animate-bounce400\"></div>\n        <div className=\"w-2 h-2 bg-mButtonColor rounded-full animate-bounce400\"></div> */}\n      </div>\n    </div>\n  );\n};\n\nexport default MiniLoader;\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport Loader from \"../../Utils/Loader\";\nimport SideMenu from \"../../Components/SideMenu\";\nimport {\n  getchatconversation,\n  getchatconversationlist,\n  getChatlist,\n  mGetDashboard,\n  mServices,\n} from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport HeaderMenu from \"../../Components/HeaderMenu\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport Headingtext from \"../../Components/Headingtext\";\nimport { toPng } from \"html-to-image\";\nimport { TwitterShareButton, LinkedinShareButton } from \"react-share\";\nimport LogoText from \"../../Components/LogoText\";\nimport TextView from \"../../Components/TextView\";\nimport { ReactComponent as ShareIcon } from \"../../assets/Images/ic_share.svg\";\nimport { ReactComponent as Icondrop } from \"../../assets/Images/ic_dropdown.svg\";\nimport { ReactComponent as QuestionIcon } from \"../../assets/Images/question.svg\";\nimport {\n  formatTextWithLineBreaks,\n  Images,\n  isEmptyObject,\n} from \"../../Utils/Constants\";\nimport LogoTextsmall from \"../../Components/LogoTextsmall\";\nimport { UserAlertDialog } from \"../../Components/UserAlertDialog\";\nimport { ReactComponent as Filter } from \"../../assets/Images/ic_filter.svg\";\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/ic_close.svg\";\nimport SuggestedStartupInvestors from \"../StartupCRM/SuggestedStartupInvestors\";\nimport MiniLoader from \"../../Components/MiniLoader\";\n\nconst Zenchat = () => {\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const navigate = useNavigate();\n\n  const [mClickPostion, setmClickPostion] = useState(0);\n  const [message, setMessage] = useState(\"\");\n  const [Chat, setChat] = useState([]);\n  const [DeckList, setDeckList] = useState([]);\n  const [SelectedDeck, setSelectedDeck] = useState(\"general-001\");\n  const [ChatQuestion, setChatQuestion] = useState({});\n  const [ChatType, setChatType] = useState(\"Learn\");\n  const [ChatTopics, setChatTopics] = useState(\"\");\n  const [ChatTypeid, setChatTypeid] = useState(\"\");\n  const bottomRef = useRef(null); // Reference to the last item\n  const [ChatConversation, setChatConversation] = useState([]);\n  //const [SelectedChatList, setSelectedChatList] = useState([]);\n  const [Index, setIndex] = useState(0);\n  const [showDialog, setshowDialog] = useState(false);\n  const [data, setData] = useState(null);\n\n  const apiCalledRef = useRef(false); // Ref to track if APIs were already called\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  // Service Page API call\n  const ChatListAPICall = async (chatType, mChatTopics) => {\n    setLoading(true);\n    const response = await getChatlist({\n      user_name: UserInfoData.user_email,\n      type_of_chat: mChatTopics,\n      deck_id: SelectedDeck,\n      prompt_type: chatType,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        // setmClickPostion(0);\n        setChat(response?.data.message.chat_list);\n        setDeckList(response?.data.message.deck_list);\n        setSelectedDeck(response?.data.message.deck_list[0].id);\n        setSelectedOption(response?.data.message.deck_list[0].deck_name);\n        setSelectedOptionid(response?.data.message.deck_list[0].id);\n        setChatQuestion(response?.data.message.chat_list[0]);\n        setChatTopics(response?.data.message.chat_list[0].title);\n        setChatTypeid(response?.data.message.chat_list[0].id);\n        const result = JSON.stringify(response?.data.message);\n        setData(result);\n        // apiCalledRef.current = false;\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  useEffect(() => {\n    if (!apiCalledRef.current) {\n      apiCalledRef.current = true; // Mark the ref to avoid multiple calls\n      ChatListAPICall(ChatType, ChatTopics);\n    }\n  }, [ChatTypeid]);\n\n  // useEffect to run after data is fetched\n  useEffect(() => {\n    if (data) {\n      // alert(SelectedDeck + \"  --- \" + ChatTopics);\n      ChatConversationListAPICall(ChatTopics, ChatType, SelectedDeck);\n    }\n  }, [data]);\n\n  // useEffect(() => {\n  //   alert(SelectedDeck + \"  --- \" + ChatTopics);\n  //   if (SelectedDeck && ChatTopics) {\n  //     ChatConversationListAPICall(ChatTopics, ChatType);\n  //   }\n  // }, [SelectedDeck, ChatTopics]);\n\n  useEffect(() => {\n    bottomRef.current?.scrollIntoView({ behavior: \"smooth\" });\n  }, [ChatQuestion, ChatConversation, Chat]);\n\n  const ChatConversationListAPICall = async (\n    ChatTopics,\n    ChatType,\n    mSelectedDeck\n  ) => {\n    setLoading(true);\n    const response = await getchatconversationlist({\n      user_name: UserInfoData.user_email,\n      deck_id: mSelectedDeck,\n      type_of_chat: ChatTopics,\n      prompt_type: ChatType,\n\n      // user_prompt: \"teach some ideas for increse my valuvation\",\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setChatConversation(response?.data.message.chat_conversation);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const mChatType = [\n    { id: 1, name: \"Learn\" },\n    { id: 2, name: \"Task\" },\n    { id: 3, name: \"Discuss\" },\n  ];\n\n  // Handle proflie menu Click\n  const chatTopicsClick = (index, getchat) => {\n    setmClickPostion(index);\n    setChatQuestion(getchat);\n\n    setChatTopics(getchat.title);\n\n    setIndex(index);\n\n    setshowDialog(false);\n\n    ChatConversationListAPICall(getchat.title, ChatType, SelectedDeck);\n  };\n\n  const chatTypeClick = (index, chatType) => {\n    setChatTypeid(chatType.id);\n    setChatType(chatType.name);\n    setTypeIsOpen(false);\n\n    //ChatListAPICall(chatType.name, ChatTopics);\n    ChatListAPICall(chatType.name, \"\");\n    // ChatConversationListAPICall(ChatTopics, chatType.name);\n\n    //dhsgljkhdgsk\n    if (index === 0) {\n    } else if (index === 1) {\n    }\n  };\n\n  // Dropdown start\n\n  const [isOpen, setIsOpen] = useState(false);\n  const [selectedOption, setSelectedOption] = useState(\"Select your Deck\");\n  const [selectedOptionid, setSelectedOptionid] = useState(\"\");\n  const toggleDropdown = () => {\n    setIsOpen(!isOpen);\n  };\n\n  // Chat type Dropdown\n\n  const [isTypeOpen, setTypeIsOpen] = useState(false);\n\n  const toggleTypeDropdown = () => {\n    setTypeIsOpen(!isTypeOpen);\n  };\n\n  const handleOptionClick = (option) => {\n    setSelectedOption(option.deck_name);\n    setSelectedOptionid(option.id);\n\n    setSelectedDeck(option.id);\n\n    ChatConversationListAPICall(ChatTopics, ChatType, option.id);\n\n    setIsOpen(false);\n  };\n\n  const QuestionClick = (Question) => {\n    ChatConversationAPICall(Question);\n  };\n\n  const MessageSend = () => {\n    if (message === \"\") {\n      toast.error(t(\"entermsg\"));\n      return;\n    }\n\n    ChatConversationAPICall(message);\n  };\n\n  const ChatConversationAPICall = async (Question) => {\n    setLoading(true);\n    const response = await getchatconversation({\n      user_name: UserInfoData.user_email,\n      deck_id: SelectedDeck,\n      type_of_chat: ChatTopics,\n      prompt_type: ChatType,\n      user_prompt: Question,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setChatConversation(response?.data.message.chat_conversation);\n\n        // alert(JSON.stringify(response?.data.message.chat_conversation));\n\n        // if (Index === 0) {\n        //   setSelectedChatList(response?.data.message.message.idea_valuation);\n        // } else if (Index === 1) {\n        //   setSelectedChatList(response?.data.message.message.financial);\n        // } else if (Index === 2) {\n        //   setSelectedChatList(response?.data.message.message.market_research);\n        // } else if (Index === 3) {\n        //   setSelectedChatList(\n        //     response?.data.message.message.product_market_fit\n        //   );\n        // }\n        setMessage(\"\");\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  //Dropdown end\n\n  const mFilterView = () => {\n    // setBoardView(true);\n    setshowDialog(true);\n  };\n\n  const clickClose = () => {\n    setshowDialog(false);\n  };\n\n  return (\n    <>\n      <div>\n        <div className=\"flex h-screen  overflow-hidden  bg-no-repeat bg-cover\">\n          {/* Sidebar */}\n          <SideMenu mFrom={2} mProfile={-1} />\n\n          {/* Main content */}\n          <div className=\"flex flex-col flex-grow overflow-hidden  bg-mDashboardBg\">\n            {/* Top Navigation */}\n\n            <HeaderMenu title={t(\"ZenpivotChat\")} />\n            {/* blur-sm */}\n            {/* Scrollable content scrollbar-hide */}\n\n            {/* ${\n                  !UserInfoData.view_status ? \"blur-sm pointer-events-none\" : \"\"\n                } */}\n\n            <main className={`flex-grow overflow-hidden p-2 lg:p-6  `}>\n              <div className=\"justify-center items-center flex h-full\">\n                {/* <Headingtext label={\"Coming Soon\"} /> */}\n                <div className=\"flex w-full flex-row h-full \">\n                  <div className=\"hidden lg:block lg:w-1/5 h-full bg-white rounded-lg lg:py-4 lg:px-3 overflow-y-scroll scrollbar-hide mb-2\">\n                    <div className=\" grid grid-cols-1 gap-7\">\n                      <div className=\"flex flex-row justify-between \">\n                        <div className=\"justify-center items-center flex\">\n                          <DashboardTitle label={t(\"explore\")} />\n                        </div>\n                      </div>\n                      <div>\n                        <ul className=\"\">\n                          {Chat.map((mchat, index) => (\n                            <li\n                              key={index}\n                              onClick={() => chatTopicsClick(index, mchat)}\n                            >\n                              <div className=\" py-2 \">\n                                <div\n                                  className={`flex rounded-md ${\"cursor-pointer\"} hover:bg-light-white text-gray-300 text-sm items-center flex-row py-2\n                      ${\n                        mClickPostion === index ? \"bg-mMenuSelect\" : \"bg-white\"\n                      }  ${mClickPostion === index ? \"px-2\" : \"px-0\"} `}\n                                >\n                                  <p\n                                    className={` font-PlusJakartaSansRegular font-normal text-mTextColor text-sm xl:text-base 3xl:text-base ml-4`}\n                                  >\n                                    {\" \"}\n                                    {mchat.title}{\" \"}\n                                  </p>\n                                </div>\n                              </div>\n                            </li>\n                          ))}\n                        </ul>\n                      </div>\n                    </div>\n                  </div>\n                  <div className=\" w-full lg:w-4/5 h-full bg-white rounded-lg py-3 px-1 lg:py-4 lg:px-3 overflow-y-auto scrollbar-hide  lg:ml-5\">\n                    <div className=\"flex justify-between \">\n                      <div className=\"hidden lg:block\">\n                        <LogoText label={t(\"appname\")} />\n                      </div>\n                      <div className=\" border-mBorderColor h-11 min-w-52 md:min-w-72 lg:min-w-96 rounded-lg p-3  border bg-white flex-row justify-between flex\">\n                        <div className=\"items-center justify-center flex  w-full\">\n                          <div className=\"relative   w-full\">\n                            <button\n                              className=\"custom-dropdown-toggle\"\n                              onClick={toggleDropdown}\n                            >\n                              <p\n                                className={`font-PlusJakartaSansRegular line-clamp-1  font-normal text-mTextColorLogin text-xs md:text-sm  3xl:text-sm `}\n                              >\n                                {selectedOption}\n                              </p>\n                            </button>\n\n                            {/* Dropdown menu */}\n                            <ul\n                              className={`custom-dropdown-menu1  ${\n                                isOpen ? \"show\" : \"\"\n                              }`}\n                            >\n                              {DeckList.map((option) => (\n                                <li\n                                  key={option.id}\n                                  className={`custom-dropdown-option  ${\n                                    selectedOptionid === option.id\n                                      ? \"selected\"\n                                      : \"\"\n                                  }`}\n                                  onClick={() => handleOptionClick(option)}\n                                >\n                                  <p\n                                    className={`font-PlusJakartaSansRegular font-normal text-mTextColorLogin text-sm  3xl:text-sm ${\n                                      selectedOptionid === option.id\n                                        ? \"text-white\"\n                                        : \"text-mTextColorLogin\"\n                                    }`}\n                                  >\n                                    {option.deck_name}\n                                  </p>\n                                </li>\n                              ))}\n                            </ul>\n                          </div>\n                        </div>\n                        <Icondrop className=\"w-6 h-6 flex-shrink-0\" />\n                      </div>\n                      <div\n                        className=\"ml-2 mr-2 lg:hidden justify-center flex items-center h-auto\"\n                        onClick={() => mFilterView()}\n                      >\n                        <Filter className=\"w-5 h-5 flex-shrink-0 \" />\n                      </div>\n                    </div>\n                    <div className=\"h-[93%] mt-3 \">\n                      <div className=\"h-[90%] w-full overflow-y-auto custom-scrollbar scrollbar-show focus:outline-none focus:overflow-y-auto\">\n                        <div className=\" mb-2  \">\n                          {ChatConversation.map((item) => (\n                            <div key={item.chate_time}>\n                              <div className=\"py-1 relative flex flex-grow flex-col px-2  justify-end\">\n                                {item.place === \"Right\" ? (\n                                  <div className=\"ml-auto rounded-lg w-full lg:w-5/6 my-2 p-3 bg-mchatbdligth flex flex-row relative speech-bubble-right\">\n                                    {/* <div className=\"hidden lg:block w-1/12 justify-center items-start \">\n                                        {UserInfoData.image_url.length === 0 ? (\n                                          <img\n                                            src={Images.profileimage}\n                                            alt=\"Profile\"\n                                            className=\"w-11 h-11 rounded-full \"\n                                          />\n                                        ) : (\n                                          <img\n                                            src={UserInfoData.image_url}\n                                            alt=\"Profile\"\n                                            className=\"w-11 h-11 rounded-full \"\n                                          />\n                                        )}\n                                      </div>\n\n                                      <div className=\"w-11/12 ml-2\">\n                                        <div className=\"h-11 justify-start flex items-center\">\n                                          <p className=\"text-lg text-mTextColorLogin font-PlusJakartaSansSemiBold \">\n                                            {UserInfoData.user_name}\n                                          </p>\n                                        </div>\n\n                                        <p className=\"text-base text-mTextColor font-PlusJakartaSansRegular \">\n                                          {item.chat_box}\n                                        </p>\n                                      </div> */}\n                                    <p className=\"text-base text-mTextColor font-PlusJakartaSansRegular \">\n                                      {formatTextWithLineBreaks(item.chat_box)}\n                                    </p>\n                                  </div>\n                                ) : (\n                                  <div className=\"mr-auto rounded-lg w-full lg:w-5/6 my-2 p-3 bg-mMenuSelect flex flex-row relative speech-bubble-left\">\n                                    {/* <div className=\"hidden lg:block w-1/12 justify-center items-start \">\n                                        <div className=\"w-11 h-11 rounded-full bg-white justify-center items-center flex\">\n                                          <LogoTextsmall />\n                                        </div>\n                                      </div>\n\n                                      <div className=\"w-11/12 ml-2\">\n                                        <div className=\"h-11 justify-start flex items-center\">\n                                          <p className=\"text-lg text-mTextColorLogin font-PlusJakartaSansSemiBold \">\n                                            Zen\n                                          </p>\n                                        </div>\n\n                                        <p className=\"text-base text-mTextColor font-PlusJakartaSansRegular \">\n                                          {item.chat_box}\n                                        </p>\n                                      </div> */}\n\n                                    <p className=\"text-base text-mTextColor font-PlusJakartaSansRegular \">\n                                      {formatTextWithLineBreaks(item.chat_box)}\n                                    </p>\n                                  </div>\n                                )}\n                              </div>\n                            </div>\n                          ))}\n\n                          {isEmptyObject(ChatQuestion) ? (\n                            <div></div>\n                          ) : (\n                            <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-3 w-full p-3\">\n                              {ChatQuestion.questions.map((item) => (\n                                <div\n                                  className=\"bg-white p-3 rounded-lg flex border border-mBorderColor min-h-[40px] justify-start items-center\"\n                                  key={item.question}\n                                  onClick={() => QuestionClick(item.question)}\n                                >\n                                  <QuestionIcon className=\"hidden lg:block w-6 h-6 flex-shrink-0\" />\n                                  <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColor ml-2\">\n                                    {item.question}\n                                  </p>\n                                </div>\n                              ))}\n                            </div>\n                          )}\n\n                          <div ref={bottomRef} />\n                        </div>\n                      </div>\n\n                      <div className=\"h-8 justify-start flex pl-5 \">\n                        {loading ? <MiniLoader /> : <div />}\n                      </div>\n\n                      <div className=\"h-[10%] w-full mt-2 \">\n                        <div className=\"w-full flex h-12 bg-mMenuSelect rounded-lg \">\n                          <div className=\"w-[90%] h-full  justify-start items-center flex px-2\">\n                            <div className=\"  \">\n                              <div className=\"relative inline-block text-left min-w-28\">\n                                {/* Dropdown Toggle Button */}\n                                <button\n                                  className=\"inline-flex justify-center w-full rounded-md border text-mTextColor text-base  3xl:text-base bg-white placeholder-mTextColorLogin font-PlusJakartaSansRegular border-mBorderColor shadow-sm px-4 py-2 \"\n                                  onClick={toggleTypeDropdown}\n                                >\n                                  {ChatType}\n                                </button>\n\n                                {/* Dropdown Menu */}\n                                {isTypeOpen && (\n                                  <div className=\"origin-top-right absolute bottom-full mb-2  w-32 rounded-md shadow-lg border bg-mMenuSelect \">\n                                    <div className=\"py-1\">\n                                      <ul className=\" \">\n                                        {mChatType.map((mchat, index) => (\n                                          <li\n                                            key={index}\n                                            onClick={() =>\n                                              chatTypeClick(index, mchat)\n                                            }\n                                          >\n                                            <div\n                                              className={`flex px-3  ${\"cursor-pointer\"} hover:bg-light-white text-gray-300 text-sm items-center flex-row py-2\n                      ${\n                        mchat.id === ChatTypeid ? \"bg-mButtonColor\" : \"bg-white\"\n                      }  `}\n                                            >\n                                              {/* ChatTypeid */}\n                                              <p\n                                                className={` font-PlusJakartaSansRegular font-normal  ${\n                                                  mchat.id === ChatTypeid\n                                                    ? \"text-white\"\n                                                    : \"text-mTextColor\"\n                                                }  text-base `}\n                                              >\n                                                {mchat.name}{\" \"}\n                                              </p>\n                                            </div>\n                                          </li>\n                                        ))}\n                                      </ul>\n                                    </div>\n                                  </div>\n                                )}\n                              </div>\n                            </div>\n                            <div className=\"w-full \">\n                              <div className=\"flex flex-row justify-between  bg-mMenuSelect rounded-lg p-3 w-full \">\n                                <input\n                                  type=\"email\"\n                                  placeholder=\"Ask anything\"\n                                  value={message}\n                                  onChange={(e) => {\n                                    setMessage(e.target.value);\n                                  }}\n                                  maxLength={1000}\n                                  className={`text-base  3xl:text-base  text-mTextColor bg-mMenuSelect placeholder-mTextColorLogin font-PlusJakartaSansRegular font-normal w-full border-none focus:border-none  border-4 !outline-none`}\n                                ></input>\n                              </div>\n                            </div>\n                          </div>\n                          <div\n                            className=\"w-[10%] h-full justify-center items-center flex\"\n                            onClick={() => MessageSend()}\n                          >\n                            <ShareIcon className=\"w-6 h-6 flex-shrink-0\" />\n                          </div>\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </div>\n\n              <div>\n                {showDialog && (\n                  <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50  px-2 z-50\">\n                    {/* max-w-sm */}\n                    <div className=\"bg-mDashboardBg rounded-md overflow-auto scrollbar-hide shadow-xl w-full py-4 pl-8 pr-4 h-90\">\n                      <div className=\"justify-between flex flex-col \">\n                        <div className=\"w-full justify-end items-end flex\">\n                          <button onClick={clickClose}>\n                            <CloseIcon className=\"\" />\n                          </button>\n                        </div>\n                        <div className=\" grid grid-cols-1 gap-7\">\n                          <div className=\"flex flex-row justify-between \">\n                            <div className=\"justify-center items-center flex\">\n                              <DashboardTitle label={t(\"explore\")} />\n                            </div>\n                          </div>\n                          <div>\n                            <ul className=\"\">\n                              {Chat.map((mchat, index) => (\n                                <li\n                                  key={index}\n                                  onClick={() => chatTopicsClick(index, mchat)}\n                                >\n                                  <div className=\" py-2 \">\n                                    <div\n                                      className={`flex rounded-md ${\"cursor-pointer\"} hover:bg-light-white text-gray-300 text-sm items-center flex-row py-2\n                      ${\n                        mClickPostion === index\n                          ? \"bg-mMenuSelect\"\n                          : \"bg-mMenuSelect\"\n                      }  ${mClickPostion === index ? \"px-2\" : \"px-0\"} `}\n                                    >\n                                      <p\n                                        className={` font-PlusJakartaSansRegular font-normal text-mTextColor text-sm xl:text-base 3xl:text-base ml-4`}\n                                      >\n                                        {\" \"}\n                                        {mchat.title}{\" \"}\n                                      </p>\n                                    </div>\n                                  </div>\n                                </li>\n                              ))}\n                            </ul>\n                          </div>\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                )}\n              </div>\n            </main>\n          </div>\n          {/* <UserAlertDialog\n              isOpen={isAlertOpen}\n              onClose={closeAlert}\n              Confirm={Confirm}\n            /> */}\n        </div>\n      </div>\n    </>\n  );\n};\n\nexport default Zenchat;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport Loader from \"../../Utils/Loader\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as BackIcon } from \"../../assets/Images/ic_back.svg\";\nimport { ReactComponent as SparklesIcon } from \"../../assets/Images/ic_sparkles.svg\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { Images, isValidEmail } from \"../../Utils/Constants\";\nimport { toast } from \"react-toastify\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport LogoText from \"../../Components/LogoText\";\n\nconst Question = () => {\n  const [loading, setLoading] = useState(false);\n  const { t } = useTranslation(\"\");\n  const [email, setEmail] = useState(\"\");\n  const navigate = useNavigate();\n\n  // Get Deck id\n  const location = useLocation();\n  const mGetdeckId = location.state?.mdeckId || \"\";\n  const mGetdeckName = location.state?.mdeckName || \"\";\n\n  const mBackClick = () => {\n    navigate(\"/\");\n  };\n\n  const ProceedClick = () => {};\n\n  const skipclick = () => {\n    navigate(\"/login\");\n  };\n\n  const questionClick = () => {\n    navigate(\"/deckscore\", {\n      state: {\n        mdeckId: mGetdeckId,\n        mdeckName: mGetdeckName,\n      },\n    });\n  };\n  const isDisabled = false;\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <section className=\"min-h-screen flex flex-row\">\n          <div className=\"hidden lg:block  w-3/5 bg-mwhite flex-col items-start justify-start p-5\">\n            <div className=\"mt-3 ml-3\">\n              {/* <img\n                src={Images.zenpivot}\n                alt=\"google Icon\"\n                className=\" h-9 w-28\"\n              /> */}\n              <LogoText label={t(\"appname\")} />\n            </div>\n\n            <div className=\"w-full h-auto justify-center items-center flex\">\n              <img src={Images.questionbg} alt=\"login\" className=\"w-2/3 \" />\n            </div>\n          </div>\n          <div className=\"lg:w-2/5 w-full pl-2 py-5 lg:pl-20 lg:py-10 items-center justify-center lg:items-start lg:justify-start bg-mBackground  flex-col flex \">\n            <div className=\"w-11/12 h-full \">\n              <div className=\"grid gap-5 grid-cols-4   w-full h-2 mt-5 items-center justify-center \">\n                <div className=\" h-1 bg-mButtonColor rounded-full\"></div>\n                <div className=\" h-1 bg-mButtonColor rounded-full\"></div>\n                <div className=\" h-1 bg-mTextColorLogin rounded-full\"></div>\n                <div className=\" h-1 bg-mTextColorLogin rounded-full\"></div>\n              </div>\n\n              <div className=\"mt-4  w-full justify-between flex\">\n                <div>\n                  <p className=\"text-mTextColor font-PlusJakartaSansMedium text-sm 3xl:text-base\">\n                    Step 2 / 4\n                  </p>\n                </div>\n\n                <div onClick={() => skipclick()}>\n                  <p className=\"text-mTextColor font-PlusJakartaSansMedium text-sm cursor-pointer 3xl:text-base\">\n                    {t(\"skip\")}\n                  </p>\n                </div>\n              </div>\n\n              <div className=\"mt-10 w-full p-2  items-start justify-start flex-col flex\">\n                <div className=\"flex flex-row items-center justify-center\">\n                  <BackIcon\n                    className=\"w-6 h-6  flex-shrink-0 cursor-pointer\"\n                    onClick={() => mBackClick()}\n                  />{\" \"}\n                  <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-base\">\n                    {t(\"GoBack\")}\n                  </p>\n                </div>\n\n                <div>\n                  <p className=\"font-PlusJakartaSansSemiBold text-4xl mt-10\">\n                    {t(\"JustsomeQuestionsforyou\")}\n                  </p>\n                </div>\n              </div>\n\n              <div className=\"mt-4\">\n                <PrimaryButton\n                  label={t(\"Signup\")}\n                  onClick={questionClick}\n                  onDisable={isDisabled}\n                ></PrimaryButton>\n              </div>\n            </div>\n          </div>\n        </section>\n      )}\n    </>\n  );\n};\n\nexport default Question;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport Loader from \"../../Utils/Loader\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as BackIcon } from \"../../assets/Images/ic_back.svg\";\nimport { ReactComponent as SparklesIcon } from \"../../assets/Images/ic_sparkles.svg\";\nimport InputContainer from \"../../Components/InputContainer\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { Images, isValidEmail } from \"../../Utils/Constants\";\nimport { toast } from \"react-toastify\";\nimport { useNavigate } from \"react-router-dom\";\nimport Menutext from \"../../Components/Menutext\";\nimport Menutitletext from \"../../Components/Menutitletext\";\nimport Titletext from \"../../Components/Titletext\";\nimport LogoText from \"../../Components/LogoText\";\n\nconst SuggestingStartupInvestors = () => {\n  const [loading, setLoading] = useState(false);\n  const { t } = useTranslation(\"\");\n  const [email, setEmail] = useState(\"\");\n  const navigate = useNavigate();\n\n  const mBackClick = () => {\n    navigate(\"/deckscore\");\n  };\n\n  const ProceedClick = () => {};\n\n  const skipclick = () => {\n    navigate(\"/login\");\n  };\n\n  const investordb = [\n    { id: 11, name: \"Pre Seed\" },\n    { id: 12, name: \"Seed\" },\n    { id: 13, name: \"Series A\" },\n    { id: 14, name: \"Series B\" },\n    { id: 15, name: \"Pre Seed\" },\n    { id: 16, name: \"Seed\" },\n    { id: 17, name: \"Series A\" },\n    { id: 18, name: \"Series B\" },\n  ];\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <section className=\"min-h-screen flex flex-row\">\n          <div className=\" hidden lg:block w-3/5 bg-mwhite  flex-col items-start justify-start p-5\">\n            <div className=\"mt-3 ml-3\">\n              {/* <img\n                src={Images.zenpivot}\n                alt=\"google Icon\"\n                className=\" h-9 w-28\"\n              /> */}\n              <LogoText label={t(\"appname\")} />\n            </div>\n\n            <div className=\"w-full h-full justify-center items-center flex\">\n              <img src={Images.investorbg} alt=\"login\" className=\"w-3/4 \" />\n            </div>\n          </div>\n          <div className=\"lg:w-2/5 w-full pl-2 py-5 lg:pl-20 lg:py-10 items-center justify-center lg:items-start lg:justify-start bg-mBackground flex-col flex \">\n            <div className=\"w-11/12 h-full \">\n              <div className=\"grid gap-5 grid-cols-4   w-full h-2 mt-5 items-center justify-center \">\n                <div className=\" h-1 bg-mButtonColor rounded-full\"></div>\n                <div className=\" h-1 bg-mButtonColor rounded-full\"></div>\n                <div className=\" h-1 bg-mButtonColor rounded-full\"></div>\n                <div className=\" h-1 bg-mButtonColor rounded-full\"></div>\n              </div>\n\n              <div className=\"mt-4  w-full justify-between flex\">\n                <div>\n                  <p className=\"text-mTextColor font-PlusJakartaSansMedium text-sm 3xl:text-base\">\n                    Step 4 / 4\n                  </p>\n                </div>\n\n                <div>\n                  <p className=\"text-mTextColor font-PlusJakartaSansMedium text-sm cursor-pointer 3xl:text-base\"></p>\n                </div>\n              </div>\n\n              <div className=\"mt-10 w-full p-2  items-start justify-start flex-col flex\">\n                <div className=\"flex flex-row items-center justify-center\">\n                  <BackIcon\n                    className=\"w-6 h-6 flex-shrink-0 cursor-pointer\"\n                    onClick={() => mBackClick()}\n                  />{\" \"}\n                  <p className=\"ml-2 font-PlusJakartaSansRegular font-normal text-sm 3xl:text-base\">\n                    {t(\"GoBack\")}\n                  </p>\n                </div>\n\n                <div>\n                  <p className=\"font-PlusJakartaSansSemiBold text-4xl mt-10\">\n                    {t(\"SuggestedInvestorsyou\")}\n                  </p>\n                </div>\n\n                {/* <div className=\"w-4/5 h-full  ml-5 overflow-auto scrollbar-hide\">\n                  {investordb.length !== 0 ? (\n                    <div className=\"grid-containeritemsugginv\">\n                      {investordb.map((item) => (\n                        <div\n                          key={item.id}\n                          className=\"grid-itemsugginv  bg-white p-3\"\n                        >\n                          <div className=\" grid grid-cols-1 gap-5\">\n                            <div className=\"p-4 flex flex-row justify-between\">\n                              <div className=\"flex-row flex h-full w-full justify-center items-center\">\n                                <img\n                                  className=\"rounded-lg bg-white w-9 h-9\"\n                                  src={\n                                    item.image.length === 0\n                                      ? Images.image\n                                      : item.image\n                                  }\n                                  alt=\"\"\n                                />\n                                <div className=\"h-full flex w-full ml-2 flex-col\">\n                                  <Menutext label={item.investor_name} />\n\n                                  <div className=\"mt-1\">\n                                    <Menutitletext label={item.investor_type} />\n                                  </div>\n                                </div>\n                              </div>\n                              <div></div>\n                            </div>\n\n                            <div className=\"w-full h-px bg-mBorderColor\"></div>\n\n                            <div className=\"grid grid-cols-3 gap-3 w-full \">\n                              {item.funding_stages.map((stagesitem) => (\n                                <div\n                                  className=\"p-2 rounded-md bg-mCardbgColor justify-center items-center flex\"\n                                  key={stagesitem.id}\n                                >\n                                  <p className=\"font-PlusJakartaSansRegular text-mTextColorLogin text-xs\">\n                                    {stagesitem.funding_stages}\n                                  </p>\n                                </div>\n                              ))}\n                            </div>\n                          </div>\n                        </div>\n                      ))}\n                    </div>\n                  ) : (\n                    <div className=\"justify-center items-center mt-16  flex-col flex w-full h-full \">\n                      <img\n                        className=\"rounded-lg bg-white \"\n                        src={Images.nodata}\n                        alt=\"review\"\n                      />\n                      <div className=\"mt-10\">\n                        {\" \"}\n                        <Titletext label={t(\"nodata\")} />\n                      </div>\n                    </div>\n                  )}\n                </div> */}\n              </div>\n            </div>\n          </div>\n        </section>\n      )}\n    </>\n  );\n};\n\nexport default SuggestingStartupInvestors;\n","import React, { useEffect } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport Loader from \"../../Utils/Loader\";\nimport SideMenu from \"../../Components/SideMenu\";\nimport {\n  Color,\n  isEmptyObject,\n  isValidScore,\n  mTimerValue,\n  ProgressBar,\n} from \"../../Utils/Constants\";\nimport { mStartupdashboard, mUploadDeckDashboard } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\n\nimport DashboardDialog from \"./DashboardDialog\";\nimport { useSelector } from \"react-redux\";\nimport HeaderMenu from \"../../Components/HeaderMenu\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport GaugeChart from \"react-gauge-chart\";\nimport PdfUploader from \"../../Components/PdfUploader\";\nimport SecondaryButton from \"../../Components/SecondaryButton\";\nimport { ReactComponent as ChatIcon } from \"../../assets/Images/ic_chat.svg\";\nimport { toPng } from \"html-to-image\"; // Correctly import toPng\n\nconst InvestorDashboard = () => {\n  const { t } = useTranslation(\"\");\n\n  const navigate = useNavigate();\n  const [loading, setLoading] = useState(false);\n  const [servicesdate, setServicesData] = useState([]);\n  const [percentage, setpercentage] = useState(0);\n  const [base64, setBase64] = useState(\"\");\n  const [FileName, setFileName] = useState(\"\");\n  const [summarydetails, setSummaryDetails] = useState({});\n  const [deckdetails, setDeckdetails] = useState({});\n  // Set Progressbar\n  const [progress, setProgress] = useState(0);\n  const [isRunning, setIsRunning] = useState(false);\n  const [showDialog, setShowDialog] = useState(false);\n\n  const user = useSelector((state) => state.userInfo.user);\n\n  // alert(\"Get User :\" + user);\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  const isClickDisbled = isRunning && progress !== 100;\n  // const isClickDisbled = true;\n\n  //\n  useEffect(() => {\n    DashboardAPICall();\n  }, []);\n\n  // Dashboard API call\n  const DashboardAPICall = async () => {\n    setLoading(true);\n    const response = await mStartupdashboard({\n      user_name: UserInfoData.user_email,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        if (response?.data.message.user_last_deck.length !== 0) {\n          setIsRunning(false);\n\n          // setpercentage(\n          //   overall_rating.includes(\":\")\n          //     ? overall_rating.split(\":\")[1].includes(\"/\")\n          //       ? overall_rating.split(\":\")[1].split(\"/\")[0] / 10\n          //       : overall_rating.split(\":\")[1] / 10\n          //     : overall_rating\n          // );\n\n          setpercentage(\n            isValidScore(\n              response?.data.message.user_last_deck.summary_details\n                .overall_rating\n            )\n          );\n          setDeckdetails(response?.data.message.user_last_deck.deck_details);\n          setSummaryDetails(\n            response?.data.message.user_last_deck.summary_details\n          );\n        }\n\n        setServicesData(response?.data.message.our_services);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const handleItemClick = (mDeck_Id) => {\n    navigate(\"/deckdetails\", {\n      state: {\n        mDeck_Id: mDeck_Id,\n      },\n    });\n  };\n\n  const Opendialog = () => {\n    // Handle the cancel action\n\n    setShowDialog(true);\n  };\n\n  const handleCancel = () => {\n    // Handle the cancel action\n    setShowDialog(false);\n  };\n\n  const handleDeckSucess = () => {\n    // Handle the cancel action\n\n    setShowDialog(false);\n    DashboardAPICall();\n  };\n\n  const handleFileSelect1 = async (file) => {\n    //  setSelectedFile(file);\n    console.log(file);\n\n    if (!file) {\n      alert(\"Please select a file first!\");\n      return;\n    }\n\n    const base64String = await convertToBase64(file);\n    setBase64(base64String);\n\n    console.log(\"Base64 String:\", base64String);\n\n    var mCropImage = \"\";\n\n    if (base64String.length === 0) {\n      mCropImage = base64String.replace(\"data:application/pdf;base64,\", \"\");\n    } else {\n      mCropImage = base64String.replace(\"data:application/pdf;base64,\", \"\");\n    }\n\n    // console.log(mCropImage);\n    setFileName(file.name);\n    setLoading(false);\n    const response = await mUploadDeckDashboard({\n      deck_name: file.name,\n      deck_doc: mCropImage,\n      user_name: UserInfoData.user_email,\n    });\n    console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        //setdeckId(response?.data.message.deck_id);\n        setIsRunning(true);\n        // navigate(\"/signup\", {\n        //   state: {\n        //     mdeckId: response?.data.message.deck_id,\n        //     mdeckName: file.name,\n        //   },\n        // });\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      console.log(\"Error\");\n    }\n  };\n\n  //Function to convert file to Base64\n  const convertToBase64 = (file) => {\n    console.log(file);\n    return new Promise((resolve, reject) => {\n      const reader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => resolve(reader.result);\n      reader.onerror = (error) => reject(error);\n    });\n  };\n\n  const ClickChat = () => {\n    if (!isClickDisbled) {\n      navigate(\"/chat\");\n    }\n  };\n\n  const proceedClick = () => {};\n\n  // Deck upload to server start\n\n  // One min interval\n  useEffect(() => {\n    if (!isRunning) return;\n\n    const intervalTime = mTimerValue / 100; // Update every 0.6 seconds (1% of 60 seconds)\n\n    const interval = setInterval(() => {\n      setProgress((prevProgress) => {\n        if (prevProgress >= 100) {\n          clearInterval(interval);\n          DashboardAPICall();\n          console.log(\"Interval : \" + prevProgress);\n          return 100;\n        }\n        return prevProgress + 1;\n      });\n    }, intervalTime);\n\n    return () => clearInterval(interval);\n  }, [isRunning]);\n\n  // Time progress running or not\n\n  // Deck upload to server end\n\n  // const divRef = useRef();\n\n  // // Function to convert div to PNG and share\n  // const handleShare = async () => {\n  //   try {\n  //     const dataUrl = await toPng(divRef.current); // Use toPng here\n  //     const blob = await (await fetch(dataUrl)).blob();\n\n  //     // Check if Web Share API is available\n  //     if (navigator.share) {\n  //       const file = new File([blob], \"image.png\", { type: blob.type });\n  //       navigator\n  //         .share({\n  //           title: \"Check out this image!\",\n  //           files: [file],\n  //         })\n  //         .then(() => console.log(\"Shared successfully\"))\n  //         .catch((error) => console.error(\"Error sharing:\", error));\n  //     } else {\n  //       // Fallback: Download the image locally\n  //       // saveAs(blob, \"image.png\");\n  //       alert(\n  //         \"Web Share API is not supported in this browser. Image downloaded instead.\"\n  //       );\n  //     }\n  //   } catch (error) {\n  //     console.error(\"Error generating image:\", error);\n  //   }\n  // };\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div>\n          <div className=\"flex h-screen overflow-hidden bg-mDashboardBg  bg-no-repeat bg-cover\">\n            {/* Sidebar */}\n            <SideMenu\n              mFrom={0}\n              OpenDialog={Opendialog}\n              mClickstatus={isClickDisbled}\n            />\n\n            {/* Main content */}\n            <div className=\"flex flex-col flex-grow overflow-hidden \">\n              {/* Top Navigation */}\n\n              <HeaderMenu\n                title={t(\"Dashboard\")}\n                mClickstatus={isClickDisbled}\n                isLoadNotification={true}\n              />\n\n              {/* Scrollable content */}\n              <main className=\"flex-grow overflow-auto  mt-1 mb-3 scrollbar-hide p-4\">\n                {/* Adjusted padding top to avoid overlap */}\n\n                {isEmptyObject(summarydetails) ? (\n                  <div>\n                    <div className=\"w-full h-auto mt-5 flex flex-row\">\n                      <div className=\"w-1/2 \">\n                        <div className=\"\">\n                          <DashboardTitle label={t(\"UploadPitchDeck\")} />\n                        </div>\n                        <div className=\"mt-9\">\n                          <PdfUploader\n                            onFileSelect={handleFileSelect1}\n                            hidelogin={0}\n                            isBorder={false}\n                          />\n                        </div>\n                      </div>\n                      <div className=\"w-1/2 ml-5 mr-3\">\n                        {isRunning ? (\n                          <div className=\"mt-10\">\n                            <ProgressBar progress={progress} />\n                            <p className=\"font-PlusJakartaSansRegular text-mTextColor font-normal text-sm mt-2\">\n                              {FileName}\n                            </p>\n                          </div>\n                        ) : (\n                          <div></div>\n                        )}\n                      </div>\n                    </div>\n                  </div>\n                ) : (\n                  <div className=\"w-full h-auto mt-5 flex flex-col lg:flex-row\">\n                    <div className=\"w-full  lg:w-1/2 \">\n                      <div className=\"\">\n                        <DashboardTitle label={t(\"UploadPitchDeck\")} />\n                      </div>\n                      <div className=\"mt-9\">\n                        <PdfUploader\n                          onFileSelect={handleFileSelect1}\n                          hidelogin={0}\n                          isBorder={false}\n                        />\n                      </div>\n                    </div>\n                    {isRunning ? (\n                      <div className=\"w-full  lg:w-1/2 lg:ml-5 mr-3\">\n                        {isRunning ? (\n                          <div className=\"mt-10\">\n                            <ProgressBar progress={progress} />\n                            <p className=\"font-PlusJakartaSansRegular text-mTextColor font-normal text-sm mt-2\">\n                              {FileName}\n                            </p>\n                          </div>\n                        ) : (\n                          <div></div>\n                        )}\n                      </div>\n                    ) : (\n                      <div className=\"w-full mt-5 lg:mt-0 lg:w-1/2 lg:ml-5  mr-3 \">\n                        <div>\n                          <div className=\"w-full justify-between flex flex-row\">\n                            <div>\n                              <p className=\"font-PlusJakartaSansSemiBold font-normal text-mTextColor text-xs md:text-sm lg:text-base xl:text-lg 3xl:text-2xl\">\n                                {deckdetails.name}\n                              </p>\n                            </div>\n                            <div\n                              className=\"cursor-pointer \"\n                              onClick={() => handleItemClick(deckdetails.id)}\n                            >\n                              <p className=\"font-PlusJakartaSansSemiBold font-normal text-mButtonColor text-xs md:text-sm lg:text-base xl:text-lg 3xl:text-2xl\">\n                                {t(\"ViewSummary\")}\n                              </p>\n                            </div>\n                          </div>\n                        </div>\n                        <div className=\"mt-5 3xl:mt-20\">\n                          <div className=\"w-full h-36 mt-7 flex-row justify-center items-center py-5 flex \">\n                            <div\n                              className=\" w-full md:w-1/2 lg:w-3/5 h-full justify-center items-center lg:justify-start lg:items-start flex gauge-container\"\n                              style={{\n                                display: \"flex\",\n                                justifyContent: \"center\",\n                                alignItems: \"center\",\n                              }}\n                            >\n                              <GaugeChart\n                                id=\"gauge-chart-custom\"\n                                nrOfLevels={1} // Sets the number of arc levels\n                                arcsLength={[\n                                  percentage / 10,\n                                  1 - percentage / 10,\n                                ]}\n                                colors={[Color.mButtonColor, Color.trackColor]} // Sets color for the arc\n                                arcWidth={0.25} // Sets arc width, reduce this for thinner arcs\n                                percent={percentage / 10} // Sets the percentage the gauge is filled\n                                needleColor={Color.mArcColor} // Sets the needle color\n                                needleBaseColor={Color.needleColor} // Sets the needle base color\n                                cornerRadius={0} // Removes edge radius\n                                arcPadding={0}\n                                hideText={true} // Removes padding between arcs\n                              />\n                            </div>\n                            <div className=\" hidden lg:block lg:w-2/5 h-full items-center justify-center  flex-col \">\n                              <p className=\"font-PlusJakartaSansSemiBold text-6xl items-center justify-center flex\">\n                                {isValidScore(summarydetails.overall_rating)}\n                                {/* {\n                                  summarydetails.overall_rating\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"ml-2 w-full font-PlusJakartaSansRegular items-center justify-center flex font-normal text-xs md:text-sm lg:text-base xl:text-lg 3xl:text-2xl mt-3\">\n                                {t(\"OverallScore\")}\n                              </p>\n                            </div>\n                          </div>\n\n                          <div className=\"block lg:hidden h-full items-start justify-center flex-col border border-mBorderColor rounded-lg ml-3 p-4 bg-white\">\n                            <p className=\"font-PlusJakartaSansSemiBold text-3xl  text-mTextColor\">\n                              {isValidScore(summarydetails.overall_rating)}\n                              {/* {\n                                  summarydetails.overall_rating\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                            </p>\n                            <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base xl:text-base 3xl:text-2xl mt-3\">\n                              {t(\"OverallScore\")}\n                            </p>\n                          </div>\n\n                          <div className=\"w-full h-28 mt-5 lg:mt-10 3xl:mt-20 flex-row flex \">\n                            <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                                {isValidScore(summarydetails.team_exp)}\n                                {/* {\n                                  summarydetails.team_exp\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base xl:text-base 3xl:text-2xl mt-3\">\n                                {t(\"Teamexperience\")}\n                              </p>\n                            </div>\n                            <div className=\"flex-1 h-full items-start justify-center flex flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                                {isValidScore(summarydetails.market_potential)}\n                                {/* {\n                                  summarydetails.market_potential\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base xl:text-base 3xl:text-2xl mt-3\">\n                                {t(\"Marketpotential\")}\n                              </p>\n                            </div>\n                            <div className=\" hidden lg:block flex-1 h-full items-start justify-center  flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                              <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                                {isValidScore(summarydetails.flow_and_clarity)}\n                                {/* {\n                                  summarydetails.flow_and_clarity\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                              </p>\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base xl:text-base 3xl:text-2xl mt-3\">\n                                {t(\"Flowandclarity\")}\n                              </p>\n                            </div>\n                          </div>\n                          <div className=\" block lg:hidden mt-4 flex-1 h-full items-start justify-center  flex-col bg-white border border-mBorderColor rounded-lg ml-3 p-4\">\n                            <p className=\"font-PlusJakartaSansSemiBold text-3xl text-mTextColor\">\n                              {isValidScore(summarydetails.flow_and_clarity)}\n                              {/* {\n                                  summarydetails.flow_and_clarity\n                                    .split(\":\")[1]\n                                    .split(\"/\")[0]\n                                } */}\n                            </p>\n                            <p className=\"font-PlusJakartaSansRegular text-mTextColor text-xs md:text-sm lg:text-base xl:text-base 3xl:text-2xl mt-3\">\n                              {t(\"Flowandclarity\")}\n                            </p>\n                          </div>\n                        </div>\n                      </div>\n                    )}\n                  </div>\n                )}\n\n                <div className=\"absolute items-center justify-center flex hidden\">\n                  <button\n                    className={`floating-button w-[50px] h-[50px] 3xl:w-[70px] 3xl:h-[70px] ${\n                      isClickDisbled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n                    }`}\n                    onClick={ClickChat}\n                  >\n                    <ChatIcon className=\"w-6 h-6 3xl:w-8 3xl:h-8 flex-shrink-0 \" />\n                    {/* You can replace this with any icon */}\n                  </button>\n                </div>\n              </main>\n            </div>\n          </div>\n\n          {showDialog ? (\n            <DashboardDialog\n              show={showDialog}\n              onClose={handleCancel}\n              onDeckSucess={handleDeckSucess}\n              Userid={UserInfoData.user_id}\n            />\n          ) : (\n            <div></div>\n          )}\n        </div>\n      )}\n    </>\n    // <div className=\"p-6\">\n    //   <div\n    //     className=\"bg-gray-200 p-10 text-center rounded-lg shadow-md\"\n    //     ref={divRef}\n    //   >\n    //     <h1 className=\"text-3xl font-bold mb-4\">Shareable Banner</h1>\n    //     <p className=\"text-lg text-gray-700\">\n    //       This content will be shared as an image!\n    //     </p>\n    //   </div>\n\n    //   <button\n    //     className=\"mt-6 bg-blue-500 text-white px-4 py-2 rounded-lg\"\n    //     onClick={handleShare}\n    //   >\n    //     Share as Image\n    //   </button>\n    // </div>\n  );\n};\n\nexport default InvestorDashboard;\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/ic_close.svg\";\nimport { Images } from \"../../Utils/Constants\";\nimport Menutext from \"../../Components/Menutext\";\nimport Menutitletext from \"../../Components/Menutitletext\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport { ReactComponent as EIStatusIcon } from \"../../assets/Images/EI_status.svg\";\nimport { ReactComponent as EIDateIcon } from \"../../assets/Images/EI_date.svg\";\nimport { ReactComponent as EIDealIcon } from \"../../assets/Images/EI_deal.svg\";\nimport { ReactComponent as EISectorIcon } from \"../../assets/Images/EI_sector.svg\";\nimport { ReactComponent as EIPitchdeckIcon } from \"../../assets/Images/EI_pitchdeck.svg\";\nimport { ReactComponent as EIOnepagerIcon } from \"../../assets/Images/EI_onepager.svg\";\nimport { ReactComponent as EIRevenueIcon } from \"../../assets/Images/EI_revenue.svg\";\nimport { ReactComponent as EIBurnIcon } from \"../../assets/Images/EI_burn.svg\";\nimport { ReactComponent as StarIcon } from \"../../assets/Images/ic_star.svg\";\nimport { ReactComponent as NoofIcon } from \"../../assets/Images/ic_noofinv.svg\";\nimport { ReactComponent as LinkedinIcon } from \"../../assets/Images/ic_linkedin.svg\";\nimport { toast } from \"react-toastify\";\n\nimport TextView from \"../../Components/TextView\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { mEditCRM } from \"../../Services/allAPI\";\n\nconst DealsDetails = ({\n  show,\n  onConfirm,\n  onCancel,\n  getInvestors,\n  clickRefresh,\n}) => {\n  const { t } = useTranslation(\"\");\n  const [valutname, setValutName] = useState(\"\");\n  const [description, setDescription] = useState(\"\");\n  const [message, setMessage] = useState(getInvestors.notes);\n  const [loading, setLoading] = useState(false);\n\n  // alert(JSON.stringify(getInvestors));\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  const submitClick = () => {\n    SaveAPICall();\n  };\n\n  // Service Page API call\n  const SaveAPICall = async () => {\n    setLoading(true);\n    const response = await mEditCRM({\n      user_name: UserInfoData.user_email,\n      investor_fav_id: getInvestors.investor_fav_id,\n      notes: message,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n\n        clickRefresh();\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      setLoading(false);\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const isDisable = !message;\n\n  const dialogRef = useRef();\n  // Close the modal when clicking outside of it\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      // Check if click is outside the dialog\n\n      if (dialogRef.current && !dialogRef.current.contains(event.target)) {\n        onCancel(); // Close the dialog if the click is outside\n      }\n    };\n\n    // Add the event listener when the dialog is shown\n    if (show) {\n      document.addEventListener(\"mousedown\", handleClickOutside);\n    }\n\n    // Remove the event listener when the dialog is closed\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [show, onCancel]);\n\n  // Change data formet start\n  const formatDate = (inputDate) => {\n    // Split the date string into day, month, year\n    const [day, month, year] = inputDate.split(\"-\");\n    // Create a new Date object from the components (month is zero-based, so we subtract 1)\n    const date = new Date(year, month - 1, day);\n    // Format the date using toLocaleDateString with options\n    const options = { day: \"numeric\", month: \"short\", year: \"numeric\" }; // e.g., 25 Sep 2024\n    return date.toLocaleDateString(\"en-US\", options);\n  };\n\n  return (\n    <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50 p-2 z-50\">\n      {/* max-w-sm */}\n      <div\n        className=\"bg-mDashboardBg rounded-md overflow-auto scrollbar-hide shadow-xl w-full  md:w-1/2 lg:w-1/3 py-4 pl-8 pr-4 h-90\"\n        ref={dialogRef}\n      >\n        <div className=\"justify-between flex \">\n          <div></div>\n\n          <div>\n            <button onClick={onCancel}>\n              <CloseIcon className=\"\" />\n            </button>\n          </div>\n        </div>\n\n        <div className=\"flex-row flex w-full justify-center items-center\">\n          <img\n            className=\"rounded-lg bg-white w-9 h-9\"\n            src={Images.Pdf}\n            alt=\"\"\n          />\n          <div className=\"h-full flex w-full ml-2 flex-col\">\n            <DashboardTitle label={getInvestors.deal_name} />\n\n            <div className=\"mt-1\">\n              <Menutitletext label={getInvestors.sector} />\n            </div>\n          </div>\n        </div>\n\n        <div className=\"mt-10 grid grid-cols-1 gap-5\">\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIStatusIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"Status\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              <Menutext label={getInvestors.status} />\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIDateIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"AppliedDate\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              <Menutext label={formatDate(getInvestors.applied_date)} />\n            </div>\n          </div>\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIDealIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"Sourceofdeal\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              <Menutext label={getInvestors.source_of_deal} />\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EISectorIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"Sector\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              <Menutext label={getInvestors.sector} />\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIPitchdeckIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"PitchDeckLink\")} />\n              </div>\n            </div>\n            <div\n              className=\"w-3/5 cursor-pointer\"\n              onClick={() => {\n                window.open(getInvestors.pitch_deck_link, \"_blank\");\n              }}\n            >\n              <p className=\"font-PlusJakartaSansRegular break-words  text-blue-500 underline hover:text-blue-700 text-sm\">\n                {getInvestors.pitch_deck_link}\n              </p>\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIBurnIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"Burn\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              {\" \"}\n              <Menutext label={t(\"rupess\") + getInvestors.burn} />\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIBurnIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"ask\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              {\" \"}\n              <Menutext label={t(\"rupess\") + getInvestors.ask} />\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIRevenueIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"Revenue\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              {\" \"}\n              <Menutext label={t(\"rupess\") + getInvestors.revenue} />\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIOnepagerIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"OnePagerLink\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              <Menutext label={getInvestors.one_page_link} />\n            </div>\n          </div>\n        </div>\n        <div className=\"mt-5\">\n          <DashboardTitle label={t(\"Notes\")} />\n          <div className=\"mt-4 border border-mBorderColor rounded-md bg-white\">\n            <textarea\n              id=\"message\"\n              rows=\"5\"\n              value={message}\n              onChange={(e) => setMessage(e.target.value)}\n              // className=\"block h-28 resize-none overflow-y-auto w-full border-black  text-sm break-words text-mTextColor placeholder-mTextColorLogin px-2 py-3 text-start justify-start items-start  rounded-md   font-PlusJakartaSansRegular border-none focus:border-none  bg-white border-4 !outline-none\"\n              className=\"h-32 w-full resize-none overflow-y-auto  border-mBorderColor p-2 rounded-md text-sm break-words text-mTextColor placeholder-mTextColorLogin text-start justify-start items-start font-PlusJakartaSansRegular   bg-white !outline-none\"\n              placeholder={\"Write something...\"}\n            ></textarea>\n          </div>\n        </div>\n        <div className=\"mt-4\">\n          <PrimaryButton\n            label={t(\"save\")}\n            onClick={submitClick}\n            onDisable={isDisable}\n          ></PrimaryButton>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default DealsDetails;\n","import React, {\n  useEffect,\n  useRef,\n  forwardRef,\n  useImperativeHandle,\n} from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport Menutitletext from \"../../Components/Menutitletext\";\nimport MultiRangeSlider from \"../../Components/MultiRangeSlider\";\nimport Menutext from \"../../Components/Menutext\";\nimport { Images, isEmptyObject } from \"../../Utils/Constants\";\nimport {\n  mGetDeals,\n  mGetDealsShortlist,\n  mgetInvestordb,\n  mInvestordb,\n  mInvestorShortlist,\n} from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport Loader from \"../../Utils/Loader\";\nimport { ReactComponent as DottedIcon } from \"../../assets/Images/ic_dotted.svg\";\nimport { ReactComponent as TickIcon } from \"../../assets/Images/ic_tickgray.svg\";\nimport { ReactComponent as UserIcon } from \"../../assets/Images/ic_user.svg\";\nimport Titletext from \"../../Components/Titletext\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/ic_close.svg\";\nimport DealsDetails from \"./DealsDetails\";\n\nconst Deals = () => {\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const navigate = useNavigate();\n  const [rangeValues, setRangeValues] = useState([0, 1000]);\n  const [dealsdb, setdealsdb] = useState([]);\n  const menuRef = useRef(null);\n  const [ShowInvestorDetails, setShowInvestorDetails] = useState(false);\n  const [ShowInvestorItem, setShowInvestorItem] = useState({});\n  const [showDialog, setshowDialog] = useState(false);\n  const [checkSizeMin, setcheckSizeMin] = useState(0);\n  const [checkSizeMax, setcheckSizeMax] = useState(1000);\n\n  //alert(onShowDialog);\n\n  // Filter Function Start\n\n  //Filter Function  End\n\n  // Slider Range select\n  const handleRangeChange = (values) => {\n    // setRangeValues(values);\n    setcheckSizeMin(values.min);\n    setcheckSizeMax(values.max);\n    console.log(\"Selected \" + values.min + \"  \" + values.max);\n  };\n\n  // Close the menu on outside click\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (menuRef.current && !menuRef.current.contains(event.target)) {\n        setActiveMenu(null);\n      }\n    };\n    document.addEventListener(\"mousedown\", handleClickOutside);\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [menuRef]);\n\n  //Get suggested Investor\n\n  useEffect(() => {\n    ServicePageAPICall();\n  }, []);\n\n  // Service Page API call\n  const ServicePageAPICall = async () => {\n    setLoading(true);\n    const response = await mGetDeals({\n      user_name: UserInfoData.user_email,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        setdealsdb(response?.data.message.investor_crm);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const [activeMenu, setActiveMenu] = useState(null);\n\n  const toggleMenu = (id) => {\n    setActiveMenu(activeMenu === id ? null : id);\n  };\n\n  const clickShortlist = (item, event) => {\n    setActiveMenu(null);\n    ShortlistAPICall(item.id);\n  };\n\n  const clickViewInvestor = (item, event) => {\n    setActiveMenu(null);\n    setShowInvestorDetails(true);\n    setShowInvestorItem(item);\n  };\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  // Shortlist API Call\n  const ShortlistAPICall = async (id) => {\n    setLoading(true);\n    const response = await mGetDealsShortlist({\n      user_name: UserInfoData.user_email,\n      crm_id: id,\n      status: \"Deal\",\n    });\n\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        ServicePageAPICall();\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const clickRefresh = () => {\n    setShowInvestorDetails(false);\n    ServicePageAPICall();\n  };\n\n  const clickClose = () => {\n    setShowInvestorDetails(false);\n  };\n\n  // Investor Type Filter start\n  const InvestorType = [\n    { id: 1, name: \"Angel Investor\" },\n    { id: 2, name: \"Venture Capital\" },\n  ];\n\n  // State to keep track of selected checkboxes\n  const [selectedInvestorType, setSelectedInvestorType] = useState([]);\n\n  // Handle checkbox change\n  const handleInvestorTypeCheckbox = (id) => {\n    setSelectedInvestorType((prevSelected) => {\n      if (prevSelected.includes(id)) {\n        // Remove from selected if already selected\n        return prevSelected.filter((filterId) => filterId !== id);\n      } else {\n        // Add to selected if not already selected\n        return [...prevSelected, id];\n      }\n    });\n  };\n\n  // Display the selected filters\n  var selectedFilterNames = InvestorType.filter((filter) =>\n    selectedInvestorType.includes(filter.id)\n  ).map((filter) => filter.name);\n\n  // Investor Type Filter End\n\n  // stage Filter Start\n  const stage = [\n    { id: 11, name: \"Pre Seed\" },\n    { id: 12, name: \"Seed\" },\n    { id: 13, name: \"Series A\" },\n    { id: 14, name: \"Series B\" },\n    { id: 15, name: \"Pre Seed\" },\n    { id: 16, name: \"Seed\" },\n    { id: 17, name: \"Series A\" },\n    { id: 18, name: \"Series B\" },\n  ];\n\n  // State to keep track of selected checkboxes\n  const [selectedStage, setSelectedStage] = useState([]);\n\n  // Handle checkbox change\n  const handleStageCheckbox = (id) => {\n    setSelectedStage((prevSelected) => {\n      if (prevSelected.includes(id)) {\n        // Remove from selected if already selected\n        return prevSelected.filter((filterId) => filterId !== id);\n      } else {\n        // Add to selected if not already selected\n        return [...prevSelected, id];\n      }\n    });\n  };\n\n  // Display the selected filters\n  var selectedStageNames = stage\n    .filter((filter) => selectedStage.includes(filter.id))\n    .map((filter) => filter.name);\n\n  // stage Filter End\n\n  const filterClick = () => {\n    console.log(checkSizeMin);\n    console.log(checkSizeMax);\n    console.log(selectedFilterNames);\n    console.log(selectedStageNames);\n  };\n\n  const clearall = () => {\n    setSelectedStage([]);\n    setSelectedInvestorType([]);\n\n    if (childRef.current) {\n      childRef.current.triggerButtonClick(); // Call method exposed by child\n    }\n  };\n\n  const childRef = useRef(null);\n\n  const onCancel = () => {\n    setshowDialog(false);\n  };\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div className=\"h-full\">\n          <div className=\"w-full h-full flex flex-row \">\n            {/* <div className=\"hidden  w-1/5 h-full bg-white rounded-lg p-4 overflow-auto scrollbar-hide\">\n              <div className=\" grid grid-cols-1 gap-7\">\n                <div className=\"flex flex-row justify-between \">\n                  <div className=\"justify-center items-center flex\">\n                    <DashboardTitle label={t(\"Filter\")} />\n                  </div>\n                  <div\n                    className=\"justify-center items-center flex cursor-pointer\"\n                    onClick={clearall}\n                  >\n                    <p className=\"font-PlusJakartaSansRegular text-mButtonColor text-xs\">\n                      {t(\"Clearall\")}\n                    </p>\n                  </div>\n                </div>\n                <div>\n                  <Menutitletext label={t(\"CheckSize\")} />\n                  <div\n                    className=\"flex flex-col items-center w-full mt-2\n                                  \"\n                  >\n                    <div className=\"mt-3 relative\">\n                      <MultiRangeSlider\n                        min={0}\n                        max={1000}\n                        ref={childRef}\n                        onChange={handleRangeChange}\n                      />\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"w-full h-px bg-mBorderColor\"> </div>\n                <div>\n                  <Menutitletext label={t(\"InvestorType\")} />\n                  <div>\n                    <div className=\"mt-5 grid grid-cols-1 gap-5\">\n                      {InvestorType.map((item) => (\n                        <div className=\"flex flex-col\" key={item.id}>\n                          <div className=\"flex items-center justify-start \">\n                            <label className=\"text-sm text-mTextColorLogin font-PlusJakartaSansRegular  items-center justify-start flex\">\n                              <input\n                                type=\"checkbox\"\n                                value={item.id}\n                                checked={selectedInvestorType.includes(item.id)}\n                                onChange={() =>\n                                  handleInvestorTypeCheckbox(item.id)\n                                }\n                                className=\"h-4 w-4 mr-2 font-PlusJakartaSansRegular  items-center justify-start text-mTextColor text-sm\"\n                              />\n                            </label>\n                          </div>\n                        </div>\n                      ))}\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"w-full h-px bg-mBorderColor\"> </div>\n                <div>\n                  <Menutitletext label={t(\"Stage\")} />\n                  <div className=\"mt-5 grid grid-cols-1 gap-5\">\n                    {stage.map((item) => (\n                      <div className=\"flex flex-col\" key={item.id}>\n                        <div className=\"flex items-center justify-start \">\n                          <label className=\"text-sm text-mTextColorLogin font-PlusJakartaSansRegular  items-center justify-start flex\">\n                            <input\n                              type=\"checkbox\"\n                              value={item.id}\n                              checked={selectedStage.includes(item.id)}\n                              onChange={() => handleStageCheckbox(item.id)}\n                              className=\"h-4 w-4 mr-2 font-PlusJakartaSansRegular  items-center justify-start text-mTextColor text-sm\"\n                            />\n\n                            {item.name}\n                          </label>\n                        </div>\n                      </div>\n                    ))}\n                  </div>\n                </div>\n\n                <div className=\"w-full h-px bg-mBorderColor\"> </div>\n\n                <div className=\"\">\n                  <button\n                    className={`  text-white text-base px-5 rounded-md w-full h-9 font-PlusJakartaSansSemiBold ${\"bg-mButtonColor\"}`}\n                    onClick={filterClick}\n                  >\n                    {t(\"submit\")}\n                  </button>\n                </div>\n              </div>\n            </div> */}\n\n            {/* Filter popup start */}\n            {/* <div className=\"hidden\">\n              {showDialog && (\n                <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50  px-2 z-50\">\n                 \n                  <div className=\"bg-mDashboardBg rounded-md overflow-auto scrollbar-hide shadow-xl w-full py-4 pl-8 pr-4 h-90\">\n                    <div className=\"justify-between flex flex-col \">\n                      <div className=\"w-full justify-end items-end flex\">\n                        <button>\n                          <CloseIcon className=\"\" />\n                        </button>\n                      </div>\n                      <div className=\" grid grid-cols-1 gap-7 mt-4\">\n                        <div className=\"flex flex-row justify-between \">\n                          <div className=\"justify-center items-center flex\">\n                            <DashboardTitle label={t(\"Filter\")} />\n                          </div>\n                          <div\n                            className=\"justify-center items-center flex cursor-pointer\"\n                            onClick={clearall}\n                          >\n                            <p className=\"font-PlusJakartaSansRegular text-mButtonColor text-xs\">\n                              {t(\"Clearall\")}\n                            </p>\n                          </div>\n                        </div>\n                        <div>\n                          <Menutitletext label={t(\"CheckSize\")} />\n                          <div\n                            className=\"flex flex-col items-center w-full mt-2\n                                  \"\n                          >\n                            <div className=\"mt-3 relative\">\n                              <MultiRangeSlider\n                                min={0}\n                                max={1000}\n                                ref={childRef}\n                               \n                                onChange={handleRangeChange}\n                              />\n                            </div>\n                          </div>\n                        </div>\n\n                        <div className=\"w-full h-px bg-mBorderColor\"> </div>\n                        <div>\n                          <Menutitletext label={t(\"InvestorType\")} />\n                          <div>\n                            <div className=\"mt-5 grid grid-cols-1 gap-5\">\n                              {InvestorType.map((item) => (\n                                <div className=\"flex flex-col\" key={item.id}>\n                                  <div className=\"flex items-center justify-start \">\n                                    <label className=\"text-sm text-mTextColorLogin font-PlusJakartaSansRegular  items-center justify-start flex\">\n                                      <input\n                                        type=\"checkbox\"\n                                        value={item.id}\n                                        checked={selectedInvestorType.includes(\n                                          item.id\n                                        )}\n                                        onChange={() =>\n                                          handleInvestorTypeCheckbox(item.id)\n                                        }\n                                        className=\"h-4 w-4 mr-2 font-PlusJakartaSansRegular  items-center justify-start text-mTextColor text-sm\"\n                                      />\n                                      \n                                      {item.name}\n                                    </label>\n                                  </div>\n                                </div>\n                              ))}\n                            </div>\n                          </div>\n                        </div>\n\n                        <div className=\"w-full h-px bg-mBorderColor\"> </div>\n                        <div>\n                          <Menutitletext label={t(\"Stage\")} />\n                          <div className=\"mt-5 grid grid-cols-1 gap-5\">\n                            {stage.map((item) => (\n                              <div className=\"flex flex-col\" key={item.id}>\n                                <div className=\"flex items-center justify-start \">\n                                  <label className=\"text-sm text-mTextColorLogin font-PlusJakartaSansRegular  items-center justify-start flex\">\n                                    <input\n                                      type=\"checkbox\"\n                                      value={item.id}\n                                      checked={selectedStage.includes(item.id)}\n                                      onChange={() =>\n                                        handleStageCheckbox(item.id)\n                                      }\n                                      className=\"h-4 w-4 mr-2 font-PlusJakartaSansRegular  items-center justify-start text-mTextColor text-sm\"\n                                    />\n                                    \n                                    {item.name}\n                                  </label>\n                                </div>\n                              </div>\n                            ))}\n                          </div>\n                        </div>\n\n                        <div className=\"w-full h-px bg-mBorderColor\"> </div>\n\n                        <div className=\"\">\n                          <button\n                            className={`  text-white text-base px-5 rounded-md w-full h-9 font-PlusJakartaSansSemiBold ${\"bg-mButtonColor\"}`}\n                            onClick={filterClick}\n                          >\n                            {t(\"submit\")}\n                          </button>\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              )}\n            </div> */}\n\n            {/* Filter popup end */}\n\n            <div className=\"w-full  h-full  lg:ml-5 overflow-auto scrollbar-hide\">\n              {dealsdb.length !== 0 ? (\n                <div className=\"grid-containeritemsugginv\">\n                  {dealsdb.map((item) => (\n                    <div\n                      key={item.id}\n                      className=\"grid-itemsugginv  bg-white p-3\"\n                    >\n                      <div className=\" grid grid-cols-1 gap-5\">\n                        <div className=\"p-4 flex flex-row justify-between\">\n                          <div\n                            className=\"flex-row flex h-full w-full justify-center items-center\"\n                            onClick={() => clickViewInvestor(item)}\n                          >\n                            <img\n                              src={Images.Pdf}\n                              alt=\"Profile\"\n                              className=\"cursor-pointer w-11 h-11\"\n                            />\n                            <div className=\"h-full flex w-full ml-2 flex-col\">\n                              <Menutext label={item.deal_name} />\n\n                              <div className=\"mt-1\">\n                                <Menutitletext label={item.sector} />\n                              </div>\n                            </div>\n                          </div>\n                          <div>\n                            <DottedIcon\n                              className=\"w-6 h-6 flex-shrink-0 cursor-pointer\"\n                              onClick={() => toggleMenu(item.id)}\n                            />\n                          </div>\n                        </div>\n\n                        <div className=\"w-full h-px bg-mBorderColor\"></div>\n\n                        {/* <div className=\"grid grid-cols-3 gap-3 w-full \">\n                          {item.funding_stages.map((stagesitem) => (\n                            <div\n                              className=\"p-2 rounded-md bg-mCardbgColor justify-center items-center flex\"\n                              key={stagesitem.id}\n                            >\n                              <p className=\"font-PlusJakartaSansRegular text-mTextColorLogin text-xs\">\n                                {stagesitem.funding_stages}\n                              </p>\n                            </div>\n                          ))}\n                        </div> */}\n                        <p className=\"font-PlusJakartaSansRegular text-sm text-mTextColorLogin\">\n                          {\" \"}\n                          {t(\"rupess\") + \" \" + item.ask}{\" \"}\n                        </p>\n                      </div>\n\n                      {activeMenu === item.id && (\n                        <div\n                          className=\"popup-menuValutdetails right-2 mt-2 w-40 bg-white p-3 rounded-xl shadow-xl shadow-mChatbg z-10\"\n                          ref={menuRef}\n                        >\n                          <ul>\n                            <li\n                              className=\"px-2 py-2 mt-2 cursor-pointer\"\n                              onClick={() => clickShortlist(item)}\n                            >\n                              <div className=\"flex flex-row justify-start items-center\">\n                                <TickIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                                <p className=\"font-PlusJakartaSansRegular  text-mTextColorLogin text-base ml-3\">\n                                  {t(\"Shortlist\")}{\" \"}\n                                </p>\n                              </div>\n                            </li>\n\n                            <li\n                              className=\"px-2 py-2 mt-2 cursor-pointer\"\n                              onClick={() => clickViewInvestor(item)}\n                            >\n                              <div className=\"flex flex-row justify-start items-center\">\n                                <UserIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                                <p className=\"font-PlusJakartaSansRegular  text-mTextColorLogin text-base ml-3\">\n                                  {t(\"ViewProfile\")}{\" \"}\n                                </p>\n                              </div>\n                            </li>\n                          </ul>\n                        </div>\n                      )}\n                    </div>\n                  ))}\n                </div>\n              ) : (\n                <div className=\"justify-center items-center mt-16  flex-col flex w-full h-full \">\n                  <img\n                    className=\"rounded-lg bg-white \"\n                    src={Images.nodata}\n                    alt=\"review\"\n                  />\n                  <div className=\"mt-10\">\n                    {\" \"}\n                    <Titletext label={t(\"nodata\")} />\n                  </div>\n                </div>\n              )}\n            </div>\n          </div>\n          {ShowInvestorDetails ? (\n            <DealsDetails\n              show={ShowInvestorDetails}\n              onCancel={clickClose}\n              clickRefresh={clickRefresh}\n              getInvestors={ShowInvestorItem}\n            />\n          ) : (\n            <div></div>\n          )}\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default Deals;\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { ReactComponent as CloseIcon } from \"../../assets/Images/ic_close.svg\";\nimport { Images } from \"../../Utils/Constants\";\nimport Menutext from \"../../Components/Menutext\";\nimport Menutitletext from \"../../Components/Menutitletext\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\nimport { ReactComponent as EIStatusIcon } from \"../../assets/Images/EI_status.svg\";\nimport { ReactComponent as EIDateIcon } from \"../../assets/Images/EI_date.svg\";\nimport { ReactComponent as EIDealIcon } from \"../../assets/Images/EI_deal.svg\";\nimport { ReactComponent as EISectorIcon } from \"../../assets/Images/EI_sector.svg\";\nimport { ReactComponent as EIPitchdeckIcon } from \"../../assets/Images/EI_pitchdeck.svg\";\nimport { ReactComponent as EIOnepagerIcon } from \"../../assets/Images/EI_onepager.svg\";\nimport { ReactComponent as EIRevenueIcon } from \"../../assets/Images/EI_revenue.svg\";\nimport { ReactComponent as EIBurnIcon } from \"../../assets/Images/EI_burn.svg\";\nimport { ReactComponent as StarIcon } from \"../../assets/Images/ic_star.svg\";\nimport { ReactComponent as NoofIcon } from \"../../assets/Images/ic_noofinv.svg\";\nimport { ReactComponent as LinkedinIcon } from \"../../assets/Images/ic_linkedin.svg\";\nimport { toast } from \"react-toastify\";\n\nimport TextView from \"../../Components/TextView\";\nimport PrimaryButton from \"../../Components/PrimaryButton\";\nimport { mEditCRM } from \"../../Services/allAPI\";\n\nconst CRMListDetails = ({\n  show,\n  onConfirm,\n  onCancel,\n  getInvestors,\n  clickRefresh,\n}) => {\n  const { t } = useTranslation(\"\");\n  const [valutname, setValutName] = useState(\"\");\n  const [description, setDescription] = useState(\"\");\n  const [message, setMessage] = useState(getInvestors.notes);\n  const [loading, setLoading] = useState(false);\n\n  // alert(JSON.stringify(getInvestors));\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  const submitClick = () => {\n    SaveAPICall();\n  };\n\n  // Service Page API call\n  const SaveAPICall = async () => {\n    setLoading(true);\n    const response = await mEditCRM({\n      user_name: UserInfoData.user_email,\n      investor_fav_id: getInvestors.investor_fav_id,\n      notes: message,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n\n        clickRefresh();\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      setLoading(false);\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const isDisable = !message;\n\n  const dialogRef = useRef();\n  // Close the modal when clicking outside of it\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      // Check if click is outside the dialog\n\n      if (dialogRef.current && !dialogRef.current.contains(event.target)) {\n        onCancel(); // Close the dialog if the click is outside\n      }\n    };\n\n    // Add the event listener when the dialog is shown\n    if (show) {\n      document.addEventListener(\"mousedown\", handleClickOutside);\n    }\n\n    // Remove the event listener when the dialog is closed\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [show, onCancel]);\n\n  // Change data formet start\n  const formatDate = (inputDate) => {\n    // Split the date string into day, month, year\n    const [day, month, year] = inputDate.split(\"-\");\n    // Create a new Date object from the components (month is zero-based, so we subtract 1)\n    const date = new Date(year, month - 1, day);\n    // Format the date using toLocaleDateString with options\n    const options = { day: \"numeric\", month: \"short\", year: \"numeric\" }; // e.g., 25 Sep 2024\n    return date.toLocaleDateString(\"en-US\", options);\n  };\n\n  return (\n    <div className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50 p-2 z-50\">\n      {/* max-w-sm */}\n      <div\n        className=\"bg-mDashboardBg rounded-md overflow-auto scrollbar-hide shadow-xl w-full  md:w-1/2 lg:w-1/3 py-4 pl-8 pr-4 h-90\"\n        ref={dialogRef}\n      >\n        <div className=\"justify-between flex \">\n          <div></div>\n\n          <div>\n            <button onClick={onCancel}>\n              <CloseIcon className=\"\" />\n            </button>\n          </div>\n        </div>\n\n        <div className=\"flex-row flex w-full justify-center items-center\">\n          <img\n            className=\"rounded-lg bg-white w-9 h-9\"\n            src={Images.Pdf}\n            alt=\"\"\n          />\n          <div className=\"h-full flex w-full ml-2 flex-col\">\n            <DashboardTitle label={getInvestors.deal_name} />\n\n            <div className=\"mt-1\">\n              <Menutitletext label={getInvestors.sector} />\n            </div>\n          </div>\n        </div>\n\n        <div className=\"mt-10 grid grid-cols-1 gap-5\">\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIStatusIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"Status\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              <Menutext label={getInvestors.status} />\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIDateIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"AppliedDate\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              <Menutext label={formatDate(getInvestors.applied_date)} />\n            </div>\n          </div>\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIDealIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"Sourceofdeal\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              <Menutext label={getInvestors.source_of_deal} />\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EISectorIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"Sector\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              <Menutext label={getInvestors.sector} />\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIPitchdeckIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"PitchDeckLink\")} />\n              </div>\n            </div>\n            <div\n              className=\"w-3/5 cursor-pointer\"\n              onClick={() => {\n                window.open(getInvestors.pitch_deck_link, \"_blank\");\n              }}\n            >\n              <p className=\"font-PlusJakartaSansRegular break-words  text-blue-500 underline hover:text-blue-700 text-sm\">\n                {getInvestors.pitch_deck_link}\n              </p>\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIBurnIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"Burn\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              {\" \"}\n              <Menutext label={t(\"rupess\") + getInvestors.burn} />\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIBurnIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"ask\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              {\" \"}\n              <Menutext label={t(\"rupess\") + getInvestors.ask} />\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIRevenueIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"Revenue\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              {\" \"}\n              <Menutext label={t(\"rupess\") + getInvestors.revenue} />\n            </div>\n          </div>\n\n          <div className=\"flex flex-row justify-center items-center\">\n            <div className=\"w-2/5 flex flex-row justify-start items-center\">\n              <EIOnepagerIcon className=\"w-6 h-6 flex-shrink-0 \" />\n              <div className=\"ml-4\">\n                {\" \"}\n                <Menutext label={t(\"OnePagerLink\")} />\n              </div>\n            </div>\n            <div className=\"w-3/5\">\n              <Menutext label={getInvestors.one_page_link} />\n            </div>\n          </div>\n        </div>\n        <div className=\"mt-5\">\n          <DashboardTitle label={t(\"Notes\")} />\n          <div className=\"mt-4 border border-mBorderColor rounded-md bg-white\">\n            <textarea\n              id=\"message\"\n              rows=\"5\"\n              value={message}\n              onChange={(e) => setMessage(e.target.value)}\n              // className=\"block h-28 resize-none overflow-y-auto w-full border-black  text-sm break-words text-mTextColor placeholder-mTextColorLogin px-2 py-3 text-start justify-start items-start  rounded-md   font-PlusJakartaSansRegular border-none focus:border-none  bg-white border-4 !outline-none\"\n              className=\"h-32 w-full resize-none overflow-y-auto  border-mBorderColor p-2 rounded-md text-sm break-words text-mTextColor placeholder-mTextColorLogin text-start justify-start items-start font-PlusJakartaSansRegular   bg-white !outline-none\"\n              placeholder={\"Write something...\"}\n            ></textarea>\n          </div>\n        </div>\n        <div className=\"mt-4\">\n          <PrimaryButton\n            label={t(\"save\")}\n            onClick={submitClick}\n            onDisable={isDisable}\n          ></PrimaryButton>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default CRMListDetails;\n","import React, { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\nimport DashboardTitle from \"../../Components/DashboardTitle\";\n\nimport { toast } from \"react-toastify\";\nimport { ReactComponent as MenuIcon } from \"../../assets/Images/ic_menudot.svg\";\nimport { ReactComponent as MenuEditIcon } from \"../../assets/Images/ic_menuedit.svg\";\nimport { ReactComponent as MenuDeleteIcon } from \"../../assets/Images/ic_menudelete.svg\";\nimport Menutext from \"../../Components/Menutext\";\nimport Menutitletext from \"../../Components/Menutitletext\";\nimport { Images } from \"../../Utils/Constants\";\nimport ServiceviewDialog from \"../ServicePage/ServiceviewDialog\";\nimport DeleteDialog from \"../../Components/DeleteDialog\";\nimport {\n  mCRMBoard,\n  mCRMDelete,\n  mCRMList,\n  mCRMStatus,\n  mDeleteCRM,\n  mgetCRMBoard,\n  mMoveCRMBoard,\n} from \"../../Services/allAPI\";\nimport Titletext from \"../../Components/Titletext\";\nimport Loader from \"../../Utils/Loader\";\nimport axios from \"axios\";\nimport CRMListDetails from \"./CRMListDetails\";\n\nconst CRMList = () => {\n  const [dashboarddate, setDashboardData] = useState([]);\n  const menuRef = useRef(null);\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const navigate = useNavigate();\n\n  const [ShowInvestorDetails, setShowInvestorDetails] = useState(false);\n  const [SelectInvestor, setSelectInvestor] = useState({});\n\n  //const [crmdata, setCRMdata] = useState([]);\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  let CRMdataItems = [];\n\n  // Data call\n\n  useEffect(() => {\n    CRMListAPICall();\n  }, []);\n\n  // Service Page API call\n  const CRMListAPICall = async () => {\n    setLoading(true);\n    const response = await mCRMList({\n      user_name: UserInfoData.user_email,\n    });\n    //alert(response.status);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        const dealItem = {\n          title: \"Deal\",\n          items: response?.data.message.investors_board.deal,\n        };\n        CRMdataItems.push(dealItem);\n\n        const contactedItem = {\n          title: \"Contacted\",\n          items: response?.data.message.investors_board.contacted,\n        };\n\n        CRMdataItems.push(contactedItem);\n\n        const evaluatingItem = {\n          title: \"Evaluating\",\n          items: response?.data.message.investors_board.evaluating,\n        };\n\n        CRMdataItems.push(evaluatingItem);\n\n        const diligenceItem = {\n          title: \"Diligence\",\n          items: response?.data.message.investors_board.diligence,\n        };\n\n        CRMdataItems.push(diligenceItem);\n\n        const investmentcommitteeItem = {\n          title: \"Investment Committee\",\n          items: response?.data.message.investors_board.investment_committee,\n        };\n\n        CRMdataItems.push(investmentcommitteeItem);\n\n        const investedItem = {\n          title: \"Invested\",\n          items: response?.data.message.investors_board.invested,\n        };\n\n        CRMdataItems.push(investedItem);\n\n        setColumns(CRMdataItems);\n\n        // console.log(CRMdataItems);\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  //\n  // Close the menu on outside click\n  useEffect(() => {\n    const handleClickOutside = (event) => {\n      if (menuRef.current && !menuRef.current.contains(event.target)) {\n        setActiveMenu(null);\n      }\n    };\n    document.addEventListener(\"mousedown\", handleClickOutside);\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [menuRef]);\n\n  const [columns, setColumns] = useState(CRMdataItems);\n\n  const onDragEnd = (result, columns, setColumns) => {\n    if (!result.destination) return;\n    const { source, destination } = result;\n    if (source.droppableId !== destination.droppableId) {\n      const sourceColumn = columns[source.droppableId];\n      const destColumn = columns[destination.droppableId];\n      const sourceItems = [...sourceColumn.items];\n      const destItems = [...destColumn.items];\n      const [removed] = sourceItems.splice(source.index, 1);\n      destItems.splice(destination.index, 0, removed);\n\n      // console.log(\"Source Index:\", result.draggableId);\n      // console.log(\"Destination Index:\", destColumn.title);\n\n      // toast.success(result.draggableId);\n      // toast.success(destColumn.title);\n\n      ChangeCRMStatusAPICall(result.draggableId, destColumn.title);\n\n      setColumns({\n        ...columns,\n        [source.droppableId]: {\n          ...sourceColumn,\n          items: sourceItems,\n        },\n        [destination.droppableId]: {\n          ...destColumn,\n          items: destItems,\n        },\n      });\n    } else {\n      const column = columns[source.droppableId];\n      const copiedItems = [...column.items];\n      const [removed] = copiedItems.splice(source.index, 1);\n      copiedItems.splice(destination.index, 0, removed);\n      setColumns({\n        ...columns,\n        [source.droppableId]: {\n          ...column,\n          items: copiedItems,\n        },\n      });\n    }\n  };\n\n  // Service Page API call\n  const ChangeCRMStatusAPICall = async (investorid, movedstatus) => {\n    setLoading(true);\n    const response = await mCRMStatus({\n      user_name: UserInfoData.user_email,\n      crm_id: investorid,\n      status: movedstatus,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        // console.log(CRMdataItems);\n        toast.success(response?.data.message.message);\n        CRMListAPICall();\n      } else {\n        toast.error(response?.data.message.message);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  const [gridshow, setGridShow] = useState(true);\n\n  const listclick = () => {\n    setGridShow(false);\n  };\n\n  const gridclick = () => {\n    setGridShow(true);\n  };\n\n  // Drag and drop end\n\n  const menuClick = (item) => {\n    setActiveMenu(activeMenu === item.id ? null : item.id);\n  };\n  const clickEdit = (item, event) => {\n    // alert(`Edit ${item.Task}`);\n    setSelectInvestor(item);\n    setActiveMenu(null);\n    setShowInvestorDetails(true);\n  };\n\n  const clickClose = () => {\n    setShowInvestorDetails(false);\n  };\n\n  const clickRefresh = () => {\n    setShowInvestorDetails(false);\n    CRMListAPICall();\n  };\n\n  const clickDelete = (item, event) => {\n    setActiveMenu(null);\n    setSelectInvestor(item);\n    setIsDialogOpen(true);\n  };\n  const [activeMenu, setActiveMenu] = useState(null);\n\n  //Delete dialog\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n\n  const closeDialog = () => {\n    setIsDialogOpen(false);\n  };\n\n  const confirmDelete = () => {\n    // Perform delete action here\n    console.log(\"Item deleted\");\n    closeDialog();\n\n    DeleteAPICall();\n  };\n\n  // Service Page API call\n  const DeleteAPICall = async () => {\n    setLoading(true);\n    const response = await mCRMDelete({\n      user_name: UserInfoData.user_email,\n      crm_id: SelectInvestor.id,\n      delete: 1,\n      status: SelectInvestor.status,\n    });\n    //console.log(response);\n    if (response.status === 200) {\n      setLoading(false);\n      if (response?.data.message.status) {\n        toast.success(response?.data.message.message);\n        clickRefresh();\n      } else {\n        toast.error(response?.data.message.status);\n      }\n    } else {\n      const errorMessage = response.data?.message || \"Server Error\";\n      toast.error(errorMessage);\n      setLoading(false);\n      //  console.log(\"Error\");\n    }\n  };\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div>\n          <p className=\"ml-5 font-PlusJakartaSansRegular text-mTextColorLogin text-sm\">\n            *Drag and drop the card to change its status\n          </p>\n\n          <DragDropContext\n            onDragEnd={(result) => onDragEnd(result, columns, setColumns)}\n          >\n            <div className=\"flex  md:mr-5\">\n              <div className=\"m-2 md:flex w-full md:min-h-svh \">\n                {Object.entries(columns).map(([columnId, column], index) => {\n                  return (\n                    <Droppable key={columnId} droppableId={columnId}>\n                      {(provided, snapshot) => (\n                        <div\n                          className=\"min-h-28 flex flex-col bg-white w-full md:min-w-80 rounded-2xl p-2 md:mr-4 mb-4 md:mb-1\"\n                          ref={provided.innerRef}\n                          {...provided.droppableProps}\n                        >\n                          <div className=\"p-2\">\n                            <DashboardTitle label={column.title} />\n                          </div>\n                          {column.items.length !== 0 ? (\n                            column.items.map((item, index) => (\n                              <Draggable\n                                key={item.id}\n                                draggableId={item.id}\n                                index={index}\n                              >\n                                {(provided, snapshot) => (\n                                  <div\n                                    className=\"p-2  rounded-lg mb-2 relative\"\n                                    ref={provided.innerRef}\n                                    {...provided.draggableProps}\n                                    {...provided.dragHandleProps}\n                                  >\n                                    {/* bg-mMenuSelect */}\n                                    <div className=\"flex min-h-28 flex-col justify-start items-start p-4 bg-mMenuSelect mt-3 rounded-xl w-full\">\n                                      <div\n                                        className=\"flex-row flex h-full w-full justify-center items-center\"\n                                        onClick={() => clickEdit(item)}\n                                      >\n                                        <img\n                                          src={Images.Pdf}\n                                          alt=\"Profile\"\n                                          className=\"cursor-pointer w-11 h-11\"\n                                        />\n                                        <div className=\"h-full flex w-full ml-2 flex-col\">\n                                          <Menutext label={item.deal_name} />\n\n                                          <div className=\"mt-1\">\n                                            <Menutitletext\n                                              label={item.sector}\n                                            />\n                                          </div>\n                                        </div>\n                                      </div>\n                                      <div className=\"mt-4 flex flex-row justify-between items-center w-full \">\n                                        <div>\n                                          <p\n                                            className={`font-PlusJakartaSansRegular ${\n                                              column.title === \"Shortlisted\"\n                                                ? \"text-Shortlisted\"\n                                                : column.title === \"Contacted\"\n                                                ? \"text-Contacted\"\n                                                : column.title === \"Pitched\"\n                                                ? \"text-Pitched\"\n                                                : \"text-Won\"\n                                            } text-mTextColorLogin text-base`}\n                                          >\n                                            {column.title}\n                                          </p>\n                                        </div>\n                                        <div className=\"cursor-pointer\">\n                                          <MenuIcon\n                                            className=\"w-6 h-6 flex-shrink-0 \"\n                                            onClick={() => menuClick(item)}\n                                          />\n                                        </div>\n                                      </div>\n                                    </div>\n                                    {activeMenu === item.id && (\n                                      <div\n                                        className=\"absolute right-0 mt-1 w-40 bg-white p-3 rounded-xl shadow shadow-mChatbg z-10\"\n                                        ref={menuRef}\n                                      >\n                                        <ul>\n                                          <li\n                                            className=\"px-2 py-2  cursor-pointer\"\n                                            onClick={() => clickEdit(item)}\n                                          >\n                                            <div className=\"flex flex-row justify-start items-center\">\n                                              <MenuEditIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                                              <p className=\"font-PlusJakartaSansRegular  text-mTextColorLogin text-base ml-3\">\n                                                {t(\"EditDetails\")}{\" \"}\n                                              </p>\n                                            </div>\n                                          </li>\n                                          <li\n                                            className=\"px-2 py-2 mt-2 cursor-pointer\"\n                                            onClick={() => clickDelete(item)}\n                                          >\n                                            <div className=\"flex flex-row justify-start items-center\">\n                                              <MenuDeleteIcon className=\"w-5 h-5 flex-shrink-0 \" />\n                                              <p className=\"font-PlusJakartaSansRegular  text-mTextColorLogin text-base ml-3\">\n                                                {t(\"Delete\")}{\" \"}\n                                              </p>\n                                            </div>\n                                          </li>\n                                        </ul>\n                                      </div>\n                                    )}\n                                  </div>\n                                )}\n                              </Draggable>\n                            ))\n                          ) : (\n                            <div className=\"w-full h-full justify-center items-center flex mt-5 md:mt-0\">\n                              <Titletext label={t(\"nodata\")} />\n                            </div>\n                          )}\n\n                          {provided.placeholder}\n                        </div>\n                      )}\n                    </Droppable>\n                  );\n                })}\n              </div>\n            </div>\n          </DragDropContext>\n\n          {ShowInvestorDetails ? (\n            <CRMListDetails\n              show={ShowInvestorDetails}\n              onCancel={clickClose}\n              clickRefresh={clickRefresh}\n              getInvestors={SelectInvestor}\n            />\n          ) : (\n            <div></div>\n          )}\n\n          {/* Delete Confirmation Dialog */}\n          <DeleteDialog\n            isOpen={isDialogOpen}\n            onCancel={closeDialog}\n            onConfirm={confirmDelete}\n            title={\"Delete Confirmation\"}\n            message={\" Are you sure you want to delete this item? \"}\n          />\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default CRMList;\n","import React, { useEffect } from \"react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport Loader from \"../../Utils/Loader\";\nimport SideMenu from \"../../Components/SideMenu\";\nimport { mInvestordb } from \"../../Services/allAPI\";\nimport { toast } from \"react-toastify\";\nimport { useSelector } from \"react-redux\";\nimport HeaderMenu from \"../../Components/HeaderMenu\";\nimport Deals from \"./Deals\";\nimport CRMList from \"./CRMList\";\n\nconst InvestorCRM = () => {\n  const { t } = useTranslation(\"\");\n  const [loading, setLoading] = useState(false);\n  const navigate = useNavigate();\n  const [boardView, setBoardView] = useState(true);\n  const [values, setValues] = useState([1, 10]);\n  const [isChecked, setisChecked] = useState(false);\n  const [investordb, setinvestordb] = useState([]);\n\n  const user = useSelector((state) => state.userInfo.user);\n\n  console.log(\"Get User :\" + user);\n\n  //Get User Details\n  const UserInfoData =\n    localStorage.getItem(\"UserInfo\") !== null\n      ? JSON.parse(localStorage.getItem(\"UserInfo\"))\n      : {};\n\n  //\n  useEffect(() => {}, []);\n\n  const onBoardClick = () => {\n    // Handle the cancel action\n    setBoardView(false);\n  };\n  const onInvestorsClick = () => {\n    // Handle the cancel action\n    setBoardView(true);\n  };\n\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div>\n          <div className=\"flex h-screen overflow-hidden bg-mDashboardBg  bg-no-repeat bg-cover\">\n            {/* Sidebar */}\n            <SideMenu mFrom={2} mProfile={-1} />\n\n            {/* Main content */}\n            <div className=\"flex flex-col flex-grow overflow-hidden \">\n              {/* Top Navigation */}\n\n              <HeaderMenu title={t(\"InvestorsCRM\")} />\n\n              <div className=\"p-4 mt-4 flex\">\n                <div\n                  className={`${\n                    boardView ? \"bg-mButtonColorligth\" : \"bg-white\"\n                  } rounded-md px-6 py-3 inline-block max-w-xs  cursor-pointer`}\n                  onClick={() => onInvestorsClick()}\n                >\n                  <p\n                    className={`font-PlusJakartaSansRegular ${\n                      boardView ? \"text-mButtonColor\" : \"text-mTextColorLogin\"\n                    }  text-base `}\n                  >\n                    {t(\"Deals\")}\n                  </p>\n                </div>\n\n                <div\n                  className={` ${\n                    boardView ? \"bg-white\" : \"bg-mButtonColorligth\"\n                  } rounded-md px-10 py-3 inline-block max-w-xs cursor-pointer  ml-5 lg:ml-10 mr-2`}\n                  onClick={() => onBoardClick()}\n                >\n                  <p\n                    className={`font-PlusJakartaSansRegular ${\n                      boardView ? \"text-mTextColorLogin\" : \"text-mButtonColor\"\n                    }  text-base `}\n                  >\n                    {t(\"crm\")}\n                  </p>\n                </div>\n              </div>\n\n              {/* Scrollable content */}\n              <main className=\"flex-grow overflow-auto  mt-1 mb-3  px-4 \">\n                {/* Adjusted padding top to avoid overlap */}\n                {boardView ? <Deals /> : <CRMList />}\n              </main>\n            </div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default InvestorCRM;\n","import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport { BrowserRouter as Router, Routes, Route } from \"react-router-dom\";\nimport \"./index.css\";\nimport \"./App.css\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport \"./Utils/IMLocalize\";\nimport { ToastContainer } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport Dashboard from \"./Screens/Dashboard/Dashboard\";\nimport Deckdetails from \"./Screens/DeckDetails/Deckdetails\";\n\nimport { Provider } from \"react-redux\";\nimport store from \"./redux/Store\";\nimport PrivateRoute from \"./Services/PrivateRoute\";\nimport { GoogleOAuthProvider } from \"@react-oauth/google\";\nimport ResetPassword from \"./Screens/ResetPassword/ResetPassword\";\nimport ResetPasswordOTP from \"./Screens/ResetPassword/ResetPasswordOTP\";\nimport Login from \"./Screens/Login/Login\";\nimport Signup from \"./Screens/Signup/Signup\";\nimport Uploadpicthdeck from \"./Screens/Onboarding/Uploadpicthdeck\";\nimport Deckscore from \"./Screens/Onboarding/Deckscore\";\nimport MyDecks from \"./Screens/MyDecks/MyDecks\";\nimport ServicePage from \"./Screens/ServicePage/ServicePage\";\nimport ValutPage from \"./Screens/Valut/ValutPage\";\nimport ValutDetails from \"./Screens/Valut/ValutDetails\";\nimport InvestorsCRM from \"./Screens/StartupCRM/StartupCRM\";\nimport Subscription from \"./Screens/Subscription/Subscription\";\nimport ProfilePage from \"./Screens/Profile/ProfilePage\";\nimport HelpSupport from \"./Screens/Help/HelpSupport\";\nimport Zenchat from \"./Screens/ZenChat/Zenchat\";\nimport Question from \"./Screens/Onboarding/Question\";\nimport SuggestingInvestors from \"./Screens/StartupCRM/SuggestingStartupInvestors\";\nimport InvestorDashboard from \"./Screens/Dashboard/InvestorDashboard\";\nimport StartupCRM from \"./Screens/StartupCRM/StartupCRM\";\nimport SuggestingStartupInvestors from \"./Screens/StartupCRM/SuggestingStartupInvestors\";\nimport InvestorCRM from \"./Screens/InvestorsCRM/InvestorCRM\";\n\nconst root = ReactDOM.createRoot(document.getElementById(\"root\"));\n\n// August 14th, 2024 6:00 PM\n\nroot.render(\n  // <React.StrictMode>\n  // <React.StrictMode>\n  <GoogleOAuthProvider clientId=\"418560784218-cooa4gvsddrbkar0e832ulnolobl4rvf.apps.googleusercontent.com\">\n    <Provider store={store}>\n      <Router>\n        <ToastContainer\n          position=\"top-right\"\n          autoClose={1000}\n          hideProgressBar={false}\n          newestOnTop={false}\n          closeOnClick\n          pauseOnFocusLoss\n          draggable\n          pauseOnHover\n          theme=\"light\"\n        />\n        <Routes>\n          {/* Home Page */}\n          <Route path=\"/\" element={<Uploadpicthdeck />} />\n\n          {/* Login & Signup */}\n          <Route path=\"/login\" element={<Login />} />\n          <Route path=\"/signup\" element={<Signup />} />\n          <Route path=\"/resetpassword\" element={<ResetPassword />} />\n          <Route path=\"/resetpasswordotp\" element={<ResetPasswordOTP />} />\n\n          {/* <Route path=\"/deckupload\" element={<Uploadpicthdeck />} /> */}\n\n          {/* <Route path=\"/chat\" element={<Zenchat />} /> */}\n\n          <Route element={<PrivateRoute />}>\n            {/* Onboarding Flow */}\n            <Route path=\"/deckscore\" element={<Deckscore />} />\n            <Route path=\"/question\" element={<Question />} />\n            <Route\n              path=\"/suggestedinvestors\"\n              element={<SuggestingStartupInvestors />}\n            />\n\n            {/* Dashboard */}\n            <Route path=\"/dashboard\" element={<Dashboard />} />\n\n            {/* Investor Dashboard */}\n            <Route path=\"/investordashboard\" element={<InvestorDashboard />} />\n\n            {/* Review Deck */}\n            <Route path=\"/mydecks\" element={<MyDecks />} />\n            <Route path=\"/deckdetails\" element={<Deckdetails />} />\n\n            {/* Service */}\n            <Route path=\"/service\" element={<ServicePage />} />\n\n            {/* Valut Page */}\n            <Route path=\"/valut\" element={<ValutPage />} />\n            <Route path=\"/valutdetails\" element={<ValutDetails />} />\n\n            {/* Investors CRM */}\n            <Route path=\"/startupcrm\" element={<StartupCRM />} />\n\n            {/* Profile */}\n            <Route path=\"/subscription\" element={<Subscription />} />\n            <Route path=\"/profile\" element={<ProfilePage />} />\n            <Route path=\"/help\" element={<HelpSupport />} />\n\n            {/* Chat */}\n            <Route path=\"/chat\" element={<Zenchat />} />\n\n            {/* Investor CRM */}\n            <Route path=\"/investorscrm\" element={<InvestorCRM />} />\n          </Route>\n        </Routes>\n      </Router>\n    </Provider>\n  </GoogleOAuthProvider>\n  // {/* </React.StrictMode> */}\n  // </React.StrictMode>\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"names":["exports","file","acceptedFiles","acceptedFilesArray","Array","isArray","split","fileName","name","mimeType","type","toLowerCase","baseMimeType","replace","some","validType","trim","charAt","endsWith","reactIs","require","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","length","prototype","caller","callee","arguments","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","Object","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","module","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","concat","targetStatics","sourceStatics","i","key","descriptor","e","b","Symbol","for","c","d","f","g","h","k","l","m","n","p","q","r","t","v","w","x","y","z","a","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","DataView","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","index","this","clear","entry","set","get","has","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","Promise","Set","setCacheAdd","setCacheHas","SetCache","values","__data__","add","push","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","data","size","Uint8Array","WeakMap","array","predicate","resIndex","result","value","baseTimes","isArguments","isBuffer","isIndex","isTypedArray","hasOwnProperty","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","call","offset","eq","arrayPush","object","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","toStringTag","undefined","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","other","bitmask","customizer","stack","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","isFunction","isMasked","isObject","toSource","reIsHostCtor","funcProto","Function","objectProto","funcToString","toString","reIsNative","RegExp","test","isLength","typedArrayTags","isPrototype","nativeKeys","iteratee","func","cache","coreJsData","arraySome","cacheHas","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","symbolProto","symbolValueOf","valueOf","tag","byteLength","byteOffset","buffer","message","convert","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objValue","objCtor","constructor","othCtor","freeGlobal","global","baseGetAllKeys","getSymbols","isKeyable","map","baseIsNative","getValue","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","propertyIsEnumerable","nativeGetSymbols","symbol","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","resolve","Ctor","ctorString","nativeCreate","reIsUint","maskSrcKey","uid","exec","IE_PROTO","assocIndexOf","splice","pop","getMapData","forEach","overArg","freeExports","nodeType","freeModule","freeProcess","process","nodeUtil","types","binding","transform","arg","freeSelf","self","root","pairs","LARGE_ARRAY_SIZE","baseIsArguments","stubFalse","Buffer","baseIsTypedArray","baseUnary","nodeIsTypedArray","arrayLikeKeys","baseKeys","isArrayLike","useLottie","props","style","animationData","loop","autoplay","initialSegment","onComplete","onLoopComplete","onEnterFrame","onSegmentStart","onConfigReady","onDataReady","onDataFailed","onLoadedImages","onDOMLoaded","onDestroy","lottieRef","renderer","assetsPath","rendererSettings","rest","_objectWithoutProperties","_excluded$1","_useState2","_slicedToArray","React","useState","animationLoaded","setAnimationLoaded","animationInstanceRef","useRef","animationContainer","play","_a","current","stop","pause","setSpeed","speed","goToAndPlay","isFrame","goToAndStop","setDirection","direction","playSegments","segments","forceFlag","setSubframe","useSubFrames","getDuration","inFrames","destroy","loadAnimation","forcedConfigs","config","_objectSpread2","container","lottie__default","useEffect","onUnmount","currentRawFrame","setSegment","resetSegments","listeners","handler","filter","listener","deregisterList","addEventListener","removeEventListener","deregister","View","React__default","createElement","ref","animationContainerRef","animationItem","getContainerVisibility","_container$getBoundin","getBoundingClientRect","top","height","window","innerHeight","getContainerCursorPosition","cursorX","cursorY","_container$getBoundin2","left","width","useInitInteractivity","_ref","wrapperRef","mode","actions","wrapper","scrollModeHandler","assignedSegment","scrollHandler","currentPercent","action","find","_ref2","visibility","frames","frameToGo","Math","ceil","firstFrame","isPaused","document","cursorModeHandler","handleCursor","_x","_y","pos","_ref3","position","Number","isNaN","xPercent","yPercent","mouseMoveHandler","ev","clientX","clientY","mouseOutHandler","useLottieInteractivity","_ref4","lottieObj","Lottie","_b","_c","interactivity","lottieProps","_excluded","_useLottie","factory","navigator","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","sources","destination","sourcePrototype","len","attr","getDescriptor","prop","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","resume","setRate","rateValue","createAudio","assetPath","Howl","src","isPlaying","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","arr","Uint8ClampedArray","Float32Array","Int16Array","createSizedArray","apply","_typeof$6","obj","iterator","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","userAgent","_shouldRoundValues","bmPow","pow","bmSqrt","sqrt","bmFloor","floor","bmMax","max","bmMin","min","BMMath","ProjectInterface$1","propertyNames","random","abs","val","absArr","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","bmRnd","round","styleDiv","element","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","totalFrames","BMDestroyEvent","target","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","s","RGBtoHSV","addSaturationToRGB","color","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createNS","createElementNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","path","_workerSelf","setupWorker","fn","Worker","Blob","blob","url","URL","createObjectURL","createWorker","completeLayers","layers","comps","layerData","j","jLen","kLen","completed","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeShapes","shapes","completeText","id","comp","findComp","__used","JSON","parse","stringify","ks","it","o","checkVersion","minimum","animVersionString","animVersion","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","assets","checkChars","chars","charData","ip","op","st","sr","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","checkShapes","completeClosingShapes","closed","cl","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseType","indexOf","response","responseText","load","fullPath","callback","errorCallback","XMLHttpRequest","err","onreadystatechange","readyState","status","open","join","error","send","completeData","payload","animation","event","onError","createProcess","processId","location","origin","pathname","loadData","completeAnimation","anim","ImagePreloader","proxyImage","canvas","ctx","getContext","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","originalPath","imagePath","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","bind","createFootageData","ob","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","cb","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","append","appendChild","setCacheType","elementHelper","BaseEvent","triggerEvent","eventName","args","_cbs","callbacks","markerParser","parsePayloadLines","line","lines","keysCount","Error","_markers","markers","_marker","markerData","time","tm","duration","dr","cm","_","__","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","xt","currentFrame","compInterface","renderers","registerRenderer","getRenderer","getRegisteredRenderer","_typeof$4","AnimationItem","isLoaded","frameRate","frameMult","playSpeed","playDirection","playCount","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","params","animType","RendererClass","globalData","defs","setProjectInterface","parseInt","autoloadSegments","setupAnimation","lastIndexOf","substr","trigger","setData","wrapperAttributes","attributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","setTimeout","rendererType","initItems","gotoFrame","resize","_width","_height","updateContainerSize","renderFrame","resetFrame","triggerRenderFrameError","togglePause","setCurrentRawFrameValue","getMarkerData","markerName","marker","numValue","frameModifier","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","init","end","pendingFrame","setLoop","isLooping","getPath","getAssetData","hide","show","updateDocumentData","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","animItem","subtractPlayingCount","registerAnimation","elem","addPlayingCount","activate","nowTime","elapsedTime","requestAnimationFrame","first","searchAnimations","standalone","animElements","slice","getElementsByClassName","lenAnims","setAttribute","body","getElementsByTagName","innerText","div","freeze","unfreeze","getRegisteredAnimations","animations","BezierFactory","str","beziers","bezEasing","BezierEasing","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","B","C","calcBezier","aT","getSlope","points","_p","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","lastSample","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","pooling","poolFactory","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","bezierLengthPool","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","point","lastPoint","lengthData","BezierData","segmentLength","PointData","partial","partialLength","buildBezierData","storedData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","getNewSegment","startPerc","endPerc","t0","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","bez","initFrame","mathAbs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","lastIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","to","ti","ind","__fnct","getBezierEasing","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quaternionToEuler","slerp","createQuaternion","omega","cosom","sinom","scale0","scale1","out","ax","ay","az","aw","bx","by","bz","bw","acos","sin","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","c1","cos","c2","c3","s1","s2","s3","getValueAtCurrentTime","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","arrLen","PropertyFactory","getProp","sid","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","clone","shape","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","paths","localShapeCollection","shape1","shape2","shapesEqual","ShapeProperty","reset","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","p1","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","sy","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","or","os","rad","roundness","perimSegment","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","Matrix","_cos","_sin","_tan","tan","_rnd","rotate","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","scale","sz","setTransform","translate","tx","tz","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_identityCalculated","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","multiply","matrix","matrixProps","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_typeof$3","lottie","setLocation","href","setSubframeRendering","setPrefix","prefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","useWebWorker","setIDPrefix","__getFactory","version","scripts","myScript","define","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShape","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","amount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","px","py","pz","rx","ry","rz","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","delta","polynomialCoefficients","p3","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","t2","box","boundingBox","cx","cy","splitData","boxIntersect","intersectsImpl","depth","tolerance","intersections","maxRecursion","d1s","d2s","crossProduct","lineIntersection","start1","end1","start2","end2","v3","v4","polarOffset","pointDistance","hypot","ZigZagModifier","setPoint","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","getProjectingAngle","cur","prevIndex","nextIndex","pVector","zigZagCorner","frequency","pointType","prevPoint","nextPoint","prevDist","nextDist","zigZagSegment","dist","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","center","radius","intersection","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","right","mid","flex","inflectionPoints","OffsetPathModifier","getFontProperties","fontData","styles","fStyle","fWeight","weight","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","unshift","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","hasReloaded","copies","group","ix","reloadShapes","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","rd","currentV","currentI","currentO","closerV","distance","newPosPerc","derivative","denom","tcusp","square","p10","p11","p20","p21","bounds","bottom","shapeSegmentInverted","pointsType","count","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","combinedCharacters","BLACK_FLAG_CODE_POINT","REGIONAL_CHARACTER_A_CODE_POINT","REGIONAL_CHARACTER_Z_CODE_POINT","surrogateModifiers","setUpNode","font","family","parentNode","fontFamily","node","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","familyArray","enabledFamilies","trimFontOptions","parent","createHelper","def","helper","engine","fontProps","tHelper","fFamily","textContent","fClass","tCanvasHelper","OffscreenCanvas","measureText","text","getComputedTextLength","getCodePoint","string","codePoint","charCodeAt","second","isRegionalCode","Font","typekitLoaded","_warned","Date","now","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","isVariationSelector","fontPrototype","found","ch","list","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","querySelectorAll","rel","sc","getCharData","_char","console","warn","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","removeChild","SlotManager","slotFactory","RenderableElement","slots","assign","initRenderable","isInRange","hidden","isTransparent","renderableComponents","addRenderableComponent","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effects","ef","effectElements","effectItem","GroupEffect","BaseElement","FrameElement","FootageElement","imageLoader","initBaseData","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","BaseRenderer","eff","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","content","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","layerId","effectsManager","getType","prepareProperties","isVisible","_isParent","getBaseElement","FootageInterface","getFootageData","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","getElementById","pathValue","setupGlobalData","fontsContainer","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","rect","expansor","feMorph","properties","currentMasks","maskType","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","mask","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","renderLocalTransform","localTransforms","lmat","localOp","opacity","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","transforms","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","source","createFilter","filters","Effect","effect","countsAsEffect","registerEffect$1","SVGBaseElement","HierarchyElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","td","matteMasks","gg","tt","ln","hd","cp","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","getMatte","matteType","useElement","masker","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","initHierarchy","checkParenting","createContent","renderInnerContent","innerElem","pr","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","level","caches","lStr","lvl","SVGStyleData","pElem","msElem","DashProperty","dataProps","dashStr","dashArray","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","SVGTransformData","comparePoints","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ms","ost","buildShapeString","_o","_i","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderNoop","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","createRenderFunction","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","fc","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","update","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","newLineFlag","letters","anchorGrouping","currentSize","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","anIndexes","animatorJustifyOffset","extra","animatorData","letterData","based","animators","indexes","fh","fs","fb","rn","totalChars","newInd","currentInd","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","getMult","textProperty","easer","tot","smoothness","threshold","newCharsFlag","divisor","getTextSelectorProp","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","ITextElement","searchProperties","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","tanAngle","matrixHelper","renderedLettersCount","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","atan","textAnimator","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","svgElement","ariaLabel","title","titleElement","titleId","description","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","className","focusable","filterSize","runExpressions","destroyed","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","fromCharCode","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","span","childSpan","glyph","glyphElement","_debug","tElement","justify","textBox","bbox","renderedLetter","textSpan","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","insertBefore","setElements","getElements","destroyElements","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","svg","loadLuma","_svg","createLumaSvgFilter","createCanvas","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","registerEffect","CVMaskElement","hasMasks","CVBaseElement","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","clip","operationsMap","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","CVTextElement","stroke","fill","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","strokeStyle","lineCap","CVContextData","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","clearCanvas","context","dpr","devicePixelRatio","currentGlobalAlpha","contextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","HCameraElement","pe","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","hideElement","showElement","clearRect","prepareLayer","bufferCtx","drawImage","getTransform","exitLayer","forceRealStack","restore","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","grd","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","globalAlpha","rule","actionFlag","containerStyle","mozTransformOrigin","setContext","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","fillType","duplicate","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","checkBlendMode","tg","transformedElementStyle","matrixValue","webkitTransform","addEffects","backgroundColor","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","item","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","lineHeight","tParent","tCont","children","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","setup","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","Image","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","overflow","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","nodecrypto","rngname","startdenom","significance","ARC4","keylen","me","S","copy","flatten","typ","mixkey","seed","smear","stringseed","tostring","options","shortseed","entropy","randomBytes","crypto","msCrypto","getRandomValues","browser","plugins","screen","autoseed","arc4","prng","int32","quick","pass","is_math_call","state","initialize$2","SHAPE","_typeof$1","ExpressionManager","fetch","_lottieGlobal","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","clamp","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","arr2","normalize","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","property","noOp","_value","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","active","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedrandom","randSeed","substring","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskManagerInterface","MaskInterface","_mask","_data","_masksInterfaces","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","defaultGetter","UnidimensionalPropertyInterface","MultidimensionalPropertyInterface","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","anchorPointDescriptor","defineProperties","anchor_point","startTime","_name","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","createGroupInterface","groupInterface","mn","_propertyGroup","createValueInterface","numProperties","np","enabled","en","expressionProperty","setGroupProperty","effectsData","ShapePathInterface","view","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","interfaces","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","start","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_sourceText","sourceText","stringValue","fillColor","_typeof","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","lastTime","propertyGetShapeProp","trims","initialize$1","addDecorator","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","initialize","SVGComposableEffect","createMergeNode","resultId","ins","feMergeNode","feMerge","linearFilterValue","SVGTintFilter","linearFilter","matrixFilter","SVGFillFilter","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","colorBlack","colorWhite","groupPath","elemChildren","childNodes","removeAttribute","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","TransformEffect","SVGTransformEffect","CVTransformEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","sigma","dimensions","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","from","symbols","TypeError","toObject","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","bool","number","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","exact","checkPropTypes","PropTypes","aa","ca","encodeURIComponent","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","ra","toUpperCase","ta","pa","qa","oa","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","match","Na","Oa","prepareStackTrace","Reflect","construct","includes","Pa","Qa","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","configurable","enumerable","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","ownerDocument","eb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","MSApp","execUnsafeLocalFunction","lastChild","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","qb","rb","sb","setProperty","tb","menuitem","area","base","br","embed","hr","input","keygen","link","meta","param","track","wbr","ub","vb","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","oc","clz32","pc","qc","log","LN2","rc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","pd","qd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","ud","detail","vd","Ad","screenX","screenY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","code","repeat","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","date","datetime","email","month","password","range","search","tel","week","oe","qe","re","se","te","ue","ve","we","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","$e","af","bf","cf","df","ff","hf","lf","mf","nf","Ub","instance","D","pf","qf","rf","sf","capture","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","clearTimeout","Hf","Jf","queueMicrotask","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_owner","_stringRef","refs","Mg","Ng","Og","Pg","Qg","Rg","implementation","Sg","Tg","next","done","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","_currentValue","bh","childLanes","dependencies","firstContext","lanes","dh","eh","memoizedValue","gh","hh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","mh","eventTime","lane","nh","K","oh","ph","qh","rh","th","uh","vh","wh","xh","yh","tagName","zh","Ah","Bh","L","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","M","N","O","Ih","Jh","Kh","Lh","P","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","Q","di","lastEffect","stores","ei","fi","gi","hi","ii","create","deps","ji","ki","li","mi","ni","oi","qi","ri","si","ui","vi","xi","yi","zi","Ai","R","Bi","readContext","useCallback","useContext","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","digest","Ki","Li","Mi","Ni","Oi","Pi","Qi","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","xj","Dj","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","autoFocus","createTextNode","T","Gj","Hj","Ij","Jj","U","Kj","WeakSet","V","Lj","W","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","_reactRootContainer","Wj","X","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","Vk","lk","mk","nk","ok","Y","Z","pk","qk","rk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","al","mutableSourceEagerHydrationData","bl","pendingSuspenseBoundaries","dl","el","fl","gl","hl","il","yj","Zk","kl","reportError","ll","_internalRoot","nl","ol","pl","rl","ql","unmount","unstable_scheduleHydration","form","sl","usingClientEntryPoint","Events","tl","findFiberByHostInstance","bundleType","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","hasElementType","hasMap","hasSet","hasArrayBuffer","isView","equal","_isEqual","__esModule","default","_react","useDeepCompareMemo","toCompare","reference","_default","drawNeedle","_d","_utils","prevProps","needle","needleColor","needleBaseColor","hideText","animate","needleScale","textComponent","needleRadius","selectAll","remove","prevPercent","pathStr","calculateRotation","addText","delay","animDelay","easeElastic","animateDuration","tween","interpolateNumber","percentOfPercent","progress","select","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc","_interopRequireWildcard","_propTypes","_interopRequireDefault","_renderChart","_drawNeedle","_customHooks","ownKeys","enumerableOnly","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","writable","startAngle","endAngle","animateNeedleProps","marginInPercent","cornerRadius","nrOfLevels","arcPadding","arcWidth","colors","formatTextValue","customNeedleComponent","GaugeChart","initialProps","doughnut","nbArcsToDisplay","colorArray","arcChart","arc","arcData","pieChart","pie","selectedRef","initChart","renderChart","sort","setArcData","arcsLength","every","handleResize","textComponentContainerClassName","customNeedleStyle","customNeedleComponentClassName","updateDimensions","calculateRadius","padAngle","enter","centerGraph","divDimensions","divWidth","divHeight","needleLength","theta","percentToRad","topPoint","leftPoint","rightPoint","percentage","floatingNumber","getColors","arcDatum","colorScale","scaleLinear","domain","interpolate","interpolateHsl","maxDigits","ex","canUseDOM","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","subClass","superClass","__proto__","peek","rewind","recordedState","_proto","PureComponent","getDisplayName","__self","__source","jsx","jsxs","setState","forceUpdate","escape","_status","_result","Children","toArray","only","Component","act","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","ascending","NaN","descending","bisector","compare1","compare2","lo","zero","ascendingBisect","bisectRight","bisectLeft","bisectCenter","blur","RangeError","blurf","temp","blur2","Blur2","blurImage","step","blurx","blury","blurh","blurv","radius0","bluri","valueof","empty","arrayify","cross","_len","_key","reduce","reducer","product","cumsum","Float64Array","variance","mean","deviation","extent","Adder","_partials","_n","fsum","adder","fcumsum","InternMap","keyof","super","_intern","intern_get","intern_set","intern_delete","InternSet","identity","nest","groups","_len2","_key2","flatMap","flatGroup","_len3","_key3","flatRollup","_len4","_key4","rollups","rollup","_len5","_key5","_len6","_key6","_len7","_key7","unique","_len8","_key8","regroup","permute","Uint32Array","ascendingDefined","compareDefined","groupSort","av","bv","_ref5","constant","e10","e5","tickSpec","power","log10","factor","inc","ticks","tickIncrement","tickStep","nice","prestep","isFinite","thresholdSturges","bin","sturges","histogram","xz","x0","tn","bins","bisect","thresholds","maxIndex","minIndex","quickselect","exp","swap","greatest","defined","maxValue","quantile","numbers","i0","value0","subarray","quantileSorted","quantileIndex","thresholdFreedmanDiaconis","thresholdScott","cbrt","median","medianIndex","merge","arrays","counts","modeValue","modeCount","pairof","previous","rank","compareIndex","least","minValue","leastIndex","greatestIndex","scan","shuffler","transpose","row","zip","mapper","difference","others","disjoint","superset","io","intern","ivalue","subset","union","epsilon","translateX","translateY","bandwidth","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","format","spacing","range0","range1","selection","tick","tickExit","exit","tickEnter","insert","getAttribute","each","tickSize","axisTop","axisRight","axisBottom","axisLeft","noop","Dispatch","on","typename","that","none","selector","querySelector","matches","childMatcher","childFirst","firstElementChild","EnterNode","datum","_next","_parent","bindIndex","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","arraylike","xhtml","xlink","xml","xmlns","namespaces","space","local","attrRemove","attrRemoveNS","fullname","removeAttributeNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","styleRemove","removeProperty","styleConstant","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","_node","_names","classedAdd","names","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textConstant","textFunction","htmlRemove","htmlConstant","htmlFunction","raise","lower","creatorInherit","uri","creatorFixed","namespace","constantNull","selection_cloneShallow","cloneNode","selection_cloneDeep","onRemove","__on","onAdd","contextListener","CustomEvent","createEvent","initEvent","dispatchConstant","dispatchFunction","Selection","parents","_parents","subgroups","subnode","subgroup","arrayAll","selectorAll","selectChild","childFind","selectChildren","childrenFilter","matcher","enterGroup","updateGroup","_enter","_exit","sparse","onenter","onupdate","onexit","groups0","groups1","m0","merges","group0","group1","compareNode","sortgroups","sortgroup","getAttributeNS","classed","html","creator","before","deep","typenames","parseTypenames","nonpassive","nonpassivecapture","nopropagation","stopImmediatePropagation","noevent","__noselect","MozUserSelect","yesdrag","noclick","definition","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","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgba","hsla","rgbConvert","rgb_formatHex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","hsl","clamph","clampt","hsl2rgb","basis","t3","channels","displayable","formatHex8","formatHsl","hue","nogamma","exponential","rgbGamma","colorRgb","rgbSpline","spline","rgbBasis","rgbBasisClosed","basisClosed","isNumberArray","numberArray","genericArray","setTime","reA","reB","am","bs","one","sourceEvent","ownerSVGElement","createSVGPoint","matrixTransform","getScreenCTM","inverse","clientLeft","clientTop","taskHead","taskTail","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","setFrame","clearNow","Timer","_call","_time","timer","restart","timerFlush","wake","sleep","nap","poke","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","timing","schedules","__transition","schedule","svgNode","degrees","skewX","interpolateTransform","pxComma","pxParen","degParen","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","decompose","interpolateTransformSvg","baseVal","consolidate","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","interpolateRgb","interpolateString","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","newId","selection_prototype","cubicIn","cubicOut","cubicInOut","inherit","id0","id1","on0","on1","sit","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","easeVarying","reject","cancel","interrupt","defaultTiming","easeCubicInOut","BrushEvent","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","number2","handles","output","xy","XY","cursors","overlay","nw","flipX","flipY","signsX","signsY","defaultFilter","defaultExtent","hasAttribute","viewBox","defaultTouchable","maxTouchPoints","__brush","brushSelection","dim","brushX","brush","brushY","touchending","touchable","handleSize","handle","started","touchmoved","touchended","emitter","clean","emit","Emitter","w0","w1","n0","e0","moving","lockX","lockY","signX","signY","dx","dy","shifting","identifier","pointer","point0","beforestart","move","moved","ended","dragDisable","dragEnable","selection0","selection1","starting","keyModifiers","halfPi","tau","chord","chordTranspose","chordDirected","directed","sortGroups","sortSubgroups","sortChords","groupSums","groupIndex","chords","subgroupIndex","tauEpsilon","strings","Path","digits","_x0","_y0","_x1","_y1","_append","appendRound","quadraticCurveTo","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","a0","ccw","cw","pathRound","defaultSource","defaultTarget","defaultRadius","defaultStartAngle","defaultEndAngle","defaultPadAngle","defaultArrowheadRadius","ribbon","headRadius","sourceRadius","targetRadius","ap","argv","sa0","sa1","ta0","ta1","tr2","ta2","ribbonArrow","radians","Xn","Yn","Zn","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","lch","hcl","ED","EB","BC_DA","cubehelix","Cubehelix","cubehelixConvert","cosh","sinh","ring","hole","ringContains","segmentContains","collinear","cases","smoothLinear","contours","finite","contour","polygons","holes","fragmentByStart","fragmentByEnd","above","stitch","startIndex","isorings","polygon","coordinates","yt","valid","smooth1","_0","_1","sign","defaultX","defaultY","defaultWeight","grid","pow2k","density","pow4k","MIN_VALUE","Contours","geometry","transformPolygon","transformRing","transformPoint","cellSize","splitter","resulterrbound","elen","flen","Qnew","bvirt","enow","fnow","eindex","findex","hindex","ccwerrboundB","ccwerrboundC","C1","C2","orient2d","detleft","detright","det","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_j","u3","acx","bcx","acy","bcy","estimate","errbound","C1len","C2len","Dlen","orient2dadapt","EPSILON","EDGE_STACK","Delaunator","getX","defaultGetX","getY","defaultGetY","coords","maxTriangles","_triangles","_halfedges","Int32Array","_hashSize","_hullPrev","_hullNext","_hullTri","_hullHash","_ids","_dists","hullPrev","hullNext","hullTri","hullHash","minX","minY","maxX","maxY","minDist","i0x","i0y","i1x","i1y","minRadius","circumradius","i2x","i2y","quicksort","hull","d0","triangles","halfedges","ey","circumcenter","_cx","_cy","_hullStart","hullSize","_hashKey","trianglesLen","_addTriangle","xp","yp","_legalize","pseudoAngle","ar","b0","inCircle","hbl","_link","fx","fy","bp","ids","dists","tempDist","tmp","Polygon","Voronoi","delaunay","xmin","ymin","xmax","ymax","_circumcenters","vectors","circumcenters","inedges","_renderSegment","h0","_project","renderBounds","renderCell","_clip","cellPolygons","cell","cellPolygon","c0","_regioncode","_clipSegment","_step","neighbors","_cell","_simplify","_clipInfinite","_clipFinite","sx0","sy0","sx1","sy1","_edgecode","_edge","flip","vx0","vy0","vxn","vyn","vx","vy","pointX","pointY","jitter","Delaunay","flatArray","flatIterable","_delaunator","_hullIndex","hullIndex","voronoi","dt","renderHull","renderPoints","hullPolygon","renderTriangle","trianglePolygons","trianglePolygon","DragEvent","subject","defaultContainer","defaultSubject","mousedownx","mousedowny","mousemoving","gestures","clickDistance2","drag","mousedowned","touchstarted","gesture","mousemoved","mouseupped","nodrag","mouse","touch","clickDistance","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","inferColumns","rows","columnSet","column","pad","formatDate","year","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","getUTCFullYear","getUTCMonth","getUTCDate","delimiter","reFormat","DELIMITER","parseRows","eof","eol","token","preformatBody","formatValue","formatRow","customConverter","formatBody","formatRows","csv","dsv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","csvFormatRow","csvFormatValue","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","tsvFormatRow","tsvFormatValue","autoType","fixtz","getHours","quadIn","quadOut","quadInOut","polyIn","custom","exponent","polyOut","polyInOut","sinIn","sinOut","sinInOut","tpmt","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","b3","b4","b5","b6","b7","b8","b9","bounceIn","bounceOut","bounceInOut","overshoot","backIn","backOut","backInOut","elasticIn","period","elasticOut","elasticInOut","responseBlob","statusText","responseArrayBuffer","arrayBuffer","dsvParse","dsvFormat","image","onerror","onload","responseJson","json","parser","DOMParser","parseFromString","strength","force","tree","xm","ym","_root","leaf","quadtree","Quadtree","addAll","leaf_copy","treeProto","radii","ri2","visitAfter","prepare","visit","quad","jiggle","_nodes","_random","nodeById","nodeId","links","strengths","distances","bias","alpha","initializeStrength","initializeDistance","cover","yz","quads","Quad","retainer","removeAll","initialRadius","initialAngle","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","lcg","initializeNodes","initializeForce","randomSource","closest","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","radiuses","formatDecimalParts","toExponential","coefficient","prefixExponent","formatSpecifier","specifier","FormatSpecifier","align","comma","precision","%","toFixed","toLocaleString","toPrecision","formatRounded","formatPrefix","prefixes","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","padding","defaultLocale","formatLocale","epsilon2","quarterPi","haversin","streamGeometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","streamPolygon","MultiPolygon","GeometryCollection","geometries","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","lambda00","phi00","lambda0","cosPhi0","sinPhi0","phi0","lambda1","phi1","lambda2","deltaSum","ranges","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","cartesianNormalizeInPlace","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","z0","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","linePoint","normal","inflection","phii","lambdai","antimeridian","rangeCompare","rangeContains","feature","merged","deltaMax","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","compose","invert","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","forward","circleStream","cosRadius","sinRadius","circleRadius","circle","rejoin","Intersection","compareIntersection","startInside","isSubject","longitude","winding","sinPhi1","cosPhi1","point1","absDelta","phiArc","pointVisible","clipLine","sink","ringBuffer","clipBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","polygonContains","clipRejoin","pointLine","ringSegments","validSegment","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","cr","smallRadius","notHemisphere","visible","two","n2n2","n1n2","n1xn2","uu","polar","q1","v00","point2","lengthSum","clipMax","clipMin","clipRectangle","corner","comparePoint","x__","y__","v__","x_","y_","v_","activeStream","bufferStream","clipStream","polygonInside","cleanInside","cacheStream","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","bo","ringRadians","pointRadians","graticuleX","graticuleY","graticule","DX","DY","outline","extentMajor","extentMinor","stepMajor","stepMinor","graticule10","cy0","cy1","kx0","ky0","kx1","ky1","x00","y00","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_radius","pointRadius","_line","_point","lengthRing","cacheDigits","cacheAppend","cacheRadius","cacheCircle","PathString","projection","projectionStream","contextStream","pathArea","measure","pathMeasure","pathBounds","pathCentroid","methods","transformer","TransformStream","fit","fitBounds","clipExtent","geoStream","fitExtent","fitSize","fitWidth","fitHeight","maxDepth","cosMinDistance","project","delta2","resampleLineTo","phi2","dx2","dy2","dz","a00","b00","c00","resampleStream","ringPoint","resample","resampleNone","transformRadians","scaleTranslateRotate","scaleTranslate","cosAlpha","sinAlpha","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","preclip","clipAntimeridian","postclip","recenter","transformRotate","clipAngle","clipCircle","reflectX","reflectY","conicProjection","parallels","conicEqualAreaRaw","cylindricalEqualAreaRaw","r0","r0y","conicEqualArea","lower48Point","alaskaPoint","hawaiiPoint","lower48","albers","alaska","hawaii","pointStream","albersUsa","streams","multiplex","azimuthalRaw","azimuthalInvert","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","gy","nx","A1","A2","A3","A4","equalEarthRaw","l6","gnomonicRaw","kx","ky","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","defaultSeparation","meanXReduce","maxYReduce","separation","nodeSize","cluster","previousNode","eachAfter","meanX","leafLeft","leafRight","mapChildren","objectChildren","childs","Node","eachBefore","computeHeight","optional","required","constantZero","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","circles","packEncloseRandom","shuffle","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","encloseBasis1","r1","r2","r21","r3","a3","d3","place","intersects","score","packSiblingsRandom","pack","radiusLeaf","packChildrenRandom","translateChild","partition","treemapDice","positionNode","roundNode","preroot","ambiguous","imputed","defaultId","defaultParentId","parentId","stratify","nodeKey","currentId","currentParentId","nodeByKey","slash","parentof","nextLeft","nextRight","moveSubtree","wm","wp","change","nextAncestor","vim","TreeNode","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","midpoint","vip","vop","vom","sip","sop","sim","som","apportion","squarifyRatio","ratio","sumValue","newRatio","minRatio","beta","dice","treemapSlice","squarify","tile","paddingStack","paddingInner","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","paddingOuter","sums","valueOffset","valueTarget","valueLeft","valueRight","resquarify","_squarify","zoomRho","rho","rho2","rho4","ux0","uy0","ux1","uy1","coshr0","tanh","SQRT2","_2","colorHsl","hslLong","colorLab","colorHcl","hclLong","cubehelixGamma","colorCubehelix","cubehelixLong","piecewise","interpolator","lexicographicOrder","computeUpperHullIndexes","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","inside","perimeter","sourceRandomUniform","randomUniform","sourceRandomInt","randomInt","sourceRandomNormal","randomNormal","mu","sourceRandomLogNormal","randomLogNormal","sourceRandomIrwinHall","randomIrwinHall","sourceRandomBates","irwinHall","randomBates","sourceRandomExponential","randomExponential","log1p","sourceRandomPareto","randomPareto","sourceRandomBernoulli","randomBernoulli","sourceRandomGeometric","randomGeometric","sourceRandomGamma","randomGamma","multiplier","sourceRandomBeta","randomBeta","sourceRandomBinomial","geometric","randomBinomial","acc","nn","pp","sourceRandomWeibull","randomWeibull","outerFunc","sourceRandomCauchy","randomCauchy","sourceRandomLogistic","randomLogistic","sourceRandomPoisson","binomial","randomPoisson","eps","initRange","initInterpolator","implicit","ordinal","unknown","band","ordinalRange","rescale","rangeRound","pointish","unit","bimap","polymap","untransform","clamper","interpolateRound","continuous","precisionPrefix","precisionRound","precisionFixed","linearish","maxIter","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","log2","logp","powp","transformSymlog","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","radial","squared","unsquare","invertExtent","quantiles","quantize","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","timeInterval","floori","offseti","field","millisecond","getMilliseconds","timeMinute","getSeconds","getMinutes","timeMinutes","utcMinute","setUTCSeconds","utcMinutes","timeHour","timeHours","utcHour","setUTCMinutes","utcHours","timeDay","setHours","setDate","getDate","getTimezoneOffset","timeDays","utcDay","setUTCHours","setUTCDate","utcDays","unixDay","unixDays","timeWeekday","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","timeSundays","timeMondays","timeTuesdays","timeWednesdays","timeThursdays","timeFridays","timeSaturdays","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","timeMonth","setMonth","getMonth","getFullYear","timeMonths","utcMonth","setUTCMonth","utcMonths","timeYear","setFullYear","timeYears","utcYear","setUTCFullYear","utcYears","ticker","day","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","utcDate","UTC","newDate","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","pads","newParse","utcFormat","utcParse","timeFormat","timeParse","numberRe","percentRe","requoteRe","requote","dISO","dow","UTCdISO","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","timeWeek","timeSecond","utcTime","utcWeek","utcSecond","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","scheme","interpolateRgbBasis","ramp","interpolateCubehelixLong","warm","cool","ts","pi_1_3","pi_2_3","magma","inferno","plasma","nextId","Local","events","withPath","arcInnerRadius","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","cornerTangents","x11","y11","x10","y10","cx0","cx1","dx0","dy0","dx1","dy1","padRadius","a01","a11","a10","da0","da1","rp","rc0","rc1","x32","y32","Linear","curve","curveLinear","defined0","x0z","y0z","areaStart","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","sortValues","arcs","curveRadialLinear","curveRadial","Radial","_curve","lineRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","Bump","BumpRadial","pointRadial","bumpX","bumpY","bumpRadial","linkSource","linkTarget","linkHorizontal","linkVertical","linkRadial","sqrt3","draw","tan30","tan30_2","kr","symbolsFill","diamond","star","triangle","wye","symbolsStroke","plus","times","triangle2","asterisk","square2","diamond2","Basis","BasisClosed","BasisOpen","Bundle","_basis","_beta","_x2","_x3","_x4","_y2","_y3","_y4","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","CardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","LinearClosed","slope3","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","Step","stepBefore","stepAfter","series","stackValue","stackSeries","orderNone","offsetNone","oz","yn","sij0","peaks","peak","appearance","tops","bottoms","_t0","isoSpecifier","formatIso","toISOString","parseIso","total","_restart","ZoomEvent","Transform","applyX","applyY","invertX","invertY","rescaleX","rescaleY","__zoom","SVGElement","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","defaultConstrain","translateExtent","touchstarting","touchfirst","constrain","scaleExtent","interpolateZoom","touchDelay","wheelDelay","tapDistance","wheeled","dblclicked","__zooming","Gesture","taps","wheel","touch0","touch1","l0","dp","collection","scaleBy","scaleTo","translateBy","translateTo","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdO","getter","leafPrototypes","getProto","ns","chunkId","all","promises","miniCssF","globalThis","inProgress","dataWebpackPrefix","script","needAttach","charset","nc","onScriptComplete","prev","doneFns","head","nmd","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","Action","PopStateEventType","invariant","warning","cond","getHistoryState","usr","idx","createLocation","_extends","hash","parsePath","parsedPath","hashIndex","searchIndex","getUrlBasedHistory","getLocation","createHref","validateLocation","v5Compat","globalHistory","history","Pop","getIndex","handlePop","createURL","replaceState","listen","encodeLocation","Push","historyState","pushState","DOMException","Replace","go","ResultType","matchRoutes","routes","locationArg","basename","matchRoutesImpl","allowPartial","stripBasename","branches","flattenRoutes","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","decoded","decodePath","matchRouteBranch","parentsMeta","parentPath","flattenRoute","route","relativePath","caseSensitive","startsWith","joinPaths","computeScore","_route$path","exploded","explodeOptionalSegments","isOptional","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","pattern","compiledParams","regexpSource","paramName","compilePath","captureGroups","splatValue","nextChar","getInvalidPathError","dest","getPathContributingMatches","getResolveToMatches","v7_relativeSplatPath","pathMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","isRouteErrorResponse","internal","validMutationMethodsArr","validRequestMethodsArr","DataRouterContext","DataRouterStateContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useInRouterContext","useLocation","UNSAFE_invariant","useIsomorphicLayoutEffect","static","useNavigate","router","useDataRouterContext","DataRouterHook","UseNavigateStable","useCurrentRouteId","DataRouterStateHook","activeRef","navigate","fromRouteId","useNavigateStable","dataRouterContext","future","routePathnamesJson","UNSAFE_getResolveToMatches","relative","useNavigateUnstable","OutletContext","useRoutesImpl","dataRouterState","parentMatches","routeMatch","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","parentSegments","renderedMatches","_renderMatches","navigationType","DefaultErrorComponent","_state$errors","useDataRouterState","UseRouteError","routeId","errors","useRouteError","preStyles","defaultErrorElement","RenderErrorBoundary","revalidation","errorInfo","routeContext","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","_dataRouterState","_future","v7_partialHydration","errorIndex","findIndex","renderFallback","fallbackIndex","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","reduceRight","shouldRenderHydrateFallback","alreadyWarned","getChildren","hookName","useRouteContext","thisRoute","Navigate","isStatic","jsonPath","Outlet","useOutlet","Route","_props","Router","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","_ref6","createRoutesFromChildren","treePath","hasErrorBoundary","shouldRevalidate","__reactRouterVersion","startTransitionImpl","ReactDOM","BrowserRouter","historyRef","setStateImpl","v7_startTransition","newState","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","consoleLogger","Logger","concreteLogger","logger","debug","deprecate","debugOnly","moduleName","baseLogger","EventEmitter","observers","numListeners","off","observer","numTimesAdded","defer","res","rej","makeString","lastOfPathSeparatorRegExp","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","stackIndex","deepExtend","overwrite","regexEscape","_entityMap","looksLikeObjectPathRegExpCache","capacity","regExpMap","regExpQueue","getRegExp","regExpFromCache","regExpNew","deepFind","keySeparator","tokens","nextPath","getCleanedCode","ResourceStore","defaultNS","ignoreJSONStructure","addNamespaces","removeNamespaces","getResource","lng","addResource","silent","addResources","resources","addResourceBundle","skipCopy","removeResourceBundle","hasResourceBundle","getResourceBundle","compatibilityAPI","getDataByLanguage","hasLanguageSomeTranslations","toJSON","postProcessor","processors","addPostProcessor","translator","processor","checkedLoadedFor","Translator","services","changeLanguage","language","exists","interpolation","resolved","extractFromKey","nsSeparator","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","matched","looksLikeObjectPath","nestingRegexp","parts","lastKey","overloadTranslationOptionHandler","returnDetails","appendNamespaceToCIMode","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","needsZeroSuffixLookup","shouldUseIntlApi","pluralSeparator","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","suffixes","getSuffixes","appendNamespaceToMissingKey","parseMissingKeyHandler","_this","defaultVariables","skipInterpolation","skipOnVariables","nestBef","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","contextSeparator","possibleKey","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","option","capitalize","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","specialCases","lowerCaseLng","part","cleanCode","isSupportedCode","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","sets","nr","_rulesPluralsTypes","nonIntlVersions","intlVersions","suffixesOrder","few","many","PluralResolver","compatibilityJSON","Intl","PluralRules","rules","plurals","createRules","addRule","getRule","needsPlural","resolvedOptions","pluralCategories","getPluralFormsOfKey","pluralCategory1","pluralCategory2","pluralCategory","prepend","getSuffixRetroCompatible","noAbs","simplifyPluralSuffix","returnSuffix","deepFindWithDefaults","getPathWithDefaults","Interpolator","escapeValue","escape$1","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","getOrResetRegExp","existingRegExp","regexp","regexpUnescape","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","regex","safeValue","todo","matchedVar","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","doReduce","createCachedFormatter","formatter","Formatter","opt","NumberFormat","DateTimeFormat","relativetime","RelativeTimeFormat","ListFormat","iOpts","addCached","mem","formatName","formatOptions","formatStr","optStr","trimmedKey","parseFormatStr","formatted","valOptions","formatParams","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queueLoad","languages","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","pushPath","removePending","loadedKeys","read","fcName","tried","wait","resolver","prepareLoading","loadOne","fallbackValue","isUpdate","clb","opts","initImmediate","preload","partialBundledLanguages","tDescription","transformOptions","I18n","inst","modules","external","isInitialized","isClone","isInitializing","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","deferred","finish","initializedStoreOnce","loadResources","usedCallback","resolvedLanguage","setResolvedLanguage","reloadResources","use","lngInLngs","_this2","isLanguageChangingTo","setLngProps","setLng","cacheUserLanguage","async","detect","getFixedT","keyPrefix","_this3","fixedT","resultKey","setDefaultNamespace","lastLng","loadNotPending","loadState","precheck","preResult","loadNamespaces","loadLanguages","preloaded","newLngs","createInstance","cloneInstance","forkResourceStore","mergedOptions","fieldContentRegExp","cookie","cookieOptions","sameSite","expires","getTime","serializeCookie","maxAge","toUTCString","httpOnly","secure","nameEQ","cookie$1","lookup","lookupCookie","cookieMinutes","cookieDomain","querystring","lookupQuerystring","hasLocalStorageSupport","localStorageAvailable","localStorage","testKey","setItem","removeItem","lookupLocalStorage","getItem","hasSessionStorageSupport","sessionStorageAvailable","sessionStorage","lookupSessionStorage","navigator$1","userLanguage","htmlTag","internalHtmlTag","lookupFromPathIndex","subdomain","lookupFromSubdomainIndex","internalLookupFromSubdomainIndex","hostname","Browser","detectors","i18nOptions","defaults","excludeCacheFor","convertDetectedLanguage","lookupFromUrlIndex","addDetector","detector","detectionOrder","detected","detectorName","cacheName","warnOnce","isString","loadedClb","i18n","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","unescape","i18nInstance","initReactI18next","setDefaults","react","setI18n","I18nContext","ReportNamespaces","usedNamespaces","addUsedNamespaces","getUsedNamespaces","alwaysNewT","useTranslation","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","optsOrDefaultValue","retNotReady","ready","memoGetT","useMemoizedT","nsMode","getT","getNewT","setT","joinedNS","previousJoinedNS","usePrevious","ignore","boundReset","LanguageDetector","enTranslations","frTranslations","Images","upload_icon","add_file","invoice","logout","review","like","likeclick","dislike","dislikeclick","gridview","listview","google","zenpivot","applogo","PitchScorebg","companyImage","userImage","share","linkedin","twitter","whatsapp","gmail","infobtn","loginbg","forgetpwd","pitchdeckbg","scorebg","questionbg","investorbg","profileimage","crownimage","folderimage","avatar","nodata","Pdf","Word","Excel","icsend","phonecall","isValidEmail","isValidScore","isValidScore1","isEmptyObject","ProgressBar","_jsx","_jsxs","formatTextWithLineBreaks","Loader","loaderAnimation","_path","_path2","_path3","_path4","SvgMenuDashboard","svgRef","strokeLinecap","strokeLinejoin","SvgMenuDeckuploader","SvgMenuInversorcrm","SvgMenuService","SvgMenuValut","SvgMenuProfile","SvgMenuSettings","SvgMenuChat","SvgIcCrownblock","label","UserInfoData","Menus","DashboardEmailIcon","DeckuploaderIcon","ChatIcon","InversorcrmIcon","ServiceIcon","ValutIcon","CrownblocIcon","ProfileMenus","ProfileIcon","SettingsIcon","filteredMenus","menu","user_type","handleClick","itemName","mClickstatus","handleSettngsClick","LogoText","mFrom","mProfile","LogoTextsmall","BASE_URL","thisArg","kindOf","thing","kindOfTest","typeOfTest","isUndefined","isArrayBuffer","isNumber","isPlainObject","isDate","isFile","isBlob","isFileList","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","allOwnKeys","findKey","_global","isContextDefined","TypedArray","isHTMLForm","isRegExp","reduceDescriptors","descriptors","reducedDescriptors","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isAsyncFn","_setImmediate","setImmediateSupported","postMessageSupported","asap","nextTick","isFormData","kind","FormData","isArrayBufferView","isBoolean","isStream","pipe","caseless","assignValue","targetKey","stripBOM","inherits","superConstructor","toFlatObject","sourceObj","destObj","propFilter","searchString","forEachEntry","matchAll","regExp","hasOwnProp","freezeMethods","toObjectSet","arrayOrString","toCamelCase","toFiniteNumber","generateString","alphabet","isSpecCompliantForm","toJSONObject","reducedValue","isThenable","AxiosError","captureStackTrace","columnNumber","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","dots","predicates","formData","metaTokens","visitor","defaultVisitor","useBlob","convertValue","isFlatArray","exposedHelpers","build","encode","charMap","AxiosURLSearchParams","_pairs","toFormData","encoder","_encode","buildURL","serializeFn","serialize","serializedParams","hashmarkIndex","handlers","fulfilled","rejected","synchronous","runWhen","eject","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","platform","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","transitional","transitionalDefaults","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","stringifySafely","transformResponse","JSONRequested","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","method","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","parseHeaders","tokensRE","parseTokens","deleted","deleteHeader","normalized","formatHeader","targets","asStrings","computed","accessor","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","buildAccessors","mapped","headerValue","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","ERR_BAD_REQUEST","samplesCount","bytes","timestamps","firstSampleTS","chunkLength","startedAt","bytesCount","passed","lastArgs","timestamp","invoke","flush","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","speedometer","throttle","lengthComputable","progressBytes","estimated","progressEventDecorator","throttled","asyncDecorator","msie","urlParsingNode","originURL","resolveURL","protocol","host","port","requestURL","write","toGMTString","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","configValue","newConfig","auth","btoa","username","Boolean","isURLSameOrigin","xsrfValue","cookies","_config","resolveConfig","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","unsubscribe","signal","onloadend","responseHeaders","getAllResponseHeaders","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","setRequestHeader","upload","abort","subscribe","aborted","parseProtocol","composeSignals","signals","controller","AbortController","reason","streamChunk","chunk","chunkSize","trackStream","onProgress","onFinish","iterable","readBytes","_onFinish","ReadableStream","pull","close","loadedBytes","enqueue","highWaterMark","isFetchSupported","Request","Response","isReadableStreamSupported","encodeText","TextEncoder","supportsRequestStream","duplexAccessed","hasContentType","duplex","supportsResponseStream","resolvers","ERR_NOT_SUPPORT","resolveBodyLength","getContentLength","getBodyLength","fetchOptions","finished","composedSignal","stopTimeout","requestContentLength","_request","credentials","isStreamResponse","responseContentLength","responseData","knownAdapters","http","xhrAdapter","fetchAdapter","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","formatMessage","ERR_DEPRECATED","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","InterceptorManager","configOrUrl","dummy","boolean","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","defaultConfig","Cancel","spread","isAxiosError","formToJSON","getAdapter","commonAPI","reqConfig","Authorization","alert","mGetslideimages","user","mUserFeedback","mUploadDeckDashboard","mGetpdfanddownloadcount","mGooglelogin","mStartupdashboard","mEditCRM","paymentordercreate","getscoremeter","getPdfURL","SvgNewIcClose","__awaiter","_arguments","generator","__generator","sent","trys","ops","verb","__read","__spreadArray","SuppressedError","COMMON_MIME_TYPES","toFileWithPath","ext","withMimeType","webkitRelativePath","FILES_TO_IGNORE","getInputFiles","evt","fromList","files","getFsHandleFiles","getFile","getDataTransferFiles","toFilePromises","noIgnoredFiles","webkitGetAsEntry","fromDataTransferItem","isDirectory","fromDirEntry","getAsFile","fwp","fromEntry","fromFileEntry","reader","createReader","readEntries","batch","err_1","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayWithHoles","_e","_arr","_iterableToArrayLimit","_nonIterableRest","minLen","FILE_INVALID_TYPE","FILE_TOO_LARGE","FILE_TOO_SMALL","TOO_MANY_FILES","getInvalidTypeRejectionErr","accept","messageSuffix","getTooLargeRejectionErr","maxSize","getTooSmallRejectionErr","minSize","TOO_MANY_FILES_REJECTION","fileAccepted","isAcceptable","accepts","fileMatchSize","isDefined","isEvtWithFiles","onDocumentDragOver","composeEventHandlers","isMIMEType","isExt","_excluded2","_excluded3","_excluded4","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","Dropzone","_useDropzone","useDropzone","getFilesFromEvent","isChangeEvt","maxFiles","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","useFsAccessApi","onFileDialogCancel","onFileDialogOpen","onDragEnter","onDragLeave","onDragOver","onDrop","onDropAccepted","onDropRejected","initialState","isFocused","isFileDialogActive","isDragActive","isDragAccept","isDragReject","fileRejections","_defaultProps$props","acceptAttr","_ref7","acceptPropAsAcceptAttr","pickerTypes","agg","pickerOptionsFromAccept","onFileDialogOpenCb","onFileDialogCancelCb","rootRef","inputRef","_useReducer2","fsAccessApiWorksRef","isSecureContext","onWindowFocus","dragTargetsRef","onDocumentDrop","onErrCb","onDragEnterCb","fileCount","accepted","sizeMatch","customErrors","allFilesAccepted","onDragOverCb","hasFiles","dropEffect","_unused","onDragLeaveCb","targetIdx","setFiles","_fileAccepted2","acceptError","_fileMatchSize2","sizeError","onDropCb","openFileDialog","showOpenFilePicker","ABORT_ERR","isAbort","SECURITY_ERR","isSecurityError","click","onKeyDownCb","isEqualNode","onFocusCb","onBlurCb","onClickCb","isIe","isEdge","isIeOrEdge","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2$refKey","refKey","role","onKeyDown","onFocus","onBlur","tabIndex","onInputElementClick","getInputProps","_ref3$refKey","onChange","SvgIcSparklesGreen","isCenter","ismandatory","onFileSelect","Onlogin","hidelogin","isBorder","subscriptionstatus","balancedeck","pdfFiles","SparklesIcon","TextView","class","onClose","Userid","onDeckSucess","FileName","setFileName","base64","setBase64","loading","setLoading","setProgress","isRunning","setIsRunning","buttonRef","convertToBase64","FileReader","readAsDataURL","prevProgress","mTimerValue","CloseIcon","PdfUploader","base64String","mCropImage","deck_name","deck_doc","user_name","toast","_response$data","errorMessage","textAlign","borderRadius","alignItems","justifyContent","ReactReduxContext","getBatch","nullListeners","notify","createSubscription","parentSub","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","isSubscribed","createListenerCollection","notifyNestedSubs","tryUnsubscribe","getListeners","contextValue","previousState","getState","Context","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2$getDisplayName","_ref2$methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","_ref2$context","connectOptions","wrappedComponentName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","didStoreComeFromProps","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","previousStateUpdateResult","renderedWrappedComponent","Connect","forwarded","hoistStatics","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","actionCreators","boundActionCreators","_loop","actionCreator","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextState","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","factories","strictEqual","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","defaultMapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","defaultMapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","defaultMergePropsFactories","_ref$selectorFactory","defaultSelectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","useReduxContext","createStoreHook","useDefaultReduxContext","useStore","createDispatchHook","useDefaultStore","useDispatch","refEquality","createSelectorHook","equalityFn","_useReduxContext","selectedState","contextSub","latestSubscriptionCallbackError","latestSelector","latestSelectedState","storeState","newSelectedState","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","newBatch","useSelector","changecolor","SvgIcSummeryback","SvgIcNotification","SvgIcCrown","issmall","SvgIcLogout","SvgIcClose","formatProdErrorMessage","symbol_observable_default","observable","randomString","actionTypes_default","INIT","REPLACE","PROBE_UNKNOWN_ACTION","proto","createStore","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","listenerIdCounter","isDispatching","ensureCanMutateNextListeners","listenerId","replaceReducer","nextReducer","outerSubscribe","observeState","observerAsObserver","combineReducers","reducers","reducerKeys","finalReducers","finalReducerKeys","shapeAssertionError","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","funcs","createThunkMiddleware","extraArgument","thunk","withExtraArgument","NOTHING","DRAFTABLE","DRAFT_STATE","die","isDraft","isDraftable","isMap","isSet","objectCtorString","getArchtype","type_","propOrOldValue","latest","copy_","base_","shallowCopy","strict","isPlain","isFrozen","dontMutateFrozenCollections","currentScope","getPlugin","pluginKey","getCurrentScope","usePatchesInScope","scope","patchListener","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","drafts_","revokeDraft","parent_","enterScope","immer2","immer_","canAutoFreeze_","unfinalizedDrafts_","draft","revoke_","revoked_","processResult","baseDraft","modified_","finalize","maybeFreeze","generateReplacementPatches_","rootScope","childValue","finalizeProperty","scope_","finalized_","resultEach","isSet2","generatePatches_","parentState","targetObject","rootPath","targetIsSet","assigned_","autoFreeze_","objectTraps","getDescriptorFromProto","draft_","readPropFromProto","prepareCopy","createProxy","current2","markChanged","deleteProperty","owner","setPrototypeOf","arrayTraps","useStrictShallowCopy_","proxyMap_","proxySet_","isManual_","traps","revoke","Proxy","revocable","createProxyProxy","currentImpl","immer","produce","recipe","defaultBase","base2","hasError","produceWithPatches","patches","inversePatches","autoFreeze","setAutoFreeze","useStrictShallowCopy","setUseStrictShallowCopy","createDraft","finishDraft","applyPatches","patch","applyPatchesImpl","applyPatches_","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","hasMatchFunction","__REDUX_DEVTOOLS_EXTENSION__","createAction","prepareAction","prepared","isAction","Tuple","_Tuple","species","freezeDraftable","createNextState","emplace","inserted","SHOULD_AUTOBATCH","createQueueWithTimer","rAF","buildGetDefaultEnhancers","middlewareEnhancer","autoBatch","enhancerArray","notifying","shouldNotifyAtEndOfTick","notificationQueued","queueCallback","queueNotification","notifyListeners","listener2","wrappedListener","autoBatchEnhancer","executeReducerBuilderCallback","builderCallback","actionsMap","actionMatchers","defaultCaseReducer","builder","addCase","typeOrActionCreator","addMatcher","addDefaultCase","isAnyOf","matchers","nanoid","commonProperties","RejectWithValue","_type","FulfillWithMeta","miniSerializeError","simpleError","createAsyncThunk","createAsyncThunk2","typePrefix","payloadCreator","requestId","requestStatus","serializeError","rejectedWithValue","condition","idGenerator","abortController","abortHandler","abortReason","finalAction","conditionResult","abortedPromise","getPendingMeta","race","rejectWithValue","fulfillWithValue","dispatchConditionRejection","unwrap","unwrapResult","settled","withTypes","asyncThunkSymbol","actionKey","buildCreateSlice","creators","cAT","asyncThunk","reducerPath","_reducerDefinitionType","caseReducer","preparedReducer","buildReducerCreators","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","sliceMatchers","contextMethods","reducer2","exposeAction","name2","exposeCaseReducer","buildReducer","extraReducers","finalCaseReducers","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","isStateFunction","frozenInitialState","caseReducers","isDraft2","isDraftable2","createNextState2","createReducer","sM","reducerName","reducerDefinition","reducerDetails","createNotation","isAsyncThunkSliceReducerDefinition","maybeReducerWithPrepare","prepareCallback","isCaseReducerWithPrepareDefinition","handleNormalReducerDefinition","handleThunkCaseReducerDefinition","selectSelf","injectedSelectorCache","_reducer","makeSelectorProps","reducerPath2","injected","selectSlice","sliceState","getSelectors","selectState","selectorCache","selectors","wrapSelector","injectInto","injectable","pathOpt","newReducerPath","rootState","_len11","_key11","unwrapped","createSlice","userSlice","setUser","removeUser","isOpen","onCancel","onConfirm","onDisable","isShowing","notShowsubscription","isLoadNotification","isCallBtn","balancedeckstatus","menuRef","setIsOpen","showPopup","setShowPopup","notificationCount","setNotificationCount","notificationmessage","setNotificationMessage","today","remainingDays","setRemainingDays","padStart","subscription_expiry_date","toggleMenu","handleClickOutside","NotificationClick","success","handleClose","NotificationDetails","getusernotifications","user_email","_response$data$messag","_response$data$messag2","_response$data2","inputDate","toLocaleDateString","isExpanded","setIsExpanded","isDialogOpen","setIsDialogOpen","SelectNotification","setSelectNotification","closeDialog","DeleteAPICall","notificationDelete","notification_id","_response$data3","callClick","websiteUrl","openWebsite","BackIcon","Titletext","subscription_status","CrownIcon","NotificationIcon","image_url","alt","DashboardTitle","service_name","clickDelete","service_message","notification_date","notification_time","DeleteDialog","confirmDelete","mLogout","LogoutIcon","SvgIcChat","SvgIcCompanyGreen","uuid","counter","arrayLike","styleProperty","parseFloat","getImageSize","targetNode","leftBorder","rightBorder","getNodeWidth","topBorder","bottomBorder","getNodeHeight","canvasDimensionLimit","decode","decoding","nodeToDataURL","foreignObject","XMLSerializer","serializeToString","svgToDataURL","isInstanceOfElement","nodePrototype","getPseudoElementStyle","pseudo","cssText","formatCSSText","getPropertyPriority","formatCSSProperties","clonePseudoElement","nativeNode","clonedNode","styleElement","WOFF","JPEG","mimes","woff","woff2","ttf","eot","png","jpg","jpeg","gif","tiff","webp","getMimeType","extension","getExtension","isDataUrl","makeDataUrl","fetchAsDataURL","resourceToDataURL","resourceUrl","cacheKey","includeQueryParams","getCacheKey","dataURL","cacheBust","fetchRequestInit","getContentFromDataUrl","imagePlaceholder","msg","cloneSingleNode","HTMLCanvasElement","toDataURL","cloneCanvasElement","HTMLVideoElement","video","currentSrc","poster","cloneVideoElement","iframe","contentDocument","cloneIFrameElement","isSlotElement","decorate","targetStyle","sourceStyle","reducedFont","cloneCSSStyle","clonePseudoElements","HTMLTextAreaElement","HTMLInputElement","cloneInputValue","HTMLSelectElement","clonedSelect","selectedOption","cloneSelectValue","isRoot","assignedNodes","shadowRoot","clonedChild","cloneChildren","uses","processedDefs","exist","ensureSVGSymbols","URL_REGEX","URL_WITH_FORMAT_REGEX","FONT_SRC_REGEX","resourceURL","getContentFromUrl","resolvedURL","baseUrl","doc","createHTMLDocument","resolveUrl","escaped","toRegex","shouldEmbed","embedResources","filteredCSSText","preferredFontFormat","filterPreferredFontFormat","urls","raw","quotation","parseURLs","css","embedProp","propValue","cssString","embedImages","embedBackground","isImageElement","HTMLImageElement","SVGImageElement","srcset","embedImageNode","deferreds","embedChildren","cssFetchCache","fetchCSS","embedFonts","regexUrl","loadFonts","loc","parseCSS","keyframesRegex","importRegex","unifiedRegex","parseWebFontRules","styleSheets","cssRules","sheet","CSSRule","IMPORT_RULE","importIndex","metadata","insertRule","inline","getCSSRules","FONT_FACE_RULE","getWebFontRules","embedWebFonts","fontEmbedCSS","skipFonts","parentStyleSheet","getWebFontCSS","styleNode","sytleContent","toSvg","manual","applyStyle","toCanvas","pixelRatio","FINAL_PROCESS","getPixelRatio","canvasWidth","canvasHeight","skipAutoScale","checkCanvasDimensions","toPng","AlertDialog","isShowDes","dialogRef","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","createClass","Constructor","protoProps","staticProps","objectWithoutProperties","encodeSpecialCharacters","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","objectAssign","rafPolyfill","cafPolyfill","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","_helmetCallback","commitTagChanges","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","attribute","indexToSave","tags","headElement","tagNodes","indexToDelete","styleSheet","existingTag","generateElementAttributesAsString","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","generateTitleAsReactComponent","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","_ref$title","noscript","HelmetExport","_class","_React$Component","HelmetWrapper","classCallCheck","ReferenceError","possibleConstructorReturn","nextProps","isEqual","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","mapObjectTypeChildren","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_child$props","initAttributes","convertReactPropstoHtmlAttributes","defaultTitle","titleTemplate","mappedState","Helmet","withSideEffect","renderStatic","Dashboard","cardRef","imageUrl","setImageUrl","servicesdate","setServicesData","setpercentage","summarydetails","setSummaryDetails","deckdetails","setDeckdetails","mDeckName","setmDeckName","mDeckId","setmDeckId","setbalancedeck","showDialog","setShowDialog","setAnimate","setIsHidden","userInfo","isHiddenMsg","setisHiddenMsg","isExtraTime","setisExtraTime","isDeckstatus","setisDeckstatus","Deckresponse","setDeckresponse","setsubscriptionstatus","isClickDisbled","DashboardAPICall","downloadImage","balance_deck","deckReview","deck_review","deck_status","deck_response","user_last_deck","deck_details","summary","overall_rating","our_services","isAlertOpen","setIsAlertOpen","handleItemClick","mDeck_Id","handleFileSelect1","proceedClick","dataUrl","download","uploadImage","getscorecard","file_name","file_type","score_card_image","score_card_details","_Fragment","SideMenu","OpenDialog","Opendialog","HeaderMenu","shareOnLinkedIn","linkedInShareUrl","shareOnTwitter","twitterUrl","ShareOnwhatsapp","whatsappUrl","shareOnMail","mailtoLink","team","market_potential","product_market_fit","pricing_format","SecondaryButton","ClickChat","CompanyIcon","company_name","closeAlert","DashboardDialog","handleCancel","handleDeckSucess","user_id","Deckdetails","_location$state","maxChars","getSlideDetails","setGetSlideDetails","Postion","setPostion","deckreview","setdeckreview","deckpdfurl","setDeckpdfurl","likeselect","setLikeselect","dislikeselect","setDislikeClick","editOpen","seteditOpen","inputValue","setInputValue","getllmResponse","setGetllmResponse","scoremeterRef","mSubmitClick","downloadPDF","getParticularDeck","doc_name","llm_response","mPostion","likeClick","Submit","dislikeClick","slide_no","deck_id","user_feedback","user_feedback_status","openUrl","GetpdfdownloadCall","deck_pdf","Deck_Id","pdf_downlad_count","_response$data4","setdescription","infoclick","downloadScoreCard","uploadScorecardImage","_response$data5","mBackClick","slide_image","type_of_risk","typeofriskitem","risk_score","explanation","key_factors_influencing","strategies_to_manage_product_risk","feedback","suggestion","maxLength","placeholder","PrimaryButton","notes","most_promising_aspects","whiteSpace","textOverflow","fetchMasterData","mGetallMaster","masterSlice","MasterdataList","master_data","getDefaultMiddleware","immutableCheck","serializableCheck","actionCreatorCheck","middlewareArray","thunkMiddleware","middleware","devTools","enhancers","rootReducer","finalMiddleware","isPlainObject2","finalCompose","compose2","trace","middlewares","createStore2","middlewareAPI","applyMiddleware","getDefaultEnhancers","configureStore","userReducer","master","PrivateRoute","GoogleOAuthContext","GoogleOAuthProvider","clientId","nonce","onScriptLoadSuccess","onScriptLoadError","scriptLoadedSuccessfully","setScriptLoadedSuccessfully","onScriptLoadSuccessRef","onScriptLoadErrorRef","scriptTag","useLoadGsiScript","useGoogleOAuth","useGoogleLogin","flow","onSuccess","onNonOAuthError","overrideScope","clientRef","onSuccessRef","onErrorRef","onNonOAuthErrorRef","clientMethod","client","accounts","oauth2","client_id","error_callback","nonOAuthError","loginImplicitFlow","overrideConfig","requestAccessToken","loginAuthCodeFlow","requestCode","SvgIcBack","SvgIcEmail","SvgIcPwdshow","SvgIcPwdhide","secureTextEntry","PasswordVisibility","setshowPassword","showIcon","Icon","clickInfoIcon","PwdShow","PwdHide","ResetPassword","setEmail","ForgetPwdCall","mSendotptomail","mEmail","Headingtext","InputContainer","EmailIcon","sendOTPClick","isStyleObject","OTPInput","numInputs","onPaste","renderInput","shouldAutoFocus","inputType","renderSeparator","inputStyle","_f","skipDefaultStyles","_g","activeInput","setActiveInput","inputRefs","getOTPValue","isInputNum","getPlaceholderValue","isInputValueValid","handleChange","changeCodeAtFocus","focusInput","handleInputChange","cellInput","handleOTPChange","handleBlur","handleKeyDown","otp","otpValue","handlePaste","nextActiveInput","pastedData","getData","handleFocus","autoComplete","inputMode","onInput","ResetPasswordOTP","showPassword","setShowPassword","setPassword","setCode","ForgetPwdOTPCall","mResetpassword","new_password","border","marginRight","focusStyle","boxShadow","gap","savePwdClick","SvgIcDropdown","Login","_location$state2","isChecked","setisChecked","mGetdeckId","mdeckId","LoginCall","mdeckName","mLogin","userinfo","userImageBase64","setUserImageBase64","userDetails","setUserDetails","profile","setProfile","profileLoaded","setProfileLoaded","setSelectedOption","googleLogin","codeResponse","access_token","Accept","picture","SignupCall","profile_image","deal_name","coupon_code","user_info","savedData","masterdataList","_masterdataList$custo","customer_group","gmailLoginClick","toggleDropdown","handleOptionClick","Icondrop","htmlFor","handlefwd","loginClick","ClickCreateAccount","SvgIcUser","Signup","setName","invitecode","setInvitecode","companyname","setCompanyname","userType","setuserType","mGetdeckName","timerStart","settimerStart","NormalSignupCall","mSignup","isLoginDisbled","UserIcon","registerClick","Uploadpicthdeck","deckId","setdeckId","windowSize","setWindowSize","innerWidth","FirstPdfUploader","mUploadDeck","Deckscore","deckScore","setdeckScore","getDeckScoreCall","getDeckscore","deck_score","team_exp","flow_and_clarity","ProceedClick","SvgIcUpload","_rect","SvgNewIcDocclose","valutname","setValutName","setDescription","UploadFiles","setUploadFiles","handleFileChange","fileExtension","attachFile","myObject","onChooseFile","UploadIcon","Docclose","person","onDeleteImage","updateRoomRequest","vault_name","upload_doc","createVault","onDeckid","MyDecks","dashboarddata","setDashboardData","gridRef","selectedRow","setSelectedRow","rowRefs","scrollPosition","setScrollPosition","newValutShow","setnewValutShow","selectedDeck","setselectedDeck","MyDecksAPICall","mGetDashboard","Description","mDeck","deck_profile_image","DeckdetailsDialog","clickClose","service","handlePayment","price","service_price","REACT_APP_RAZORPAY_KEY_ID","order_id","paymentresponse","CreateServiceAPICall","razorpay_payment_id","razorpay_order_id","prefill","theme","Razorpay","Amount","paymentId","orderId","mCreateServices","service_id","payment_transaction_id","CreateService","uploaddocClick","downloadinvoice","Invoiceurl","service_invoice","process_steps","steps","step_status","tat","doc_status","current_status","UserAlertDialog","Confirm","UserViewAPICall","userviewstatus","view_status","ServicePage","servicedata","setServiceData","myservicedata","setMyServiceData","ShowserviceDetails","setShowserviceDetails","Showselectedservice","setShowselectedservice","ShowmyserviceDetails","setShowmyserviceDetails","Showselectedmyservice","setShowselectedmyservice","ServicePageAPICall","mServices","my_services","viewClick","myserviceClick","ServiceviewDialog","newserviceCreate","MyServiceviewDialog","myserviceClose","SvgIcAdd","SvgIcMenu","SvgIcMenuedit","SvgIcMenudelete","isEdit","Title","selectedItem","valutdetails","buttonname","onLoadEdit","updateVault","vault_id","onUpdateNewFile","updatenewFile","newVaultClick","ValutPage","valutdata","setvalutdata","Valutitem","setValutitem","setActiveMenu","VaultListAPICall","getVaultList","vault_details","activeMenu","clickEdit","mValut_Id","newFileShow","setnewFileShow","selectedFiles","setselectedFiles","setisEdit","setTitle","setButtonname","ondeleteAPICall","deleteVault","newvalutClick","AddIcon","MenuIcon","menuClick","clickEditdetails","MenuEditIcon","MenuDeleteIcon","CreateNewFile","newfileCreate","clickEditClose","CreateNewVault","newvalutCreate","SvgIcLeftarrow","SvgIcSharefile","SvgIcDotted","SvgIcDownload","invitepeople","isShareValut","valutId","mShareFile","shareFile","invite_people","selectedPeople","file_id","doc_id","share_link","mShareValut","shareVault","filteredSuggestions","setFilteredSuggestions","setselectedPeople","Dropdownitems","email_id","full_name","handleSelect","TextViewlight","updatedItems","index1","copylink","clipboard","writeText","ValutDetails","getFiles","setgetFiles","getValutDetails","setValutDetails","isValut","setisValut","Valut_Id","setmShareFile","setInvitepeople","getValutAPICall","getinvitePeople","getVault","file_upload","invitePeople","clickShare","deleteFile","onBack","RightIcon","SharefileIcon","pdfurl","DownloadIcon","ShareFile","shareClose","_setPrototypeOf","_inheritsLoose","toPropertyKey","toPrimitive","$$observable","ActionTypes","bindActionCreator","useMemoOne","getResult","inputs","initial","isFirstRun","committed","useCache","newInputs","lastInputs","areInputsEqual","getRect","expand","expandBy","shrink","shrinkBy","noSpacing","createBox","borderBox","_ref2$margin","_ref2$border","_ref2$padding","marginBox","paddingBox","contentBox","original","shiftBy","shifted","withScroll","scroll","pageXOffset","pageYOffset","calculateBox","marginTop","marginBottom","marginLeft","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","getBox","safeIsNaN","resultFn","lastThis","lastResult","calledOnce","newArgs","wrapperFn","bindEvents","bindings","sharedOptions","unbindings","fromBinding","getOptions","unbind","isProduction$1","RbdInvariant","onWindowError","getCallbacks","isDragging","tryAbort","setCallbacks","withLocation","isInHomeList","droppableId","startPosition","endPosition","withCombine","combine","draggableId","returnedToStart","preset","subtract","negate","otherValue","offsetByPosition","getCorners","shouldClipSubject","executeClip","pageMarginBox","getSubject","page","withPlaceholder","scrolled","diff","displacement","increased","_extends2","increasedBy","increase","scrollDroppable","droppable","newScroll","scrollable","scrollDiff","scrollDisplacement","toDroppableMap","memoizeOne","droppables","toDraggableMap","draggables","toDroppableList","toDraggableList","getDraggablesInsideDroppable","draggable","tryGetDestination","impact","at","tryGetCombine","removeDraggableFromList","isHomeOf","noDisplacedBy","emptyGroups","invisible","noImpact","displaced","displacedBy","isWithin","lowerBound","upperBound","isPartiallyVisibleThroughFrame","isWithinVertical","isWithinHorizontal","isPartiallyVisibleVertically","isPartiallyVisibleHorizontally","isBiggerVertically","isBiggerHorizontally","isTotallyVisibleThroughFrame","vertical","crossAxisLine","crossAxisStart","crossAxisEnd","crossAxisSize","horizontal","toBeDisplaced","viewport","withDroppableDisplacement","isVisibleThroughFrameFn","displacedTarget","getDroppableDisplaced","isVisibleInDroppable","isVisibleInViewport","isPartiallyVisible","isTotallyVisible","getShouldAnimate","forceShouldAnimate","shouldAnimate","getDisplacementGroups","afterDragging","getTarget","goAtEnd","insideDestination","inHomeList","newIndex","indexOfLastItem","getIndexOfLastItem","calculateReorderImpact","withoutDragging","sliceFrom","didStartAfterCritical","afterCritical","effected","moveToNextIndex","isMovingForward","previousImpact","wasAt","_newIndex","proposedIndex","firstIndex","fromReorder","isCombineEnabled","combineId","combineWithIndex","fromCombine","whenCombining","combineWith","displaceBy","isDisplaced","getCombinedItemDisplacement","distanceFromStartToBorderBoxCenter","getCrossAxisBorderBoxCenter","isMoving","goAfter","moveRelativeTo","goBefore","distanceFromEndToBorderBoxCenter","whenReordering","draggablePage","moveInto","goIntoStart","closestAfter","withDisplacement","getPageBorderBoxCenterFromImpact","withoutDisplacement","getResultWithoutDroppableDisplacement","scrollViewport","getDraggables","getClientFromPageBorderBoxCenter","pageBorderBoxCenter","withoutPageScrollChange","withViewportDisplacement","isTotallyVisibleInNewLocation","newPageBorderBoxCenter","_ref$onlyOnMainAxis","onlyOnMainAxis","changeNeeded","isTotallyVisibleOnAxis","moveToNextPlace","previousPageBorderBoxCenter","previousClientSelection","isEnabled","getImpact","closestId","withoutDraggable","indexOfClosest","moveToNextCombine","clientSelection","scrollJumpRequest","cautious","maxScrollChange","scrolledViewport","scrolledDroppable","withViewportScroll","withDroppableScroll","tryGetVisible","speculativelyIncrease","getKnownActive","getCurrentPageBorderBoxCenter","getCurrentPageBorderBox","getDisplacedBy","withMaxScroll","addPlaceholder","placeholderSize","requiredGrowth","availableSpace","needsToGrowBy","dimension","getRequiredGrowthForPlaceholder","added","oldFrameMaxScroll","maxScroll","newFrame","moveCrossAxis","isOver","isBetweenSourceClipped","candidates","activeOfTarget","isBetweenDestinationClipped","isWithinDroppable","getBestCrossAxisDroppable","sorted","distanceToA","distanceToB","getClosestDraggable","proposed","proposedPageBorderBoxCenter","isGoingBeforeTarget","relativeTo","moveToNewDroppable","whatIsDraggedOver","moveInDirection","isActuallyOver","getDroppableOver","isMainAxisMovementAllowed","home","critical","isMovingOnMainAxis","borderBoxCenter","_state$dimensions","isMovementAllowed","phase","isPositionInFrame","getDroppableOver$1","pageBorderBox","childCenter","isContained","isStartContained","isEndContained","startCenter","candidate","getFurthestAway","offsetRectByPosition","getIsDisplaced","getDragImpact","pageOffset","destinationId","pageBorderBoxWithDroppableScroll","targetRect","targetStart","targetEnd","childRect","didStartAfterCritical$1","getCombineImpact","atIndex","getReorderImpact","patchDroppableMap","clearUnusedPlaceholder","lastDroppable","oldMaxScroll","removePlaceholder","forcedClientSelection","forcedDimensions","forcedViewport","forcedImpact","newImpact","withUpdatedPlaceholders","cleaned","patched","recomputePlaceholders","recompute","getDraggables$1","getClientBorderBoxCenter","refreshSnap","movementMode","needsVisibilityCheck","getLiftEffect","insideHome","rawIndex","inVirtualList","adjustAdditionsForScrollChanges","additions","updatedDroppables","windowScrollChange","getFrame","droppableScrollChange","offset$1","initialWindowScroll","offsetDraggable","isSnapping","postDroppableChange","isEnabledChanging","patchDimensionMap","removeScrollJumpRequest","idle","shouldFlush","_action$payload","isWindowScrollAllowed","isFixedOnPage","_getLiftEffect","onLiftImpact","published","withScrollChange","modified","existing","updatedAdditions","removals","wasOverId","wasOver","draggingState","isWaiting","publishWhileDraggingInVirtual","_clientSelection","_action$payload2","_action$payload3","_target","_action$payload4","_id2","_target2","_updated","_newScroll","_viewport","_result2","_action$payload5","dropDuration","newHomeClientOffset","lift","publishWhileDragging","collectionStarting","updateDroppableScroll","updateDroppableIsEnabled","updateDroppableIsCombineEnabled","moveUp","moveDown","moveRight","moveLeft","completeDrop","drop","dropAnimationFinished","curves","combining","outOfTheWayTiming","fluid","snap","outOfTheWay","isCombining","minDropTime","maxDropTime","dropTimeRange","drop$1","_getDropImpact","lastImpact","didDropInsideDroppable","getDropImpact","newClientCenter","getNewHomeClientOffset","distance$1","getDropDuration","animateDrop","dropPending","getWindowScroll","getScrollListener","onWindowScroll","scheduled","rafSchd","getWindowScrollBinding","isActive","scrollListener","shouldEnd","getAsyncMarshal","timerId","execute","shallow","withTimings","getDragStart","responder","announce","getDefaultMessage","willExpire","wasCalled","isExpired","timeoutId","getExpiringAnnounce","responders","getResponders","publisher","asyncMarshal","dragging","onDragEnd","beforeCapture","onBeforeCapture","beforeStart","onBeforeDragStart","lastCritical","lastLocation","lastCombine","onDragStart","hasCriticalChanged","isDraggableEqual","isDroppableEqual","isCriticalEqual","hasLocationChanged","hasGroupingChanged","isCombineEqual","onDragUpdate","getPublisher","dropAnimationFinish","dropAnimationFlushOnScroll","once","pendingDrop","postActionState","composeEnhancers","marshal","dimensionMarshal","focusMarshal","styleMarshal","autoScroller","createStore$1","_dispatch","dropping","resting","stopPublishing","dimensionMarshalStopper","scrollOptions","shouldPublishImmediately","_marshal$startPublish","startPublishing","lift$1","shouldStop","autoScroll","isWatching","tryRecordFocus","tryRestoreFocusRecorded","tryShiftRecord","getMaxScroll","scrollHeight","scrollWidth","getDocumentElement","getMaxWindowScroll","getInitialPublish","registry","getViewport","windowScroll","getAllByType","getDimensionAndWatchScroll","getDimension","shouldPublishUpdate","getById","createDimensionMarshal","staging","collect","_staging","getScrollWhileDragging","publish","createPublisher","subscriber","dragStopped","canStartDrag","scrollWindow","scrollBy","getScrollableDroppables","getBestScrollableDroppable","_dimension","maybe","getScrollableDroppableOver","stopDampeningAt","accelerateAt","getPercentage","startOfRange","endOfRange","stopAt","distanceToEdge","dragStartTime","shouldUseTimeDampening","startScrollingFrom","maxScrollValueAt","percentageFromMaxScrollValueAt","getValueFromDistance","proposedScroll","runTime","betweenAccelerateAtAndStopAtPercentage","dampenValueByTime","getScrollOnAxis","distanceToEdges","getDistanceThresholds","clean$2","getScroll","limited","isTooBigVertically","isTooBigHorizontally","adjustForSizeLimits","smallestSigned","getOverlap","getRemainder","targetScroll","overlap","canPartiallyScroll","rawMax","smallestChange","canScrollWindow","canScrollDroppable","scroll$1","_change","getWindowScrollChange","getDroppableScrollChange","createJumpScroller","scrollDroppableAsMuchAsItCan","getDroppableOverlap","whatTheDroppableCanScroll","scrollWindowAsMuchAsItCan","getWindowOverlap","whatTheWindowCanScroll","droppableRemainder","windowRemainder","moveByOffset","createAutoScroller","fluidScroller","scheduleWindowScroll","scheduleDroppableScroll","tryScroll","_dragging","wasScrollNeeded","fakeScrollCallback","createFluidScroller","jumpScroll","scroller","prefix$1","dragHandle","contextId","scrollContainer","getStyles","getStyles$1","getSelector","dragHandle$1","grabCursor","always","dropAnimating","userCancel","getHead","createStyleEl","getWindowFromEl","isHtmlElement","HTMLElement","findDragHandle","possible","createRegistry","subscribers","findDraggableById","findDroppableById","register","uniqueId","unregister","findById","StoreContext","getBodyElement","visuallyHidden","getId","separator","useUniqueId","AppContext","useDev","useHook","useDevSetupWarning","_preventedKeys","arrowLeft","arrowUp","arrowRight","arrowDown","preventedKeys","preventStandardKeyEvents","supportedEventName","primaryButton","sloppyClickThreshold","_scrollJumpKeys","idle$1","getCaptureBindings","getPhase","setPhase","isSloppyClickThresholdExceeded","fluidLift","shouldBlockNextClick","shouldRespectForcePress","noop$1","scrollJumpKeys","getDraggingBindings","idle$2","forcePressThreshold","interactiveTagNames","textarea","optgroup","isAnInteractiveElement","parentElement","isEventInInteractiveElement","getBorderBoxCenterPosition","supportedMatchesName","closestPonyfill","closest$1","findClosestDragHandleFromEvent","_isActive","expected","isLockActive","shouldWarn","canStart","lockAPI","isClaimed","tryStart","forceSensorStop","draggable$1","findDraggable","canDragInteractiveElements","claim","getShouldRespectForcePress","tryDispatchWhenDragging","getAction","cleanup","liftActionArgs","preDrag","move$1","snapLift","defaultSensors","api","phaseRef","unbindEventsRef","startCaptureBinding","findClosestDraggableId","tryGetLock","startPendingDrag","preventForcePressBinding","findOptionsForDraggable","canGetLock","listenForCapture","bindCapturingEvents","isCapturing","longPressTimerId","unbindTarget","hasMoved","_event$touches$","shouldRespect","getHandleBindings","unbindWindow","getWindowBindings","startDragging","useSensorMarshal","customSensors","enableDefaultSensors","useSensors","abandon","newLock","tryAbandon","tryAbandonLock","forceStop","tryGetClosestDraggableIdFromEvent","tryReleaseLock","isLockClaimed","createResponders","getStore","lazyRef","App","sensors","dragHandleUsageInstructions","lazyStoreRef","lastPropsRef","useAnnouncer","dragHandleUsageInstructionsId","useHiddenTextElement","alwaysRef","dynamicRef","setDynamicStyle","setAlwaysStyle","dynamic","useStyleMarshal","lazyDispatch","marshalCallbacks","useRegistry","entriesRef","recordRef","restoreFocusFrameRef","isMountedRef","tryGiveFocus","tryGiveFocusTo","redirectTo","record","focused","useFocusMarshal","tryResetStore","getCanLift","getIsMovementAllowed","appContext","canLift","count$1","DragDropContext","isEqual$1","isScroll","isAuto","isEither","overflowX","overflowY","isElementScrollable","getClosestScrollable","getScroll$1","getIsFixed","getEnv","closestScrollable","isDropDisabled","targetRef","getClient","frameClient","scrollSize","getDroppableDimension","immediate","delayed","getListenerOptions","useRequiredContext","getClosestScrollableFromDrag","noop$2","getStyle","isAnimatingOpenOnMount","getSize","boxSizing","pointerEvents","Placeholder$1","animateOpenTimerRef","tryClearAnimateOpenTimer","onTransitionEnd","_useState","setIsAnimatingOpenOnMount","onSizeChangeEnd","innerRef","DroppableContext","AnimateInOut","_React$PureComponent","provided","zIndexOptions","getDraggingTransition","shouldAnimateDragMovement","getDraggingOpacity","isDropAnimating","getShouldDraggingAnimate","getStyle$1","getDraggingStyle","secondary","shouldAnimateDisplacement","useDraggablePublisher","getDraggableRef","computedStyles","getDimension$1","publishedRef","isFirstPublishRef","useValidation$1","getRef","preventHtml5Dnd","isStrictEqual","whatIsDraggedOverFromResult","getSecondarySnapshot","combineTargetFor","dropAnimation","draggingOver","atRest","snapshot","ConnectedDraggable","connect","draggingSelector","memoizedOffset","getMemoizedSnapshot","getMemoizedProps","_draggingOver","_combineWith","getCombineWithFromResult","getDraggableSelector","secondarySelector","getFallback","getProps","ownId","draggingId","visualDisplacement","isAfterCriticalInVirtualList","_offset","getSecondarySelector","setRef","_useRequiredContext","_useRequiredContext2","dropAnimationFinishedAction","dragHandleProps","onMoveEnd","draggableProps","rubric","PrivateDraggable","isUsingCloneFor","PublicDraggable","isDragDisabled","disableInteractiveElementBlocking","isMatchingType","getDraggable","ignoreContainerClipping","renderClone","getContainerForClone","ConnectedDroppable","idleWithAnimation","shouldAnimatePlaceholder","isDraggingOver","draggingOverWith","draggingFromThisWith","isUsingPlaceholder","useClone","idleWithoutAnimation","getDraggableRubric","getMapProps","isDraggingOverForConsumer","isDraggingOverForImpact","_snapshot","_completed","wasCombining","isHome","updateViewportMaxScroll","droppableRef","placeholderRef","getDroppableRef","setDroppableRef","setPlaceholderRef","onPlaceholderTransitionEnd","whileDraggingRef","previousRef","publishedDescriptorRef","memoizedUpdateScroll","getClosestScroll","updateScroll","scheduleScrollUpdate","onClosestScroll","useDroppablePublisher","droppableProps","droppableContext","draggableProvided","draggableSnapshot","getClone","SvgIcMenudot","SvgEiStatus","SvgEiDate","SvgEiDeal","SvgEiSector","SvgEiPitchdeck","SvgEiOnepager","SvgEiRevenue","SvgEiBurn","SvgIcStar","SvgIcNoofinv","SvgIcLinkedin","getInvestors","clickRefresh","setMessage","SaveAPICall","investor_fav_id","isDisable","investor_name","Menutitletext","investor_type","EIStatusIcon","Menutext","investor_status","StarIcon","industryexisting_investments","stagesitem","industry","EIDateIcon","NoofIcon","website","LinkedinIcon","submitClick","BoardView","dashboarddate","ShowInvestorDetails","setShowInvestorDetails","SelectInvestor","setSelectInvestor","CRMdataItems","BoardAPICall","mCRMBoard","shortlistedItem","investors_board","shortlisted","itemsTitle","contactedItem","contacted","pitchedItem","pitched","wonItem","won","setColumns","ChangeCRMStatusAPICall","investorid","movedstatus","mMoveCRMBoard","moved_status","gridshow","setGridShow","mDeleteCRM","sourceColumn","destColumn","sourceItems","destItems","removed","copiedItems","columnId","Droppable","Draggable","EditInvestors","MultiRangeSlider","handleButtonClick","minVal","setMinVal","maxVal","setMaxVal","minValRef","maxValRef","triggerButtonClick","getPercent","minPercent","maxPercent","SvgIcTickgray","onShowDialog","onDialogCancel","rangeValues","setRangeValues","investordb","setinvestordb","ShowInvestorItem","setShowInvestorItem","setshowDialog","checkSizeMin","setcheckSizeMin","checkSizeMax","setcheckSizeMax","mInvestordb","investor_db","clickViewInvestor","ShortlistAPICall","mInvestorShortlist","investor_id","InvestorType","selectedInvestorType","setSelectedInvestorType","selectedFilterNames","stage","selectedStage","setSelectedStage","selectedStageNames","childRef","clearall","handleInvestorTypeCheckbox","prevSelected","handleStageCheckbox","filterClick","DottedIcon","funding_stages","clickShortlist","TickIcon","SvgIcFilter","StartupCRM","boardView","setBoardView","setValues","Filter","SuggestedStartupInvestors","SvgIcTick","Subscription","subscriptionPlan","setsubscriptionPlan","GetsubscriptionListAPICall","getSubscriptionplan","subscription_plan_details","offer_price","plan_name","BuySubscription","buySubscription","plan_id","plan_amount","paid_amount","calculateGST","payment_id","payment_status","current_plan_purchase","recommended_plan_status","format_actual_plan_price","format_offer_price","proClick","item1","plan_feature","SvgIcCompany","SvgIcSetting","SvgIcEdit","SvgIcGender","SvgIcMobile","SvgIcMail","mEditclick","mEditAboutclick","getprofileInformation","EditIcon","GenderIcon","gender","MobileIcon","mobile_no","MailIcon","mail_id","about","SvgIcPostion","SvgIcSector","SvgIcAddress","mcompEditclick","mcompEditAboutclick","companyInformation","PostionIcon","SectorIcon","sector","AddressIcon","address","company_about","Accountinfo","confirmpassword","setconfirmPassword","notificationdetails","setNotificationDetails","stageselectedItems","setstageSelectedItems","updatePwdClick","PasswordchangeAPICall","passwordchange","current_password","handlestageCheckboxChange","prevSelectedItems","itemId","notification_type","SvgIcClosegreen","SvgIcSubscriptions","SvgIcPaymentlist","SubscriptionInfo","selectView","setSelectView","allpayments","setAllpayments","successpayment","setSuccesspayment","failedpayment","setFailedpayment","currentPlan","setcurrentPlan","getpaymentdetails","subscription_payment_details","current_plan","all_payments","success_payment","failed_payment","SubscriptionsIcon","PaymentIcon","TabelHeading","CodeHeading","AmountHeading","StatusHeading","TimeHeading","clickCompOutsideClose","isEditAbout","profileInformation","setFullName","mobileno","setMobileno","setEmailId","setLinkedin","setGender","setabout","isAboutDisabled","SaveCall","mEditpersonaldetails","SaveAboutCall","mEditAboutprofile","aboutsaveClick","saveClick","findEntryByCode","codex","isoCode","defaultKeyToCompare","entity","keyToCompare","convertArrayToObject","subArr","fromEntries","getCountryByCode","countryList","getAllCountries","sortByIsoCode","countries","getAllStates","stateList","getStatesOfCountry","countryCode","getStateByCodeAndCountry","stateCode","findStateByCodeAndCountryCode","getStateByCode","KEYS","convertedCityList","getAllCities","cityList","getCitiesOfState","getCitiesOfCountry","sortByStateAndName","cities","setCompanyName","postion","setSector","setAddress","setWebsite","mEditcompanydetails","address_id","city","selectedCity","country","selectedCountry","pincode","mEditAboutcompany","about_company","setSelectedCountry","selectedCountryid","setSelectedCountryid","setSelectedState","selectedStateid","setSelectedStateid","setSelectedCity","Countryfiltered","setCountryFiltered","mGetState","setmGetState","Statefiltered","setStateFiltered","mGetCity","setmGetCity","Cityfiltered","setCityfiltered","isCountryDropdownDisabled","setIsCountryDropdownDisabled","isStateDropdownDisabled","setIsStateDropdownDisabled","isCityDropdownDisabled","setIsCityDropdownDisabled","isStateDisabled","setIsStateDisabled","isCityDisabled","setIsCityDisabled","countryOptions","Country","saveAboutClick","handleCountrySelect","stateOptions","State","filteredStateSuggestions","handleStateSelect","cityOptions","City","filteredCitySuggestions","handleCitySelect","ProfilePage","setisEditAbout","showView","setshowView","profileEditShow","setprofileEditShow","companyEditShow","setcompanyEditShow","setProfileInformation","setCompanyInformation","ProfilePageAPICall","mGetprofile","setUserImage","profile_information","company_information","userimage","onChooseImg","prevUploadFiles","setProfileImage","ProfileSideMenu","Profileinfo","Editclick","EditAboutclick","Companyinfo","CompEditclick","CompEditAboutclick","Profileinfoedit","clickOutsideClose","Companyinfoedit","clickCompClose","SvgIcHelpuparrow","SvgIcHelpdownarrow","SvgNewIcWatermarkbg","isModalOpen","setIsModalOpen","isOverflowing","setIsOverflowing","textRef","openModal","closeModal","HelpSupport","expandedIndex","setExpandedIndex","FAQSupport","setFAQSupport","supportticket","setSupportTicket","FAQSuppportAPICall","SupportTicketList","FAQSuppport","fsq_support","getSupportTicket","support_ticket","onCreateSupport","fileData","upload_file","file_attach","createsupportticket","ticket_type","handleToggle","fsq_question","UparrowIcon","DownarrowIcon","fsq_description","chapter_name","ticket_status","ReadMoreText","Watermark","SvgIcShare","SvgQuestion","MiniLoader","Zenchat","mClickPostion","setmClickPostion","Chat","setChat","DeckList","setDeckList","SelectedDeck","setSelectedDeck","ChatQuestion","setChatQuestion","ChatType","setChatType","ChatTopics","setChatTopics","ChatTypeid","setChatTypeid","bottomRef","ChatConversation","setChatConversation","Index","setIndex","apiCalledRef","ChatListAPICall","chatType","mChatTopics","getChatlist","type_of_chat","prompt_type","chat_list","deck_list","setSelectedOptionid","ChatConversationListAPICall","_bottomRef$current","scrollIntoView","behavior","mSelectedDeck","getchatconversationlist","chat_conversation","chatTopicsClick","getchat","selectedOptionid","isTypeOpen","setTypeIsOpen","ChatConversationAPICall","getchatconversation","user_prompt","Question","mchat","chat_box","chate_time","questions","QuestionClick","question","QuestionIcon","toggleTypeDropdown","chatTypeClick","ShareIcon","questionClick","SuggestingStartupInvestors","InvestorDashboard","summary_details","applied_date","EIDealIcon","source_of_deal","EISectorIcon","EIPitchdeckIcon","pitch_deck_link","EIBurnIcon","burn","ask","EIRevenueIcon","revenue","EIOnepagerIcon","one_page_link","Deals","dealsdb","setdealsdb","mGetDeals","investor_crm","mGetDealsShortlist","crm_id","DealsDetails","CRMList","CRMListAPICall","mCRMList","dealItem","deal","evaluatingItem","evaluating","diligenceItem","diligence","investmentcommitteeItem","investment_committee","investedItem","invested","mCRMStatus","mCRMDelete","CRMListDetails","InvestorCRM","ToastContainer","autoClose","hideProgressBar","newestOnTop","closeOnClick","pauseOnFocusLoss","pauseOnHover","reportWebVitals"],"sourceRoot":""}