ivt 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion/index.mjs +1 -1
- package/dist/alert/index.mjs +1 -1
- package/dist/alert-dialog/index.mjs +1 -1
- package/dist/avatar/index.mjs +1 -1
- package/dist/avatar/index.mjs.map +1 -1
- package/dist/badge/index.mjs +1 -1
- package/dist/base/index.d.ts +27 -2
- package/dist/base/index.mjs +1 -1
- package/dist/base/index.mjs.map +1 -1
- package/dist/button/index.mjs +1 -1
- package/dist/calendar/index.mjs +1 -1
- package/dist/card/index.mjs +1 -1
- package/dist/chart/index.d.ts +55 -0
- package/dist/chart/index.mjs +2 -0
- package/dist/chart/index.mjs.map +1 -0
- package/dist/checkbox/index.mjs +1 -1
- package/dist/checkbox/index.mjs.map +1 -1
- package/dist/chunks/_commonjsHelpers-Bjj-JKBe.mjs +2 -0
- package/dist/chunks/_commonjsHelpers-Bjj-JKBe.mjs.map +1 -0
- package/dist/chunks/{accordion-BD1JRhVx.mjs → accordion-Dl9OR3bi.mjs} +2 -2
- package/dist/chunks/{accordion-BD1JRhVx.mjs.map → accordion-Dl9OR3bi.mjs.map} +1 -1
- package/dist/chunks/{badge-BlZWYqiz.mjs → badge-DQMrqIyu.mjs} +2 -2
- package/dist/chunks/{badge-BlZWYqiz.mjs.map → badge-DQMrqIyu.mjs.map} +1 -1
- package/dist/chunks/{bundle-mjs-p2tkjPN1.mjs → bundle-mjs-DRUwh-0R.mjs} +1 -1
- package/dist/chunks/{bundle-mjs-p2tkjPN1.mjs.map → bundle-mjs-DRUwh-0R.mjs.map} +1 -1
- package/dist/chunks/{button-DrtQQeut.mjs → button-Dhe5fFAk.mjs} +2 -2
- package/dist/chunks/{button-DrtQQeut.mjs.map → button-Dhe5fFAk.mjs.map} +1 -1
- package/dist/chunks/{calendar-Dtopgd_k.mjs → calendar-BCdWZz2_.mjs} +2 -2
- package/dist/chunks/{calendar-Dtopgd_k.mjs.map → calendar-BCdWZz2_.mjs.map} +1 -1
- package/dist/chunks/check-CTdDPXjk.mjs +2 -0
- package/dist/chunks/{check-XiDheatr.mjs.map → check-CTdDPXjk.mjs.map} +1 -1
- package/dist/chunks/chevron-down-DDHw_qmV.mjs +2 -0
- package/dist/chunks/{chevron-down-B1yMwors.mjs.map → chevron-down-DDHw_qmV.mjs.map} +1 -1
- package/dist/chunks/chevron-left-CjUEKmgQ.mjs +2 -0
- package/dist/chunks/{chevron-left-HipRXZQ8.mjs.map → chevron-left-CjUEKmgQ.mjs.map} +1 -1
- package/dist/chunks/chevron-right-BaRUY2Lm.mjs +2 -0
- package/dist/chunks/{chevron-right-BS1_kgp8.mjs.map → chevron-right-BaRUY2Lm.mjs.map} +1 -1
- package/dist/chunks/circle-B6AT9LZB.mjs +2 -0
- package/dist/chunks/circle-B6AT9LZB.mjs.map +1 -0
- package/dist/chunks/{command-DzL_b7f4.mjs → command-B20MmNTS.mjs} +2 -2
- package/dist/chunks/{command-DzL_b7f4.mjs.map → command-B20MmNTS.mjs.map} +1 -1
- package/dist/chunks/{createLucideIcon-CsAdJd--.mjs → createLucideIcon-Bub0IDlo.mjs} +1 -1
- package/dist/chunks/{createLucideIcon-CsAdJd--.mjs.map → createLucideIcon-Bub0IDlo.mjs.map} +1 -1
- package/dist/chunks/{dialog-D8zOlPrU.mjs → dialog-DvFOk-pv.mjs} +2 -2
- package/dist/chunks/{dialog-D8zOlPrU.mjs.map → dialog-DvFOk-pv.mjs.map} +1 -1
- package/dist/chunks/{hover-card-Cd6sPuv9.mjs → hover-card-D8uFTCNm.mjs} +2 -2
- package/dist/chunks/{hover-card-Cd6sPuv9.mjs.map → hover-card-D8uFTCNm.mjs.map} +1 -1
- package/dist/chunks/{index-C5Y3Sf57.mjs → index-0ahJ1Q21.mjs} +2 -2
- package/dist/chunks/{index-C5Y3Sf57.mjs.map → index-0ahJ1Q21.mjs.map} +1 -1
- package/dist/chunks/{index-ZEFtUcMw.mjs → index-B7nzlBcT.mjs} +2 -2
- package/dist/chunks/{index-ZEFtUcMw.mjs.map → index-B7nzlBcT.mjs.map} +1 -1
- package/dist/chunks/{index-CDjTdrNO.mjs → index-BOWDavn2.mjs} +2 -2
- package/dist/chunks/{index-CDjTdrNO.mjs.map → index-BOWDavn2.mjs.map} +1 -1
- package/dist/chunks/{index-B_x_ais9.mjs → index-Bo9g9ZHj.mjs} +2 -2
- package/dist/chunks/{index-B_x_ais9.mjs.map → index-Bo9g9ZHj.mjs.map} +1 -1
- package/dist/chunks/{index-C2Fe0koc.mjs → index-Bt73Afz2.mjs} +1 -1
- package/dist/chunks/{index-C2Fe0koc.mjs.map → index-Bt73Afz2.mjs.map} +1 -1
- package/dist/chunks/index-Bv09gbbz.mjs +2 -0
- package/dist/chunks/index-Bv09gbbz.mjs.map +1 -0
- package/dist/chunks/{index-LYeASA5N.mjs → index-C4C3l5WF.mjs} +2 -2
- package/dist/chunks/{index-LYeASA5N.mjs.map → index-C4C3l5WF.mjs.map} +1 -1
- package/dist/chunks/{index-CQLZqpi3.mjs → index-CaYe_hNP.mjs} +1 -1
- package/dist/chunks/{index-CQLZqpi3.mjs.map → index-CaYe_hNP.mjs.map} +1 -1
- package/dist/chunks/{index-CgLDADnA.mjs → index-Cu6LwID6.mjs} +1 -1
- package/dist/chunks/{index-CgLDADnA.mjs.map → index-Cu6LwID6.mjs.map} +1 -1
- package/dist/chunks/{index-CTsIdIko.mjs → index-CzTsDkbO.mjs} +2 -2
- package/dist/chunks/{index-CTsIdIko.mjs.map → index-CzTsDkbO.mjs.map} +1 -1
- package/dist/chunks/{index-B70-2oxO.mjs → index-DBp_Gx1M.mjs} +1 -1
- package/dist/chunks/{index-B70-2oxO.mjs.map → index-DBp_Gx1M.mjs.map} +1 -1
- package/dist/chunks/{index-g_YR6VZJ.mjs → index-DZgHf-gI.mjs} +1 -1
- package/dist/chunks/{index-g_YR6VZJ.mjs.map → index-DZgHf-gI.mjs.map} +1 -1
- package/dist/chunks/index-DheYAHt3.mjs +2 -0
- package/dist/chunks/index-DheYAHt3.mjs.map +1 -0
- package/dist/chunks/{index-fgRlmr40.mjs → index-DmBXPUeL.mjs} +1 -1
- package/dist/chunks/{index-fgRlmr40.mjs.map → index-DmBXPUeL.mjs.map} +1 -1
- package/dist/chunks/{index-Dxh10iPI.mjs → index-DuDVR7ID.mjs} +1 -1
- package/dist/chunks/{index-Dxh10iPI.mjs.map → index-DuDVR7ID.mjs.map} +1 -1
- package/dist/chunks/{index-C-Of5QmS.mjs → index-GOFmxCuq.mjs} +2 -2
- package/dist/chunks/{index-C-Of5QmS.mjs.map → index-GOFmxCuq.mjs.map} +1 -1
- package/dist/chunks/{index-CIJFMEHT.mjs → index-VuwFoF4R.mjs} +2 -2
- package/dist/chunks/{index-CIJFMEHT.mjs.map → index-VuwFoF4R.mjs.map} +1 -1
- package/dist/chunks/{index-Dx9q9PhQ.mjs → index-ZCQr-O7f.mjs} +2 -2
- package/dist/chunks/{index-Dx9q9PhQ.mjs.map → index-ZCQr-O7f.mjs.map} +1 -1
- package/dist/chunks/index-czDftnY4.mjs +2 -0
- package/dist/chunks/index-czDftnY4.mjs.map +1 -0
- package/dist/chunks/{index-DRqB8wXi.mjs → index-gfwlB8lL.mjs} +2 -2
- package/dist/chunks/{index-DRqB8wXi.mjs.map → index-gfwlB8lL.mjs.map} +1 -1
- package/dist/chunks/{input-B-LMt_h_.mjs → input-DnILT0JB.mjs} +2 -2
- package/dist/chunks/{input-B-LMt_h_.mjs.map → input-DnILT0JB.mjs.map} +1 -1
- package/dist/chunks/{label-D5csAh9b.mjs → label-C4MbS7O2.mjs} +2 -2
- package/dist/chunks/{label-D5csAh9b.mjs.map → label-C4MbS7O2.mjs.map} +1 -1
- package/dist/chunks/{pagination-BsXOOwtn.mjs → pagination-BvnQsAX6.mjs} +2 -2
- package/dist/chunks/{pagination-BsXOOwtn.mjs.map → pagination-BvnQsAX6.mjs.map} +1 -1
- package/dist/chunks/{popover-Dov1Buds.mjs → popover-CLYjD1Mz.mjs} +2 -2
- package/dist/chunks/{popover-Dov1Buds.mjs.map → popover-CLYjD1Mz.mjs.map} +1 -1
- package/dist/chunks/{progress-C3Y_Swsn.mjs → progress-B7e979vj.mjs} +2 -2
- package/dist/chunks/{progress-C3Y_Swsn.mjs.map → progress-B7e979vj.mjs.map} +1 -1
- package/dist/chunks/{scroll-area-DW059l0P.mjs → scroll-area-DeP5Jei7.mjs} +2 -2
- package/dist/chunks/{scroll-area-DW059l0P.mjs.map → scroll-area-DeP5Jei7.mjs.map} +1 -1
- package/dist/chunks/{select-vTAesIVv.mjs → select-BdrpNh7G.mjs} +2 -2
- package/dist/chunks/{select-vTAesIVv.mjs.map → select-BdrpNh7G.mjs.map} +1 -1
- package/dist/chunks/{separator-20h7d7UI.mjs → separator-DbIrm4r-.mjs} +2 -2
- package/dist/chunks/{separator-20h7d7UI.mjs.map → separator-DbIrm4r-.mjs.map} +1 -1
- package/dist/chunks/{skeleton-B4z6D5eV.mjs → skeleton-j85jApz0.mjs} +2 -2
- package/dist/chunks/{skeleton-B4z6D5eV.mjs.map → skeleton-j85jApz0.mjs.map} +1 -1
- package/dist/chunks/{sortable-D7jRCUMx.mjs → sortable-D6tXnjgL.mjs} +2 -2
- package/dist/chunks/{sortable-D7jRCUMx.mjs.map → sortable-D6tXnjgL.mjs.map} +1 -1
- package/dist/chunks/{table-CvqlUil9.mjs → table-BsrKQPpM.mjs} +2 -2
- package/dist/chunks/{table-CvqlUil9.mjs.map → table-BsrKQPpM.mjs.map} +1 -1
- package/dist/chunks/{toggle-BsT2kdMw.mjs → toggle-DFi2H45K.mjs} +2 -2
- package/dist/chunks/{toggle-BsT2kdMw.mjs.map → toggle-DFi2H45K.mjs.map} +1 -1
- package/dist/chunks/{tslib.es6-CISrQAm2.mjs → tslib.es6-mR5Ag05r.mjs} +1 -1
- package/dist/chunks/{tslib.es6-CISrQAm2.mjs.map → tslib.es6-mR5Ag05r.mjs.map} +1 -1
- package/dist/chunks/utils-C1EKaz-p.mjs +2 -0
- package/dist/chunks/{utils-Dp2SHrBW.mjs.map → utils-C1EKaz-p.mjs.map} +1 -1
- package/dist/chunks/x-B1PdcxpA.mjs +2 -0
- package/dist/chunks/{x-CrlN9yY1.mjs.map → x-B1PdcxpA.mjs.map} +1 -1
- package/dist/combobox/index.mjs +1 -1
- package/dist/command/index.mjs +1 -1
- package/dist/data-table/index.mjs +1 -1
- package/dist/dialog/index.mjs +1 -1
- package/dist/dropdown-menu/index.mjs +1 -1
- package/dist/dropdown-menu/index.mjs.map +1 -1
- package/dist/dropzone/index.mjs +1 -1
- package/dist/dropzone/index.mjs.map +1 -1
- package/dist/form/index.mjs +1 -1
- package/dist/hover-card/index.mjs +1 -1
- package/dist/icon/index.mjs +1 -1
- package/dist/index.css +1 -1
- package/dist/input/index.mjs +1 -1
- package/dist/ivt.css +1 -1
- package/dist/label/index.mjs +1 -1
- package/dist/menubar/index.d.ts +29 -0
- package/dist/menubar/index.mjs +2 -0
- package/dist/menubar/index.mjs.map +1 -0
- package/dist/multi-select/index.mjs +1 -1
- package/dist/pagination/index.mjs +1 -1
- package/dist/popover/index.mjs +1 -1
- package/dist/progress/index.mjs +1 -1
- package/dist/radio-group/index.d.ts +7 -1
- package/dist/radio-group/index.mjs +1 -1
- package/dist/radio-group/index.mjs.map +1 -1
- package/dist/scroll-area/index.mjs +1 -1
- package/dist/select/index.mjs +1 -1
- package/dist/separator/index.mjs +1 -1
- package/dist/sheet/index.mjs +1 -1
- package/dist/skeleton/index.mjs +1 -1
- package/dist/sortable/index.mjs +1 -1
- package/dist/table/index.mjs +1 -1
- package/dist/tabs/index.mjs +1 -1
- package/dist/textarea/index.d.ts +5 -1
- package/dist/textarea/index.mjs +1 -1
- package/dist/textarea/index.mjs.map +1 -1
- package/dist/toast/index.mjs +1 -1
- package/dist/toggle/index.mjs +1 -1
- package/dist/toggle-group/index.mjs +1 -1
- package/dist/tooltip/index.mjs +1 -1
- package/package.json +10 -1
- package/dist/chunks/check-XiDheatr.mjs +0 -2
- package/dist/chunks/chevron-down-B1yMwors.mjs +0 -2
- package/dist/chunks/chevron-left-HipRXZQ8.mjs +0 -2
- package/dist/chunks/chevron-right-BS1_kgp8.mjs +0 -2
- package/dist/chunks/utils-Dp2SHrBW.mjs +0 -2
- package/dist/chunks/x-CrlN9yY1.mjs +0 -2
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js","../../node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js","../../node_modules/es-toolkit/dist/compat/_internal/toKey.js","../../node_modules/es-toolkit/dist/compat/util/toPath.js","../../node_modules/es-toolkit/dist/compat/object/get.js","../../node_modules/es-toolkit/compat/get.js","../../node_modules/recharts/es6/util/DataUtils.js","../../node_modules/recharts/es6/util/types.js","../../node_modules/recharts/es6/util/ReactUtils.js","../../node_modules/recharts/es6/container/Surface.js","../../node_modules/recharts/es6/context/legendPortalContext.js","../../node_modules/d3-shape/src/constant.js","../../node_modules/d3-shape/src/math.js","../../node_modules/d3-path/src/path.js","../../node_modules/d3-shape/src/path.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/curve/bump.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/square.js","../../node_modules/d3-shape/src/symbol/star.js","../../node_modules/d3-shape/src/symbol/triangle.js","../../node_modules/d3-shape/src/symbol/wye.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/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/recharts/es6/shape/Symbols.js","../../node_modules/d3-shape/src/symbol.js","../../node_modules/recharts/es6/component/DefaultLegendContent.js","../../node_modules/es-toolkit/dist/array/uniqBy.js","../../node_modules/es-toolkit/dist/function/identity.js","../../node_modules/es-toolkit/dist/predicate/isLength.js","../../node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js","../../node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js","../../node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js","../../node_modules/es-toolkit/dist/compat/object/property.js","../../node_modules/es-toolkit/dist/compat/predicate/isObject.js","../../node_modules/es-toolkit/dist/predicate/isPrimitive.js","../../node_modules/es-toolkit/dist/compat/util/eq.js","../../node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js","../../node_modules/es-toolkit/dist/compat/predicate/isMatch.js","../../node_modules/es-toolkit/dist/compat/_internal/getSymbols.js","../../node_modules/es-toolkit/dist/compat/_internal/getTag.js","../../node_modules/es-toolkit/dist/compat/_internal/tags.js","../../node_modules/es-toolkit/dist/predicate/isTypedArray.js","../../node_modules/es-toolkit/dist/object/cloneDeepWith.js","../../node_modules/es-toolkit/dist/object/cloneDeep.js","../../node_modules/es-toolkit/dist/compat/predicate/matches.js","../../node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js","../../node_modules/es-toolkit/dist/compat/object/cloneDeep.js","../../node_modules/es-toolkit/dist/compat/_internal/isIndex.js","../../node_modules/es-toolkit/dist/compat/predicate/isArguments.js","../../node_modules/es-toolkit/dist/compat/object/has.js","../../node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js","../../node_modules/es-toolkit/dist/compat/util/iteratee.js","../../node_modules/es-toolkit/dist/compat/array/uniqBy.js","../../node_modules/es-toolkit/compat/uniqBy.js","../../node_modules/recharts/es6/util/payload/getUniqPayload.js","../../node_modules/use-sync-external-store/shim/with-selector.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../../node_modules/recharts/es6/state/RechartsReduxContext.js","../../node_modules/recharts/es6/state/hooks.js","../../node_modules/reselect/dist/reselect.mjs","../../node_modules/es-toolkit/dist/compat/_internal/compareValues.js","../../node_modules/es-toolkit/dist/compat/predicate/isSymbol.js","../../node_modules/es-toolkit/dist/compat/_internal/isKey.js","../../node_modules/es-toolkit/dist/compat/array/orderBy.js","../../node_modules/es-toolkit/dist/array/flatten.js","../../node_modules/es-toolkit/dist/compat/_internal/isIterateeCall.js","../../node_modules/es-toolkit/dist/compat/array/sortBy.js","../../node_modules/es-toolkit/compat/sortBy.js","../../node_modules/recharts/es6/state/selectors/legendSelectors.js","../../node_modules/recharts/es6/util/useElementOffset.js","../../node_modules/immer/dist/immer.mjs","../../node_modules/recharts/es6/util/PolarUtils.js","../../node_modules/recharts/es6/util/ChartUtils.js","../../node_modules/d3-shape/src/offset/expand.js","../../node_modules/d3-shape/src/offset/silhouette.js","../../node_modules/d3-shape/src/offset/wiggle.js","../../node_modules/recharts/es6/state/selectors/containerSelectors.js","../../node_modules/recharts/es6/state/selectors/selectAllAxes.js","../../node_modules/recharts/es6/state/selectors/selectChartOffsetInternal.js","../../node_modules/recharts/es6/util/Constants.js","../../node_modules/recharts/es6/context/PanoramaContext.js","../../node_modules/recharts/es6/state/selectors/brushSelectors.js","../../node_modules/recharts/es6/context/chartLayoutContext.js","../../node_modules/recharts/es6/state/legendSlice.js","../../node_modules/recharts/es6/component/Legend.js","../../node_modules/recharts/es6/context/legendPayloadContext.js","../../node_modules/recharts/es6/component/DefaultTooltipContent.js","../../node_modules/recharts/es6/util/tooltip/translate.js","../../node_modules/recharts/es6/component/TooltipBoundingBox.js","../../node_modules/recharts/es6/util/Global.js","../../node_modules/recharts/es6/util/isWellBehavedNumber.js","../../node_modules/recharts/es6/shape/Curve.js","../../node_modules/recharts/es6/shape/Cross.js","../../node_modules/recharts/es6/util/resolveDefaultProps.js","../../node_modules/es-toolkit/dist/predicate/isPlainObject.js","../../node_modules/es-toolkit/dist/predicate/isEqualWith.js","../../node_modules/es-toolkit/dist/function/noop.js","../../node_modules/es-toolkit/dist/predicate/isEqual.js","../../node_modules/es-toolkit/compat/isEqual.js","../../node_modules/recharts/es6/animation/easing.js","../../node_modules/recharts/es6/animation/util.js","../../node_modules/recharts/es6/animation/configUpdate.js","../../node_modules/recharts/es6/animation/timeoutController.js","../../node_modules/recharts/es6/animation/Animate.js","../../node_modules/recharts/es6/animation/AnimationManager.js","../../node_modules/recharts/es6/shape/Rectangle.js","../../node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js","../../node_modules/recharts/es6/shape/Sector.js","../../node_modules/recharts/es6/util/cursor/getCursorPoints.js","../../node_modules/es-toolkit/dist/compat/util/toNumber.js","../../node_modules/es-toolkit/dist/compat/util/toFinite.js","../../node_modules/es-toolkit/dist/compat/math/range.js","../../node_modules/es-toolkit/compat/range.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/internmap/src/index.js","../../node_modules/d3-array/src/sort.js","../../node_modules/d3-array/src/ticks.js","../../node_modules/d3-array/src/max.js","../../node_modules/d3-array/src/min.js","../../node_modules/d3-array/src/quickselect.js","../../node_modules/d3-array/src/quantile.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-array/src/range.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-color/src/color.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-interpolate/src/round.js","../../node_modules/d3-interpolate/src/piecewise.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-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-scale/src/tickFormat.js","../../node_modules/d3-format/src/precisionPrefix.js","../../node_modules/d3-format/src/precisionRound.js","../../node_modules/d3-format/src/precisionFixed.js","../../node_modules/d3-scale/src/linear.js","../../node_modules/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-time/src/interval.js","../../node_modules/d3-time/src/millisecond.js","../../node_modules/d3-time/src/duration.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/sequential.js","../../node_modules/d3-scale/src/diverging.js","../../node_modules/d3-scale/src/identity.js","../../node_modules/d3-scale/src/quantile.js","../../node_modules/d3-scale/src/quantize.js","../../node_modules/d3-scale/src/sequentialQuantile.js","../../node_modules/d3-scale/src/threshold.js","../../node_modules/d3-scale/src/utcTime.js","../../node_modules/recharts/es6/state/selectors/dataSelectors.js","../../node_modules/recharts/es6/util/isDomainSpecifiedByUser.js","../../node_modules/decimal.js-light/decimal.mjs","../../node_modules/recharts/es6/util/scale/util/utils.js","../../node_modules/recharts/es6/util/scale/util/arithmetic.js","../../node_modules/recharts/es6/util/scale/getNiceTickValues.js","../../node_modules/recharts/es6/state/selectors/rootPropsSelectors.js","../../node_modules/recharts/es6/polar/defaultPolarAngleAxisProps.js","../../node_modules/recharts/es6/polar/defaultPolarRadiusAxisProps.js","../../node_modules/recharts/es6/state/selectors/combiners/combineAxisRangeWithReverse.js","../../node_modules/recharts/es6/state/selectors/polarAxisSelectors.js","../../node_modules/recharts/es6/state/selectors/pickAxisType.js","../../node_modules/recharts/es6/state/selectors/pickAxisId.js","../../node_modules/recharts/es6/state/selectors/axisSelectors.js","../../node_modules/recharts/es6/state/selectors/selectTooltipEventType.js","../../node_modules/recharts/es6/state/selectors/combiners/combineActiveLabel.js","../../node_modules/recharts/es6/state/tooltipSlice.js","../../node_modules/recharts/es6/state/selectors/combiners/combineTooltipInteractionState.js","../../node_modules/recharts/es6/state/selectors/combiners/combineActiveTooltipIndex.js","../../node_modules/recharts/es6/state/selectors/combiners/combineCoordinateForDefaultIndex.js","../../node_modules/recharts/es6/state/selectors/combiners/combineTooltipPayloadConfigurations.js","../../node_modules/recharts/es6/state/selectors/selectTooltipPayloadSearcher.js","../../node_modules/recharts/es6/state/selectors/selectTooltipState.js","../../node_modules/recharts/es6/state/selectors/combiners/combineTooltipPayload.js","../../node_modules/recharts/es6/state/selectors/tooltipSelectors.js","../../node_modules/recharts/es6/state/selectors/selectTooltipSettings.js","../../node_modules/recharts/es6/context/useTooltipAxis.js","../../node_modules/recharts/es6/state/selectors/selectors.js","../../node_modules/recharts/es6/component/Cursor.js","../../node_modules/recharts/es6/util/cursor/getCursorRectangle.js","../../node_modules/recharts/es6/context/tooltipPortalContext.js","../../node_modules/eventemitter3/index.js","../../node_modules/recharts/es6/util/Events.js","../../node_modules/recharts/es6/synchronisation/syncSelectors.js","../../node_modules/recharts/es6/synchronisation/useChartSynchronisation.js","../../node_modules/recharts/es6/component/Tooltip.js","../../node_modules/es-toolkit/dist/compat/function/debounce.js","../../node_modules/es-toolkit/dist/compat/function/throttle.js","../../node_modules/es-toolkit/compat/throttle.js","../../node_modules/recharts/es6/util/LogUtils.js","../../node_modules/recharts/es6/component/ResponsiveContainer.js","../../src/components/ui/chart/chart.tsx","../../node_modules/recharts/es6/context/accessibilityContext.js"],"sourcesContent":["'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction isUnsafeProperty(key) {\n return key === '__proto__';\n}\n\nexports.isUnsafeProperty = isUnsafeProperty;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction isDeepKey(key) {\n switch (typeof key) {\n case 'number':\n case 'symbol': {\n return false;\n }\n case 'string': {\n return key.includes('.') || key.includes('[') || key.includes(']');\n }\n }\n}\n\nexports.isDeepKey = isDeepKey;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction toKey(value) {\n if (typeof value === 'string' || typeof value === 'symbol') {\n return value;\n }\n if (Object.is(value?.valueOf?.(), -0)) {\n return '-0';\n }\n return String(value);\n}\n\nexports.toKey = toKey;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction toPath(deepKey) {\n const result = [];\n const length = deepKey.length;\n if (length === 0) {\n return result;\n }\n let index = 0;\n let key = '';\n let quoteChar = '';\n let bracket = false;\n if (deepKey.charCodeAt(0) === 46) {\n result.push('');\n index++;\n }\n while (index < length) {\n const char = deepKey[index];\n if (quoteChar) {\n if (char === '\\\\' && index + 1 < length) {\n index++;\n key += deepKey[index];\n }\n else if (char === quoteChar) {\n quoteChar = '';\n }\n else {\n key += char;\n }\n }\n else if (bracket) {\n if (char === '\"' || char === \"'\") {\n quoteChar = char;\n }\n else if (char === ']') {\n bracket = false;\n result.push(key);\n key = '';\n }\n else {\n key += char;\n }\n }\n else {\n if (char === '[') {\n bracket = true;\n if (key) {\n result.push(key);\n key = '';\n }\n }\n else if (char === '.') {\n if (key) {\n result.push(key);\n key = '';\n }\n }\n else {\n key += char;\n }\n }\n index++;\n }\n if (key) {\n result.push(key);\n }\n return result;\n}\n\nexports.toPath = toPath;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst isUnsafeProperty = require('../../_internal/isUnsafeProperty.js');\nconst isDeepKey = require('../_internal/isDeepKey.js');\nconst toKey = require('../_internal/toKey.js');\nconst toPath = require('../util/toPath.js');\n\nfunction get(object, path, defaultValue) {\n if (object == null) {\n return defaultValue;\n }\n switch (typeof path) {\n case 'string': {\n if (isUnsafeProperty.isUnsafeProperty(path)) {\n return defaultValue;\n }\n const result = object[path];\n if (result === undefined) {\n if (isDeepKey.isDeepKey(path)) {\n return get(object, toPath.toPath(path), defaultValue);\n }\n else {\n return defaultValue;\n }\n }\n return result;\n }\n case 'number':\n case 'symbol': {\n if (typeof path === 'number') {\n path = toKey.toKey(path);\n }\n const result = object[path];\n if (result === undefined) {\n return defaultValue;\n }\n return result;\n }\n default: {\n if (Array.isArray(path)) {\n return getWithPath(object, path, defaultValue);\n }\n if (Object.is(path?.valueOf(), -0)) {\n path = '-0';\n }\n else {\n path = String(path);\n }\n if (isUnsafeProperty.isUnsafeProperty(path)) {\n return defaultValue;\n }\n const result = object[path];\n if (result === undefined) {\n return defaultValue;\n }\n return result;\n }\n }\n}\nfunction getWithPath(object, path, defaultValue) {\n if (path.length === 0) {\n return defaultValue;\n }\n let current = object;\n for (let index = 0; index < path.length; index++) {\n if (current == null) {\n return defaultValue;\n }\n if (isUnsafeProperty.isUnsafeProperty(path[index])) {\n return defaultValue;\n }\n current = current[path[index]];\n }\n if (current === undefined) {\n return defaultValue;\n }\n return current;\n}\n\nexports.get = get;\n","module.exports = require('../dist/compat/object/get.js').get;\n","import get from 'es-toolkit/compat/get';\nexport var mathSign = value => {\n if (value === 0) {\n return 0;\n }\n if (value > 0) {\n return 1;\n }\n return -1;\n};\nexport var isNan = value => {\n // eslint-disable-next-line eqeqeq\n return typeof value == 'number' && value != +value;\n};\nexport var isPercent = value => typeof value === 'string' && value.indexOf('%') === value.length - 1;\nexport var isNumber = value => (typeof value === 'number' || value instanceof Number) && !isNan(value);\nexport var isNumOrStr = value => isNumber(value) || typeof value === 'string';\nvar idCounter = 0;\nexport var uniqueId = prefix => {\n var id = ++idCounter;\n return \"\".concat(prefix || '').concat(id);\n};\n\n/**\n * Get percent value of a total value\n * @param {number|string} percent A percent\n * @param {number} totalValue Total value\n * @param {number} defaultValue The value returned when percent is undefined or invalid\n * @param {boolean} validate If set to be true, the result will be validated\n * @return {number} value\n */\nexport var getPercentValue = function getPercentValue(percent, totalValue) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (!isNumber(percent) && typeof percent !== 'string') {\n return defaultValue;\n }\n var value;\n if (isPercent(percent)) {\n if (totalValue == null) {\n return defaultValue;\n }\n var index = percent.indexOf('%');\n value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n } else {\n value = +percent;\n }\n if (isNan(value)) {\n value = defaultValue;\n }\n if (validate && totalValue != null && value > totalValue) {\n value = totalValue;\n }\n return value;\n};\nexport var hasDuplicate = ary => {\n if (!Array.isArray(ary)) {\n return false;\n }\n var len = ary.length;\n var cache = {};\n for (var i = 0; i < len; i++) {\n if (!cache[ary[i]]) {\n cache[ary[i]] = true;\n } else {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @deprecated instead use {@link interpolate}\n * this function returns a function that is called immediately in all use-cases.\n * Instead, use interpolate which returns a number and skips the anonymous function step.\n * @param numberA The first number\n * @param numberB The second number\n * @return A function that returns the interpolated number\n */\nexport var interpolateNumber = (numberA, numberB) => {\n if (isNumber(numberA) && isNumber(numberB)) {\n return t => numberA + t * (numberB - numberA);\n }\n return () => numberB;\n};\nexport function interpolate(start, end, t) {\n if (isNumber(start) && isNumber(end)) {\n return start + t * (end - start);\n }\n return end;\n}\nexport function findEntryInArray(ary, specifiedKey, specifiedValue) {\n if (!ary || !ary.length) {\n return undefined;\n }\n return ary.find(entry => entry && (typeof specifiedKey === 'function' ? specifiedKey(entry) : get(entry, specifiedKey)) === specifiedValue);\n}\n\n/**\n * The least square linear regression\n * @param {Array} data The array of points\n * @returns {Object} The domain of x, and the parameter of linear function\n */\nexport var getLinearRegression = data => {\n if (!data || !data.length) {\n return null;\n }\n var len = data.length;\n var xsum = 0;\n var ysum = 0;\n var xysum = 0;\n var xxsum = 0;\n var xmin = Infinity;\n var xmax = -Infinity;\n var xcurrent = 0;\n var ycurrent = 0;\n for (var i = 0; i < len; i++) {\n xcurrent = data[i].cx || 0;\n ycurrent = data[i].cy || 0;\n xsum += xcurrent;\n ysum += ycurrent;\n xysum += xcurrent * ycurrent;\n xxsum += xcurrent * xcurrent;\n xmin = Math.min(xmin, xcurrent);\n xmax = Math.max(xmax, xcurrent);\n }\n var a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n return {\n xmin,\n xmax,\n a,\n b: (ysum - a * xsum) / len\n };\n};\n/**\n * Checks if the value is null or undefined\n * @param value The value to check\n * @returns true if the value is null or undefined\n */\nexport var isNullish = value => {\n return value === null || typeof value === 'undefined';\n};\n\n/**\n *Uppercase the first letter of a string\n * @param {string} value The string to uppercase\n * @returns {string} The uppercased string\n */\nexport var upperFirst = value => {\n if (isNullish(value)) {\n return value;\n }\n return \"\".concat(value.charAt(0).toUpperCase()).concat(value.slice(1));\n};","import { isValidElement } from 'react';\n\n/**\n * Determines how values are stacked:\n *\n * - `none` is the default, it adds values on top of each other. No smarts. Negative values will overlap.\n * - `expand` make it so that the values always add up to 1 - so the chart will look like a rectangle.\n * - `wiggle` and `silhouette` tries to keep the chart centered.\n * - `sign` stacks positive values above zero and negative values below zero. Similar to `none` but handles negatives.\n * - `positive` ignores all negative values, and then behaves like \\`none\\`.\n *\n * Also see https://d3js.org/d3-shape/stack#stack-offsets\n * (note that the `diverging` offset in d3 is named `sign` in recharts)\n */\n\n/**\n * @deprecated use either `CartesianLayout` or `PolarLayout` instead.\n * Mixing both charts families leads to ambiguity in the type system.\n * These two layouts share very few properties, so it is best to keep them separate.\n */\n\n/**\n * @deprecated do not use: too many properties, mixing too many concepts, cartesian and polar together, everything optional.\n */\n\n//\n// Event Handler Types -- Copied from @types/react/index.d.ts and adapted for Props.\n//\n\nvar SVGContainerPropKeys = ['viewBox', 'children'];\nexport var SVGElementPropKeys = ['aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'className', 'color', 'height', 'id', 'lang', 'max', 'media', 'method', 'min', 'name', 'style',\n/*\n * removed 'type' SVGElementPropKey because we do not currently use any SVG elements\n * that can use it, and it conflicts with the recharts prop 'type'\n * https://github.com/recharts/recharts/pull/3327\n * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/type\n */\n// 'type',\n'target', 'width', 'role', 'tabIndex', 'accentHeight', 'accumulate', 'additive', 'alignmentBaseline', 'allowReorder', 'alphabetic', 'amplitude', 'arabicForm', 'ascent', 'attributeName', 'attributeType', 'autoReverse', 'azimuth', 'baseFrequency', 'baselineShift', 'baseProfile', 'bbox', 'begin', 'bias', 'by', 'calcMode', 'capHeight', 'clip', 'clipPath', 'clipPathUnits', 'clipRule', 'colorInterpolation', 'colorInterpolationFilters', 'colorProfile', 'colorRendering', 'contentScriptType', 'contentStyleType', 'cursor', 'cx', 'cy', 'd', 'decelerate', 'descent', 'diffuseConstant', 'direction', 'display', 'divisor', 'dominantBaseline', 'dur', 'dx', 'dy', 'edgeMode', 'elevation', 'enableBackground', 'end', 'exponent', 'externalResourcesRequired', 'fill', 'fillOpacity', 'fillRule', 'filter', 'filterRes', 'filterUnits', 'floodColor', 'floodOpacity', 'focusable', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontWeight', 'format', 'from', 'fx', 'fy', 'g1', 'g2', 'glyphName', 'glyphOrientationHorizontal', 'glyphOrientationVertical', 'glyphRef', 'gradientTransform', 'gradientUnits', 'hanging', 'horizAdvX', 'horizOriginX', 'href', 'ideographic', 'imageRendering', 'in2', 'in', 'intercept', 'k1', 'k2', 'k3', 'k4', 'k', 'kernelMatrix', 'kernelUnitLength', 'kerning', 'keyPoints', 'keySplines', 'keyTimes', 'lengthAdjust', 'letterSpacing', 'lightingColor', 'limitingConeAngle', 'local', 'markerEnd', 'markerHeight', 'markerMid', 'markerStart', 'markerUnits', 'markerWidth', 'mask', 'maskContentUnits', 'maskUnits', 'mathematical', 'mode', 'numOctaves', 'offset', 'opacity', 'operator', 'order', 'orient', 'orientation', 'origin', 'overflow', 'overlinePosition', 'overlineThickness', 'paintOrder', 'panose1', 'pathLength', 'patternContentUnits', 'patternTransform', 'patternUnits', 'pointerEvents', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'preserveAlpha', 'preserveAspectRatio', 'primitiveUnits', 'r', 'radius', 'refX', 'refY', 'renderingIntent', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'result', 'rotate', 'rx', 'ry', 'seed', 'shapeRendering', 'slope', 'spacing', 'specularConstant', 'specularExponent', 'speed', 'spreadMethod', 'startOffset', 'stdDeviation', 'stemh', 'stemv', 'stitchTiles', 'stopColor', 'stopOpacity', 'strikethroughPosition', 'strikethroughThickness', 'string', 'stroke', 'strokeDasharray', 'strokeDashoffset', 'strokeLinecap', 'strokeLinejoin', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', 'surfaceScale', 'systemLanguage', 'tableValues', 'targetX', 'targetY', 'textAnchor', 'textDecoration', 'textLength', 'textRendering', 'to', 'transform', 'u1', 'u2', 'underlinePosition', 'underlineThickness', 'unicode', 'unicodeBidi', 'unicodeRange', 'unitsPerEm', 'vAlphabetic', 'values', 'vectorEffect', 'version', 'vertAdvY', 'vertOriginX', 'vertOriginY', 'vHanging', 'vIdeographic', 'viewTarget', 'visibility', 'vMathematical', 'widths', 'wordSpacing', 'writingMode', 'x1', 'x2', 'x', 'xChannelSelector', 'xHeight', 'xlinkActuate', 'xlinkArcrole', 'xlinkHref', 'xlinkRole', 'xlinkShow', 'xlinkTitle', 'xlinkType', 'xmlBase', 'xmlLang', 'xmlns', 'xmlnsXlink', 'xmlSpace', 'y1', 'y2', 'y', 'yChannelSelector', 'z', 'zoomAndPan', 'ref', 'key', 'angle'];\nvar PolyElementKeys = ['points', 'pathLength'];\n\n/** svg element types that have specific attribute filtration requirements */\n\n/** map of svg element types to unique svg attributes that belong to that element */\nexport var FilteredElementKeyMap = {\n svg: SVGContainerPropKeys,\n polygon: PolyElementKeys,\n polyline: PolyElementKeys\n};\nexport var EventKeys = ['dangerouslySetInnerHTML', 'onCopy', 'onCopyCapture', 'onCut', 'onCutCapture', 'onPaste', 'onPasteCapture', 'onCompositionEnd', 'onCompositionEndCapture', 'onCompositionStart', 'onCompositionStartCapture', 'onCompositionUpdate', 'onCompositionUpdateCapture', 'onFocus', 'onFocusCapture', 'onBlur', 'onBlurCapture', 'onChange', 'onChangeCapture', 'onBeforeInput', 'onBeforeInputCapture', 'onInput', 'onInputCapture', 'onReset', 'onResetCapture', 'onSubmit', 'onSubmitCapture', 'onInvalid', 'onInvalidCapture', 'onLoad', 'onLoadCapture', 'onError', 'onErrorCapture', 'onKeyDown', 'onKeyDownCapture', 'onKeyPress', 'onKeyPressCapture', 'onKeyUp', 'onKeyUpCapture', 'onAbort', 'onAbortCapture', 'onCanPlay', 'onCanPlayCapture', 'onCanPlayThrough', 'onCanPlayThroughCapture', 'onDurationChange', 'onDurationChangeCapture', 'onEmptied', 'onEmptiedCapture', 'onEncrypted', 'onEncryptedCapture', 'onEnded', 'onEndedCapture', 'onLoadedData', 'onLoadedDataCapture', 'onLoadedMetadata', 'onLoadedMetadataCapture', 'onLoadStart', 'onLoadStartCapture', 'onPause', 'onPauseCapture', 'onPlay', 'onPlayCapture', 'onPlaying', 'onPlayingCapture', 'onProgress', 'onProgressCapture', 'onRateChange', 'onRateChangeCapture', 'onSeeked', 'onSeekedCapture', 'onSeeking', 'onSeekingCapture', 'onStalled', 'onStalledCapture', 'onSuspend', 'onSuspendCapture', 'onTimeUpdate', 'onTimeUpdateCapture', 'onVolumeChange', 'onVolumeChangeCapture', 'onWaiting', 'onWaitingCapture', 'onAuxClick', 'onAuxClickCapture', 'onClick', 'onClickCapture', 'onContextMenu', 'onContextMenuCapture', 'onDoubleClick', 'onDoubleClickCapture', 'onDrag', 'onDragCapture', 'onDragEnd', 'onDragEndCapture', 'onDragEnter', 'onDragEnterCapture', 'onDragExit', 'onDragExitCapture', 'onDragLeave', 'onDragLeaveCapture', 'onDragOver', 'onDragOverCapture', 'onDragStart', 'onDragStartCapture', 'onDrop', 'onDropCapture', 'onMouseDown', 'onMouseDownCapture', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseMoveCapture', 'onMouseOut', 'onMouseOutCapture', 'onMouseOver', 'onMouseOverCapture', 'onMouseUp', 'onMouseUpCapture', 'onSelect', 'onSelectCapture', 'onTouchCancel', 'onTouchCancelCapture', 'onTouchEnd', 'onTouchEndCapture', 'onTouchMove', 'onTouchMoveCapture', 'onTouchStart', 'onTouchStartCapture', 'onPointerDown', 'onPointerDownCapture', 'onPointerMove', 'onPointerMoveCapture', 'onPointerUp', 'onPointerUpCapture', 'onPointerCancel', 'onPointerCancelCapture', 'onPointerEnter', 'onPointerEnterCapture', 'onPointerLeave', 'onPointerLeaveCapture', 'onPointerOver', 'onPointerOverCapture', 'onPointerOut', 'onPointerOutCapture', 'onGotPointerCapture', 'onGotPointerCaptureCapture', 'onLostPointerCapture', 'onLostPointerCaptureCapture', 'onScroll', 'onScrollCapture', 'onWheel', 'onWheelCapture', 'onAnimationStart', 'onAnimationStartCapture', 'onAnimationEnd', 'onAnimationEndCapture', 'onAnimationIteration', 'onAnimationIterationCapture', 'onTransitionEnd', 'onTransitionEndCapture'];\n\n/** The type of easing function to use for animations */\n\n/** Specifies the duration of animation, the unit of this option is ms. */\n\n/**\n * This object defines the offset of the chart area and width and height and brush and ... it's a bit too much information all in one.\n * We use it internally but let's not expose it to the outside world.\n * If you are looking for this information, instead import `ChartOffset` or `PlotArea` from `recharts`.\n */\n\n/**\n * The domain of axis.\n * This is the definition\n *\n * Numeric domain is always defined by an array of exactly two values, for the min and the max of the axis.\n * Categorical domain is defined as array of all possible values.\n *\n * Can be specified in many ways:\n * - array of numbers\n * - with special strings like 'dataMin' and 'dataMax'\n * - with special string math like 'dataMin - 100'\n * - with keyword 'auto'\n * - or a function\n * - array of functions\n * - or a combination of the above\n */\n\n/**\n * NumberDomain is an evaluated {@link AxisDomain}.\n * Unlike {@link AxisDomain}, it has no variety - it's a tuple of two number.\n * This is after all the keywords and functions were evaluated and what is left is [min, max].\n *\n * Know that the min, max values are not guaranteed to be nice numbers - values like -Infinity or NaN are possible.\n *\n * There are also `category` axes that have different things than numbers in their domain.\n */\n\n/** The props definition of base axis */\n\n/** Defines how ticks are placed and whether / how tick collisions are handled.\n * 'preserveStart' keeps the left tick on collision and ensures that the first tick is always shown.\n * 'preserveEnd' keeps the right tick on collision and ensures that the last tick is always shown.\n * 'preserveStartEnd' keeps the left tick on collision and ensures that the first and last ticks always show.\n * 'equidistantPreserveStart' selects a number N such that every nTh tick will be shown without collision.\n */\n\n/**\n * Ticks can be any type when the axis is the type of category.\n *\n * Ticks must be numbers when the axis is the type of number.\n */\n\nexport var adaptEventHandlers = (props, newHandler) => {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n var inputProps = props;\n if (/*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n if (typeof inputProps !== 'object' && typeof inputProps !== 'function') {\n return null;\n }\n var out = {};\n Object.keys(inputProps).forEach(key => {\n if (EventKeys.includes(key)) {\n out[key] = newHandler || (e => inputProps[key](inputProps, e));\n }\n });\n return out;\n};\nvar getEventHandlerOfChild = (originalHandler, data, index) => e => {\n originalHandler(data, index, e);\n return null;\n};\nexport var adaptEventsOfChild = (props, data, index) => {\n if (props === null || typeof props !== 'object' && typeof props !== 'function') {\n return null;\n }\n var out = null;\n Object.keys(props).forEach(key => {\n var item = props[key];\n if (EventKeys.includes(key) && typeof item === 'function') {\n if (!out) out = {};\n out[key] = getEventHandlerOfChild(item, data, index);\n }\n });\n return out;\n};\n\n/**\n * 'axis' means that all graphical items belonging to this axis tick will be highlighted,\n * and all will be present in the tooltip.\n * Tooltip with 'axis' will display when hovering on the chart background.\n *\n * 'item' means only the one graphical item being hovered will show in the tooltip.\n * Tooltip with 'item' will display when hovering over individual graphical items.\n *\n * This is calculated internally;\n * charts have a `defaultTooltipEventType` and `validateTooltipEventTypes` options.\n *\n * Users then use <Tooltip shared={true} /> or <Tooltip shared={false} /> to control their preference,\n * and charts will then see what is allowed and what is not.\n */\n\n/**\n * These are the props we are going to pass to an `activeDot` if it is a function or a custom Component\n */\n\n/**\n * This is the type of `activeDot` prop on:\n * - Area\n * - Line\n * - Radar\n */\n\n// TODO we need two different range objects, one for polar and another for cartesian layouts\n\n/**\n * Simplified version of the MouseEvent so that we don't have to mock the whole thing in tests.\n *\n * This is meant to represent the React.MouseEvent\n * which is a wrapper on top of https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent\n */\n\n/**\n * Coordinates relative to the top-left corner of the chart.\n * Also include scale which means that a chart that's scaled will return the same coordinates as a chart that's not scaled.\n */","import get from 'es-toolkit/compat/get';\nimport { Children, isValidElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { isNullish } from './DataUtils';\nimport { FilteredElementKeyMap, SVGElementPropKeys, EventKeys } from './types';\nexport var SCALE_TYPES = ['auto', 'linear', 'pow', 'sqrt', 'log', 'identity', 'time', 'band', 'point', 'ordinal', 'quantile', 'quantize', 'utc', 'sequential', 'threshold'];\n\n/**\n * @deprecated instead find another approach that does not depend on displayName.\n * Get the display name of a component\n * @param {Object} Comp Specified Component\n * @return {String} Display name of Component\n */\nexport var getDisplayName = Comp => {\n if (typeof Comp === 'string') {\n return Comp;\n }\n if (!Comp) {\n return '';\n }\n return Comp.displayName || Comp.name || 'Component';\n};\n\n// `toArray` gets called multiple times during the render\n// so we can memoize last invocation (since reference to `children` is the same)\nvar lastChildren = null;\nvar lastResult = null;\n\n/**\n * @deprecated instead find another approach that does not require reading React Elements from DOM.\n *\n * @param children do not use\n * @return deprecated do not use\n */\nexport var toArray = children => {\n if (children === lastChildren && Array.isArray(lastResult)) {\n return lastResult;\n }\n var result = [];\n Children.forEach(children, child => {\n if (isNullish(child)) return;\n if (isFragment(child)) {\n result = result.concat(toArray(child.props.children));\n } else {\n // @ts-expect-error this could still be Iterable<ReactNode> and TS does not like that\n result.push(child);\n }\n });\n lastResult = result;\n lastChildren = children;\n return result;\n};\n\n/**\n * @deprecated instead find another approach that does not require reading React Elements from DOM.\n *\n * Find and return all matched children by type.\n * `type` must be a React.ComponentType\n *\n * @param children do not use\n * @param type do not use\n * @return deprecated do not use\n */\nexport function findAllByType(children, type) {\n var result = [];\n var types = [];\n if (Array.isArray(type)) {\n types = type.map(t => getDisplayName(t));\n } else {\n types = [getDisplayName(type)];\n }\n toArray(children).forEach(child => {\n var childType = get(child, 'type.displayName') || get(child, 'type.name');\n // ts-expect-error toArray and lodash.get are not compatible. Let's get rid of the whole findAllByType function\n if (types.indexOf(childType) !== -1) {\n result.push(child);\n }\n });\n return result;\n}\nexport var isClipDot = dot => {\n if (dot && typeof dot === 'object' && 'clipDot' in dot) {\n return Boolean(dot.clipDot);\n }\n return true;\n};\n\n/**\n * Checks if the property is valid to spread onto an SVG element or onto a specific component\n * @param {unknown} property property value currently being compared\n * @param {string} key property key currently being compared\n * @param {boolean} includeEvents if events are included in spreadable props\n * @param {boolean} svgElementType checks against map of SVG element types to attributes\n * @returns {boolean} is prop valid\n */\nexport var isValidSpreadableProp = (property, key, includeEvents, svgElementType) => {\n var _ref;\n /**\n * If the svg element type is explicitly included, check against the filtered element key map\n * to determine if there are attributes that should only exist on that element type.\n * @todo Add an internal cjs version of https://github.com/wooorm/svg-element-attributes for full coverage.\n */\n var matchingElementTypeKeys = (_ref = svgElementType && (FilteredElementKeyMap === null || FilteredElementKeyMap === void 0 ? void 0 : FilteredElementKeyMap[svgElementType])) !== null && _ref !== void 0 ? _ref : [];\n return key.startsWith('data-') || typeof property !== 'function' && (svgElementType && matchingElementTypeKeys.includes(key) || SVGElementPropKeys.includes(key)) || includeEvents && EventKeys.includes(key);\n};\nexport var filterProps = (props, includeEvents, svgElementType) => {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n var inputProps = props;\n if (/*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n if (typeof inputProps !== 'object' && typeof inputProps !== 'function') {\n return null;\n }\n var out = {};\n\n /**\n * Props are blindly spread onto SVG elements. This loop filters out properties that we don't want to spread.\n * Items filtered out are as follows:\n * - functions in properties that are SVG attributes (functions are included when includeEvents is true)\n * - props that are SVG attributes but don't matched the passed svgElementType\n * - any prop that is not in SVGElementPropKeys (or in EventKeys if includeEvents is true)\n */\n Object.keys(inputProps).forEach(key => {\n var _inputProps;\n if (isValidSpreadableProp((_inputProps = inputProps) === null || _inputProps === void 0 ? void 0 : _inputProps[key], key, includeEvents, svgElementType)) {\n out[key] = inputProps[key];\n }\n });\n return out;\n};","var _excluded = [\"children\", \"width\", \"height\", \"viewBox\", \"className\", \"style\", \"title\", \"desc\"];\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); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/**\n * @fileOverview Surface\n */\nimport * as React from 'react';\nimport { forwardRef } from 'react';\nimport { clsx } from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nexport var Surface = /*#__PURE__*/forwardRef((props, ref) => {\n var {\n children,\n width,\n height,\n viewBox,\n className,\n style,\n title,\n desc\n } = props,\n others = _objectWithoutProperties(props, _excluded);\n var svgView = viewBox || {\n width,\n height,\n x: 0,\n y: 0\n };\n var layerClass = clsx('recharts-surface', className);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({}, filterProps(others, true, 'svg'), {\n className: layerClass,\n width: width,\n height: height,\n style: style,\n viewBox: \"\".concat(svgView.x, \" \").concat(svgView.y, \" \").concat(svgView.width, \" \").concat(svgView.height),\n ref: ref\n }), /*#__PURE__*/React.createElement(\"title\", null, title), /*#__PURE__*/React.createElement(\"desc\", null, desc), children);\n});","import { createContext, useContext } from 'react';\nexport var LegendPortalContext = /*#__PURE__*/createContext(null);\nexport var useLegendPortal = () => useContext(LegendPortalContext);","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","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","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","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","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 {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 w = sqrt(size);\n const x = -w / 2;\n context.rect(x, x, w, w);\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 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","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 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","var _excluded = [\"type\", \"size\", \"sizeType\"];\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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/**\n * @fileOverview Curve\n */\nimport * as React from 'react';\nimport { symbol as shapeSymbol, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye } from 'victory-vendor/d3-shape';\nimport { clsx } from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nimport { upperFirst } from '../util/DataUtils';\nvar symbolFactories = {\n symbolCircle,\n symbolCross,\n symbolDiamond,\n symbolSquare,\n symbolStar,\n symbolTriangle,\n symbolWye\n};\nvar RADIAN = Math.PI / 180;\nvar getSymbolFactory = type => {\n var name = \"symbol\".concat(upperFirst(type));\n return symbolFactories[name] || symbolCircle;\n};\nvar calculateAreaSize = (size, sizeType, type) => {\n if (sizeType === 'area') {\n return size;\n }\n switch (type) {\n case 'cross':\n return 5 * size * size / 9;\n case 'diamond':\n return 0.5 * size * size / Math.sqrt(3);\n case 'square':\n return size * size;\n case 'star':\n {\n var angle = 18 * RADIAN;\n return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.tan(angle) ** 2);\n }\n case 'triangle':\n return Math.sqrt(3) * size * size / 4;\n case 'wye':\n return (21 - 10 * Math.sqrt(3)) * size * size / 8;\n default:\n return Math.PI * size * size / 4;\n }\n};\nvar registerSymbol = (key, factory) => {\n symbolFactories[\"symbol\".concat(upperFirst(key))] = factory;\n};\nexport var Symbols = _ref => {\n var {\n type = 'circle',\n size = 64,\n sizeType = 'area'\n } = _ref,\n rest = _objectWithoutProperties(_ref, _excluded);\n var props = _objectSpread(_objectSpread({}, rest), {}, {\n type,\n size,\n sizeType\n });\n\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n var getPath = () => {\n var symbolFactory = getSymbolFactory(type);\n var symbol = shapeSymbol().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n return symbol();\n };\n var {\n className,\n cx,\n cy\n } = props;\n var filteredProps = filterProps(props, true);\n if (cx === +cx && cy === +cy && size === +size) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filteredProps, {\n className: clsx('recharts-symbols', className),\n transform: \"translate(\".concat(cx, \", \").concat(cy, \")\"),\n d: getPath()\n }));\n }\n return null;\n};\nSymbols.registerSymbol = registerSymbol;","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","function _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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Default Legend Content\n */\nimport * as React from 'react';\nimport { PureComponent } from 'react';\nimport { clsx } from 'clsx';\nimport { Surface } from '../container/Surface';\nimport { Symbols } from '../shape/Symbols';\nimport { adaptEventsOfChild } from '../util/types';\nvar SIZE = 32;\nexport class DefaultLegendContent extends PureComponent {\n /**\n * Render the path of icon\n * @param data Data of each legend item\n * @param iconType if defined, it will always render this icon. If undefined then it uses icon from data.type\n * @return Path element\n */\n renderIcon(data, iconType) {\n var {\n inactiveColor\n } = this.props;\n var halfSize = SIZE / 2;\n var sixthSize = SIZE / 6;\n var thirdSize = SIZE / 3;\n var color = data.inactive ? inactiveColor : data.color;\n var preferredIcon = iconType !== null && iconType !== void 0 ? iconType : data.type;\n if (preferredIcon === 'none') {\n return null;\n }\n if (preferredIcon === 'plainline') {\n return /*#__PURE__*/React.createElement(\"line\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n strokeDasharray: data.payload.strokeDasharray,\n x1: 0,\n y1: halfSize,\n x2: SIZE,\n y2: halfSize,\n className: \"recharts-legend-icon\"\n });\n }\n if (preferredIcon === 'line') {\n return /*#__PURE__*/React.createElement(\"path\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n className: \"recharts-legend-icon\"\n });\n }\n if (preferredIcon === 'rect') {\n return /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n fill: color,\n d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n className: \"recharts-legend-icon\"\n });\n }\n if (/*#__PURE__*/React.isValidElement(data.legendIcon)) {\n var iconProps = _objectSpread({}, data);\n delete iconProps.legendIcon;\n return /*#__PURE__*/React.cloneElement(data.legendIcon, iconProps);\n }\n return /*#__PURE__*/React.createElement(Symbols, {\n fill: color,\n cx: halfSize,\n cy: halfSize,\n size: SIZE,\n sizeType: \"diameter\",\n type: preferredIcon\n });\n }\n\n /**\n * Draw items of legend\n * @return Items\n */\n renderItems() {\n var {\n payload,\n iconSize,\n layout,\n formatter,\n inactiveColor,\n iconType\n } = this.props;\n var viewBox = {\n x: 0,\n y: 0,\n width: SIZE,\n height: SIZE\n };\n var itemStyle = {\n display: layout === 'horizontal' ? 'inline-block' : 'block',\n marginRight: 10\n };\n var svgStyle = {\n display: 'inline-block',\n verticalAlign: 'middle',\n marginRight: 4\n };\n return payload.map((entry, i) => {\n var finalFormatter = entry.formatter || formatter;\n var className = clsx({\n 'recharts-legend-item': true,\n [\"legend-item-\".concat(i)]: true,\n inactive: entry.inactive\n });\n if (entry.type === 'none') {\n return null;\n }\n var color = entry.inactive ? inactiveColor : entry.color;\n var finalValue = finalFormatter ? finalFormatter(entry.value, entry, i) : entry.value;\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n className: className,\n style: itemStyle\n // eslint-disable-next-line react/no-array-index-key\n ,\n key: \"legend-item-\".concat(i)\n }, adaptEventsOfChild(this.props, entry, i)), /*#__PURE__*/React.createElement(Surface, {\n width: iconSize,\n height: iconSize,\n viewBox: viewBox,\n style: svgStyle,\n \"aria-label\": \"\".concat(finalValue, \" legend icon\")\n }, this.renderIcon(entry, iconType)), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-legend-item-text\",\n style: {\n color\n }\n }, finalValue));\n });\n }\n render() {\n var {\n payload,\n layout,\n align\n } = this.props;\n if (!payload || !payload.length) {\n return null;\n }\n var finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === 'horizontal' ? align : 'left'\n };\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-default-legend\",\n style: finalStyle\n }, this.renderItems());\n }\n}\n_defineProperty(DefaultLegendContent, \"displayName\", 'Legend');\n_defineProperty(DefaultLegendContent, \"defaultProps\", {\n align: 'center',\n iconSize: 14,\n inactiveColor: '#ccc',\n layout: 'horizontal',\n verticalAlign: 'middle'\n});","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction uniqBy(arr, mapper) {\n const map = new Map();\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n const key = mapper(item);\n if (!map.has(key)) {\n map.set(key, item);\n }\n }\n return Array.from(map.values());\n}\n\nexports.uniqBy = uniqBy;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction identity(x) {\n return x;\n}\n\nexports.identity = identity;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction isLength(value) {\n return Number.isSafeInteger(value) && value >= 0;\n}\n\nexports.isLength = isLength;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst isLength = require('../../predicate/isLength.js');\n\nfunction isArrayLike(value) {\n return value != null && typeof value !== 'function' && isLength.isLength(value.length);\n}\n\nexports.isArrayLike = isArrayLike;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\n\nexports.isObjectLike = isObjectLike;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst isArrayLike = require('./isArrayLike.js');\nconst isObjectLike = require('./isObjectLike.js');\n\nfunction isArrayLikeObject(value) {\n return isObjectLike.isObjectLike(value) && isArrayLike.isArrayLike(value);\n}\n\nexports.isArrayLikeObject = isArrayLikeObject;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst get = require('./get.js');\n\nfunction property(path) {\n return function (object) {\n return get.get(object, path);\n };\n}\n\nexports.property = property;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction isObject(value) {\n return value !== null && (typeof value === 'object' || typeof value === 'function');\n}\n\nexports.isObject = isObject;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction isPrimitive(value) {\n return value == null || (typeof value !== 'object' && typeof value !== 'function');\n}\n\nexports.isPrimitive = isPrimitive;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction eq(value, other) {\n return value === other || (Number.isNaN(value) && Number.isNaN(other));\n}\n\nexports.eq = eq;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst isMatch = require('./isMatch.js');\nconst isObject = require('./isObject.js');\nconst isPrimitive = require('../../predicate/isPrimitive.js');\nconst eq = require('../util/eq.js');\n\nfunction isMatchWith(target, source, compare) {\n if (typeof compare !== 'function') {\n return isMatch.isMatch(target, source);\n }\n return isMatchWithInternal(target, source, function doesMatch(objValue, srcValue, key, object, source, stack) {\n const isEqual = compare(objValue, srcValue, key, object, source, stack);\n if (isEqual !== undefined) {\n return Boolean(isEqual);\n }\n return isMatchWithInternal(objValue, srcValue, doesMatch, stack);\n }, new Map());\n}\nfunction isMatchWithInternal(target, source, compare, stack) {\n if (source === target) {\n return true;\n }\n switch (typeof source) {\n case 'object': {\n return isObjectMatch(target, source, compare, stack);\n }\n case 'function': {\n const sourceKeys = Object.keys(source);\n if (sourceKeys.length > 0) {\n return isMatchWithInternal(target, { ...source }, compare, stack);\n }\n return eq.eq(target, source);\n }\n default: {\n if (!isObject.isObject(target)) {\n return eq.eq(target, source);\n }\n if (typeof source === 'string') {\n return source === '';\n }\n return true;\n }\n }\n}\nfunction isObjectMatch(target, source, compare, stack) {\n if (source == null) {\n return true;\n }\n if (Array.isArray(source)) {\n return isArrayMatch(target, source, compare, stack);\n }\n if (source instanceof Map) {\n return isMapMatch(target, source, compare, stack);\n }\n if (source instanceof Set) {\n return isSetMatch(target, source, compare, stack);\n }\n const keys = Object.keys(source);\n if (target == null) {\n return keys.length === 0;\n }\n if (keys.length === 0) {\n return true;\n }\n if (stack && stack.has(source)) {\n return stack.get(source) === target;\n }\n if (stack) {\n stack.set(source, target);\n }\n try {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!isPrimitive.isPrimitive(target) && !(key in target)) {\n return false;\n }\n if (source[key] === undefined && target[key] !== undefined) {\n return false;\n }\n if (source[key] === null && target[key] !== null) {\n return false;\n }\n const isEqual = compare(target[key], source[key], key, target, source, stack);\n if (!isEqual) {\n return false;\n }\n }\n return true;\n }\n finally {\n if (stack) {\n stack.delete(source);\n }\n }\n}\nfunction isMapMatch(target, source, compare, stack) {\n if (source.size === 0) {\n return true;\n }\n if (!(target instanceof Map)) {\n return false;\n }\n for (const [key, sourceValue] of source.entries()) {\n const targetValue = target.get(key);\n const isEqual = compare(targetValue, sourceValue, key, target, source, stack);\n if (isEqual === false) {\n return false;\n }\n }\n return true;\n}\nfunction isArrayMatch(target, source, compare, stack) {\n if (source.length === 0) {\n return true;\n }\n if (!Array.isArray(target)) {\n return false;\n }\n const countedIndex = new Set();\n for (let i = 0; i < source.length; i++) {\n const sourceItem = source[i];\n let found = false;\n for (let j = 0; j < target.length; j++) {\n if (countedIndex.has(j)) {\n continue;\n }\n const targetItem = target[j];\n let matches = false;\n const isEqual = compare(targetItem, sourceItem, i, target, source, stack);\n if (isEqual) {\n matches = true;\n }\n if (matches) {\n countedIndex.add(j);\n found = true;\n break;\n }\n }\n if (!found) {\n return false;\n }\n }\n return true;\n}\nfunction isSetMatch(target, source, compare, stack) {\n if (source.size === 0) {\n return true;\n }\n if (!(target instanceof Set)) {\n return false;\n }\n return isArrayMatch([...target], [...source], compare, stack);\n}\n\nexports.isMatchWith = isMatchWith;\nexports.isSetMatch = isSetMatch;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst isMatchWith = require('./isMatchWith.js');\n\nfunction isMatch(target, source) {\n return isMatchWith.isMatchWith(target, source, () => undefined);\n}\n\nexports.isMatch = isMatch;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction getSymbols(object) {\n return Object.getOwnPropertySymbols(object).filter(symbol => Object.prototype.propertyIsEnumerable.call(object, symbol));\n}\n\nexports.getSymbols = getSymbols;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n return Object.prototype.toString.call(value);\n}\n\nexports.getTag = getTag;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst regexpTag = '[object RegExp]';\nconst stringTag = '[object String]';\nconst numberTag = '[object Number]';\nconst booleanTag = '[object Boolean]';\nconst argumentsTag = '[object Arguments]';\nconst symbolTag = '[object Symbol]';\nconst dateTag = '[object Date]';\nconst mapTag = '[object Map]';\nconst setTag = '[object Set]';\nconst arrayTag = '[object Array]';\nconst functionTag = '[object Function]';\nconst arrayBufferTag = '[object ArrayBuffer]';\nconst objectTag = '[object Object]';\nconst errorTag = '[object Error]';\nconst dataViewTag = '[object DataView]';\nconst uint8ArrayTag = '[object Uint8Array]';\nconst uint8ClampedArrayTag = '[object Uint8ClampedArray]';\nconst uint16ArrayTag = '[object Uint16Array]';\nconst uint32ArrayTag = '[object Uint32Array]';\nconst bigUint64ArrayTag = '[object BigUint64Array]';\nconst int8ArrayTag = '[object Int8Array]';\nconst int16ArrayTag = '[object Int16Array]';\nconst int32ArrayTag = '[object Int32Array]';\nconst bigInt64ArrayTag = '[object BigInt64Array]';\nconst float32ArrayTag = '[object Float32Array]';\nconst float64ArrayTag = '[object Float64Array]';\n\nexports.argumentsTag = argumentsTag;\nexports.arrayBufferTag = arrayBufferTag;\nexports.arrayTag = arrayTag;\nexports.bigInt64ArrayTag = bigInt64ArrayTag;\nexports.bigUint64ArrayTag = bigUint64ArrayTag;\nexports.booleanTag = booleanTag;\nexports.dataViewTag = dataViewTag;\nexports.dateTag = dateTag;\nexports.errorTag = errorTag;\nexports.float32ArrayTag = float32ArrayTag;\nexports.float64ArrayTag = float64ArrayTag;\nexports.functionTag = functionTag;\nexports.int16ArrayTag = int16ArrayTag;\nexports.int32ArrayTag = int32ArrayTag;\nexports.int8ArrayTag = int8ArrayTag;\nexports.mapTag = mapTag;\nexports.numberTag = numberTag;\nexports.objectTag = objectTag;\nexports.regexpTag = regexpTag;\nexports.setTag = setTag;\nexports.stringTag = stringTag;\nexports.symbolTag = symbolTag;\nexports.uint16ArrayTag = uint16ArrayTag;\nexports.uint32ArrayTag = uint32ArrayTag;\nexports.uint8ArrayTag = uint8ArrayTag;\nexports.uint8ClampedArrayTag = uint8ClampedArrayTag;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction isTypedArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n\nexports.isTypedArray = isTypedArray;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst getSymbols = require('../compat/_internal/getSymbols.js');\nconst getTag = require('../compat/_internal/getTag.js');\nconst tags = require('../compat/_internal/tags.js');\nconst isPrimitive = require('../predicate/isPrimitive.js');\nconst isTypedArray = require('../predicate/isTypedArray.js');\n\nfunction cloneDeepWith(obj, cloneValue) {\n return cloneDeepWithImpl(obj, undefined, obj, new Map(), cloneValue);\n}\nfunction cloneDeepWithImpl(valueToClone, keyToClone, objectToClone, stack = new Map(), cloneValue = undefined) {\n const cloned = cloneValue?.(valueToClone, keyToClone, objectToClone, stack);\n if (cloned != null) {\n return cloned;\n }\n if (isPrimitive.isPrimitive(valueToClone)) {\n return valueToClone;\n }\n if (stack.has(valueToClone)) {\n return stack.get(valueToClone);\n }\n if (Array.isArray(valueToClone)) {\n const result = new Array(valueToClone.length);\n stack.set(valueToClone, result);\n for (let i = 0; i < valueToClone.length; i++) {\n result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue);\n }\n if (Object.hasOwn(valueToClone, 'index')) {\n result.index = valueToClone.index;\n }\n if (Object.hasOwn(valueToClone, 'input')) {\n result.input = valueToClone.input;\n }\n return result;\n }\n if (valueToClone instanceof Date) {\n return new Date(valueToClone.getTime());\n }\n if (valueToClone instanceof RegExp) {\n const result = new RegExp(valueToClone.source, valueToClone.flags);\n result.lastIndex = valueToClone.lastIndex;\n return result;\n }\n if (valueToClone instanceof Map) {\n const result = new Map();\n stack.set(valueToClone, result);\n for (const [key, value] of valueToClone) {\n result.set(key, cloneDeepWithImpl(value, key, objectToClone, stack, cloneValue));\n }\n return result;\n }\n if (valueToClone instanceof Set) {\n const result = new Set();\n stack.set(valueToClone, result);\n for (const value of valueToClone) {\n result.add(cloneDeepWithImpl(value, undefined, objectToClone, stack, cloneValue));\n }\n return result;\n }\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(valueToClone)) {\n return valueToClone.subarray();\n }\n if (isTypedArray.isTypedArray(valueToClone)) {\n const result = new (Object.getPrototypeOf(valueToClone).constructor)(valueToClone.length);\n stack.set(valueToClone, result);\n for (let i = 0; i < valueToClone.length; i++) {\n result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue);\n }\n return result;\n }\n if (valueToClone instanceof ArrayBuffer ||\n (typeof SharedArrayBuffer !== 'undefined' && valueToClone instanceof SharedArrayBuffer)) {\n return valueToClone.slice(0);\n }\n if (valueToClone instanceof DataView) {\n const result = new DataView(valueToClone.buffer.slice(0), valueToClone.byteOffset, valueToClone.byteLength);\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (typeof File !== 'undefined' && valueToClone instanceof File) {\n const result = new File([valueToClone], valueToClone.name, {\n type: valueToClone.type,\n });\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof Blob) {\n const result = new Blob([valueToClone], { type: valueToClone.type });\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof Error) {\n const result = new valueToClone.constructor();\n stack.set(valueToClone, result);\n result.message = valueToClone.message;\n result.name = valueToClone.name;\n result.stack = valueToClone.stack;\n result.cause = valueToClone.cause;\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (typeof valueToClone === 'object' && isCloneableObject(valueToClone)) {\n const result = Object.create(Object.getPrototypeOf(valueToClone));\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n return valueToClone;\n}\nfunction copyProperties(target, source, objectToClone = target, stack, cloneValue) {\n const keys = [...Object.keys(source), ...getSymbols.getSymbols(source)];\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const descriptor = Object.getOwnPropertyDescriptor(target, key);\n if (descriptor == null || descriptor.writable) {\n target[key] = cloneDeepWithImpl(source[key], key, objectToClone, stack, cloneValue);\n }\n }\n}\nfunction isCloneableObject(object) {\n switch (getTag.getTag(object)) {\n case tags.argumentsTag:\n case tags.arrayTag:\n case tags.arrayBufferTag:\n case tags.dataViewTag:\n case tags.booleanTag:\n case tags.dateTag:\n case tags.float32ArrayTag:\n case tags.float64ArrayTag:\n case tags.int8ArrayTag:\n case tags.int16ArrayTag:\n case tags.int32ArrayTag:\n case tags.mapTag:\n case tags.numberTag:\n case tags.objectTag:\n case tags.regexpTag:\n case tags.setTag:\n case tags.stringTag:\n case tags.symbolTag:\n case tags.uint8ArrayTag:\n case tags.uint8ClampedArrayTag:\n case tags.uint16ArrayTag:\n case tags.uint32ArrayTag: {\n return true;\n }\n default: {\n return false;\n }\n }\n}\n\nexports.cloneDeepWith = cloneDeepWith;\nexports.cloneDeepWithImpl = cloneDeepWithImpl;\nexports.copyProperties = copyProperties;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst cloneDeepWith = require('./cloneDeepWith.js');\n\nfunction cloneDeep(obj) {\n return cloneDeepWith.cloneDeepWithImpl(obj, undefined, obj, new Map(), undefined);\n}\n\nexports.cloneDeep = cloneDeep;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst isMatch = require('./isMatch.js');\nconst cloneDeep = require('../../object/cloneDeep.js');\n\nfunction matches(source) {\n source = cloneDeep.cloneDeep(source);\n return (target) => {\n return isMatch.isMatch(target, source);\n };\n}\n\nexports.matches = matches;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst cloneDeepWith$1 = require('../../object/cloneDeepWith.js');\nconst tags = require('../_internal/tags.js');\n\nfunction cloneDeepWith(obj, customizer) {\n return cloneDeepWith$1.cloneDeepWith(obj, (value, key, object, stack) => {\n const cloned = customizer?.(value, key, object, stack);\n if (cloned != null) {\n return cloned;\n }\n if (typeof obj !== 'object') {\n return undefined;\n }\n switch (Object.prototype.toString.call(obj)) {\n case tags.numberTag:\n case tags.stringTag:\n case tags.booleanTag: {\n const result = new obj.constructor(obj?.valueOf());\n cloneDeepWith$1.copyProperties(result, obj);\n return result;\n }\n case tags.argumentsTag: {\n const result = {};\n cloneDeepWith$1.copyProperties(result, obj);\n result.length = obj.length;\n result[Symbol.iterator] = obj[Symbol.iterator];\n return result;\n }\n default: {\n return undefined;\n }\n }\n });\n}\n\nexports.cloneDeepWith = cloneDeepWith;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst cloneDeepWith = require('./cloneDeepWith.js');\n\nfunction cloneDeep(obj) {\n return cloneDeepWith.cloneDeepWith(obj);\n}\n\nexports.cloneDeep = cloneDeep;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst IS_UNSIGNED_INTEGER = /^(?:0|[1-9]\\d*)$/;\nfunction isIndex(value, length = Number.MAX_SAFE_INTEGER) {\n switch (typeof value) {\n case 'number': {\n return Number.isInteger(value) && value >= 0 && value < length;\n }\n case 'symbol': {\n return false;\n }\n case 'string': {\n return IS_UNSIGNED_INTEGER.test(value);\n }\n }\n}\n\nexports.isIndex = isIndex;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst getTag = require('../_internal/getTag.js');\n\nfunction isArguments(value) {\n return value !== null && typeof value === 'object' && getTag.getTag(value) === '[object Arguments]';\n}\n\nexports.isArguments = isArguments;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst isDeepKey = require('../_internal/isDeepKey.js');\nconst isIndex = require('../_internal/isIndex.js');\nconst isArguments = require('../predicate/isArguments.js');\nconst toPath = require('../util/toPath.js');\n\nfunction has(object, path) {\n let resolvedPath;\n if (Array.isArray(path)) {\n resolvedPath = path;\n }\n else if (typeof path === 'string' && isDeepKey.isDeepKey(path) && object?.[path] == null) {\n resolvedPath = toPath.toPath(path);\n }\n else {\n resolvedPath = [path];\n }\n if (resolvedPath.length === 0) {\n return false;\n }\n let current = object;\n for (let i = 0; i < resolvedPath.length; i++) {\n const key = resolvedPath[i];\n if (current == null || !Object.hasOwn(current, key)) {\n const isSparseIndex = (Array.isArray(current) || isArguments.isArguments(current)) && isIndex.isIndex(key) && key < current.length;\n if (!isSparseIndex) {\n return false;\n }\n }\n current = current[key];\n }\n return true;\n}\n\nexports.has = has;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst isMatch = require('./isMatch.js');\nconst toKey = require('../_internal/toKey.js');\nconst cloneDeep = require('../object/cloneDeep.js');\nconst get = require('../object/get.js');\nconst has = require('../object/has.js');\n\nfunction matchesProperty(property, source) {\n switch (typeof property) {\n case 'object': {\n if (Object.is(property?.valueOf(), -0)) {\n property = '-0';\n }\n break;\n }\n case 'number': {\n property = toKey.toKey(property);\n break;\n }\n }\n source = cloneDeep.cloneDeep(source);\n return function (target) {\n const result = get.get(target, property);\n if (result === undefined) {\n return has.has(target, property);\n }\n if (source === undefined) {\n return result === undefined;\n }\n return isMatch.isMatch(result, source);\n };\n}\n\nexports.matchesProperty = matchesProperty;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst identity = require('../../function/identity.js');\nconst property = require('../object/property.js');\nconst matches = require('../predicate/matches.js');\nconst matchesProperty = require('../predicate/matchesProperty.js');\n\nfunction iteratee(value) {\n if (value == null) {\n return identity.identity;\n }\n switch (typeof value) {\n case 'function': {\n return value;\n }\n case 'object': {\n if (Array.isArray(value) && value.length === 2) {\n return matchesProperty.matchesProperty(value[0], value[1]);\n }\n return matches.matches(value);\n }\n case 'string':\n case 'symbol':\n case 'number': {\n return property.property(value);\n }\n }\n}\n\nexports.iteratee = iteratee;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst uniqBy$1 = require('../../array/uniqBy.js');\nconst identity = require('../../function/identity.js');\nconst isArrayLikeObject = require('../predicate/isArrayLikeObject.js');\nconst iteratee = require('../util/iteratee.js');\n\nfunction uniqBy(array, iteratee$1 = identity.identity) {\n if (!isArrayLikeObject.isArrayLikeObject(array)) {\n return [];\n }\n return uniqBy$1.uniqBy(Array.from(array), iteratee.iteratee(iteratee$1));\n}\n\nexports.uniqBy = uniqBy;\n","module.exports = require('../dist/compat/array/uniqBy.js').uniqBy;\n","import uniqBy from 'es-toolkit/compat/uniqBy';\n\n/**\n * This is configuration option that decides how to filter for unique values only:\n *\n * - `false` means \"no filter\"\n * - `true` means \"use recharts default filter\"\n * - function means \"use return of this function as the default key\"\n */\n\nexport function getUniqPayload(payload, option, defaultUniqBy) {\n if (option === true) {\n return uniqBy(payload, defaultUniqBy);\n }\n if (typeof option === 'function') {\n return uniqBy(payload, option);\n }\n return payload;\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\n exports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n ) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot))\n return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n };\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","import { createContext } from 'react';\n\n/*\n * This is a copy of the React-Redux context type, but with our own store type.\n * We could import directly from react-redux like this:\n * import { ReactReduxContextValue } from 'react-redux/src/components/Context';\n * but that makes typescript angry with some errors I am not sure how to resolve\n * so copy it is.\n */\n\n/**\n * We need to use our own independent Redux context because we need to avoid interfering with other people's Redux stores\n * in case they decide to install and use Recharts in another Redux app which is likely to happen.\n *\n * https://react-redux.js.org/using-react-redux/accessing-store#providing-custom-context\n */\nexport var RechartsReduxContext = /*#__PURE__*/createContext(null);","import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { useContext } from 'react';\nimport { RechartsReduxContext } from './RechartsReduxContext';\nvar noopDispatch = a => a;\nexport var useAppDispatch = () => {\n var context = useContext(RechartsReduxContext);\n if (context) {\n return context.store.dispatch;\n }\n return noopDispatch;\n};\nvar noop = () => {};\nvar addNestedSubNoop = () => noop;\nvar refEquality = (a, b) => a === b;\n\n/**\n * This is a recharts variant of `useSelector` from 'react-redux' package.\n *\n * The difference is that react-redux version will throw an Error when used outside of Redux context.\n *\n * This, recharts version, will return undefined instead.\n *\n * This is because we want to allow using our components outside the Chart wrapper,\n * and have people provide all props explicitly.\n *\n * If however they use the component inside a chart wrapper then those props become optional,\n * and we read them from Redux state instead.\n *\n * @param selector for pulling things out of Redux store; will not be called if the store is not accessible\n * @return whatever the selector returned; or undefined when outside of Redux store\n */\nexport function useAppSelector(selector) {\n var context = useContext(RechartsReduxContext);\n return useSyncExternalStoreWithSelector(context ? context.subscription.addNestedSub : addNestedSubNoop, context ? context.store.getState : noop, context ? context.store.getState : noop, context ? selector : noop, refEquality);\n}","// src/devModeChecks/identityFunctionCheck.ts\nvar runIdentityFunctionCheck = (resultFunc, inputSelectorsResults, outputSelectorResult) => {\n if (inputSelectorsResults.length === 1 && inputSelectorsResults[0] === outputSelectorResult) {\n let isInputSameAsOutput = false;\n try {\n const emptyObject = {};\n if (resultFunc(emptyObject) === emptyObject)\n isInputSameAsOutput = true;\n } catch {\n }\n if (isInputSameAsOutput) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"The result function returned its own inputs without modification. e.g\\n`createSelector([state => state.todos], todos => todos)`\\nThis could lead to inefficient memoization and unnecessary re-renders.\\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.\",\n { stack }\n );\n }\n }\n};\n\n// src/devModeChecks/inputStabilityCheck.ts\nvar runInputStabilityCheck = (inputSelectorResultsObject, options, inputSelectorArgs) => {\n const { memoize, memoizeOptions } = options;\n const { inputSelectorResults, inputSelectorResultsCopy } = inputSelectorResultsObject;\n const createAnEmptyObject = memoize(() => ({}), ...memoizeOptions);\n const areInputSelectorResultsEqual = createAnEmptyObject.apply(null, inputSelectorResults) === createAnEmptyObject.apply(null, inputSelectorResultsCopy);\n if (!areInputSelectorResultsEqual) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"An input selector returned a different result when passed same arguments.\\nThis means your output selector will likely run more frequently than intended.\\nAvoid returning a new reference inside your input selector, e.g.\\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`\",\n {\n arguments: inputSelectorArgs,\n firstInputs: inputSelectorResults,\n secondInputs: inputSelectorResultsCopy,\n stack\n }\n );\n }\n};\n\n// src/devModeChecks/setGlobalDevModeChecks.ts\nvar globalDevModeChecks = {\n inputStabilityCheck: \"once\",\n identityFunctionCheck: \"once\"\n};\nvar setGlobalDevModeChecks = (devModeChecks) => {\n Object.assign(globalDevModeChecks, devModeChecks);\n};\n\n// src/utils.ts\nvar NOT_FOUND = /* @__PURE__ */ Symbol(\"NOT_FOUND\");\nfunction assertIsFunction(func, errorMessage = `expected a function, instead received ${typeof func}`) {\n if (typeof func !== \"function\") {\n throw new TypeError(errorMessage);\n }\n}\nfunction assertIsObject(object, errorMessage = `expected an object, instead received ${typeof object}`) {\n if (typeof object !== \"object\") {\n throw new TypeError(errorMessage);\n }\n}\nfunction assertIsArrayOfFunctions(array, errorMessage = `expected all items to be functions, instead received the following types: `) {\n if (!array.every((item) => typeof item === \"function\")) {\n const itemTypes = array.map(\n (item) => typeof item === \"function\" ? `function ${item.name || \"unnamed\"}()` : typeof item\n ).join(\", \");\n throw new TypeError(`${errorMessage}[${itemTypes}]`);\n }\n}\nvar ensureIsArray = (item) => {\n return Array.isArray(item) ? item : [item];\n};\nfunction getDependencies(createSelectorArgs) {\n const dependencies = Array.isArray(createSelectorArgs[0]) ? createSelectorArgs[0] : createSelectorArgs;\n assertIsArrayOfFunctions(\n dependencies,\n `createSelector expects all input-selectors to be functions, but received the following types: `\n );\n return dependencies;\n}\nfunction collectInputSelectorResults(dependencies, inputSelectorArgs) {\n const inputSelectorResults = [];\n const { length } = dependencies;\n for (let i = 0; i < length; i++) {\n inputSelectorResults.push(dependencies[i].apply(null, inputSelectorArgs));\n }\n return inputSelectorResults;\n}\nvar getDevModeChecksExecutionInfo = (firstRun, devModeChecks) => {\n const { identityFunctionCheck, inputStabilityCheck } = {\n ...globalDevModeChecks,\n ...devModeChecks\n };\n return {\n identityFunctionCheck: {\n shouldRun: identityFunctionCheck === \"always\" || identityFunctionCheck === \"once\" && firstRun,\n run: runIdentityFunctionCheck\n },\n inputStabilityCheck: {\n shouldRun: inputStabilityCheck === \"always\" || inputStabilityCheck === \"once\" && firstRun,\n run: runInputStabilityCheck\n }\n };\n};\n\n// src/autotrackMemoize/autotracking.ts\nvar $REVISION = 0;\nvar CURRENT_TRACKER = null;\nvar Cell = class {\n revision = $REVISION;\n _value;\n _lastValue;\n _isEqual = tripleEq;\n constructor(initialValue, isEqual = tripleEq) {\n this._value = this._lastValue = initialValue;\n this._isEqual = isEqual;\n }\n // Whenever a storage value is read, it'll add itself to the current tracker if\n // one exists, entangling its state with that cache.\n get value() {\n CURRENT_TRACKER?.add(this);\n return this._value;\n }\n // Whenever a storage value is updated, we bump the global revision clock,\n // assign the revision for this storage to the new value, _and_ we schedule a\n // rerender. This is important, and it's what makes autotracking _pull_\n // based. We don't actively tell the caches which depend on the storage that\n // anything has happened. Instead, we recompute the caches when needed.\n set value(newValue) {\n if (this.value === newValue)\n return;\n this._value = newValue;\n this.revision = ++$REVISION;\n }\n};\nfunction tripleEq(a, b) {\n return a === b;\n}\nvar TrackingCache = class {\n _cachedValue;\n _cachedRevision = -1;\n _deps = [];\n hits = 0;\n fn;\n constructor(fn) {\n this.fn = fn;\n }\n clear() {\n this._cachedValue = void 0;\n this._cachedRevision = -1;\n this._deps = [];\n this.hits = 0;\n }\n get value() {\n if (this.revision > this._cachedRevision) {\n const { fn } = this;\n const currentTracker = /* @__PURE__ */ new Set();\n const prevTracker = CURRENT_TRACKER;\n CURRENT_TRACKER = currentTracker;\n this._cachedValue = fn();\n CURRENT_TRACKER = prevTracker;\n this.hits++;\n this._deps = Array.from(currentTracker);\n this._cachedRevision = this.revision;\n }\n CURRENT_TRACKER?.add(this);\n return this._cachedValue;\n }\n get revision() {\n return Math.max(...this._deps.map((d) => d.revision), 0);\n }\n};\nfunction getValue(cell) {\n if (!(cell instanceof Cell)) {\n console.warn(\"Not a valid cell! \", cell);\n }\n return cell.value;\n}\nfunction setValue(storage, value) {\n if (!(storage instanceof Cell)) {\n throw new TypeError(\n \"setValue must be passed a tracked store created with `createStorage`.\"\n );\n }\n storage.value = storage._lastValue = value;\n}\nfunction createCell(initialValue, isEqual = tripleEq) {\n return new Cell(initialValue, isEqual);\n}\nfunction createCache(fn) {\n assertIsFunction(\n fn,\n \"the first parameter to `createCache` must be a function\"\n );\n return new TrackingCache(fn);\n}\n\n// src/autotrackMemoize/tracking.ts\nvar neverEq = (a, b) => false;\nfunction createTag() {\n return createCell(null, neverEq);\n}\nfunction dirtyTag(tag, value) {\n setValue(tag, value);\n}\nvar consumeCollection = (node) => {\n let tag = node.collectionTag;\n if (tag === null) {\n tag = node.collectionTag = createTag();\n }\n getValue(tag);\n};\nvar dirtyCollection = (node) => {\n const tag = node.collectionTag;\n if (tag !== null) {\n dirtyTag(tag, null);\n }\n};\n\n// src/autotrackMemoize/proxy.ts\nvar REDUX_PROXY_LABEL = Symbol();\nvar nextId = 0;\nvar proto = Object.getPrototypeOf({});\nvar ObjectTreeNode = class {\n constructor(value) {\n this.value = value;\n this.value = value;\n this.tag.value = value;\n }\n proxy = new Proxy(this, objectProxyHandler);\n tag = createTag();\n tags = {};\n children = {};\n collectionTag = null;\n id = nextId++;\n};\nvar objectProxyHandler = {\n get(node, key) {\n function calculateResult() {\n const { value } = node;\n const childValue = Reflect.get(value, key);\n if (typeof key === \"symbol\") {\n return childValue;\n }\n if (key in proto) {\n return childValue;\n }\n if (typeof childValue === \"object\" && childValue !== null) {\n let childNode = node.children[key];\n if (childNode === void 0) {\n childNode = node.children[key] = createNode(childValue);\n }\n if (childNode.tag) {\n getValue(childNode.tag);\n }\n return childNode.proxy;\n } else {\n let tag = node.tags[key];\n if (tag === void 0) {\n tag = node.tags[key] = createTag();\n tag.value = childValue;\n }\n getValue(tag);\n return childValue;\n }\n }\n const res = calculateResult();\n return res;\n },\n ownKeys(node) {\n consumeCollection(node);\n return Reflect.ownKeys(node.value);\n },\n getOwnPropertyDescriptor(node, prop) {\n return Reflect.getOwnPropertyDescriptor(node.value, prop);\n },\n has(node, prop) {\n return Reflect.has(node.value, prop);\n }\n};\nvar ArrayTreeNode = class {\n constructor(value) {\n this.value = value;\n this.value = value;\n this.tag.value = value;\n }\n proxy = new Proxy([this], arrayProxyHandler);\n tag = createTag();\n tags = {};\n children = {};\n collectionTag = null;\n id = nextId++;\n};\nvar arrayProxyHandler = {\n get([node], key) {\n if (key === \"length\") {\n consumeCollection(node);\n }\n return objectProxyHandler.get(node, key);\n },\n ownKeys([node]) {\n return objectProxyHandler.ownKeys(node);\n },\n getOwnPropertyDescriptor([node], prop) {\n return objectProxyHandler.getOwnPropertyDescriptor(node, prop);\n },\n has([node], prop) {\n return objectProxyHandler.has(node, prop);\n }\n};\nfunction createNode(value) {\n if (Array.isArray(value)) {\n return new ArrayTreeNode(value);\n }\n return new ObjectTreeNode(value);\n}\nfunction updateNode(node, newValue) {\n const { value, tags, children } = node;\n node.value = newValue;\n if (Array.isArray(value) && Array.isArray(newValue) && value.length !== newValue.length) {\n dirtyCollection(node);\n } else {\n if (value !== newValue) {\n let oldKeysSize = 0;\n let newKeysSize = 0;\n let anyKeysAdded = false;\n for (const _key in value) {\n oldKeysSize++;\n }\n for (const key in newValue) {\n newKeysSize++;\n if (!(key in value)) {\n anyKeysAdded = true;\n break;\n }\n }\n const isDifferent = anyKeysAdded || oldKeysSize !== newKeysSize;\n if (isDifferent) {\n dirtyCollection(node);\n }\n }\n }\n for (const key in tags) {\n const childValue = value[key];\n const newChildValue = newValue[key];\n if (childValue !== newChildValue) {\n dirtyCollection(node);\n dirtyTag(tags[key], newChildValue);\n }\n if (typeof newChildValue === \"object\" && newChildValue !== null) {\n delete tags[key];\n }\n }\n for (const key in children) {\n const childNode = children[key];\n const newChildValue = newValue[key];\n const childValue = childNode.value;\n if (childValue === newChildValue) {\n continue;\n } else if (typeof newChildValue === \"object\" && newChildValue !== null) {\n updateNode(childNode, newChildValue);\n } else {\n deleteNode(childNode);\n delete children[key];\n }\n }\n}\nfunction deleteNode(node) {\n if (node.tag) {\n dirtyTag(node.tag, null);\n }\n dirtyCollection(node);\n for (const key in node.tags) {\n dirtyTag(node.tags[key], null);\n }\n for (const key in node.children) {\n deleteNode(node.children[key]);\n }\n}\n\n// src/lruMemoize.ts\nfunction createSingletonCache(equals) {\n let entry;\n return {\n get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n return NOT_FOUND;\n },\n put(key, value) {\n entry = { key, value };\n },\n getEntries() {\n return entry ? [entry] : [];\n },\n clear() {\n entry = void 0;\n }\n };\n}\nfunction createLruCache(maxSize, equals) {\n let entries = [];\n function get(key) {\n const cacheIndex = entries.findIndex((entry) => equals(key, entry.key));\n if (cacheIndex > -1) {\n const entry = entries[cacheIndex];\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n return entry.value;\n }\n return NOT_FOUND;\n }\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n entries.unshift({ key, value });\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n function getEntries() {\n return entries;\n }\n function clear() {\n entries = [];\n }\n return { get, put, getEntries, clear };\n}\nvar referenceEqualityCheck = (a, b) => a === b;\nfunction createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n const { length } = prev;\n for (let i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n return true;\n };\n}\nfunction lruMemoize(func, equalityCheckOrOptions) {\n const providedOptions = typeof equalityCheckOrOptions === \"object\" ? equalityCheckOrOptions : { equalityCheck: equalityCheckOrOptions };\n const {\n equalityCheck = referenceEqualityCheck,\n maxSize = 1,\n resultEqualityCheck\n } = providedOptions;\n const comparator = createCacheKeyComparator(equalityCheck);\n let resultsCount = 0;\n const cache = maxSize <= 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);\n function memoized() {\n let value = cache.get(arguments);\n if (value === NOT_FOUND) {\n value = func.apply(null, arguments);\n resultsCount++;\n if (resultEqualityCheck) {\n const entries = cache.getEntries();\n const matchingEntry = entries.find(\n (entry) => resultEqualityCheck(entry.value, value)\n );\n if (matchingEntry) {\n value = matchingEntry.value;\n resultsCount !== 0 && resultsCount--;\n }\n }\n cache.put(arguments, value);\n }\n return value;\n }\n memoized.clearCache = () => {\n cache.clear();\n memoized.resetResultsCount();\n };\n memoized.resultsCount = () => resultsCount;\n memoized.resetResultsCount = () => {\n resultsCount = 0;\n };\n return memoized;\n}\n\n// src/autotrackMemoize/autotrackMemoize.ts\nfunction autotrackMemoize(func) {\n const node = createNode(\n []\n );\n let lastArgs = null;\n const shallowEqual = createCacheKeyComparator(referenceEqualityCheck);\n const cache = createCache(() => {\n const res = func.apply(null, node.proxy);\n return res;\n });\n function memoized() {\n if (!shallowEqual(lastArgs, arguments)) {\n updateNode(node, arguments);\n lastArgs = arguments;\n }\n return cache.value;\n }\n memoized.clearCache = () => {\n return cache.clear();\n };\n return memoized;\n}\n\n// src/weakMapMemoize.ts\nvar StrongRef = class {\n constructor(value) {\n this.value = value;\n }\n deref() {\n return this.value;\n }\n};\nvar Ref = typeof WeakRef !== \"undefined\" ? WeakRef : StrongRef;\nvar UNTERMINATED = 0;\nvar TERMINATED = 1;\nfunction createCacheNode() {\n return {\n s: UNTERMINATED,\n v: void 0,\n o: null,\n p: null\n };\n}\nfunction weakMapMemoize(func, options = {}) {\n let fnNode = createCacheNode();\n const { resultEqualityCheck } = options;\n let lastResult;\n let resultsCount = 0;\n function memoized() {\n let cacheNode = fnNode;\n const { length } = arguments;\n for (let i = 0, l = length; i < l; i++) {\n const arg = arguments[i];\n if (typeof arg === \"function\" || typeof arg === \"object\" && arg !== null) {\n let objectCache = cacheNode.o;\n if (objectCache === null) {\n cacheNode.o = objectCache = /* @__PURE__ */ new WeakMap();\n }\n const objectNode = objectCache.get(arg);\n if (objectNode === void 0) {\n cacheNode = createCacheNode();\n objectCache.set(arg, cacheNode);\n } else {\n cacheNode = objectNode;\n }\n } else {\n let primitiveCache = cacheNode.p;\n if (primitiveCache === null) {\n cacheNode.p = primitiveCache = /* @__PURE__ */ new Map();\n }\n const primitiveNode = primitiveCache.get(arg);\n if (primitiveNode === void 0) {\n cacheNode = createCacheNode();\n primitiveCache.set(arg, cacheNode);\n } else {\n cacheNode = primitiveNode;\n }\n }\n }\n const terminatedNode = cacheNode;\n let result;\n if (cacheNode.s === TERMINATED) {\n result = cacheNode.v;\n } else {\n result = func.apply(null, arguments);\n resultsCount++;\n if (resultEqualityCheck) {\n const lastResultValue = lastResult?.deref?.() ?? lastResult;\n if (lastResultValue != null && resultEqualityCheck(lastResultValue, result)) {\n result = lastResultValue;\n resultsCount !== 0 && resultsCount--;\n }\n const needsWeakRef = typeof result === \"object\" && result !== null || typeof result === \"function\";\n lastResult = needsWeakRef ? new Ref(result) : result;\n }\n }\n terminatedNode.s = TERMINATED;\n terminatedNode.v = result;\n return result;\n }\n memoized.clearCache = () => {\n fnNode = createCacheNode();\n memoized.resetResultsCount();\n };\n memoized.resultsCount = () => resultsCount;\n memoized.resetResultsCount = () => {\n resultsCount = 0;\n };\n return memoized;\n}\n\n// src/createSelectorCreator.ts\nfunction createSelectorCreator(memoizeOrOptions, ...memoizeOptionsFromArgs) {\n const createSelectorCreatorOptions = typeof memoizeOrOptions === \"function\" ? {\n memoize: memoizeOrOptions,\n memoizeOptions: memoizeOptionsFromArgs\n } : memoizeOrOptions;\n const createSelector2 = (...createSelectorArgs) => {\n let recomputations = 0;\n let dependencyRecomputations = 0;\n let lastResult;\n let directlyPassedOptions = {};\n let resultFunc = createSelectorArgs.pop();\n if (typeof resultFunc === \"object\") {\n directlyPassedOptions = resultFunc;\n resultFunc = createSelectorArgs.pop();\n }\n assertIsFunction(\n resultFunc,\n `createSelector expects an output function after the inputs, but received: [${typeof resultFunc}]`\n );\n const combinedOptions = {\n ...createSelectorCreatorOptions,\n ...directlyPassedOptions\n };\n const {\n memoize,\n memoizeOptions = [],\n argsMemoize = weakMapMemoize,\n argsMemoizeOptions = [],\n devModeChecks = {}\n } = combinedOptions;\n const finalMemoizeOptions = ensureIsArray(memoizeOptions);\n const finalArgsMemoizeOptions = ensureIsArray(argsMemoizeOptions);\n const dependencies = getDependencies(createSelectorArgs);\n const memoizedResultFunc = memoize(function recomputationWrapper() {\n recomputations++;\n return resultFunc.apply(\n null,\n arguments\n );\n }, ...finalMemoizeOptions);\n let firstRun = true;\n const selector = argsMemoize(function dependenciesChecker() {\n dependencyRecomputations++;\n const inputSelectorResults = collectInputSelectorResults(\n dependencies,\n arguments\n );\n lastResult = memoizedResultFunc.apply(null, inputSelectorResults);\n if (process.env.NODE_ENV !== \"production\") {\n const { identityFunctionCheck, inputStabilityCheck } = getDevModeChecksExecutionInfo(firstRun, devModeChecks);\n if (identityFunctionCheck.shouldRun) {\n identityFunctionCheck.run(\n resultFunc,\n inputSelectorResults,\n lastResult\n );\n }\n if (inputStabilityCheck.shouldRun) {\n const inputSelectorResultsCopy = collectInputSelectorResults(\n dependencies,\n arguments\n );\n inputStabilityCheck.run(\n { inputSelectorResults, inputSelectorResultsCopy },\n { memoize, memoizeOptions: finalMemoizeOptions },\n arguments\n );\n }\n if (firstRun)\n firstRun = false;\n }\n return lastResult;\n }, ...finalArgsMemoizeOptions);\n return Object.assign(selector, {\n resultFunc,\n memoizedResultFunc,\n dependencies,\n dependencyRecomputations: () => dependencyRecomputations,\n resetDependencyRecomputations: () => {\n dependencyRecomputations = 0;\n },\n lastResult: () => lastResult,\n recomputations: () => recomputations,\n resetRecomputations: () => {\n recomputations = 0;\n },\n memoize,\n argsMemoize\n });\n };\n Object.assign(createSelector2, {\n withTypes: () => createSelector2\n });\n return createSelector2;\n}\nvar createSelector = /* @__PURE__ */ createSelectorCreator(weakMapMemoize);\n\n// src/createStructuredSelector.ts\nvar createStructuredSelector = Object.assign(\n (inputSelectorsObject, selectorCreator = createSelector) => {\n assertIsObject(\n inputSelectorsObject,\n `createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof inputSelectorsObject}`\n );\n const inputSelectorKeys = Object.keys(inputSelectorsObject);\n const dependencies = inputSelectorKeys.map(\n (key) => inputSelectorsObject[key]\n );\n const structuredSelector = selectorCreator(\n dependencies,\n (...inputSelectorResults) => {\n return inputSelectorResults.reduce((composition, value, index) => {\n composition[inputSelectorKeys[index]] = value;\n return composition;\n }, {});\n }\n );\n return structuredSelector;\n },\n { withTypes: () => createStructuredSelector }\n);\nexport {\n createSelector,\n createSelectorCreator,\n createStructuredSelector,\n lruMemoize,\n referenceEqualityCheck,\n setGlobalDevModeChecks,\n autotrackMemoize as unstable_autotrackMemoize,\n weakMapMemoize\n};\n//# sourceMappingURL=reselect.mjs.map","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction getPriority(a) {\n if (typeof a === 'symbol') {\n return 1;\n }\n if (a === null) {\n return 2;\n }\n if (a === undefined) {\n return 3;\n }\n if (a !== a) {\n return 4;\n }\n return 0;\n}\nconst compareValues = (a, b, order) => {\n if (a !== b) {\n const aPriority = getPriority(a);\n const bPriority = getPriority(b);\n if (aPriority === bPriority && aPriority === 0) {\n if (a < b) {\n return order === 'desc' ? 1 : -1;\n }\n if (a > b) {\n return order === 'desc' ? -1 : 1;\n }\n }\n return order === 'desc' ? bPriority - aPriority : aPriority - bPriority;\n }\n return 0;\n};\n\nexports.compareValues = compareValues;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction isSymbol(value) {\n return typeof value === 'symbol' || value instanceof Symbol;\n}\n\nexports.isSymbol = isSymbol;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst isSymbol = require('../predicate/isSymbol.js');\n\nconst regexIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/;\nconst regexIsPlainProp = /^\\w*$/;\nfunction isKey(value, object) {\n if (Array.isArray(value)) {\n return false;\n }\n if (typeof value === 'number' || typeof value === 'boolean' || value == null || isSymbol.isSymbol(value)) {\n return true;\n }\n return ((typeof value === 'string' && (regexIsPlainProp.test(value) || !regexIsDeepProp.test(value))) ||\n (object != null && Object.hasOwn(object, value)));\n}\n\nexports.isKey = isKey;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst compareValues = require('../_internal/compareValues.js');\nconst isKey = require('../_internal/isKey.js');\nconst toPath = require('../util/toPath.js');\n\nfunction orderBy(collection, criteria, orders, guard) {\n if (collection == null) {\n return [];\n }\n orders = guard ? undefined : orders;\n if (!Array.isArray(collection)) {\n collection = Object.values(collection);\n }\n if (!Array.isArray(criteria)) {\n criteria = criteria == null ? [null] : [criteria];\n }\n if (criteria.length === 0) {\n criteria = [null];\n }\n if (!Array.isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n orders = orders.map(order => String(order));\n const getValueByNestedPath = (object, path) => {\n let target = object;\n for (let i = 0; i < path.length && target != null; ++i) {\n target = target[path[i]];\n }\n return target;\n };\n const getValueByCriterion = (criterion, object) => {\n if (object == null || criterion == null) {\n return object;\n }\n if (typeof criterion === 'object' && 'key' in criterion) {\n if (Object.hasOwn(object, criterion.key)) {\n return object[criterion.key];\n }\n return getValueByNestedPath(object, criterion.path);\n }\n if (typeof criterion === 'function') {\n return criterion(object);\n }\n if (Array.isArray(criterion)) {\n return getValueByNestedPath(object, criterion);\n }\n if (typeof object === 'object') {\n return object[criterion];\n }\n return object;\n };\n const preparedCriteria = criteria.map((criterion) => {\n if (Array.isArray(criterion) && criterion.length === 1) {\n criterion = criterion[0];\n }\n if (criterion == null || typeof criterion === 'function' || Array.isArray(criterion) || isKey.isKey(criterion)) {\n return criterion;\n }\n return { key: criterion, path: toPath.toPath(criterion) };\n });\n const preparedCollection = collection.map(item => ({\n original: item,\n criteria: preparedCriteria.map((criterion) => getValueByCriterion(criterion, item)),\n }));\n return preparedCollection\n .slice()\n .sort((a, b) => {\n for (let i = 0; i < preparedCriteria.length; i++) {\n const comparedResult = compareValues.compareValues(a.criteria[i], b.criteria[i], orders[i]);\n if (comparedResult !== 0) {\n return comparedResult;\n }\n }\n return 0;\n })\n .map(item => item.original);\n}\n\nexports.orderBy = orderBy;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction flatten(arr, depth = 1) {\n const result = [];\n const flooredDepth = Math.floor(depth);\n const recursive = (arr, currentDepth) => {\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n if (Array.isArray(item) && currentDepth < flooredDepth) {\n recursive(item, currentDepth + 1);\n }\n else {\n result.push(item);\n }\n }\n };\n recursive(arr, 0);\n return result;\n}\n\nexports.flatten = flatten;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst isIndex = require('./isIndex.js');\nconst isArrayLike = require('../predicate/isArrayLike.js');\nconst isObject = require('../predicate/isObject.js');\nconst eq = require('../util/eq.js');\n\nfunction isIterateeCall(value, index, object) {\n if (!isObject.isObject(object)) {\n return false;\n }\n if ((typeof index === 'number' && isArrayLike.isArrayLike(object) && isIndex.isIndex(index) && index < object.length) ||\n (typeof index === 'string' && index in object)) {\n return eq.eq(object[index], value);\n }\n return false;\n}\n\nexports.isIterateeCall = isIterateeCall;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst orderBy = require('./orderBy.js');\nconst flatten = require('../../array/flatten.js');\nconst isIterateeCall = require('../_internal/isIterateeCall.js');\n\nfunction sortBy(collection, ...criteria) {\n const length = criteria.length;\n if (length > 1 && isIterateeCall.isIterateeCall(collection, criteria[0], criteria[1])) {\n criteria = [];\n }\n else if (length > 2 && isIterateeCall.isIterateeCall(criteria[0], criteria[1], criteria[2])) {\n criteria = [criteria[0]];\n }\n return orderBy.orderBy(collection, flatten.flatten(criteria), ['asc']);\n}\n\nexports.sortBy = sortBy;\n","module.exports = require('../dist/compat/array/sortBy.js').sortBy;\n","import { createSelector } from 'reselect';\nimport sortBy from 'es-toolkit/compat/sortBy';\nexport var selectLegendSettings = state => state.legend.settings;\nexport var selectLegendSize = state => state.legend.size;\nvar selectAllLegendPayload2DArray = state => state.legend.payload;\nexport var selectLegendPayload = createSelector([selectAllLegendPayload2DArray, selectLegendSettings], (payloads, _ref) => {\n var {\n itemSorter\n } = _ref;\n var flat = payloads.flat(1);\n return itemSorter ? sortBy(flat, itemSorter) : flat;\n});","import { useCallback, useState } from 'react';\nvar EPS = 1;\n\n/**\n * TODO this documentation does not reflect what this hook is doing, update it.\n * Stores the `offsetHeight`, `offsetLeft`, `offsetTop`, and `offsetWidth` of a DOM element.\n */\n\n/**\n * Use this to listen to element layout changes.\n *\n * Very useful for reading actual sizes of DOM elements relative to the viewport.\n *\n * @param extraDependencies use this to trigger new DOM dimensions read when any of these change. Good for things like payload and label, that will re-render something down in the children array, but you want to read the layout box of a parent.\n * @returns [lastElementOffset, updateElementOffset] most recent value, and setter. Pass the setter to a DOM element ref like this: `<div ref={updateElementOffset}>`\n */\nexport function useElementOffset() {\n var extraDependencies = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var [lastBoundingBox, setLastBoundingBox] = useState({\n height: 0,\n left: 0,\n top: 0,\n width: 0\n });\n var updateBoundingBox = useCallback(node => {\n if (node != null) {\n var rect = node.getBoundingClientRect();\n var box = {\n height: rect.height,\n left: rect.left,\n top: rect.top,\n width: rect.width\n };\n if (Math.abs(box.height - lastBoundingBox.height) > EPS || Math.abs(box.left - lastBoundingBox.left) > EPS || Math.abs(box.top - lastBoundingBox.top) > EPS || Math.abs(box.width - lastBoundingBox.width) > EPS) {\n setLastBoundingBox({\n height: box.height,\n left: box.left,\n top: box.top,\n width: box.width\n });\n }\n }\n }, [lastBoundingBox.width, lastBoundingBox.height, lastBoundingBox.top, lastBoundingBox.left, ...extraDependencies]);\n return [lastBoundingBox, updateBoundingBox];\n}","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `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 },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n return typeof Ctor == \"function\" && Function.toString.call(Ctor) === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter) {\n if (getArchtype(obj) === 0 /* Object */) {\n Reflect.ownKeys(obj).forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections;\n }\n Object.freeze(obj);\n if (deep)\n Object.entries(obj).forEach(([key, value]) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nfunction isFrozen(obj) {\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path)\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2)\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !isFrozen(childValue)) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && Object.prototype.propertyIsEnumerable.call(targetObject, prop))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\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} recipe - 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 */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\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 */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n } else {\n copy = shallowCopy(value, true);\n }\n each(copy, (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n });\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer);\nvar applyPatches = immer.applyPatches.bind(immer);\nvar createDraft = immer.createDraft.bind(immer);\nvar finishDraft = immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { isValidElement } from 'react';\nexport var RADIAN = Math.PI / 180;\nexport var degreeToRadian = angle => angle * Math.PI / 180;\nexport var radianToDegree = angleInRadian => angleInRadian * 180 / Math.PI;\nexport var polarToCartesian = (cx, cy, radius, angle) => ({\n x: cx + Math.cos(-RADIAN * angle) * radius,\n y: cy + Math.sin(-RADIAN * angle) * radius\n});\nexport var getMaxRadius = function getMaxRadius(width, height) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n width: 0,\n height: 0,\n brushBottom: 0\n };\n return Math.min(Math.abs(width - (offset.left || 0) - (offset.right || 0)), Math.abs(height - (offset.top || 0) - (offset.bottom || 0))) / 2;\n};\nexport var distanceBetweenPoints = (point, anotherPoint) => {\n var {\n x: x1,\n y: y1\n } = point;\n var {\n x: x2,\n y: y2\n } = anotherPoint;\n return Math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2);\n};\nexport var getAngleOfPoint = (_ref, _ref2) => {\n var {\n x,\n y\n } = _ref;\n var {\n cx,\n cy\n } = _ref2;\n var radius = distanceBetweenPoints({\n x,\n y\n }, {\n x: cx,\n y: cy\n });\n if (radius <= 0) {\n return {\n radius,\n angle: 0\n };\n }\n var cos = (x - cx) / radius;\n var angleInRadian = Math.acos(cos);\n if (y > cy) {\n angleInRadian = 2 * Math.PI - angleInRadian;\n }\n return {\n radius,\n angle: radianToDegree(angleInRadian),\n angleInRadian\n };\n};\nexport var formatAngleOfSector = _ref3 => {\n var {\n startAngle,\n endAngle\n } = _ref3;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return {\n startAngle: startAngle - min * 360,\n endAngle: endAngle - min * 360\n };\n};\nvar reverseFormatAngleOfSector = (angle, _ref4) => {\n var {\n startAngle,\n endAngle\n } = _ref4;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return angle + min * 360;\n};\nexport var inRangeOfSector = (_ref5, viewBox) => {\n var {\n x,\n y\n } = _ref5;\n var {\n radius,\n angle\n } = getAngleOfPoint({\n x,\n y\n }, viewBox);\n var {\n innerRadius,\n outerRadius\n } = viewBox;\n if (radius < innerRadius || radius > outerRadius) {\n return null;\n }\n if (radius === 0) {\n return null;\n }\n var {\n startAngle,\n endAngle\n } = formatAngleOfSector(viewBox);\n var formatAngle = angle;\n var inRange;\n if (startAngle <= endAngle) {\n while (formatAngle > endAngle) {\n formatAngle -= 360;\n }\n while (formatAngle < startAngle) {\n formatAngle += 360;\n }\n inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n } else {\n while (formatAngle > startAngle) {\n formatAngle -= 360;\n }\n while (formatAngle < endAngle) {\n formatAngle += 360;\n }\n inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n }\n if (inRange) {\n return _objectSpread(_objectSpread({}, viewBox), {}, {\n radius,\n angle: reverseFormatAngleOfSector(formatAngle, viewBox)\n });\n }\n return null;\n};\nexport var getTickClassName = tick => ! /*#__PURE__*/isValidElement(tick) && typeof tick !== 'function' && typeof tick !== 'boolean' && tick != null ? tick.className : '';","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport sortBy from 'es-toolkit/compat/sortBy';\nimport get from 'es-toolkit/compat/get';\nimport { stack as shapeStack, stackOffsetExpand, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle, stackOrderNone } from 'victory-vendor/d3-shape';\nimport { findEntryInArray, isNan, isNullish, isNumber, isNumOrStr, mathSign } from './DataUtils';\nimport { inRangeOfSector, polarToCartesian } from './PolarUtils';\nexport function getValueByDataKey(obj, dataKey, defaultValue) {\n if (isNullish(obj) || isNullish(dataKey)) {\n return defaultValue;\n }\n if (isNumOrStr(dataKey)) {\n return get(obj, dataKey, defaultValue);\n }\n if (typeof dataKey === 'function') {\n return dataKey(obj);\n }\n return defaultValue;\n}\nexport var calculateActiveTickIndex = (coordinate, ticks, unsortedTicks, axisType, range) => {\n var _ticks$length;\n var index = -1;\n var len = (_ticks$length = ticks === null || ticks === void 0 ? void 0 : ticks.length) !== null && _ticks$length !== void 0 ? _ticks$length : 0;\n\n // if there are 1 or fewer ticks or if there is no coordinate then the active tick is at index 0\n if (len <= 1 || coordinate == null) {\n return 0;\n }\n if (axisType === 'angleAxis' && range != null && Math.abs(Math.abs(range[1] - range[0]) - 360) <= 1e-6) {\n // ticks are distributed in a circle\n for (var i = 0; i < len; i++) {\n var before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n var cur = unsortedTicks[i].coordinate;\n var after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n var sameDirectionCoord = void 0;\n if (mathSign(cur - before) !== mathSign(after - cur)) {\n var diffInterval = [];\n if (mathSign(after - cur) === mathSign(range[1] - range[0])) {\n sameDirectionCoord = after;\n var curInRange = cur + range[1] - range[0];\n diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);\n diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);\n } else {\n sameDirectionCoord = before;\n var afterInRange = after + range[1] - range[0];\n diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);\n diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);\n }\n var sameInterval = [Math.min(cur, (sameDirectionCoord + cur) / 2), Math.max(cur, (sameDirectionCoord + cur) / 2)];\n if (coordinate > sameInterval[0] && coordinate <= sameInterval[1] || coordinate >= diffInterval[0] && coordinate <= diffInterval[1]) {\n ({\n index\n } = unsortedTicks[i]);\n break;\n }\n } else {\n var minValue = Math.min(before, after);\n var maxValue = Math.max(before, after);\n if (coordinate > (minValue + cur) / 2 && coordinate <= (maxValue + cur) / 2) {\n ({\n index\n } = unsortedTicks[i]);\n break;\n }\n }\n }\n } else if (ticks) {\n // ticks are distributed in a single direction\n for (var _i = 0; _i < len; _i++) {\n if (_i === 0 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i > 0 && _i < len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i === len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2) {\n ({\n index\n } = ticks[_i]);\n break;\n }\n }\n }\n return index;\n};\nexport var appendOffsetOfLegend = (offset, legendSettings, legendSize) => {\n if (legendSettings && legendSize) {\n var {\n width: boxWidth,\n height: boxHeight\n } = legendSize;\n var {\n align,\n verticalAlign,\n layout\n } = legendSettings;\n if ((layout === 'vertical' || layout === 'horizontal' && verticalAlign === 'middle') && align !== 'center' && isNumber(offset[align])) {\n return _objectSpread(_objectSpread({}, offset), {}, {\n [align]: offset[align] + (boxWidth || 0)\n });\n }\n if ((layout === 'horizontal' || layout === 'vertical' && align === 'center') && verticalAlign !== 'middle' && isNumber(offset[verticalAlign])) {\n return _objectSpread(_objectSpread({}, offset), {}, {\n [verticalAlign]: offset[verticalAlign] + (boxHeight || 0)\n });\n }\n }\n return offset;\n};\nexport var isCategoricalAxis = (layout, axisType) => layout === 'horizontal' && axisType === 'xAxis' || layout === 'vertical' && axisType === 'yAxis' || layout === 'centric' && axisType === 'angleAxis' || layout === 'radial' && axisType === 'radiusAxis';\n\n/**\n * Calculate the Coordinates of grid\n * @param {Array} ticks The ticks in axis\n * @param {Number} minValue The minimum value of axis\n * @param {Number} maxValue The maximum value of axis\n * @param {boolean} syncWithTicks Synchronize grid lines with ticks or not\n * @return {Array} Coordinates\n */\nexport var getCoordinatesOfGrid = (ticks, minValue, maxValue, syncWithTicks) => {\n if (syncWithTicks) {\n return ticks.map(entry => entry.coordinate);\n }\n var hasMin, hasMax;\n var values = ticks.map(entry => {\n if (entry.coordinate === minValue) {\n hasMin = true;\n }\n if (entry.coordinate === maxValue) {\n hasMax = true;\n }\n return entry.coordinate;\n });\n if (!hasMin) {\n values.push(minValue);\n }\n if (!hasMax) {\n values.push(maxValue);\n }\n return values;\n};\n\n/**\n * A subset of d3-scale that Recharts is using\n */\n\n/**\n * Get the ticks of an axis\n * @param {Object} axis The configuration of an axis\n * @param {Boolean} isGrid Whether or not are the ticks in grid\n * @param {Boolean} isAll Return the ticks of all the points or not\n * @return {Array} Ticks\n */\nexport var getTicksOfAxis = (axis, isGrid, isAll) => {\n if (!axis) {\n return null;\n }\n var {\n duplicateDomain,\n type,\n range,\n scale,\n realScaleType,\n isCategorical,\n categoricalDomain,\n tickCount,\n ticks,\n niceTicks,\n axisType\n } = axis;\n if (!scale) {\n return null;\n }\n var offsetForBand = realScaleType === 'scaleBand' && scale.bandwidth ? scale.bandwidth() / 2 : 2;\n var offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / offsetForBand : 0;\n offset = axisType === 'angleAxis' && range && range.length >= 2 ? mathSign(range[0] - range[1]) * 2 * offset : offset;\n\n // The ticks set by user should only affect the ticks adjacent to axis line\n if (isGrid && (ticks || niceTicks)) {\n var result = (ticks || niceTicks || []).map((entry, index) => {\n var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n return {\n // If the scaleContent is not a number, the coordinate will be NaN.\n // That could be the case for example with a PointScale and a string as domain.\n coordinate: scale(scaleContent) + offset,\n value: entry,\n offset,\n index\n };\n });\n return result.filter(row => !isNan(row.coordinate));\n }\n\n // When axis is a categorical axis, but the type of axis is number or the scale of axis is not \"auto\"\n if (isCategorical && categoricalDomain) {\n return categoricalDomain.map((entry, index) => ({\n coordinate: scale(entry) + offset,\n value: entry,\n index,\n offset\n }));\n }\n if (scale.ticks && !isAll && tickCount != null) {\n return scale.ticks(tickCount).map((entry, index) => ({\n coordinate: scale(entry) + offset,\n value: entry,\n offset,\n index\n }));\n }\n\n // When axis has duplicated text, serial numbers are used to generate scale\n return scale.domain().map((entry, index) => ({\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index,\n offset\n }));\n};\nvar EPS = 1e-4;\nexport var checkDomainOfScale = scale => {\n var domain = scale.domain();\n if (!domain || domain.length <= 2) {\n return;\n }\n var len = domain.length;\n var range = scale.range();\n var minValue = Math.min(range[0], range[1]) - EPS;\n var maxValue = Math.max(range[0], range[1]) + EPS;\n var first = scale(domain[0]);\n var last = scale(domain[len - 1]);\n if (first < minValue || first > maxValue || last < minValue || last > maxValue) {\n scale.domain([domain[0], domain[len - 1]]);\n }\n};\n\n/**\n * Both value and domain are tuples of two numbers\n * - but the type stays as array of numbers until we have better support in rest of the app\n * @param value input that will be truncated\n * @param domain boundaries\n * @returns tuple of two numbers\n */\nexport var truncateByDomain = (value, domain) => {\n if (!domain || domain.length !== 2 || !isNumber(domain[0]) || !isNumber(domain[1])) {\n return value;\n }\n var minValue = Math.min(domain[0], domain[1]);\n var maxValue = Math.max(domain[0], domain[1]);\n var result = [value[0], value[1]];\n if (!isNumber(value[0]) || value[0] < minValue) {\n result[0] = minValue;\n }\n if (!isNumber(value[1]) || value[1] > maxValue) {\n result[1] = maxValue;\n }\n if (result[0] > maxValue) {\n result[0] = maxValue;\n }\n if (result[1] < minValue) {\n result[1] = minValue;\n }\n return result;\n};\n\n/**\n * Stacks all positive numbers above zero and all negative numbers below zero.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */\nexport var offsetSign = series => {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n var negative = 0;\n for (var i = 0; i < n; ++i) {\n var value = isNan(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n /* eslint-disable prefer-destructuring, no-param-reassign */\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = negative;\n series[i][j][1] = negative + value;\n negative = series[i][j][1];\n }\n /* eslint-enable prefer-destructuring, no-param-reassign */\n }\n }\n};\n\n/**\n * Replaces all negative values with zero when stacking data.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */\nexport var offsetPositive = series => {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n for (var i = 0; i < n; ++i) {\n var value = isNan(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n /* eslint-disable prefer-destructuring, no-param-reassign */\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = 0;\n series[i][j][1] = 0;\n }\n /* eslint-enable prefer-destructuring, no-param-reassign */\n }\n }\n};\n\n/**\n * Function type to compute offset for stacked data.\n *\n * d3-shape has something fishy going on with its types.\n * In @definitelytyped/d3-shape, this function (the offset accessor) is typed as Series<> => void.\n * However! When I actually open the storybook I can see that the offset accessor actually receives Array<Series<>>.\n * The same I can see in the source code itself:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n * That one unfortunately has no types but we can tell it passes three-dimensional array.\n *\n * Which leads me to believe that definitelytyped is wrong on this one.\n * There's open discussion on this topic without much attention:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n */\n\nvar STACK_OFFSET_MAP = {\n sign: offsetSign,\n // @ts-expect-error definitelytyped types are incorrect\n expand: stackOffsetExpand,\n // @ts-expect-error definitelytyped types are incorrect\n none: stackOffsetNone,\n // @ts-expect-error definitelytyped types are incorrect\n silhouette: stackOffsetSilhouette,\n // @ts-expect-error definitelytyped types are incorrect\n wiggle: stackOffsetWiggle,\n positive: offsetPositive\n};\nexport var getStackedData = (data, dataKeys, offsetType) => {\n var offsetAccessor = STACK_OFFSET_MAP[offsetType];\n var stack = shapeStack().keys(dataKeys).value((d, key) => +getValueByDataKey(d, key, 0)).order(stackOrderNone)\n // @ts-expect-error definitelytyped types are incorrect\n .offset(offsetAccessor);\n return stack(data);\n};\n\n/**\n * Stack IDs in the external props allow numbers; but internally we use it as an object key\n * and object keys are always strings. Also it would be kinda confusing if stackId=8 and stackId='8' were different stacks\n * so let's just force a string.\n */\n\nexport function getNormalizedStackId(publicStackId) {\n return publicStackId == null ? undefined : String(publicStackId);\n}\nexport function getCateCoordinateOfLine(_ref) {\n var {\n axis,\n ticks,\n bandSize,\n entry,\n index,\n dataKey\n } = _ref;\n if (axis.type === 'category') {\n // find coordinate of category axis by the value of category\n // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n if (!axis.allowDuplicatedCategory && axis.dataKey && !isNullish(entry[axis.dataKey])) {\n // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n var matchedTick = findEntryInArray(ticks, 'value', entry[axis.dataKey]);\n if (matchedTick) {\n return matchedTick.coordinate + bandSize / 2;\n }\n }\n return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n }\n var value = getValueByDataKey(entry, !isNullish(dataKey) ? dataKey : axis.dataKey);\n\n // @ts-expect-error getValueByDataKey does not validate the output type\n return !isNullish(value) ? axis.scale(value) : null;\n}\nexport var getCateCoordinateOfBar = _ref2 => {\n var {\n axis,\n ticks,\n offset,\n bandSize,\n entry,\n index\n } = _ref2;\n if (axis.type === 'category') {\n return ticks[index] ? ticks[index].coordinate + offset : null;\n }\n var value = getValueByDataKey(entry, axis.dataKey, axis.scale.domain()[index]);\n return !isNullish(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\nexport var getBaseValueOfBar = _ref3 => {\n var {\n numericAxis\n } = _ref3;\n var domain = numericAxis.scale.domain();\n if (numericAxis.type === 'number') {\n // @ts-expect-error type number means the domain has numbers in it but this relationship is not known to typescript\n var minValue = Math.min(domain[0], domain[1]);\n // @ts-expect-error type number means the domain has numbers in it but this relationship is not known to typescript\n var maxValue = Math.max(domain[0], domain[1]);\n if (minValue <= 0 && maxValue >= 0) {\n return 0;\n }\n if (maxValue < 0) {\n return maxValue;\n }\n return minValue;\n }\n return domain[0];\n};\nvar getDomainOfSingle = data => {\n var flat = data.flat(2).filter(isNumber);\n return [Math.min(...flat), Math.max(...flat)];\n};\nvar makeDomainFinite = domain => {\n return [domain[0] === Infinity ? 0 : domain[0], domain[1] === -Infinity ? 0 : domain[1]];\n};\nexport var getDomainOfStackGroups = (stackGroups, startIndex, endIndex) => {\n if (stackGroups == null) {\n return undefined;\n }\n return makeDomainFinite(Object.keys(stackGroups).reduce((result, stackId) => {\n var group = stackGroups[stackId];\n var {\n stackedData\n } = group;\n var domain = stackedData.reduce((res, entry) => {\n var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n }, [Infinity, -Infinity]));\n};\nexport var MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\n\n/**\n * Calculate the size between two category\n * @param {Object} axis The options of axis\n * @param {Array} ticks The ticks of axis\n * @param {Boolean} isBar if items in axis are bars\n * @return {Number} Size\n */\nexport var getBandSizeOfAxis = (axis, ticks, isBar) => {\n if (axis && axis.scale && axis.scale.bandwidth) {\n var bandWidth = axis.scale.bandwidth();\n if (!isBar || bandWidth > 0) {\n return bandWidth;\n }\n }\n if (axis && ticks && ticks.length >= 2) {\n var orderedTicks = sortBy(ticks, o => o.coordinate);\n var bandSize = Infinity;\n for (var i = 1, len = orderedTicks.length; i < len; i++) {\n var cur = orderedTicks[i];\n var prev = orderedTicks[i - 1];\n bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n }\n return bandSize === Infinity ? 0 : bandSize;\n }\n return isBar ? undefined : 0;\n};\nexport function getTooltipEntry(_ref4) {\n var {\n tooltipEntrySettings,\n dataKey,\n payload,\n value,\n name\n } = _ref4;\n return _objectSpread(_objectSpread({}, tooltipEntrySettings), {}, {\n dataKey,\n payload,\n value,\n name\n });\n}\nexport function getTooltipNameProp(nameFromItem, dataKey) {\n if (nameFromItem) {\n return String(nameFromItem);\n }\n if (typeof dataKey === 'string') {\n return dataKey;\n }\n return undefined;\n}\nexport function inRange(x, y, layout, polarViewBox, offset) {\n if (layout === 'horizontal' || layout === 'vertical') {\n var isInRange = x >= offset.left && x <= offset.left + offset.width && y >= offset.top && y <= offset.top + offset.height;\n return isInRange ? {\n x,\n y\n } : null;\n }\n if (polarViewBox) {\n return inRangeOfSector({\n x,\n y\n }, polarViewBox);\n }\n return null;\n}\nexport var getActiveCoordinate = (layout, tooltipTicks, activeIndex, rangeObj) => {\n var entry = tooltipTicks.find(tick => tick && tick.index === activeIndex);\n if (entry) {\n if (layout === 'horizontal') {\n return {\n x: entry.coordinate,\n y: rangeObj.y\n };\n }\n if (layout === 'vertical') {\n return {\n x: rangeObj.x,\n y: entry.coordinate\n };\n }\n if (layout === 'centric') {\n var _angle = entry.coordinate;\n var {\n radius: _radius\n } = rangeObj;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, _radius, _angle)), {}, {\n angle: _angle,\n radius: _radius\n });\n }\n var radius = entry.coordinate;\n var {\n angle\n } = rangeObj;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle)), {}, {\n angle,\n radius\n });\n }\n return {\n x: 0,\n y: 0\n };\n};\nexport var calculateTooltipPos = (rangeObj, layout) => {\n if (layout === 'horizontal') {\n return rangeObj.x;\n }\n if (layout === 'vertical') {\n return rangeObj.y;\n }\n if (layout === 'centric') {\n return rangeObj.angle;\n }\n return rangeObj.radius;\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","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","export var selectChartWidth = state => state.layout.width;\nexport var selectChartHeight = state => state.layout.height;\nexport var selectContainerScale = state => state.layout.scale;\nexport var selectMargin = state => state.layout.margin;","import { createSelector } from 'reselect';\nexport var selectAllXAxes = createSelector(state => state.cartesianAxis.xAxis, xAxisMap => {\n return Object.values(xAxisMap);\n});\nexport var selectAllYAxes = createSelector(state => state.cartesianAxis.yAxis, yAxisMap => {\n return Object.values(yAxisMap);\n});","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { createSelector } from 'reselect';\nimport get from 'es-toolkit/compat/get';\nimport { selectLegendSettings, selectLegendSize } from './legendSelectors';\nimport { appendOffsetOfLegend } from '../../util/ChartUtils';\nimport { selectChartHeight, selectChartWidth, selectMargin } from './containerSelectors';\nimport { selectAllXAxes, selectAllYAxes } from './selectAllAxes';\nimport { DEFAULT_Y_AXIS_WIDTH } from '../../util/Constants';\nexport var selectBrushHeight = state => state.brush.height;\n\n/**\n * For internal use only.\n *\n * @param root state\n * @return ChartOffsetInternal\n */\nexport var selectChartOffsetInternal = createSelector([selectChartWidth, selectChartHeight, selectMargin, selectBrushHeight, selectAllXAxes, selectAllYAxes, selectLegendSettings, selectLegendSize], (chartWidth, chartHeight, margin, brushHeight, xAxes, yAxes, legendSettings, legendSize) => {\n var offsetH = yAxes.reduce((result, entry) => {\n var {\n orientation\n } = entry;\n if (!entry.mirror && !entry.hide) {\n var width = typeof entry.width === 'number' ? entry.width : DEFAULT_Y_AXIS_WIDTH;\n return _objectSpread(_objectSpread({}, result), {}, {\n [orientation]: result[orientation] + width\n });\n }\n return result;\n }, {\n left: margin.left || 0,\n right: margin.right || 0\n });\n var offsetV = xAxes.reduce((result, entry) => {\n var {\n orientation\n } = entry;\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, {\n [orientation]: get(result, \"\".concat(orientation)) + entry.height\n });\n }\n return result;\n }, {\n top: margin.top || 0,\n bottom: margin.bottom || 0\n });\n var offset = _objectSpread(_objectSpread({}, offsetV), offsetH);\n var brushBottom = offset.bottom;\n offset.bottom += brushHeight;\n offset = appendOffsetOfLegend(offset, legendSettings, legendSize);\n var offsetWidth = chartWidth - offset.left - offset.right;\n var offsetHeight = chartHeight - offset.top - offset.bottom;\n return _objectSpread(_objectSpread({\n brushBottom\n }, offset), {}, {\n // never return negative values for height and width\n width: Math.max(offsetWidth, 0),\n height: Math.max(offsetHeight, 0)\n });\n});\nexport var selectChartViewBox = createSelector(selectChartOffsetInternal, offset => ({\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n}));\nexport var selectAxisViewBox = createSelector(selectChartWidth, selectChartHeight, (width, height) => ({\n x: 0,\n y: 0,\n width,\n height\n}));","export var COLOR_PANEL = ['#1890FF', '#66B5FF', '#41D9C7', '#2FC25B', '#6EDB8F', '#9AE65C', '#FACC14', '#E6965C', '#57AD71', '#223273', '#738AE6', '#7564CC', '#8543E0', '#A877ED', '#5C8EE6', '#13C2C2', '#70E0E0', '#5CA3E6', '#3436C7', '#8082FF', '#DD81E6', '#F04864', '#FA7D92', '#D598D9'];\n\n/**\n * We use this attribute to identify which element is the one that the user is touching.\n * The index is the position of the element in the data array.\n * This can be either a number (for array-based charts) or a string (for the charts that have a matrix-shaped data).\n */\nexport var DATA_ITEM_INDEX_ATTRIBUTE_NAME = 'data-recharts-item-index';\n/**\n * We use this attribute to identify which element is the one that the user is touching.\n * DataKey works here as a kind of identifier for the element. It's not a perfect identifier for ~two~ three reasons:\n *\n * 1. There can be two different elements with the same dataKey; we won't know which is it\n * 2. DataKey can be a function, and that serialized will be a `[Function: anonymous]` string\n * which means we will be able to identify that it was a function but can't tell which one.\n * This will lead to some weird bugs. A proper fix would be to either:\n * a) use a unique identifier for each element (passed from props, or generated)\n * b) figure out how to compare the dataKey or graphical item by object reference\n *\n * a) is a fuss because we don't have the unique identifier in props,\n * and b) is possible most of the time except for touchMove events which work differently from mouseEnter/mouseLeave:\n * - while mouseEnter is fired for the element that the mouse is over,\n * touchMove is fired for the element where user has started touching. As the finger moves,\n * we can identify the element that the user is touching by using the elementFromPoint method,\n * but it keeps calling the handler on the element where touchStart was fired.\n *\n * Okay and now I discovered a third reason: the dataKey can be undefined and that's still fine\n * because if dataKey is undefined then graphical elements assume the dataKey of the axes.\n * Which makes it a convenient way of using recharts to render a chart but horrible identifier.\n */\nexport var DATA_ITEM_DATAKEY_ATTRIBUTE_NAME = 'data-recharts-item-data-key';\nexport var DEFAULT_Y_AXIS_WIDTH = 60;","import * as React from 'react';\nimport { createContext, useContext } from 'react';\nvar PanoramaContext = /*#__PURE__*/createContext(null);\nexport var useIsPanorama = () => useContext(PanoramaContext) != null;\nexport var PanoramaContextProvider = _ref => {\n var {\n children\n } = _ref;\n return /*#__PURE__*/React.createElement(PanoramaContext.Provider, {\n value: true\n }, children);\n};","import { createSelector } from 'reselect';\nimport { selectChartOffsetInternal } from './selectChartOffsetInternal';\nimport { selectMargin } from './containerSelectors';\nimport { isNumber } from '../../util/DataUtils';\nexport var selectBrushSettings = state => state.brush;\nexport var selectBrushDimensions = createSelector([selectBrushSettings, selectChartOffsetInternal, selectMargin], (brushSettings, offset, margin) => ({\n height: brushSettings.height,\n x: isNumber(brushSettings.x) ? brushSettings.x : offset.left,\n y: isNumber(brushSettings.y) ? brushSettings.y : offset.top + offset.height + offset.brushBottom - ((margin === null || margin === void 0 ? void 0 : margin.bottom) || 0),\n width: isNumber(brushSettings.width) ? brushSettings.width : offset.width\n}));","import { useEffect } from 'react';\nimport { useAppDispatch, useAppSelector } from '../state/hooks';\nimport { setChartSize, setMargin } from '../state/layoutSlice';\nimport { selectChartOffsetInternal, selectChartViewBox } from '../state/selectors/selectChartOffsetInternal';\nimport { selectChartHeight, selectChartWidth } from '../state/selectors/containerSelectors';\nimport { useIsPanorama } from './PanoramaContext';\nimport { selectBrushDimensions, selectBrushSettings } from '../state/selectors/brushSelectors';\nexport var useViewBox = () => {\n var _useAppSelector;\n var panorama = useIsPanorama();\n var rootViewBox = useAppSelector(selectChartViewBox);\n var brushDimensions = useAppSelector(selectBrushDimensions);\n var brushPadding = (_useAppSelector = useAppSelector(selectBrushSettings)) === null || _useAppSelector === void 0 ? void 0 : _useAppSelector.padding;\n if (!panorama || !brushDimensions || !brushPadding) {\n return rootViewBox;\n }\n return {\n width: brushDimensions.width - brushPadding.left - brushPadding.right,\n height: brushDimensions.height - brushPadding.top - brushPadding.bottom,\n x: brushPadding.left,\n y: brushPadding.top\n };\n};\nvar manyComponentsThrowErrorsIfOffsetIsUndefined = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0,\n brushBottom: 0\n};\n/**\n * For internal use only. If you want this information, `import { useOffset } from 'recharts'` instead.\n *\n * Returns the offset of the chart in pixels.\n *\n * @returns {ChartOffsetInternal} The offset of the chart in pixels, or a default value if not in a chart context.\n */\nexport var useOffsetInternal = () => {\n var _useAppSelector2;\n return (_useAppSelector2 = useAppSelector(selectChartOffsetInternal)) !== null && _useAppSelector2 !== void 0 ? _useAppSelector2 : manyComponentsThrowErrorsIfOffsetIsUndefined;\n};\n\n/**\n * Returns the width of the chart in pixels.\n *\n * If you are using chart with hardcoded `width` prop, then the width returned will be the same\n * as the `width` prop on the main chart element.\n *\n * If you are using a chart with a `ResponsiveContainer`, the width will be the size of the chart\n * as the ResponsiveContainer has decided it would be.\n *\n * If the chart has any axes or legend, the `width` will be the size of the chart\n * including the axes and legend. Meaning: adding axes and legend will not change the width.\n *\n * The dimensions do not scale, meaning as user zoom in and out, the width number will not change\n * as the chart gets visually larger or smaller.\n *\n * Returns `undefined` if used outside a chart context.\n *\n * @returns {number | undefined} The width of the chart in pixels, or `undefined` if not in a chart context.\n */\nexport var useChartWidth = () => {\n return useAppSelector(selectChartWidth);\n};\n\n/**\n * Returns the height of the chart in pixels.\n *\n * If you are using chart with hardcoded `height` props, then the height returned will be the same\n * as the `height` prop on the main chart element.\n *\n * If you are using a chart with a `ResponsiveContainer`, the height will be the size of the chart\n * as the ResponsiveContainer has decided it would be.\n *\n * If the chart has any axes or legend, the `height` will be the size of the chart\n * including the axes and legend. Meaning: adding axes and legend will not change the height.\n *\n * The dimensions do not scale, meaning as user zoom in and out, the height number will not change\n * as the chart gets visually larger or smaller.\n *\n * Returns `undefined` if used outside a chart context.\n *\n * @returns {number | undefined} The height of the chart in pixels, or `undefined` if not in a chart context.\n */\nexport var useChartHeight = () => {\n return useAppSelector(selectChartHeight);\n};\nvar manyComponentsThrowErrorsIfMarginIsUndefined = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\nexport var useMargin = () => {\n var _useAppSelector3;\n return (_useAppSelector3 = useAppSelector(state => state.layout.margin)) !== null && _useAppSelector3 !== void 0 ? _useAppSelector3 : manyComponentsThrowErrorsIfMarginIsUndefined;\n};\nexport var selectChartLayout = state => state.layout.layoutType;\nexport var useChartLayout = () => useAppSelector(selectChartLayout);\nexport var ReportChartSize = props => {\n var dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setChartSize(props));\n }, [dispatch, props]);\n return null;\n};\nexport var ReportChartMargin = _ref => {\n var {\n margin\n } = _ref;\n var dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setMargin(margin));\n }, [dispatch, margin]);\n return null;\n};","import { createSlice, current } from '@reduxjs/toolkit';\nimport { castDraft } from 'immer';\n\n/**\n * The properties inside this state update independently of each other and quite often.\n * When selecting, never select the whole state because you are going to get\n * unnecessary re-renders. Select only the properties you need.\n *\n * This is why this state type is not exported - don't use it directly.\n */\n\nvar initialState = {\n settings: {\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'middle',\n itemSorter: 'value'\n },\n size: {\n width: 0,\n height: 0\n },\n payload: []\n};\nvar legendSlice = createSlice({\n name: 'legend',\n initialState,\n reducers: {\n setLegendSize(state, action) {\n state.size.width = action.payload.width;\n state.size.height = action.payload.height;\n },\n setLegendSettings(state, action) {\n state.settings.align = action.payload.align;\n state.settings.layout = action.payload.layout;\n state.settings.verticalAlign = action.payload.verticalAlign;\n state.settings.itemSorter = action.payload.itemSorter;\n },\n addLegendPayload(state, action) {\n state.payload.push(castDraft(action.payload));\n },\n removeLegendPayload(state, action) {\n var index = current(state).payload.indexOf(castDraft(action.payload));\n if (index > -1) {\n state.payload.splice(index, 1);\n }\n }\n }\n});\nexport var {\n setLegendSize,\n setLegendSettings,\n addLegendPayload,\n removeLegendPayload\n} = legendSlice.actions;\nexport var legendReducer = legendSlice.reducer;","var _excluded = [\"contextPayload\"];\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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport { PureComponent, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useLegendPortal } from '../context/legendPortalContext';\nimport { DefaultLegendContent } from './DefaultLegendContent';\nimport { isNumber } from '../util/DataUtils';\nimport { getUniqPayload } from '../util/payload/getUniqPayload';\nimport { useLegendPayload } from '../context/legendPayloadContext';\nimport { useElementOffset } from '../util/useElementOffset';\nimport { useChartHeight, useChartWidth, useMargin } from '../context/chartLayoutContext';\nimport { setLegendSettings, setLegendSize } from '../state/legendSlice';\nimport { useAppDispatch } from '../state/hooks';\nfunction defaultUniqBy(entry) {\n return entry.value;\n}\nfunction LegendContent(props) {\n var {\n contextPayload\n } = props,\n otherProps = _objectWithoutProperties(props, _excluded);\n var finalPayload = getUniqPayload(contextPayload, props.payloadUniqBy, defaultUniqBy);\n var contentProps = _objectSpread(_objectSpread({}, otherProps), {}, {\n payload: finalPayload\n });\n if (/*#__PURE__*/React.isValidElement(props.content)) {\n return /*#__PURE__*/React.cloneElement(props.content, contentProps);\n }\n if (typeof props.content === 'function') {\n return /*#__PURE__*/React.createElement(props.content, contentProps);\n }\n return /*#__PURE__*/React.createElement(DefaultLegendContent, contentProps);\n}\nfunction getDefaultPosition(style, props, margin, chartWidth, chartHeight, box) {\n var {\n layout,\n align,\n verticalAlign\n } = props;\n var hPos, vPos;\n if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n if (align === 'center' && layout === 'vertical') {\n hPos = {\n left: ((chartWidth || 0) - box.width) / 2\n };\n } else {\n hPos = align === 'right' ? {\n right: margin && margin.right || 0\n } : {\n left: margin && margin.left || 0\n };\n }\n }\n if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n if (verticalAlign === 'middle') {\n vPos = {\n top: ((chartHeight || 0) - box.height) / 2\n };\n } else {\n vPos = verticalAlign === 'bottom' ? {\n bottom: margin && margin.bottom || 0\n } : {\n top: margin && margin.top || 0\n };\n }\n }\n return _objectSpread(_objectSpread({}, hPos), vPos);\n}\nfunction LegendSettingsDispatcher(props) {\n var dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setLegendSettings(props));\n }, [dispatch, props]);\n return null;\n}\nfunction LegendSizeDispatcher(props) {\n var dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setLegendSize(props));\n return () => {\n dispatch(setLegendSize({\n width: 0,\n height: 0\n }));\n };\n }, [dispatch, props]);\n return null;\n}\nfunction LegendWrapper(props) {\n var contextPayload = useLegendPayload();\n var legendPortalFromContext = useLegendPortal();\n var margin = useMargin();\n var {\n width: widthFromProps,\n height: heightFromProps,\n wrapperStyle,\n portal: portalFromProps\n } = props;\n // The contextPayload is not used directly inside the hook, but we need the onBBoxUpdate call\n // when the payload changes, therefore it's here as a dependency.\n var [lastBoundingBox, updateBoundingBox] = useElementOffset([contextPayload]);\n var chartWidth = useChartWidth();\n var chartHeight = useChartHeight();\n var maxWidth = chartWidth - (margin.left || 0) - (margin.right || 0);\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n var widthOrHeight = Legend.getWidthOrHeight(props.layout, heightFromProps, widthFromProps, maxWidth);\n // if the user supplies their own portal, only use their defined wrapper styles\n var outerStyle = portalFromProps ? wrapperStyle : _objectSpread(_objectSpread({\n position: 'absolute',\n width: (widthOrHeight === null || widthOrHeight === void 0 ? void 0 : widthOrHeight.width) || widthFromProps || 'auto',\n height: (widthOrHeight === null || widthOrHeight === void 0 ? void 0 : widthOrHeight.height) || heightFromProps || 'auto'\n }, getDefaultPosition(wrapperStyle, props, margin, chartWidth, chartHeight, lastBoundingBox)), wrapperStyle);\n var legendPortal = portalFromProps !== null && portalFromProps !== void 0 ? portalFromProps : legendPortalFromContext;\n if (legendPortal == null) {\n return null;\n }\n var legendElement = /*#__PURE__*/React.createElement(\"div\", {\n className: \"recharts-legend-wrapper\",\n style: outerStyle,\n ref: updateBoundingBox\n }, /*#__PURE__*/React.createElement(LegendSettingsDispatcher, {\n layout: props.layout,\n align: props.align,\n verticalAlign: props.verticalAlign,\n itemSorter: props.itemSorter\n }), /*#__PURE__*/React.createElement(LegendSizeDispatcher, {\n width: lastBoundingBox.width,\n height: lastBoundingBox.height\n }), /*#__PURE__*/React.createElement(LegendContent, _extends({}, props, widthOrHeight, {\n margin: margin,\n chartWidth: chartWidth,\n chartHeight: chartHeight,\n contextPayload: contextPayload\n })));\n return /*#__PURE__*/createPortal(legendElement, legendPortal);\n}\nexport class Legend extends PureComponent {\n static getWidthOrHeight(layout, height, width, maxWidth) {\n if (layout === 'vertical' && isNumber(height)) {\n return {\n height\n };\n }\n if (layout === 'horizontal') {\n return {\n width: width || maxWidth\n };\n }\n return null;\n }\n render() {\n return /*#__PURE__*/React.createElement(LegendWrapper, this.props);\n }\n}\n_defineProperty(Legend, \"displayName\", 'Legend');\n_defineProperty(Legend, \"defaultProps\", {\n align: 'center',\n iconSize: 14,\n itemSorter: 'value',\n layout: 'horizontal',\n verticalAlign: 'bottom'\n});","import { useAppSelector } from '../state/hooks';\nimport { selectLegendPayload } from '../state/selectors/legendSelectors';\n\n/**\n * Use this hook in Legend, or anywhere else where you want to read the current Legend items.\n * @return all Legend items ready to be rendered\n */\nexport function useLegendPayload() {\n return useAppSelector(selectLegendPayload);\n}","function _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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Default Tooltip Content\n */\n\nimport * as React from 'react';\nimport sortBy from 'es-toolkit/compat/sortBy';\nimport { clsx } from 'clsx';\nimport { isNullish, isNumOrStr } from '../util/DataUtils';\nfunction defaultFormatter(value) {\n return Array.isArray(value) && isNumOrStr(value[0]) && isNumOrStr(value[1]) ? value.join(' ~ ') : value;\n}\nexport var DefaultTooltipContent = props => {\n var {\n separator = ' : ',\n contentStyle = {},\n itemStyle = {},\n labelStyle = {},\n payload,\n formatter,\n itemSorter,\n wrapperClassName,\n labelClassName,\n label,\n labelFormatter,\n accessibilityLayer = false\n } = props;\n var renderContent = () => {\n if (payload && payload.length) {\n var listStyle = {\n padding: 0,\n margin: 0\n };\n var items = (itemSorter ? sortBy(payload, itemSorter) : payload).map((entry, i) => {\n if (entry.type === 'none') {\n return null;\n }\n var finalFormatter = entry.formatter || formatter || defaultFormatter;\n var {\n value,\n name\n } = entry;\n var finalValue = value;\n var finalName = name;\n if (finalFormatter) {\n var formatted = finalFormatter(value, name, entry, i, payload);\n if (Array.isArray(formatted)) {\n [finalValue, finalName] = formatted;\n } else if (formatted != null) {\n finalValue = formatted;\n } else {\n return null;\n }\n }\n var finalItemStyle = _objectSpread({\n display: 'block',\n paddingTop: 4,\n paddingBottom: 4,\n color: entry.color || '#000'\n }, itemStyle);\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n className: \"recharts-tooltip-item\",\n key: \"tooltip-item-\".concat(i),\n style: finalItemStyle\n }, isNumOrStr(finalName) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-name\"\n }, finalName) : null, isNumOrStr(finalName) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-separator\"\n }, separator) : null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-value\"\n }, finalValue), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-unit\"\n }, entry.unit || ''))\n );\n });\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-tooltip-item-list\",\n style: listStyle\n }, items);\n }\n return null;\n };\n var finalStyle = _objectSpread({\n margin: 0,\n padding: 10,\n backgroundColor: '#fff',\n border: '1px solid #ccc',\n whiteSpace: 'nowrap'\n }, contentStyle);\n var finalLabelStyle = _objectSpread({\n margin: 0\n }, labelStyle);\n var hasLabel = !isNullish(label);\n var finalLabel = hasLabel ? label : '';\n var wrapperCN = clsx('recharts-default-tooltip', wrapperClassName);\n var labelCN = clsx('recharts-tooltip-label', labelClassName);\n if (hasLabel && labelFormatter && payload !== undefined && payload !== null) {\n finalLabel = labelFormatter(label, payload);\n }\n var accessibilityAttributes = accessibilityLayer ? {\n role: 'status',\n 'aria-live': 'assertive'\n } : {};\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: wrapperCN,\n style: finalStyle\n }, accessibilityAttributes), /*#__PURE__*/React.createElement(\"p\", {\n className: labelCN,\n style: finalLabelStyle\n }, /*#__PURE__*/React.isValidElement(finalLabel) ? finalLabel : \"\".concat(finalLabel)), renderContent());\n};","import { clsx } from 'clsx';\nimport { isNumber } from '../DataUtils';\nvar CSS_CLASS_PREFIX = 'recharts-tooltip-wrapper';\nvar TOOLTIP_HIDDEN = {\n visibility: 'hidden'\n};\nexport function getTooltipCSSClassName(_ref) {\n var {\n coordinate,\n translateX,\n translateY\n } = _ref;\n return clsx(CSS_CLASS_PREFIX, {\n [\"\".concat(CSS_CLASS_PREFIX, \"-right\")]: isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX >= coordinate.x,\n [\"\".concat(CSS_CLASS_PREFIX, \"-left\")]: isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX < coordinate.x,\n [\"\".concat(CSS_CLASS_PREFIX, \"-bottom\")]: isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY >= coordinate.y,\n [\"\".concat(CSS_CLASS_PREFIX, \"-top\")]: isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY < coordinate.y\n });\n}\nexport function getTooltipTranslateXY(_ref2) {\n var {\n allowEscapeViewBox,\n coordinate,\n key,\n offsetTopLeft,\n position,\n reverseDirection,\n tooltipDimension,\n viewBox,\n viewBoxDimension\n } = _ref2;\n if (position && isNumber(position[key])) {\n return position[key];\n }\n var negative = coordinate[key] - tooltipDimension - (offsetTopLeft > 0 ? offsetTopLeft : 0);\n var positive = coordinate[key] + offsetTopLeft;\n if (allowEscapeViewBox[key]) {\n return reverseDirection[key] ? negative : positive;\n }\n var viewBoxKey = viewBox[key];\n if (viewBoxKey == null) {\n return 0;\n }\n if (reverseDirection[key]) {\n var _tooltipBoundary = negative;\n var _viewBoxBoundary = viewBoxKey;\n if (_tooltipBoundary < _viewBoxBoundary) {\n return Math.max(positive, viewBoxKey);\n }\n return Math.max(negative, viewBoxKey);\n }\n if (viewBoxDimension == null) {\n return 0;\n }\n var tooltipBoundary = positive + tooltipDimension;\n var viewBoxBoundary = viewBoxKey + viewBoxDimension;\n if (tooltipBoundary > viewBoxBoundary) {\n return Math.max(negative, viewBoxKey);\n }\n return Math.max(positive, viewBoxKey);\n}\nexport function getTransformStyle(_ref3) {\n var {\n translateX,\n translateY,\n useTranslate3d\n } = _ref3;\n return {\n transform: useTranslate3d ? \"translate3d(\".concat(translateX, \"px, \").concat(translateY, \"px, 0)\") : \"translate(\".concat(translateX, \"px, \").concat(translateY, \"px)\")\n };\n}\nexport function getTooltipTranslate(_ref4) {\n var {\n allowEscapeViewBox,\n coordinate,\n offsetTopLeft,\n position,\n reverseDirection,\n tooltipBox,\n useTranslate3d,\n viewBox\n } = _ref4;\n var cssProperties, translateX, translateY;\n if (tooltipBox.height > 0 && tooltipBox.width > 0 && coordinate) {\n translateX = getTooltipTranslateXY({\n allowEscapeViewBox,\n coordinate,\n key: 'x',\n offsetTopLeft,\n position,\n reverseDirection,\n tooltipDimension: tooltipBox.width,\n viewBox,\n viewBoxDimension: viewBox.width\n });\n translateY = getTooltipTranslateXY({\n allowEscapeViewBox,\n coordinate,\n key: 'y',\n offsetTopLeft,\n position,\n reverseDirection,\n tooltipDimension: tooltipBox.height,\n viewBox,\n viewBoxDimension: viewBox.height\n });\n cssProperties = getTransformStyle({\n translateX,\n translateY,\n useTranslate3d\n });\n } else {\n cssProperties = TOOLTIP_HIDDEN;\n }\n return {\n cssProperties,\n cssClasses: getTooltipCSSClassName({\n translateX,\n translateY,\n coordinate\n })\n };\n}","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport * as React from 'react';\nimport { PureComponent } from 'react';\nimport { getTooltipTranslate } from '../util/tooltip/translate';\nexport class TooltipBoundingBox extends PureComponent {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"state\", {\n dismissed: false,\n dismissedAtCoordinate: {\n x: 0,\n y: 0\n }\n });\n _defineProperty(this, \"handleKeyDown\", event => {\n if (event.key === 'Escape') {\n var _this$props$coordinat, _this$props$coordinat2, _this$props$coordinat3, _this$props$coordinat4;\n this.setState({\n dismissed: true,\n dismissedAtCoordinate: {\n x: (_this$props$coordinat = (_this$props$coordinat2 = this.props.coordinate) === null || _this$props$coordinat2 === void 0 ? void 0 : _this$props$coordinat2.x) !== null && _this$props$coordinat !== void 0 ? _this$props$coordinat : 0,\n y: (_this$props$coordinat3 = (_this$props$coordinat4 = this.props.coordinate) === null || _this$props$coordinat4 === void 0 ? void 0 : _this$props$coordinat4.y) !== null && _this$props$coordinat3 !== void 0 ? _this$props$coordinat3 : 0\n }\n });\n }\n });\n }\n componentDidMount() {\n document.addEventListener('keydown', this.handleKeyDown);\n }\n componentWillUnmount() {\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n componentDidUpdate() {\n var _this$props$coordinat5, _this$props$coordinat6;\n if (!this.state.dismissed) {\n return;\n }\n if (((_this$props$coordinat5 = this.props.coordinate) === null || _this$props$coordinat5 === void 0 ? void 0 : _this$props$coordinat5.x) !== this.state.dismissedAtCoordinate.x || ((_this$props$coordinat6 = this.props.coordinate) === null || _this$props$coordinat6 === void 0 ? void 0 : _this$props$coordinat6.y) !== this.state.dismissedAtCoordinate.y) {\n this.state.dismissed = false;\n }\n }\n render() {\n var {\n active,\n allowEscapeViewBox,\n animationDuration,\n animationEasing,\n children,\n coordinate,\n hasPayload,\n isAnimationActive,\n offset,\n position,\n reverseDirection,\n useTranslate3d,\n viewBox,\n wrapperStyle,\n lastBoundingBox,\n innerRef,\n hasPortalFromProps\n } = this.props;\n var {\n cssClasses,\n cssProperties\n } = getTooltipTranslate({\n allowEscapeViewBox,\n coordinate,\n offsetTopLeft: offset,\n position,\n reverseDirection,\n tooltipBox: {\n height: lastBoundingBox.height,\n width: lastBoundingBox.width\n },\n useTranslate3d,\n viewBox\n });\n\n // do not use absolute styles if the user has passed a custom portal prop\n var positionStyles = hasPortalFromProps ? {} : _objectSpread(_objectSpread({\n transition: isAnimationActive && active ? \"transform \".concat(animationDuration, \"ms \").concat(animationEasing) : undefined\n }, cssProperties), {}, {\n pointerEvents: 'none',\n visibility: !this.state.dismissed && active && hasPayload ? 'visible' : 'hidden',\n position: 'absolute',\n top: 0,\n left: 0\n });\n var outerStyle = _objectSpread(_objectSpread({}, positionStyles), {}, {\n visibility: !this.state.dismissed && active && hasPayload ? 'visible' : 'hidden'\n }, wrapperStyle);\n return (\n /*#__PURE__*/\n // This element allow listening to the `Escape` key. See https://github.com/recharts/recharts/pull/2925\n React.createElement(\"div\", {\n // @ts-expect-error typescript library does not recognize xmlns attribute, but it's required for an HTML chunk inside SVG.\n xmlns: \"http://www.w3.org/1999/xhtml\",\n tabIndex: -1,\n className: cssClasses,\n style: outerStyle,\n ref: innerRef\n }, children)\n );\n }\n}","var parseIsSsrByDefault = () => !(typeof window !== 'undefined' && window.document && Boolean(window.document.createElement) && window.setTimeout);\nexport var Global = {\n isSsr: parseIsSsrByDefault()\n};","export function isWellBehavedNumber(n) {\n return Number.isFinite(n);\n}\nexport function isPositiveNumber(n) {\n return typeof n === 'number' && n > 0 && Number.isFinite(n);\n}","function _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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Curve\n */\nimport * as React from 'react';\nimport { line as shapeLine, area as shapeArea, curveBasisClosed, curveBasisOpen, curveBasis, curveBumpX, curveBumpY, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from 'victory-vendor/d3-shape';\nimport { clsx } from 'clsx';\nimport { adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { isNumber, upperFirst } from '../util/DataUtils';\nimport { isWellBehavedNumber } from '../util/isWellBehavedNumber';\nvar CURVE_FACTORIES = {\n curveBasisClosed,\n curveBasisOpen,\n curveBasis,\n curveBumpX,\n curveBumpY,\n curveLinearClosed,\n curveLinear,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore\n};\n\n/**\n * @deprecated use {@link Coordinate} instead\n * Duplicated with `Coordinate` in `util/types.ts`\n */\n\n/**\n * @deprecated use {@link NullableCoordinate} instead\n * Duplicated with `NullableCoordinate` in `util/types.ts`\n */\n\nvar defined = p => isWellBehavedNumber(p.x) && isWellBehavedNumber(p.y);\nvar getX = p => p.x;\nvar getY = p => p.y;\nvar getCurveFactory = (type, layout) => {\n if (typeof type === 'function') {\n return type;\n }\n var name = \"curve\".concat(upperFirst(type));\n if ((name === 'curveMonotone' || name === 'curveBump') && layout) {\n return CURVE_FACTORIES[\"\".concat(name).concat(layout === 'vertical' ? 'Y' : 'X')];\n }\n return CURVE_FACTORIES[name] || curveLinear;\n};\n/**\n * Calculate the path of curve. Returns null if points is an empty array.\n * @return path or null\n */\nexport var getPath = _ref => {\n var {\n type = 'linear',\n points = [],\n baseLine,\n layout,\n connectNulls = false\n } = _ref;\n var curveFactory = getCurveFactory(type, layout);\n var formatPoints = connectNulls ? points.filter(defined) : points;\n var lineFunction;\n if (Array.isArray(baseLine)) {\n var formatBaseLine = connectNulls ? baseLine.filter(base => defined(base)) : baseLine;\n var areaPoints = formatPoints.map((entry, index) => _objectSpread(_objectSpread({}, entry), {}, {\n base: formatBaseLine[index]\n }));\n if (layout === 'vertical') {\n lineFunction = shapeArea().y(getY).x1(getX).x0(d => d.base.x);\n } else {\n lineFunction = shapeArea().x(getX).y1(getY).y0(d => d.base.y);\n }\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(areaPoints);\n }\n if (layout === 'vertical' && isNumber(baseLine)) {\n lineFunction = shapeArea().y(getY).x1(getX).x0(baseLine);\n } else if (isNumber(baseLine)) {\n lineFunction = shapeArea().x(getX).y1(getY).y0(baseLine);\n } else {\n lineFunction = shapeLine().x(getX).y(getY);\n }\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(formatPoints);\n};\nexport var Curve = props => {\n var {\n className,\n points,\n path,\n pathRef\n } = props;\n if ((!points || !points.length) && !path) {\n return null;\n }\n var realPath = points && points.length ? getPath(props) : path;\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, false), adaptEventHandlers(props), {\n className: clsx('recharts-curve', className),\n d: realPath === null ? undefined : realPath,\n ref: pathRef\n }));\n};","var _excluded = [\"x\", \"y\", \"top\", \"left\", \"width\", \"height\", \"className\"];\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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/**\n * @fileOverview Cross\n */\nimport * as React from 'react';\nimport { clsx } from 'clsx';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar getPath = (x, y, width, height, top, left) => {\n return \"M\".concat(x, \",\").concat(top, \"v\").concat(height, \"M\").concat(left, \",\").concat(y, \"h\").concat(width);\n};\nexport var Cross = _ref => {\n var {\n x = 0,\n y = 0,\n top = 0,\n left = 0,\n width = 0,\n height = 0,\n className\n } = _ref,\n rest = _objectWithoutProperties(_ref, _excluded);\n var props = _objectSpread({\n x,\n y,\n top,\n left,\n width,\n height\n }, rest);\n if (!isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || !isNumber(top) || !isNumber(left)) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: clsx('recharts-cross', className),\n d: getPath(x, y, width, height, top, left)\n }));\n};","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * This function mimics the behavior of the `defaultProps` static property in React.\n * Functional components do not have a defaultProps property, so this function is useful to resolve default props.\n *\n * The common recommendation is to use ES6 destructuring with default values in the function signature,\n * but you need to be careful there and make sure you destructure all the individual properties\n * and not the whole object. See the test file for example.\n *\n * And because destructuring all properties one by one is a faff, and it's easy to miss one property,\n * this function exists.\n *\n * @param realProps - the props object passed to the component by the user\n * @param defaultProps - the default props object defined in the component by Recharts\n * @returns - the props object with all the default props resolved. All `undefined` values are replaced with the default value.\n */\nexport function resolveDefaultProps(realProps, defaultProps) {\n /*\n * To avoid mutating the original `realProps` object passed to the function, create a shallow copy of it.\n * `resolvedProps` will be modified directly with the defaults.\n */\n var resolvedProps = _objectSpread({}, realProps);\n /*\n * Since the function guarantees `D extends Partial<T>`, this assignment is safe.\n * It allows TypeScript to work with the well-defined `Partial<T>` type inside the loop,\n * making subsequent type inference (especially for `dp[key]`) much more straightforward for the compiler.\n * This is a key step to improve type safety *without* value assertions later.\n */\n var dp = defaultProps;\n /*\n * `Object.keys` doesn't preserve strong key types - it always returns Array<string>.\n * However, due to the `D extends Partial<T>` constraint,\n * we know these keys *must* also be valid keys of `T`.\n * This assertion informs TypeScript of this relationship, avoiding type errors when using `key` to index `acc` (type T).\n *\n * Type assertions are not sound but in this case it's necessary\n * as `Object.keys` does not do what we want it to do.\n */\n var keys = Object.keys(defaultProps);\n var withDefaults = keys.reduce((acc, key) => {\n if (acc[key] === undefined && dp[key] !== undefined) {\n acc[key] = dp[key];\n }\n return acc;\n }, resolvedProps);\n /*\n * And again type assertions are not safe but here we have done the runtime work\n * so let's bypass the lack of static type safety and tell the compiler what happened.\n */\n return withDefaults;\n}\n\n/**\n * Helper type to extract the keys of T that are required.\n * It iterates through each key K in T. If Pick<T, K> cannot be assigned an empty object {},\n * it means K is required, so we keep K; otherwise, we discard it (never).\n * [keyof T] at the end creates a union of the kept keys.\n */\n\n/**\n * Helper type to extract the keys of T that are optional.\n * It iterates through each key K in T. If Pick<T, K> can be assigned an empty object {},\n * it means K is optional (or potentially missing), so we keep K; otherwise, we discard it (never).\n * [keyof T] at the end creates a union of the kept keys.\n */\n\n/**\n * Helper type to ensure keys of D exist in T.\n * For each key K in D, if K is also a key of T, keep the type D[K].\n * If K is NOT a key of T, map it to type `never`.\n * An object cannot have a property of type `never`, effectively disallowing extra keys.\n */\n\n/**\n * This type will take a source type `Props` and a default type `Defaults` and will return a new type\n * where all properties that are optional in `Props` but required in `Defaults` are made required in the result.\n * Properties that are required in `Props` and optional in `Defaults` will remain required.\n * Properties that are optional in both `Props` and `Defaults` will remain optional.\n *\n * This is useful for creating a type that represents the resolved props of a component with default props.\n */","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction isPlainObject(value) {\n if (!value || typeof value !== 'object') {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n const hasObjectPrototype = proto === null ||\n proto === Object.prototype ||\n Object.getPrototypeOf(proto) === null;\n if (!hasObjectPrototype) {\n return false;\n }\n return Object.prototype.toString.call(value) === '[object Object]';\n}\n\nexports.isPlainObject = isPlainObject;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst isPlainObject = require('./isPlainObject.js');\nconst getSymbols = require('../compat/_internal/getSymbols.js');\nconst getTag = require('../compat/_internal/getTag.js');\nconst tags = require('../compat/_internal/tags.js');\nconst eq = require('../compat/util/eq.js');\n\nfunction isEqualWith(a, b, areValuesEqual) {\n return isEqualWithImpl(a, b, undefined, undefined, undefined, undefined, areValuesEqual);\n}\nfunction isEqualWithImpl(a, b, property, aParent, bParent, stack, areValuesEqual) {\n const result = areValuesEqual(a, b, property, aParent, bParent, stack);\n if (result !== undefined) {\n return result;\n }\n if (typeof a === typeof b) {\n switch (typeof a) {\n case 'bigint':\n case 'string':\n case 'boolean':\n case 'symbol':\n case 'undefined': {\n return a === b;\n }\n case 'number': {\n return a === b || Object.is(a, b);\n }\n case 'function': {\n return a === b;\n }\n case 'object': {\n return areObjectsEqual(a, b, stack, areValuesEqual);\n }\n }\n }\n return areObjectsEqual(a, b, stack, areValuesEqual);\n}\nfunction areObjectsEqual(a, b, stack, areValuesEqual) {\n if (Object.is(a, b)) {\n return true;\n }\n let aTag = getTag.getTag(a);\n let bTag = getTag.getTag(b);\n if (aTag === tags.argumentsTag) {\n aTag = tags.objectTag;\n }\n if (bTag === tags.argumentsTag) {\n bTag = tags.objectTag;\n }\n if (aTag !== bTag) {\n return false;\n }\n switch (aTag) {\n case tags.stringTag:\n return a.toString() === b.toString();\n case tags.numberTag: {\n const x = a.valueOf();\n const y = b.valueOf();\n return eq.eq(x, y);\n }\n case tags.booleanTag:\n case tags.dateTag:\n case tags.symbolTag:\n return Object.is(a.valueOf(), b.valueOf());\n case tags.regexpTag: {\n return a.source === b.source && a.flags === b.flags;\n }\n case tags.functionTag: {\n return a === b;\n }\n }\n stack = stack ?? new Map();\n const aStack = stack.get(a);\n const bStack = stack.get(b);\n if (aStack != null && bStack != null) {\n return aStack === b;\n }\n stack.set(a, b);\n stack.set(b, a);\n try {\n switch (aTag) {\n case tags.mapTag: {\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, value] of a.entries()) {\n if (!b.has(key) || !isEqualWithImpl(value, b.get(key), key, a, b, stack, areValuesEqual)) {\n return false;\n }\n }\n return true;\n }\n case tags.setTag: {\n if (a.size !== b.size) {\n return false;\n }\n const aValues = Array.from(a.values());\n const bValues = Array.from(b.values());\n for (let i = 0; i < aValues.length; i++) {\n const aValue = aValues[i];\n const index = bValues.findIndex(bValue => {\n return isEqualWithImpl(aValue, bValue, undefined, a, b, stack, areValuesEqual);\n });\n if (index === -1) {\n return false;\n }\n bValues.splice(index, 1);\n }\n return true;\n }\n case tags.arrayTag:\n case tags.uint8ArrayTag:\n case tags.uint8ClampedArrayTag:\n case tags.uint16ArrayTag:\n case tags.uint32ArrayTag:\n case tags.bigUint64ArrayTag:\n case tags.int8ArrayTag:\n case tags.int16ArrayTag:\n case tags.int32ArrayTag:\n case tags.bigInt64ArrayTag:\n case tags.float32ArrayTag:\n case tags.float64ArrayTag: {\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(a) !== Buffer.isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!isEqualWithImpl(a[i], b[i], i, a, b, stack, areValuesEqual)) {\n return false;\n }\n }\n return true;\n }\n case tags.arrayBufferTag: {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n return areObjectsEqual(new Uint8Array(a), new Uint8Array(b), stack, areValuesEqual);\n }\n case tags.dataViewTag: {\n if (a.byteLength !== b.byteLength || a.byteOffset !== b.byteOffset) {\n return false;\n }\n return areObjectsEqual(new Uint8Array(a), new Uint8Array(b), stack, areValuesEqual);\n }\n case tags.errorTag: {\n return a.name === b.name && a.message === b.message;\n }\n case tags.objectTag: {\n const areEqualInstances = areObjectsEqual(a.constructor, b.constructor, stack, areValuesEqual) ||\n (isPlainObject.isPlainObject(a) && isPlainObject.isPlainObject(b));\n if (!areEqualInstances) {\n return false;\n }\n const aKeys = [...Object.keys(a), ...getSymbols.getSymbols(a)];\n const bKeys = [...Object.keys(b), ...getSymbols.getSymbols(b)];\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n for (let i = 0; i < aKeys.length; i++) {\n const propKey = aKeys[i];\n const aProp = a[propKey];\n if (!Object.hasOwn(b, propKey)) {\n return false;\n }\n const bProp = b[propKey];\n if (!isEqualWithImpl(aProp, bProp, propKey, a, b, stack, areValuesEqual)) {\n return false;\n }\n }\n return true;\n }\n default: {\n return false;\n }\n }\n }\n finally {\n stack.delete(a);\n stack.delete(b);\n }\n}\n\nexports.isEqualWith = isEqualWith;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction noop() { }\n\nexports.noop = noop;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst isEqualWith = require('./isEqualWith.js');\nconst noop = require('../function/noop.js');\n\nfunction isEqual(a, b) {\n return isEqualWith.isEqualWith(a, b, noop.noop);\n}\n\nexports.isEqual = isEqual;\n","module.exports = require('../dist/predicate/isEqual.js').isEqual;\n","export var ACCURACY = 1e-4;\nvar cubicBezierFactor = (c1, c2) => [0, 3 * c1, 3 * c2 - 6 * c1, 3 * c1 - 3 * c2 + 1];\nvar evaluatePolynomial = (params, t) => params.map((param, i) => param * t ** i).reduce((pre, curr) => pre + curr);\nvar cubicBezier = (c1, c2) => t => {\n var params = cubicBezierFactor(c1, c2);\n return evaluatePolynomial(params, t);\n};\nvar derivativeCubicBezier = (c1, c2) => t => {\n var params = cubicBezierFactor(c1, c2);\n var newParams = [...params.map((param, i) => param * i).slice(1), 0];\n return evaluatePolynomial(newParams, t);\n};\n// calculate cubic-bezier using Newton's method\nexport var configBezier = function configBezier() {\n var x1, x2, y1, y2;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1) {\n switch (args[0]) {\n case 'linear':\n [x1, y1, x2, y2] = [0.0, 0.0, 1.0, 1.0];\n break;\n case 'ease':\n [x1, y1, x2, y2] = [0.25, 0.1, 0.25, 1.0];\n break;\n case 'ease-in':\n [x1, y1, x2, y2] = [0.42, 0.0, 1.0, 1.0];\n break;\n case 'ease-out':\n [x1, y1, x2, y2] = [0.42, 0.0, 0.58, 1.0];\n break;\n case 'ease-in-out':\n [x1, y1, x2, y2] = [0.0, 0.0, 0.58, 1.0];\n break;\n default:\n {\n var easing = args[0].split('(');\n if (easing[0] === 'cubic-bezier' && easing[1].split(')')[0].split(',').length === 4) {\n [x1, y1, x2, y2] = easing[1].split(')')[0].split(',').map(x => parseFloat(x));\n }\n }\n }\n } else if (args.length === 4) {\n [x1, y1, x2, y2] = args;\n }\n var curveX = cubicBezier(x1, x2);\n var curveY = cubicBezier(y1, y2);\n var derCurveX = derivativeCubicBezier(x1, x2);\n var rangeValue = value => {\n if (value > 1) {\n return 1;\n }\n if (value < 0) {\n return 0;\n }\n return value;\n };\n var bezier = _t => {\n var t = _t > 1 ? 1 : _t;\n var x = t;\n for (var i = 0; i < 8; ++i) {\n var evalT = curveX(x) - t;\n var derVal = derCurveX(x);\n if (Math.abs(evalT - t) < ACCURACY || derVal < ACCURACY) {\n return curveY(x);\n }\n x = rangeValue(x - evalT / derVal);\n }\n return curveY(x);\n };\n bezier.isStepper = false;\n return bezier;\n};\nexport var configSpring = function configSpring() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var {\n stiff = 100,\n damping = 8,\n dt = 17\n } = config;\n var stepper = (currX, destX, currV) => {\n var FSpring = -(currX - destX) * stiff;\n var FDamping = currV * damping;\n var newV = currV + (FSpring - FDamping) * dt / 1000;\n var newX = currV * dt / 1000 + currX;\n if (Math.abs(newX - destX) < ACCURACY && Math.abs(newV) < ACCURACY) {\n return [destX, 0];\n }\n return [newX, newV];\n };\n stepper.isStepper = true;\n stepper.dt = dt;\n return stepper;\n};\nexport var configEasing = easing => {\n if (typeof easing === 'string') {\n switch (easing) {\n case 'ease':\n case 'ease-in-out':\n case 'ease-out':\n case 'ease-in':\n case 'linear':\n return configBezier(easing);\n case 'spring':\n return configSpring();\n default:\n if (easing.split('(')[0] === 'cubic-bezier') {\n return configBezier(easing);\n }\n }\n }\n if (typeof easing === 'function') {\n return easing;\n }\n return null;\n};","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/*\n * @description: convert camel case to dash case\n * string => string\n */\nexport var getDashCase = name => name.replace(/([A-Z])/g, v => \"-\".concat(v.toLowerCase()));\nexport var getTransitionVal = (props, duration, easing) => props.map(prop => \"\".concat(getDashCase(prop), \" \").concat(duration, \"ms \").concat(easing)).join(',');\n\n/**\n * Finds the intersection of keys between two objects\n * @param {object} preObj previous object\n * @param {object} nextObj next object\n * @returns an array of keys that exist in both objects\n */\nexport var getIntersectionKeys = (preObj, nextObj) => [Object.keys(preObj), Object.keys(nextObj)].reduce((a, b) => a.filter(c => b.includes(c)));\n\n/**\n * Maps an object to another object\n * @param {function} fn function to map\n * @param {object} obj object to map\n * @returns mapped object\n */\nexport var mapObject = (fn, obj) => Object.keys(obj).reduce((res, key) => _objectSpread(_objectSpread({}, res), {}, {\n [key]: fn(key, obj[key])\n}), {});","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { getIntersectionKeys, mapObject } from './util';\nexport var alpha = (begin, end, k) => begin + (end - begin) * k;\nvar needContinue = _ref => {\n var {\n from,\n to\n } = _ref;\n return from !== to;\n};\n/*\n * @description: cal new from value and velocity in each stepper\n * @return: { [styleProperty]: { from, to, velocity } }\n */\nvar calStepperVals = (easing, preVals, steps) => {\n var nextStepVals = mapObject((key, val) => {\n if (needContinue(val)) {\n var [newX, newV] = easing(val.from, val.to, val.velocity);\n return _objectSpread(_objectSpread({}, val), {}, {\n from: newX,\n velocity: newV\n });\n }\n return val;\n }, preVals);\n if (steps < 1) {\n return mapObject((key, val) => {\n if (needContinue(val)) {\n return _objectSpread(_objectSpread({}, val), {}, {\n velocity: alpha(val.velocity, nextStepVals[key].velocity, steps),\n from: alpha(val.from, nextStepVals[key].from, steps)\n });\n }\n return val;\n }, preVals);\n }\n return calStepperVals(easing, nextStepVals, steps - 1);\n};\nfunction createStepperUpdate(from, to, easing, interKeys, render, timeoutController) {\n var preTime;\n var stepperStyle = interKeys.reduce((res, key) => _objectSpread(_objectSpread({}, res), {}, {\n [key]: {\n from: from[key],\n velocity: 0,\n to: to[key]\n }\n }), {});\n var getCurrStyle = () => mapObject((key, val) => val.from, stepperStyle);\n var shouldStopAnimation = () => !Object.values(stepperStyle).filter(needContinue).length;\n var stopAnimation = null;\n var stepperUpdate = now => {\n if (!preTime) {\n preTime = now;\n }\n var deltaTime = now - preTime;\n var steps = deltaTime / easing.dt;\n stepperStyle = calStepperVals(easing, stepperStyle, steps);\n // get union set and add compatible prefix\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), getCurrStyle()));\n preTime = now;\n if (!shouldStopAnimation()) {\n stopAnimation = timeoutController.setTimeout(stepperUpdate);\n }\n };\n\n // return start animation method\n return () => {\n stopAnimation = timeoutController.setTimeout(stepperUpdate);\n\n // return stop animation method\n return () => {\n stopAnimation();\n };\n };\n}\nfunction createTimingUpdate(from, to, easing, duration, interKeys, render, timeoutController) {\n var stopAnimation = null;\n var timingStyle = interKeys.reduce((res, key) => _objectSpread(_objectSpread({}, res), {}, {\n [key]: [from[key], to[key]]\n }), {});\n var beginTime;\n var timingUpdate = now => {\n if (!beginTime) {\n beginTime = now;\n }\n var t = (now - beginTime) / duration;\n var currStyle = mapObject((key, val) => alpha(...val, easing(t)), timingStyle);\n\n // get union set and add compatible prefix\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), currStyle));\n if (t < 1) {\n stopAnimation = timeoutController.setTimeout(timingUpdate);\n } else {\n var finalStyle = mapObject((key, val) => alpha(...val, easing(1)), timingStyle);\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), finalStyle));\n }\n };\n\n // return start animation method\n return () => {\n stopAnimation = timeoutController.setTimeout(timingUpdate);\n\n // return stop animation method\n return () => {\n stopAnimation();\n };\n };\n}\n\n// configure update function\n// eslint-disable-next-line import/no-default-export\nexport default (from, to, easing, duration, render, timeoutController) => {\n var interKeys = getIntersectionKeys(from, to);\n return easing.isStepper === true ? createStepperUpdate(from, to, easing, interKeys, render, timeoutController) : createTimingUpdate(from, to, easing, duration, interKeys, render, timeoutController);\n};","/**\n * Callback type for the timeout function.\n * Receives current time in milliseconds as an argument.\n */\n\n/**\n * A function that, when called, cancels the timeout.\n */\n\nexport class RequestAnimationFrameTimeoutController {\n setTimeout(callback) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var startTime = performance.now();\n var requestId = null;\n var executeCallback = now => {\n if (now - startTime >= delay) {\n callback(now);\n // tests fail without the extra if, even when five lines below it's not needed\n // TODO finish transition to the mocked timeout controller and then remove this condition\n } else if (typeof requestAnimationFrame === 'function') {\n requestId = requestAnimationFrame(executeCallback);\n }\n };\n requestId = requestAnimationFrame(executeCallback);\n return () => {\n cancelAnimationFrame(requestId);\n };\n }\n}","var _excluded = [\"children\", \"begin\", \"duration\", \"attributeName\", \"easing\", \"isActive\", \"from\", \"to\", \"canBegin\", \"onAnimationEnd\", \"shouldReAnimate\", \"onAnimationReStart\", \"animationManager\"];\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); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport * as React from 'react';\nimport { PureComponent, cloneElement, Children, createContext, useContext } from 'react';\nimport isEqual from 'es-toolkit/compat/isEqual';\nimport { createAnimateManager } from './AnimationManager';\nimport { configEasing } from './easing';\nimport configUpdate from './configUpdate';\nimport { getTransitionVal } from './util';\nimport { RequestAnimationFrameTimeoutController } from './timeoutController';\nfunction createDefaultAnimationManager() {\n return createAnimateManager(new RequestAnimationFrameTimeoutController());\n}\nclass AnimateImpl extends PureComponent {\n constructor(props, context) {\n super(props, context);\n _defineProperty(this, \"mounted\", false);\n _defineProperty(this, \"manager\", null);\n _defineProperty(this, \"stopJSAnimation\", null);\n _defineProperty(this, \"unSubscribe\", null);\n var {\n isActive,\n attributeName,\n from,\n to,\n children,\n duration,\n animationManager\n } = this.props;\n this.manager = animationManager;\n this.handleStyleChange = this.handleStyleChange.bind(this);\n this.changeStyle = this.changeStyle.bind(this);\n if (!isActive || duration <= 0) {\n this.state = {\n style: {}\n };\n\n // if children is a function and animation is not active, set style to 'to'\n if (typeof children === 'function') {\n this.state = {\n style: to\n };\n }\n return;\n }\n if (from) {\n if (typeof children === 'function') {\n this.state = {\n style: from\n };\n return;\n }\n this.state = {\n style: attributeName ? {\n [attributeName]: from\n } : from\n };\n } else {\n this.state = {\n style: {}\n };\n }\n }\n componentDidMount() {\n var {\n isActive,\n canBegin\n } = this.props;\n this.mounted = true;\n if (!isActive || !canBegin) {\n return;\n }\n this.runAnimation(this.props);\n }\n componentDidUpdate(prevProps) {\n var {\n isActive,\n canBegin,\n attributeName,\n shouldReAnimate,\n to,\n from: currentFrom\n } = this.props;\n var {\n style\n } = this.state;\n if (!canBegin) {\n return;\n }\n if (!isActive) {\n var newState = {\n style: attributeName ? {\n [attributeName]: to\n } : to\n };\n if (this.state && style) {\n if (attributeName && style[attributeName] !== to || !attributeName && style !== to) {\n this.setState(newState);\n }\n }\n return;\n }\n if (isEqual(prevProps.to, to) && prevProps.canBegin && prevProps.isActive) {\n return;\n }\n var isTriggered = !prevProps.canBegin || !prevProps.isActive;\n this.manager.stop();\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n var from = isTriggered || shouldReAnimate ? currentFrom : prevProps.to;\n if (this.state && style) {\n var _newState = {\n style: attributeName ? {\n [attributeName]: from\n } : from\n };\n if (attributeName && style[attributeName] !== from || !attributeName && style !== from) {\n this.setState(_newState);\n }\n }\n this.runAnimation(_objectSpread(_objectSpread({}, this.props), {}, {\n from,\n begin: 0\n }));\n }\n componentWillUnmount() {\n this.mounted = false;\n var {\n onAnimationEnd\n } = this.props;\n if (this.unSubscribe) {\n this.unSubscribe();\n }\n this.manager.stop();\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n if (onAnimationEnd) {\n onAnimationEnd();\n }\n }\n handleStyleChange(style) {\n this.changeStyle(style);\n }\n changeStyle(style) {\n if (this.mounted) {\n this.setState({\n style\n });\n }\n }\n runJSAnimation(props) {\n var {\n from,\n to,\n duration,\n easing,\n begin,\n onAnimationEnd,\n onAnimationStart\n } = props;\n var startAnimation = configUpdate(from, to, configEasing(easing), duration, this.changeStyle, this.manager.getTimeoutController());\n var finalStartAnimation = () => {\n this.stopJSAnimation = startAnimation();\n };\n this.manager.start([onAnimationStart, begin, finalStartAnimation, duration, onAnimationEnd]);\n }\n runAnimation(props) {\n var {\n begin,\n duration,\n attributeName,\n to: propsTo,\n easing,\n onAnimationStart,\n onAnimationEnd,\n children\n } = props;\n this.unSubscribe = this.manager.subscribe(this.handleStyleChange);\n if (typeof easing === 'function' || typeof children === 'function' || easing === 'spring') {\n this.runJSAnimation(props);\n return;\n }\n var to = attributeName ? {\n [attributeName]: propsTo\n } : propsTo;\n var transition = getTransitionVal(Object.keys(to), duration, easing);\n this.manager.start([onAnimationStart, begin, _objectSpread(_objectSpread({}, to), {}, {\n transition\n }), duration, onAnimationEnd]);\n }\n render() {\n var _this$props = this.props,\n {\n children,\n begin,\n duration,\n attributeName,\n easing,\n isActive,\n from,\n to,\n canBegin,\n onAnimationEnd,\n shouldReAnimate,\n onAnimationReStart,\n animationManager\n } = _this$props,\n others = _objectWithoutProperties(_this$props, _excluded);\n var count = Children.count(children);\n var stateStyle = this.state.style;\n if (typeof children === 'function') {\n return children(stateStyle);\n }\n if (!isActive || count === 0 || duration <= 0) {\n return children;\n }\n var cloneContainer = container => {\n var {\n style = {},\n className\n } = container.props;\n var res = /*#__PURE__*/cloneElement(container, _objectSpread(_objectSpread({}, others), {}, {\n style: _objectSpread(_objectSpread({}, style), stateStyle),\n className\n }));\n return res;\n };\n if (count === 1) {\n // @ts-expect-error TODO - fix the type error\n return cloneContainer(Children.only(children));\n }\n\n // @ts-expect-error TODO - fix the type error\n return /*#__PURE__*/React.createElement(\"div\", null, Children.map(children, child => cloneContainer(child)));\n }\n}\n_defineProperty(AnimateImpl, \"displayName\", 'Animate');\n_defineProperty(AnimateImpl, \"defaultProps\", {\n begin: 0,\n duration: 1000,\n attributeName: '',\n easing: 'ease',\n isActive: true,\n canBegin: true,\n onAnimationEnd: () => {},\n onAnimationStart: () => {}\n});\nexport var AnimationManagerContext = /*#__PURE__*/createContext(null);\nexport function Animate(props) {\n var _ref, _props$animationManag;\n var contextAnimationManager = useContext(AnimationManagerContext);\n return /*#__PURE__*/React.createElement(AnimateImpl, _extends({}, props, {\n animationManager: (_ref = (_props$animationManag = props.animationManager) !== null && _props$animationManag !== void 0 ? _props$animationManag : contextAnimationManager) !== null && _ref !== void 0 ? _ref : createDefaultAnimationManager()\n }));\n}","/**\n * Represents a single item in the ReactSmoothQueue.\n * The item can be:\n * - A number representing a delay in milliseconds.\n * - An object representing a style change\n * - A StartAnimationFunction that starts eased transition and calls different render\n * because of course in Recharts we have to have three ways to do everything\n * - An arbitrary function to be executed\n */\n\nexport function createAnimateManager(timeoutController) {\n var currStyle = {};\n var handleChange = () => null;\n var shouldStop = false;\n var cancelTimeout = null;\n var setStyle = _style => {\n if (shouldStop) {\n return;\n }\n if (Array.isArray(_style)) {\n if (!_style.length) {\n return;\n }\n var styles = _style;\n var [curr, ...restStyles] = styles;\n if (typeof curr === 'number') {\n cancelTimeout = timeoutController.setTimeout(setStyle.bind(null, restStyles), curr);\n return;\n }\n setStyle(curr);\n cancelTimeout = timeoutController.setTimeout(setStyle.bind(null, restStyles));\n return;\n }\n if (typeof _style === 'object') {\n currStyle = _style;\n handleChange(currStyle);\n }\n if (typeof _style === 'function') {\n _style();\n }\n };\n return {\n stop: () => {\n shouldStop = true;\n },\n start: style => {\n shouldStop = false;\n if (cancelTimeout) {\n cancelTimeout();\n cancelTimeout = null;\n }\n setStyle(style);\n },\n subscribe: _handleChange => {\n handleChange = _handleChange;\n return () => {\n handleChange = () => null;\n };\n },\n getTimeoutController: () => timeoutController\n };\n}","function _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); }\n/**\n * @fileOverview Rectangle\n */\nimport * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { clsx } from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nimport { resolveDefaultProps } from '../util/resolveDefaultProps';\nimport { Animate } from '../animation/Animate';\nvar getRectanglePath = (x, y, width, height, radius) => {\n var maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n var ySign = height >= 0 ? 1 : -1;\n var xSign = width >= 0 ? 1 : -1;\n var clockWise = height >= 0 && width >= 0 || height < 0 && width < 0 ? 1 : 0;\n var path;\n if (maxRadius > 0 && radius instanceof Array) {\n var newRadius = [0, 0, 0, 0];\n for (var i = 0, len = 4; i < len; i++) {\n newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n }\n path = \"M\".concat(x, \",\").concat(y + ySign * newRadius[0]);\n if (newRadius[0] > 0) {\n path += \"A \".concat(newRadius[0], \",\").concat(newRadius[0], \",0,0,\").concat(clockWise, \",\").concat(x + xSign * newRadius[0], \",\").concat(y);\n }\n path += \"L \".concat(x + width - xSign * newRadius[1], \",\").concat(y);\n if (newRadius[1] > 0) {\n path += \"A \".concat(newRadius[1], \",\").concat(newRadius[1], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width, \",\").concat(y + ySign * newRadius[1]);\n }\n path += \"L \".concat(x + width, \",\").concat(y + height - ySign * newRadius[2]);\n if (newRadius[2] > 0) {\n path += \"A \".concat(newRadius[2], \",\").concat(newRadius[2], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width - xSign * newRadius[2], \",\").concat(y + height);\n }\n path += \"L \".concat(x + xSign * newRadius[3], \",\").concat(y + height);\n if (newRadius[3] > 0) {\n path += \"A \".concat(newRadius[3], \",\").concat(newRadius[3], \",0,0,\").concat(clockWise, \",\\n \").concat(x, \",\").concat(y + height - ySign * newRadius[3]);\n }\n path += 'Z';\n } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n var _newRadius = Math.min(maxRadius, radius);\n path = \"M \".concat(x, \",\").concat(y + ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + xSign * _newRadius, \",\").concat(y, \"\\n L \").concat(x + width - xSign * _newRadius, \",\").concat(y, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width, \",\").concat(y + ySign * _newRadius, \"\\n L \").concat(x + width, \",\").concat(y + height - ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width - xSign * _newRadius, \",\").concat(y + height, \"\\n L \").concat(x + xSign * _newRadius, \",\").concat(y + height, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x, \",\").concat(y + height - ySign * _newRadius, \" Z\");\n } else {\n path = \"M \".concat(x, \",\").concat(y, \" h \").concat(width, \" v \").concat(height, \" h \").concat(-width, \" Z\");\n }\n return path;\n};\nvar defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n // The radius of border\n // The radius of four corners when radius is a number\n // The radius of left-top, right-top, right-bottom, left-bottom when radius is an array\n radius: 0,\n isAnimationActive: false,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};\nexport var Rectangle = rectangleProps => {\n var props = resolveDefaultProps(rectangleProps, defaultProps);\n var pathRef = useRef(null);\n var [totalLength, setTotalLength] = useState(-1);\n useEffect(() => {\n if (pathRef.current && pathRef.current.getTotalLength) {\n try {\n var pathTotalLength = pathRef.current.getTotalLength();\n if (pathTotalLength) {\n setTotalLength(pathTotalLength);\n }\n } catch (_unused) {\n // calculate total length error\n }\n }\n }, []);\n var {\n x,\n y,\n width,\n height,\n radius,\n className\n } = props;\n var {\n animationEasing,\n animationDuration,\n animationBegin,\n isAnimationActive,\n isUpdateAnimationActive\n } = props;\n if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n return null;\n }\n var layerClass = clsx('recharts-rectangle', className);\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: getRectanglePath(x, y, width, height, radius)\n }));\n }\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: {\n width,\n height,\n x,\n y\n },\n to: {\n width,\n height,\n x,\n y\n },\n duration: animationDuration\n // @ts-expect-error TODO - fix the type error\n ,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, _ref => {\n var {\n width: currWidth,\n height: currHeight,\n x: currX,\n y: currY\n } = _ref;\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0\n // @ts-expect-error TODO - fix the type error\n ,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\")\n // @ts-expect-error TODO - fix the type error\n ,\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing\n }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: getRectanglePath(currX, currY, currWidth, currHeight, radius),\n ref: pathRef\n })));\n });\n};","import { polarToCartesian } from '../PolarUtils';\n/**\n * Only applicable for radial layouts\n * @param {Object} activeCoordinate ChartCoordinate\n * @returns {Object} RadialCursorPoints\n */\nexport function getRadialCursorPoints(activeCoordinate) {\n var {\n cx,\n cy,\n radius,\n startAngle,\n endAngle\n } = activeCoordinate;\n var startPoint = polarToCartesian(cx, cy, radius, startAngle);\n var endPoint = polarToCartesian(cx, cy, radius, endAngle);\n return {\n points: [startPoint, endPoint],\n cx,\n cy,\n radius,\n startAngle,\n endAngle\n };\n}","function _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';\nimport { clsx } from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nimport { polarToCartesian, RADIAN } from '../util/PolarUtils';\nimport { getPercentValue, mathSign } from '../util/DataUtils';\nimport { resolveDefaultProps } from '../util/resolveDefaultProps';\nvar getDeltaAngle = (startAngle, endAngle) => {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n return sign * deltaAngle;\n};\nvar getTangentCircle = _ref => {\n var {\n cx,\n cy,\n radius,\n angle,\n sign,\n isExternal,\n cornerRadius,\n cornerIsExternal\n } = _ref;\n var centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n var theta = Math.asin(cornerRadius / centerRadius) / RADIAN;\n var centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n var center = polarToCartesian(cx, cy, centerRadius, centerAngle);\n // The coordinate of point which is tangent to the circle\n var circleTangency = polarToCartesian(cx, cy, radius, centerAngle);\n // The coordinate of point which is tangent to the radius line\n var lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n var lineTangency = polarToCartesian(cx, cy, centerRadius * Math.cos(theta * RADIAN), lineTangencyAngle);\n return {\n center,\n circleTangency,\n lineTangency,\n theta\n };\n};\nvar getSectorPath = _ref2 => {\n var {\n cx,\n cy,\n innerRadius,\n outerRadius,\n startAngle,\n endAngle\n } = _ref2;\n var angle = getDeltaAngle(startAngle, endAngle);\n\n // When the angle of sector equals to 360, star point and end point coincide\n var tempEndAngle = startAngle + angle;\n var outerStartPoint = polarToCartesian(cx, cy, outerRadius, startAngle);\n var outerEndPoint = polarToCartesian(cx, cy, outerRadius, tempEndAngle);\n var path = \"M \".concat(outerStartPoint.x, \",\").concat(outerStartPoint.y, \"\\n A \").concat(outerRadius, \",\").concat(outerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle > tempEndAngle), \",\\n \").concat(outerEndPoint.x, \",\").concat(outerEndPoint.y, \"\\n \");\n if (innerRadius > 0) {\n var innerStartPoint = polarToCartesian(cx, cy, innerRadius, startAngle);\n var innerEndPoint = polarToCartesian(cx, cy, innerRadius, tempEndAngle);\n path += \"L \".concat(innerEndPoint.x, \",\").concat(innerEndPoint.y, \"\\n A \").concat(innerRadius, \",\").concat(innerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle <= tempEndAngle), \",\\n \").concat(innerStartPoint.x, \",\").concat(innerStartPoint.y, \" Z\");\n } else {\n path += \"L \".concat(cx, \",\").concat(cy, \" Z\");\n }\n return path;\n};\nvar getSectorWithCorner = _ref3 => {\n var {\n cx,\n cy,\n innerRadius,\n outerRadius,\n cornerRadius,\n forceCornerRadius,\n cornerIsExternal,\n startAngle,\n endAngle\n } = _ref3;\n var sign = mathSign(endAngle - startAngle);\n var {\n circleTangency: soct,\n lineTangency: solt,\n theta: sot\n } = getTangentCircle({\n cx,\n cy,\n radius: outerRadius,\n angle: startAngle,\n sign,\n cornerRadius,\n cornerIsExternal\n });\n var {\n circleTangency: eoct,\n lineTangency: eolt,\n theta: eot\n } = getTangentCircle({\n cx,\n cy,\n radius: outerRadius,\n angle: endAngle,\n sign: -sign,\n cornerRadius,\n cornerIsExternal\n });\n var outerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sot - eot;\n if (outerArcAngle < 0) {\n if (forceCornerRadius) {\n return \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(cornerRadius * 2, \",0\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(-cornerRadius * 2, \",0\\n \");\n }\n return getSectorPath({\n cx,\n cy,\n innerRadius,\n outerRadius,\n startAngle,\n endAngle\n });\n }\n var path = \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(soct.x, \",\").concat(soct.y, \"\\n A\").concat(outerRadius, \",\").concat(outerRadius, \",0,\").concat(+(outerArcAngle > 180), \",\").concat(+(sign < 0), \",\").concat(eoct.x, \",\").concat(eoct.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eolt.x, \",\").concat(eolt.y, \"\\n \");\n if (innerRadius > 0) {\n var {\n circleTangency: sict,\n lineTangency: silt,\n theta: sit\n } = getTangentCircle({\n cx,\n cy,\n radius: innerRadius,\n angle: startAngle,\n sign,\n isExternal: true,\n cornerRadius,\n cornerIsExternal\n });\n var {\n circleTangency: eict,\n lineTangency: eilt,\n theta: eit\n } = getTangentCircle({\n cx,\n cy,\n radius: innerRadius,\n angle: endAngle,\n sign: -sign,\n isExternal: true,\n cornerRadius,\n cornerIsExternal\n });\n var innerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sit - eit;\n if (innerArcAngle < 0 && cornerRadius === 0) {\n return \"\".concat(path, \"L\").concat(cx, \",\").concat(cy, \"Z\");\n }\n path += \"L\".concat(eilt.x, \",\").concat(eilt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eict.x, \",\").concat(eict.y, \"\\n A\").concat(innerRadius, \",\").concat(innerRadius, \",0,\").concat(+(innerArcAngle > 180), \",\").concat(+(sign > 0), \",\").concat(sict.x, \",\").concat(sict.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(silt.x, \",\").concat(silt.y, \"Z\");\n } else {\n path += \"L\".concat(cx, \",\").concat(cy, \"Z\");\n }\n return path;\n};\nvar defaultProps = {\n cx: 0,\n cy: 0,\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n cornerRadius: 0,\n forceCornerRadius: false,\n cornerIsExternal: false\n};\nexport var Sector = sectorProps => {\n var props = resolveDefaultProps(sectorProps, defaultProps);\n var {\n cx,\n cy,\n innerRadius,\n outerRadius,\n cornerRadius,\n forceCornerRadius,\n cornerIsExternal,\n startAngle,\n endAngle,\n className\n } = props;\n if (outerRadius < innerRadius || startAngle === endAngle) {\n return null;\n }\n var layerClass = clsx('recharts-sector', className);\n var deltaRadius = outerRadius - innerRadius;\n var cr = getPercentValue(cornerRadius, deltaRadius, 0, true);\n var path;\n if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n path = getSectorWithCorner({\n cx,\n cy,\n innerRadius,\n outerRadius,\n cornerRadius: Math.min(cr, deltaRadius / 2),\n forceCornerRadius,\n cornerIsExternal,\n startAngle,\n endAngle\n });\n } else {\n path = getSectorPath({\n cx,\n cy,\n innerRadius,\n outerRadius,\n startAngle,\n endAngle\n });\n }\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: path\n }));\n};","import { polarToCartesian } from '../PolarUtils';\nimport { getRadialCursorPoints } from './getRadialCursorPoints';\nexport function getCursorPoints(layout, activeCoordinate, offset) {\n var x1, y1, x2, y2;\n if (layout === 'horizontal') {\n x1 = activeCoordinate.x;\n x2 = x1;\n y1 = offset.top;\n y2 = offset.top + offset.height;\n } else if (layout === 'vertical') {\n y1 = activeCoordinate.y;\n y2 = y1;\n x1 = offset.left;\n x2 = offset.left + offset.width;\n } else if (activeCoordinate.cx != null && activeCoordinate.cy != null) {\n if (layout === 'centric') {\n var {\n cx,\n cy,\n innerRadius,\n outerRadius,\n angle\n } = activeCoordinate;\n var innerPoint = polarToCartesian(cx, cy, innerRadius, angle);\n var outerPoint = polarToCartesian(cx, cy, outerRadius, angle);\n x1 = innerPoint.x;\n y1 = innerPoint.y;\n x2 = outerPoint.x;\n y2 = outerPoint.y;\n } else {\n // @ts-expect-error TODO the state is marked as containing Coordinate but actually in polar charts it contains PolarCoordinate, we should keep the polar state separate\n return getRadialCursorPoints(activeCoordinate);\n }\n }\n return [{\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n }];\n}","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst isSymbol = require('../predicate/isSymbol.js');\n\nfunction toNumber(value) {\n if (isSymbol.isSymbol(value)) {\n return NaN;\n }\n return Number(value);\n}\n\nexports.toNumber = toNumber;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst toNumber = require('./toNumber.js');\n\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber.toNumber(value);\n if (value === Infinity || value === -Infinity) {\n const sign = value < 0 ? -1 : 1;\n return sign * Number.MAX_VALUE;\n }\n return value === value ? value : 0;\n}\n\nexports.toFinite = toFinite;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst isIterateeCall = require('../_internal/isIterateeCall.js');\nconst toFinite = require('../util/toFinite.js');\n\nfunction range(start, end, step) {\n if (step && typeof step !== 'number' && isIterateeCall.isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n start = toFinite.toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n }\n else {\n end = toFinite.toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite.toFinite(step);\n const length = Math.max(Math.ceil((end - start) / (step || 1)), 0);\n const result = new Array(length);\n for (let index = 0; index < length; index++) {\n result[index] = start;\n start += step;\n }\n return result;\n}\n\nexports.range = range;\n","module.exports = require('../dist/compat/math/range.js').range;\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 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","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","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","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 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","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 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","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 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","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 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(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\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 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","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 {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 exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","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","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","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","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 {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 {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","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","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 {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 {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","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 { createSelector } from 'reselect';\n/**\n * This selector always returns the data with the indexes set by a Brush.\n * Trouble is, that might or might not be what you want.\n *\n * In charts with Brush, you will sometimes want to select the full range of data, and sometimes the one decided by the Brush\n * - even if the Brush is active, the panorama inside the Brush should show the full range of data.\n *\n * So instead of this selector, consider using either selectChartDataAndAlwaysIgnoreIndexes or selectChartDataWithIndexesIfNotInPanorama\n *\n * @param state RechartsRootState\n * @returns data defined on the chart root element, such as BarChart or ScatterChart\n */\nexport var selectChartDataWithIndexes = state => state.chartData;\n\n/**\n * This selector will always return the full range of data, ignoring the indexes set by a Brush.\n * Useful for when you want to render the full range of data, even if a Brush is active.\n * For example: in the Brush panorama, in Legend, in Tooltip.\n */\nexport var selectChartDataAndAlwaysIgnoreIndexes = createSelector([selectChartDataWithIndexes], dataState => {\n var dataEndIndex = dataState.chartData != null ? dataState.chartData.length - 1 : 0;\n return {\n chartData: dataState.chartData,\n computedData: dataState.computedData,\n dataEndIndex,\n dataStartIndex: 0\n };\n});\nexport var selectChartDataWithIndexesIfNotInPanorama = (state, _xAxisId, _yAxisId, isPanorama) => {\n if (isPanorama) {\n return selectChartDataAndAlwaysIgnoreIndexes(state);\n }\n return selectChartDataWithIndexes(state);\n};","import { MAX_VALUE_REG, MIN_VALUE_REG } from './ChartUtils';\nimport { isNumber } from './DataUtils';\nimport { isWellBehavedNumber } from './isWellBehavedNumber';\nexport function isWellFormedNumberDomain(v) {\n if (Array.isArray(v) && v.length === 2) {\n var [min, max] = v;\n if (isWellBehavedNumber(min) && isWellBehavedNumber(max)) {\n return true;\n }\n }\n return false;\n}\nexport function extendDomain(providedDomain, boundaryDomain, allowDataOverflow) {\n if (allowDataOverflow) {\n // If the data are allowed to overflow - we're fine with whatever user provided\n return providedDomain;\n }\n /*\n * If the data are not allowed to overflow - we need to extend the domain.\n * Means that effectively the user is allowed to make the domain larger\n * but not smaller.\n */\n return [Math.min(providedDomain[0], boundaryDomain[0]), Math.max(providedDomain[1], boundaryDomain[1])];\n}\n\n/**\n * So Recharts allows users to provide their own domains,\n * but it also places some expectations on what the domain is.\n * We can improve on the typescript typing, but we also need a runtime test\n to observe that the user-provided domain is well-formed,\n * that is: an array with exactly two numbers.\n *\n * This function does not accept data as an argument.\n * This is to enable a performance optimization - if the domain is there,\n * and we know what it is without traversing all the data,\n * then we don't have to traverse all the data!\n *\n * If the user-provided domain is not well-formed,\n * this function will return undefined - in which case we should traverse the data to calculate the real domain.\n *\n * This function is for parsing the numerical domain only.\n *\n * @param userDomain external prop, user provided, before validation. Can have various shapes: array, function, special magical strings inside too.\n * @param allowDataOverflow boolean, provided by users. If true then the data domain wins\n *\n * @return [min, max] domain if it's well-formed; undefined if the domain is invalid\n */\nexport function numericalDomainSpecifiedWithoutRequiringData(userDomain, allowDataOverflow) {\n if (!allowDataOverflow) {\n // Cannot compute data overflow if the data is not provided\n return undefined;\n }\n if (typeof userDomain === 'function') {\n // The user function expects the data to be provided as an argument\n return undefined;\n }\n if (Array.isArray(userDomain) && userDomain.length === 2) {\n var [providedMin, providedMax] = userDomain;\n var finalMin, finalMax;\n if (isWellBehavedNumber(providedMin)) {\n finalMin = providedMin;\n } else if (typeof providedMin === 'function') {\n // The user function expects the data to be provided as an argument\n return undefined;\n }\n if (isWellBehavedNumber(providedMax)) {\n finalMax = providedMax;\n } else if (typeof providedMax === 'function') {\n // The user function expects the data to be provided as an argument\n return undefined;\n }\n var candidate = [finalMin, finalMax];\n if (isWellFormedNumberDomain(candidate)) {\n return candidate;\n }\n }\n return undefined;\n}\n\n/**\n * So Recharts allows users to provide their own domains,\n * but it also places some expectations on what the domain is.\n * We can improve on the typescript typing, but we also need a runtime test\n * to observe that the user-provided domain is well-formed,\n * that is: an array with exactly two numbers.\n * If the user-provided domain is not well-formed,\n * this function will return undefined - in which case we should traverse the data to calculate the real domain.\n *\n * This function is for parsing the numerical domain only.\n *\n * You are probably thinking, why does domain need tick count?\n * Well it adjusts the domain based on where the \"nice ticks\" land, and nice ticks depend on the tick count.\n *\n * @param userDomain external prop, user provided, before validation. Can have various shapes: array, function, special magical strings inside too.\n * @param dataDomain calculated from data. Can be undefined, as an option for performance optimization\n * @param allowDataOverflow provided by users. If true then the data domain wins\n *\n * @return [min, max] domain if it's well-formed; undefined if the domain is invalid\n */\nexport function parseNumericalUserDomain(userDomain, dataDomain, allowDataOverflow) {\n if (!allowDataOverflow && dataDomain == null) {\n // Cannot compute data overflow if the data is not provided\n return undefined;\n }\n if (typeof userDomain === 'function' && dataDomain != null) {\n try {\n var result = userDomain(dataDomain, allowDataOverflow);\n if (isWellFormedNumberDomain(result)) {\n return extendDomain(result, dataDomain, allowDataOverflow);\n }\n } catch (_unused) {\n /* ignore the exception and compute domain from data later */\n }\n }\n if (Array.isArray(userDomain) && userDomain.length === 2) {\n var [providedMin, providedMax] = userDomain;\n var finalMin, finalMax;\n if (providedMin === 'auto') {\n if (dataDomain != null) {\n finalMin = Math.min(...dataDomain);\n }\n } else if (isNumber(providedMin)) {\n finalMin = providedMin;\n } else if (typeof providedMin === 'function') {\n try {\n if (dataDomain != null) {\n finalMin = providedMin(dataDomain === null || dataDomain === void 0 ? void 0 : dataDomain[0]);\n }\n } catch (_unused2) {\n /* ignore the exception and compute domain from data later */\n }\n } else if (typeof providedMin === 'string' && MIN_VALUE_REG.test(providedMin)) {\n var match = MIN_VALUE_REG.exec(providedMin);\n if (match == null || dataDomain == null) {\n finalMin = undefined;\n } else {\n var value = +match[1];\n finalMin = dataDomain[0] - value;\n }\n } else {\n finalMin = dataDomain === null || dataDomain === void 0 ? void 0 : dataDomain[0];\n }\n if (providedMax === 'auto') {\n if (dataDomain != null) {\n finalMax = Math.max(...dataDomain);\n }\n } else if (isNumber(providedMax)) {\n finalMax = providedMax;\n } else if (typeof providedMax === 'function') {\n try {\n if (dataDomain != null) {\n finalMax = providedMax(dataDomain === null || dataDomain === void 0 ? void 0 : dataDomain[1]);\n }\n } catch (_unused3) {\n /* ignore the exception and compute domain from data later */\n }\n } else if (typeof providedMax === 'string' && MAX_VALUE_REG.test(providedMax)) {\n var _match = MAX_VALUE_REG.exec(providedMax);\n if (_match == null || dataDomain == null) {\n finalMax = undefined;\n } else {\n var _value = +_match[1];\n finalMax = dataDomain[1] + _value;\n }\n } else {\n finalMax = dataDomain === null || dataDomain === void 0 ? void 0 : dataDomain[1];\n }\n var candidate = [finalMin, finalMax];\n if (isWellFormedNumberDomain(candidate)) {\n if (dataDomain == null) {\n return candidate;\n }\n return extendDomain(candidate, dataDomain, allowDataOverflow);\n }\n }\n return undefined;\n}","/*\r\n * decimal.js-light v2.5.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js-light\r\n * Copyright (c) 2020 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Expat Licence\r\n */\r\n\r\n\r\n// ------------------------------------ EDITABLE DEFAULTS ------------------------------------- //\r\n\r\n\r\n// The limit on the value of `precision`, and on the value of the first argument to\r\n// `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\nvar MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n defaults = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed during run-time using `Decimal.config`.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used by default by `toInteger`, `toDecimalPlaces`, `toExponential`,\r\n // `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -MAX_E\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to MAX_E\r\n\r\n // The natural logarithm of 10.\r\n // 115 digits\r\n LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286'\r\n },\r\n\r\n\r\n// ------------------------------------ END OF EDITABLE DEFAULTS -------------------------------- //\r\n\r\n\r\n Decimal,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n exponentOutOfRange = decimalError + 'Exponent out of range: ',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n ONE,\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n MAX_E = mathfloor(MAX_SAFE_INTEGER / LOG_BASE), // 1286742750677284\r\n\r\n // Decimal.prototype object\r\n P = {};\r\n\r\n\r\n// Decimal prototype methods\r\n\r\n\r\n/*\r\n * absoluteValue abs\r\n * comparedTo cmp\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy idiv\r\n * equals eq\r\n * exponent\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * isInteger isint\r\n * isNegative isneg\r\n * isPositive ispos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * squareRoot sqrt\r\n * times mul\r\n * toDecimalPlaces todp\r\n * toExponential\r\n * toFixed\r\n * toInteger toint\r\n * toNumber\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits tosd\r\n * toString\r\n * valueOf val\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\nP.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s) x.s = 1;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value\r\n *\r\n */\r\nP.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this;\r\n\r\n y = new x.constructor(y);\r\n\r\n // Signs differ?\r\n if (x.s !== y.s) return x.s || -y.s;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ x.s < 0 ? 1 : -1;\r\n\r\n xdL = x.d.length;\r\n ydL = y.d.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (x.d[i] !== y.d[i]) return x.d[i] > y.d[i] ^ x.s < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ x.s < 0 ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\nP.decimalPlaces = P.dp = function () {\r\n var x = this,\r\n w = x.d.length - 1,\r\n dp = (w - x.e) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = x.d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) dp--;\r\n\r\n return dp < 0 ? 0 : dp;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\nP.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, truncated to `precision` significant digits.\r\n *\r\n */\r\nP.dividedToIntegerBy = P.idiv = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(divide(x, new Ctor(y), 0, 1), Ctor.precision);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\nP.equals = P.eq = function (y) {\r\n return !this.cmp(y);\r\n};\r\n\r\n\r\n/*\r\n * Return the (base 10) exponent value of this Decimal (this.e is the base 10000000 exponent).\r\n *\r\n */\r\nP.exponent = function () {\r\n return getBase10Exponent(this);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\nP.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\nP.greaterThanOrEqualTo = P.gte = function (y) {\r\n return this.cmp(y) >= 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\nP.isInteger = P.isint = function () {\r\n return this.e > this.d.length - 2;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\nP.isNegative = P.isneg = function () {\r\n return this.s < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\nP.isPositive = P.ispos = function () {\r\n return this.s > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is 0, otherwise return false.\r\n *\r\n */\r\nP.isZero = function () {\r\n return this.s === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, truncated to\r\n * `precision` significant digits.\r\n *\r\n * If no base is specified, return log[10](x).\r\n *\r\n * log[base](x) = ln(x) / ln(base)\r\n *\r\n * The maximum error of the result is 1 ulp (unit in the last place).\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nP.logarithm = P.log = function (base) {\r\n var r,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n wpr = pr + 5;\r\n\r\n // Default base is 10.\r\n if (base === void 0) {\r\n base = new Ctor(10);\r\n } else {\r\n base = new Ctor(base);\r\n\r\n // log[-b](x) = NaN\r\n // log[0](x) = NaN\r\n // log[1](x) = NaN\r\n if (base.s < 1 || base.eq(ONE)) throw Error(decimalError + 'NaN');\r\n }\r\n\r\n // log[b](-x) = NaN\r\n // log[b](0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // log[b](1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n external = false;\r\n r = divide(ln(x, wpr), ln(base, wpr), wpr);\r\n external = true;\r\n\r\n return round(r, pr);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\nP.minus = P.sub = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? subtract(x, y) : add(x, (y.s = -y.s, y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\nP.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n y = new Ctor(y);\r\n\r\n // x % 0 = NaN\r\n if (!y.s) throw Error(decimalError + 'NaN');\r\n\r\n // Return x if x is 0.\r\n if (!x.s) return round(new Ctor(x), pr);\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n q = divide(x, y, 0, 1).times(y);\r\n external = true;\r\n\r\n return x.minus(q);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\nP.naturalExponential = P.exp = function () {\r\n return exp(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * truncated to `precision` significant digits.\r\n *\r\n */\r\nP.naturalLogarithm = P.ln = function () {\r\n return ln(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\nP.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s || 0;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\nP.plus = P.add = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? add(x, y) : subtract(x, (y.s = -y.s, y));\r\n};\r\n\r\n\r\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\nP.precision = P.sd = function (z) {\r\n var e, sd, w,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n e = getBase10Exponent(x) + 1;\r\n w = x.d.length - 1;\r\n sd = w * LOG_BASE + 1;\r\n w = x.d[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) sd--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = x.d[0]; w >= 10; w /= 10) sd++;\r\n }\r\n\r\n return z && e > sd ? e : sd;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\nP.squareRoot = P.sqrt = function () {\r\n var e, n, pr, r, s, t, wpr,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n // Negative or zero?\r\n if (x.s < 1) {\r\n if (!x.s) return new Ctor(0);\r\n\r\n // sqrt(-x) = NaN\r\n throw Error(decimalError + 'NaN');\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(x.d);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n pr = Ctor.precision;\r\n s = wpr = pr + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, wpr + 2)).times(0.5);\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === (n = digitsToString(r.d)).slice(0, wpr)) {\r\n n = n.slice(wpr - 3, wpr + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (s == wpr && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n round(t, pr + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n } else if (n != '9999') {\r\n break;\r\n }\r\n\r\n wpr += 4;\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return round(r, pr);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal times `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\nP.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n // Return 0 if either is 0.\r\n if (!x.s || !y.s) return new Ctor(0);\r\n\r\n y.s *= x.s;\r\n e = x.e + y.e;\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = e;\r\n\r\n return external ? round(y, Ctor.precision) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toDecimalPlaces = P.todp = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return round(x, dp + getBase10Exponent(x) + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = toString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), dp + 1, rm);\r\n str = toString(x, true, dp + 1);\r\n }\r\n\r\n return str;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) return toString(x);\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = round(new Ctor(x), dp + getBase10Exponent(x) + 1, rm);\r\n str = toString(y.abs(), false, dp + getBase10Exponent(y) + 1);\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isneg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\nP.toInteger = P.toint = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(new Ctor(x), getBase10Exponent(x) + 1, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n *\r\n */\r\nP.toNumber = function () {\r\n return +this;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`,\r\n * truncated to `precision` significant digits.\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * The maximum error is 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\nP.toPower = P.pow = function (y) {\r\n var e, k, pr, r, sign, yIsInt,\r\n x = this,\r\n Ctor = x.constructor,\r\n guard = 12,\r\n yn = +(y = new Ctor(y));\r\n\r\n // pow(x, 0) = 1\r\n if (!y.s) return new Ctor(ONE);\r\n\r\n x = new Ctor(x);\r\n\r\n // pow(0, y > 0) = 0\r\n // pow(0, y < 0) = Infinity\r\n if (!x.s) {\r\n if (y.s < 1) throw Error(decimalError + 'Infinity');\r\n return x;\r\n }\r\n\r\n // pow(1, y) = 1\r\n if (x.eq(ONE)) return x;\r\n\r\n pr = Ctor.precision;\r\n\r\n // pow(x, 1) = x\r\n if (y.eq(ONE)) return round(x, pr);\r\n\r\n e = y.e;\r\n k = y.d.length - 1;\r\n yIsInt = e >= k;\r\n sign = x.s;\r\n\r\n if (!yIsInt) {\r\n\r\n // pow(x < 0, y non-integer) = NaN\r\n if (sign < 0) throw Error(decimalError + 'NaN');\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n } else if ((k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = new Ctor(ONE);\r\n\r\n // Max k of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n e = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (k % 2) {\r\n r = r.times(x);\r\n truncate(r.d, e);\r\n }\r\n\r\n k = mathfloor(k / 2);\r\n if (k === 0) break;\r\n\r\n x = x.times(x);\r\n truncate(x.d, e);\r\n }\r\n\r\n external = true;\r\n\r\n return y.s < 0 ? new Ctor(ONE).div(r) : round(r, pr);\r\n }\r\n\r\n // Result is negative if x is negative and the last digit of integer y is odd.\r\n sign = sign < 0 && y.d[Math.max(e, k)] & 1 ? -1 : 1;\r\n\r\n x.s = 1;\r\n external = false;\r\n r = y.times(ln(x, pr + guard));\r\n external = true;\r\n r = exp(r);\r\n r.s = sign;\r\n\r\n return r;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var e, str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n e = getBase10Exponent(x);\r\n str = toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), sd, rm);\r\n e = getBase10Exponent(x);\r\n str = toString(x, sd <= e || e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toSignificantDigits = P.tosd = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return round(new Ctor(x), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\nP.toString = P.valueOf = P.val = P.toJSON = P[Symbol.for('nodejs.util.inspect.custom')] = function () {\r\n var x = this,\r\n e = getBase10Exponent(x),\r\n Ctor = x.constructor;\r\n\r\n return toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n};\r\n\r\n\r\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n/*\r\n * add P.minus, P.plus\r\n * checkInt32 P.todp, P.toExponential, P.toFixed, P.toPrecision, P.tosd\r\n * digitsToString P.log, P.sqrt, P.pow, toString, exp, ln\r\n * divide P.div, P.idiv, P.log, P.mod, P.sqrt, exp, ln\r\n * exp P.exp, P.pow\r\n * getBase10Exponent P.exponent, P.sd, P.toint, P.sqrt, P.todp, P.toFixed, P.toPrecision,\r\n * P.toString, divide, round, toString, exp, ln\r\n * getLn10 P.log, ln\r\n * getZeroString digitsToString, toString\r\n * ln P.log, P.ln, P.pow, exp\r\n * parseDecimal Decimal\r\n * round P.abs, P.idiv, P.log, P.minus, P.mod, P.neg, P.plus, P.toint, P.sqrt,\r\n * P.times, P.todp, P.toExponential, P.toFixed, P.pow, P.toPrecision, P.tosd,\r\n * divide, getLn10, exp, ln\r\n * subtract P.minus, P.plus\r\n * toString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf\r\n * truncate P.pow\r\n *\r\n * Throws: P.log, P.mod, P.sd, P.sqrt, P.pow, checkInt32, divide, round,\r\n * getLn10, exp, ln, parseDecimal, Decimal, config\r\n */\r\n\r\n\r\nfunction add(x, y) {\r\n var carry, d, e, i, k, len, xd, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // If either is zero...\r\n if (!x.s || !y.s) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!y.s) y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n k = x.e;\r\n e = y.e;\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n return external ? round(y, pr) : y;\r\n}\r\n\r\n\r\nfunction checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n}\r\n\r\n\r\nfunction digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n}\r\n\r\n\r\nvar divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % BASE | 0;\r\n carry = temp / BASE | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * BASE + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, dp) {\r\n var cmp, e, i, k, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either 0?\r\n if (!x.s) return new Ctor(x);\r\n if (!y.s) throw Error(decimalError + 'Division by zero');\r\n\r\n e = x.e - y.e;\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n for (i = 0; yd[i] == (xd[i] || 0); ) ++i;\r\n if (yd[i] > (xd[i] || 0)) --e;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n } else if (dp) {\r\n sd = pr + (getBase10Exponent(x) - getBase10Exponent(y)) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) return new Ctor(0);\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / LOG_BASE + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * BASE + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= BASE/2\r\n k = BASE / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k);\r\n xd = multiplyInteger(xd, k);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= BASE / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * BASE + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= BASE) k = BASE - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n\r\n q.e = e;\r\n\r\n return round(q, dp ? pr + getBase10Exponent(q) + 1 : pr);\r\n };\r\n})();\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` truncated to `sd`\r\n * significant digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n */\r\nfunction exp(x, sd) {\r\n var denominator, guard, pow, sum, t, wpr,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n if (getBase10Exponent(x) > 16) throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n\r\n // exp(0) = 1\r\n if (!x.s) return new Ctor(ONE);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n while (x.abs().gte(0.1)) {\r\n x = x.times(t); // x = x / 2^5\r\n k += 5;\r\n }\r\n\r\n // Estimate the precision increase necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(ONE);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = round(pow.times(x), wpr);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n while (k--) sum = round(sum.times(sum), wpr);\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n }\r\n}\r\n\r\n\r\n// Calculate the base 10 exponent from the base 1e7 exponent.\r\nfunction getBase10Exponent(x) {\r\n var e = x.e * LOG_BASE,\r\n w = x.d[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for (; w >= 10; w /= 10) e++;\r\n return e;\r\n}\r\n\r\n\r\nfunction getLn10(Ctor, sd, pr) {\r\n\r\n if (sd > Ctor.LN10.sd()) {\r\n\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(decimalError + 'LN10 precision limit exceeded');\r\n }\r\n\r\n return round(new Ctor(Ctor.LN10), sd);\r\n}\r\n\r\n\r\nfunction getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` truncated to `sd` significant\r\n * digits.\r\n *\r\n * ln(n) is non-terminating (n != 1)\r\n *\r\n */\r\nfunction ln(y, sd) {\r\n var c, c0, denominator, e, numerator, sum, t, wpr, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // ln(-x) = NaN\r\n // ln(0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // ln(1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n if (x.eq(10)) {\r\n if (sd == null) external = true;\r\n return getLn10(Ctor, wpr);\r\n }\r\n\r\n wpr += guard;\r\n Ctor.precision = wpr;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n e = getBase10Exponent(x);\r\n\r\n if (Math.abs(e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = ln(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(x, pr)) : x;\r\n }\r\n\r\n // x is reduced to a value near 1.\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(ONE), x.plus(ONE), wpr);\r\n x2 = round(x.times(x), wpr);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = round(numerator.times(x2), wpr);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\nfunction parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48;) ++i;\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48;) --len;\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n e = e - i - 1;\r\n x.e = mathfloor(e / LOG_BASE);\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) throw Error(exponentOutOfRange + e);\r\n } else {\r\n\r\n // Zero.\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Round `x` to `sd` significant digits, using rounding mode `rm` if present (truncate otherwise).\r\n */\r\n function round(x, sd, rm) {\r\n var i, j, k, n, rd, doRound, w, xdi,\r\n xd = x.d;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd which contains the rounding digit, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // n: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (n = 1, k = xd[0]; k >= 10; k /= 10) n++;\r\n i = sd - n;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) return x;\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (n = 1; k >= 10; k /= 10) n++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - n.\r\n j = i - LOG_BASE + n;\r\n }\r\n\r\n if (rm !== void 0) {\r\n k = mathpow(10, n - j - 1);\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / k % 10 | 0;\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n doRound = sd < 0 || xd[xdi + 1] !== void 0 || w % k;\r\n\r\n // The expression `w % mathpow(10, n - j - 1)` returns all the digits of w to the right of the\r\n // digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression will give\r\n // 714.\r\n\r\n doRound = rm < 4\r\n ? (rd || doRound) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || doRound || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, n - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n }\r\n\r\n if (sd < 1 || !xd[0]) {\r\n if (doRound) {\r\n k = getBase10Exponent(x);\r\n xd.length = 1;\r\n\r\n // Convert sd to decimal places.\r\n sd = sd - k - 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = mathfloor(-sd / LOG_BASE) || 0;\r\n } else {\r\n xd.length = 1;\r\n\r\n // Zero.\r\n xd[0] = x.e = x.s = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, n - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (doRound) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n if ((xd[0] += k) == BASE) {\r\n xd[0] = 1;\r\n ++x.e;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) {\r\n throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\nfunction subtract(x, y) {\r\n var d, e, i, j, k, len, xd, xe, xLTy, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // Return y negated if x is zero.\r\n // Return x if y is zero and x is non-zero.\r\n if (!x.s || !y.s) {\r\n if (y.s) y.s = -y.s;\r\n else y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are non-zero numbers with the same sign.\r\n\r\n e = y.e;\r\n xe = x.e;\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of zeros\r\n // needing to be prepended, but this can be avoided while still ensuring correct rounding by\r\n // limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to xd if shorter.\r\n // Don't add zeros to yd if shorter as subtraction only needs to start at yd length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(0);\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n //return external && xd.length >= pr / LOG_BASE ? round(y, pr) : y;\r\n return external ? round(y, pr) : y;\r\n}\r\n\r\n\r\nfunction toString(x, isExp, sd) {\r\n var k,\r\n e = getBase10Exponent(x),\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (e < 0 ? 'e' : 'e+') + e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n}\r\n\r\n\r\n// Does not strip trailing zeros.\r\nfunction truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n}\r\n\r\n\r\n// Decimal methods\r\n\r\n\r\n/*\r\n * clone\r\n * config/set\r\n */\r\n\r\n\r\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\nfunction clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * value {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(value) {\r\n var x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(value);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (value instanceof Decimal) {\r\n x.s = value.s;\r\n x.e = value.e;\r\n x.d = (value = value.d) ? value.slice() : value;\r\n return;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n\r\n // Reject Infinity/NaN.\r\n if (value * 0 !== 0) {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n if (value > 0) {\r\n x.s = 1;\r\n } else if (value < 0) {\r\n value = -value;\r\n x.s = -1;\r\n } else {\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (value === ~~value && value < 1e7) {\r\n x.e = 0;\r\n x.d = [value];\r\n return;\r\n }\r\n\r\n return parseDecimal(x, value.toString());\r\n } else if (typeof value !== 'string') {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n // Minus sign?\r\n if (value.charCodeAt(0) === 45) {\r\n value = value.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n if (isDecimal.test(value)) parseDecimal(x, value);\r\n else throw Error(invalidArgument + value);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n\r\n Decimal.clone = clone;\r\n Decimal.config = Decimal.set = config;\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'LN10'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n}\r\n\r\n\r\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\nfunction config(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n throw Error(decimalError + 'Object expected');\r\n }\r\n var i, p, v,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -1 / 0, 0,\r\n 'toExpPos', 0, 1 / 0\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if ((v = obj[p = ps[i]]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if ((v = obj[p = 'LN10']) !== void 0) {\r\n if (v == Math.LN10) this[p] = new this(v);\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\n// Create and configure initial Decimal constructor.\r\nexport var Decimal = clone(defaults);\r\n\r\n// Internal constant.\r\nONE = new Decimal(1);\r\n\r\nexport default Decimal;\r\n","var identity = i => i;\nexport var PLACE_HOLDER = {\n '@@functional/placeholder': true\n};\nvar isPlaceHolder = val => val === PLACE_HOLDER;\nvar curry0 = fn => function _curried() {\n if (arguments.length === 0 || arguments.length === 1 && isPlaceHolder(arguments.length <= 0 ? undefined : arguments[0])) {\n return _curried;\n }\n return fn(...arguments);\n};\nvar curryN = (n, fn) => {\n if (n === 1) {\n return fn;\n }\n return curry0(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var argsLength = args.filter(arg => arg !== PLACE_HOLDER).length;\n if (argsLength >= n) {\n return fn(...args);\n }\n return curryN(n - argsLength, curry0(function () {\n for (var _len2 = arguments.length, restArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n restArgs[_key2] = arguments[_key2];\n }\n var newArgs = args.map(arg => isPlaceHolder(arg) ? restArgs.shift() : arg);\n return fn(...newArgs, ...restArgs);\n }));\n });\n};\nexport var curry = fn => curryN(fn.length, fn);\nexport var range = (begin, end) => {\n var arr = [];\n for (var i = begin; i < end; ++i) {\n arr[i - begin] = i;\n }\n return arr;\n};\nexport var map = curry((fn, arr) => {\n if (Array.isArray(arr)) {\n return arr.map(fn);\n }\n return Object.keys(arr).map(key => arr[key]).map(fn);\n});\nexport var compose = function compose() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n if (!args.length) {\n return identity;\n }\n var fns = args.reverse();\n // first function can receive multiply arguments\n var firstFn = fns[0];\n var tailsFn = fns.slice(1);\n return function () {\n return tailsFn.reduce((res, fn) => fn(res), firstFn(...arguments));\n };\n};\nexport var reverse = arr => {\n if (Array.isArray(arr)) {\n return arr.reverse();\n }\n\n // can be string\n return arr.split('').reverse().join('');\n};\nexport var memoize = fn => {\n var lastArgs = null;\n var lastResult = null;\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n if (lastArgs && args.every((val, i) => {\n var _lastArgs;\n return val === ((_lastArgs = lastArgs) === null || _lastArgs === void 0 ? void 0 : _lastArgs[i]);\n })) {\n return lastResult;\n }\n lastArgs = args;\n lastResult = fn(...args);\n return lastResult;\n };\n};","/**\n * @fileOverview Some common arithmetic methods\n * @author xile611\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { curry } from './utils';\n\n/**\n * Get the digit count of a number.\n * If the absolute value is in the interval [0.1, 1), the result is 0.\n * If the absolute value is in the interval [0.01, 0.1), the digit count is -1.\n * If the absolute value is in the interval [0.001, 0.01), the digit count is -2.\n *\n * @param {Number} value The number\n * @return {Integer} Digit count\n */\nfunction getDigitCount(value) {\n var result;\n if (value === 0) {\n result = 1;\n } else {\n result = Math.floor(new Decimal(value).abs().log(10).toNumber()) + 1;\n }\n return result;\n}\n\n/**\n * Get the data in the interval [start, end) with a fixed step.\n * Also handles JS calculation precision issues.\n *\n * @param {Decimal} start Start point\n * @param {Decimal} end End point, not included\n * @param {Decimal} step Step size\n * @return {Array} Array of numbers\n */\nfunction rangeStep(start, end, step) {\n var num = new Decimal(start);\n var i = 0;\n var result = [];\n\n // magic number to prevent infinite loop\n while (num.lt(end) && i < 100000) {\n result.push(num.toNumber());\n num = num.add(step);\n i++;\n }\n return result;\n}\n\n/**\n * Linear interpolation of numbers.\n *\n * @param {Number} a Endpoint of the domain\n * @param {Number} b Endpoint of the domain\n * @param {Number} t A value in [0, 1]\n * @return {Number} A value in the domain\n */\nvar interpolateNumber = curry((a, b, t) => {\n var newA = +a;\n var newB = +b;\n return newA + t * (newB - newA);\n});\n\n/**\n * Inverse operation of linear interpolation.\n *\n * @param {Number} a Endpoint of the domain\n * @param {Number} b Endpoint of the domain\n * @param {Number} x Can be considered as an output value after interpolation\n * @return {Number} When x is in the range a ~ b, the return value is in [0, 1]\n */\nvar uninterpolateNumber = curry((a, b, x) => {\n var diff = b - +a;\n diff = diff || Infinity;\n return (x - a) / diff;\n});\n\n/**\n * Inverse operation of linear interpolation with truncation.\n *\n * @param {Number} a Endpoint of the domain\n * @param {Number} b Endpoint of the domain\n * @param {Number} x Can be considered as an output value after interpolation\n * @return {Number} When x is in the interval a ~ b, the return value is in [0, 1].\n * When x is not in the interval a ~ b, it will be truncated to the interval a ~ b.\n */\nvar uninterpolateTruncation = curry((a, b, x) => {\n var diff = b - +a;\n diff = diff || Infinity;\n return Math.max(0, Math.min(1, (x - a) / diff));\n});\nexport { rangeStep, getDigitCount, interpolateNumber, uninterpolateNumber, uninterpolateTruncation };","/**\n * @fileOverview calculate tick values of scale\n * @author xile611, arcthur\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { compose, range, memoize, map, reverse } from './util/utils';\nimport { getDigitCount, rangeStep } from './util/arithmetic';\n\n/**\n * Calculate a interval of a minimum value and a maximum value\n *\n * @param {Number} min The minimum value\n * @param {Number} max The maximum value\n * @return {Array} An interval\n */\nexport var getValidInterval = _ref => {\n var [min, max] = _ref;\n var [validMin, validMax] = [min, max];\n\n // exchange\n if (min > max) {\n [validMin, validMax] = [max, min];\n }\n return [validMin, validMax];\n};\n\n/**\n * Calculate the step which is easy to understand between ticks, like 10, 20, 25\n *\n * @param roughStep The rough step calculated by dividing the difference by the tickCount\n * @param allowDecimals Allow the ticks to be decimals or not\n * @param correctionFactor A correction factor\n * @return The step which is easy to understand between two ticks\n */\nexport var getFormatStep = (roughStep, allowDecimals, correctionFactor) => {\n if (roughStep.lte(0)) {\n return new Decimal(0);\n }\n var digitCount = getDigitCount(roughStep.toNumber());\n // The ratio between the rough step and the smallest number which has a bigger\n // order of magnitudes than the rough step\n var digitCountValue = new Decimal(10).pow(digitCount);\n var stepRatio = roughStep.div(digitCountValue);\n // When an integer and a float multiplied, the accuracy of result may be wrong\n var stepRatioScale = digitCount !== 1 ? 0.05 : 0.1;\n var amendStepRatio = new Decimal(Math.ceil(stepRatio.div(stepRatioScale).toNumber())).add(correctionFactor).mul(stepRatioScale);\n var formatStep = amendStepRatio.mul(digitCountValue);\n return allowDecimals ? new Decimal(formatStep.toNumber()) : new Decimal(Math.ceil(formatStep.toNumber()));\n};\n\n/**\n * calculate the ticks when the minimum value equals to the maximum value\n *\n * @param value The minimum value which is also the maximum value\n * @param tickCount The count of ticks\n * @param allowDecimals Allow the ticks to be decimals or not\n * @return array of ticks\n */\nexport var getTickOfSingleValue = (value, tickCount, allowDecimals) => {\n var step = new Decimal(1);\n // calculate the middle value of ticks\n var middle = new Decimal(value);\n if (!middle.isint() && allowDecimals) {\n var absVal = Math.abs(value);\n if (absVal < 1) {\n // The step should be a float number when the difference is smaller than 1\n step = new Decimal(10).pow(getDigitCount(value) - 1);\n middle = new Decimal(Math.floor(middle.div(step).toNumber())).mul(step);\n } else if (absVal > 1) {\n // Return the maximum integer which is smaller than 'value' when 'value' is greater than 1\n middle = new Decimal(Math.floor(value));\n }\n } else if (value === 0) {\n middle = new Decimal(Math.floor((tickCount - 1) / 2));\n } else if (!allowDecimals) {\n middle = new Decimal(Math.floor(value));\n }\n var middleIndex = Math.floor((tickCount - 1) / 2);\n var fn = compose(map(n => middle.add(new Decimal(n - middleIndex).mul(step)).toNumber()), range);\n return fn(0, tickCount);\n};\n\n/**\n * Calculate the step\n *\n * @param min The minimum value of an interval\n * @param max The maximum value of an interval\n * @param tickCount The count of ticks\n * @param allowDecimals Allow the ticks to be decimals or not\n * @param correctionFactor A correction factor\n * @return The step, minimum value of ticks, maximum value of ticks\n */\nvar _calculateStep = function calculateStep(min, max, tickCount, allowDecimals) {\n var correctionFactor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n // dirty hack (for recharts' test)\n if (!Number.isFinite((max - min) / (tickCount - 1))) {\n return {\n step: new Decimal(0),\n tickMin: new Decimal(0),\n tickMax: new Decimal(0)\n };\n }\n\n // The step which is easy to understand between two ticks\n var step = getFormatStep(new Decimal(max).sub(min).div(tickCount - 1), allowDecimals, correctionFactor);\n\n // A medial value of ticks\n var middle;\n\n // When 0 is inside the interval, 0 should be a tick\n if (min <= 0 && max >= 0) {\n middle = new Decimal(0);\n } else {\n // calculate the middle value\n middle = new Decimal(min).add(max).div(2);\n // minus modulo value\n middle = middle.sub(new Decimal(middle).mod(step));\n }\n var belowCount = Math.ceil(middle.sub(min).div(step).toNumber());\n var upCount = Math.ceil(new Decimal(max).sub(middle).div(step).toNumber());\n var scaleCount = belowCount + upCount + 1;\n if (scaleCount > tickCount) {\n // When more ticks need to cover the interval, step should be bigger.\n return _calculateStep(min, max, tickCount, allowDecimals, correctionFactor + 1);\n }\n if (scaleCount < tickCount) {\n // When less ticks can cover the interval, we should add some additional ticks\n upCount = max > 0 ? upCount + (tickCount - scaleCount) : upCount;\n belowCount = max > 0 ? belowCount : belowCount + (tickCount - scaleCount);\n }\n return {\n step,\n tickMin: middle.sub(new Decimal(belowCount).mul(step)),\n tickMax: middle.add(new Decimal(upCount).mul(step))\n };\n};\n\n/**\n * Calculate the ticks of an interval. Ticks can appear outside the interval\n * if it makes them more rounded and nice.\n *\n * @param tuple of [min,max] min: The minimum value, max: The maximum value\n * @param tickCount The count of ticks\n * @param allowDecimals Allow the ticks to be decimals or not\n * @return array of ticks\n */\nexport { _calculateStep as calculateStep };\nfunction getNiceTickValuesFn(_ref2) {\n var [min, max] = _ref2;\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n var [cormin, cormax] = getValidInterval([min, max]);\n if (cormin === -Infinity || cormax === Infinity) {\n var _values = cormax === Infinity ? [cormin, ...range(0, tickCount - 1).map(() => Infinity)] : [...range(0, tickCount - 1).map(() => -Infinity), cormax];\n return min > max ? reverse(_values) : _values;\n }\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n }\n\n // Get the step between two ticks\n var {\n step,\n tickMin,\n tickMax\n } = _calculateStep(cormin, cormax, count, allowDecimals, 0);\n var values = rangeStep(tickMin, tickMax.add(new Decimal(0.1).mul(step)), step);\n return min > max ? reverse(values) : values;\n}\n\n/**\n * Calculate the ticks of an interval.\n * Ticks will be constrained to the interval [min, max] even if it makes them less rounded and nice.\n *\n * @param tuple of [min,max] min: The minimum value, max: The maximum value\n * @param tickCount The count of ticks. This function may return less than tickCount ticks if the interval is too small.\n * @param allowDecimals Allow the ticks to be decimals or not\n * @return array of ticks\n */\nfunction getTickValuesFixedDomainFn(_ref3, tickCount) {\n var [min, max] = _ref3;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var [cormin, cormax] = getValidInterval([min, max]);\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n if (cormin === cormax) {\n return [cormin];\n }\n var count = Math.max(tickCount, 2);\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var values = [...rangeStep(new Decimal(cormin), new Decimal(cormax), step), cormax];\n if (allowDecimals === false) {\n /*\n * allowDecimals is false means that we want to have integer ticks.\n * The step is guaranteed to be an integer in the code above which is great start\n * but when the first step is not an integer, it will start stepping from a decimal value anyway.\n * So we need to round all the values to integers after the fact.\n */\n values = values.map(value => Math.round(value));\n }\n return min > max ? reverse(values) : values;\n}\nexport var getNiceTickValues = memoize(getNiceTickValuesFn);\nexport var getTickValuesFixedDomain = memoize(getTickValuesFixedDomainFn);","export var selectRootMaxBarSize = state => state.rootProps.maxBarSize;\nexport var selectBarGap = state => state.rootProps.barGap;\nexport var selectBarCategoryGap = state => state.rootProps.barCategoryGap;\nexport var selectRootBarSize = state => state.rootProps.barSize;\nexport var selectStackOffsetType = state => state.rootProps.stackOffset;\nexport var selectChartName = state => state.options.chartName;\nexport var selectSyncId = state => state.rootProps.syncId;\nexport var selectSyncMethod = state => state.rootProps.syncMethod;\nexport var selectEventEmitter = state => state.options.eventEmitter;","export var defaultPolarAngleAxisProps = {\n allowDuplicatedCategory: true,\n // if I set this to false then Tooltip synchronisation stops working in Radar, wtf\n angleAxisId: 0,\n axisLine: true,\n cx: 0,\n cy: 0,\n orientation: 'outer',\n reversed: false,\n scale: 'auto',\n tick: true,\n tickLine: true,\n tickSize: 8,\n type: 'category'\n};","export var defaultPolarRadiusAxisProps = {\n allowDataOverflow: false,\n allowDuplicatedCategory: true,\n angle: 0,\n axisLine: true,\n cx: 0,\n cy: 0,\n orientation: 'right',\n radiusAxisId: 0,\n scale: 'auto',\n stroke: '#ccc',\n tick: true,\n tickCount: 5,\n type: 'number'\n};","export var combineAxisRangeWithReverse = (axisSettings, axisRange) => {\n if (!axisSettings || !axisRange) {\n return undefined;\n }\n if (axisSettings !== null && axisSettings !== void 0 && axisSettings.reversed) {\n return [axisRange[1], axisRange[0]];\n }\n return axisRange;\n};","import { createSelector } from 'reselect';\nimport { selectChartHeight, selectChartWidth } from './containerSelectors';\nimport { selectChartOffsetInternal } from './selectChartOffsetInternal';\nimport { getMaxRadius } from '../../util/PolarUtils';\nimport { getPercentValue } from '../../util/DataUtils';\nimport { defaultPolarAngleAxisProps } from '../../polar/defaultPolarAngleAxisProps';\nimport { defaultPolarRadiusAxisProps } from '../../polar/defaultPolarRadiusAxisProps';\nimport { combineAxisRangeWithReverse } from './combiners/combineAxisRangeWithReverse';\nimport { selectChartLayout } from '../../context/chartLayoutContext';\nexport var implicitAngleAxis = {\n allowDataOverflow: false,\n allowDecimals: false,\n allowDuplicatedCategory: false,\n // defaultPolarAngleAxisProps.allowDuplicatedCategory has it set to true but the actual axis rendering ignores the prop because reasons,\n dataKey: undefined,\n domain: undefined,\n id: defaultPolarAngleAxisProps.angleAxisId,\n includeHidden: false,\n name: undefined,\n reversed: defaultPolarAngleAxisProps.reversed,\n scale: defaultPolarAngleAxisProps.scale,\n tick: defaultPolarAngleAxisProps.tick,\n tickCount: undefined,\n ticks: undefined,\n type: defaultPolarAngleAxisProps.type,\n unit: undefined\n};\nexport var implicitRadiusAxis = {\n allowDataOverflow: defaultPolarRadiusAxisProps.allowDataOverflow,\n allowDecimals: false,\n allowDuplicatedCategory: defaultPolarRadiusAxisProps.allowDuplicatedCategory,\n dataKey: undefined,\n domain: undefined,\n id: defaultPolarRadiusAxisProps.radiusAxisId,\n includeHidden: false,\n name: undefined,\n reversed: false,\n scale: defaultPolarRadiusAxisProps.scale,\n tick: defaultPolarRadiusAxisProps.tick,\n tickCount: defaultPolarRadiusAxisProps.tickCount,\n ticks: undefined,\n type: defaultPolarRadiusAxisProps.type,\n unit: undefined\n};\nexport var implicitRadialBarAngleAxis = {\n allowDataOverflow: false,\n allowDecimals: false,\n allowDuplicatedCategory: defaultPolarAngleAxisProps.allowDuplicatedCategory,\n dataKey: undefined,\n domain: undefined,\n id: defaultPolarAngleAxisProps.angleAxisId,\n includeHidden: false,\n name: undefined,\n reversed: false,\n scale: defaultPolarAngleAxisProps.scale,\n tick: defaultPolarAngleAxisProps.tick,\n tickCount: undefined,\n ticks: undefined,\n type: 'number',\n unit: undefined\n};\nexport var implicitRadialBarRadiusAxis = {\n allowDataOverflow: defaultPolarRadiusAxisProps.allowDataOverflow,\n allowDecimals: false,\n allowDuplicatedCategory: defaultPolarRadiusAxisProps.allowDuplicatedCategory,\n dataKey: undefined,\n domain: undefined,\n id: defaultPolarRadiusAxisProps.radiusAxisId,\n includeHidden: false,\n name: undefined,\n reversed: false,\n scale: defaultPolarRadiusAxisProps.scale,\n tick: defaultPolarRadiusAxisProps.tick,\n tickCount: defaultPolarRadiusAxisProps.tickCount,\n ticks: undefined,\n type: 'category',\n unit: undefined\n};\nexport var selectAngleAxis = (state, angleAxisId) => {\n if (state.polarAxis.angleAxis[angleAxisId] != null) {\n return state.polarAxis.angleAxis[angleAxisId];\n }\n if (state.layout.layoutType === 'radial') {\n return implicitRadialBarAngleAxis;\n }\n return implicitAngleAxis;\n};\nexport var selectRadiusAxis = (state, radiusAxisId) => {\n if (state.polarAxis.radiusAxis[radiusAxisId] != null) {\n return state.polarAxis.radiusAxis[radiusAxisId];\n }\n if (state.layout.layoutType === 'radial') {\n return implicitRadialBarRadiusAxis;\n }\n return implicitRadiusAxis;\n};\nexport var selectPolarOptions = state => state.polarOptions;\nexport var selectMaxRadius = createSelector([selectChartWidth, selectChartHeight, selectChartOffsetInternal], getMaxRadius);\nvar selectInnerRadius = createSelector([selectPolarOptions, selectMaxRadius], (polarChartOptions, maxRadius) => {\n if (polarChartOptions == null) {\n return undefined;\n }\n return getPercentValue(polarChartOptions.innerRadius, maxRadius, 0);\n});\nexport var selectOuterRadius = createSelector([selectPolarOptions, selectMaxRadius], (polarChartOptions, maxRadius) => {\n if (polarChartOptions == null) {\n return undefined;\n }\n return getPercentValue(polarChartOptions.outerRadius, maxRadius, maxRadius * 0.8);\n});\nvar combineAngleAxisRange = polarOptions => {\n if (polarOptions == null) {\n return [0, 0];\n }\n var {\n startAngle,\n endAngle\n } = polarOptions;\n return [startAngle, endAngle];\n};\nexport var selectAngleAxisRange = createSelector([selectPolarOptions], combineAngleAxisRange);\nexport var selectAngleAxisRangeWithReversed = createSelector([selectAngleAxis, selectAngleAxisRange], combineAxisRangeWithReverse);\nexport var selectRadiusAxisRange = createSelector([selectMaxRadius, selectInnerRadius, selectOuterRadius], (maxRadius, innerRadius, outerRadius) => {\n if (maxRadius == null || innerRadius == null || outerRadius == null) {\n return undefined;\n }\n return [innerRadius, outerRadius];\n});\nexport var selectRadiusAxisRangeWithReversed = createSelector([selectRadiusAxis, selectRadiusAxisRange], combineAxisRangeWithReverse);\nexport var selectPolarViewBox = createSelector([selectChartLayout, selectPolarOptions, selectInnerRadius, selectOuterRadius, selectChartWidth, selectChartHeight], (layout, polarOptions, innerRadius, outerRadius, width, height) => {\n if (layout !== 'centric' && layout !== 'radial' || polarOptions == null || innerRadius == null || outerRadius == null) {\n return undefined;\n }\n var {\n cx,\n cy,\n startAngle,\n endAngle\n } = polarOptions;\n return {\n cx: getPercentValue(cx, width, width / 2),\n cy: getPercentValue(cy, height, height / 2),\n innerRadius,\n outerRadius,\n startAngle,\n endAngle,\n clockWise: false\n };\n});","export var pickAxisType = (_state, axisType) => axisType;","export var pickAxisId = (_state, _axisType, axisId) => axisId;","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { createSelector } from 'reselect';\nimport range from 'es-toolkit/compat/range';\nimport * as d3Scales from 'victory-vendor/d3-scale';\nimport { selectChartLayout } from '../../context/chartLayoutContext';\nimport { checkDomainOfScale, getDomainOfStackGroups, getStackedData, getValueByDataKey, isCategoricalAxis } from '../../util/ChartUtils';\nimport { selectChartDataWithIndexes, selectChartDataWithIndexesIfNotInPanorama } from './dataSelectors';\nimport { isWellFormedNumberDomain, numericalDomainSpecifiedWithoutRequiringData, parseNumericalUserDomain } from '../../util/isDomainSpecifiedByUser';\nimport { getPercentValue, hasDuplicate, isNan, isNumber, isNumOrStr, mathSign, upperFirst } from '../../util/DataUtils';\nimport { isWellBehavedNumber } from '../../util/isWellBehavedNumber';\nimport { getNiceTickValues, getTickValuesFixedDomain } from '../../util/scale';\nimport { selectChartHeight, selectChartWidth } from './containerSelectors';\nimport { selectAllXAxes, selectAllYAxes } from './selectAllAxes';\nimport { selectChartOffsetInternal } from './selectChartOffsetInternal';\nimport { selectBrushDimensions, selectBrushSettings } from './brushSelectors';\nimport { selectBarCategoryGap, selectChartName, selectStackOffsetType } from './rootPropsSelectors';\nimport { selectAngleAxis, selectAngleAxisRange, selectRadiusAxis, selectRadiusAxisRange } from './polarAxisSelectors';\nimport { pickAxisType } from './pickAxisType';\nimport { pickAxisId } from './pickAxisId';\nimport { combineAxisRangeWithReverse } from './combiners/combineAxisRangeWithReverse';\nimport { DEFAULT_Y_AXIS_WIDTH } from '../../util/Constants';\nvar defaultNumericDomain = [0, 'auto'];\n\n/**\n * angle, radius, X, Y, and Z axes all have domain and range and scale and associated settings\n */\n\n/**\n * X and Y axes have ticks. Z axis is never displayed and so it lacks ticks\n * and tick settings.\n */\n\n/**\n * If an axis is not explicitly defined as an element,\n * we still need to render something in the chart and we need\n * some object to hold the domain and default settings.\n */\nexport var implicitXAxis = {\n allowDataOverflow: false,\n allowDecimals: true,\n allowDuplicatedCategory: true,\n angle: 0,\n dataKey: undefined,\n domain: undefined,\n height: 30,\n hide: true,\n id: 0,\n includeHidden: false,\n interval: 'preserveEnd',\n minTickGap: 5,\n mirror: false,\n name: undefined,\n orientation: 'bottom',\n padding: {\n left: 0,\n right: 0\n },\n reversed: false,\n scale: 'auto',\n tick: true,\n tickCount: 5,\n tickFormatter: undefined,\n ticks: undefined,\n type: 'category',\n unit: undefined\n};\nexport var selectXAxisSettings = (state, axisId) => {\n var axis = state.cartesianAxis.xAxis[axisId];\n if (axis == null) {\n return implicitXAxis;\n }\n return axis;\n};\n\n/**\n * If an axis is not explicitly defined as an element,\n * we still need to render something in the chart and we need\n * some object to hold the domain and default settings.\n */\nexport var implicitYAxis = {\n allowDataOverflow: false,\n allowDecimals: true,\n allowDuplicatedCategory: true,\n angle: 0,\n dataKey: undefined,\n domain: defaultNumericDomain,\n hide: true,\n id: 0,\n includeHidden: false,\n interval: 'preserveEnd',\n minTickGap: 5,\n mirror: false,\n name: undefined,\n orientation: 'left',\n padding: {\n top: 0,\n bottom: 0\n },\n reversed: false,\n scale: 'auto',\n tick: true,\n tickCount: 5,\n tickFormatter: undefined,\n ticks: undefined,\n type: 'number',\n unit: undefined,\n width: DEFAULT_Y_AXIS_WIDTH\n};\nexport var selectYAxisSettings = (state, axisId) => {\n var axis = state.cartesianAxis.yAxis[axisId];\n if (axis == null) {\n return implicitYAxis;\n }\n return axis;\n};\nexport var implicitZAxis = {\n domain: [0, 'auto'],\n includeHidden: false,\n reversed: false,\n allowDataOverflow: false,\n allowDuplicatedCategory: false,\n dataKey: undefined,\n id: 0,\n name: '',\n range: [64, 64],\n scale: 'auto',\n type: 'number',\n unit: ''\n};\nexport var selectZAxisSettings = (state, axisId) => {\n var axis = state.cartesianAxis.zAxis[axisId];\n if (axis == null) {\n return implicitZAxis;\n }\n return axis;\n};\nexport var selectBaseAxis = (state, axisType, axisId) => {\n switch (axisType) {\n case 'xAxis':\n {\n return selectXAxisSettings(state, axisId);\n }\n case 'yAxis':\n {\n return selectYAxisSettings(state, axisId);\n }\n case 'zAxis':\n {\n return selectZAxisSettings(state, axisId);\n }\n case 'angleAxis':\n {\n return selectAngleAxis(state, axisId);\n }\n case 'radiusAxis':\n {\n return selectRadiusAxis(state, axisId);\n }\n default:\n throw new Error(\"Unexpected axis type: \".concat(axisType));\n }\n};\nvar selectCartesianAxisSettings = (state, axisType, axisId) => {\n switch (axisType) {\n case 'xAxis':\n {\n return selectXAxisSettings(state, axisId);\n }\n case 'yAxis':\n {\n return selectYAxisSettings(state, axisId);\n }\n default:\n throw new Error(\"Unexpected axis type: \".concat(axisType));\n }\n};\n\n/**\n * Selects either an X or Y axis. Doesn't work with Z axis - for that, instead use selectBaseAxis.\n * @param state Root state\n * @param axisType xAxis | yAxis\n * @param axisId xAxisId | yAxisId\n * @returns axis settings object\n */\nexport var selectAxisSettings = (state, axisType, axisId) => {\n switch (axisType) {\n case 'xAxis':\n {\n return selectXAxisSettings(state, axisId);\n }\n case 'yAxis':\n {\n return selectYAxisSettings(state, axisId);\n }\n case 'angleAxis':\n {\n return selectAngleAxis(state, axisId);\n }\n case 'radiusAxis':\n {\n return selectRadiusAxis(state, axisId);\n }\n default:\n throw new Error(\"Unexpected axis type: \".concat(axisType));\n }\n};\n\n/**\n * @param state RechartsRootState\n * @return boolean true if there is at least one Bar or RadialBar\n */\nexport var selectHasBar = state => state.graphicalItems.countOfBars > 0;\n\n/**\n * Filters CartesianGraphicalItemSettings by the relevant axis ID\n * @param axisType 'xAxis' | 'yAxis' | 'zAxis' | 'radiusAxis' | 'angleAxis'\n * @param axisId from props, defaults to 0\n *\n * @returns Predicate function that return true for CartesianGraphicalItemSettings that are relevant to the specified axis\n */\nexport function itemAxisPredicate(axisType, axisId) {\n return item => {\n switch (axisType) {\n case 'xAxis':\n // This is sensitive to the data type, as 0 !== '0'. I wonder if we should be more flexible. How does 2.x branch behave? TODO write test for that\n return 'xAxisId' in item && item.xAxisId === axisId;\n case 'yAxis':\n return 'yAxisId' in item && item.yAxisId === axisId;\n case 'zAxis':\n return 'zAxisId' in item && item.zAxisId === axisId;\n case 'angleAxis':\n return 'angleAxisId' in item && item.angleAxisId === axisId;\n case 'radiusAxis':\n return 'radiusAxisId' in item && item.radiusAxisId === axisId;\n default:\n return false;\n }\n };\n}\nexport var selectUnfilteredCartesianItems = state => state.graphicalItems.cartesianItems;\nvar selectAxisPredicate = createSelector([pickAxisType, pickAxisId], itemAxisPredicate);\nexport var combineGraphicalItemsSettings = (graphicalItems, axisSettings, axisPredicate) => graphicalItems.filter(axisPredicate).filter(item => {\n if ((axisSettings === null || axisSettings === void 0 ? void 0 : axisSettings.includeHidden) === true) {\n return true;\n }\n return !item.hide;\n});\nexport var selectCartesianItemsSettings = createSelector([selectUnfilteredCartesianItems, selectBaseAxis, selectAxisPredicate], combineGraphicalItemsSettings);\nexport var filterGraphicalNotStackedItems = cartesianItems => cartesianItems.filter(item => item.stackId === undefined);\nvar selectCartesianItemsSettingsExceptStacked = createSelector([selectCartesianItemsSettings], filterGraphicalNotStackedItems);\nexport var combineGraphicalItemsData = cartesianItems => cartesianItems.map(item => item.data).filter(Boolean).flat(1);\n\n/**\n * This is a \"cheap\" selector - it returns the data but doesn't iterate them, so it is not sensitive on the array length.\n * Also does not apply dataKey yet.\n * @param state RechartsRootState\n * @returns data defined on the chart graphical items, such as Line or Scatter or Pie, and filtered with appropriate dataKey\n */\nexport var selectCartesianGraphicalItemsData = createSelector([selectCartesianItemsSettings], combineGraphicalItemsData);\nexport var combineDisplayedData = (graphicalItemsData, _ref) => {\n var {\n chartData = [],\n dataStartIndex,\n dataEndIndex\n } = _ref;\n if (graphicalItemsData.length > 0) {\n /*\n * There is no slicing when data is defined on graphical items. Why?\n * Because Brush ignores data defined on graphical items,\n * and does not render.\n * So Brush will never show up in a Scatter chart for example.\n * This is something we will need to fix.\n *\n * Now, when the root chart data is not defined, the dataEndIndex is 0,\n * which means the itemsData will be sliced to an empty array anyway.\n * But that's an implementation detail, and we can fix that too.\n *\n * Also, in absence of Axis dataKey, we use the dataKey from each item, respectively.\n * This is the usual pattern for numerical axis, that is the one where bars go up:\n * users don't specify any dataKey by default and expect the axis to \"just match the data\".\n */\n return graphicalItemsData;\n }\n return chartData.slice(dataStartIndex, dataEndIndex + 1);\n};\n\n/**\n * This selector will return all data there is in the chart: graphical items, chart root, all together.\n * Useful for figuring out an axis domain (because that needs to know of everything),\n * not useful for rendering individual graphical elements (because they need to know which data is theirs and which is not).\n *\n * This function will discard the original indexes, so it is also not useful for anything that depends on ordering.\n */\nexport var selectDisplayedData = createSelector([selectCartesianGraphicalItemsData, selectChartDataWithIndexesIfNotInPanorama], combineDisplayedData);\nexport var combineAppliedValues = (data, axisSettings, items) => {\n if ((axisSettings === null || axisSettings === void 0 ? void 0 : axisSettings.dataKey) != null) {\n return data.map(item => ({\n value: getValueByDataKey(item, axisSettings.dataKey)\n }));\n }\n if (items.length > 0) {\n return items.map(item => item.dataKey).flatMap(dataKey => data.map(entry => ({\n value: getValueByDataKey(entry, dataKey)\n })));\n }\n return data.map(entry => ({\n value: entry\n }));\n};\n\n/**\n * This selector will return all values with the appropriate dataKey applied on them.\n * Which dataKey is appropriate depends on where it is defined.\n *\n * This is an expensive selector - it will iterate all data and compute their value using the provided dataKey.\n */\nexport var selectAllAppliedValues = createSelector([selectDisplayedData, selectBaseAxis, selectCartesianItemsSettings], combineAppliedValues);\nexport function isErrorBarRelevantForAxisType(axisType, errorBar) {\n switch (axisType) {\n case 'xAxis':\n return errorBar.direction === 'x';\n case 'yAxis':\n return errorBar.direction === 'y';\n default:\n return false;\n }\n}\n\n/**\n * This is type of \"error\" in chart. It is set by using ErrorBar, and it can represent confidence interval,\n * or gap in the data, or standard deviation, or quartiles in boxplot, or whiskers or whatever.\n *\n * We will internally represent it as a tuple of two numbers, where the first number is the lower bound and the second number is the upper bound.\n *\n * It is also true that the first number should be lower than or equal to the associated \"main value\",\n * and the second number should be higher than or equal to the associated \"main value\".\n */\n\nexport function fromMainValueToError(value) {\n if (isNumber(value) && Number.isFinite(value)) {\n return [value, value];\n }\n if (Array.isArray(value)) {\n var minError = Math.min(...value);\n var maxError = Math.max(...value);\n if (!isNan(minError) && !isNan(maxError) && Number.isFinite(minError) && Number.isFinite(maxError)) {\n return [minError, maxError];\n }\n }\n return undefined;\n}\nfunction onlyAllowNumbers(data) {\n return data.filter(v => isNumOrStr(v) || v instanceof Date).map(Number).filter(n => isNan(n) === false);\n}\n\n/**\n * @param entry One item in the 'data' array. Could be anything really - this is defined externally. This is the raw, before dataKey application\n * @param appliedValue This is the result of applying the 'main' dataKey on the `entry`.\n * @param relevantErrorBars Error bars that are relevant for the current axis and layout and all that.\n * @return either undefined or an array of ErrorValue\n */\nexport function getErrorDomainByDataKey(entry, appliedValue, relevantErrorBars) {\n if (!relevantErrorBars || typeof appliedValue !== 'number' || isNan(appliedValue)) {\n return [];\n }\n if (!relevantErrorBars.length) {\n return [];\n }\n return onlyAllowNumbers(relevantErrorBars.flatMap(eb => {\n var errorValue = getValueByDataKey(entry, eb.dataKey);\n var lowBound, highBound;\n if (Array.isArray(errorValue)) {\n [lowBound, highBound] = errorValue;\n } else {\n lowBound = highBound = errorValue;\n }\n if (!isWellBehavedNumber(lowBound) || !isWellBehavedNumber(highBound)) {\n return undefined;\n }\n return [appliedValue - lowBound, appliedValue + highBound];\n }));\n}\nexport var combineStackGroups = (displayedData, items, stackOffsetType) => {\n var initialItemsGroups = {};\n var itemsGroup = items.reduce((acc, item) => {\n if (item.stackId == null) {\n return acc;\n }\n if (acc[item.stackId] == null) {\n acc[item.stackId] = [];\n }\n acc[item.stackId].push(item);\n return acc;\n }, initialItemsGroups);\n return Object.fromEntries(Object.entries(itemsGroup).map(_ref2 => {\n var [stackId, graphicalItems] = _ref2;\n var dataKeys = graphicalItems.map(i => i.dataKey);\n return [stackId, {\n // @ts-expect-error getStackedData requires that the input is array of objects, Recharts does not test for that\n stackedData: getStackedData(displayedData, dataKeys, stackOffsetType),\n graphicalItems\n }];\n }));\n};\n/**\n * Stack groups are groups of graphical items that stack on each other.\n * Stack is a function of axis type (X, Y), axis ID, and stack ID.\n * Graphical items that do not have a stack ID are not going to be present in stack groups.\n */\nexport var selectStackGroups = createSelector([selectDisplayedData, selectCartesianItemsSettings, selectStackOffsetType], combineStackGroups);\nexport var combineDomainOfStackGroups = (stackGroups, _ref3, axisType) => {\n var {\n dataStartIndex,\n dataEndIndex\n } = _ref3;\n if (axisType === 'zAxis') {\n // ZAxis ignores stacks\n return undefined;\n }\n var domainOfStackGroups = getDomainOfStackGroups(stackGroups, dataStartIndex, dataEndIndex);\n if (domainOfStackGroups != null && domainOfStackGroups[0] === 0 && domainOfStackGroups[1] === 0) {\n return undefined;\n }\n return domainOfStackGroups;\n};\nexport var selectDomainOfStackGroups = createSelector([selectStackGroups, selectChartDataWithIndexes, pickAxisType], combineDomainOfStackGroups);\nexport var combineAppliedNumericalValuesIncludingErrorValues = (data, axisSettings, items, axisType) => {\n if (items.length > 0) {\n return data.flatMap(entry => {\n return items.flatMap(item => {\n var _item$errorBars, _axisSettings$dataKey;\n var relevantErrorBars = (_item$errorBars = item.errorBars) === null || _item$errorBars === void 0 ? void 0 : _item$errorBars.filter(errorBar => isErrorBarRelevantForAxisType(axisType, errorBar));\n var valueByDataKey = getValueByDataKey(entry, (_axisSettings$dataKey = axisSettings.dataKey) !== null && _axisSettings$dataKey !== void 0 ? _axisSettings$dataKey : item.dataKey);\n return {\n value: valueByDataKey,\n errorDomain: getErrorDomainByDataKey(entry, valueByDataKey, relevantErrorBars)\n };\n });\n }).filter(Boolean);\n }\n if ((axisSettings === null || axisSettings === void 0 ? void 0 : axisSettings.dataKey) != null) {\n return data.map(item => ({\n value: getValueByDataKey(item, axisSettings.dataKey),\n errorDomain: []\n }));\n }\n return data.map(entry => ({\n value: entry,\n errorDomain: []\n }));\n};\nexport var selectAllAppliedNumericalValuesIncludingErrorValues = createSelector(selectDisplayedData, selectBaseAxis, selectCartesianItemsSettingsExceptStacked, pickAxisType, combineAppliedNumericalValuesIncludingErrorValues);\nfunction onlyAllowNumbersAndStringsAndDates(item) {\n var {\n value\n } = item;\n if (isNumOrStr(value) || value instanceof Date) {\n return value;\n }\n return undefined;\n}\nvar computeNumericalDomain = dataWithErrorDomains => {\n var allDataSquished = dataWithErrorDomains\n // This flatMap has to be flat because we're creating a new array in the return value\n .flatMap(d => [d.value, d.errorDomain])\n // This flat is needed because a) errorDomain is an array, and b) value may be a number, or it may be a range (for Area, for example)\n .flat(1);\n var onlyNumbers = onlyAllowNumbers(allDataSquished);\n if (onlyNumbers.length === 0) {\n return undefined;\n }\n return [Math.min(...onlyNumbers), Math.max(...onlyNumbers)];\n};\nvar computeDomainOfTypeCategory = (allDataSquished, axisSettings, isCategorical) => {\n var categoricalDomain = allDataSquished.map(onlyAllowNumbersAndStringsAndDates).filter(v => v != null);\n if (isCategorical && (axisSettings.dataKey == null || axisSettings.allowDuplicatedCategory && hasDuplicate(categoricalDomain))) {\n /*\n * 1. In an absence of dataKey, Recharts will use array indexes as its categorical domain\n * 2. When category axis has duplicated text, serial numbers are used to generate scale\n */\n return range(0, allDataSquished.length);\n }\n if (axisSettings.allowDuplicatedCategory) {\n return categoricalDomain;\n }\n return Array.from(new Set(categoricalDomain));\n};\nexport var getDomainDefinition = axisSettings => {\n var _axisSettings$domain;\n if (axisSettings == null || !('domain' in axisSettings)) {\n return defaultNumericDomain;\n }\n if (axisSettings.domain != null) {\n return axisSettings.domain;\n }\n if (axisSettings.ticks != null) {\n if (axisSettings.type === 'number') {\n var allValues = onlyAllowNumbers(axisSettings.ticks);\n return [Math.min(...allValues), Math.max(...allValues)];\n }\n if (axisSettings.type === 'category') {\n return axisSettings.ticks.map(String);\n }\n }\n return (_axisSettings$domain = axisSettings === null || axisSettings === void 0 ? void 0 : axisSettings.domain) !== null && _axisSettings$domain !== void 0 ? _axisSettings$domain : defaultNumericDomain;\n};\nexport var mergeDomains = function mergeDomains() {\n for (var _len = arguments.length, domains = new Array(_len), _key = 0; _key < _len; _key++) {\n domains[_key] = arguments[_key];\n }\n var allDomains = domains.filter(Boolean);\n if (allDomains.length === 0) {\n return undefined;\n }\n var allValues = allDomains.flat();\n var min = Math.min(...allValues);\n var max = Math.max(...allValues);\n return [min, max];\n};\nexport var selectReferenceDots = state => state.referenceElements.dots;\nexport var filterReferenceElements = (elements, axisType, axisId) => {\n return elements.filter(el => el.ifOverflow === 'extendDomain').filter(el => {\n if (axisType === 'xAxis') {\n return el.xAxisId === axisId;\n }\n return el.yAxisId === axisId;\n });\n};\nexport var selectReferenceDotsByAxis = createSelector([selectReferenceDots, pickAxisType, pickAxisId], filterReferenceElements);\nexport var selectReferenceAreas = state => state.referenceElements.areas;\nexport var selectReferenceAreasByAxis = createSelector([selectReferenceAreas, pickAxisType, pickAxisId], filterReferenceElements);\nexport var selectReferenceLines = state => state.referenceElements.lines;\nexport var selectReferenceLinesByAxis = createSelector([selectReferenceLines, pickAxisType, pickAxisId], filterReferenceElements);\nexport var combineDotsDomain = (dots, axisType) => {\n var allCoords = onlyAllowNumbers(dots.map(dot => axisType === 'xAxis' ? dot.x : dot.y));\n if (allCoords.length === 0) {\n return undefined;\n }\n return [Math.min(...allCoords), Math.max(...allCoords)];\n};\nvar selectReferenceDotsDomain = createSelector(selectReferenceDotsByAxis, pickAxisType, combineDotsDomain);\nexport var combineAreasDomain = (areas, axisType) => {\n var allCoords = onlyAllowNumbers(areas.flatMap(area => [axisType === 'xAxis' ? area.x1 : area.y1, axisType === 'xAxis' ? area.x2 : area.y2]));\n if (allCoords.length === 0) {\n return undefined;\n }\n return [Math.min(...allCoords), Math.max(...allCoords)];\n};\nvar selectReferenceAreasDomain = createSelector([selectReferenceAreasByAxis, pickAxisType], combineAreasDomain);\nexport var combineLinesDomain = (lines, axisType) => {\n var allCoords = onlyAllowNumbers(lines.map(line => axisType === 'xAxis' ? line.x : line.y));\n if (allCoords.length === 0) {\n return undefined;\n }\n return [Math.min(...allCoords), Math.max(...allCoords)];\n};\nvar selectReferenceLinesDomain = createSelector(selectReferenceLinesByAxis, pickAxisType, combineLinesDomain);\nvar selectReferenceElementsDomain = createSelector(selectReferenceDotsDomain, selectReferenceLinesDomain, selectReferenceAreasDomain, (dotsDomain, linesDomain, areasDomain) => {\n return mergeDomains(dotsDomain, areasDomain, linesDomain);\n});\nexport var selectDomainDefinition = createSelector([selectBaseAxis], getDomainDefinition);\nexport var combineNumericalDomain = (axisSettings, domainDefinition, domainOfStackGroups, allDataWithErrorDomains, referenceElementsDomain) => {\n var domainFromUserPreference = numericalDomainSpecifiedWithoutRequiringData(domainDefinition, axisSettings.allowDataOverflow);\n if (domainFromUserPreference != null) {\n // We're done! No need to compute anything else.\n return domainFromUserPreference;\n }\n return parseNumericalUserDomain(domainDefinition, mergeDomains(domainOfStackGroups, referenceElementsDomain, computeNumericalDomain(allDataWithErrorDomains)), axisSettings.allowDataOverflow);\n};\nvar selectNumericalDomain = createSelector([selectBaseAxis, selectDomainDefinition, selectDomainOfStackGroups, selectAllAppliedNumericalValuesIncludingErrorValues, selectReferenceElementsDomain], combineNumericalDomain);\n\n/**\n * Expand by design maps everything between 0 and 1,\n * there is nothing to compute.\n * See https://d3js.org/d3-shape/stack#stack-offsets\n */\nvar expandDomain = [0, 1];\nexport var combineAxisDomain = (axisSettings, layout, displayedData, allAppliedValues, stackOffsetType, axisType, numericalDomain) => {\n if (axisSettings == null || displayedData == null || displayedData.length === 0) {\n return undefined;\n }\n var {\n dataKey,\n type\n } = axisSettings;\n var isCategorical = isCategoricalAxis(layout, axisType);\n if (isCategorical && dataKey == null) {\n return range(0, displayedData.length);\n }\n if (type === 'category') {\n return computeDomainOfTypeCategory(allAppliedValues, axisSettings, isCategorical);\n }\n if (stackOffsetType === 'expand') {\n return expandDomain;\n }\n return numericalDomain;\n};\nexport var selectAxisDomain = createSelector([selectBaseAxis, selectChartLayout, selectDisplayedData, selectAllAppliedValues, selectStackOffsetType, pickAxisType, selectNumericalDomain], combineAxisDomain);\nexport var combineRealScaleType = (axisConfig, layout, hasBar, chartType, axisType) => {\n if (axisConfig == null) {\n return undefined;\n }\n var {\n scale,\n type\n } = axisConfig;\n if (scale === 'auto') {\n if (layout === 'radial' && axisType === 'radiusAxis') {\n return 'band';\n }\n if (layout === 'radial' && axisType === 'angleAxis') {\n return 'linear';\n }\n if (type === 'category' && chartType && (chartType.indexOf('LineChart') >= 0 || chartType.indexOf('AreaChart') >= 0 || chartType.indexOf('ComposedChart') >= 0 && !hasBar)) {\n return 'point';\n }\n if (type === 'category') {\n return 'band';\n }\n return 'linear';\n }\n if (typeof scale === 'string') {\n var name = \"scale\".concat(upperFirst(scale));\n return name in d3Scales ? name : 'point';\n }\n return undefined;\n};\nexport var selectRealScaleType = createSelector([selectBaseAxis, selectChartLayout, selectHasBar, selectChartName, pickAxisType], combineRealScaleType);\nfunction getD3ScaleFromType(realScaleType) {\n if (realScaleType == null) {\n return undefined;\n }\n if (realScaleType in d3Scales) {\n // @ts-expect-error we should do better type verification here\n return d3Scales[realScaleType]();\n }\n var name = \"scale\".concat(upperFirst(realScaleType));\n if (name in d3Scales) {\n // @ts-expect-error we should do better type verification here\n return d3Scales[name]();\n }\n return undefined;\n}\nexport function combineScaleFunction(axis, realScaleType, axisDomain, axisRange) {\n if (axisDomain == null || axisRange == null) {\n return undefined;\n }\n if (typeof axis.scale === 'function') {\n // @ts-expect-error we're going to assume here that if axis.scale is a function then it is a d3Scale function\n return axis.scale.copy().domain(axisDomain).range(axisRange);\n }\n var d3ScaleFunction = getD3ScaleFromType(realScaleType);\n if (d3ScaleFunction == null) {\n return undefined;\n }\n var scale = d3ScaleFunction.domain(axisDomain).range(axisRange);\n // I don't like this function because it mutates the scale. We should come up with a way to compute the domain up front.\n checkDomainOfScale(scale);\n return scale;\n}\nexport var combineNiceTicks = (axisDomain, axisSettings, realScaleType) => {\n var domainDefinition = getDomainDefinition(axisSettings);\n if (realScaleType !== 'auto' && realScaleType !== 'linear') {\n return undefined;\n }\n if (axisSettings != null && axisSettings.tickCount && Array.isArray(domainDefinition) && (domainDefinition[0] === 'auto' || domainDefinition[1] === 'auto') && isWellFormedNumberDomain(axisDomain)) {\n return getNiceTickValues(axisDomain, axisSettings.tickCount, axisSettings.allowDecimals);\n }\n if (axisSettings != null && axisSettings.tickCount && axisSettings.type === 'number' && isWellFormedNumberDomain(axisDomain)) {\n return getTickValuesFixedDomain(axisDomain, axisSettings.tickCount, axisSettings.allowDecimals);\n }\n return undefined;\n};\nexport var selectNiceTicks = createSelector([selectAxisDomain, selectAxisSettings, selectRealScaleType], combineNiceTicks);\nexport var combineAxisDomainWithNiceTicks = (axisSettings, domain, niceTicks, axisType) => {\n if (\n /*\n * Angle axis for some reason uses nice ticks when rendering axis tick labels,\n * but doesn't use nice ticks for extending domain like all the other axes do.\n * Not really sure why? Is there a good reason,\n * or is it just because someone added support for nice ticks to the other axes and forgot this one?\n */\n axisType !== 'angleAxis' && (axisSettings === null || axisSettings === void 0 ? void 0 : axisSettings.type) === 'number' && isWellFormedNumberDomain(domain) && Array.isArray(niceTicks) && niceTicks.length > 0) {\n var minFromDomain = domain[0];\n var minFromTicks = niceTicks[0];\n var maxFromDomain = domain[1];\n var maxFromTicks = niceTicks[niceTicks.length - 1];\n return [Math.min(minFromDomain, minFromTicks), Math.max(maxFromDomain, maxFromTicks)];\n }\n return domain;\n};\nexport var selectAxisDomainIncludingNiceTicks = createSelector([selectBaseAxis, selectAxisDomain, selectNiceTicks, pickAxisType], combineAxisDomainWithNiceTicks);\n\n/**\n * Returns the smallest gap, between two numbers in the data, as a ratio of the whole range (max - min).\n * Ignores domain provided by user and only considers domain from data.\n *\n * The result is a number between 0 and 1.\n */\nexport var selectSmallestDistanceBetweenValues = createSelector(selectAllAppliedValues, selectBaseAxis, (allDataSquished, axisSettings) => {\n if (!axisSettings || axisSettings.type !== 'number') {\n return undefined;\n }\n var smallestDistanceBetweenValues = Infinity;\n var sortedValues = Array.from(onlyAllowNumbers(allDataSquished.map(d => d.value))).sort((a, b) => a - b);\n if (sortedValues.length < 2) {\n return Infinity;\n }\n var diff = sortedValues[sortedValues.length - 1] - sortedValues[0];\n if (diff === 0) {\n return Infinity;\n }\n // Only do n - 1 distance calculations because there's only n - 1 distances between n values.\n for (var i = 0; i < sortedValues.length - 1; i++) {\n var distance = sortedValues[i + 1] - sortedValues[i];\n smallestDistanceBetweenValues = Math.min(smallestDistanceBetweenValues, distance);\n }\n return smallestDistanceBetweenValues / diff;\n});\nvar selectCalculatedPadding = createSelector(selectSmallestDistanceBetweenValues, selectChartLayout, selectBarCategoryGap, selectChartOffsetInternal, (_1, _2, _3, padding) => padding, (smallestDistanceInPercent, layout, barCategoryGap, offset, padding) => {\n if (!isWellBehavedNumber(smallestDistanceInPercent)) {\n return 0;\n }\n var rangeWidth = layout === 'vertical' ? offset.height : offset.width;\n if (padding === 'gap') {\n return smallestDistanceInPercent * rangeWidth / 2;\n }\n if (padding === 'no-gap') {\n var gap = getPercentValue(barCategoryGap, smallestDistanceInPercent * rangeWidth);\n var halfBand = smallestDistanceInPercent * rangeWidth / 2;\n return halfBand - gap - (halfBand - gap) / rangeWidth * gap;\n }\n return 0;\n});\nexport var selectCalculatedXAxisPadding = (state, axisId) => {\n var xAxisSettings = selectXAxisSettings(state, axisId);\n if (xAxisSettings == null || typeof xAxisSettings.padding !== 'string') {\n return 0;\n }\n return selectCalculatedPadding(state, 'xAxis', axisId, xAxisSettings.padding);\n};\nexport var selectCalculatedYAxisPadding = (state, axisId) => {\n var yAxisSettings = selectYAxisSettings(state, axisId);\n if (yAxisSettings == null || typeof yAxisSettings.padding !== 'string') {\n return 0;\n }\n return selectCalculatedPadding(state, 'yAxis', axisId, yAxisSettings.padding);\n};\nvar selectXAxisPadding = createSelector(selectXAxisSettings, selectCalculatedXAxisPadding, (xAxisSettings, calculated) => {\n var _padding$left, _padding$right;\n if (xAxisSettings == null) {\n return {\n left: 0,\n right: 0\n };\n }\n var {\n padding\n } = xAxisSettings;\n if (typeof padding === 'string') {\n return {\n left: calculated,\n right: calculated\n };\n }\n return {\n left: ((_padding$left = padding.left) !== null && _padding$left !== void 0 ? _padding$left : 0) + calculated,\n right: ((_padding$right = padding.right) !== null && _padding$right !== void 0 ? _padding$right : 0) + calculated\n };\n});\nvar selectYAxisPadding = createSelector(selectYAxisSettings, selectCalculatedYAxisPadding, (yAxisSettings, calculated) => {\n var _padding$top, _padding$bottom;\n if (yAxisSettings == null) {\n return {\n top: 0,\n bottom: 0\n };\n }\n var {\n padding\n } = yAxisSettings;\n if (typeof padding === 'string') {\n return {\n top: calculated,\n bottom: calculated\n };\n }\n return {\n top: ((_padding$top = padding.top) !== null && _padding$top !== void 0 ? _padding$top : 0) + calculated,\n bottom: ((_padding$bottom = padding.bottom) !== null && _padding$bottom !== void 0 ? _padding$bottom : 0) + calculated\n };\n});\nexport var combineXAxisRange = createSelector([selectChartOffsetInternal, selectXAxisPadding, selectBrushDimensions, selectBrushSettings, (_state, _axisId, isPanorama) => isPanorama], (offset, padding, brushDimensions, _ref4, isPanorama) => {\n var {\n padding: brushPadding\n } = _ref4;\n if (isPanorama) {\n return [brushPadding.left, brushDimensions.width - brushPadding.right];\n }\n return [offset.left + padding.left, offset.left + offset.width - padding.right];\n});\nexport var combineYAxisRange = createSelector([selectChartOffsetInternal, selectChartLayout, selectYAxisPadding, selectBrushDimensions, selectBrushSettings, (_state, _axisId, isPanorama) => isPanorama], (offset, layout, padding, brushDimensions, _ref5, isPanorama) => {\n var {\n padding: brushPadding\n } = _ref5;\n if (isPanorama) {\n return [brushDimensions.height - brushPadding.bottom, brushPadding.top];\n }\n if (layout === 'horizontal') {\n return [offset.top + offset.height - padding.bottom, offset.top + padding.top];\n }\n return [offset.top + padding.top, offset.top + offset.height - padding.bottom];\n});\nexport var selectAxisRange = (state, axisType, axisId, isPanorama) => {\n var _selectZAxisSettings;\n switch (axisType) {\n case 'xAxis':\n return combineXAxisRange(state, axisId, isPanorama);\n case 'yAxis':\n return combineYAxisRange(state, axisId, isPanorama);\n case 'zAxis':\n return (_selectZAxisSettings = selectZAxisSettings(state, axisId)) === null || _selectZAxisSettings === void 0 ? void 0 : _selectZAxisSettings.range;\n case 'angleAxis':\n return selectAngleAxisRange(state);\n case 'radiusAxis':\n return selectRadiusAxisRange(state, axisId);\n default:\n return undefined;\n }\n};\nexport var selectAxisRangeWithReverse = createSelector([selectBaseAxis, selectAxisRange], combineAxisRangeWithReverse);\nexport var selectAxisScale = createSelector([selectBaseAxis, selectRealScaleType, selectAxisDomainIncludingNiceTicks, selectAxisRangeWithReverse], combineScaleFunction);\nexport var selectErrorBarsSettings = createSelector(selectCartesianItemsSettings, pickAxisType, (items, axisType) => {\n return items.flatMap(item => {\n var _item$errorBars2;\n return (_item$errorBars2 = item.errorBars) !== null && _item$errorBars2 !== void 0 ? _item$errorBars2 : [];\n }).filter(e => {\n return isErrorBarRelevantForAxisType(axisType, e);\n });\n});\nfunction compareIds(a, b) {\n if (a.id < b.id) {\n return -1;\n }\n if (a.id > b.id) {\n return 1;\n }\n return 0;\n}\nvar pickAxisOrientation = (_state, orientation) => orientation;\nvar pickMirror = (_state, _orientation, mirror) => mirror;\nvar selectAllXAxesWithOffsetType = createSelector(selectAllXAxes, pickAxisOrientation, pickMirror, (allAxes, orientation, mirror) => allAxes.filter(axis => axis.orientation === orientation).filter(axis => axis.mirror === mirror).sort(compareIds));\nvar selectAllYAxesWithOffsetType = createSelector(selectAllYAxes, pickAxisOrientation, pickMirror, (allAxes, orientation, mirror) => allAxes.filter(axis => axis.orientation === orientation).filter(axis => axis.mirror === mirror).sort(compareIds));\nvar getXAxisSize = (offset, axisSettings) => {\n return {\n width: offset.width,\n height: axisSettings.height\n };\n};\nvar getYAxisSize = (offset, axisSettings) => {\n var width = typeof axisSettings.width === 'number' ? axisSettings.width : DEFAULT_Y_AXIS_WIDTH;\n return {\n width,\n height: offset.height\n };\n};\nexport var selectXAxisSize = createSelector(selectChartOffsetInternal, selectXAxisSettings, getXAxisSize);\nvar combineXAxisPositionStartingPoint = (offset, orientation, chartHeight) => {\n switch (orientation) {\n case 'top':\n return offset.top;\n case 'bottom':\n return chartHeight - offset.bottom;\n default:\n return 0;\n }\n};\nvar combineYAxisPositionStartingPoint = (offset, orientation, chartWidth) => {\n switch (orientation) {\n case 'left':\n return offset.left;\n case 'right':\n return chartWidth - offset.right;\n default:\n return 0;\n }\n};\nexport var selectAllXAxesOffsetSteps = createSelector(selectChartHeight, selectChartOffsetInternal, selectAllXAxesWithOffsetType, pickAxisOrientation, pickMirror, (chartHeight, offset, allAxesWithSameOffsetType, orientation, mirror) => {\n var steps = {};\n var position;\n allAxesWithSameOffsetType.forEach(axis => {\n var axisSize = getXAxisSize(offset, axis);\n if (position == null) {\n position = combineXAxisPositionStartingPoint(offset, orientation, chartHeight);\n }\n var needSpace = orientation === 'top' && !mirror || orientation === 'bottom' && mirror;\n steps[axis.id] = position - Number(needSpace) * axisSize.height;\n position += (needSpace ? -1 : 1) * axisSize.height;\n });\n return steps;\n});\nexport var selectAllYAxesOffsetSteps = createSelector(selectChartWidth, selectChartOffsetInternal, selectAllYAxesWithOffsetType, pickAxisOrientation, pickMirror, (chartWidth, offset, allAxesWithSameOffsetType, orientation, mirror) => {\n var steps = {};\n var position;\n allAxesWithSameOffsetType.forEach(axis => {\n var axisSize = getYAxisSize(offset, axis);\n if (position == null) {\n position = combineYAxisPositionStartingPoint(offset, orientation, chartWidth);\n }\n var needSpace = orientation === 'left' && !mirror || orientation === 'right' && mirror;\n steps[axis.id] = position - Number(needSpace) * axisSize.width;\n position += (needSpace ? -1 : 1) * axisSize.width;\n });\n return steps;\n});\nexport var selectXAxisPosition = (state, axisId) => {\n var offset = selectChartOffsetInternal(state);\n var axisSettings = selectXAxisSettings(state, axisId);\n if (axisSettings == null) {\n return undefined;\n }\n var allSteps = selectAllXAxesOffsetSteps(state, axisSettings.orientation, axisSettings.mirror);\n var stepOfThisAxis = allSteps[axisId];\n if (stepOfThisAxis == null) {\n return {\n x: offset.left,\n y: 0\n };\n }\n return {\n x: offset.left,\n y: stepOfThisAxis\n };\n};\nexport var selectYAxisPosition = (state, axisId) => {\n var offset = selectChartOffsetInternal(state);\n var axisSettings = selectYAxisSettings(state, axisId);\n if (axisSettings == null) {\n return undefined;\n }\n var allSteps = selectAllYAxesOffsetSteps(state, axisSettings.orientation, axisSettings.mirror);\n var stepOfThisAxis = allSteps[axisId];\n if (stepOfThisAxis == null) {\n return {\n x: 0,\n y: offset.top\n };\n }\n return {\n x: stepOfThisAxis,\n y: offset.top\n };\n};\nexport var selectYAxisSize = createSelector(selectChartOffsetInternal, selectYAxisSettings, (offset, axisSettings) => {\n var width = typeof axisSettings.width === 'number' ? axisSettings.width : DEFAULT_Y_AXIS_WIDTH;\n return {\n width,\n height: offset.height\n };\n});\nexport var selectCartesianAxisSize = (state, axisType, axisId) => {\n switch (axisType) {\n case 'xAxis':\n {\n return selectXAxisSize(state, axisId).width;\n }\n case 'yAxis':\n {\n return selectYAxisSize(state, axisId).height;\n }\n default:\n {\n return undefined;\n }\n }\n};\nexport var combineDuplicateDomain = (chartLayout, appliedValues, axis, axisType) => {\n if (axis == null) {\n return undefined;\n }\n var {\n allowDuplicatedCategory,\n type,\n dataKey\n } = axis;\n var isCategorical = isCategoricalAxis(chartLayout, axisType);\n var allData = appliedValues.map(av => av.value);\n if (dataKey && isCategorical && type === 'category' && allowDuplicatedCategory && hasDuplicate(allData)) {\n return allData;\n }\n return undefined;\n};\nexport var selectDuplicateDomain = createSelector([selectChartLayout, selectAllAppliedValues, selectBaseAxis, pickAxisType], combineDuplicateDomain);\nexport var combineCategoricalDomain = (layout, appliedValues, axis, axisType) => {\n if (axis == null || axis.dataKey == null) {\n return undefined;\n }\n var {\n type,\n scale\n } = axis;\n var isCategorical = isCategoricalAxis(layout, axisType);\n if (isCategorical && (type === 'number' || scale !== 'auto')) {\n return appliedValues.map(d => d.value);\n }\n return undefined;\n};\nexport var selectCategoricalDomain = createSelector([selectChartLayout, selectAllAppliedValues, selectAxisSettings, pickAxisType], combineCategoricalDomain);\nexport var selectAxisPropsNeededForCartesianGridTicksGenerator = createSelector([selectChartLayout, selectCartesianAxisSettings, selectRealScaleType, selectAxisScale, selectDuplicateDomain, selectCategoricalDomain, selectAxisRange, selectNiceTicks, pickAxisType], (layout, axis, realScaleType, scale, duplicateDomain, categoricalDomain, axisRange, niceTicks, axisType) => {\n if (axis == null) {\n return null;\n }\n var isCategorical = isCategoricalAxis(layout, axisType);\n return {\n angle: axis.angle,\n interval: axis.interval,\n minTickGap: axis.minTickGap,\n orientation: axis.orientation,\n tick: axis.tick,\n tickCount: axis.tickCount,\n tickFormatter: axis.tickFormatter,\n ticks: axis.ticks,\n type: axis.type,\n unit: axis.unit,\n axisType,\n categoricalDomain,\n duplicateDomain,\n isCategorical,\n niceTicks,\n range: axisRange,\n realScaleType,\n scale\n };\n});\nexport var combineAxisTicks = (layout, axis, realScaleType, scale, niceTicks, axisRange, duplicateDomain, categoricalDomain, axisType) => {\n if (axis == null || scale == null) {\n return undefined;\n }\n var isCategorical = isCategoricalAxis(layout, axisType);\n var {\n type,\n ticks,\n tickCount\n } = axis;\n\n // This is testing for `scaleBand` but for band axis the type is reported as `band` so this looks like a dead code with a workaround elsewhere?\n var offsetForBand = realScaleType === 'scaleBand' && typeof scale.bandwidth === 'function' ? scale.bandwidth() / 2 : 2;\n var offset = type === 'category' && scale.bandwidth ? scale.bandwidth() / offsetForBand : 0;\n offset = axisType === 'angleAxis' && axisRange != null && axisRange.length >= 2 ? mathSign(axisRange[0] - axisRange[1]) * 2 * offset : offset;\n\n // The ticks set by user should only affect the ticks adjacent to axis line\n var ticksOrNiceTicks = ticks || niceTicks;\n if (ticksOrNiceTicks) {\n var result = ticksOrNiceTicks.map((entry, index) => {\n var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n return {\n index,\n // If the scaleContent is not a number, the coordinate will be NaN.\n // That could be the case for example with a PointScale and a string as domain.\n coordinate: scale(scaleContent) + offset,\n value: entry,\n offset\n };\n });\n return result.filter(row => !isNan(row.coordinate));\n }\n\n // When axis is a categorical axis, but the type of axis is number or the scale of axis is not \"auto\"\n if (isCategorical && categoricalDomain) {\n return categoricalDomain.map((entry, index) => ({\n coordinate: scale(entry) + offset,\n value: entry,\n index,\n offset\n }));\n }\n if (scale.ticks) {\n return scale.ticks(tickCount)\n // @ts-expect-error why does the offset go here? The type does not require it\n .map(entry => ({\n coordinate: scale(entry) + offset,\n value: entry,\n offset\n }));\n }\n\n // When axis has duplicated text, serial numbers are used to generate scale\n return scale.domain().map((entry, index) => ({\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index,\n offset\n }));\n};\nexport var selectTicksOfAxis = createSelector([selectChartLayout, selectAxisSettings, selectRealScaleType, selectAxisScale, selectNiceTicks, selectAxisRange, selectDuplicateDomain, selectCategoricalDomain, pickAxisType], combineAxisTicks);\nexport var combineGraphicalItemTicks = (layout, axis, scale, axisRange, duplicateDomain, categoricalDomain, axisType) => {\n if (axis == null || scale == null || axisRange == null || axisRange[0] === axisRange[1]) {\n return undefined;\n }\n var isCategorical = isCategoricalAxis(layout, axisType);\n var {\n tickCount\n } = axis;\n var offset = 0;\n offset = axisType === 'angleAxis' && (axisRange === null || axisRange === void 0 ? void 0 : axisRange.length) >= 2 ? mathSign(axisRange[0] - axisRange[1]) * 2 * offset : offset;\n\n // When axis is a categorical axis, but the type of axis is number or the scale of axis is not \"auto\"\n if (isCategorical && categoricalDomain) {\n return categoricalDomain.map((entry, index) => ({\n coordinate: scale(entry) + offset,\n value: entry,\n index,\n offset\n }));\n }\n if (scale.ticks) {\n return scale.ticks(tickCount)\n // @ts-expect-error why does the offset go here? The type does not require it\n .map(entry => ({\n coordinate: scale(entry) + offset,\n value: entry,\n offset\n }));\n }\n\n // When axis has duplicated text, serial numbers are used to generate scale\n return scale.domain().map((entry, index) => ({\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index,\n offset\n }));\n};\nexport var selectTicksOfGraphicalItem = createSelector([selectChartLayout, selectAxisSettings, selectAxisScale, selectAxisRange, selectDuplicateDomain, selectCategoricalDomain, pickAxisType], combineGraphicalItemTicks);\nexport var selectAxisWithScale = createSelector(selectBaseAxis, selectAxisScale, (axis, scale) => {\n if (axis == null || scale == null) {\n return undefined;\n }\n return _objectSpread(_objectSpread({}, axis), {}, {\n scale\n });\n});\nvar selectZAxisScale = createSelector([selectBaseAxis, selectRealScaleType, selectAxisDomain, selectAxisRangeWithReverse], combineScaleFunction);\nexport var selectZAxisWithScale = createSelector((state, _axisType, axisId) => selectZAxisSettings(state, axisId), selectZAxisScale, (axis, scale) => {\n if (axis == null || scale == null) {\n return undefined;\n }\n return _objectSpread(_objectSpread({}, axis), {}, {\n scale\n });\n});\n\n/**\n * We are also going to need to implement polar chart directions if we want to support keyboard controls for those.\n */\n\nexport var selectChartDirection = createSelector([selectChartLayout, selectAllXAxes, selectAllYAxes], (layout, allXAxes, allYAxes) => {\n switch (layout) {\n case 'horizontal':\n {\n return allXAxes.some(axis => axis.reversed) ? 'right-to-left' : 'left-to-right';\n }\n case 'vertical':\n {\n return allYAxes.some(axis => axis.reversed) ? 'bottom-to-top' : 'top-to-bottom';\n }\n // TODO: make this better. For now, right arrow triggers \"forward\", left arrow \"back\"\n // however, the tooltip moves an unintuitive direction because of how the indices are rendered\n case 'centric':\n case 'radial':\n {\n return 'left-to-right';\n }\n default:\n {\n return undefined;\n }\n }\n});","import { useAppSelector } from '../hooks';\nexport var selectDefaultTooltipEventType = state => state.options.defaultTooltipEventType;\nexport var selectValidateTooltipEventTypes = state => state.options.validateTooltipEventTypes;\nexport function combineTooltipEventType(shared, defaultTooltipEventType, validateTooltipEventTypes) {\n if (shared == null) {\n return defaultTooltipEventType;\n }\n var eventType = shared ? 'axis' : 'item';\n if (validateTooltipEventTypes == null) {\n return defaultTooltipEventType;\n }\n return validateTooltipEventTypes.includes(eventType) ? eventType : defaultTooltipEventType;\n}\nexport function selectTooltipEventType(state, shared) {\n var defaultTooltipEventType = selectDefaultTooltipEventType(state);\n var validateTooltipEventTypes = selectValidateTooltipEventTypes(state);\n return combineTooltipEventType(shared, defaultTooltipEventType, validateTooltipEventTypes);\n}\nexport function useTooltipEventType(shared) {\n return useAppSelector(state => selectTooltipEventType(state, shared));\n}","import { isNan } from '../../../util/DataUtils';\nexport var combineActiveLabel = (tooltipTicks, activeIndex) => {\n var _tooltipTicks$n;\n var n = Number(activeIndex);\n if (isNan(n) || activeIndex == null) {\n return undefined;\n }\n return n >= 0 ? tooltipTicks === null || tooltipTicks === void 0 || (_tooltipTicks$n = tooltipTicks[n]) === null || _tooltipTicks$n === void 0 ? void 0 : _tooltipTicks$n.value : undefined;\n};","import { createSlice, current } from '@reduxjs/toolkit';\nimport { castDraft } from 'immer';\n\n/**\n * One Tooltip can display multiple TooltipPayloadEntries at a time.\n */\n\n/**\n * So what happens is that the tooltip payload is decided based on the available data, and the dataKey.\n * The dataKey can either be defined on the graphical element (like Line, or Bar)\n * or on the tooltip itself.\n *\n * The data can be defined in the chart element, or in the graphical item.\n *\n * So this type is all the settings, other than the data + dataKey complications.\n */\n\n/**\n * This is what Tooltip renders.\n */\n\n/**\n * null means no active index\n * string means: whichever index from the chart data it is.\n * Different charts have different requirements on data shapes,\n * and are also responsible for providing a function that will accept this index\n * and return data.\n */\n\n/**\n * Different items have different data shapes so the state has no opinion on what the data shape should be;\n * the only requirement is that the chart also provides a searcher function\n * that accepts the data, and a key, and returns whatever the payload in Tooltip should be.\n */\n\n/**\n * So this informs the \"tooltip event type\". Tooltip event type can be either \"axis\" or \"item\"\n * and it is used for two things:\n * 1. Sets the active area\n * 2. Sets the background and cursor highlights\n *\n * Some charts only allow to have one type of tooltip event type, some allow both.\n * Those charts that allow both will have one default, and the \"shared\" prop will be used to switch between them.\n * Undefined means \"use the chart default\".\n *\n * Charts that only allow one tooltip event type, will ignore the shared prop.\n */\n\n/**\n * A generic state for user interaction with the chart.\n * User interaction can come through multiple channels: mouse events, keyboard events, or hardcoded in props, or synchronised from other charts.\n *\n * Each of the interaction states is represented as TooltipInteractionState,\n * and then the selectors and Tooltip will decide which of the interaction states to use.\n */\n\nexport var noInteraction = {\n active: false,\n index: null,\n dataKey: undefined,\n coordinate: undefined\n};\n\n/**\n * The tooltip interaction state stores:\n *\n * - Which graphical item is user interacting with at the moment,\n * - which axis (or, which part of chart background) is user interacting with at the moment\n * - The data that individual graphical items wish to be displayed in case the tooltip gets activated\n */\n\nexport var initialState = {\n itemInteraction: {\n click: noInteraction,\n hover: noInteraction\n },\n axisInteraction: {\n click: noInteraction,\n hover: noInteraction\n },\n keyboardInteraction: noInteraction,\n syncInteraction: {\n active: false,\n index: null,\n dataKey: undefined,\n label: undefined,\n coordinate: undefined\n },\n tooltipItemPayloads: [],\n settings: {\n shared: undefined,\n trigger: 'hover',\n axisId: 0,\n active: false,\n defaultIndex: undefined\n }\n};\nvar tooltipSlice = createSlice({\n name: 'tooltip',\n initialState,\n reducers: {\n addTooltipEntrySettings(state, action) {\n state.tooltipItemPayloads.push(castDraft(action.payload));\n },\n removeTooltipEntrySettings(state, action) {\n var index = current(state).tooltipItemPayloads.indexOf(castDraft(action.payload));\n if (index > -1) {\n state.tooltipItemPayloads.splice(index, 1);\n }\n },\n setTooltipSettingsState(state, action) {\n state.settings = action.payload;\n },\n setActiveMouseOverItemIndex(state, action) {\n state.syncInteraction.active = false;\n state.keyboardInteraction.active = false;\n state.itemInteraction.hover.active = true;\n state.itemInteraction.hover.index = action.payload.activeIndex;\n state.itemInteraction.hover.dataKey = action.payload.activeDataKey;\n state.itemInteraction.hover.coordinate = action.payload.activeCoordinate;\n },\n mouseLeaveChart(state) {\n /*\n * Clear only the active flags. Why?\n * 1. Keep Coordinate to preserve animation - next time the Tooltip appears, we want to render it from\n * the last place where it was when it disappeared.\n * 2. We want to keep all the properties anyway just in case the tooltip has `active=true` prop\n * and continues being visible even after the mouse has left the chart.\n */\n state.itemInteraction.hover.active = false;\n state.axisInteraction.hover.active = false;\n },\n mouseLeaveItem(state) {\n state.itemInteraction.hover.active = false;\n },\n setActiveClickItemIndex(state, action) {\n state.syncInteraction.active = false;\n state.itemInteraction.click.active = true;\n state.keyboardInteraction.active = false;\n state.itemInteraction.click.index = action.payload.activeIndex;\n state.itemInteraction.click.dataKey = action.payload.activeDataKey;\n state.itemInteraction.click.coordinate = action.payload.activeCoordinate;\n },\n setMouseOverAxisIndex(state, action) {\n state.syncInteraction.active = false;\n state.axisInteraction.hover.active = true;\n state.keyboardInteraction.active = false;\n state.axisInteraction.hover.index = action.payload.activeIndex;\n state.axisInteraction.hover.dataKey = action.payload.activeDataKey;\n state.axisInteraction.hover.coordinate = action.payload.activeCoordinate;\n },\n setMouseClickAxisIndex(state, action) {\n state.syncInteraction.active = false;\n state.keyboardInteraction.active = false;\n state.axisInteraction.click.active = true;\n state.axisInteraction.click.index = action.payload.activeIndex;\n state.axisInteraction.click.dataKey = action.payload.activeDataKey;\n state.axisInteraction.click.coordinate = action.payload.activeCoordinate;\n },\n setSyncInteraction(state, action) {\n state.syncInteraction = action.payload;\n },\n setKeyboardInteraction(state, action) {\n state.keyboardInteraction.active = action.payload.active;\n state.keyboardInteraction.index = action.payload.activeIndex;\n state.keyboardInteraction.coordinate = action.payload.activeCoordinate;\n state.keyboardInteraction.dataKey = action.payload.activeDataKey;\n }\n }\n});\nexport var {\n addTooltipEntrySettings,\n removeTooltipEntrySettings,\n setTooltipSettingsState,\n setActiveMouseOverItemIndex,\n mouseLeaveItem,\n mouseLeaveChart,\n setActiveClickItemIndex,\n setMouseOverAxisIndex,\n setMouseClickAxisIndex,\n setSyncInteraction,\n setKeyboardInteraction\n} = tooltipSlice.actions;\nexport var tooltipReducer = tooltipSlice.reducer;","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { noInteraction } from '../../tooltipSlice';\nfunction chooseAppropriateMouseInteraction(tooltipState, tooltipEventType, trigger) {\n if (tooltipEventType === 'axis') {\n if (trigger === 'click') {\n return tooltipState.axisInteraction.click;\n }\n return tooltipState.axisInteraction.hover;\n }\n if (trigger === 'click') {\n return tooltipState.itemInteraction.click;\n }\n return tooltipState.itemInteraction.hover;\n}\nfunction hasBeenActivePreviously(tooltipInteractionState) {\n return tooltipInteractionState.index != null;\n}\nexport var combineTooltipInteractionState = (tooltipState, tooltipEventType, trigger, defaultIndex) => {\n if (tooltipEventType == null) {\n return noInteraction;\n }\n var appropriateMouseInteraction = chooseAppropriateMouseInteraction(tooltipState, tooltipEventType, trigger);\n if (appropriateMouseInteraction == null) {\n return noInteraction;\n }\n if (appropriateMouseInteraction.active) {\n return appropriateMouseInteraction;\n }\n if (tooltipState.keyboardInteraction.active) {\n return tooltipState.keyboardInteraction;\n }\n if (tooltipState.syncInteraction.active && tooltipState.syncInteraction.index != null) {\n return tooltipState.syncInteraction;\n }\n var activeFromProps = tooltipState.settings.active === true;\n if (hasBeenActivePreviously(appropriateMouseInteraction)) {\n if (activeFromProps) {\n return _objectSpread(_objectSpread({}, appropriateMouseInteraction), {}, {\n active: true\n });\n }\n } else if (defaultIndex != null) {\n return {\n active: true,\n coordinate: undefined,\n dataKey: undefined,\n index: defaultIndex\n };\n }\n return _objectSpread(_objectSpread({}, noInteraction), {}, {\n coordinate: appropriateMouseInteraction.coordinate\n });\n};","import { isWellBehavedNumber } from '../../../util/isWellBehavedNumber';\nexport var combineActiveTooltipIndex = (tooltipInteraction, chartData) => {\n var desiredIndex = tooltipInteraction === null || tooltipInteraction === void 0 ? void 0 : tooltipInteraction.index;\n if (desiredIndex == null) {\n return null;\n }\n var indexAsNumber = Number(desiredIndex);\n if (!isWellBehavedNumber(indexAsNumber)) {\n // this is for charts like Sankey and Treemap that do not support numerical indexes. We need a proper solution for this before we can start supporting keyboard events on these charts.\n return desiredIndex;\n }\n\n /*\n * Zero is a trivial limit for single-dimensional charts like Line and Area,\n * but this also needs a support for multidimensional charts like Sankey and Treemap! TODO\n */\n var lowerLimit = 0;\n var upperLimit = +Infinity;\n if (chartData.length > 0) {\n upperLimit = chartData.length - 1;\n }\n\n // now let's clamp the desiredIndex between the limits\n return String(Math.max(lowerLimit, Math.min(indexAsNumber, upperLimit)));\n};","export var combineCoordinateForDefaultIndex = (width, height, layout, offset, tooltipTicks, defaultIndex, tooltipConfigurations, tooltipPayloadSearcher) => {\n if (defaultIndex == null || tooltipPayloadSearcher == null) {\n return undefined;\n }\n // With defaultIndex alone, we don't have enough information to decide _which_ of the multiple tooltips to display. So we choose the first one.\n var firstConfiguration = tooltipConfigurations[0];\n // @ts-expect-error we need to rethink the tooltipPayloadSearcher type\n var maybePosition = firstConfiguration == null ? undefined : tooltipPayloadSearcher(firstConfiguration.positions, defaultIndex);\n if (maybePosition != null) {\n return maybePosition;\n }\n var tick = tooltipTicks === null || tooltipTicks === void 0 ? void 0 : tooltipTicks[Number(defaultIndex)];\n if (!tick) {\n return undefined;\n }\n switch (layout) {\n case 'horizontal':\n {\n return {\n x: tick.coordinate,\n y: (offset.top + height) / 2\n };\n }\n default:\n {\n // This logic is not super sound - it conflates vertical, radial, centric layouts into just one. TODO improve!\n return {\n x: (offset.left + width) / 2,\n y: tick.coordinate\n };\n }\n }\n};","export var combineTooltipPayloadConfigurations = (tooltipState, tooltipEventType, trigger, defaultIndex) => {\n // if tooltip reacts to axis interaction, then we display all items at the same time.\n if (tooltipEventType === 'axis') {\n return tooltipState.tooltipItemPayloads;\n }\n /*\n * By now we already know that tooltipEventType is 'item', so we can only search in itemInteractions.\n * item means that only the hovered or clicked item will be present in the tooltip.\n */\n if (tooltipState.tooltipItemPayloads.length === 0) {\n // No point filtering if the payload is empty\n return [];\n }\n var filterByDataKey;\n if (trigger === 'hover') {\n filterByDataKey = tooltipState.itemInteraction.hover.dataKey;\n } else {\n filterByDataKey = tooltipState.itemInteraction.click.dataKey;\n }\n if (filterByDataKey == null && defaultIndex != null) {\n /*\n * So when we use `defaultIndex` - we don't have a dataKey to filter by because user did not hover over anything yet.\n * In that case let's display the first item in the tooltip; after all, this is `item` interaction case,\n * so we should display only one item at a time instead of all.\n */\n return [tooltipState.tooltipItemPayloads[0]];\n }\n return tooltipState.tooltipItemPayloads.filter(tpc => {\n var _tpc$settings;\n return ((_tpc$settings = tpc.settings) === null || _tpc$settings === void 0 ? void 0 : _tpc$settings.dataKey) === filterByDataKey;\n });\n};","export var selectTooltipPayloadSearcher = state => state.options.tooltipPayloadSearcher;","export var selectTooltipState = state => state.tooltip;","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { findEntryInArray } from '../../../util/DataUtils';\nimport { getTooltipEntry, getValueByDataKey } from '../../../util/ChartUtils';\nfunction getSliced(arr, startIndex, endIndex) {\n if (!Array.isArray(arr)) {\n return arr;\n }\n if (arr && startIndex + endIndex !== 0) {\n return arr.slice(startIndex, endIndex + 1);\n }\n return arr;\n}\nfunction selectFinalData(dataDefinedOnItem, dataDefinedOnChart) {\n /*\n * If a payload has data specified directly from the graphical item, prefer that.\n * Otherwise, fill in data from the chart level, using the same index.\n */\n if (dataDefinedOnItem != null) {\n return dataDefinedOnItem;\n }\n return dataDefinedOnChart;\n}\nexport var combineTooltipPayload = (tooltipPayloadConfigurations, activeIndex, chartDataState, tooltipAxis, activeLabel, tooltipPayloadSearcher, tooltipEventType) => {\n if (activeIndex == null || tooltipPayloadSearcher == null) {\n return undefined;\n }\n var {\n chartData,\n computedData,\n dataStartIndex,\n dataEndIndex\n } = chartDataState;\n var init = [];\n return tooltipPayloadConfigurations.reduce((agg, _ref) => {\n var _settings$dataKey;\n var {\n dataDefinedOnItem,\n settings\n } = _ref;\n var finalData = selectFinalData(dataDefinedOnItem, chartData);\n var sliced = getSliced(finalData, dataStartIndex, dataEndIndex);\n var finalDataKey = (_settings$dataKey = settings === null || settings === void 0 ? void 0 : settings.dataKey) !== null && _settings$dataKey !== void 0 ? _settings$dataKey : tooltipAxis === null || tooltipAxis === void 0 ? void 0 : tooltipAxis.dataKey;\n // BaseAxisProps does not support nameKey but it could!\n var finalNameKey = settings === null || settings === void 0 ? void 0 : settings.nameKey; // ?? tooltipAxis?.nameKey;\n var tooltipPayload;\n if (tooltipAxis !== null && tooltipAxis !== void 0 && tooltipAxis.dataKey && Array.isArray(sliced) &&\n /*\n * findEntryInArray won't work for Scatter because Scatter provides an array of arrays\n * as tooltip payloads and findEntryInArray is not prepared to handle that.\n * Sad but also ScatterChart only allows 'item' tooltipEventType\n * and also this is only a problem if there are multiple Scatters and each has its own data array\n * so let's fix that some other time.\n */\n !Array.isArray(sliced[0]) &&\n /*\n * If the tooltipEventType is 'axis', we should search for the dataKey in the sliced data\n * because thanks to allowDuplicatedCategory=false, the order of elements in the array\n * no longer matches the order of elements in the original data\n * and so we need to search by the active dataKey + label rather than by index.\n *\n * The same happens if multiple graphical items are present in the chart\n * and each of them has its own data array. Those arrays get concatenated\n * and again the tooltip index no longer matches the original data.\n *\n * On the other hand the tooltipEventType 'item' should always search by index\n * because we get the index from interacting over the individual elements\n * which is always accurate, irrespective of the allowDuplicatedCategory setting.\n */\n tooltipEventType === 'axis') {\n tooltipPayload = findEntryInArray(sliced, tooltipAxis.dataKey, activeLabel);\n } else {\n /*\n * This is a problem because it assumes that the index is pointing to the displayed data\n * which it isn't because the index is pointing to the tooltip ticks array.\n * The above approach (with findEntryInArray) is the correct one, but it only works\n * if the axis dataKey is defined explicitly, and if the data is an array of objects.\n */\n tooltipPayload = tooltipPayloadSearcher(sliced, activeIndex, computedData, finalNameKey);\n }\n if (Array.isArray(tooltipPayload)) {\n tooltipPayload.forEach(item => {\n var newSettings = _objectSpread(_objectSpread({}, settings), {}, {\n name: item.name,\n unit: item.unit,\n // color and fill are erased to keep 100% the identical behaviour to recharts 2.x - but there's nothing stopping us from returning them here. It's technically a breaking change.\n color: undefined,\n // color and fill are erased to keep 100% the identical behaviour to recharts 2.x - but there's nothing stopping us from returning them here. It's technically a breaking change.\n fill: undefined\n });\n agg.push(getTooltipEntry({\n tooltipEntrySettings: newSettings,\n dataKey: item.dataKey,\n payload: item.payload,\n // @ts-expect-error getValueByDataKey does not validate the output type\n value: getValueByDataKey(item.payload, item.dataKey),\n name: item.name\n }));\n });\n } else {\n var _getValueByDataKey;\n // I am not quite sure why these two branches (Array vs Array of Arrays) have to behave differently - I imagine we should unify these. 3.x breaking change?\n agg.push(getTooltipEntry({\n tooltipEntrySettings: settings,\n dataKey: finalDataKey,\n payload: tooltipPayload,\n // @ts-expect-error getValueByDataKey does not validate the output type\n value: getValueByDataKey(tooltipPayload, finalDataKey),\n // @ts-expect-error getValueByDataKey does not validate the output type\n name: (_getValueByDataKey = getValueByDataKey(tooltipPayload, finalNameKey)) !== null && _getValueByDataKey !== void 0 ? _getValueByDataKey : settings === null || settings === void 0 ? void 0 : settings.name\n }));\n }\n return agg;\n }, init);\n};","import { createSelector } from 'reselect';\nimport { combineAppliedNumericalValuesIncludingErrorValues, combineAppliedValues, combineAreasDomain, combineAxisDomain, combineAxisDomainWithNiceTicks, combineCategoricalDomain, combineDisplayedData, combineDomainOfStackGroups, combineDotsDomain, combineDuplicateDomain, combineGraphicalItemsData, combineGraphicalItemsSettings, combineLinesDomain, combineNiceTicks, combineNumericalDomain, combineRealScaleType, combineScaleFunction, combineStackGroups, filterGraphicalNotStackedItems, filterReferenceElements, getDomainDefinition, itemAxisPredicate, mergeDomains, selectAxisRange, selectAxisSettings, selectHasBar, selectReferenceAreas, selectReferenceDots, selectReferenceLines } from './axisSelectors';\nimport { selectChartLayout } from '../../context/chartLayoutContext';\nimport { isCategoricalAxis } from '../../util/ChartUtils';\nimport { selectChartDataWithIndexes } from './dataSelectors';\nimport { selectChartName, selectStackOffsetType } from './rootPropsSelectors';\nimport { mathSign } from '../../util/DataUtils';\nimport { combineAxisRangeWithReverse } from './combiners/combineAxisRangeWithReverse';\nimport { combineTooltipEventType, selectDefaultTooltipEventType, selectValidateTooltipEventTypes } from './selectTooltipEventType';\nimport { combineActiveLabel } from './combiners/combineActiveLabel';\nimport { selectTooltipSettings } from './selectTooltipSettings';\nimport { combineTooltipInteractionState } from './combiners/combineTooltipInteractionState';\nimport { combineActiveTooltipIndex } from './combiners/combineActiveTooltipIndex';\nimport { combineCoordinateForDefaultIndex } from './combiners/combineCoordinateForDefaultIndex';\nimport { selectChartHeight, selectChartWidth } from './containerSelectors';\nimport { selectChartOffsetInternal } from './selectChartOffsetInternal';\nimport { combineTooltipPayloadConfigurations } from './combiners/combineTooltipPayloadConfigurations';\nimport { selectTooltipPayloadSearcher } from './selectTooltipPayloadSearcher';\nimport { selectTooltipState } from './selectTooltipState';\nimport { combineTooltipPayload } from './combiners/combineTooltipPayload';\nexport var selectTooltipAxisType = state => {\n var layout = selectChartLayout(state);\n if (layout === 'horizontal') {\n return 'xAxis';\n }\n if (layout === 'vertical') {\n return 'yAxis';\n }\n if (layout === 'centric') {\n return 'angleAxis';\n }\n return 'radiusAxis';\n};\nexport var selectTooltipAxisId = state => state.tooltip.settings.axisId;\nexport var selectTooltipAxis = state => {\n var axisType = selectTooltipAxisType(state);\n var axisId = selectTooltipAxisId(state);\n return selectAxisSettings(state, axisType, axisId);\n};\nexport var selectTooltipAxisRealScaleType = createSelector([selectTooltipAxis, selectChartLayout, selectHasBar, selectChartName, selectTooltipAxisType], combineRealScaleType);\nexport var selectAllUnfilteredGraphicalItems = createSelector([state => state.graphicalItems.cartesianItems, state => state.graphicalItems.polarItems], (cartesianItems, polarItems) => [...cartesianItems, ...polarItems]);\nvar selectTooltipAxisPredicate = createSelector([selectTooltipAxisType, selectTooltipAxisId], itemAxisPredicate);\nexport var selectAllGraphicalItemsSettings = createSelector([selectAllUnfilteredGraphicalItems, selectTooltipAxis, selectTooltipAxisPredicate], combineGraphicalItemsSettings);\nexport var selectTooltipGraphicalItemsData = createSelector([selectAllGraphicalItemsSettings], combineGraphicalItemsData);\n\n/**\n * Data for tooltip always use the data with indexes set by a Brush,\n * and never accept the isPanorama flag:\n * because Tooltip never displays inside the panorama anyway\n * so we don't need to worry what would happen there.\n */\nexport var selectTooltipDisplayedData = createSelector([selectTooltipGraphicalItemsData, selectChartDataWithIndexes], combineDisplayedData);\nvar selectAllTooltipAppliedValues = createSelector([selectTooltipDisplayedData, selectTooltipAxis, selectAllGraphicalItemsSettings], combineAppliedValues);\nvar selectTooltipAxisDomainDefinition = createSelector([selectTooltipAxis], getDomainDefinition);\nvar selectTooltipStackGroups = createSelector([selectTooltipDisplayedData, selectAllGraphicalItemsSettings, selectStackOffsetType], combineStackGroups);\nvar selectTooltipDomainOfStackGroups = createSelector([selectTooltipStackGroups, selectChartDataWithIndexes, selectTooltipAxisType], combineDomainOfStackGroups);\nvar selectTooltipItemsSettingsExceptStacked = createSelector([selectAllGraphicalItemsSettings], filterGraphicalNotStackedItems);\nvar selectTooltipAllAppliedNumericalValuesIncludingErrorValues = createSelector([selectTooltipDisplayedData, selectTooltipAxis, selectTooltipItemsSettingsExceptStacked, selectTooltipAxisType], combineAppliedNumericalValuesIncludingErrorValues);\nvar selectReferenceDotsByTooltipAxis = createSelector([selectReferenceDots, selectTooltipAxisType, selectTooltipAxisId], filterReferenceElements);\nvar selectTooltipReferenceDotsDomain = createSelector([selectReferenceDotsByTooltipAxis, selectTooltipAxisType], combineDotsDomain);\nvar selectReferenceAreasByTooltipAxis = createSelector([selectReferenceAreas, selectTooltipAxisType, selectTooltipAxisId], filterReferenceElements);\nvar selectTooltipReferenceAreasDomain = createSelector([selectReferenceAreasByTooltipAxis, selectTooltipAxisType], combineAreasDomain);\nvar selectReferenceLinesByTooltipAxis = createSelector([selectReferenceLines, selectTooltipAxisType, selectTooltipAxisId], filterReferenceElements);\nvar selectTooltipReferenceLinesDomain = createSelector([selectReferenceLinesByTooltipAxis, selectTooltipAxisType], combineLinesDomain);\nvar selectTooltipReferenceElementsDomain = createSelector([selectTooltipReferenceDotsDomain, selectTooltipReferenceLinesDomain, selectTooltipReferenceAreasDomain], mergeDomains);\nvar selectTooltipNumericalDomain = createSelector([selectTooltipAxis, selectTooltipAxisDomainDefinition, selectTooltipDomainOfStackGroups, selectTooltipAllAppliedNumericalValuesIncludingErrorValues, selectTooltipReferenceElementsDomain], combineNumericalDomain);\nexport var selectTooltipAxisDomain = createSelector([selectTooltipAxis, selectChartLayout, selectTooltipDisplayedData, selectAllTooltipAppliedValues, selectStackOffsetType, selectTooltipAxisType, selectTooltipNumericalDomain], combineAxisDomain);\nvar selectTooltipNiceTicks = createSelector([selectTooltipAxisDomain, selectTooltipAxis, selectTooltipAxisRealScaleType], combineNiceTicks);\nexport var selectTooltipAxisDomainIncludingNiceTicks = createSelector([selectTooltipAxis, selectTooltipAxisDomain, selectTooltipNiceTicks, selectTooltipAxisType], combineAxisDomainWithNiceTicks);\nvar selectTooltipAxisRange = state => {\n var axisType = selectTooltipAxisType(state);\n var axisId = selectTooltipAxisId(state);\n var isPanorama = false; // Tooltip never displays in panorama so this is safe to assume\n return selectAxisRange(state, axisType, axisId, isPanorama);\n};\nexport var selectTooltipAxisRangeWithReverse = createSelector([selectTooltipAxis, selectTooltipAxisRange], combineAxisRangeWithReverse);\nexport var selectTooltipAxisScale = createSelector([selectTooltipAxis, selectTooltipAxisRealScaleType, selectTooltipAxisDomainIncludingNiceTicks, selectTooltipAxisRangeWithReverse], combineScaleFunction);\nvar selectTooltipDuplicateDomain = createSelector([selectChartLayout, selectAllTooltipAppliedValues, selectTooltipAxis, selectTooltipAxisType], combineDuplicateDomain);\nexport var selectTooltipCategoricalDomain = createSelector([selectChartLayout, selectAllTooltipAppliedValues, selectTooltipAxis, selectTooltipAxisType], combineCategoricalDomain);\nvar combineTicksOfTooltipAxis = (layout, axis, realScaleType, scale, range, duplicateDomain, categoricalDomain, axisType) => {\n if (!axis) {\n return undefined;\n }\n var {\n type\n } = axis;\n var isCategorical = isCategoricalAxis(layout, axisType);\n if (!scale) {\n return undefined;\n }\n var offsetForBand = realScaleType === 'scaleBand' && scale.bandwidth ? scale.bandwidth() / 2 : 2;\n var offset = type === 'category' && scale.bandwidth ? scale.bandwidth() / offsetForBand : 0;\n offset = axisType === 'angleAxis' && range != null && (range === null || range === void 0 ? void 0 : range.length) >= 2 ? mathSign(range[0] - range[1]) * 2 * offset : offset;\n\n // When axis is a categorical axis, but the type of axis is number or the scale of axis is not \"auto\"\n if (isCategorical && categoricalDomain) {\n return categoricalDomain.map((entry, index) => ({\n coordinate: scale(entry) + offset,\n value: entry,\n index,\n offset\n }));\n }\n\n // When axis has duplicated text, serial numbers are used to generate scale\n return scale.domain().map((entry, index) => ({\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index,\n offset\n }));\n};\nexport var selectTooltipAxisTicks = createSelector([selectChartLayout, selectTooltipAxis, selectTooltipAxisRealScaleType, selectTooltipAxisScale, selectTooltipAxisRange, selectTooltipDuplicateDomain, selectTooltipCategoricalDomain, selectTooltipAxisType], combineTicksOfTooltipAxis);\nvar selectTooltipEventType = createSelector([selectDefaultTooltipEventType, selectValidateTooltipEventTypes, selectTooltipSettings], (defaultTooltipEventType, validateTooltipEventType, settings) => combineTooltipEventType(settings.shared, defaultTooltipEventType, validateTooltipEventType));\nvar selectTooltipTrigger = state => state.tooltip.settings.trigger;\nvar selectDefaultIndex = state => state.tooltip.settings.defaultIndex;\nvar selectTooltipInteractionState = createSelector([selectTooltipState, selectTooltipEventType, selectTooltipTrigger, selectDefaultIndex], combineTooltipInteractionState);\nexport var selectActiveTooltipIndex = createSelector([selectTooltipInteractionState, selectTooltipDisplayedData], combineActiveTooltipIndex);\nexport var selectActiveLabel = createSelector([selectTooltipAxisTicks, selectActiveTooltipIndex], combineActiveLabel);\nexport var selectActiveTooltipDataKey = createSelector([selectTooltipInteractionState], tooltipInteraction => {\n if (!tooltipInteraction) {\n return undefined;\n }\n return tooltipInteraction.dataKey;\n});\nvar selectTooltipPayloadConfigurations = createSelector([selectTooltipState, selectTooltipEventType, selectTooltipTrigger, selectDefaultIndex], combineTooltipPayloadConfigurations);\nvar selectTooltipCoordinateForDefaultIndex = createSelector([selectChartWidth, selectChartHeight, selectChartLayout, selectChartOffsetInternal, selectTooltipAxisTicks, selectDefaultIndex, selectTooltipPayloadConfigurations, selectTooltipPayloadSearcher], combineCoordinateForDefaultIndex);\nexport var selectActiveTooltipCoordinate = createSelector([selectTooltipInteractionState, selectTooltipCoordinateForDefaultIndex], (tooltipInteractionState, defaultIndexCoordinate) => {\n if (tooltipInteractionState !== null && tooltipInteractionState !== void 0 && tooltipInteractionState.coordinate) {\n return tooltipInteractionState.coordinate;\n }\n return defaultIndexCoordinate;\n});\nexport var selectIsTooltipActive = createSelector([selectTooltipInteractionState], tooltipInteractionState => tooltipInteractionState.active);\nexport var selectActiveTooltipPayload = createSelector([selectTooltipPayloadConfigurations, selectActiveTooltipIndex, selectChartDataWithIndexes, selectTooltipAxis, selectActiveLabel, selectTooltipPayloadSearcher, selectTooltipEventType], combineTooltipPayload);\nexport var selectActiveTooltipDataPoints = createSelector([selectActiveTooltipPayload], payload => {\n if (payload == null) {\n return undefined;\n }\n var dataPoints = payload.map(p => p.payload).filter(p => p != null);\n return Array.from(new Set(dataPoints));\n});","export var selectTooltipSettings = state => state.tooltip.settings;","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { useAppSelector } from '../state/hooks';\nimport { getBandSizeOfAxis } from '../util/ChartUtils';\nimport { selectTooltipAxis, selectTooltipAxisScale, selectTooltipAxisTicks } from '../state/selectors/tooltipSelectors';\nexport var useTooltipAxis = () => useAppSelector(selectTooltipAxis);\nexport var useTooltipAxisBandSize = () => {\n var tooltipAxis = useTooltipAxis();\n var tooltipTicks = useAppSelector(selectTooltipAxisTicks);\n var tooltipAxisScale = useAppSelector(selectTooltipAxisScale);\n return getBandSizeOfAxis(_objectSpread(_objectSpread({}, tooltipAxis), {}, {\n scale: tooltipAxisScale\n }), tooltipTicks);\n};","import { createSelector } from 'reselect';\nimport sortBy from 'es-toolkit/compat/sortBy';\nimport { useAppSelector } from '../hooks';\nimport { calculateActiveTickIndex, calculateTooltipPos, getActiveCoordinate, inRange } from '../../util/ChartUtils';\nimport { selectChartDataWithIndexes } from './dataSelectors';\nimport { selectTooltipAxis, selectTooltipAxisTicks, selectTooltipDisplayedData } from './tooltipSelectors';\nimport { selectChartName } from './rootPropsSelectors';\nimport { selectChartLayout } from '../../context/chartLayoutContext';\nimport { selectChartOffsetInternal } from './selectChartOffsetInternal';\nimport { selectChartHeight, selectChartWidth } from './containerSelectors';\nimport { combineActiveLabel } from './combiners/combineActiveLabel';\nimport { combineTooltipInteractionState } from './combiners/combineTooltipInteractionState';\nimport { combineActiveTooltipIndex } from './combiners/combineActiveTooltipIndex';\nimport { combineCoordinateForDefaultIndex } from './combiners/combineCoordinateForDefaultIndex';\nimport { combineTooltipPayloadConfigurations } from './combiners/combineTooltipPayloadConfigurations';\nimport { selectTooltipPayloadSearcher } from './selectTooltipPayloadSearcher';\nimport { selectTooltipState } from './selectTooltipState';\nimport { combineTooltipPayload } from './combiners/combineTooltipPayload';\nexport var useChartName = () => {\n return useAppSelector(selectChartName);\n};\nvar pickTooltipEventType = (_state, tooltipEventType) => tooltipEventType;\nvar pickTrigger = (_state, _tooltipEventType, trigger) => trigger;\nvar pickDefaultIndex = (_state, _tooltipEventType, _trigger, defaultIndex) => defaultIndex;\nexport var selectOrderedTooltipTicks = createSelector(selectTooltipAxisTicks, ticks => sortBy(ticks, o => o.coordinate));\nexport var selectTooltipInteractionState = createSelector([selectTooltipState, pickTooltipEventType, pickTrigger, pickDefaultIndex], combineTooltipInteractionState);\nexport var selectActiveIndex = createSelector([selectTooltipInteractionState, selectTooltipDisplayedData], combineActiveTooltipIndex);\nexport var selectTooltipDataKey = (state, tooltipEventType, trigger) => {\n if (tooltipEventType == null) {\n return undefined;\n }\n var tooltipState = selectTooltipState(state);\n if (tooltipEventType === 'axis') {\n if (trigger === 'hover') {\n return tooltipState.axisInteraction.hover.dataKey;\n }\n return tooltipState.axisInteraction.click.dataKey;\n }\n if (trigger === 'hover') {\n return tooltipState.itemInteraction.hover.dataKey;\n }\n return tooltipState.itemInteraction.click.dataKey;\n};\nexport var selectTooltipPayloadConfigurations = createSelector([selectTooltipState, pickTooltipEventType, pickTrigger, pickDefaultIndex], combineTooltipPayloadConfigurations);\nexport var selectCoordinateForDefaultIndex = createSelector([selectChartWidth, selectChartHeight, selectChartLayout, selectChartOffsetInternal, selectTooltipAxisTicks, pickDefaultIndex, selectTooltipPayloadConfigurations, selectTooltipPayloadSearcher], combineCoordinateForDefaultIndex);\nexport var selectActiveCoordinate = createSelector([selectTooltipInteractionState, selectCoordinateForDefaultIndex], (tooltipInteractionState, defaultIndexCoordinate) => {\n var _tooltipInteractionSt;\n return (_tooltipInteractionSt = tooltipInteractionState.coordinate) !== null && _tooltipInteractionSt !== void 0 ? _tooltipInteractionSt : defaultIndexCoordinate;\n});\nexport var selectActiveLabel = createSelector(selectTooltipAxisTicks, selectActiveIndex, combineActiveLabel);\nexport var selectTooltipPayload = createSelector([selectTooltipPayloadConfigurations, selectActiveIndex, selectChartDataWithIndexes, selectTooltipAxis, selectActiveLabel, selectTooltipPayloadSearcher, pickTooltipEventType], combineTooltipPayload);\nexport var selectIsTooltipActive = createSelector([selectTooltipInteractionState], tooltipInteractionState => {\n return {\n isActive: tooltipInteractionState.active,\n activeIndex: tooltipInteractionState.index\n };\n});\nexport var combineActiveProps = (chartEvent, layout, polarViewBox, tooltipAxisType, tooltipAxisRange, tooltipTicks, orderedTooltipTicks, offset) => {\n if (!chartEvent || !layout || !tooltipAxisType || !tooltipAxisRange || !tooltipTicks) {\n return undefined;\n }\n var rangeObj = inRange(chartEvent.chartX, chartEvent.chartY, layout, polarViewBox, offset);\n if (!rangeObj) {\n return undefined;\n }\n var pos = calculateTooltipPos(rangeObj, layout);\n var activeIndex = calculateActiveTickIndex(pos, orderedTooltipTicks, tooltipTicks, tooltipAxisType, tooltipAxisRange);\n var activeCoordinate = getActiveCoordinate(layout, tooltipTicks, activeIndex, rangeObj);\n return {\n activeIndex: String(activeIndex),\n activeCoordinate\n };\n};","function _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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport * as React from 'react';\nimport { cloneElement, createElement, isValidElement } from 'react';\nimport { clsx } from 'clsx';\nimport { Curve } from '../shape/Curve';\nimport { Cross } from '../shape/Cross';\nimport { getCursorRectangle } from '../util/cursor/getCursorRectangle';\nimport { Rectangle } from '../shape/Rectangle';\nimport { getRadialCursorPoints } from '../util/cursor/getRadialCursorPoints';\nimport { Sector } from '../shape/Sector';\nimport { getCursorPoints } from '../util/cursor/getCursorPoints';\nimport { filterProps } from '../util/ReactUtils';\nimport { useChartLayout, useOffsetInternal } from '../context/chartLayoutContext';\nimport { useTooltipAxisBandSize } from '../context/useTooltipAxis';\nimport { useChartName } from '../state/selectors/selectors';\n\n/**\n * If set false, no cursor will be drawn when tooltip is active.\n * If set an object, the option is the configuration of cursor.\n * If set a React element, the option is the custom react element of drawing cursor\n */\n\nexport function CursorInternal(props) {\n var {\n coordinate,\n payload,\n index,\n offset,\n tooltipAxisBandSize,\n layout,\n cursor,\n tooltipEventType,\n chartName\n } = props;\n\n // The cursor is a part of the Tooltip, and it should be shown (by default) when the Tooltip is active.\n var activeCoordinate = coordinate;\n var activePayload = payload;\n var activeTooltipIndex = index;\n if (!cursor || !activeCoordinate || chartName !== 'ScatterChart' && tooltipEventType !== 'axis') {\n return null;\n }\n var restProps, cursorComp;\n if (chartName === 'ScatterChart') {\n restProps = activeCoordinate;\n cursorComp = Cross;\n } else if (chartName === 'BarChart') {\n restProps = getCursorRectangle(layout, activeCoordinate, offset, tooltipAxisBandSize);\n cursorComp = Rectangle;\n } else if (layout === 'radial') {\n // @ts-expect-error TODO the state is marked as containing Coordinate but actually in polar charts it contains PolarCoordinate, we should keep the polar state separate\n var {\n cx,\n cy,\n radius,\n startAngle,\n endAngle\n } = getRadialCursorPoints(activeCoordinate);\n restProps = {\n cx,\n cy,\n startAngle,\n endAngle,\n innerRadius: radius,\n outerRadius: radius\n };\n cursorComp = Sector;\n } else {\n restProps = {\n points: getCursorPoints(layout, activeCoordinate, offset)\n };\n cursorComp = Curve;\n }\n var extraClassName = typeof cursor === 'object' && 'className' in cursor ? cursor.className : undefined;\n var cursorProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n stroke: '#ccc',\n pointerEvents: 'none'\n }, offset), restProps), filterProps(cursor, false)), {}, {\n payload: activePayload,\n payloadIndex: activeTooltipIndex,\n className: clsx('recharts-tooltip-cursor', extraClassName)\n });\n return /*#__PURE__*/isValidElement(cursor) ? /*#__PURE__*/cloneElement(cursor, cursorProps) : /*#__PURE__*/createElement(cursorComp, cursorProps);\n}\n\n/*\n * Cursor is the background, or a highlight,\n * that shows when user mouses over or activates\n * an area.\n *\n * It usually shows together with a tooltip\n * to emphasise which part of the chart does the tooltip refer to.\n */\nexport function Cursor(props) {\n var tooltipAxisBandSize = useTooltipAxisBandSize();\n var offset = useOffsetInternal();\n var layout = useChartLayout();\n var chartName = useChartName();\n return /*#__PURE__*/React.createElement(CursorInternal, _extends({}, props, {\n coordinate: props.coordinate,\n index: props.index,\n payload: props.payload,\n offset: offset,\n layout: layout,\n tooltipAxisBandSize: tooltipAxisBandSize,\n chartName: chartName\n }));\n}","export function getCursorRectangle(layout, activeCoordinate, offset, tooltipAxisBandSize) {\n var halfSize = tooltipAxisBandSize / 2;\n return {\n stroke: 'none',\n fill: '#ccc',\n x: layout === 'horizontal' ? activeCoordinate.x - halfSize : offset.left + 0.5,\n y: layout === 'horizontal' ? offset.top + 0.5 : activeCoordinate.y - halfSize,\n width: layout === 'horizontal' ? tooltipAxisBandSize : offset.width - 1,\n height: layout === 'horizontal' ? offset.height - 1 : tooltipAxisBandSize\n };\n}","import { createContext, useContext } from 'react';\nexport var TooltipPortalContext = /*#__PURE__*/createContext(null);\nexport var useTooltipPortal = () => useContext(TooltipPortalContext);","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","import EventEmitter from 'eventemitter3';\nvar eventCenter = new EventEmitter();\nexport { eventCenter };\nexport var TOOLTIP_SYNC_EVENT = 'recharts.syncEvent.tooltip';\nexport var BRUSH_SYNC_EVENT = 'recharts.syncEvent.brush';","export function selectSynchronisedTooltipState(state) {\n return state.tooltip.syncInteraction;\n}","import { useEffect } from 'react';\nimport { useAppDispatch, useAppSelector } from '../state/hooks';\nimport { selectEventEmitter, selectSyncId, selectSyncMethod } from '../state/selectors/rootPropsSelectors';\nimport { BRUSH_SYNC_EVENT, eventCenter, TOOLTIP_SYNC_EVENT } from '../util/Events';\nimport { createEventEmitter } from '../state/optionsSlice';\nimport { setSyncInteraction } from '../state/tooltipSlice';\nimport { selectTooltipDataKey } from '../state/selectors/selectors';\nimport { selectTooltipAxisTicks } from '../state/selectors/tooltipSelectors';\nimport { selectSynchronisedTooltipState } from './syncSelectors';\nimport { useChartLayout, useViewBox } from '../context/chartLayoutContext';\nimport { setDataStartEndIndexes } from '../state/chartDataSlice';\nvar noop = () => {};\nfunction useTooltipSyncEventsListener() {\n var mySyncId = useAppSelector(selectSyncId);\n var myEventEmitter = useAppSelector(selectEventEmitter);\n var dispatch = useAppDispatch();\n var syncMethod = useAppSelector(selectSyncMethod);\n var tooltipTicks = useAppSelector(selectTooltipAxisTicks);\n var layout = useChartLayout();\n var viewBox = useViewBox();\n var className = useAppSelector(state => state.rootProps.className);\n useEffect(() => {\n if (mySyncId == null) {\n // This chart is not synchronised with any other chart so we don't need to listen for any events.\n return noop;\n }\n var listener = (incomingSyncId, action, emitter) => {\n if (myEventEmitter === emitter) {\n // We don't want to dispatch actions that we sent ourselves.\n return;\n }\n if (mySyncId !== incomingSyncId) {\n // This event is not for this chart\n return;\n }\n if (syncMethod === 'index') {\n dispatch(action);\n // This is the default behaviour, we don't need to do anything else.\n return;\n }\n if (tooltipTicks == null) {\n // for the other two sync methods, we need the ticks to be available\n return;\n }\n var activeTick;\n if (typeof syncMethod === 'function') {\n /*\n * This is what the data shape in 2.x CategoricalChartState used to look like.\n * In 3.x we store things differently but let's try to keep the old shape for compatibility.\n */\n var syncMethodParam = {\n activeTooltipIndex: action.payload.index == null ? undefined : Number(action.payload.index),\n isTooltipActive: action.payload.active,\n activeIndex: action.payload.index == null ? undefined : Number(action.payload.index),\n activeLabel: action.payload.label,\n activeDataKey: action.payload.dataKey,\n activeCoordinate: action.payload.coordinate\n };\n // Call a callback function. If there is an application specific algorithm\n var activeTooltipIndex = syncMethod(tooltipTicks, syncMethodParam);\n activeTick = tooltipTicks[activeTooltipIndex];\n } else if (syncMethod === 'value') {\n // labels are always strings, tick.value might be a string or a number, depending on axis type\n activeTick = tooltipTicks.find(tick => String(tick.value) === action.payload.label);\n }\n var {\n coordinate\n } = action.payload;\n if (activeTick == null || action.payload.active === false || coordinate == null || viewBox == null) {\n dispatch(setSyncInteraction({\n active: false,\n coordinate: undefined,\n dataKey: undefined,\n index: null,\n label: undefined\n }));\n return;\n }\n var {\n x,\n y\n } = coordinate;\n var validateChartX = Math.min(x, viewBox.x + viewBox.width);\n var validateChartY = Math.min(y, viewBox.y + viewBox.height);\n var activeCoordinate = {\n x: layout === 'horizontal' ? activeTick.coordinate : validateChartX,\n y: layout === 'horizontal' ? validateChartY : activeTick.coordinate\n };\n var syncAction = setSyncInteraction({\n active: action.payload.active,\n coordinate: activeCoordinate,\n dataKey: action.payload.dataKey,\n index: String(activeTick.index),\n label: action.payload.label\n });\n dispatch(syncAction);\n };\n eventCenter.on(TOOLTIP_SYNC_EVENT, listener);\n return () => {\n eventCenter.off(TOOLTIP_SYNC_EVENT, listener);\n };\n }, [className, dispatch, myEventEmitter, mySyncId, syncMethod, tooltipTicks, layout, viewBox]);\n}\nfunction useBrushSyncEventsListener() {\n var mySyncId = useAppSelector(selectSyncId);\n var myEventEmitter = useAppSelector(selectEventEmitter);\n var dispatch = useAppDispatch();\n useEffect(() => {\n if (mySyncId == null) {\n // This chart is not synchronised with any other chart so we don't need to listen for any events.\n return noop;\n }\n var listener = (incomingSyncId, action, emitter) => {\n if (myEventEmitter === emitter) {\n // We don't want to dispatch actions that we sent ourselves.\n return;\n }\n if (mySyncId === incomingSyncId) {\n dispatch(setDataStartEndIndexes(action));\n }\n };\n eventCenter.on(BRUSH_SYNC_EVENT, listener);\n return () => {\n eventCenter.off(BRUSH_SYNC_EVENT, listener);\n };\n }, [dispatch, myEventEmitter, mySyncId]);\n}\n\n/**\n * Will receive synchronisation events from other charts.\n *\n * Reads syncMethod from state and decides how to synchronise the tooltip based on that.\n *\n * @returns void\n */\nexport function useSynchronisedEventsFromOtherCharts() {\n var dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(createEventEmitter());\n }, [dispatch]);\n useTooltipSyncEventsListener();\n useBrushSyncEventsListener();\n}\n\n/**\n * Will send events to other charts.\n * If syncId is undefined, no events will be sent.\n *\n * This ignores the syncMethod, because that is set and computed on the receiving end.\n *\n * @param tooltipEventType from Tooltip\n * @param trigger from Tooltip\n * @param activeCoordinate from state\n * @param activeLabel from state\n * @param activeIndex from state\n * @param isTooltipActive from state\n * @returns void\n */\nexport function useTooltipChartSynchronisation(tooltipEventType, trigger, activeCoordinate, activeLabel, activeIndex, isTooltipActive) {\n var activeDataKey = useAppSelector(state => selectTooltipDataKey(state, tooltipEventType, trigger));\n var eventEmitterSymbol = useAppSelector(selectEventEmitter);\n var syncId = useAppSelector(selectSyncId);\n var syncMethod = useAppSelector(selectSyncMethod);\n var tooltipState = useAppSelector(selectSynchronisedTooltipState);\n var isReceivingSynchronisation = tooltipState === null || tooltipState === void 0 ? void 0 : tooltipState.active;\n useEffect(() => {\n if (isReceivingSynchronisation) {\n /*\n * This chart currently has active tooltip, synchronised from another chart.\n * Let's not send any outgoing synchronisation events while that's happening\n * to avoid infinite loops.\n */\n return;\n }\n if (syncId == null) {\n /*\n * syncId is not set, means that this chart is not synchronised with any other chart,\n * means we don't need to send synchronisation events\n */\n return;\n }\n if (eventEmitterSymbol == null) {\n /*\n * When using Recharts internal hooks and selectors outside charts context,\n * these properties will be undefined. Let's return silently instead of throwing an error.\n */\n return;\n }\n var syncAction = setSyncInteraction({\n active: isTooltipActive,\n coordinate: activeCoordinate,\n dataKey: activeDataKey,\n index: activeIndex,\n label: typeof activeLabel === 'number' ? String(activeLabel) : activeLabel\n });\n eventCenter.emit(TOOLTIP_SYNC_EVENT, syncId, syncAction, eventEmitterSymbol);\n }, [isReceivingSynchronisation, activeCoordinate, activeDataKey, activeIndex, activeLabel, eventEmitterSymbol, syncId, syncMethod, isTooltipActive]);\n}\nexport function useBrushChartSynchronisation() {\n var syncId = useAppSelector(selectSyncId);\n var eventEmitterSymbol = useAppSelector(selectEventEmitter);\n var brushStartIndex = useAppSelector(state => state.chartData.dataStartIndex);\n var brushEndIndex = useAppSelector(state => state.chartData.dataEndIndex);\n useEffect(() => {\n if (syncId == null || brushStartIndex == null || brushEndIndex == null || eventEmitterSymbol == null) {\n return;\n }\n var syncAction = {\n startIndex: brushStartIndex,\n endIndex: brushEndIndex\n };\n eventCenter.emit(BRUSH_SYNC_EVENT, syncId, syncAction, eventEmitterSymbol);\n }, [brushEndIndex, brushStartIndex, eventEmitterSymbol, syncId]);\n}","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { DefaultTooltipContent } from './DefaultTooltipContent';\nimport { TooltipBoundingBox } from './TooltipBoundingBox';\nimport { Global } from '../util/Global';\nimport { getUniqPayload } from '../util/payload/getUniqPayload';\nimport { useViewBox } from '../context/chartLayoutContext';\nimport { useAccessibilityLayer } from '../context/accessibilityContext';\nimport { useElementOffset } from '../util/useElementOffset';\nimport { Cursor } from './Cursor';\nimport { selectActiveCoordinate, selectActiveLabel, selectIsTooltipActive, selectTooltipPayload } from '../state/selectors/selectors';\nimport { useTooltipPortal } from '../context/tooltipPortalContext';\nimport { useAppDispatch, useAppSelector } from '../state/hooks';\nimport { setTooltipSettingsState } from '../state/tooltipSlice';\nimport { useTooltipChartSynchronisation } from '../synchronisation/useChartSynchronisation';\nimport { useTooltipEventType } from '../state/selectors/selectTooltipEventType';\nimport { resolveDefaultProps } from '../util/resolveDefaultProps';\nfunction defaultUniqBy(entry) {\n return entry.dataKey;\n}\nfunction renderContent(content, props) {\n if (/*#__PURE__*/React.isValidElement(content)) {\n return /*#__PURE__*/React.cloneElement(content, props);\n }\n if (typeof content === 'function') {\n return /*#__PURE__*/React.createElement(content, props);\n }\n return /*#__PURE__*/React.createElement(DefaultTooltipContent, props);\n}\nvar emptyPayload = [];\nvar defaultTooltipProps = {\n allowEscapeViewBox: {\n x: false,\n y: false\n },\n animationDuration: 400,\n animationEasing: 'ease',\n axisId: 0,\n contentStyle: {},\n cursor: true,\n filterNull: true,\n isAnimationActive: !Global.isSsr,\n itemSorter: 'name',\n itemStyle: {},\n labelStyle: {},\n offset: 10,\n reverseDirection: {\n x: false,\n y: false\n },\n separator: ' : ',\n trigger: 'hover',\n useTranslate3d: false,\n wrapperStyle: {}\n};\nexport function Tooltip(outsideProps) {\n var props = resolveDefaultProps(outsideProps, defaultTooltipProps);\n var {\n active: activeFromProps,\n allowEscapeViewBox,\n animationDuration,\n animationEasing,\n content,\n filterNull,\n isAnimationActive,\n offset,\n payloadUniqBy,\n position,\n reverseDirection,\n useTranslate3d,\n wrapperStyle,\n cursor,\n shared,\n trigger,\n defaultIndex,\n portal: portalFromProps,\n axisId\n } = props;\n var dispatch = useAppDispatch();\n var defaultIndexAsString = typeof defaultIndex === 'number' ? String(defaultIndex) : defaultIndex;\n useEffect(() => {\n dispatch(setTooltipSettingsState({\n shared,\n trigger,\n axisId,\n active: activeFromProps,\n defaultIndex: defaultIndexAsString\n }));\n }, [dispatch, shared, trigger, axisId, activeFromProps, defaultIndexAsString]);\n var viewBox = useViewBox();\n var accessibilityLayer = useAccessibilityLayer();\n var tooltipEventType = useTooltipEventType(shared);\n var {\n activeIndex,\n isActive\n } = useAppSelector(state => selectIsTooltipActive(state, tooltipEventType, trigger, defaultIndexAsString));\n var payloadFromRedux = useAppSelector(state => selectTooltipPayload(state, tooltipEventType, trigger, defaultIndexAsString));\n var labelFromRedux = useAppSelector(state => selectActiveLabel(state, tooltipEventType, trigger, defaultIndexAsString));\n var coordinate = useAppSelector(state => selectActiveCoordinate(state, tooltipEventType, trigger, defaultIndexAsString));\n var payload = payloadFromRedux;\n var tooltipPortalFromContext = useTooltipPortal();\n /*\n * The user can set `active=true` on the Tooltip in which case the Tooltip will stay always active,\n * or `active=false` in which case the Tooltip never shows.\n *\n * If the `active` prop is not defined then it will show and hide based on mouse or keyboard activity.\n */\n var finalIsActive = activeFromProps !== null && activeFromProps !== void 0 ? activeFromProps : isActive;\n var [lastBoundingBox, updateBoundingBox] = useElementOffset([payload, finalIsActive]);\n var finalLabel = tooltipEventType === 'axis' ? labelFromRedux : undefined;\n useTooltipChartSynchronisation(tooltipEventType, trigger, coordinate, finalLabel, activeIndex, finalIsActive);\n var tooltipPortal = portalFromProps !== null && portalFromProps !== void 0 ? portalFromProps : tooltipPortalFromContext;\n if (tooltipPortal == null) {\n return null;\n }\n var finalPayload = payload !== null && payload !== void 0 ? payload : emptyPayload;\n if (!finalIsActive) {\n finalPayload = emptyPayload;\n }\n if (filterNull && finalPayload.length) {\n finalPayload = getUniqPayload(payload.filter(entry => entry.value != null && (entry.hide !== true || props.includeHidden)), payloadUniqBy, defaultUniqBy);\n }\n var hasPayload = finalPayload.length > 0;\n var tooltipElement = /*#__PURE__*/React.createElement(TooltipBoundingBox, {\n allowEscapeViewBox: allowEscapeViewBox,\n animationDuration: animationDuration,\n animationEasing: animationEasing,\n isAnimationActive: isAnimationActive,\n active: finalIsActive,\n coordinate: coordinate,\n hasPayload: hasPayload,\n offset: offset,\n position: position,\n reverseDirection: reverseDirection,\n useTranslate3d: useTranslate3d,\n viewBox: viewBox,\n wrapperStyle: wrapperStyle,\n lastBoundingBox: lastBoundingBox,\n innerRef: updateBoundingBox,\n hasPortalFromProps: Boolean(portalFromProps)\n }, renderContent(content, _objectSpread(_objectSpread({}, props), {}, {\n // @ts-expect-error renderContent method expects the payload to be mutable, TODO make it immutable\n payload: finalPayload,\n label: finalLabel,\n active: finalIsActive,\n coordinate,\n accessibilityLayer\n })));\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/createPortal(tooltipElement, tooltipPortal), finalIsActive && /*#__PURE__*/React.createElement(Cursor, {\n cursor: cursor,\n tooltipEventType: tooltipEventType,\n coordinate: coordinate,\n payload: payload,\n index: activeIndex\n }));\n}","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nfunction debounce(func, wait = 0, options = {}) {\n if (typeof options !== 'object') {\n options = {};\n }\n let pendingArgs = null;\n let pendingThis = null;\n let lastCallTime = null;\n let debounceStartTime = 0;\n let timeoutId = null;\n let lastResult;\n const { leading = false, trailing = true, maxWait } = options;\n const hasMaxWait = 'maxWait' in options;\n const maxWaitMs = hasMaxWait ? Math.max(Number(maxWait) || 0, wait) : 0;\n const invoke = (time) => {\n if (pendingArgs !== null) {\n lastResult = func.apply(pendingThis, pendingArgs);\n }\n pendingArgs = pendingThis = null;\n debounceStartTime = time;\n return lastResult;\n };\n const handleLeading = (time) => {\n debounceStartTime = time;\n timeoutId = setTimeout(handleTimeout, wait);\n if (leading && pendingArgs !== null) {\n return invoke(time);\n }\n return lastResult;\n };\n const handleTrailing = (time) => {\n timeoutId = null;\n if (trailing && pendingArgs !== null) {\n return invoke(time);\n }\n return lastResult;\n };\n const checkCanInvoke = (time) => {\n if (lastCallTime === null) {\n return true;\n }\n const timeSinceLastCall = time - lastCallTime;\n const hasDebounceDelayPassed = timeSinceLastCall >= wait || timeSinceLastCall < 0;\n const hasMaxWaitPassed = hasMaxWait && time - debounceStartTime >= maxWaitMs;\n return hasDebounceDelayPassed || hasMaxWaitPassed;\n };\n const calculateRemainingWait = (time) => {\n const timeSinceLastCall = lastCallTime === null ? 0 : time - lastCallTime;\n const remainingDebounceTime = wait - timeSinceLastCall;\n const remainingMaxWaitTime = maxWaitMs - (time - debounceStartTime);\n return hasMaxWait ? Math.min(remainingDebounceTime, remainingMaxWaitTime) : remainingDebounceTime;\n };\n const handleTimeout = () => {\n const currentTime = Date.now();\n if (checkCanInvoke(currentTime)) {\n return handleTrailing(currentTime);\n }\n timeoutId = setTimeout(handleTimeout, calculateRemainingWait(currentTime));\n };\n const debouncedFunction = function (...args) {\n const currentTime = Date.now();\n const canInvoke = checkCanInvoke(currentTime);\n pendingArgs = args;\n pendingThis = this;\n lastCallTime = currentTime;\n if (canInvoke) {\n if (timeoutId === null) {\n return handleLeading(currentTime);\n }\n if (hasMaxWait) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(handleTimeout, wait);\n return invoke(currentTime);\n }\n }\n if (timeoutId === null) {\n timeoutId = setTimeout(handleTimeout, wait);\n }\n return lastResult;\n };\n debouncedFunction.cancel = () => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n debounceStartTime = 0;\n lastCallTime = pendingArgs = pendingThis = timeoutId = null;\n };\n debouncedFunction.flush = () => {\n return timeoutId === null ? lastResult : handleTrailing(Date.now());\n };\n return debouncedFunction;\n}\n\nexports.debounce = debounce;\n","'use strict';\n\nObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\nconst debounce = require('./debounce.js');\n\nfunction throttle(func, throttleMs = 0, options = {}) {\n const { leading = true, trailing = true } = options;\n return debounce.debounce(func, throttleMs, {\n leading,\n maxWait: throttleMs,\n trailing,\n });\n}\n\nexports.throttle = throttle;\n","module.exports = require('../dist/compat/function/throttle.js').throttle;\n","/* eslint no-console: 0 */\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n console.warn(format.replace(/%s/g, () => args[argIndex++]));\n }\n }\n }\n};","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { clsx } from 'clsx';\nimport * as React from 'react';\nimport { forwardRef, cloneElement, useState, useImperativeHandle, useRef, useEffect, useMemo, useCallback } from 'react';\nimport throttle from 'es-toolkit/compat/throttle';\nimport { isPercent } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nexport var ResponsiveContainer = /*#__PURE__*/forwardRef((_ref, ref) => {\n var {\n aspect,\n initialDimension = {\n width: -1,\n height: -1\n },\n width = '100%',\n height = '100%',\n /*\n * default min-width to 0 if not specified - 'auto' causes issues with flexbox\n * https://github.com/recharts/recharts/issues/172\n */\n minWidth = 0,\n minHeight,\n maxHeight,\n children,\n debounce = 0,\n id,\n className,\n onResize,\n style = {}\n } = _ref;\n var containerRef = useRef(null);\n var onResizeRef = useRef();\n onResizeRef.current = onResize;\n useImperativeHandle(ref, () => containerRef.current);\n var [sizes, setSizes] = useState({\n containerWidth: initialDimension.width,\n containerHeight: initialDimension.height\n });\n var setContainerSize = useCallback((newWidth, newHeight) => {\n setSizes(prevState => {\n var roundedWidth = Math.round(newWidth);\n var roundedHeight = Math.round(newHeight);\n if (prevState.containerWidth === roundedWidth && prevState.containerHeight === roundedHeight) {\n return prevState;\n }\n return {\n containerWidth: roundedWidth,\n containerHeight: roundedHeight\n };\n });\n }, []);\n useEffect(() => {\n var callback = entries => {\n var _onResizeRef$current;\n var {\n width: containerWidth,\n height: containerHeight\n } = entries[0].contentRect;\n setContainerSize(containerWidth, containerHeight);\n (_onResizeRef$current = onResizeRef.current) === null || _onResizeRef$current === void 0 || _onResizeRef$current.call(onResizeRef, containerWidth, containerHeight);\n };\n if (debounce > 0) {\n callback = throttle(callback, debounce, {\n trailing: true,\n leading: false\n });\n }\n var observer = new ResizeObserver(callback);\n var {\n width: containerWidth,\n height: containerHeight\n } = containerRef.current.getBoundingClientRect();\n setContainerSize(containerWidth, containerHeight);\n observer.observe(containerRef.current);\n return () => {\n observer.disconnect();\n };\n }, [setContainerSize, debounce]);\n var chartContent = useMemo(() => {\n var {\n containerWidth,\n containerHeight\n } = sizes;\n if (containerWidth < 0 || containerHeight < 0) {\n return null;\n }\n warn(isPercent(width) || isPercent(height), \"The width(%s) and height(%s) are both fixed numbers,\\n maybe you don't need to use a ResponsiveContainer.\", width, height);\n warn(!aspect || aspect > 0, 'The aspect(%s) must be greater than zero.', aspect);\n var calculatedWidth = isPercent(width) ? containerWidth : width;\n var calculatedHeight = isPercent(height) ? containerHeight : height;\n if (aspect && aspect > 0) {\n // Preserve the desired aspect ratio\n if (calculatedWidth) {\n // Will default to using width for aspect ratio\n calculatedHeight = calculatedWidth / aspect;\n } else if (calculatedHeight) {\n // But we should also take height into consideration\n calculatedWidth = calculatedHeight * aspect;\n }\n\n // if maxHeight is set, overwrite if calculatedHeight is greater than maxHeight\n if (maxHeight && calculatedHeight > maxHeight) {\n calculatedHeight = maxHeight;\n }\n }\n warn(calculatedWidth > 0 || calculatedHeight > 0, \"The width(%s) and height(%s) of chart should be greater than 0,\\n please check the style of container, or the props width(%s) and height(%s),\\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\\n height and width.\", calculatedWidth, calculatedHeight, width, height, minWidth, minHeight, aspect);\n return React.Children.map(children, child => {\n return /*#__PURE__*/cloneElement(child, {\n width: calculatedWidth,\n height: calculatedHeight,\n // calculate the actual size and override it.\n style: _objectSpread({\n width: calculatedWidth,\n height: calculatedHeight\n }, child.props.style)\n });\n });\n }, [aspect, children, height, maxHeight, minHeight, minWidth, sizes, width]);\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id ? \"\".concat(id) : undefined,\n className: clsx('recharts-responsive-container', className),\n style: _objectSpread(_objectSpread({}, style), {}, {\n width,\n height,\n minWidth,\n minHeight,\n maxHeight\n }),\n ref: containerRef\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: {\n width: 0,\n height: 0,\n overflow: 'visible'\n }\n }, chartContent));\n});","import * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\n\nimport { cn } from \"@/lib/utils\";\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\nexport type ChartConfig = {\n\t[k in string]: {\n\t\tlabel?: React.ReactNode;\n\t\ticon?: React.ComponentType;\n\t} & (\n\t\t| { color?: string; theme?: never }\n\t\t| { color?: never; theme: Record<keyof typeof THEMES, string> }\n\t);\n};\n\ntype ChartContextProps = {\n\tconfig: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n\tconst context = React.useContext(ChartContext);\n\n\tif (!context) {\n\t\tthrow new Error(\"useChart must be used within a <ChartContainer />\");\n\t}\n\n\treturn context;\n}\n\nfunction ChartContainer({\n\tid,\n\tclassName,\n\tchildren,\n\tconfig,\n\t...props\n}: React.ComponentProps<\"div\"> & {\n\tconfig: ChartConfig;\n\tchildren: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>[\"children\"];\n}) {\n\tconst uniqueId = React.useId();\n\tconst chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n\treturn (\n\t\t<ChartContext.Provider value={{ config }}>\n\t\t\t<div\n\t\t\t\tdata-slot=\"chart\"\n\t\t\t\tdata-chart={chartId}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<ChartStyle id={chartId} config={config} />\n\t\t\t\t<RechartsPrimitive.ResponsiveContainer>{children}</RechartsPrimitive.ResponsiveContainer>\n\t\t\t</div>\n\t\t</ChartContext.Provider>\n\t);\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n\tconst colorConfig = Object.entries(config).filter(([, config]) => config.theme || config.color);\n\n\tif (!colorConfig.length) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<style\n\t\t\t// biome-ignore lint/security/noDangerouslySetInnerHtml: <explanation>\n\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t__html: Object.entries(THEMES)\n\t\t\t\t\t.map(\n\t\t\t\t\t\t([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n\t.map(([key, itemConfig]) => {\n\t\tconst color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] || itemConfig.color;\n\t\treturn color ? ` --color-${key}: ${color};` : null;\n\t})\n\t.join(\"\\n\")}\n}\n`,\n\t\t\t\t\t)\n\t\t\t\t\t.join(\"\\n\"),\n\t\t\t}}\n\t\t/>\n\t);\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nfunction ChartTooltipContent({\n\tactive,\n\tpayload,\n\tclassName,\n\tindicator = \"dot\",\n\thideLabel = false,\n\thideIndicator = false,\n\tlabel,\n\tlabelFormatter,\n\tlabelClassName,\n\tformatter,\n\tcolor,\n\tnameKey,\n\tlabelKey,\n}: Omit<React.ComponentProps<typeof RechartsPrimitive.Tooltip>, \"payload\"> &\n\tReact.ComponentProps<\"div\"> & {\n\t\tpayload?: Array<{\n\t\t\tname?: string;\n\t\t\tdataKey?: string;\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\t\tvalue?: any;\n\t\t\tcolor?: string;\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\t\tpayload?: Record<string, any>;\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\t\t[key: string]: any;\n\t\t}>;\n\t\thideLabel?: boolean;\n\t\thideIndicator?: boolean;\n\t\tindicator?: \"line\" | \"dot\" | \"dashed\";\n\t\tnameKey?: string;\n\t\tlabelKey?: string;\n\t\tlabel?: string;\n\t}) {\n\tconst { config } = useChart();\n\n\tconst tooltipLabel = React.useMemo(() => {\n\t\tif (hideLabel || !payload?.length) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst [item] = payload;\n\t\tconst key = `${labelKey || item?.dataKey || item?.name || \"value\"}`;\n\t\tconst itemConfig = getPayloadConfigFromPayload(config, item, key);\n\t\tconst value =\n\t\t\t!labelKey && typeof label === \"string\"\n\t\t\t\t? config[label as keyof typeof config]?.label || label\n\t\t\t\t: itemConfig?.label;\n\n\t\tif (labelFormatter) {\n\t\t\treturn (\n\t\t\t\t<div className={cn(\"font-medium\", labelClassName)}>{labelFormatter(value, payload)}</div>\n\t\t\t);\n\t\t}\n\n\t\tif (!value) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n\t}, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n\tif (!active || !payload?.length) {\n\t\treturn null;\n\t}\n\n\tconst nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{!nestLabel ? tooltipLabel : null}\n\t\t\t<div className=\"grid gap-1.5\">\n\t\t\t\t{payload.map((item, index) => {\n\t\t\t\t\tconst key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n\t\t\t\t\tconst itemConfig = getPayloadConfigFromPayload(config, item, key);\n\t\t\t\t\tconst indicatorColor = color || item.payload?.fill || item.color;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={item.dataKey}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n\t\t\t\t\t\t\t\tindicator === \"dot\" && \"items-center\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{formatter && item?.value !== undefined && item.name ? (\n\t\t\t\t\t\t\t\tformatter(item.value, item.name, item, index, item.payload?.fill)\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{itemConfig?.icon ? (\n\t\t\t\t\t\t\t\t\t\t<itemConfig.icon />\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t!hideIndicator && (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"h-2.5 w-2.5\": indicator === \"dot\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"w-1\": indicator === \"line\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"w-0 border-[1.5px] border-dashed bg-transparent\":\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindicator === \"dashed\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"my-0.5\": nestLabel && indicator === \"dashed\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"--color-bg\": indicatorColor,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"--color-border\": indicatorColor,\n\t\t\t\t\t\t\t\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\"flex flex-1 justify-between leading-none\",\n\t\t\t\t\t\t\t\t\t\t\tnestLabel ? \"items-end\" : \"items-center\",\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div className=\"grid gap-1.5\">\n\t\t\t\t\t\t\t\t\t\t\t{nestLabel ? tooltipLabel : null}\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t{itemConfig?.label || item.name}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t{item.value && (\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-foreground font-mono font-medium tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t\t\t{item.value.toLocaleString()}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nfunction ChartLegendContent({\n\tclassName,\n\thideIcon = false,\n\tpayload,\n\tverticalAlign = \"bottom\",\n\tnameKey,\n}: React.ComponentProps<\"div\"> & {\n\tpayload?: RechartsPrimitive.LegendPayload[];\n\tverticalAlign?: RechartsPrimitive.LegendProps[\"verticalAlign\"];\n\thideIcon?: boolean;\n\tnameKey?: string;\n}) {\n\tconst { config } = useChart();\n\n\tif (!payload?.length) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex items-center justify-center gap-4\",\n\t\t\t\tverticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{payload.map((item) => {\n\t\t\t\tconst key = `${nameKey || item.dataKey || \"value\"}`;\n\t\t\t\tconst itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={item.value}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{itemConfig?.icon && !hideIcon ? (\n\t\t\t\t\t\t\t<itemConfig.icon />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"h-2 w-2 shrink-0 rounded-[2px]\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tbackgroundColor: item.color,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{itemConfig?.label}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n\tif (typeof payload !== \"object\" || payload === null) {\n\t\treturn undefined;\n\t}\n\n\tconst payloadPayload =\n\t\t\"payload\" in payload && typeof payload.payload === \"object\" && payload.payload !== null\n\t\t\t? payload.payload\n\t\t\t: undefined;\n\n\tlet configLabelKey: string = key;\n\n\tif (key in payload && typeof payload[key as keyof typeof payload] === \"string\") {\n\t\tconfigLabelKey = payload[key as keyof typeof payload] as string;\n\t} else if (\n\t\tpayloadPayload &&\n\t\tkey in payloadPayload &&\n\t\ttypeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n\t) {\n\t\tconfigLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string;\n\t}\n\n\treturn configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config];\n}\n\nexport {\n\tChartContainer,\n\tChartTooltip,\n\tChartTooltipContent,\n\tChartLegend,\n\tChartLegendContent,\n\tChartStyle,\n};\n","import { useAppSelector } from '../state/hooks';\nexport var useAccessibilityLayer = () => useAppSelector(state => state.rootProps.accessibilityLayer);"],"names":["Object","defineProperty","exports","Symbol","toStringTag","value","isUnsafeProperty","key","isDeepKey","includes","toKey","is","valueOf","String","toPath","deepKey","result","length","index","quoteChar","bracket","charCodeAt","push","char","require$$0","require$$1","require$$2","require$$3","get","object","path","defaultValue","undefined","Array","isArray","current","getWithPath","mathSign","isNan","isPercent","indexOf","isNumber","Number","isNumOrStr","getPercentValue","percent","totalValue","arguments","validate","parseFloat","slice","hasDuplicate","ary","len","cache","i","isNullish","upperFirst","concat","charAt","toUpperCase","SVGElementPropKeys","PolyElementKeys","FilteredElementKeyMap","svg","polygon","polyline","EventKeys","filterProps","props","includeEvents","svgElementType","inputProps","isValidElement","out","keys","forEach","_inputProps","property","_ref","matchingElementTypeKeys","startsWith","isValidSpreadableProp","_excluded","_extends","assign","bind","n","e","t","r","hasOwnProperty","call","apply","Surface","forwardRef","ref","children","width","height","viewBox","className","style","title","desc","others","o","_objectWithoutPropertiesLoose","getOwnPropertySymbols","propertyIsEnumerable","_objectWithoutProperties","svgView","x","y","layerClass","clsx","React","createElement","LegendPortalContext","createContext","constant$1","cos","Math","sin","sqrt","pi","PI","tau","epsilon","tauEpsilon","append","strings","this","_","Path","moveTo","_append","_x0","_x1","_y0","_y1","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","Error","x0","y0","x21","y21","x01","y01","l01_2","abs","x20","y20","l21_2","l20_2","l21","l01","l","tan","acos","t01","t21","arc","a0","a1","ccw","dx","dy","cw","da","rect","w","h","toString","constructor","digits","d","floor","k","round","appendRound","withPath","shape","RangeError","array","from","Linear","context","_context","curveLinear","p","shapeLine","defined","constant","curve","output","line","data","buffer","defined0","lineStart","lineEnd","point","pointX","pointY","shapeArea","area","j","x0z","y0z","areaStart","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","prototype","_line","NaN","_point","Bump","_x","symbolCircle","draw","size","symbolCross","tan30","tan30_2","symbolDiamond","symbolSquare","kr","kx","ky","symbolStar","a","c","s","sqrt3","symbolTriangle","symbolWye","noop$3","that","Basis","BasisClosed","BasisOpen","LinearClosed","sign","slope3","h0","h1","s0","s1","min","slope2","t0","t1","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","m","b","Step","_t","stackOffsetNone","series","order","isNaN","stackOrderNone","stackValue","stackSeries","noop","_x2","_x3","_x4","_y2","_y3","_y4","_t0","create","_y","px","py","i0","i1","ownKeys","filter","getOwnPropertyDescriptor","enumerable","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","toPrimitive","TypeError","_toPrimitive","_toPropertyKey","configurable","writable","symbolFactories","RADIAN","Symbols","symbolFactory","symbol","type","sizeType","cx","cy","filteredProps","transform","name","getSymbolFactory","circle","shapeSymbol","angle","calculateAreaSize","registerSymbol","factory","SIZE","DefaultLegendContent","PureComponent","renderIcon","iconType","inactiveColor","halfSize","sixthSize","thirdSize","color","inactive","preferredIcon","strokeWidth","fill","stroke","strokeDasharray","payload","legendIcon","iconProps","cloneElement","renderItems","iconSize","layout","formatter","itemStyle","display","marginRight","svgStyle","verticalAlign","map","entry","finalFormatter","finalValue","item","originalHandler","getEventHandlerOfChild","adaptEventsOfChild","render","align","finalStyle","padding","margin","textAlign","uniqBy","arr","mapper","Map","has","set","values","identity","isLength","isSafeInteger","isArrayLike","isObjectLike","isArrayLikeObject","isObject","isPrimitive","eq","other","isMatch","isMatchWithInternal","target","source","compare","stack","isArrayMatch","sourceValue","entries","isMapMatch","Set","isSetMatch","delete","isObjectMatch","countedIndex","sourceItem","found","matches","add","isMatchWith","doesMatch","objValue","srcValue","isEqual","Boolean","getSymbols","getTag","argumentsTag","arrayBufferTag","arrayTag","bigInt64ArrayTag","bigUint64ArrayTag","booleanTag","dataViewTag","dateTag","errorTag","float32ArrayTag","float64ArrayTag","functionTag","int16ArrayTag","int32ArrayTag","int8ArrayTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","symbolTag","uint16ArrayTag","uint32ArrayTag","uint8ArrayTag","uint8ClampedArrayTag","isTypedArray","ArrayBuffer","isView","DataView","tags","require$$4","cloneDeepWithImpl","valueToClone","keyToClone","objectToClone","cloneValue","cloned","hasOwn","input","Date","getTime","RegExp","flags","lastIndex","Buffer","isBuffer","subarray","getPrototypeOf","SharedArrayBuffer","byteOffset","byteLength","copyProperties","File","Blob","message","cause","isCloneableObject","descriptor","cloneDeepWith","obj","cloneDeep","cloneDeepWith$1","customizer","iterator","IS_UNSIGNED_INTEGER","isIndex","MAX_SAFE_INTEGER","isInteger","test","isArguments","resolvedPath","matchesProperty","iteratee","uniqBy$1","iteratee$1","getUniqPayload","option","defaultUniqBy","process","env","NODE_ENV","withSelectorModule","shim","objectIs","useSyncExternalStore","useRef","useEffect","useMemo","useDebugValue","withSelector_production","useSyncExternalStoreWithSelector","subscribe","getSnapshot","getServerSnapshot","selector","instRef","inst","hasValue","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","__REACT_DEVTOOLS_GLOBAL_HOOK__","registerInternalModuleStart","withSelector_development","registerInternalModuleStop","RechartsReduxContext","noopDispatch","useAppDispatch","useContext","store","dispatch","addNestedSubNoop","refEquality","useAppSelector","subscription","addNestedSub","getState","runIdentityFunctionCheck","resultFunc","inputSelectorsResults","outputSelectorResult","isInputSameAsOutput","emptyObject","getPriority","compareValues","aPriority","bPriority","isSymbol","regexIsDeepProp","regexIsPlainProp","isKey","orderBy","collection","criteria","orders","guard","getValueByNestedPath","preparedCriteria","criterion","preparedCollection","original","getValueByCriterion","sort","comparedResult","flatten","depth","flooredDepth","recursive","currentDepth","isIterateeCall","sortBy","selectLegendSettings","state","legend","settings","selectLegendPayload","createSelector","payloads","itemSorter","flat","useElementOffset","extraDependencies","lastBoundingBox","setLastBoundingBox","useState","left","top","updateBoundingBox","useCallback","node","getBoundingClientRect","box","NOTHING","for","DRAFTABLE","DRAFT_STATE","polarToCartesian","radius","getValueByDataKey","dataKey","isCategoricalAxis","axisType","EPS","STACK_OFFSET_MAP","positive","negative","expand","none","silhouette","wiggle","s2","si","sij0","s3","sk","getStackedData","dataKeys","offsetType","offsetAccessor","orderNone","offset","offsetNone","oz","sz","shapeStack","getDomainOfStackGroups","stackGroups","startIndex","endIndex","domain","reduce","stackId","group","stackedData","res","max","Infinity","MIN_VALUE_REG","MAX_VALUE_REG","getTooltipEntry","_ref4","tooltipEntrySettings","selectChartWidth","selectChartHeight","selectMargin","selectAllXAxes","cartesianAxis","xAxis","xAxisMap","selectAllYAxes","yAxis","yAxisMap","selectChartOffsetInternal","brush","chartWidth","chartHeight","brushHeight","xAxes","yAxes","legendSettings","legendSize","offsetH","orientation","mirror","hide","right","offsetV","bottom","brushBottom","boxWidth","boxHeight","appendOffsetOfLegend","offsetWidth","offsetHeight","selectChartViewBox","PanoramaContext","selectBrushSettings","selectBrushDimensions","brushSettings","useViewBox","_useAppSelector","panorama","rootViewBox","brushDimensions","brushPadding","manyComponentsThrowErrorsIfOffsetIsUndefined","manyComponentsThrowErrorsIfMarginIsUndefined","selectChartLayout","layoutType","legendSlice","createSlice","initialState","reducers","setLegendSize","action","setLegendSettings","addLegendPayload","removeLegendPayload","splice","actions","LegendContent","contextPayload","otherProps","finalPayload","payloadUniqBy","contentProps","content","LegendSettingsDispatcher","LegendSizeDispatcher","LegendWrapper","_useAppSelector3","legendPortalFromContext","widthFromProps","heightFromProps","wrapperStyle","portal","portalFromProps","maxWidth","widthOrHeight","Legend","getWidthOrHeight","outerStyle","position","hPos","vPos","getDefaultPosition","legendPortal","legendElement","createPortal","defaultFormatter","join","DefaultTooltipContent","separator","contentStyle","labelStyle","wrapperClassName","labelClassName","label","labelFormatter","accessibilityLayer","backgroundColor","border","whiteSpace","finalLabelStyle","hasLabel","finalLabel","wrapperCN","labelCN","accessibilityAttributes","role","items","finalName","formatted","finalItemStyle","paddingTop","paddingBottom","unit","renderContent","CSS_CLASS_PREFIX","TOOLTIP_HIDDEN","visibility","getTooltipCSSClassName","coordinate","translateX","translateY","getTooltipTranslateXY","_ref2","allowEscapeViewBox","offsetTopLeft","reverseDirection","tooltipDimension","viewBoxDimension","viewBoxKey","TooltipBoundingBox","componentDidMount","document","addEventListener","handleKeyDown","componentWillUnmount","removeEventListener","componentDidUpdate","_this$props$coordinat5","_this$props$coordinat6","dismissed","dismissedAtCoordinate","active","animationDuration","animationEasing","hasPayload","isAnimationActive","useTranslate3d","innerRef","hasPortalFromProps","cssClasses","cssProperties","tooltipBox","_ref3","getTransformStyle","getTooltipTranslate","positionStyles","transition","pointerEvents","xmlns","tabIndex","super","event","_this$props$coordinat","_this$props$coordinat2","_this$props$coordinat3","_this$props$coordinat4","setState","Global","window","setTimeout","isWellBehavedNumber","isFinite","CURVE_FACTORIES","curveBasisClosed","curveBasisOpen","curveBasis","curveBumpX","curveBumpY","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","getX","getY","getPath","lineFunction","points","baseLine","connectNulls","curveFactory","getCurveFactory","formatPoints","formatBaseLine","base","areaPoints","Curve","pathRef","realPath","adaptEventHandlers","Cross","resolveDefaultProps","realProps","defaultProps","resolvedProps","dp","acc","isPlainObject","proto","isEqualWithImpl","aParent","bParent","areValuesEqual","areObjectsEqual","aTag","bTag","aStack","bStack","aValues","bValues","aValue","findIndex","bValue","Uint8Array","aKeys","bKeys","propKey","aProp","isEqualWith","ACCURACY","cubicBezierFactor","c1","c2","evaluatePolynomial","params","param","pre","curr","cubicBezier","configBezier","_len","args","_key","easing","split","curveX","curveY","derCurveX","newParams","rangeValue","bezier","evalT","derVal","isStepper","configEasing","config","stiff","damping","dt","stepper","currX","destX","currV","newV","newX","configSpring","mapObject","fn","alpha","begin","end","needContinue","to","calStepperVals","preVals","steps","nextStepVals","val","velocity","createStepperUpdate","interKeys","timeoutController","preTime","stepperStyle","stopAnimation","stepperUpdate","now","configUpdate","duration","preObj","nextObj","beginTime","timingStyle","timingUpdate","currStyle","createTimingUpdate","RequestAnimationFrameTimeoutController","callback","delay","startTime","performance","requestId","executeCallback","requestAnimationFrame","cancelAnimationFrame","createDefaultAnimationManager","handleChange","shouldStop","cancelTimeout","setStyle","_style","styles","restStyles","stop","start","_handleChange","getTimeoutController","AnimateImpl","isActive","canBegin","mounted","runAnimation","prevProps","attributeName","shouldReAnimate","currentFrom","isTriggered","manager","stopJSAnimation","_newState","newState","onAnimationEnd","unSubscribe","handleStyleChange","changeStyle","runJSAnimation","onAnimationStart","startAnimation","propsTo","prop","replace","v","toLowerCase","getTransitionVal","_this$props","onAnimationReStart","animationManager","count","Children","stateStyle","cloneContainer","container","only","child","AnimationManagerContext","Animate","_props$animationManag","contextAnimationManager","getRectanglePath","maxRadius","ySign","xSign","clockWise","newRadius","_newRadius","isUpdateAnimationActive","animationBegin","Rectangle","rectangleProps","totalLength","setTotalLength","getTotalLength","pathTotalLength","_unused","currWidth","currHeight","currY","getRadialCursorPoints","activeCoordinate","startAngle","endAngle","getTangentCircle","isExternal","cornerRadius","cornerIsExternal","centerRadius","theta","asin","centerAngle","lineTangencyAngle","center","circleTangency","lineTangency","getSectorPath","innerRadius","outerRadius","getDeltaAngle","tempEndAngle","outerStartPoint","outerEndPoint","innerStartPoint","innerEndPoint","forceCornerRadius","Sector","sectorProps","deltaRadius","cr","soct","solt","sot","eoct","eolt","eot","outerArcAngle","sict","silt","sit","eict","eilt","eit","innerArcAngle","getSectorWithCorner","getCursorPoints","innerPoint","outerPoint","toNumber","toFinite","MAX_VALUE","range","step","ceil","ascending","descending","bisector","f","compare1","compare2","delta","lo","hi","mid","zero","number","bisectRight","InternMap","intern_get","_intern","intern_set","intern_delete","keyof","ascendingDefined","e10","e5","e2","tickSpec","power","log10","error","pow","factor","i2","inc","ticks","reverse","tickIncrement","tickStep","valueof","quickselect","compareDefined","z","log","exp","sd","swap","quantileSorted","value0","initRange","initInterpolator","interpolator","implicit","ordinal","unknown","scale","copy","band","bandwidth","ordinalRange","r0","r1","paddingInner","paddingOuter","rescale","sequence","rangeRound","pointish","define","extend","parent","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","format","trim","exec","parseInt","rgbn","Rgb","rgba","hsla","g","opacity","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","channels","displayable","formatHex8","formatHsl","clamp","gamma","nogamma","exponential","linear","rgbGamma","colorRgb","numberArray","genericArray","nb","na","date$1","setTime","interpolateNumber","reA","reB","string","am","bm","bs","bi","q","one","interpolate","date","isNumberArray","interpolateRound","piecewise","I","normalize","bimap","d0","d1","polymap","bisect","transformer","untransform","interpolateValue","clamper","invert","u","continuous","formatDecimalParts","toExponential","coefficient","exponent","prefixExponent","re","formatSpecifier","specifier","match","FormatSpecifier","comma","precision","formatRounded","formatTypes","toFixed","toLocaleString","toPrecision","X","identity$2","locale","formatPrefix","prefixes","formatLocale$1","grouping","thousands","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","minus","nan","newFormat","prefix","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","tickFormat","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","interval","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","E","log2","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","transformPow","transformSqrt","transformSquare","powish","square","formatLocale","timeInterval","floori","offseti","field","previous","every","millisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","second","getMilliseconds","getUTCSeconds","timeMinute","getSeconds","getMinutes","utcMinute","setUTCSeconds","getUTCMinutes","timeHour","getHours","utcHour","setUTCMinutes","getUTCHours","timeDay","setHours","setDate","getDate","getTimezoneOffset","utcDay","setUTCHours","setUTCDate","getUTCDate","unixDay","timeWeekday","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","setMonth","getMonth","getFullYear","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","timeYear","setFullYear","utcYear","setUTCFullYear","ticker","year","month","week","day","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","H","M","S","L","utcDate","UTC","newDate","timeFormat","utcFormat","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","names","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","k10","sequentialPow","t2","k21","r2","divergingPow","locale_dateTime","dateTime","locale_date","locale_time","time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","A","B","G","Y","utcFormats","parses","parseSpecifier","newParse","parse","utcParse","defaultLocale","diverging","divergingLog","divergingSymlog","quantile","thresholds","threshold","invertExtent","quantiles","quantize","radial","squared","unsquare","sequential","sequentialLog","sequentialQuantile","Float64Array","numbers","sequentialSymlog","symlog","timeWeek","timeSecond","utcWeek","utcSecond","selectChartDataWithIndexes","chartData","selectChartDataAndAlwaysIgnoreIndexes","dataState","dataEndIndex","computedData","dataStartIndex","isWellFormedNumberDomain","extendDomain","providedDomain","boundaryDomain","allowDataOverflow","ONE","MAX_DIGITS","external","decimalError","invalidArgument","exponentOutOfRange","mathfloor","mathpow","isDecimal","BASE","MAX_E","P","carry","xd","yd","Ctor","pr","unshift","pop","checkInt32","digitsToString","ws","indexOfLastWord","str","getZeroString","absoluteValue","comparedTo","cmp","xdL","ydL","decimalPlaces","dividedBy","div","divide","dividedToIntegerBy","idiv","equals","getBase10Exponent","greaterThan","gt","greaterThanOrEqualTo","gte","isint","isNegative","isneg","isPositive","ispos","isZero","lessThan","lt","lessThanOrEqualTo","lte","logarithm","wpr","ln","sub","subtract","modulo","mod","times","naturalExponential","naturalLogarithm","negated","neg","plus","squareRoot","mul","rL","shift","toDecimalPlaces","todp","rm","rounding","toInteger","toint","toPower","yIsInt","yn","truncate","toExpNeg","toExpPos","toSignificantDigits","tosd","toJSON","multiplyInteger","temp","aL","bL","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","denominator","sum","LN10","getLn10","zs","c0","numerator","parseDecimal","search","rd","doRound","xdi","xe","xLTy","isExp","ps","Decimal","clone","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","Decimal$1","PLACE_HOLDER","isPlaceHolder","curry0","_curried","curryN","argsLength","arg","_len2","restArgs","_key2","newArgs","curry","memoize","lastArgs","lastResult","_len4","_key4","_lastArgs","getDigitCount","rangeStep","num","newA","diff","getValidInterval","validMin","validMax","getFormatStep","roughStep","allowDecimals","correctionFactor","digitCount","digitCountValue","stepRatio","stepRatioScale","formatStep","getTickOfSingleValue","tickCount","middle","absVal","middleIndex","_len3","_key3","fns","firstFn","tailsFn","compose","_calculateStep","tickMin","tickMax","belowCount","upCount","scaleCount","getNiceTickValues","cormin","cormax","_values","getTickValuesFixedDomain","selectStackOffsetType","rootProps","stackOffset","selectChartName","options","chartName","selectSyncId","syncId","selectSyncMethod","syncMethod","selectEventEmitter","eventEmitter","defaultPolarAngleAxisProps","defaultPolarRadiusAxisProps","combineAxisRangeWithReverse","axisSettings","axisRange","reversed","implicitAngleAxis","allowDuplicatedCategory","id","includeHidden","tick","implicitRadiusAxis","implicitRadialBarAngleAxis","implicitRadialBarRadiusAxis","selectAngleAxis","angleAxisId","polarAxis","angleAxis","selectRadiusAxis","radiusAxisId","radiusAxis","selectPolarOptions","polarOptions","selectMaxRadius","selectInnerRadius","polarChartOptions","selectOuterRadius","selectAngleAxisRange","selectRadiusAxisRange","pickAxisType","_state","pickAxisId","_axisType","axisId","defaultNumericDomain","implicitXAxis","minTickGap","tickFormatter","selectXAxisSettings","axis","implicitYAxis","selectYAxisSettings","implicitZAxis","selectZAxisSettings","zAxis","selectBaseAxis","selectAxisSettings","selectHasBar","graphicalItems","countOfBars","itemAxisPredicate","xAxisId","yAxisId","zAxisId","selectAxisPredicate","combineGraphicalItemsSettings","axisPredicate","selectCartesianItemsSettings","cartesianItems","filterGraphicalNotStackedItems","selectCartesianItemsSettingsExceptStacked","combineGraphicalItemsData","selectCartesianGraphicalItemsData","combineDisplayedData","graphicalItemsData","selectDisplayedData","_xAxisId","_yAxisId","isPanorama","combineAppliedValues","flatMap","selectAllAppliedValues","isErrorBarRelevantForAxisType","errorBar","direction","onlyAllowNumbers","getErrorDomainByDataKey","appliedValue","relevantErrorBars","eb","lowBound","highBound","errorValue","combineStackGroups","displayedData","stackOffsetType","itemsGroup","fromEntries","selectStackGroups","combineDomainOfStackGroups","domainOfStackGroups","selectDomainOfStackGroups","combineAppliedNumericalValuesIncludingErrorValues","_item$errorBars","_axisSettings$dataKey","errorBars","valueByDataKey","errorDomain","selectAllAppliedNumericalValuesIncludingErrorValues","onlyAllowNumbersAndStringsAndDates","getDomainDefinition","_axisSettings$domain","allValues","mergeDomains","domains","allDomains","selectReferenceDots","referenceElements","dots","filterReferenceElements","elements","el","ifOverflow","selectReferenceDotsByAxis","selectReferenceAreas","areas","selectReferenceAreasByAxis","selectReferenceLines","lines","selectReferenceLinesByAxis","combineDotsDomain","allCoords","dot","selectReferenceDotsDomain","combineAreasDomain","selectReferenceAreasDomain","combineLinesDomain","selectReferenceLinesDomain","selectReferenceElementsDomain","dotsDomain","linesDomain","areasDomain","selectDomainDefinition","combineNumericalDomain","domainDefinition","allDataWithErrorDomains","referenceElementsDomain","domainFromUserPreference","userDomain","finalMin","finalMax","providedMin","providedMax","candidate","numericalDomainSpecifiedWithoutRequiringData","dataDomain","_unused2","_unused3","_match","_value","parseNumericalUserDomain","dataWithErrorDomains","onlyNumbers","computeNumericalDomain","selectNumericalDomain","expandDomain","combineAxisDomain","allAppliedValues","numericalDomain","isCategorical","allDataSquished","categoricalDomain","computeDomainOfTypeCategory","selectAxisDomain","combineRealScaleType","axisConfig","hasBar","chartType","d3Scales","selectRealScaleType","combineScaleFunction","realScaleType","axisDomain","d3ScaleFunction","getD3ScaleFromType","minValue","maxValue","first","last","checkDomainOfScale","combineNiceTicks","selectNiceTicks","combineAxisDomainWithNiceTicks","niceTicks","minFromDomain","minFromTicks","maxFromDomain","maxFromTicks","selectAxisDomainIncludingNiceTicks","selectSmallestDistanceBetweenValues","smallestDistanceBetweenValues","sortedValues","distance","selectCalculatedPadding","barCategoryGap","_1","_2","_3","smallestDistanceInPercent","rangeWidth","gap","halfBand","selectXAxisPadding","xAxisSettings","calculated","_padding$left","_padding$right","selectYAxisPadding","yAxisSettings","_padding$top","_padding$bottom","combineXAxisRange","_axisId","combineYAxisRange","_ref5","selectAxisRange","_selectZAxisSettings","selectAxisRangeWithReverse","selectAxisScale","compareIds","_item$errorBars2","pickAxisOrientation","pickMirror","_orientation","selectAllXAxesWithOffsetType","allAxes","selectAllYAxesWithOffsetType","getXAxisSize","allAxesWithSameOffsetType","axisSize","combineXAxisPositionStartingPoint","needSpace","getYAxisSize","combineYAxisPositionStartingPoint","combineDuplicateDomain","chartLayout","appliedValues","allData","av","selectDuplicateDomain","combineCategoricalDomain","selectCategoricalDomain","duplicateDomain","offsetForBand","ticksOrNiceTicks","scaleContent","row","selectZAxisScale","allXAxes","allYAxes","some","selectDefaultTooltipEventType","defaultTooltipEventType","selectValidateTooltipEventTypes","validateTooltipEventTypes","combineTooltipEventType","shared","eventType","useTooltipEventType","selectTooltipEventType","combineActiveLabel","tooltipTicks","activeIndex","_tooltipTicks$n","noInteraction","tooltipSlice","itemInteraction","click","hover","axisInteraction","keyboardInteraction","syncInteraction","tooltipItemPayloads","trigger","defaultIndex","addTooltipEntrySettings","removeTooltipEntrySettings","setTooltipSettingsState","setActiveMouseOverItemIndex","activeDataKey","mouseLeaveChart","mouseLeaveItem","setActiveClickItemIndex","setMouseOverAxisIndex","setMouseClickAxisIndex","setSyncInteraction","setKeyboardInteraction","combineTooltipInteractionState","tooltipState","tooltipEventType","appropriateMouseInteraction","chooseAppropriateMouseInteraction","activeFromProps","combineActiveTooltipIndex","tooltipInteraction","desiredIndex","indexAsNumber","upperLimit","combineCoordinateForDefaultIndex","tooltipConfigurations","tooltipPayloadSearcher","firstConfiguration","maybePosition","positions","combineTooltipPayloadConfigurations","filterByDataKey","tpc","_tpc$settings","selectTooltipPayloadSearcher","selectTooltipState","tooltip","combineTooltipPayload","tooltipPayloadConfigurations","chartDataState","tooltipAxis","activeLabel","agg","_settings$dataKey","tooltipPayload","_getValueByDataKey","dataDefinedOnItem","finalData","dataDefinedOnChart","selectFinalData","sliced","finalDataKey","finalNameKey","nameKey","specifiedKey","specifiedValue","find","findEntryInArray","newSettings","selectTooltipAxisType","selectTooltipAxisId","selectTooltipAxis","selectTooltipAxisRealScaleType","selectAllUnfilteredGraphicalItems","polarItems","selectTooltipAxisPredicate","selectAllGraphicalItemsSettings","selectTooltipGraphicalItemsData","selectTooltipDisplayedData","selectAllTooltipAppliedValues","selectTooltipAxisDomainDefinition","selectTooltipStackGroups","selectTooltipDomainOfStackGroups","selectTooltipItemsSettingsExceptStacked","selectTooltipAllAppliedNumericalValuesIncludingErrorValues","selectReferenceDotsByTooltipAxis","selectTooltipReferenceDotsDomain","selectReferenceAreasByTooltipAxis","selectTooltipReferenceAreasDomain","selectReferenceLinesByTooltipAxis","selectTooltipReferenceLinesDomain","selectTooltipReferenceElementsDomain","selectTooltipNumericalDomain","selectTooltipAxisDomain","selectTooltipNiceTicks","selectTooltipAxisDomainIncludingNiceTicks","selectTooltipAxisRange","selectTooltipAxisRangeWithReverse","selectTooltipAxisScale","selectTooltipDuplicateDomain","selectTooltipCategoricalDomain","selectTooltipAxisTicks","validateTooltipEventType","selectTooltipTrigger","selectDefaultIndex","selectTooltipInteractionState","selectActiveTooltipIndex","selectActiveLabel","selectTooltipPayloadConfigurations","selectTooltipCoordinateForDefaultIndex","tooltipInteractionState","defaultIndexCoordinate","selectActiveTooltipPayload","dataPoints","useTooltipAxisBandSize","tooltipAxisScale","orderedTicks","bandSize","cur","prev","getBandSizeOfAxis","pickTooltipEventType","pickTrigger","_tooltipEventType","pickDefaultIndex","_trigger","selectActiveIndex","selectCoordinateForDefaultIndex","selectActiveCoordinate","_tooltipInteractionSt","selectTooltipPayload","selectIsTooltipActive","CursorInternal","restProps","cursorComp","tooltipAxisBandSize","cursor","activePayload","activeTooltipIndex","getCursorRectangle","extraClassName","cursorProps","payloadIndex","Cursor","_useAppSelector2","TooltipPortalContext","Events","EE","once","addListener","emitter","listener","evt","_events","_eventsCount","clearEvent","EventEmitter","__proto__","eventNames","events","listeners","handlers","ee","listenerCount","emit","a2","a3","a4","a5","removeListener","on","removeAllListeners","off","prefixed","module","eventCenter","selectSynchronisedTooltipState","useTooltipChartSynchronisation","isTooltipActive","selectTooltipDataKey","eventEmitterSymbol","isReceivingSynchronisation","syncAction","emptyPayload","defaultTooltipProps","filterNull","debounce","func","wait","pendingArgs","pendingThis","lastCallTime","debounceStartTime","timeoutId","leading","trailing","maxWait","hasMaxWait","maxWaitMs","invoke","handleTrailing","checkCanInvoke","timeSinceLastCall","handleTimeout","currentTime","remainingDebounceTime","remainingMaxWaitTime","calculateRemainingWait","debouncedFunction","canInvoke","handleLeading","clearTimeout","cancel","flush","throttle","throttleMs","isDev","warn","condition","console","ResponsiveContainer","aspect","initialDimension","minWidth","minHeight","maxHeight","onResize","containerRef","onResizeRef","useImperativeHandle","sizes","setSizes","containerWidth","containerHeight","setContainerSize","newWidth","newHeight","prevState","roundedWidth","roundedHeight","_onResizeRef$current","contentRect","observer","ResizeObserver","observe","disconnect","chartContent","calculatedWidth","calculatedHeight","overflow","THEMES","light","dark","ChartContext","useChart","ChartContainer","uniqueId","useId","chartId","Provider","data-slot","data-chart","cn","ChartStyle","RechartsPrimitive","colorConfig","theme","dangerouslySetInnerHTML","__html","itemConfig","ChartTooltip","outsideProps","defaultIndexAsString","payloadFromRedux","labelFromRedux","tooltipPortalFromContext","finalIsActive","tooltipPortal","tooltipElement","Fragment","ChartTooltipContent","indicator","hideLabel","hideIndicator","labelKey","tooltipLabel","getPayloadConfigFromPayload","nestLabel","indicatorColor","icon","span","ChartLegend","ChartLegendContent","hideIcon","payloadPayload","configLabelKey"],"mappings":"mkBAEAA,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAM5DH,EAAAI,iBAJA,SAA0BC,GACtB,MAAe,cAARA,CACX,sDCJAP,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAc5DH,EAAAM,UAZA,SAAmBD,GACf,cAAeA,GACX,IAAK,SACL,IAAK,SACD,OAAO,EAEX,IAAK,SACD,OAAOA,EAAIE,SAAS,MAAQF,EAAIE,SAAS,MAAQF,EAAIE,SAAS,KAG1E,sDCZAT,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAY5DH,EAAAQ,MAVA,SAAeL,GACX,MAAqB,iBAAVA,GAAuC,iBAAVA,EAC7BA,EAEPL,OAAOW,GAAGN,GAAOO,aAAa,GACvB,KAEJC,OAAOR,EAClB,4DCVAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAqE5DH,EAAAY,OAnEA,SAAgBC,GACZ,MAAMC,EAAS,GACTC,EAASF,EAAQE,OACvB,GAAe,IAAXA,EACA,OAAOD,EAEX,IAAIE,EAAQ,EACRX,EAAM,GACNY,EAAY,GACZC,GAAU,EAKd,IAJ8B,KAA1BL,EAAQM,WAAW,KACnBL,EAAOM,KAAK,IACZJ,KAEGA,EAAQD,GAAQ,CACnB,MAAMM,EAAOR,EAAQG,GACjBC,EACa,OAATI,GAAiBL,EAAQ,EAAID,GAC7BC,IACAX,GAAOQ,EAAQG,IAEVK,IAASJ,EACdA,EAAY,GAGZZ,GAAOgB,EAGNH,EACQ,MAATG,GAAyB,MAATA,EAChBJ,EAAYI,EAEE,MAATA,GACLH,GAAU,EACVJ,EAAOM,KAAKf,GACZA,EAAM,IAGNA,GAAOgB,EAIE,MAATA,GACAH,GAAU,EACNb,IACAS,EAAOM,KAAKf,GACZA,EAAM,KAGI,MAATgB,EACDhB,IACAS,EAAOM,KAAKf,GACZA,EAAM,IAIVA,GAAOgB,EAGfL,GACR,CAII,OAHIX,GACAS,EAAOM,KAAKf,GAETS,CACX,mDCnEAhB,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMC,EAAmBkB,IACnBhB,EAAYiB,IACZf,EAAQgB,IACRZ,EAASa,IA0EfzB,EAAA0B,IAxEA,SAASA,EAAIC,EAAQC,EAAMC,GACvB,GAAc,MAAVF,EACA,OAAOE,EAEX,cAAeD,GACX,IAAK,SAAU,CACX,GAAIxB,EAAiBA,iBAAiBwB,GAClC,OAAOC,EAEX,MAAMf,EAASa,EAAOC,GACtB,YAAeE,IAAXhB,EACIR,EAAUA,UAAUsB,GACbF,EAAIC,EAAQf,EAAOA,OAAOgB,GAAOC,GAGjCA,EAGRf,CACnB,CACQ,IAAK,SACL,IAAK,SAAU,CACS,iBAATc,IACPA,EAAOpB,EAAMA,MAAMoB,IAEvB,MAAMd,EAASa,EAAOC,GACtB,YAAeE,IAAXhB,EACOe,EAEJf,CACnB,CACQ,QAAS,CACL,GAAIiB,MAAMC,QAAQJ,GACd,OAmBhB,SAAqBD,EAAQC,EAAMC,GAC/B,GAAoB,IAAhBD,EAAKb,OACL,OAAOc,EAEX,IAAII,EAAUN,EACd,IAAK,IAAIX,EAAQ,EAAGA,EAAQY,EAAKb,OAAQC,IAAS,CAC9C,GAAe,MAAXiB,EACA,OAAOJ,EAEX,GAAIzB,EAAiBA,iBAAiBwB,EAAKZ,IACvC,OAAOa,EAEXI,EAAUA,EAAQL,EAAKZ,GAC/B,CACI,QAAgBc,IAAZG,EACA,OAAOJ,EAEX,OAAOI,CACX,CArCuBC,CAAYP,EAAQC,EAAMC,GAQrC,GALID,EADA9B,OAAOW,GAAGmB,GAAMlB,WAAW,GACpB,KAGAC,OAAOiB,GAEdxB,EAAiBA,iBAAiBwB,GAClC,OAAOC,EAEX,MAAMf,EAASa,EAAOC,GACtB,YAAeE,IAAXhB,EACOe,EAEJf,CACnB,EAEA,sCC5DAY,EAAiBJ,IAAwCI,kBCC9CS,EAAWhC,GACN,IAAVA,EACK,EAELA,EAAQ,EACH,GAEF,EAEEiC,EAAQjC,GAEM,iBAATA,GAAqBA,IAAUA,EAEpCkC,EAAYlC,GAA0B,iBAAVA,GAAsBA,EAAMmC,QAAQ,OAASnC,EAAMY,OAAS,EACxFwB,EAAWpC,IAA2B,iBAAVA,GAAsBA,aAAiBqC,UAAYJ,EAAMjC,GACrFsC,EAAatC,GAASoC,EAASpC,IAA2B,iBAAVA,EAehDuC,EAAkB,SAAyBC,EAASC,GAC7D,IAKIzC,EALA0B,EAAegB,UAAU9B,OAAS,QAAsBe,IAAjBe,UAAU,GAAmBA,UAAU,GAAK,EACnFC,EAAWD,UAAU9B,OAAS,QAAsBe,IAAjBe,UAAU,IAAmBA,UAAU,GAC9E,IAAKN,EAASI,IAA+B,iBAAZA,EAC/B,OAAOd,EAGT,GAAIQ,EAAUM,GAAU,CACtB,GAAkB,MAAdC,EACF,OAAOf,EAET,IAAIb,EAAQ2B,EAAQL,QAAQ,KAC5BnC,EAAQyC,EAAaG,WAAWJ,EAAQK,MAAM,EAAGhC,IAAU,GAC7D,MACEb,GAASwC,EAQX,OANIP,EAAMjC,KACRA,EAAQ0B,GAENiB,GAA0B,MAAdF,GAAsBzC,EAAQyC,IAC5CzC,EAAQyC,GAEHzC,CACT,EACW8C,EAAeC,IACxB,IAAKnB,MAAMC,QAAQkB,GACjB,OAAO,EAIT,IAFA,IAAIC,EAAMD,EAAInC,OACVqC,EAAQ,CAAA,EACHC,EAAI,EAAGA,EAAIF,EAAKE,IAAK,CAC5B,GAAKD,EAAMF,EAAIG,IAGb,OAAO,EAFPD,EAAMF,EAAIG,KAAM,CAIpB,CACA,OAAO,GAuEF,IAAIC,EAAYnD,GACdA,QAQEoD,EAAapD,GAClBmD,EAAUnD,GACLA,EAEF,GAAGqD,OAAOrD,EAAMsD,OAAO,GAAGC,eAAeF,OAAOrD,EAAM6C,MAAM,IC1H1DW,EAAqB,CAAC,wBAAyB,cAAe,oBAAqB,YAAa,eAAgB,gBAAiB,gBAAiB,eAAgB,gBAAiB,eAAgB,mBAAoB,eAAgB,gBAAiB,oBAAqB,gBAAiB,cAAe,gBAAiB,cAAe,eAAgB,oBAAqB,aAAc,kBAAmB,aAAc,YAAa,aAAc,iBAAkB,uBAAwB,mBAAoB,YAAa,mBAAoB,gBAAiB,eAAgB,gBAAiB,gBAAiB,gBAAiB,uBAAwB,gBAAiB,gBAAiB,eAAgB,gBAAiB,eAAgB,YAAa,gBAAiB,gBAAiB,gBAAiB,iBAAkB,YAAa,QAAS,SAAU,KAAM,OAAQ,MAAO,QAAS,SAAU,MAAO,OAAQ,QAQ94B,SAAU,QAAS,OAAQ,WAAY,eAAgB,aAAc,WAAY,oBAAqB,eAAgB,aAAc,YAAa,aAAc,SAAU,gBAAiB,gBAAiB,cAAe,UAAW,gBAAiB,gBAAiB,cAAe,OAAQ,QAAS,OAAQ,KAAM,WAAY,YAAa,OAAQ,WAAY,gBAAiB,WAAY,qBAAsB,4BAA6B,eAAgB,iBAAkB,oBAAqB,mBAAoB,SAAU,KAAM,KAAM,IAAK,aAAc,UAAW,kBAAmB,YAAa,UAAW,UAAW,mBAAoB,MAAO,KAAM,KAAM,WAAY,YAAa,mBAAoB,MAAO,WAAY,4BAA6B,OAAQ,cAAe,WAAY,SAAU,YAAa,cAAe,aAAc,eAAgB,YAAa,aAAc,WAAY,iBAAkB,cAAe,YAAa,cAAe,aAAc,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,YAAa,6BAA8B,2BAA4B,WAAY,oBAAqB,gBAAiB,UAAW,YAAa,eAAgB,OAAQ,cAAe,iBAAkB,MAAO,KAAM,YAAa,KAAM,KAAM,KAAM,KAAM,IAAK,eAAgB,mBAAoB,UAAW,YAAa,aAAc,WAAY,eAAgB,gBAAiB,gBAAiB,oBAAqB,QAAS,YAAa,eAAgB,YAAa,cAAe,cAAe,cAAe,OAAQ,mBAAoB,YAAa,eAAgB,OAAQ,aAAc,SAAU,UAAW,WAAY,QAAS,SAAU,cAAe,SAAU,WAAY,mBAAoB,oBAAqB,aAAc,UAAW,aAAc,sBAAuB,mBAAoB,eAAgB,gBAAiB,YAAa,YAAa,YAAa,gBAAiB,sBAAuB,iBAAkB,IAAK,SAAU,OAAQ,OAAQ,kBAAmB,cAAe,YAAa,qBAAsB,mBAAoB,UAAW,SAAU,SAAU,KAAM,KAAM,OAAQ,iBAAkB,QAAS,UAAW,mBAAoB,mBAAoB,QAAS,eAAgB,cAAe,eAAgB,QAAS,QAAS,cAAe,YAAa,cAAe,wBAAyB,yBAA0B,SAAU,SAAU,kBAAmB,mBAAoB,gBAAiB,iBAAkB,mBAAoB,gBAAiB,cAAe,eAAgB,iBAAkB,cAAe,UAAW,UAAW,aAAc,iBAAkB,aAAc,gBAAiB,KAAM,YAAa,KAAM,KAAM,oBAAqB,qBAAsB,UAAW,cAAe,eAAgB,aAAc,cAAe,SAAU,eAAgB,UAAW,WAAY,cAAe,cAAe,WAAY,eAAgB,aAAc,aAAc,gBAAiB,SAAU,cAAe,cAAe,KAAM,KAAM,IAAK,mBAAoB,UAAW,eAAgB,eAAgB,YAAa,YAAa,YAAa,aAAc,YAAa,UAAW,UAAW,QAAS,aAAc,WAAY,KAAM,KAAM,IAAK,mBAAoB,IAAK,aAAc,MAAO,MAAO,SACxqGC,EAAkB,CAAC,SAAU,cAKtBC,EAAwB,CACjCC,IAhByB,CAAC,UAAW,YAiBrCC,QAASH,EACTI,SAAUJ,GAEDK,EAAY,CAAC,0BAA2B,SAAU,gBAAiB,QAAS,eAAgB,UAAW,iBAAkB,mBAAoB,0BAA2B,qBAAsB,4BAA6B,sBAAuB,6BAA8B,UAAW,iBAAkB,SAAU,gBAAiB,WAAY,kBAAmB,gBAAiB,uBAAwB,UAAW,iBAAkB,UAAW,iBAAkB,WAAY,kBAAmB,YAAa,mBAAoB,SAAU,gBAAiB,UAAW,iBAAkB,YAAa,mBAAoB,aAAc,oBAAqB,UAAW,iBAAkB,UAAW,iBAAkB,YAAa,mBAAoB,mBAAoB,0BAA2B,mBAAoB,0BAA2B,YAAa,mBAAoB,cAAe,qBAAsB,UAAW,iBAAkB,eAAgB,sBAAuB,mBAAoB,0BAA2B,cAAe,qBAAsB,UAAW,iBAAkB,SAAU,gBAAiB,YAAa,mBAAoB,aAAc,oBAAqB,eAAgB,sBAAuB,WAAY,kBAAmB,YAAa,mBAAoB,YAAa,mBAAoB,YAAa,mBAAoB,eAAgB,sBAAuB,iBAAkB,wBAAyB,YAAa,mBAAoB,aAAc,oBAAqB,UAAW,iBAAkB,gBAAiB,uBAAwB,gBAAiB,uBAAwB,SAAU,gBAAiB,YAAa,mBAAoB,cAAe,qBAAsB,aAAc,oBAAqB,cAAe,qBAAsB,aAAc,oBAAqB,cAAe,qBAAsB,SAAU,gBAAiB,cAAe,qBAAsB,eAAgB,eAAgB,cAAe,qBAAsB,aAAc,oBAAqB,cAAe,qBAAsB,YAAa,mBAAoB,WAAY,kBAAmB,gBAAiB,uBAAwB,aAAc,oBAAqB,cAAe,qBAAsB,eAAgB,sBAAuB,gBAAiB,uBAAwB,gBAAiB,uBAAwB,cAAe,qBAAsB,kBAAmB,yBAA0B,iBAAkB,wBAAyB,iBAAkB,wBAAyB,gBAAiB,uBAAwB,eAAgB,sBAAuB,sBAAuB,6BAA8B,uBAAwB,8BAA+B,WAAY,kBAAmB,UAAW,iBAAkB,mBAAoB,0BAA2B,iBAAkB,wBAAyB,uBAAwB,8BAA+B,kBAAmB,0BCwDn3FC,EAAc,CAACC,EAAOC,EAAeC,KAC9C,IAAKF,GAA0B,mBAAVA,GAAyC,kBAAVA,EAClD,OAAO,KAET,IAAIG,EAAaH,EAIjB,GAHiBI,EAAeJ,KAC9BG,EAAaH,EAAMA,OAEK,iBAAfG,GAAiD,mBAAfA,EAC3C,OAAO,KAET,IAAIE,EAAM,CAAA,EAeV,OANA1E,OAAO2E,KAAKH,GAAYI,QAAQrE,IAC9B,IAAIsE,EA/B2B,EAACC,EAAUvE,EAAK+D,EAAeC,KAChE,IAAIQ,EAMAC,EAA+K,QAApJD,EAAOR,IAAmBR,aAAqE,EAASA,EAAsBQ,WAAuC,IAATQ,EAAkBA,EAAO,GACpN,OAAOxE,EAAI0E,WAAW,UAAgC,mBAAbH,IAA4BP,GAAkBS,EAAwBvE,SAASF,IAAQsD,EAAmBpD,SAASF,KAAS+D,GAAiBH,EAAU1D,SAASF,IAwBnM2E,CAAqD,QAA9BL,EAAcL,SAAwC,IAAhBK,OAAyB,EAASA,EAAYtE,GAAMA,EAAK+D,EAAeC,KACvIG,EAAInE,GAAOiE,EAAWjE,MAGnBmE,GCnILS,GAAY,CAAC,WAAY,QAAS,SAAU,UAAW,YAAa,QAAS,QAAS,QAC1F,SAASC,KAAa,OAAOA,GAAWpF,OAAOqF,OAASrF,OAAOqF,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAIzC,UAAU9B,OAAQuE,IAAK,CAAE,IAAIC,EAAI1C,UAAUyC,GAAI,IAAK,IAAIE,KAAKD,GAAI,CAAC,GAAGE,eAAeC,KAAKH,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAGH,GAASS,MAAM,KAAM9C,UAAY,CAU5Q,IAAI+C,GAAuBC,EAAW,CAAC1B,EAAO2B,KACnD,IAAIC,SACAA,EAAQC,MACRA,EAAKC,OACLA,EAAMC,QACNA,EAAOC,UACPA,EAASC,MACTA,EAAKC,MACLA,EAAKC,KACLA,GACEnC,EACJoC,EApBJ,SAAkCjB,EAAGC,GAAK,GAAI,MAAQD,EAAG,MAAO,CAAA,EAAI,IAAIkB,EAAGhB,EAAGnC,EAC9E,SAAuCmC,EAAGF,GAAK,GAAI,MAAQE,EAAG,MAAO,CAAA,EAAI,IAAID,EAAI,CAAA,EAAI,IAAK,IAAIF,KAAKG,EAAG,GAAI,CAAC,EAAEC,eAAeC,KAAKF,EAAGH,GAAI,CAAE,QAAWC,EAAEhD,QAAQ+C,GAAI,SAAUE,EAAEF,GAAKG,EAAEH,EAAI,CAAE,OAAOE,CAAG,CADpHkB,CAA8BnB,EAAGC,GAAI,GAAIzF,OAAO4G,sBAAuB,CAAE,IAAIrB,EAAIvF,OAAO4G,sBAAsBpB,GAAI,IAAKE,EAAI,EAAGA,EAAIH,EAAEtE,OAAQyE,IAAKgB,EAAInB,EAAEG,IAAI,IAAOD,EAAEjD,QAAQkE,IAAM,CAAC,EAAEG,qBAAqBjB,KAAKJ,EAAGkB,KAAOnD,EAAEmD,GAAKlB,EAAEkB,GAAK,CAAE,OAAOnD,CAAG,CAoBxTuD,CAAyBzC,EAAOc,IACvC4B,EAAUX,GAAW,CACvBF,QACAC,SACAa,EAAG,EACHC,EAAG,GAEDC,EAAaC,EAAK,mBAAoBd,GAC1C,OAAoBe,EAAMC,cAAc,MAAOjC,GAAS,GAAIhB,EAAYqC,GAAQ,EAAM,OAAQ,CAC5FJ,UAAWa,EACXhB,MAAOA,EACPC,OAAQA,EACRG,MAAOA,EACPF,QAAS,GAAG1C,OAAOqD,EAAQC,EAAG,KAAKtD,OAAOqD,EAAQE,EAAG,KAAKvD,OAAOqD,EAAQb,MAAO,KAAKxC,OAAOqD,EAAQZ,QACpGH,IAAKA,IACUoB,EAAMC,cAAc,QAAS,KAAMd,GAAqBa,EAAMC,cAAc,OAAQ,KAAMb,GAAOP,KCpCzGqB,GAAmCC,EAAc,MCD7C,SAAAC,GAASR,GACtB,OAAO,WACL,OAAOA,CACT,CACF,CCFO,MAAMS,GAAMC,KAAKD,IAGXE,GAAMD,KAAKC,IACXC,GAAOF,KAAKE,KAGZC,GAAKH,KAAKI,GAEVC,GAAM,EAAIF,GCXjBA,GAAKH,KAAKI,GACZC,GAAM,EAAIF,GACVG,GAAU,KACVC,GAAaF,GAAMC,GAEvB,SAASE,GAAOC,GACdC,KAAKC,GAAKF,EAAQ,GAClB,IAAK,IAAI5E,EAAI,EAAGgC,EAAI4C,EAAQlH,OAAQsC,EAAIgC,IAAKhC,EAC3C6E,KAAKC,GAAKtF,UAAUQ,GAAK4E,EAAQ5E,EAErC,CAeO,MAAM+E,GAOXC,MAAAA,CAAOvB,EAAGC,GACRmB,KAAKI,OAAO,IAAIJ,KAAKK,IAAML,KAAKM,KAAO1B,KAAKoB,KAAKO,IAAMP,KAAKQ,KAAO3B,GACrE,CACA4B,SAAAA,GACmB,OAAbT,KAAKM,MACPN,KAAKM,IAAMN,KAAKK,IAAKL,KAAKQ,IAAMR,KAAKO,IACrCP,KAAKI,OAAO,IAEhB,CACAM,MAAAA,CAAO9B,EAAGC,GACRmB,KAAKI,OAAO,IAAIJ,KAAKM,KAAO1B,KAAKoB,KAAKQ,KAAO3B,GAC/C,CACA8B,gBAAAA,CAAiBC,EAAIC,EAAIjC,EAAGC,GAC1BmB,KAAKI,OAAO,KAAKQ,MAAOC,KAAMb,KAAKM,KAAO1B,KAAKoB,KAAKQ,KAAO3B,GAC7D,CACAiC,aAAAA,CAAcF,EAAIC,EAAIE,EAAIC,EAAIpC,EAAGC,GAC/BmB,KAAKI,OAAO,KAAKQ,MAAOC,MAAOE,MAAOC,KAAMhB,KAAKM,KAAO1B,KAAKoB,KAAKQ,KAAO3B,GAC3E,CACAoC,KAAAA,CAAML,EAAIC,EAAIE,EAAIC,EAAI1D,GAIpB,GAHAsD,GAAMA,EAAIC,GAAMA,EAAIE,GAAMA,EAAIC,GAAMA,GAAI1D,GAAKA,GAGrC,EAAG,MAAM,IAAI4D,MAAM,oBAAoB5D,KAE/C,IAAI6D,EAAKnB,KAAKM,IACVc,EAAKpB,KAAKQ,IACVa,EAAMN,EAAKH,EACXU,EAAMN,EAAKH,EACXU,EAAMJ,EAAKP,EACXY,EAAMJ,EAAKP,EACXY,EAAQF,EAAMA,EAAMC,EAAMA,EAG9B,GAAiB,OAAbxB,KAAKM,IACPN,KAAKI,OAAO,IAAIJ,KAAKM,IAAMM,KAAMZ,KAAKQ,IAAMK,SAIzC,GAAMY,EAAQ7B,GAKd,GAAMN,KAAKoC,IAAIF,EAAMH,EAAMC,EAAMC,GAAO3B,IAAatC,EAKrD,CACH,IAAIqE,EAAMZ,EAAKI,EACXS,EAAMZ,EAAKI,EACXS,EAAQR,EAAMA,EAAMC,EAAMA,EAC1BQ,EAAQH,EAAMA,EAAMC,EAAMA,EAC1BG,EAAMzC,KAAKE,KAAKqC,GAChBG,EAAM1C,KAAKE,KAAKiC,GAChBQ,EAAI3E,EAAIgC,KAAK4C,KAAKzC,GAAKH,KAAK6C,MAAMN,EAAQJ,EAAQK,IAAU,EAAIC,EAAMC,KAAS,GAC/EI,EAAMH,EAAID,EACVK,EAAMJ,EAAIF,EAGVzC,KAAKoC,IAAIU,EAAM,GAAKxC,IACtBI,KAAKI,OAAO,IAAIQ,EAAKwB,EAAMb,KAAOV,EAAKuB,EAAMZ,IAG/CxB,KAAKI,OAAO,IAAI9C,KAAKA,WAAWkE,EAAMG,EAAMJ,EAAMK,MAAQ5B,KAAKM,IAAMM,EAAKyB,EAAMhB,KAAOrB,KAAKQ,IAAMK,EAAKwB,EAAMf,GAC/G,MArBEtB,KAAKI,OAAO,IAAIJ,KAAKM,IAAMM,KAAMZ,KAAKQ,IAAMK,SAsBhD,CACAyB,GAAAA,CAAI1D,EAAGC,EAAGvB,EAAGiF,EAAIC,EAAIC,GAInB,GAHA7D,GAAKA,EAAGC,GAAKA,EAAW4D,IAAQA,GAAhBnF,GAAKA,GAGb,EAAG,MAAM,IAAI4D,MAAM,oBAAoB5D,KAE/C,IAAIoF,EAAKpF,EAAIgC,KAAKD,IAAIkD,GAClBI,EAAKrF,EAAIgC,KAAKC,IAAIgD,GAClBpB,EAAKvC,EAAI8D,EACTtB,EAAKvC,EAAI8D,EACTC,EAAK,EAAIH,EACTI,EAAKJ,EAAMF,EAAKC,EAAKA,EAAKD,EAGb,OAAbvC,KAAKM,IACPN,KAAKI,OAAO,IAAIe,KAAMC,KAIf9B,KAAKoC,IAAI1B,KAAKM,IAAMa,GAAMvB,IAAWN,KAAKoC,IAAI1B,KAAKQ,IAAMY,GAAMxB,KACtEI,KAAKI,OAAO,IAAIe,KAAMC,IAInB9D,IAGDuF,EAAK,IAAGA,EAAKA,EAAKlD,GAAMA,IAGxBkD,EAAKhD,GACPG,KAAKI,OAAO,IAAI9C,KAAKA,SAASsF,KAAMhE,EAAI8D,KAAM7D,EAAI8D,KAAMrF,KAAKA,SAASsF,KAAM5C,KAAKM,IAAMa,KAAMnB,KAAKQ,IAAMY,IAIjGyB,EAAKjD,IACZI,KAAKI,OAAO,IAAI9C,KAAKA,SAASuF,GAAMpD,OAAOmD,KAAM5C,KAAKM,IAAM1B,EAAItB,EAAIgC,KAAKD,IAAImD,MAAOxC,KAAKQ,IAAM3B,EAAIvB,EAAIgC,KAAKC,IAAIiD,KAEpH,CACAM,IAAAA,CAAKlE,EAAGC,EAAGkE,EAAGC,GACZhD,KAAKI,OAAO,IAAIJ,KAAKK,IAAML,KAAKM,KAAO1B,KAAKoB,KAAKO,IAAMP,KAAKQ,KAAO3B,KAAKkE,GAAKA,MAAMC,MAAMD,IAC3F,CACAE,QAAAA,GACE,OAAOjD,KAAKC,CACd,CArHA,WAAAiD,CAAYC,GACVnD,KAAKK,IAAML,KAAKO,IAChBP,KAAKM,IAAMN,KAAKQ,IAAM,KACtBR,KAAKC,EAAI,GACTD,KAAKI,QAAoB,MAAV+C,EAAiBrD,GAlBpC,SAAqBqD,GACnB,IAAIC,EAAI9D,KAAK+D,MAAMF,GACnB,KAAMC,GAAK,GAAI,MAAM,IAAIlC,MAAM,mBAAmBiC,KAClD,GAAIC,EAAI,GAAI,OAAOtD,GACnB,MAAMwD,EAAI,IAAMF,EAChB,OAAO,SAASrD,GACdC,KAAKC,GAAKF,EAAQ,GAClB,IAAK,IAAI5E,EAAI,EAAGgC,EAAI4C,EAAQlH,OAAQsC,EAAIgC,IAAKhC,EAC3C6E,KAAKC,GAAKX,KAAKiE,MAAM5I,UAAUQ,GAAKmI,GAAKA,EAAIvD,EAAQ5E,EAEzD,CACF,CAO6CqI,CAAYL,EACvD,EC7BK,SAASM,GAASC,GACvB,IAAIP,EAAS,EAcb,OAZAO,EAAMP,OAAS,SAASlD,GACtB,IAAKtF,UAAU9B,OAAQ,OAAOsK,EAC9B,GAAS,MAALlD,EACFkD,EAAS,SACJ,CACL,MAAMC,EAAI9D,KAAK+D,MAAMpD,GACrB,KAAMmD,GAAK,GAAI,MAAM,IAAIO,WAAW,mBAAmB1D,KACvDkD,EAASC,CACX,CACA,OAAOM,CACT,EAEO,IAAM,IAAIxD,GAAKiD,EACxB,CChBe,SAAAS,GAAShF,GACtB,MAAoB,iBAANA,GAAkB,WAAYA,EACxCA,EACA/E,MAAMgK,KAAKjF,EACjB,CCNA,SAASkF,GAAOC,GACd/D,KAAKgE,SAAWD,CAClB,CA0Be,SAAAE,GAASF,GACtB,OAAO,IAAID,GAAOC,EACpB,CC9BO,SAASnF,GAAEsF,GAChB,OAAOA,EAAE,EACX,CAEO,SAASrF,GAAEqF,GAChB,OAAOA,EAAE,EACX,CCAe,SAAAC,GAASvF,EAAGC,GACzB,IAAIuF,EAAUC,IAAS,GACnBN,EAAU,KACVO,EAAQL,GACRM,EAAS,KACT7K,EAAO+J,GAASe,GAKpB,SAASA,EAAKC,GACZ,IAAItJ,EAEAiI,EAEAsB,EAHAvH,GAAKsH,EAAOb,GAAMa,IAAO5L,OAEzB8L,GAAW,EAKf,IAFe,MAAXZ,IAAiBQ,EAASD,EAAMI,EAAShL,MAExCyB,EAAI,EAAGA,GAAKgC,IAAKhC,IACdA,EAAIgC,GAAKiH,EAAQhB,EAAIqB,EAAKtJ,GAAIA,EAAGsJ,MAAWE,KAC5CA,GAAYA,GAAUJ,EAAOK,YAC5BL,EAAOM,WAEVF,GAAUJ,EAAOO,OAAOlG,EAAEwE,EAAGjI,EAAGsJ,IAAQ5F,EAAEuE,EAAGjI,EAAGsJ,IAGtD,GAAIC,EAAQ,OAAOH,EAAS,KAAMG,EAAS,IAAM,IACnD,CAsBA,OA3CA9F,EAAiB,mBAANA,EAAmBA,OAAWhF,IAAPgF,EAAoBmG,GAASV,GAASzF,GACxEC,EAAiB,mBAANA,EAAmBA,OAAWjF,IAAPiF,EAAoBmG,GAASX,GAASxF,GAsBxE2F,EAAK5F,EAAI,SAASqB,GAChB,OAAOtF,UAAU9B,QAAU+F,EAAiB,mBAANqB,EAAmBA,EAAIoE,IAAUpE,GAAIuE,GAAQ5F,CACrF,EAEA4F,EAAK3F,EAAI,SAASoB,GAChB,OAAOtF,UAAU9B,QAAUgG,EAAiB,mBAANoB,EAAmBA,EAAIoE,IAAUpE,GAAIuE,GAAQ3F,CACrF,EAEA2F,EAAKJ,QAAU,SAASnE,GACtB,OAAOtF,UAAU9B,QAAUuL,EAAuB,mBAANnE,EAAmBA,EAAIoE,KAAWpE,GAAIuE,GAAQJ,CAC5F,EAEAI,EAAKF,MAAQ,SAASrE,GACpB,OAAOtF,UAAU9B,QAAUyL,EAAQrE,EAAc,MAAX8D,IAAoBQ,EAASD,EAAMP,IAAWS,GAAQF,CAC9F,EAEAE,EAAKT,QAAU,SAAS9D,GACtB,OAAOtF,UAAU9B,QAAe,MAALoH,EAAY8D,EAAUQ,EAAS,KAAOA,EAASD,EAAMP,EAAU9D,GAAIuE,GAAQT,CACxG,EAEOS,CACT,CClDe,SAAAS,GAAS9D,EAAIC,EAAIP,GAC9B,IAAID,EAAK,KACLwD,EAAUC,IAAS,GACnBN,EAAU,KACVO,EAAQL,GACRM,EAAS,KACT7K,EAAO+J,GAASyB,GAMpB,SAASA,EAAKT,GACZ,IAAItJ,EACAgK,EACA7B,EAEAF,EAEAsB,EAHAvH,GAAKsH,EAAOb,GAAMa,IAAO5L,OAEzB8L,GAAW,EAEXS,EAAM,IAAIvL,MAAMsD,GAChBkI,EAAM,IAAIxL,MAAMsD,GAIpB,IAFe,MAAX4G,IAAiBQ,EAASD,EAAMI,EAAShL,MAExCyB,EAAI,EAAGA,GAAKgC,IAAKhC,EAAG,CACvB,KAAMA,EAAIgC,GAAKiH,EAAQhB,EAAIqB,EAAKtJ,GAAIA,EAAGsJ,MAAWE,EAChD,GAAIA,GAAYA,EACdQ,EAAIhK,EACJoJ,EAAOe,YACPf,EAAOK,gBACF,CAGL,IAFAL,EAAOM,UACPN,EAAOK,YACFtB,EAAInI,EAAI,EAAGmI,GAAK6B,IAAK7B,EACxBiB,EAAOO,MAAMM,EAAI9B,GAAI+B,EAAI/B,IAE3BiB,EAAOM,UACPN,EAAOgB,SACT,CAEEZ,IACFS,EAAIjK,IAAMgG,EAAGiC,EAAGjI,EAAGsJ,GAAOY,EAAIlK,IAAMiG,EAAGgC,EAAGjI,EAAGsJ,GAC7CF,EAAOO,MAAMlE,GAAMA,EAAGwC,EAAGjI,EAAGsJ,GAAQW,EAAIjK,GAAI0F,GAAMA,EAAGuC,EAAGjI,EAAGsJ,GAAQY,EAAIlK,IAE3E,CAEA,GAAIuJ,EAAQ,OAAOH,EAAS,KAAMG,EAAS,IAAM,IACnD,CAEA,SAASc,IACP,OAAOhB,KAAOJ,QAAQA,GAASE,MAAMA,GAAOP,QAAQA,EACtD,CAmDA,OA/FA5C,EAAmB,mBAAPA,EAAoBA,OAAavH,IAARuH,EAAqB4D,GAASV,IAAUlD,GAC7EC,EAAmB,mBAAPA,EAAoBA,EAA0BiD,QAAbzK,IAAPwH,EAA6B,GAAeA,GAClFP,EAAmB,mBAAPA,EAAoBA,OAAajH,IAARiH,EAAqBmE,GAASX,IAAUxD,GA4C7EqE,EAAKtG,EAAI,SAASqB,GAChB,OAAOtF,UAAU9B,QAAUsI,EAAkB,mBAANlB,EAAmBA,EAAIoE,IAAUpE,GAAIW,EAAK,KAAMsE,GAAQ/D,CACjG,EAEA+D,EAAK/D,GAAK,SAASlB,GACjB,OAAOtF,UAAU9B,QAAUsI,EAAkB,mBAANlB,EAAmBA,EAAIoE,IAAUpE,GAAIiF,GAAQ/D,CACtF,EAEA+D,EAAKtE,GAAK,SAASX,GACjB,OAAOtF,UAAU9B,QAAU+H,EAAU,MAALX,EAAY,KAAoB,mBAANA,EAAmBA,EAAIoE,IAAUpE,GAAIiF,GAAQtE,CACzG,EAEAsE,EAAKrG,EAAI,SAASoB,GAChB,OAAOtF,UAAU9B,QAAUuI,EAAkB,mBAANnB,EAAmBA,EAAIoE,IAAUpE,GAAIY,EAAK,KAAMqE,GAAQ9D,CACjG,EAEA8D,EAAK9D,GAAK,SAASnB,GACjB,OAAOtF,UAAU9B,QAAUuI,EAAkB,mBAANnB,EAAmBA,EAAIoE,IAAUpE,GAAIiF,GAAQ9D,CACtF,EAEA8D,EAAKrE,GAAK,SAASZ,GACjB,OAAOtF,UAAU9B,QAAUgI,EAAU,MAALZ,EAAY,KAAoB,mBAANA,EAAmBA,EAAIoE,IAAUpE,GAAIiF,GAAQrE,CACzG,EAEAqE,EAAKO,OACLP,EAAKQ,OAAS,WACZ,OAAOF,IAAW5G,EAAEuC,GAAItC,EAAEuC,EAC5B,EAEA8D,EAAKS,OAAS,WACZ,OAAOH,IAAW5G,EAAEuC,GAAItC,EAAEgC,EAC5B,EAEAqE,EAAKU,OAAS,WACZ,OAAOJ,IAAW5G,EAAEgC,GAAI/B,EAAEuC,EAC5B,EAEA8D,EAAKd,QAAU,SAASnE,GACtB,OAAOtF,UAAU9B,QAAUuL,EAAuB,mBAANnE,EAAmBA,EAAIoE,KAAWpE,GAAIiF,GAAQd,CAC5F,EAEAc,EAAKZ,MAAQ,SAASrE,GACpB,OAAOtF,UAAU9B,QAAUyL,EAAQrE,EAAc,MAAX8D,IAAoBQ,EAASD,EAAMP,IAAWmB,GAAQZ,CAC9F,EAEAY,EAAKnB,QAAU,SAAS9D,GACtB,OAAOtF,UAAU9B,QAAe,MAALoH,EAAY8D,EAAUQ,EAAS,KAAOA,EAASD,EAAMP,EAAU9D,GAAIiF,GAAQnB,CACxG,EAEOmB,CACT,CH3GApB,GAAO+B,UAAY,CACjBP,UAAW,WACTtF,KAAK8F,MAAQ,CACf,EACAP,QAAS,WACPvF,KAAK8F,MAAQC,GACf,EACAnB,UAAW,WACT5E,KAAKgG,OAAS,CAChB,EACAnB,QAAS,YACH7E,KAAK8F,OAAyB,IAAf9F,KAAK8F,OAA+B,IAAhB9F,KAAKgG,SAAehG,KAAKgE,SAASvD,YACzET,KAAK8F,MAAQ,EAAI9F,KAAK8F,KACxB,EACAhB,MAAO,SAASlG,EAAGC,GAEjB,OADAD,GAAKA,EAAGC,GAAKA,EACLmB,KAAKgG,QACX,KAAK,EAAGhG,KAAKgG,OAAS,EAAGhG,KAAK8F,MAAQ9F,KAAKgE,SAAStD,OAAO9B,EAAGC,GAAKmB,KAAKgE,SAAS7D,OAAOvB,EAAGC,GAAI,MAC/F,KAAK,EAAGmB,KAAKgG,OAAS,EACtB,QAAShG,KAAKgE,SAAStD,OAAO9B,EAAGC,GAErC,GIvBF,MAAMoH,GAKJX,SAAAA,GACEtF,KAAK8F,MAAQ,CACf,CACAP,OAAAA,GACEvF,KAAK8F,MAAQC,GACf,CACAnB,SAAAA,GACE5E,KAAKgG,OAAS,CAChB,CACAnB,OAAAA,IACM7E,KAAK8F,OAAyB,IAAf9F,KAAK8F,OAA+B,IAAhB9F,KAAKgG,SAAehG,KAAKgE,SAASvD,YACzET,KAAK8F,MAAQ,EAAI9F,KAAK8F,KACxB,CACAhB,KAAAA,CAAMlG,EAAGC,GAEP,OADAD,GAAKA,EAAGC,GAAKA,EACLmB,KAAKgG,QACX,KAAK,EACHhG,KAAKgG,OAAS,EACVhG,KAAK8F,MAAO9F,KAAKgE,SAAStD,OAAO9B,EAAGC,GACnCmB,KAAKgE,SAAS7D,OAAOvB,EAAGC,GAC7B,MAEF,KAAK,EAAGmB,KAAKgG,OAAS,EACtB,QACMhG,KAAKkG,GAAIlG,KAAKgE,SAASlD,cAAcd,KAAKK,KAAOL,KAAKK,IAAMzB,GAAK,EAAGoB,KAAKO,IAAKP,KAAKK,IAAKxB,EAAGD,EAAGC,GAC7FmB,KAAKgE,SAASlD,cAAcd,KAAKK,IAAKL,KAAKO,KAAOP,KAAKO,IAAM1B,GAAK,EAAGD,EAAGoB,KAAKO,IAAK3B,EAAGC,GAI9FmB,KAAKK,IAAMzB,EAAGoB,KAAKO,IAAM1B,CAC3B,CAlCA,WAAAqE,CAAYa,EAASnF,GACnBoB,KAAKgE,SAAWD,EAChB/D,KAAKkG,GAAKtH,CACZ,ECJF,IAAAuH,GAAe,CACbC,IAAAA,CAAKrC,EAASsC,GACZ,MAAM/I,EAAIkC,GAAK6G,EAAO5G,IACtBsE,EAAQ5D,OAAO7C,EAAG,GAClByG,EAAQzB,IAAI,EAAG,EAAGhF,EAAG,EAAGqC,GAC1B,GCLF2G,GAAe,CACbF,IAAAA,CAAKrC,EAASsC,GACZ,MAAM/I,EAAIkC,GAAK6G,EAAO,GAAK,EAC3BtC,EAAQ5D,QAAO,EAAK7C,GAAIA,GACxByG,EAAQrD,QAAQpD,GAAIA,GACpByG,EAAQrD,QAAQpD,GAAG,EAAKA,GACxByG,EAAQrD,OAAOpD,GAAG,EAAKA,GACvByG,EAAQrD,OAAOpD,GAAIA,GACnByG,EAAQrD,OAAO,EAAIpD,GAAIA,GACvByG,EAAQrD,OAAO,EAAIpD,EAAGA,GACtByG,EAAQrD,OAAOpD,EAAGA,GAClByG,EAAQrD,OAAOpD,EAAG,EAAIA,GACtByG,EAAQrD,QAAQpD,EAAG,EAAIA,GACvByG,EAAQrD,QAAQpD,EAAGA,GACnByG,EAAQrD,UAAYpD,EAAGA,GACvByG,EAAQtD,WACV,GChBF,MAAM8F,GAAQ/G,GAAK,EAAI,GACjBgH,GAAkB,EAARD,GAEhB,IAAAE,GAAe,CACbL,IAAAA,CAAKrC,EAASsC,GACZ,MAAMxH,EAAIW,GAAK6G,EAAOG,IAChB5H,EAAIC,EAAI0H,GACdxC,EAAQ5D,OAAO,GAAItB,GACnBkF,EAAQrD,OAAO9B,EAAG,GAClBmF,EAAQrD,OAAO,EAAG7B,GAClBkF,EAAQrD,QAAQ9B,EAAG,GACnBmF,EAAQtD,WACV,GCZFiG,GAAe,CACbN,IAAAA,CAAKrC,EAASsC,GACZ,MAAMtD,EAAIvD,GAAK6G,GACTzH,GAAKmE,EAAI,EACfgB,EAAQjB,KAAKlE,EAAGA,EAAGmE,EAAGA,EACxB,GCLF,MACM4D,GAAKpH,GAAIE,GAAK,IAAMF,GAAI,EAAIE,GAAK,IACjCmH,GAAKrH,GAAII,GAAM,IAAMgH,GACrBE,IAAMxH,GAAIM,GAAM,IAAMgH,GAE5B,IAAAG,GAAe,CACbV,IAAAA,CAAKrC,EAASsC,GACZ,MAAM/I,EAAIkC,GAPH,kBAOQ6G,GACTzH,EAAIgI,GAAKtJ,EACTuB,EAAIgI,GAAKvJ,EACfyG,EAAQ5D,OAAO,GAAI7C,GACnByG,EAAQrD,OAAO9B,EAAGC,GAClB,IAAK,IAAI1D,EAAI,EAAGA,EAAI,IAAKA,EAAG,CAC1B,MAAM4L,EAAIpH,GAAMxE,EAAI,EACd6L,EAAI3H,GAAI0H,GACRE,EAAI1H,GAAIwH,GACdhD,EAAQrD,OAAOuG,EAAI3J,GAAI0J,EAAI1J,GAC3ByG,EAAQrD,OAAOsG,EAAIpI,EAAIqI,EAAIpI,EAAGoI,EAAIrI,EAAIoI,EAAInI,EAC5C,CACAkF,EAAQtD,WACV,GCpBF,MAAMyG,GAAQ1H,GAAK,GAEnB,IAAA2H,GAAe,CACbf,IAAAA,CAAKrC,EAASsC,GACZ,MAAMxH,GAAKW,GAAK6G,GAAgB,EAARa,KACxBnD,EAAQ5D,OAAO,EAAO,EAAJtB,GAClBkF,EAAQrD,QAAQwG,GAAQrI,GAAIA,GAC5BkF,EAAQrD,OAAOwG,GAAQrI,GAAIA,GAC3BkF,EAAQtD,WACV,GCTF,MAAMuG,IAAI,GACJC,GAAIzH,GAAK,GAAK,EACd8D,GAAI,EAAI9D,GAAK,IACbuH,GAAkB,GAAbzD,GAAI,EAAI,GAEnB,IAAA8D,GAAe,CACbhB,IAAAA,CAAKrC,EAASsC,GACZ,MAAM/I,EAAIkC,GAAK6G,EAAOU,IAChB5F,EAAK7D,EAAI,EAAG8D,EAAK9D,EAAIgG,GACrB1C,EAAKO,EAAIN,EAAKvD,EAAIgG,GAAIhG,EACtByD,GAAMH,EAAII,EAAKH,EACrBkD,EAAQ5D,OAAOgB,EAAIC,GACnB2C,EAAQrD,OAAOE,EAAIC,GACnBkD,EAAQrD,OAAOK,EAAIC,GACnB+C,EAAQrD,OAAOsG,GAAI7F,EAAK8F,GAAI7F,EAAI6F,GAAI9F,EAAK6F,GAAI5F,GAC7C2C,EAAQrD,OAAOsG,GAAIpG,EAAKqG,GAAIpG,EAAIoG,GAAIrG,EAAKoG,GAAInG,GAC7CkD,EAAQrD,OAAOsG,GAAIjG,EAAKkG,GAAIjG,EAAIiG,GAAIlG,EAAKiG,GAAIhG,GAC7C+C,EAAQrD,OAAOsG,GAAI7F,EAAK8F,GAAI7F,EAAI4F,GAAI5F,EAAK6F,GAAI9F,GAC7C4C,EAAQrD,OAAOsG,GAAIpG,EAAKqG,GAAIpG,EAAImG,GAAInG,EAAKoG,GAAIrG,GAC7CmD,EAAQrD,OAAOsG,GAAIjG,EAAKkG,GAAIjG,EAAIgG,GAAIhG,EAAKiG,GAAIlG,GAC7CgD,EAAQtD,WACV,GCvBa,SAAA4G,KAAY,CCApB,SAASvC,GAAMwC,EAAM1I,EAAGC,GAC7ByI,EAAKtD,SAASlD,eACX,EAAIwG,EAAKjH,IAAMiH,EAAKhH,KAAO,GAC3B,EAAIgH,EAAK/G,IAAM+G,EAAK9G,KAAO,GAC3B8G,EAAKjH,IAAM,EAAIiH,EAAKhH,KAAO,GAC3BgH,EAAK/G,IAAM,EAAI+G,EAAK9G,KAAO,GAC3B8G,EAAKjH,IAAM,EAAIiH,EAAKhH,IAAM1B,GAAK,GAC/B0I,EAAK/G,IAAM,EAAI+G,EAAK9G,IAAM3B,GAAK,EAEpC,CAEO,SAAS0I,GAAMxD,GACpB/D,KAAKgE,SAAWD,CAClB,CCVA,SAASyD,GAAYzD,GACnB/D,KAAKgE,SAAWD,CAClB,CCHA,SAAS0D,GAAU1D,GACjB/D,KAAKgE,SAAWD,CAClB,CCFA,SAAS2D,GAAa3D,GACpB/D,KAAKgE,SAAWD,CAClB,CCJA,SAAS4D,GAAK/I,GACZ,OAAOA,EAAI,GAAI,EAAK,CACtB,CAMA,SAASgJ,GAAON,EAAMvG,EAAIC,GACxB,IAAI6G,EAAKP,EAAKhH,IAAMgH,EAAKjH,IACrByH,EAAK/G,EAAKuG,EAAKhH,IACfyH,GAAMT,EAAK9G,IAAM8G,EAAK/G,MAAQsH,GAAMC,EAAK,IAAK,GAC9CE,GAAMhH,EAAKsG,EAAK9G,MAAQsH,GAAMD,EAAK,IAAK,GACxC3D,GAAK6D,EAAKD,EAAKE,EAAKH,IAAOA,EAAKC,GACpC,OAAQH,GAAKI,GAAMJ,GAAKK,IAAO1I,KAAK2I,IAAI3I,KAAKoC,IAAIqG,GAAKzI,KAAKoC,IAAIsG,GAAK,GAAM1I,KAAKoC,IAAIwC,KAAO,CAC5F,CAGA,SAASgE,GAAOZ,EAAMjK,GACpB,IAAI2F,EAAIsE,EAAKhH,IAAMgH,EAAKjH,IACxB,OAAO2C,GAAK,GAAKsE,EAAK9G,IAAM8G,EAAK/G,KAAOyC,EAAI3F,GAAK,EAAIA,CACvD,CAKA,SAASyH,GAAMwC,EAAMa,EAAIC,GACvB,IAAIjH,EAAKmG,EAAKjH,IACVe,EAAKkG,EAAK/G,IACVK,EAAK0G,EAAKhH,IACVO,EAAKyG,EAAK9G,IACVkC,GAAM9B,EAAKO,GAAM,EACrBmG,EAAKtD,SAASlD,cAAcK,EAAKuB,EAAItB,EAAKsB,EAAKyF,EAAIvH,EAAK8B,EAAI7B,EAAK6B,EAAK0F,EAAIxH,EAAIC,EAChF,CAEA,SAASwH,GAAUtE,GACjB/D,KAAKgE,SAAWD,CAClB,CAyCA,SAASuE,GAAUvE,GACjB/D,KAAKgE,SAAW,IAAIuE,GAAexE,EACrC,CAMA,SAASwE,GAAexE,GACtB/D,KAAKgE,SAAWD,CAClB,CCxFA,SAASyE,GAAQzE,GACf/D,KAAKgE,SAAWD,CAClB,CA0CA,SAAS0E,GAAc7J,GACrB,IAAIzD,EAEAuN,EADAvL,EAAIyB,EAAE/F,OAAS,EAEfkO,EAAI,IAAIlN,MAAMsD,GACdwL,EAAI,IAAI9O,MAAMsD,GACdG,EAAI,IAAIzD,MAAMsD,GAElB,IADA4J,EAAE,GAAK,EAAG4B,EAAE,GAAK,EAAGrL,EAAE,GAAKsB,EAAE,GAAK,EAAIA,EAAE,GACnCzD,EAAI,EAAGA,EAAIgC,EAAI,IAAKhC,EAAG4L,EAAE5L,GAAK,EAAGwN,EAAExN,GAAK,EAAGmC,EAAEnC,GAAK,EAAIyD,EAAEzD,GAAK,EAAIyD,EAAEzD,EAAI,GAE5E,IADA4L,EAAE5J,EAAI,GAAK,EAAGwL,EAAExL,EAAI,GAAK,EAAGG,EAAEH,EAAI,GAAK,EAAIyB,EAAEzB,EAAI,GAAKyB,EAAEzB,GACnDhC,EAAI,EAAGA,EAAIgC,IAAKhC,EAAGuN,EAAI3B,EAAE5L,GAAKwN,EAAExN,EAAI,GAAIwN,EAAExN,IAAMuN,EAAGpL,EAAEnC,IAAMuN,EAAIpL,EAAEnC,EAAI,GAE1E,IADA4L,EAAE5J,EAAI,GAAKG,EAAEH,EAAI,GAAKwL,EAAExL,EAAI,GACvBhC,EAAIgC,EAAI,EAAGhC,GAAK,IAAKA,EAAG4L,EAAE5L,IAAMmC,EAAEnC,GAAK4L,EAAE5L,EAAI,IAAMwN,EAAExN,GAE1D,IADAwN,EAAExL,EAAI,IAAMyB,EAAEzB,GAAK4J,EAAE5J,EAAI,IAAM,EAC1BhC,EAAI,EAAGA,EAAIgC,EAAI,IAAKhC,EAAGwN,EAAExN,GAAK,EAAIyD,EAAEzD,EAAI,GAAK4L,EAAE5L,EAAI,GACxD,MAAO,CAAC4L,EAAG4B,EACb,CC5DA,SAASC,GAAK7E,EAAS1G,GACrB2C,KAAKgE,SAAWD,EAChB/D,KAAK6I,GAAKxL,CACZ,CCHe,SAAAyL,GAASC,EAAQC,GAC9B,IAAO7L,EAAI4L,EAAOlQ,QAAU,EAC5B,IAAK,IAAWsM,EAAG4C,EAA2B5K,EAArChC,EAAI,EAAU6M,EAAKe,EAAOC,EAAM,IAAQN,EAAIV,EAAGnP,OAAQsC,EAAIgC,IAAKhC,EAEvE,IADA4M,EAAKC,EAAIA,EAAKe,EAAOC,EAAM7N,IACtBgK,EAAI,EAAGA,EAAIuD,IAAKvD,EACnB6C,EAAG7C,GAAG,IAAM6C,EAAG7C,GAAG,GAAK8D,MAAMlB,EAAG5C,GAAG,IAAM4C,EAAG5C,GAAG,GAAK4C,EAAG5C,GAAG,EAGhE,CCRe,SAAA+D,GAASH,GAEtB,IADA,IAAI5L,EAAI4L,EAAOlQ,OAAQyF,EAAI,IAAIzE,MAAMsD,KAC5BA,GAAK,GAAGmB,EAAEnB,GAAKA,EACxB,OAAOmB,CACT,CCCA,SAAS6K,GAAW/F,EAAGjL,GACrB,OAAOiL,EAAEjL,EACX,CAEA,SAASiR,GAAYjR,GACnB,MAAM4Q,EAAS,GAEf,OADAA,EAAO5Q,IAAMA,EACN4Q,CACT,CTEAxB,GAAM1B,UAAY,CAChBP,UAAW,WACTtF,KAAK8F,MAAQ,CACf,EACAP,QAAS,WACPvF,KAAK8F,MAAQC,GACf,EACAnB,UAAW,WACT5E,KAAKK,IAAML,KAAKM,IAChBN,KAAKO,IAAMP,KAAKQ,IAAMuF,IACtB/F,KAAKgG,OAAS,CAChB,EACAnB,QAAS,WACP,OAAQ7E,KAAKgG,QACX,KAAK,EAAGlB,GAAM9E,KAAMA,KAAKM,IAAKN,KAAKQ,KACnC,KAAK,EAAGR,KAAKgE,SAAStD,OAAOV,KAAKM,IAAKN,KAAKQ,MAE1CR,KAAK8F,OAAyB,IAAf9F,KAAK8F,OAA+B,IAAhB9F,KAAKgG,SAAehG,KAAKgE,SAASvD,YACzET,KAAK8F,MAAQ,EAAI9F,KAAK8F,KACxB,EACAhB,MAAO,SAASlG,EAAGC,GAEjB,OADAD,GAAKA,EAAGC,GAAKA,EACLmB,KAAKgG,QACX,KAAK,EAAGhG,KAAKgG,OAAS,EAAGhG,KAAK8F,MAAQ9F,KAAKgE,SAAStD,OAAO9B,EAAGC,GAAKmB,KAAKgE,SAAS7D,OAAOvB,EAAGC,GAAI,MAC/F,KAAK,EAAGmB,KAAKgG,OAAS,EAAG,MACzB,KAAK,EAAGhG,KAAKgG,OAAS,EAAGhG,KAAKgE,SAAStD,QAAQ,EAAIV,KAAKK,IAAML,KAAKM,KAAO,GAAI,EAAIN,KAAKO,IAAMP,KAAKQ,KAAO,GACzG,QAASsE,GAAM9E,KAAMpB,EAAGC,GAE1BmB,KAAKK,IAAML,KAAKM,IAAKN,KAAKM,IAAM1B,EAChCoB,KAAKO,IAAMP,KAAKQ,IAAKR,KAAKQ,IAAM3B,CAClC,GCtCF2I,GAAY3B,UAAY,CACtBP,UAAW+D,GACX9D,QAAS8D,GACTzE,UAAW,WACT5E,KAAKK,IAAML,KAAKM,IAAMN,KAAKsJ,IAAMtJ,KAAKuJ,IAAMvJ,KAAKwJ,IACjDxJ,KAAKO,IAAMP,KAAKQ,IAAMR,KAAKyJ,IAAMzJ,KAAK0J,IAAM1J,KAAK2J,IAAM5D,IACvD/F,KAAKgG,OAAS,CAChB,EACAnB,QAAS,WACP,OAAQ7E,KAAKgG,QACX,KAAK,EACHhG,KAAKgE,SAAS7D,OAAOH,KAAKsJ,IAAKtJ,KAAKyJ,KACpCzJ,KAAKgE,SAASvD,YACd,MAEF,KAAK,EACHT,KAAKgE,SAAS7D,QAAQH,KAAKsJ,IAAM,EAAItJ,KAAKuJ,KAAO,GAAIvJ,KAAKyJ,IAAM,EAAIzJ,KAAK0J,KAAO,GAChF1J,KAAKgE,SAAStD,QAAQV,KAAKuJ,IAAM,EAAIvJ,KAAKsJ,KAAO,GAAItJ,KAAK0J,IAAM,EAAI1J,KAAKyJ,KAAO,GAChFzJ,KAAKgE,SAASvD,YACd,MAEF,KAAK,EACHT,KAAK8E,MAAM9E,KAAKsJ,IAAKtJ,KAAKyJ,KAC1BzJ,KAAK8E,MAAM9E,KAAKuJ,IAAKvJ,KAAK0J,KAC1B1J,KAAK8E,MAAM9E,KAAKwJ,IAAKxJ,KAAK2J,KAIhC,EACA7E,MAAO,SAASlG,EAAGC,GAEjB,OADAD,GAAKA,EAAGC,GAAKA,EACLmB,KAAKgG,QACX,KAAK,EAAGhG,KAAKgG,OAAS,EAAGhG,KAAKsJ,IAAM1K,EAAGoB,KAAKyJ,IAAM5K,EAAG,MACrD,KAAK,EAAGmB,KAAKgG,OAAS,EAAGhG,KAAKuJ,IAAM3K,EAAGoB,KAAK0J,IAAM7K,EAAG,MACrD,KAAK,EAAGmB,KAAKgG,OAAS,EAAGhG,KAAKwJ,IAAM5K,EAAGoB,KAAK2J,IAAM9K,EAAGmB,KAAKgE,SAAS7D,QAAQH,KAAKK,IAAM,EAAIL,KAAKM,IAAM1B,GAAK,GAAIoB,KAAKO,IAAM,EAAIP,KAAKQ,IAAM3B,GAAK,GAAI,MACjJ,QAASiG,GAAM9E,KAAMpB,EAAGC,GAE1BmB,KAAKK,IAAML,KAAKM,IAAKN,KAAKM,IAAM1B,EAChCoB,KAAKO,IAAMP,KAAKQ,IAAKR,KAAKQ,IAAM3B,CAClC,GCxCF4I,GAAU5B,UAAY,CACpBP,UAAW,WACTtF,KAAK8F,MAAQ,CACf,EACAP,QAAS,WACPvF,KAAK8F,MAAQC,GACf,EACAnB,UAAW,WACT5E,KAAKK,IAAML,KAAKM,IAChBN,KAAKO,IAAMP,KAAKQ,IAAMuF,IACtB/F,KAAKgG,OAAS,CAChB,EACAnB,QAAS,YACH7E,KAAK8F,OAAyB,IAAf9F,KAAK8F,OAA+B,IAAhB9F,KAAKgG,SAAehG,KAAKgE,SAASvD,YACzET,KAAK8F,MAAQ,EAAI9F,KAAK8F,KACxB,EACAhB,MAAO,SAASlG,EAAGC,GAEjB,OADAD,GAAKA,EAAGC,GAAKA,EACLmB,KAAKgG,QACX,KAAK,EAAGhG,KAAKgG,OAAS,EAAG,MACzB,KAAK,EAAGhG,KAAKgG,OAAS,EAAG,MACzB,KAAK,EAAGhG,KAAKgG,OAAS,EAAG,IAAI7E,GAAMnB,KAAKK,IAAM,EAAIL,KAAKM,IAAM1B,GAAK,EAAGwC,GAAMpB,KAAKO,IAAM,EAAIP,KAAKQ,IAAM3B,GAAK,EAAGmB,KAAK8F,MAAQ9F,KAAKgE,SAAStD,OAAOS,EAAIC,GAAMpB,KAAKgE,SAAS7D,OAAOgB,EAAIC,GAAK,MACvL,KAAK,EAAGpB,KAAKgG,OAAS,EACtB,QAASlB,GAAM9E,KAAMpB,EAAGC,GAE1BmB,KAAKK,IAAML,KAAKM,IAAKN,KAAKM,IAAM1B,EAChCoB,KAAKO,IAAMP,KAAKQ,IAAKR,KAAKQ,IAAM3B,CAClC,GC3BF6I,GAAa7B,UAAY,CACvBP,UAAW+D,GACX9D,QAAS8D,GACTzE,UAAW,WACT5E,KAAKgG,OAAS,CAChB,EACAnB,QAAS,WACH7E,KAAKgG,QAAQhG,KAAKgE,SAASvD,WACjC,EACAqE,MAAO,SAASlG,EAAGC,GACjBD,GAAKA,EAAGC,GAAKA,EACTmB,KAAKgG,OAAQhG,KAAKgE,SAAStD,OAAO9B,EAAGC,IACpCmB,KAAKgG,OAAS,EAAGhG,KAAKgE,SAAS7D,OAAOvB,EAAGC,GAChD,GCoBFwJ,GAAUxC,UAAY,CACpBP,UAAW,WACTtF,KAAK8F,MAAQ,CACf,EACAP,QAAS,WACPvF,KAAK8F,MAAQC,GACf,EACAnB,UAAW,WACT5E,KAAKK,IAAML,KAAKM,IAChBN,KAAKO,IAAMP,KAAKQ,IAChBR,KAAK4J,IAAM7D,IACX/F,KAAKgG,OAAS,CAChB,EACAnB,QAAS,WACP,OAAQ7E,KAAKgG,QACX,KAAK,EAAGhG,KAAKgE,SAAStD,OAAOV,KAAKM,IAAKN,KAAKQ,KAAM,MAClD,KAAK,EAAGsE,GAAM9E,KAAMA,KAAK4J,IAAK1B,GAAOlI,KAAMA,KAAK4J,OAE9C5J,KAAK8F,OAAyB,IAAf9F,KAAK8F,OAA+B,IAAhB9F,KAAKgG,SAAehG,KAAKgE,SAASvD,YACzET,KAAK8F,MAAQ,EAAI9F,KAAK8F,KACxB,EACAhB,MAAO,SAASlG,EAAGC,GACjB,IAAIuJ,EAAKrC,IAGT,GADQlH,GAAKA,GAAbD,GAAKA,KACKoB,KAAKM,KAAOzB,IAAMmB,KAAKQ,IAAjC,CACA,OAAQR,KAAKgG,QACX,KAAK,EAAGhG,KAAKgG,OAAS,EAAGhG,KAAK8F,MAAQ9F,KAAKgE,SAAStD,OAAO9B,EAAGC,GAAKmB,KAAKgE,SAAS7D,OAAOvB,EAAGC,GAAI,MAC/F,KAAK,EAAGmB,KAAKgG,OAAS,EAAG,MACzB,KAAK,EAAGhG,KAAKgG,OAAS,EAAGlB,GAAM9E,KAAMkI,GAAOlI,KAAMoI,EAAKR,GAAO5H,KAAMpB,EAAGC,IAAKuJ,GAAK,MACjF,QAAStD,GAAM9E,KAAMA,KAAK4J,IAAKxB,EAAKR,GAAO5H,KAAMpB,EAAGC,IAGtDmB,KAAKK,IAAML,KAAKM,IAAKN,KAAKM,IAAM1B,EAChCoB,KAAKO,IAAMP,KAAKQ,IAAKR,KAAKQ,IAAM3B,EAChCmB,KAAK4J,IAAMxB,CAV2B,CAWxC,IAODE,GAAUzC,UAAYjO,OAAOiS,OAAOxB,GAAUxC,YAAYf,MAAQ,SAASlG,EAAGC,GAC7EwJ,GAAUxC,UAAUf,MAAMtH,KAAKwC,KAAMnB,EAAGD,EAC1C,EAMA2J,GAAe1C,UAAY,CACzB1F,OAAQ,SAASvB,EAAGC,GAAKmB,KAAKgE,SAAS7D,OAAOtB,EAAGD,EAAI,EACrD6B,UAAW,WAAaT,KAAKgE,SAASvD,WAAa,EACnDC,OAAQ,SAAS9B,EAAGC,GAAKmB,KAAKgE,SAAStD,OAAO7B,EAAGD,EAAI,EACrDkC,cAAe,SAASF,EAAIC,EAAIE,EAAIC,EAAIpC,EAAGC,GAAKmB,KAAKgE,SAASlD,cAAcD,EAAID,EAAII,EAAID,EAAIlC,EAAGD,EAAI,GC1FrG4J,GAAQ3C,UAAY,CAClBP,UAAW,WACTtF,KAAK8F,MAAQ,CACf,EACAP,QAAS,WACPvF,KAAK8F,MAAQC,GACf,EACAnB,UAAW,WACT5E,KAAKkG,GAAK,GACVlG,KAAK8J,GAAK,EACZ,EACAjF,QAAS,WACP,IAAIjG,EAAIoB,KAAKkG,GACTrH,EAAImB,KAAK8J,GACT3M,EAAIyB,EAAE/F,OAEV,GAAIsE,EAEF,GADA6C,KAAK8F,MAAQ9F,KAAKgE,SAAStD,OAAO9B,EAAE,GAAIC,EAAE,IAAMmB,KAAKgE,SAAS7D,OAAOvB,EAAE,GAAIC,EAAE,IACnE,IAAN1B,EACF6C,KAAKgE,SAAStD,OAAO9B,EAAE,GAAIC,EAAE,SAI7B,IAFA,IAAIkL,EAAKtB,GAAc7J,GACnBoL,EAAKvB,GAAc5J,GACdoL,EAAK,EAAGC,EAAK,EAAGA,EAAK/M,IAAK8M,IAAMC,EACvClK,KAAKgE,SAASlD,cAAciJ,EAAG,GAAGE,GAAKD,EAAG,GAAGC,GAAKF,EAAG,GAAGE,GAAKD,EAAG,GAAGC,GAAKrL,EAAEsL,GAAKrL,EAAEqL,KAKnFlK,KAAK8F,OAAyB,IAAf9F,KAAK8F,OAAqB,IAAN3I,IAAU6C,KAAKgE,SAASvD,YAC/DT,KAAK8F,MAAQ,EAAI9F,KAAK8F,MACtB9F,KAAKkG,GAAKlG,KAAK8J,GAAK,IACtB,EACAhF,MAAO,SAASlG,EAAGC,GACjBmB,KAAKkG,GAAGhN,MAAM0F,GACdoB,KAAK8J,GAAG5Q,MAAM2F,EAChB,GCnCF+J,GAAK/C,UAAY,CACfP,UAAW,WACTtF,KAAK8F,MAAQ,CACf,EACAP,QAAS,WACPvF,KAAK8F,MAAQC,GACf,EACAnB,UAAW,WACT5E,KAAKkG,GAAKlG,KAAK8J,GAAK/D,IACpB/F,KAAKgG,OAAS,CAChB,EACAnB,QAAS,WACH,EAAI7E,KAAK6I,IAAM7I,KAAK6I,GAAK,GAAqB,IAAhB7I,KAAKgG,QAAchG,KAAKgE,SAAStD,OAAOV,KAAKkG,GAAIlG,KAAK8J,KACpF9J,KAAK8F,OAAyB,IAAf9F,KAAK8F,OAA+B,IAAhB9F,KAAKgG,SAAehG,KAAKgE,SAASvD,YACrET,KAAK8F,OAAS,IAAG9F,KAAK6I,GAAK,EAAI7I,KAAK6I,GAAI7I,KAAK8F,MAAQ,EAAI9F,KAAK8F,MACpE,EACAhB,MAAO,SAASlG,EAAGC,GAEjB,OADAD,GAAKA,EAAGC,GAAKA,EACLmB,KAAKgG,QACX,KAAK,EAAGhG,KAAKgG,OAAS,EAAGhG,KAAK8F,MAAQ9F,KAAKgE,SAAStD,OAAO9B,EAAGC,GAAKmB,KAAKgE,SAAS7D,OAAOvB,EAAGC,GAAI,MAC/F,KAAK,EAAGmB,KAAKgG,OAAS,EACtB,QACE,GAAIhG,KAAK6I,IAAM,EACb7I,KAAKgE,SAAStD,OAAOV,KAAKkG,GAAIrH,GAC9BmB,KAAKgE,SAAStD,OAAO9B,EAAGC,OACnB,CACL,IAAI+B,EAAKZ,KAAKkG,IAAM,EAAIlG,KAAK6I,IAAMjK,EAAIoB,KAAK6I,GAC5C7I,KAAKgE,SAAStD,OAAOE,EAAIZ,KAAK8J,IAC9B9J,KAAKgE,SAAStD,OAAOE,EAAI/B,EAC3B,EAIJmB,KAAKkG,GAAKtH,EAAGoB,KAAK8J,GAAKjL,CACzB,GIvCF,IAAI9B,GAAY,CAAC,OAAQ,OAAQ,YACjC,SAASC,KAAa,OAAOA,GAAWpF,OAAOqF,OAASrF,OAAOqF,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAIzC,UAAU9B,OAAQuE,IAAK,CAAE,IAAIC,EAAI1C,UAAUyC,GAAI,IAAK,IAAIE,KAAKD,GAAI,CAAC,GAAGE,eAAeC,KAAKH,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAGH,GAASS,MAAM,KAAM9C,UAAY,CACnR,SAASwP,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAanL,IAAI6N,GAAkB,CACpB9E,gBACAG,eACAG,iBACAC,gBACAI,cACAK,kBACAC,cAEE8D,GAAS5L,KAAKI,GAAK,IAgCZyL,GAAUxO,IACnB,IAiBMyO,EACAC,GAlBFC,KACAA,EAAO,SAAQjF,KACfA,EAAO,GAAEkF,SACTA,EAAW,QACT5O,EAEFV,EAAQsO,GAAcA,GAAc,CAAA,EA1D1C,SAAkCnN,EAAGC,GAAK,GAAI,MAAQD,EAAG,MAAO,CAAA,EAAI,IAAIkB,EAAGhB,EAAGnC,EAC9E,SAAuCmC,EAAGF,GAAK,GAAI,MAAQE,EAAG,MAAO,CAAA,EAAI,IAAID,EAAI,CAAA,EAAI,IAAK,IAAIF,KAAKG,EAAG,GAAI,CAAC,EAAEC,eAAeC,KAAKF,EAAGH,GAAI,CAAE,QAAWC,EAAEhD,QAAQ+C,GAAI,SAAUE,EAAEF,GAAKG,EAAEH,EAAI,CAAE,OAAOE,CAAG,CADpHkB,CAA8BnB,EAAGC,GAAI,GAAIzF,OAAO4G,sBAAuB,CAAE,IAAIrB,EAAIvF,OAAO4G,sBAAsBpB,GAAI,IAAKE,EAAI,EAAGA,EAAIH,EAAEtE,OAAQyE,IAAKgB,EAAInB,EAAEG,IAAI,IAAOD,EAAEjD,QAAQkE,IAAM,CAAC,EAAEG,qBAAqBjB,KAAKJ,EAAGkB,KAAOnD,EAAEmD,GAAKlB,EAAEkB,GAAK,CAAE,OAAOnD,CAAG,CAyD1TuD,CAAyB/B,EAAMI,KACW,GAAI,CACrDuO,OACAjF,OACAkF,cAYEtN,UACFA,EAASuN,GACTA,EAAEC,GACFA,GACExP,EACAyP,EAAgB1P,EAAYC,GAAO,GACvC,OAAIuP,KAAQA,GAAMC,KAAQA,GAAMpF,KAAUA,EACpBrH,EAAMC,cAAc,OAAQjC,GAAS,CAAA,EAAI0O,EAAe,CAC1EzN,UAAWc,EAAK,mBAAoBd,GACpC0N,UAAW,aAAarQ,OAAOkQ,EAAI,MAAMlQ,OAAOmQ,EAAI,KACpDrI,GAdEgI,EAjDeE,CAAAA,IACrB,IAAIM,EAAO,SAAStQ,OAAOD,EAAWiQ,IACtC,OAAOL,GAAgBW,IAASzF,IA+CV0F,CAAiBP,GACjCD,ECvCO,SAAgBC,EAAMjF,GACnC,IAAItC,EAAU,KACVrK,EAAO+J,GAAS4H,GAKpB,SAASA,IACP,IAAI3G,EAGJ,GAFKX,IAASA,EAAUW,EAAShL,KACjC4R,EAAK7N,MAAMuC,KAAMrF,WAAWyL,KAAKrC,GAAUsC,EAAK5I,MAAMuC,KAAMrF,YACxD+J,EAAQ,OAAOX,EAAU,KAAMW,EAAS,IAAM,IACpD,CAcA,OAtBA4G,EAAuB,mBAATA,EAAsBA,EAAOjH,GAASiH,GAAQQ,IAC5DzF,EAAuB,mBAATA,EAAsBA,EAAOhC,QAAkBzK,IAATyM,EAAqB,IAAMA,GAS/EgF,EAAOC,KAAO,SAASrL,GACrB,OAAOtF,UAAU9B,QAAUyS,EAAoB,mBAANrL,EAAmBA,EAAIoE,GAASpE,GAAIoL,GAAUC,CACzF,EAEAD,EAAOhF,KAAO,SAASpG,GACrB,OAAOtF,UAAU9B,QAAUwN,EAAoB,mBAANpG,EAAmBA,EAAIoE,IAAUpE,GAAIoL,GAAUhF,CAC1F,EAEAgF,EAAOtH,QAAU,SAAS9D,GACxB,OAAOtF,UAAU9B,QAAUkL,EAAe,MAAL9D,EAAY,KAAOA,EAAGoL,GAAUtH,CACvE,EAEOsH,CACT,CDYiBU,GAAcT,KAAKF,GAAe/E,KA9C3B,EAACA,EAAMkF,EAAUD,KACvC,GAAiB,SAAbC,EACF,OAAOlF,EAET,OAAQiF,GACN,IAAK,QACH,OAAO,EAAIjF,EAAOA,EAAO,EAC3B,IAAK,UACH,MAAO,GAAMA,EAAOA,EAAO/G,KAAKE,KAAK,GACvC,IAAK,SACH,OAAO6G,EAAOA,EAChB,IAAK,OAED,IAAI2F,EAAQ,GAAKd,GACjB,OAAO,KAAO7E,EAAOA,GAAQ/G,KAAK4C,IAAI8J,GAAS1M,KAAK4C,IAAY,EAAR8J,GAAa1M,KAAK4C,IAAI8J,IAAU,GAE5F,IAAK,WACH,OAAO1M,KAAKE,KAAK,GAAK6G,EAAOA,EAAO,EACtC,IAAK,MACH,OAAQ,GAAK,GAAK/G,KAAKE,KAAK,IAAM6G,EAAOA,EAAO,EAClD,QACE,OAAO/G,KAAKI,GAAK2G,EAAOA,EAAO,IAyBmB4F,CAAkB5F,EAAMkF,EAAUD,IAC/ED,QAeF,ME7FT,SAASrO,KAAa,OAAOA,GAAWpF,OAAOqF,OAASrF,OAAOqF,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAIzC,UAAU9B,OAAQuE,IAAK,CAAE,IAAIC,EAAI1C,UAAUyC,GAAI,IAAK,IAAIE,KAAKD,GAAI,CAAC,GAAGE,eAAeC,KAAKH,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAGH,GAASS,MAAM,KAAM9C,UAAY,CACnR,SAASwP,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAE9P,SAASmN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CF4FnL+N,GAAQe,eAxCa,CAAC/T,EAAKgU,KACzBlB,GAAgB,SAAS3P,OAAOD,EAAWlD,KAASgU,GEzCtD,IAAIC,GAAO,GACJ,MAAMC,WAA6BC,EAOxCC,UAAAA,CAAW9H,EAAM+H,GACf,IAAIC,cACFA,GACEzM,KAAK/D,MACLyQ,EAAWN,GACXO,EAAYP,GAAO,EACnBQ,EAAYR,GAAO,EACnBS,EAAQpI,EAAKqI,SAAWL,EAAgBhI,EAAKoI,MAC7CE,EAAgBP,QAA2CA,EAAW/H,EAAK6G,KAC/E,GAAsB,SAAlByB,EACF,OAAO,KAET,GAAsB,cAAlBA,EACF,OAAoB/N,EAAMC,cAAc,OAAQ,CAC9C+N,YAAa,EACbC,KAAM,OACNC,OAAQL,EACRM,gBAAiB1I,EAAK2I,QAAQD,gBAC9BvM,GAAI,EACJC,GAAI6L,EACJ3L,GAAIqL,GACJpL,GAAI0L,EACJzO,UAAW,yBAGf,GAAsB,SAAlB8O,EACF,OAAoB/N,EAAMC,cAAc,OAAQ,CAC9C+N,YAAa,EACbC,KAAM,OACNC,OAAQL,EACRzJ,EAAG,MAAM9H,OAAOoR,EAAU,KAAKpR,OAAOsR,EAAW,mBAAmBtR,OAAOqR,EAAW,KAAKrR,OAAOqR,EAAW,WAAWrR,OAAO,EAAIsR,EAAW,KAAKtR,OAAOoR,EAAU,mBAAmBpR,OAAO8Q,GAAM,KAAK9Q,OAAO,EAAIsR,EAAW,KAAKtR,OAAOoR,EAAU,mBAAmBpR,OAAOqR,EAAW,KAAKrR,OAAOqR,EAAW,WAAWrR,OAAOsR,EAAW,KAAKtR,OAAOoR,GAC1VzO,UAAW,yBAGf,GAAsB,SAAlB8O,EACF,OAAoB/N,EAAMC,cAAc,OAAQ,CAC9CiO,OAAQ,OACRD,KAAMJ,EACNzJ,EAAG,MAAM9H,OAAO8Q,EAAU,KAAK9Q,OAAO8Q,GAAM,KAAK9Q,OAAO8Q,GAAc,KAAK9Q,QAAO,GAAO,KACzF2C,UAAW,yBAGf,GAAiBe,EAAM3C,eAAeoI,EAAK4I,YAAa,CACtD,IAAIC,EAhEV,SAAuBlQ,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CAgEhamN,CAAc,CAAA,EAAI9F,GAElC,cADO6I,EAAUD,WACGrO,EAAMuO,aAAa9I,EAAK4I,WAAYC,EAC1D,CACA,OAAoBtO,EAAMC,cAAckM,GAAS,CAC/C8B,KAAMJ,EACNrB,GAAIkB,EACJjB,GAAIiB,EACJrG,KAAM+F,GACNb,SAAU,WACVD,KAAMyB,GAEV,CAMAS,WAAAA,GACE,IAAIJ,QACFA,EAAOK,SACPA,EAAQC,OACRA,EAAMC,UACNA,EAASlB,cACTA,EAAaD,SACbA,GACExM,KAAK/D,MACL+B,EAAU,CACZY,EAAG,EACHC,EAAG,EACHf,MAAOsO,GACPrO,OAAQqO,IAENwB,EAAY,CACdC,QAAoB,eAAXH,EAA0B,eAAiB,QACpDI,YAAa,IAEXC,EAAW,CACbF,QAAS,eACTG,cAAe,SACfF,YAAa,GAEf,OAAOV,EAAQa,IAAI,CAACC,EAAO/S,KACzB,IAAIgT,EAAiBD,EAAMP,WAAaA,EACpC1P,EAAYc,EAAK,CACnB,wBAAwB,EACxB,CAAC,eAAezD,OAAOH,KAAK,EAC5B2R,SAAUoB,EAAMpB,WAElB,GAAmB,SAAfoB,EAAM5C,KACR,OAAO,KAET,IAAIuB,EAAQqB,EAAMpB,SAAWL,EAAgByB,EAAMrB,MAC/CuB,EAAaD,EAAiBA,EAAeD,EAAMjW,MAAOiW,EAAO/S,GAAK+S,EAAMjW,MAChF,OAAoB+G,EAAMC,cAAc,KAAMjC,GAAS,CACrDiB,UAAWA,EACXC,MAAO0P,EAGPzV,IAAK,eAAemD,OAAOH,IlCCH,EAACc,EAAOwI,EAAM3L,KAC5C,GAAc,OAAVmD,GAAmC,iBAAVA,GAAuC,mBAAVA,EACxD,OAAO,KAET,IAAIK,EAAM,KAQV,OAPA1E,OAAO2E,KAAKN,GAAOO,QAAQrE,IACzB,IAAIkW,EAAOpS,EAAM9D,GACb4D,EAAU1D,SAASF,IAAwB,mBAATkW,IAC/B/R,IAAKA,EAAM,CAAA,GAChBA,EAAInE,GAbmB,EAACmW,EAAiB7J,EAAM3L,IAAUsE,IAC7DkR,EAAgB7J,EAAM3L,EAAOsE,GACtB,MAWQmR,CAAuBF,EAAM5J,EAAM3L,MAG3CwD,GkCZAkS,CAAmBxO,KAAK/D,MAAOiS,EAAO/S,IAAkB6D,EAAMC,cAAcvB,GAAS,CACtFI,MAAO2P,EACP1P,OAAQ0P,EACRzP,QAASA,EACTE,MAAO6P,EACP,aAAc,GAAGzS,OAAO8S,EAAY,iBACnCpO,KAAKuM,WAAW2B,EAAO1B,IAAyBxN,EAAMC,cAAc,OAAQ,CAC7EhB,UAAW,4BACXC,MAAO,CACL2O,UAEDuB,KAEP,CACAK,MAAAA,GACE,IAAIrB,QACFA,EAAOM,OACPA,EAAMgB,MACNA,GACE1O,KAAK/D,MACT,IAAKmR,IAAYA,EAAQvU,OACvB,OAAO,KAET,IAAI8V,EAAa,CACfC,QAAS,EACTC,OAAQ,EACRC,UAAsB,eAAXpB,EAA0BgB,EAAQ,QAE/C,OAAoB1P,EAAMC,cAAc,KAAM,CAC5ChB,UAAW,0BACXC,MAAOyQ,GACN3O,KAAKwN,cACV,EAEFhD,GAAgB6B,GAAsB,cAAe,UACrD7B,GAAgB6B,GAAsB,eAAgB,CACpDqC,MAAO,SACPjB,SAAU,GACVhB,cAAe,OACfiB,OAAQ,aACRM,cAAe,kECpKjBpW,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAc5DH,EAAAiX,OAZA,SAAgBC,EAAKC,GACjB,MAAMhB,EAAM,IAAIiB,IAChB,IAAK,IAAI/T,EAAI,EAAGA,EAAI6T,EAAInW,OAAQsC,IAAK,CACjC,MAAMkT,EAAOW,EAAI7T,GACXhD,EAAM8W,EAAOZ,GACdJ,EAAIkB,IAAIhX,IACT8V,EAAImB,IAAIjX,EAAKkW,EAEzB,CACI,OAAOxU,MAAMgK,KAAKoK,EAAIoB,SAC1B,6DCZAzX,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAM5DH,EAAAwX,SAJA,SAAkB1Q,GACd,OAAOA,CACX,4ECJAhH,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAM5DH,EAAAyX,SAJA,SAAkBtX,GACd,OAAOqC,OAAOkV,cAAcvX,IAAUA,GAAS,CACnD,uDCJAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMsX,EAAWnW,KAMjBtB,EAAA2X,YAJA,SAAqBxX,GACjB,OAAgB,MAATA,GAAkC,mBAAVA,GAAwBsX,EAASA,SAAStX,EAAMY,OACnF,+DCNAjB,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAM5DH,EAAA4X,aAJA,SAAsBzX,GAClB,MAAwB,iBAAVA,GAAgC,OAAVA,CACxC,uDCJAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMwX,EAAcrW,KACdsW,EAAerW,KAMrBvB,EAAA6X,kBAJA,SAA2B1X,GACvB,OAAOyX,EAAaA,aAAazX,IAAUwX,EAAYA,YAAYxX,EACvE,yECPAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMuB,EAAMJ,IAQZtB,EAAA4E,SANA,SAAkBhD,GACd,OAAO,SAAUD,GACb,OAAOD,EAAIA,IAAIC,EAAQC,EAC/B,CACA,8ECRA9B,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAM5DH,EAAA8X,SAJA,SAAkB3X,GACd,OAAiB,OAAVA,IAAoC,iBAAVA,GAAuC,mBAAVA,EAClE,6DCJAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAM5DH,EAAA+X,YAJA,SAAqB5X,GACjB,OAAgB,MAATA,GAAmC,iBAAVA,GAAuC,mBAAVA,CACjE,mECJAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAM5DH,EAAAgY,GAJA,SAAY7X,EAAO8X,GACf,OAAO9X,IAAU8X,GAAUzV,OAAO2O,MAAMhR,IAAUqC,OAAO2O,MAAM8G,EACnE,uDCJAnY,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAM+X,EAAU5W,KACVwW,EAAWvW,KACXwW,EAAcvW,KACdwW,EAAKvW,KAcX,SAAS0W,EAAoBC,EAAQC,EAAQC,EAASC,GAClD,GAAIF,IAAWD,EACX,OAAO,EAEX,cAAeC,GACX,IAAK,SACD,OAoBZ,SAAuBD,EAAQC,EAAQC,EAASC,GAC5C,GAAc,MAAVF,EACA,OAAO,EAEX,GAAItW,MAAMC,QAAQqW,GACd,OAAOG,EAAaJ,EAAQC,EAAQC,EAASC,GAEjD,GAAIF,aAAkBjB,IAClB,OA2CR,SAAoBgB,EAAQC,EAAQC,EAASC,GACzC,GAAoB,IAAhBF,EAAO9J,KACP,OAAO,EAEX,KAAM6J,aAAkBhB,KACpB,OAAO,EAEX,IAAK,MAAO/W,EAAKoY,KAAgBJ,EAAOK,UAAW,CAG/C,IAAgB,IADAJ,EADIF,EAAO1W,IAAIrB,GACMoY,EAAapY,EAAK+X,EAAQC,EAAQE,GAEnE,OAAO,CAEnB,CACI,OAAO,CACX,CA1DeI,CAAWP,EAAQC,EAAQC,EAASC,GAE/C,GAAIF,aAAkBO,IAClB,OAAOC,EAAWT,EAAQC,EAAQC,EAASC,GAE/C,MAAM9T,EAAO3E,OAAO2E,KAAK4T,GACzB,GAAc,MAAVD,EACA,OAAuB,IAAhB3T,EAAK1D,OAEhB,GAAoB,IAAhB0D,EAAK1D,OACL,OAAO,EAEX,GAAIwX,GAASA,EAAMlB,IAAIgB,GACnB,OAAOE,EAAM7W,IAAI2W,KAAYD,EAE7BG,GACAA,EAAMjB,IAAIe,EAAQD,GAEtB,IACI,IAAK,IAAI/U,EAAI,EAAGA,EAAIoB,EAAK1D,OAAQsC,IAAK,CAClC,MAAMhD,EAAMoE,EAAKpB,GACjB,IAAK0U,EAAYA,YAAYK,MAAa/X,KAAO+X,GAC7C,OAAO,EAEX,QAAoBtW,IAAhBuW,EAAOhY,SAAsCyB,IAAhBsW,EAAO/X,GACpC,OAAO,EAEX,GAAoB,OAAhBgY,EAAOhY,IAAiC,OAAhB+X,EAAO/X,GAC/B,OAAO,EAGX,IADgBiY,EAAQF,EAAO/X,GAAMgY,EAAOhY,GAAMA,EAAK+X,EAAQC,EAAQE,GAEnE,OAAO,CAEvB,CACQ,OAAO,CACf,CAAA,QAEYA,GACAA,EAAMO,OAAOT,EAEzB,CACA,CAtEmBU,CAAcX,EAAQC,EAAQC,EAASC,GAElD,IAAK,WAED,OADmBzY,OAAO2E,KAAK4T,GAChBtX,OAAS,EACboX,EAAoBC,EAAQ,IAAKC,GAAUC,EAASC,GAExDP,EAAGA,GAAGI,EAAQC,GAEzB,QACI,OAAKP,EAASA,SAASM,GAGD,iBAAXC,GACW,KAAXA,EAHAL,EAAGA,GAAGI,EAAQC,GAQrC,CAoEA,SAASG,EAAaJ,EAAQC,EAAQC,EAASC,GAC3C,GAAsB,IAAlBF,EAAOtX,OACP,OAAO,EAEX,IAAKgB,MAAMC,QAAQoW,GACf,OAAO,EAEX,MAAMY,EAAe,IAAIJ,IACzB,IAAK,IAAIvV,EAAI,EAAGA,EAAIgV,EAAOtX,OAAQsC,IAAK,CACpC,MAAM4V,EAAaZ,EAAOhV,GAC1B,IAAI6V,GAAQ,EACZ,IAAK,IAAI7L,EAAI,EAAGA,EAAI+K,EAAOrX,OAAQsM,IAAK,CACpC,GAAI2L,EAAa3B,IAAIhK,GACjB,SAGJ,IAAI8L,GAAU,EAKd,GAJgBb,EAFGF,EAAO/K,GAEU4L,EAAY5V,EAAG+U,EAAQC,EAAQE,KAE/DY,GAAU,GAEVA,EAAS,CACTH,EAAaI,IAAI/L,GACjB6L,GAAQ,EACR,KAChB,CACA,CACQ,IAAKA,EACD,OAAO,CAEnB,CACI,OAAO,CACX,CACA,SAASL,EAAWT,EAAQC,EAAQC,EAASC,GACzC,OAAoB,IAAhBF,EAAO9J,MAGL6J,aAAkBQ,KAGjBJ,EAAa,IAAIJ,GAAS,IAAIC,GAASC,EAASC,EAC3D,CAEAvY,EAAAqZ,YApJA,SAAqBjB,EAAQC,EAAQC,GACjC,MAAuB,mBAAZA,EACAJ,EAAQA,QAAQE,EAAQC,GAE5BF,EAAoBC,EAAQC,EAAQ,SAASiB,EAAUC,EAAUC,EAAUnZ,EAAKsB,EAAQ0W,EAAQE,GACnG,MAAMkB,EAAUnB,EAAQiB,EAAUC,EAAUnZ,EAAKsB,EAAQ0W,EAAQE,GACjE,YAAgBzW,IAAZ2X,EACOC,QAAQD,GAEZtB,EAAoBoB,EAAUC,EAAUF,EAAWf,EAClE,EAAO,IAAInB,IACX,EA0IApX,EAAA6Y,WAAqBA,sDC5JrB/Y,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMkZ,EAAc/X,KAMpBtB,EAAAkY,QAJA,SAAiBE,EAAQC,GACrB,OAAOgB,EAAYA,YAAYjB,EAAQC,EAAQ,OACnD,wECNAvY,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAM5DH,EAAA2Z,WAJA,SAAoBhY,GAChB,OAAO7B,OAAO4G,sBAAsB/E,GAAQ2Q,OAAOiB,GAAUzT,OAAOiO,UAAUpH,qBAAqBjB,KAAK/D,EAAQ4R,GACpH,6DCJAzT,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAS5DH,EAAA4Z,OAPA,SAAgBzZ,GACZ,OAAa,MAATA,OACiB2B,IAAV3B,EAAsB,qBAAuB,gBAEjDL,OAAOiO,UAAU5C,SAASzF,KAAKvF,EAC1C,oECPAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WA6B5DH,EAAA6Z,aAvBqB,qBAwBrB7Z,EAAA8Z,eAjBuB,uBAkBvB9Z,EAAA+Z,SApBiB,iBAqBjB/Z,EAAAga,iBAPyB,yBAQzBha,EAAAia,kBAZ0B,0BAa1Bja,EAAAka,WA7BmB,mBA8BnBla,EAAAma,YAnBoB,oBAoBpBna,EAAAoa,QA5BgB,gBA6BhBpa,EAAAqa,SAtBiB,iBAuBjBra,EAAAsa,gBAZwB,wBAaxBta,EAAAua,gBAZwB,wBAaxBva,EAAAwa,YA5BoB,oBA6BpBxa,EAAAya,cAlBsB,sBAmBtBza,EAAA0a,cAlBsB,sBAmBtB1a,EAAA2a,aArBqB,qBAsBrB3a,EAAA4a,OAnCe,eAoCf5a,EAAA6a,UAzCkB,kBA0ClB7a,EAAA8a,UAhCkB,kBAiClB9a,EAAA+a,UA7CkB,kBA8ClB/a,EAAAgb,OAtCe,eAuCfhb,EAAAib,UA9CkB,kBA+ClBjb,EAAAkb,UA3CkB,kBA4ClBlb,EAAAmb,eAhCuB,uBAiCvBnb,EAAAob,eAhCuB,uBAiCvBpb,EAAAqb,cApCsB,sBAqCtBrb,EAAAsb,qBApC6B,gGClB7Bxb,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAM5DH,EAAAub,aAJA,SAAsBzU,GAClB,OAAO0U,YAAYC,OAAO3U,MAAQA,aAAa4U,SACnD,uDCJA5b,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMwZ,EAAarY,KACbsY,EAASrY,KACToa,EAAOna,KACPuW,EAActW,KACd8Z,EAAeK,KAKrB,SAASC,EAAkBC,EAAcC,EAAYC,EAAezD,EAAQ,IAAInB,IAAO6E,OAAana,GAChG,MAAMoa,EAASD,IAAaH,EAAcC,EAAYC,EAAezD,GACrE,GAAc,MAAV2D,EACA,OAAOA,EAEX,GAAInE,EAAYA,YAAY+D,GACxB,OAAOA,EAEX,GAAIvD,EAAMlB,IAAIyE,GACV,OAAOvD,EAAM7W,IAAIoa,GAErB,GAAI/Z,MAAMC,QAAQ8Z,GAAe,CAC7B,MAAMhb,EAAS,IAAIiB,MAAM+Z,EAAa/a,QACtCwX,EAAMjB,IAAIwE,EAAchb,GACxB,IAAK,IAAIuC,EAAI,EAAGA,EAAIyY,EAAa/a,OAAQsC,IACrCvC,EAAOuC,GAAKwY,EAAkBC,EAAazY,GAAIA,EAAG2Y,EAAezD,EAAO0D,GAQ5E,OANInc,OAAOqc,OAAOL,EAAc,WAC5Bhb,EAAOE,MAAQ8a,EAAa9a,OAE5BlB,OAAOqc,OAAOL,EAAc,WAC5Bhb,EAAOsb,MAAQN,EAAaM,OAEzBtb,CACf,CACI,GAAIgb,aAAwBO,KACxB,OAAO,IAAIA,KAAKP,EAAaQ,WAEjC,GAAIR,aAAwBS,OAAQ,CAChC,MAAMzb,EAAS,IAAIyb,OAAOT,EAAazD,OAAQyD,EAAaU,OAE5D,OADA1b,EAAO2b,UAAYX,EAAaW,UACzB3b,CACf,CACI,GAAIgb,aAAwB1E,IAAK,CAC7B,MAAMtW,EAAS,IAAIsW,IACnBmB,EAAMjB,IAAIwE,EAAchb,GACxB,IAAK,MAAOT,EAAKF,KAAU2b,EACvBhb,EAAOwW,IAAIjX,EAAKwb,EAAkB1b,EAAOE,EAAK2b,EAAezD,EAAO0D,IAExE,OAAOnb,CACf,CACI,GAAIgb,aAAwBlD,IAAK,CAC7B,MAAM9X,EAAS,IAAI8X,IACnBL,EAAMjB,IAAIwE,EAAchb,GACxB,IAAK,MAAMX,KAAS2b,EAChBhb,EAAOsY,IAAIyC,EAAkB1b,OAAO2B,EAAWka,EAAezD,EAAO0D,IAEzE,OAAOnb,CACf,CACI,GAAsB,oBAAX4b,QAA0BA,OAAOC,SAASb,GACjD,OAAOA,EAAac,WAExB,GAAIrB,EAAaA,aAAaO,GAAe,CACzC,MAAMhb,EAAS,IAAKhB,OAAO+c,eAAef,GAAc1Q,aAAa0Q,EAAa/a,QAClFwX,EAAMjB,IAAIwE,EAAchb,GACxB,IAAK,IAAIuC,EAAI,EAAGA,EAAIyY,EAAa/a,OAAQsC,IACrCvC,EAAOuC,GAAKwY,EAAkBC,EAAazY,GAAIA,EAAG2Y,EAAezD,EAAO0D,GAE5E,OAAOnb,CACf,CACI,GAAIgb,aAAwBN,aACM,oBAAtBsB,mBAAqChB,aAAwBgB,kBACrE,OAAOhB,EAAa9Y,MAAM,GAE9B,GAAI8Y,aAAwBJ,SAAU,CAClC,MAAM5a,EAAS,IAAI4a,SAASI,EAAalP,OAAO5J,MAAM,GAAI8Y,EAAaiB,WAAYjB,EAAakB,YAGhG,OAFAzE,EAAMjB,IAAIwE,EAAchb,GACxBmc,EAAenc,EAAQgb,EAAcE,EAAezD,EAAO0D,GACpDnb,CACf,CACI,GAAoB,oBAAToc,MAAwBpB,aAAwBoB,KAAM,CAC7D,MAAMpc,EAAS,IAAIoc,KAAK,CAACpB,GAAeA,EAAahI,KAAM,CACvDN,KAAMsI,EAAatI,OAIvB,OAFA+E,EAAMjB,IAAIwE,EAAchb,GACxBmc,EAAenc,EAAQgb,EAAcE,EAAezD,EAAO0D,GACpDnb,CACf,CACI,GAAIgb,aAAwBqB,KAAM,CAC9B,MAAMrc,EAAS,IAAIqc,KAAK,CAACrB,GAAe,CAAEtI,KAAMsI,EAAatI,OAG7D,OAFA+E,EAAMjB,IAAIwE,EAAchb,GACxBmc,EAAenc,EAAQgb,EAAcE,EAAezD,EAAO0D,GACpDnb,CACf,CACI,GAAIgb,aAAwB1S,MAAO,CAC/B,MAAMtI,EAAS,IAAIgb,EAAa1Q,YAOhC,OANAmN,EAAMjB,IAAIwE,EAAchb,GACxBA,EAAOsc,QAAUtB,EAAasB,QAC9Btc,EAAOgT,KAAOgI,EAAahI,KAC3BhT,EAAOyX,MAAQuD,EAAavD,MAC5BzX,EAAOuc,MAAQvB,EAAauB,MAC5BJ,EAAenc,EAAQgb,EAAcE,EAAezD,EAAO0D,GACpDnb,CACf,CACI,GAA4B,iBAAjBgb,GAkBf,SAA2Bna,GACvB,OAAQiY,EAAOA,OAAOjY,IAClB,KAAKga,EAAK9B,aACV,KAAK8B,EAAK5B,SACV,KAAK4B,EAAK7B,eACV,KAAK6B,EAAKxB,YACV,KAAKwB,EAAKzB,WACV,KAAKyB,EAAKvB,QACV,KAAKuB,EAAKrB,gBACV,KAAKqB,EAAKpB,gBACV,KAAKoB,EAAKhB,aACV,KAAKgB,EAAKlB,cACV,KAAKkB,EAAKjB,cACV,KAAKiB,EAAKf,OACV,KAAKe,EAAKd,UACV,KAAKc,EAAKb,UACV,KAAKa,EAAKZ,UACV,KAAKY,EAAKX,OACV,KAAKW,EAAKV,UACV,KAAKU,EAAKT,UACV,KAAKS,EAAKN,cACV,KAAKM,EAAKL,qBACV,KAAKK,EAAKR,eACV,KAAKQ,EAAKP,eACN,OAAO,EAEX,QACI,OAAO,EAGnB,CAhD4CkC,CAAkBxB,GAAe,CACrE,MAAMhb,EAAShB,OAAOiS,OAAOjS,OAAO+c,eAAef,IAGnD,OAFAvD,EAAMjB,IAAIwE,EAAchb,GACxBmc,EAAenc,EAAQgb,EAAcE,EAAezD,EAAO0D,GACpDnb,CACf,CACI,OAAOgb,CACX,CACA,SAASmB,EAAe7E,EAAQC,EAAQ2D,EAAgB5D,EAAQG,EAAO0D,GACnE,MAAMxX,EAAO,IAAI3E,OAAO2E,KAAK4T,MAAYsB,EAAWA,WAAWtB,IAC/D,IAAK,IAAIhV,EAAI,EAAGA,EAAIoB,EAAK1D,OAAQsC,IAAK,CAClC,MAAMhD,EAAMoE,EAAKpB,GACXka,EAAazd,OAAOyS,yBAAyB6F,EAAQ/X,IACzC,MAAdkd,GAAsBA,EAAWrK,YACjCkF,EAAO/X,GAAOwb,EAAkBxD,EAAOhY,GAAMA,EAAK2b,EAAezD,EAAO0D,GAEpF,CACA,CAiCAjc,EAAAwd,cAnJA,SAAuBC,EAAKxB,GACxB,OAAOJ,EAAkB4B,OAAK3b,EAAW2b,EAAK,IAAIrG,IAAO6E,EAC7D,EAkJAjc,EAAA6b,kBAA4BA,EAC5B7b,EAAAid,eAAyBA,sDC7JzBnd,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMqd,EAAgBlc,KAMtBtB,EAAA0d,UAJA,SAAmBD,GACf,OAAOD,EAAc3B,kBAAkB4B,OAAK3b,EAAW2b,EAAK,IAAIrG,SAAOtV,EAC3E,sDCNAhC,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAM+X,EAAU5W,KACVoc,EAAYnc,KASlBvB,EAAAmZ,QAPA,SAAiBd,GAEb,OADAA,EAASqF,EAAUA,UAAUrF,GACrBD,GACGF,EAAQA,QAAQE,EAAQC,EAEvC,kFCVAvY,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMwd,EAAkBrc,KAClBqa,EAAOpa,KAiCbvB,EAAAwd,cA/BA,SAAuBC,EAAKG,GACxB,OAAOD,EAAgBH,cAAcC,EAAK,CAACtd,EAAOE,EAAKsB,EAAQ4W,KAC3D,MAAM2D,EAAS0B,IAAazd,EAAOE,EAAKsB,EAAQ4W,GAChD,GAAc,MAAV2D,EACA,OAAOA,EAEX,GAAmB,iBAARuB,EAGX,OAAQ3d,OAAOiO,UAAU5C,SAASzF,KAAK+X,IACnC,KAAK9B,EAAKd,UACV,KAAKc,EAAKV,UACV,KAAKU,EAAKzB,WAAY,CAClB,MAAMpZ,EAAS,IAAI2c,EAAIrS,YAAYqS,GAAK/c,WAExC,OADAid,EAAgBV,eAAenc,EAAQ2c,GAChC3c,CACvB,CACY,KAAK6a,EAAK9B,aAAc,CACpB,MAAM/Y,EAAS,CAAA,EAIf,OAHA6c,EAAgBV,eAAenc,EAAQ2c,GACvC3c,EAAOC,OAAS0c,EAAI1c,OACpBD,EAAOb,OAAO4d,UAAYJ,EAAIxd,OAAO4d,UAC9B/c,CACvB,CACY,QACI,SAIhB,sDClCAhB,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMqd,EAAgBlc,KAMtBtB,EAAA0d,UAJA,SAAmBD,GACf,OAAOD,EAAcA,cAAcC,EACvC,yECNA3d,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAM2d,EAAsB,mBAe5B9d,EAAA+d,QAdA,SAAiB5d,EAAOY,EAASyB,OAAOwb,kBACpC,cAAe7d,GACX,IAAK,SACD,OAAOqC,OAAOyb,UAAU9d,IAAUA,GAAS,GAAKA,EAAQY,EAE5D,IAAK,SACD,OAAO,EAEX,IAAK,SACD,OAAO+c,EAAoBI,KAAK/d,GAG5C,qFCfAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMyZ,EAAStY,KAMftB,EAAAme,YAJA,SAAqBhe,GACjB,OAAiB,OAAVA,GAAmC,iBAAVA,GAA+C,uBAAzByZ,EAAOA,OAAOzZ,EACxE,sDCNAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMG,EAAYgB,IACZyc,EAAUxc,KACV4c,EAAc3c,KACdZ,EAASa,IA8BfzB,EAAAqX,IA5BA,SAAa1V,EAAQC,GACjB,IAAIwc,EAUJ,GARIA,EADArc,MAAMC,QAAQJ,GACCA,EAEM,iBAATA,GAAqBtB,EAAUA,UAAUsB,IAA2B,MAAlBD,IAASC,GACxDhB,EAAOA,OAAOgB,GAGd,CAACA,GAEQ,IAAxBwc,EAAard,OACb,OAAO,EAEX,IAAIkB,EAAUN,EACd,IAAK,IAAI0B,EAAI,EAAGA,EAAI+a,EAAard,OAAQsC,IAAK,CAC1C,MAAMhD,EAAM+d,EAAa/a,GACzB,GAAe,MAAXpB,IAAoBnC,OAAOqc,OAAOla,EAAS5B,GAAM,CAEjD,MADuB0B,MAAMC,QAAQC,IAAYkc,EAAYA,YAAYlc,KAAa8b,EAAQA,QAAQ1d,IAAQA,EAAM4B,EAAQlB,QAExH,OAAO,CAEvB,CACQkB,EAAUA,EAAQ5B,EAC1B,CACI,OAAO,CACX,sDCjCAP,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAM+X,EAAU5W,KACVd,EAAQe,IACRmc,EAAYlc,KACZE,EAAMD,IACN4V,EAAMuE,KA4BZ5b,EAAAqe,gBA1BA,SAAyBzZ,EAAUyT,GAC/B,cAAezT,GACX,IAAK,SACG9E,OAAOW,GAAGmE,GAAUlE,WAAW,KAC/BkE,EAAW,MAEf,MAEJ,IAAK,SACDA,EAAWpE,EAAMA,MAAMoE,GAK/B,OADAyT,EAASqF,EAAUA,UAAUrF,GACtB,SAAUD,GACb,MAAMtX,EAASY,EAAIA,IAAI0W,EAAQxT,GAC/B,YAAe9C,IAAXhB,EACOuW,EAAIA,IAAIe,EAAQxT,QAEZ9C,IAAXuW,OACkBvW,IAAXhB,EAEJoX,EAAQA,QAAQpX,EAAQuX,EACvC,CACA,sDChCAvY,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMqX,EAAWlW,KACXsD,EAAWrD,KACX4X,EAAU3X,KACV6c,EAAkB5c,KAwBxBzB,EAAAse,SAtBA,SAAkBne,GACd,GAAa,MAATA,EACA,OAAOqX,EAASA,SAEpB,cAAerX,GACX,IAAK,WACD,OAAOA,EAEX,IAAK,SACD,OAAI4B,MAAMC,QAAQ7B,IAA2B,IAAjBA,EAAMY,OACvBsd,EAAgBA,gBAAgBle,EAAM,GAAIA,EAAM,IAEpDgZ,EAAQA,QAAQhZ,GAE3B,IAAK,SACL,IAAK,SACL,IAAK,SACD,OAAOyE,EAASA,SAASzE,GAGrC,sDC3BAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMoe,EAAWjd,KACXkW,EAAWjW,KACXsW,EAAoBrW,KACpB8c,EAAW7c,KASjBzB,EAAAiX,OAPA,SAAgBnL,EAAO0S,EAAahH,EAASA,UACzC,OAAKK,EAAkBA,kBAAkB/L,GAGlCyS,EAAStH,OAAOlV,MAAMgK,KAAKD,GAAQwS,EAASA,SAASE,IAFjD,EAGf,4CCdAvH,GAAiB3V,KAA0C2V,uBCUpD,SAASwH,GAAenJ,EAASoJ,EAAQC,GAC9C,OAAe,IAAXD,EACKzH,GAAO3B,EAASqJ,GAEH,mBAAXD,EACFzH,GAAO3B,EAASoJ,GAElBpJ,CACT,gEChB6B,eAAzBsJ,QAAQC,IAAIC,SACdC,GAAA/e,wCCQF,IAAIkH,EAAQ5F,EACV0d,EAAOzd,IAIL0d,EAAW,mBAAsBnf,OAAOW,GAAKX,OAAOW,GAHxD,SAAYqG,EAAGC,GACb,OAAOD,IAAOC,IAAM,IAAMD,GAAK,EAAIA,GAAM,EAAIC,IAAQD,GAAMA,GAAKC,GAAMA,CACxE,EAEEmY,EAAuBF,EAAKE,qBAC5BC,EAASjY,EAAMiY,OACfC,EAAYlY,EAAMkY,UAClBC,EAAUnY,EAAMmY,QAChBC,EAAgBpY,EAAMoY,qBACxBC,GAAAC,iCAA2C,SACzCC,EACAC,EACAC,EACAC,EACAnG,GAEA,IAAIoG,EAAUV,EAAO,MACrB,GAAI,OAASU,EAAQ5d,QAAS,CAC5B,IAAI6d,EAAO,CAAEC,UAAU,EAAI5f,MAAO,MAClC0f,EAAQ5d,QAAU6d,CACtB,MAASA,EAAOD,EAAQ5d,QACtB4d,EAAUR,EACR,WACE,SAASW,EAAiBC,GACxB,IAAKC,EAAS,CAIZ,GAHAA,GAAU,EACVC,EAAmBF,EACnBA,EAAeL,EAASK,QACpB,IAAWxG,GAAWqG,EAAKC,SAAU,CACvC,IAAIK,EAAmBN,EAAK3f,MAC5B,GAAIsZ,EAAQ2G,EAAkBH,GAC5B,OAAQI,EAAoBD,CAC1C,CACU,OAAQC,EAAoBJ,CACtC,CAEQ,GADAG,EAAmBC,EACfpB,EAASkB,EAAkBF,GAAe,OAAOG,EACrD,IAAIE,EAAgBV,EAASK,GAC7B,YAAI,IAAWxG,GAAWA,EAAQ2G,EAAkBE,IAC3CH,EAAoBF,EAAeG,IAC5CD,EAAmBF,EACXI,EAAoBC,EACpC,CACM,IACEH,EACAE,EAFEH,GAAU,EAGZK,OACE,IAAWZ,EAAoB,KAAOA,EAC1C,MAAO,CACL,WACE,OAAOK,EAAiBN,IAClC,EACQ,OAASa,OACL,EACA,WACE,OAAOP,EAAiBO,IACtC,EAEA,EACI,CAACb,EAAaC,EAAmBC,EAAUnG,IAE7C,IAAItZ,EAAQ+e,EAAqBO,EAAWI,EAAQ,GAAIA,EAAQ,IAShE,OARAT,EACE,WACEU,EAAKC,UAAW,EAChBD,EAAK3f,MAAQA,CACnB,EACI,CAACA,IAEHmf,EAAcnf,GACPA,CACT,KDjFmBmB,GAEjByd,GAAA/e,mBEMF,eAAiB4e,QAAQC,IAAIC,UAC3B,WAIE,oBAAuB0B,gCACrB,mBACSA,+BAA+BC,6BACxCD,+BAA+BC,4BAA4BrX,SAC7D,IAAIlC,EAAQ5F,EACV0d,EAAOzd,IACP0d,EAAW,mBAAsBnf,OAAOW,GAAKX,OAAOW,GATtD,SAAYqG,EAAGC,GACb,OAAOD,IAAOC,IAAM,IAAMD,GAAK,EAAIA,GAAM,EAAIC,IAAQD,GAAMA,GAAKC,GAAMA,CAC5E,EAQMmY,EAAuBF,EAAKE,qBAC5BC,EAASjY,EAAMiY,OACfC,EAAYlY,EAAMkY,UAClBC,EAAUnY,EAAMmY,QAChBC,EAAgBpY,EAAMoY,cACxBoB,oCAA2C,SACzCjB,EACAC,EACAC,EACAC,EACAnG,GAEA,IAAIoG,EAAUV,EAAO,MACrB,GAAI,OAASU,EAAQ5d,QAAS,CAC5B,IAAI6d,EAAO,CAAEC,UAAU,EAAI5f,MAAO,MAClC0f,EAAQ5d,QAAU6d,CAC1B,MAAaA,EAAOD,EAAQ5d,QACtB4d,EAAUR,EACR,WACE,SAASW,EAAiBC,GACxB,IAAKC,EAAS,CAIZ,GAHAA,GAAU,EACVC,EAAmBF,EACnBA,EAAeL,EAASK,QACpB,IAAWxG,GAAWqG,EAAKC,SAAU,CACvC,IAAIK,EAAmBN,EAAK3f,MAC5B,GAAIsZ,EAAQ2G,EAAkBH,GAC5B,OAAQI,EAAoBD,CAC9C,CACc,OAAQC,EAAoBJ,CAC1C,CAEY,GADAG,EAAmBC,EACfpB,EAASkB,EAAkBF,GAC7B,OAAOG,EACT,IAAIE,EAAgBV,EAASK,GAC7B,YAAI,IAAWxG,GAAWA,EAAQ2G,EAAkBE,IAC3CH,EAAoBF,EAAeG,IAC5CD,EAAmBF,EACXI,EAAoBC,EACxC,CACU,IACEH,EACAE,EAFEH,GAAU,EAGZK,OACE,IAAWZ,EAAoB,KAAOA,EAC1C,MAAO,CACL,WACE,OAAOK,EAAiBN,IACtC,EACY,OAASa,OACL,EACA,WACE,OAAOP,EAAiBO,IAC1C,EAEA,EACQ,CAACb,EAAaC,EAAmBC,EAAUnG,IAE7C,IAAItZ,EAAQ+e,EAAqBO,EAAWI,EAAQ,GAAIA,EAAQ,IAShE,OARAT,EACE,WACEU,EAAKC,UAAW,EAChBD,EAAK3f,MAAQA,CACvB,EACQ,CAACA,IAEHmf,EAAcnf,GACPA,CACb,EACI,oBAAuBqgB,gCACrB,mBACSA,+BAA+BG,4BACxCH,+BAA+BG,2BAA2BvX,QAChE,CApFE,qBCISwX,GAAoCvZ,EAAc,MCbzDwZ,GAAe5R,GAAKA,EACb6R,GAAiB,KAC1B,IAAI7U,EAAU8U,EAAWH,IACzB,OAAI3U,EACKA,EAAQ+U,MAAMC,SAEhBJ,IAELtP,GAAO,OACP2P,GAAmB,IAAM3P,GACzB4P,GAAc,CAAClS,EAAG4B,IAAM5B,IAAM4B,EAkB3B,SAASuQ,GAAexB,GAC7B,IAAI3T,EAAU8U,EAAWH,IACzB,OAAOpB,GAAAA,iCAAiCvT,EAAUA,EAAQoV,aAAaC,aAAeJ,GAAkBjV,EAAUA,EAAQ+U,MAAMO,SAAWhQ,GAAMtF,EAAUA,EAAQ+U,MAAMO,SAAWhQ,GAAMtF,EAAU2T,EAAWrO,GAAM4P,GACvN,CCfO,IAAMK,GAA2B,CACtCC,EACAC,EACAC,KAEA,GACmC,IAAjCD,EAAsB3gB,QACtB2gB,EAAsB,KAAOC,EAC7B,CACA,IAAIC,GAAsB,EAC1B,IACE,MAAMC,EAAc,CAAA,EAChBJ,EAAWI,KAAiBA,IAAaD,GAAsB,EACrE,CAAA,MAEA,CACA,GAAIA,EAAqB,CACvB,IAAIrJ,EACJ,IACE,MAAM,IAAInP,KACZ,CAAA,MAAS9D,KAEHiT,SAAMjT,EACZ,CAQF,CACF,8jHC/CF,SAASwc,EAAY7S,GACjB,MAAiB,iBAANA,EACA,EAED,OAANA,EACO,OAEDnN,IAANmN,EACO,EAEPA,GAAMA,EACC,EAEJ,CACX,CAhBAnP,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAkC5DH,EAAA+hB,cAjBsB,CAAC9S,EAAG4B,EAAGK,KACzB,GAAIjC,IAAM4B,EAAG,CACT,MAAMmR,EAAYF,EAAY7S,GACxBgT,EAAYH,EAAYjR,GAC9B,GAAImR,IAAcC,GAA2B,IAAdD,EAAiB,CAC5C,GAAI/S,EAAI4B,EACJ,MAAiB,SAAVK,EAAmB,GAAI,EAElC,GAAIjC,EAAI4B,EACJ,MAAiB,SAAVK,GAAmB,EAAK,CAE/C,CACQ,MAAiB,SAAVA,EAAmB+Q,EAAYD,EAAYA,EAAYC,CACtE,CACI,OAAO,yEC/BXniB,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAM5DH,EAAAkiB,SAJA,SAAkB/hB,GACd,MAAwB,iBAAVA,GAAsBA,aAAiBF,MACzD,uDCJAH,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAM+hB,EAAW5gB,KAEX6gB,EAAkB,mDAClBC,EAAmB,QAYzBpiB,EAAAqiB,MAXA,SAAeliB,EAAOwB,GAClB,OAAII,MAAMC,QAAQ7B,OAGG,iBAAVA,GAAuC,kBAAVA,GAAgC,MAATA,IAAiB+hB,EAASA,SAAS/hB,MAGxE,iBAAVA,IAAuBiiB,EAAiBlE,KAAK/d,KAAWgiB,EAAgBjE,KAAK/d,KAC9E,MAAVwB,GAAkB7B,OAAOqc,OAAOxa,EAAQxB,IACjD,sDCfAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAM4hB,EAAgBzgB,KAChB+gB,EAAQ9gB,KACRX,EAASY,IA2EfxB,EAAAsiB,QAzEA,SAAiBC,EAAYC,EAAUC,EAAQC,GAC3C,GAAkB,MAAdH,EACA,MAAO,GAEXE,EAASC,OAAQ5gB,EAAY2gB,EACxB1gB,MAAMC,QAAQugB,KACfA,EAAaziB,OAAOyX,OAAOgL,IAE1BxgB,MAAMC,QAAQwgB,KACfA,EAAuB,MAAZA,EAAmB,CAAC,MAAQ,CAACA,IAEpB,IAApBA,EAASzhB,SACTyhB,EAAW,CAAC,OAEXzgB,MAAMC,QAAQygB,KACfA,EAAmB,MAAVA,EAAiB,GAAK,CAACA,IAEpCA,EAASA,EAAOtM,IAAIjF,GAASvQ,OAAOuQ,IACpC,MAAMyR,EAAuB,CAAChhB,EAAQC,KAClC,IAAIwW,EAASzW,EACb,IAAK,IAAI0B,EAAI,EAAGA,EAAIzB,EAAKb,QAAoB,MAAVqX,IAAkB/U,EACjD+U,EAASA,EAAOxW,EAAKyB,IAEzB,OAAO+U,GAuBLwK,EAAmBJ,EAASrM,IAAK0M,IAC/B9gB,MAAMC,QAAQ6gB,IAAmC,IAArBA,EAAU9hB,SACtC8hB,EAAYA,EAAU,IAET,MAAbA,GAA0C,mBAAdA,GAA4B9gB,MAAMC,QAAQ6gB,IAAcR,EAAMA,MAAMQ,GACzFA,EAEJ,CAAExiB,IAAKwiB,EAAWjhB,KAAMhB,EAAOA,OAAOiiB,MAE3CC,EAAqBP,EAAWpM,IAAII,KACtCwM,SAAUxM,EACViM,SAAUI,EAAiBzM,IAAK0M,GAhCR,EAACA,EAAWlhB,IACtB,MAAVA,GAA+B,MAAbkhB,EACXlhB,EAEc,iBAAdkhB,GAA0B,QAASA,EACtC/iB,OAAOqc,OAAOxa,EAAQkhB,EAAUxiB,KACzBsB,EAAOkhB,EAAUxiB,KAErBsiB,EAAqBhhB,EAAQkhB,EAAUjhB,MAEzB,mBAAdihB,EACAA,EAAUlhB,GAEjBI,MAAMC,QAAQ6gB,GACPF,EAAqBhhB,EAAQkhB,GAElB,iBAAXlhB,EACAA,EAAOkhB,GAEXlhB,EAauCqhB,CAAoBH,EAAWtM,OAEjF,OAAOuM,EACF9f,QACAigB,KAAK,CAAChU,EAAG4B,KACV,IAAK,IAAIxN,EAAI,EAAGA,EAAIuf,EAAiB7hB,OAAQsC,IAAK,CAC9C,MAAM6f,EAAiBnB,EAAcA,cAAc9S,EAAEuT,SAASnf,GAAIwN,EAAE2R,SAASnf,GAAIof,EAAOpf,IACxF,GAAuB,IAAnB6f,EACA,OAAOA,CAEvB,CACQ,OAAO,IAEN/M,IAAII,GAAQA,EAAKwM,SAC1B,4DC7EAjjB,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAoB5DH,EAAAmjB,QAlBA,SAAiBjM,EAAKkM,EAAQ,GAC1B,MAAMtiB,EAAS,GACTuiB,EAAe7b,KAAK+D,MAAM6X,GAC1BE,EAAY,CAACpM,EAAKqM,KACpB,IAAK,IAAIlgB,EAAI,EAAGA,EAAI6T,EAAInW,OAAQsC,IAAK,CACjC,MAAMkT,EAAOW,EAAI7T,GACbtB,MAAMC,QAAQuU,IAASgN,EAAeF,EACtCC,EAAU/M,EAAMgN,EAAe,GAG/BziB,EAAOM,KAAKmV,EAE5B,GAGI,OADA+M,EAAUpM,EAAK,GACRpW,CACX,6EClBAhB,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAM4d,EAAUzc,KACVqW,EAAcpW,KACduW,EAAWtW,KACXwW,EAAKvW,KAaXzB,EAAAwjB,eAXA,SAAwBrjB,EAAOa,EAAOW,GAClC,QAAKmW,EAASA,SAASnW,QAGD,iBAAVX,GAAsB2W,EAAYA,YAAYhW,IAAWoc,EAAQA,QAAQ/c,IAAUA,EAAQW,EAAOZ,QACxF,iBAAVC,GAAsBA,KAASW,IAChCqW,EAAGA,GAAGrW,EAAOX,GAAQb,GAGpC,sDChBAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMmiB,EAAUhhB,KACV6hB,EAAU5hB,KACViiB,EAAiBhiB,KAavBxB,EAAAyjB,OAXA,SAAgBlB,KAAeC,GAC3B,MAAMzhB,EAASyhB,EAASzhB,OAOxB,OANIA,EAAS,GAAKyiB,EAAeA,eAAejB,EAAYC,EAAS,GAAIA,EAAS,IAC9EA,EAAW,GAENzhB,EAAS,GAAKyiB,EAAeA,eAAehB,EAAS,GAAIA,EAAS,GAAIA,EAAS,MACpFA,EAAW,CAACA,EAAS,KAElBF,EAAQA,QAAQC,EAAYY,EAAQA,QAAQX,GAAW,CAAC,OACnE,4CCjBAiB,GAAiBniB,KAA0CmiB,uBCEhDC,GAAuBC,GAASA,EAAMC,OAAOC,SAG7CC,GAAsBC,GAAe,CADZJ,GAASA,EAAMC,OAAOtO,QACsBoO,IAAuB,CAACM,EAAUnf,KAChH,IAAIof,WACFA,GACEpf,EACAqf,EAAOF,EAASE,KAAK,GACzB,OAAOD,EAAaR,GAAOS,EAAMD,GAAcC,ICM1C,SAASC,KACd,IAAIC,EAAoBvhB,UAAU9B,OAAS,QAAsBe,IAAjBe,UAAU,GAAmBA,UAAU,GAAK,IACvFwhB,EAAiBC,GAAsBC,EAAS,CACnDte,OAAQ,EACRue,KAAM,EACNC,IAAK,EACLze,MAAO,IAEL0e,EAAoBC,EAAYC,IAClC,GAAY,MAARA,EAAc,CAChB,IAAI5Z,EAAO4Z,EAAKC,wBACZC,EAAM,CACR7e,OAAQ+E,EAAK/E,OACbue,KAAMxZ,EAAKwZ,KACXC,IAAKzZ,EAAKyZ,IACVze,MAAOgF,EAAKhF,QAEVwB,KAAKoC,IAAIkb,EAAI7e,OAASoe,EAAgBpe,QAhCtC,GAgCuDuB,KAAKoC,IAAIkb,EAAIN,KAAOH,EAAgBG,MAhC3F,GAgC0Ghd,KAAKoC,IAAIkb,EAAIL,IAAMJ,EAAgBI,KAhC7I,GAgC2Jjd,KAAKoC,IAAIkb,EAAI9e,MAAQqe,EAAgBre,OAhChM,IAiCFse,EAAmB,CACjBre,OAAQ6e,EAAI7e,OACZue,KAAMM,EAAIN,KACVC,IAAKK,EAAIL,IACTze,MAAO8e,EAAI9e,OAGjB,GACC,CAACqe,EAAgBre,MAAOqe,EAAgBpe,OAAQoe,EAAgBI,IAAKJ,EAAgBG,QAASJ,IACjG,MAAO,CAACC,EAAiBK,EAC3B,mQCvCO,IAAMK,GAAyB9kB,OAAO+kB,IAAI,iBAUpCC,GAA2BhlB,OAAO+kB,IAAI,mBAEtCE,GAA6BjlB,OAAO+kB,IAAI,4jgBCX9C,IAAI5R,GAAS5L,KAAKI,GAAK,IAGnBud,GAAmB,CAACzR,EAAIC,EAAIyR,EAAQlR,MAC7CpN,EAAG4M,EAAKlM,KAAKD,KAAK6L,GAASc,GAASkR,EACpCre,EAAG4M,EAAKnM,KAAKC,KAAK2L,GAASc,GAASkR,ICXtC,SAAS/S,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAQ5K,SAAS+f,GAAkB5H,EAAK6H,EAASzjB,GAC9C,OAAIyB,EAAUma,IAAQna,EAAUgiB,GACvBzjB,EAELY,EAAW6iB,GACN5jB,EAAI+b,EAAK6H,EAASzjB,GAEJ,mBAAZyjB,EACFA,EAAQ7H,GAEV5b,CACT,CA6DO,IAwBI0jB,GAAoB,CAAC3P,EAAQ4P,IAAwB,eAAX5P,GAAwC,UAAb4P,GAAmC,aAAX5P,GAAsC,UAAb4P,GAAmC,YAAX5P,GAAqC,cAAb4P,GAAuC,WAAX5P,GAAoC,eAAb4P,EA8GhOC,GAAM,KA+HNC,GAAmB,CACrB7V,KA1EsBoB,IACtB,IAAI5L,EAAI4L,EAAOlQ,OACf,KAAIsE,GAAK,GAGT,IAAK,IAAIgI,EAAI,EAAGuD,EAAIK,EAAO,GAAGlQ,OAAQsM,EAAIuD,IAAKvD,EAG7C,IAFA,IAAIsY,EAAW,EACXC,EAAW,EACNviB,EAAI,EAAGA,EAAIgC,IAAKhC,EAAG,CAC1B,IAAIlD,EAAQiC,EAAM6O,EAAO5N,GAAGgK,GAAG,IAAM4D,EAAO5N,GAAGgK,GAAG,GAAK4D,EAAO5N,GAAGgK,GAAG,GAGhElN,GAAS,GACX8Q,EAAO5N,GAAGgK,GAAG,GAAKsY,EAClB1U,EAAO5N,GAAGgK,GAAG,GAAKsY,EAAWxlB,EAC7BwlB,EAAW1U,EAAO5N,GAAGgK,GAAG,KAExB4D,EAAO5N,GAAGgK,GAAG,GAAKuY,EAClB3U,EAAO5N,GAAGgK,GAAG,GAAKuY,EAAWzlB,EAC7BylB,EAAW3U,EAAO5N,GAAGgK,GAAG,GAG5B,GAsDFwY,OCxVa,SAAS5U,EAAQC,GAC9B,IAAO7L,EAAI4L,EAAOlQ,QAAU,EAA5B,CACA,IAAK,IAAIsC,EAAGgC,EAAgC0B,EAA7BsG,EAAI,EAAGuD,EAAIK,EAAO,GAAGlQ,OAAWsM,EAAIuD,IAAKvD,EAAG,CACzD,IAAKtG,EAAI1D,EAAI,EAAGA,EAAIgC,IAAKhC,EAAG0D,GAAKkK,EAAO5N,GAAGgK,GAAG,IAAM,EACpD,GAAItG,EAAG,IAAK1D,EAAI,EAAGA,EAAIgC,IAAKhC,EAAG4N,EAAO5N,GAAGgK,GAAG,IAAMtG,CACpD,CACA+e,GAAK7U,EAAQC,EALmB,CAMlC,EDmVE4U,KAAM9U,GAEN+U,WE5Va,SAAS9U,EAAQC,GAC9B,IAAO7L,EAAI4L,EAAOlQ,QAAU,EAA5B,CACA,IAAK,IAAkCsE,EAA9BgI,EAAI,EAAG4C,EAAKgB,EAAOC,EAAM,IAAQN,EAAIX,EAAGlP,OAAQsM,EAAIuD,IAAKvD,EAAG,CACnE,IAAK,IAAIhK,EAAI,EAAG0D,EAAI,EAAG1D,EAAIgC,IAAKhC,EAAG0D,GAAKkK,EAAO5N,GAAGgK,GAAG,IAAM,EAC3D4C,EAAG5C,GAAG,IAAM4C,EAAG5C,GAAG,IAAMtG,EAAI,CAC9B,CACA+e,GAAK7U,EAAQC,EALmB,CAMlC,EFuVE8U,OG9Va,SAAS/U,EAAQC,GAC9B,IAAO7L,EAAI4L,EAAOlQ,QAAU,IAAS6P,GAAKX,EAAKgB,EAAOC,EAAM,KAAKnQ,QAAU,EAA3E,CACA,IAAK,IAAkBkP,EAAIW,EAAGvL,EAArB0B,EAAI,EAAGsG,EAAI,EAAaA,EAAIuD,IAAKvD,EAAG,CAC3C,IAAK,IAAIhK,EAAI,EAAG6M,EAAK,EAAG+V,EAAK,EAAG5iB,EAAIgC,IAAKhC,EAAG,CAK1C,IAJA,IAAI6iB,EAAKjV,EAAOC,EAAM7N,IAClB8iB,EAAOD,EAAG7Y,GAAG,IAAM,EAEnB+Y,GAAMD,GADCD,EAAG7Y,EAAI,GAAG,IAAM,IACF,EAChB7B,EAAI,EAAGA,EAAInI,IAAKmI,EAAG,CAC1B,IAAI6a,EAAKpV,EAAOC,EAAM1F,IAGtB4a,IAFWC,EAAGhZ,GAAG,IAAM,IACZgZ,EAAGhZ,EAAI,GAAG,IAAM,EAE7B,CACA6C,GAAMiW,EAAMF,GAAMG,EAAKD,CACzB,CACAlW,EAAG5C,EAAI,GAAG,IAAM4C,EAAG5C,EAAI,GAAG,GAAKtG,EAC3BmJ,IAAInJ,GAAKkf,EAAK/V,EACpB,CACAD,EAAG5C,EAAI,GAAG,IAAM4C,EAAG5C,EAAI,GAAG,GAAKtG,EAC/B+e,GAAK7U,EAAQC,EAnBkE,CAoBjF,EH0UEyU,SAjD0B1U,IAC1B,IAAI5L,EAAI4L,EAAOlQ,OACf,KAAIsE,GAAK,GAGT,IAAK,IAAIgI,EAAI,EAAGuD,EAAIK,EAAO,GAAGlQ,OAAQsM,EAAIuD,IAAKvD,EAE7C,IADA,IAAIsY,EAAW,EACNtiB,EAAI,EAAGA,EAAIgC,IAAKhC,EAAG,CAC1B,IAAIlD,EAAQiC,EAAM6O,EAAO5N,GAAGgK,GAAG,IAAM4D,EAAO5N,GAAGgK,GAAG,GAAK4D,EAAO5N,GAAGgK,GAAG,GAGhElN,GAAS,GACX8Q,EAAO5N,GAAGgK,GAAG,GAAKsY,EAClB1U,EAAO5N,GAAGgK,GAAG,GAAKsY,EAAWxlB,EAC7BwlB,EAAW1U,EAAO5N,GAAGgK,GAAG,KAExB4D,EAAO5N,GAAGgK,GAAG,GAAK,EAClB4D,EAAO5N,GAAGgK,GAAG,GAAK,EAGtB,IA+BOiZ,GAAiB,CAAC3Z,EAAM4Z,EAAUC,KAC3C,IAAIC,EAAiBf,GAAiBc,GAClCjO,EnDtVS,WACb,IAAI9T,EAAO8H,GAAS,IAChB2E,EAAQwV,GACRC,EAASC,GACTzmB,EAAQkR,GAEZ,SAASkH,EAAM5L,GACb,IACItJ,EACAwjB,EAFAC,EAAK/kB,MAAMgK,KAAKtH,EAAKkB,MAAMuC,KAAMrF,WAAYyO,IAC1CjM,EAAIyhB,EAAG/lB,OAAQsM,GAAI,EAG1B,IAAK,MAAM/B,KAAKqB,EACd,IAAKtJ,EAAI,IAAKgK,EAAGhK,EAAIgC,IAAKhC,GACvByjB,EAAGzjB,GAAGgK,GAAK,CAAC,GAAIlN,EAAMmL,EAAGwb,EAAGzjB,GAAGhD,IAAKgN,EAAGV,KAAQA,KAAOrB,EAI3D,IAAKjI,EAAI,EAAGwjB,EAAK/a,GAAMoF,EAAM4V,IAAMzjB,EAAIgC,IAAKhC,EAC1CyjB,EAAGD,EAAGxjB,IAAIrC,MAAQqC,EAIpB,OADAsjB,EAAOG,EAAID,GACJC,CACT,CAkBA,OAhBAvO,EAAM9T,KAAO,SAAS0D,GACpB,OAAOtF,UAAU9B,QAAU0D,EAAoB,mBAAN0D,EAAmBA,EAAIoE,GAASxK,MAAMgK,KAAK5D,IAAKoQ,GAAS9T,CACpG,EAEA8T,EAAMpY,MAAQ,SAASgI,GACrB,OAAOtF,UAAU9B,QAAUZ,EAAqB,mBAANgI,EAAmBA,EAAIoE,IAAUpE,GAAIoQ,GAASpY,CAC1F,EAEAoY,EAAMrH,MAAQ,SAAS/I,GACrB,OAAOtF,UAAU9B,QAAUmQ,EAAa,MAAL/I,EAAYue,GAAyB,mBAANve,EAAmBA,EAAIoE,GAASxK,MAAMgK,KAAK5D,IAAKoQ,GAASrH,CAC7H,EAEAqH,EAAMoO,OAAS,SAASxe,GACtB,OAAOtF,UAAU9B,QAAU4lB,EAAc,MAALxe,EAAYye,GAAaze,EAAGoQ,GAASoO,CAC3E,EAEOpO,CACT,CmD4ScwO,GAAatiB,KAAK8hB,GAAUpmB,MAAM,CAACmL,EAAGjL,KAASglB,GAAkB/Z,EAAGjL,EAAK,IAAI6Q,MAAME,IAE9FuV,OAAOF,GACR,OAAOlO,EAAM5L,IAgFJqa,GAAyB,CAACC,EAAaC,EAAYC,KAHvCC,IAAAA,EAIrB,GAAmB,MAAfH,EAGJ,OAPqBG,EAOGtnB,OAAO2E,KAAKwiB,GAAaI,OAAO,CAACvmB,EAAQwmB,KAC/D,IAAIC,EAAQN,EAAYK,IACpBE,YACFA,GACED,EACAH,EAASI,EAAYH,OAAO,CAACI,EAAKrR,KACpC,IAjBkBzJ,EAClBuX,EAgBI/U,GAjBcxC,EAiBQyJ,EAAMpT,MAAMkkB,EAAYC,EAAW,GAhB7DjD,EAAOvX,EAAKuX,KAAK,GAAG5R,OAAO/P,GACxB,CAACiF,KAAK2I,OAAO+T,GAAO1c,KAAKkgB,OAAOxD,KAgBnC,MAAO,CAAC1c,KAAK2I,IAAIsX,EAAI,GAAItY,EAAE,IAAK3H,KAAKkgB,IAAID,EAAI,GAAItY,EAAE,MAClD,CAACwY,KAAU,MACd,MAAO,CAACngB,KAAK2I,IAAIiX,EAAO,GAAItmB,EAAO,IAAK0G,KAAKkgB,IAAIN,EAAO,GAAItmB,EAAO,MAClE,CAAC6mB,KAAU,MAhBP,CAACP,EAAO,KAAOO,IAAW,EAAIP,EAAO,GAAIA,EAAO,MAAO,IAAY,EAAIA,EAAO,KAkB5EQ,GAAgB,kDAChBC,GAAgB,mDA4BpB,SAASC,GAAgBC,GAC9B,IAAIC,qBACFA,EAAoB1C,QACpBA,EAAOhQ,QACPA,EAAOnV,MACPA,EAAK2T,KACLA,GACEiU,EACJ,OAAOtV,GAAcA,GAAc,CAAA,EAAIuV,GAAuB,CAAA,EAAI,CAChE1C,UACAhQ,UACAnV,QACA2T,QAEJ,CInfO,IAAImU,GAAmBtE,GAASA,EAAM/N,OAAO5P,MACzCkiB,GAAoBvE,GAASA,EAAM/N,OAAO3P,OAE1CkiB,GAAexE,GAASA,EAAM/N,OAAOmB,OCFrCqR,GAAiBrE,GAAeJ,GAASA,EAAM0E,cAAcC,MAAOC,GACtEzoB,OAAOyX,OAAOgR,IAEZC,GAAiBzE,GAAeJ,GAASA,EAAM0E,cAAcI,MAAOC,GACtE5oB,OAAOyX,OAAOmR,ICLvB,SAASrW,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAU5K,IAQIqjB,GAA4B5E,GAAe,CAACkE,GAAkBC,GAAmBC,GAR7DxE,GAASA,EAAMiF,MAAM3iB,OAQyEmiB,GAAgBI,GAAgB9E,GVjB/HC,GAASA,EAAMC,OAAOrV,MUiBkJ,CAACsa,EAAYC,EAAa/R,EAAQgS,EAAaC,EAAOC,EAAOC,EAAgBC,KACjR,IAAIC,EAAUH,EAAM5B,OAAO,CAACvmB,EAAQsV,KAClC,IAAIiT,YACFA,GACEjT,EACJ,IAAKA,EAAMkT,SAAWlT,EAAMmT,KAAM,CAChC,IAAIvjB,EAA+B,iBAAhBoQ,EAAMpQ,MAAqBoQ,EAAMpQ,MCKxB,GDJ5B,OAAOyM,GAAcA,GAAc,CAAA,EAAI3R,GAAS,CAAA,EAAI,CAClDuoB,CAACA,GAAcvoB,EAAOuoB,GAAerjB,GAEzC,CACA,OAAOlF,GACN,CACD0jB,KAAMzN,EAAOyN,MAAQ,EACrBgF,MAAOzS,EAAOyS,OAAS,IAErBC,EAAUT,EAAM3B,OAAO,CAACvmB,EAAQsV,KAClC,IAAIiT,YACFA,GACEjT,EACJ,OAAKA,EAAMkT,QAAWlT,EAAMmT,KAKrBzoB,EAJE2R,GAAcA,GAAc,CAAA,EAAI3R,GAAS,CAAA,EAAI,CAClDuoB,CAACA,GAAc3nB,EAAIZ,EAAQ,GAAG0C,OAAO6lB,IAAgBjT,EAAMnQ,UAI9D,CACDwe,IAAK1N,EAAO0N,KAAO,EACnBiF,OAAQ3S,EAAO2S,QAAU,IAEvB/C,EAASlU,GAAcA,GAAc,CAAA,EAAIgX,GAAUL,GACnDO,EAAchD,EAAO+C,OACzB/C,EAAO+C,QAAUX,EACjBpC,EN6BgC,EAACA,EAAQuC,EAAgBC,KACzD,GAAID,GAAkBC,EAAY,CAChC,IACEnjB,MAAO4jB,EACP3jB,OAAQ4jB,GACNV,GACAvS,MACFA,EAAKV,cACLA,EAAaN,OACbA,GACEsT,EACJ,IAAgB,aAAXtT,GAAoC,eAAXA,GAA6C,WAAlBM,IAAyC,WAAVU,GAAsBrU,EAASokB,EAAO/P,IAC5H,OAAOnE,GAAcA,GAAc,CAAA,EAAIkU,GAAS,CAAA,EAAI,CAClD/P,CAACA,GAAQ+P,EAAO/P,IAAUgT,GAAY,KAG1C,IAAgB,eAAXhU,GAAsC,aAAXA,GAAmC,WAAVgB,IAAyC,WAAlBV,GAA8B3T,EAASokB,EAAOzQ,IAC5H,OAAOzD,GAAcA,GAAc,CAAA,EAAIkU,GAAS,CAAA,EAAI,CAClDzQ,CAACA,GAAgByQ,EAAOzQ,IAAkB2T,GAAa,IAG7D,CACA,OAAOlD,GMnDEmD,CAAqBnD,EAAQuC,EAAgBC,GACtD,IAAIY,EAAclB,EAAalC,EAAOnC,KAAOmC,EAAO6C,MAChDQ,EAAelB,EAAcnC,EAAOlC,IAAMkC,EAAO+C,OACrD,OAAOjX,GAAcA,GAAc,CACjCkX,eACChD,GAAS,GAAI,CAEd3gB,MAAOwB,KAAKkgB,IAAIqC,EAAa,GAC7B9jB,OAAQuB,KAAKkgB,IAAIsC,EAAc,OAGxBC,GAAqBlG,GAAe4E,GAA2BhC,KACxE7f,EAAG6f,EAAOnC,KACVzd,EAAG4f,EAAOlC,IACVze,MAAO2gB,EAAO3gB,MACdC,OAAQ0gB,EAAO1gB,UAEc8d,GAAekE,GAAkBC,GAAmB,CAACliB,EAAOC,MACzFa,EAAG,EACHC,EAAG,EACHf,QACAC,YExEF,IAAIikB,GAA+B7iB,EAAc,MCEtC8iB,GAAsBxG,GAASA,EAAMiF,MACrCwB,GAAwBrG,GAAe,CAACoG,GAAqBxB,GAA2BR,IAAe,CAACkC,EAAe1D,EAAQ5P,KAAAA,CACxI9Q,OAAQokB,EAAcpkB,OACtBa,EAAGvE,EAAS8nB,EAAcvjB,GAAKujB,EAAcvjB,EAAI6f,EAAOnC,KACxDzd,EAAGxE,EAAS8nB,EAActjB,GAAKsjB,EAActjB,EAAI4f,EAAOlC,IAAMkC,EAAO1gB,OAAS0gB,EAAOgD,cAAgB5S,aAAuC,EAASA,EAAO2S,SAAW,GACvK1jB,MAAOzD,EAAS8nB,EAAcrkB,OAASqkB,EAAcrkB,MAAQ2gB,EAAO3gB,SCF3DskB,GAAa,KACtB,IAAIC,EACAC,EFN0D,MAA/BzJ,EAAWmJ,IEOtCO,EAAcrJ,GAAe6I,IAC7BS,EAAkBtJ,GAAegJ,IACjCO,EAA2E,QAA3DJ,EAAkBnJ,GAAe+I,WAAsD,IAApBI,OAA6B,EAASA,EAAgBzT,QAC7I,OAAK0T,GAAaE,GAAoBC,EAG/B,CACL3kB,MAAO0kB,EAAgB1kB,MAAQ2kB,EAAanG,KAAOmG,EAAanB,MAChEvjB,OAAQykB,EAAgBzkB,OAAS0kB,EAAalG,IAAMkG,EAAajB,OACjE5iB,EAAG6jB,EAAanG,KAChBzd,EAAG4jB,EAAalG,KANTgG,GASPG,GAA+C,CACjDnG,IAAK,EACLiF,OAAQ,EACRlF,KAAM,EACNgF,MAAO,EACPxjB,MAAO,EACPC,OAAQ,EACR0jB,YAAa,GA2DXkB,GAA+C,CACjDpG,IAAK,EACL+E,MAAO,EACPE,OAAQ,EACRlF,KAAM,GAMGsG,GAAoBnH,GAASA,EAAM/N,OAAOmV,WC3EjDC,GAAcC,GAAY,CAC5BnX,KAAM,SACNoX,aAfiB,CACjBrH,SAAU,CACRjO,OAAQ,aACRgB,MAAO,SACPV,cAAe,SACf+N,WAAY,SAEd1V,KAAM,CACJvI,MAAO,EACPC,OAAQ,GAEVqP,QAAS,IAKT6V,SAAU,CACRC,aAAAA,CAAczH,EAAO0H,GACnB1H,EAAMpV,KAAKvI,MAAQqlB,EAAO/V,QAAQtP,MAClC2d,EAAMpV,KAAKtI,OAASolB,EAAO/V,QAAQrP,MACrC,EACAqlB,iBAAAA,CAAkB3H,EAAO0H,GACvB1H,EAAME,SAASjN,MAAQyU,EAAO/V,QAAQsB,MACtC+M,EAAME,SAASjO,OAASyV,EAAO/V,QAAQM,OACvC+N,EAAME,SAAS3N,cAAgBmV,EAAO/V,QAAQY,cAC9CyN,EAAME,SAASI,WAAaoH,EAAO/V,QAAQ2O,UAC7C,EACAsH,gBAAAA,CAAiB5H,EAAO0H,GACtB1H,EAAMrO,QAAQlU,KAAeiqB,EAAO/V,QACtC,EACAkW,mBAAAA,CAAoB7H,EAAO0H,GACzB,IAAIrqB,EAAQiB,GAAQ0hB,GAAOrO,QAAQhT,QAAkB+oB,EAAO/V,SACxDtU,GAAQ,GACV2iB,EAAMrO,QAAQmW,OAAOzqB,EAAO,EAEhC,MAGOoqB,cACTA,GAAaE,kBACbA,GAAiBC,iBACjBA,GAAgBC,oBAChBA,IACER,GAAYU,QCtDZzmB,GAAY,CAAC,kBACjB,SAASC,KAAa,OAAOA,GAAWpF,OAAOqF,OAASrF,OAAOqF,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAIzC,UAAU9B,OAAQuE,IAAK,CAAE,IAAIC,EAAI1C,UAAUyC,GAAI,IAAK,IAAIE,KAAKD,GAAI,CAAC,GAAGE,eAAeC,KAAKH,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAGH,GAASS,MAAM,KAAM9C,UAAY,CACnR,SAASwP,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAiBnL,SAASqZ,GAAcvI,GACrB,OAAOA,EAAMjW,KACf,CACA,SAASwrB,GAAcxnB,GACrB,IAAIynB,eACAA,GACEznB,EACJ0nB,EArBJ,SAAkCvmB,EAAGC,GAAK,GAAI,MAAQD,EAAG,MAAO,CAAA,EAAI,IAAIkB,EAAGhB,EAAGnC,EAC9E,SAAuCmC,EAAGF,GAAK,GAAI,MAAQE,EAAG,MAAO,CAAA,EAAI,IAAID,EAAI,CAAA,EAAI,IAAK,IAAIF,KAAKG,EAAG,GAAI,CAAC,EAAEC,eAAeC,KAAKF,EAAGH,GAAI,CAAE,QAAWC,EAAEhD,QAAQ+C,GAAI,SAAUE,EAAEF,GAAKG,EAAEH,EAAI,CAAE,OAAOE,CAAG,CADpHkB,CAA8BnB,EAAGC,GAAI,GAAIzF,OAAO4G,sBAAuB,CAAE,IAAIrB,EAAIvF,OAAO4G,sBAAsBpB,GAAI,IAAKE,EAAI,EAAGA,EAAIH,EAAEtE,OAAQyE,IAAKgB,EAAInB,EAAEG,IAAI,IAAOD,EAAEjD,QAAQkE,IAAM,CAAC,EAAEG,qBAAqBjB,KAAKJ,EAAGkB,KAAOnD,EAAEmD,GAAKlB,EAAEkB,GAAK,CAAE,OAAOnD,CAAG,CAqBpTuD,CAAyBzC,EAAOc,IAC3C6mB,EAAerN,GAAemN,EAAgBznB,EAAM4nB,cAAepN,IACnEqN,EAAevZ,GAAcA,GAAc,CAAA,EAAIoZ,GAAa,GAAI,CAClEvW,QAASwW,IAEX,OAAiB5kB,EAAM3C,eAAeJ,EAAM8nB,SACtB/kB,EAAMuO,aAAatR,EAAM8nB,QAASD,GAE3B,mBAAlB7nB,EAAM8nB,QACK/kB,EAAMC,cAAchD,EAAM8nB,QAASD,GAErC9kB,EAAMC,cAAcoN,GAAsByX,EAChE,CAoCA,SAASE,GAAyB/nB,GAChC,IAAI8c,EAAWH,KAIf,OAHA1B,EAAU,KACR6B,EAASqK,GAAkBnnB,KAC1B,CAAC8c,EAAU9c,IACP,IACT,CACA,SAASgoB,GAAqBhoB,GAC5B,IAAI8c,EAAWH,KAUf,OATA1B,EAAU,KACR6B,EAASmK,GAAcjnB,IAChB,KACL8c,EAASmK,GAAc,CACrBplB,MAAO,EACPC,OAAQ,OAGX,CAACgb,EAAU9c,IACP,IACT,CACA,SAASioB,GAAcjoB,GACrB,IFDIkoB,EECAT,ECzFGxK,GAAe0C,ID0FlBwI,E3FhG6BvL,EAAW3Z,I2FiGxC2P,EFFyE,QAArEsV,EAAmBjL,GAAeuC,GAASA,EAAM/N,OAAOmB,eAA0C,IAArBsV,EAA8BA,EAAmBxB,IEIpI7kB,MAAOumB,EACPtmB,OAAQumB,EAAeC,aACvBA,EACAC,OAAQC,GACNxoB,GAGCkgB,EAAiBK,GAAqBP,GAAiB,CAACyH,IACzD/C,EF7CGzH,GAAe6G,IE8ClBa,EFvBG1H,GAAe8G,IEwBlB0E,EAAW/D,GAAc9R,EAAOyN,MAAQ,IAAMzN,EAAOyS,OAAS,GAE9DqD,EAAgBC,GAAOC,iBAAiB5oB,EAAMyR,OAAQ4W,EAAiBD,EAAgBK,GAEvFI,EAAaL,EAAkBF,EAAeha,GAAcA,GAAc,CAC5Ewa,SAAU,WACVjnB,OAAQ6mB,aAAqD,EAASA,EAAc7mB,QAAUumB,GAAkB,OAChHtmB,QAAS4mB,aAAqD,EAASA,EAAc5mB,SAAWumB,GAAmB,QA7EvH,SAA4BpmB,EAAOjC,EAAO4S,EAAQ8R,EAAYC,EAAahE,GACzE,IAKIoI,EAAMC,GALNvX,OACFA,EAAMgB,MACNA,EAAKV,cACLA,GACE/R,EA4BJ,OA1BKiC,SAAyBtE,IAAfsE,EAAMoe,MAAqC,OAAfpe,EAAMoe,WAAmC1iB,IAAhBsE,EAAMojB,OAAuC,OAAhBpjB,EAAMojB,SAEnG0D,EADY,WAAVtW,GAAiC,aAAXhB,EACjB,CACL4O,OAAQqE,GAAc,GAAK/D,EAAI9e,OAAS,GAGzB,UAAV4Q,EAAoB,CACzB4S,MAAOzS,GAAUA,EAAOyS,OAAS,GAC/B,CACFhF,KAAMzN,GAAUA,EAAOyN,MAAQ,IAIhCpe,SAAwBtE,IAAdsE,EAAMqe,KAAmC,OAAdre,EAAMqe,UAAmC3iB,IAAjBsE,EAAMsjB,QAAyC,OAAjBtjB,EAAMsjB,UAElGyD,EADoB,WAAlBjX,EACK,CACLuO,MAAOqE,GAAe,GAAKhE,EAAI7e,QAAU,GAGlB,WAAlBiQ,EAA6B,CAClCwT,OAAQ3S,GAAUA,EAAO2S,QAAU,GACjC,CACFjF,IAAK1N,GAAUA,EAAO0N,KAAO,IAI5BhS,GAAcA,GAAc,CAAA,EAAIya,GAAOC,EAChD,CA4CKC,CAAmBX,EAActoB,EAAO4S,EAAQ8R,EAAYC,EAAazE,IAAmBoI,GAC3FY,EAAeV,QAAyDA,EAAkBL,EAC9F,GAAoB,MAAhBe,EACF,OAAO,KAET,IAAIC,EAA6BpmB,EAAMC,cAAc,MAAO,CAC1DhB,UAAW,0BACXC,MAAO4mB,EACPlnB,IAAK4e,GACSxd,EAAMC,cAAc+kB,GAA0B,CAC5DtW,OAAQzR,EAAMyR,OACdgB,MAAOzS,EAAMyS,MACbV,cAAe/R,EAAM+R,cACrB+N,WAAY9f,EAAM8f,aACH/c,EAAMC,cAAcglB,GAAsB,CACzDnmB,MAAOqe,EAAgBre,MACvBC,OAAQoe,EAAgBpe,SACTiB,EAAMC,cAAcwkB,GAAezmB,GAAS,CAAA,EAAIf,EAAO0oB,EAAe,CACrF9V,OAAQA,EACR8R,WAAYA,EACZC,YAAaA,EACb8C,eAAgBA,MAElB,OAAoB2B,EAAaD,EAAeD,EAClD,CACO,MAAMP,WAAetY,EAC1B,uBAAOuY,CAAiBnX,EAAQ3P,EAAQD,EAAO4mB,GAC7C,MAAe,aAAXhX,GAAyBrT,EAAS0D,GAC7B,CACLA,UAGW,eAAX2P,EACK,CACL5P,MAAOA,GAAS4mB,GAGb,IACT,CACAjW,MAAAA,GACE,OAAoBzP,EAAMC,cAAcilB,GAAelkB,KAAK/D,MAC9D,EEhKF,SAASe,KAAa,OAAOA,GAAWpF,OAAOqF,OAASrF,OAAOqF,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAIzC,UAAU9B,OAAQuE,IAAK,CAAE,IAAIC,EAAI1C,UAAUyC,GAAI,IAAK,IAAIE,KAAKD,GAAI,CAAC,GAAGE,eAAeC,KAAKH,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAGH,GAASS,MAAM,KAAM9C,UAAY,CACnR,SAASwP,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAWnL,SAASkoB,GAAiBrtB,GACxB,OAAO4B,MAAMC,QAAQ7B,IAAUsC,EAAWtC,EAAM,KAAOsC,EAAWtC,EAAM,IAAMA,EAAMstB,KAAK,OAASttB,CACpG,CFkJAuS,GAAgBoa,GAAQ,cAAe,UACvCpa,GAAgBoa,GAAQ,eAAgB,CACtClW,MAAO,SACPjB,SAAU,GACVsO,WAAY,QACZrO,OAAQ,aACRM,cAAe,WEvJV,IAAIwX,GAAwBvpB,IACjC,IAAIwpB,UACFA,EAAY,MAAKC,aACjBA,EAAe,CAAA,EAAE9X,UACjBA,EAAY,CAAA,EAAE+X,WACdA,EAAa,CAAA,EAAEvY,QACfA,EAAOO,UACPA,EAASoO,WACTA,EAAU6J,iBACVA,EAAgBC,eAChBA,EAAcC,MACdA,EAAKC,eACLA,EAAcC,mBACdA,GAAqB,GACnB/pB,EA2DA0S,EAAapE,GAAc,CAC7BsE,OAAQ,EACRD,QAAS,GACTqX,gBAAiB,OACjBC,OAAQ,iBACRC,WAAY,UACXT,GACCU,EAAkB7b,GAAc,CAClCsE,OAAQ,GACP8W,GACCU,GAAYjrB,EAAU0qB,GACtBQ,EAAaD,EAAWP,EAAQ,GAChCS,EAAYxnB,EAAK,2BAA4B6mB,GAC7CY,EAAUznB,EAAK,yBAA0B8mB,GACzCQ,GAAYN,GAAZM,MAA8BjZ,IAChCkZ,EAAaP,EAAeD,EAAO1Y,IAErC,IAAIqZ,EAA0BT,EAAqB,CACjDU,KAAM,SACN,YAAa,aACX,CAAA,EACJ,OAAoB1nB,EAAMC,cAAc,MAAOjC,GAAS,CACtDiB,UAAWsoB,EACXroB,MAAOyQ,GACN8X,GAAuCznB,EAAMC,cAAc,IAAK,CACjEhB,UAAWuoB,EACXtoB,MAAOkoB,GACOpnB,EAAM3C,eAAeiqB,GAAcA,EAAa,GAAGhrB,OAAOgrB,IArFtD,MAClB,GAAIlZ,GAAWA,EAAQvU,OAAQ,CAC7B,IAII8tB,GAAS5K,EAAaR,GAAOnO,EAAS2O,GAAc3O,GAASa,IAAI,CAACC,EAAO/S,KAC3E,GAAmB,SAAf+S,EAAM5C,KACR,OAAO,KAET,IAAI6C,EAAiBD,EAAMP,WAAaA,GAAa2X,IACjDrtB,MACFA,EAAK2T,KACLA,GACEsC,EACAE,EAAanW,EACb2uB,EAAYhb,EAChB,GAAIuC,EAAgB,CAClB,IAAI0Y,EAAY1Y,EAAelW,EAAO2T,EAAMsC,EAAO/S,EAAGiS,GACtD,GAAIvT,MAAMC,QAAQ+sB,IACfzY,EAAYwY,GAAaC,MACrB,IAAiB,MAAbA,EAGT,OAAO,KAFPzY,EAAayY,CAGf,CACF,CACA,IAAIC,EAAiBvc,GAAc,CACjCsD,QAAS,QACTkZ,WAAY,EACZC,cAAe,EACfna,MAAOqB,EAAMrB,OAAS,QACrBe,GACH,OAGE5O,EAAMC,cAAc,KAAM,CACxBhB,UAAW,wBACX9F,IAAK,gBAAgBmD,OAAOH,GAC5B+C,MAAO4oB,GACNvsB,EAAWqsB,GAA0B5nB,EAAMC,cAAc,OAAQ,CAClEhB,UAAW,8BACV2oB,GAAa,KAAMrsB,EAAWqsB,GAA0B5nB,EAAMC,cAAc,OAAQ,CACrFhB,UAAW,mCACVwnB,GAAa,KAAmBzmB,EAAMC,cAAc,OAAQ,CAC7DhB,UAAW,+BACVmQ,GAA0BpP,EAAMC,cAAc,OAAQ,CACvDhB,UAAW,8BACViQ,EAAM+Y,MAAQ,OAGrB,OAAoBjoB,EAAMC,cAAc,KAAM,CAC5ChB,UAAW,6BACXC,MAnDc,CACd0Q,QAAS,EACTC,OAAQ,IAkDP8X,EACL,CACA,OAAO,MA6B+EO,KCnHtFC,GAAmB,2BACnBC,GAAiB,CACnBC,WAAY,UAEP,SAASC,GAAuB3qB,GACrC,IAAI4qB,WACFA,EAAUC,WACVA,EAAUC,WACVA,GACE9qB,EACJ,OAAOoC,EAAKooB,GAAkB,CAC5B,CAAC,GAAG7rB,OAAO6rB,GAAkB,WAAY9sB,EAASmtB,IAAeD,GAAcltB,EAASktB,EAAW3oB,IAAM4oB,GAAcD,EAAW3oB,EAClI,CAAC,GAAGtD,OAAO6rB,GAAkB,UAAW9sB,EAASmtB,IAAeD,GAAcltB,EAASktB,EAAW3oB,IAAM4oB,EAAaD,EAAW3oB,EAChI,CAAC,GAAGtD,OAAO6rB,GAAkB,YAAa9sB,EAASotB,IAAeF,GAAcltB,EAASktB,EAAW1oB,IAAM4oB,GAAcF,EAAW1oB,EACnI,CAAC,GAAGvD,OAAO6rB,GAAkB,SAAU9sB,EAASotB,IAAeF,GAAcltB,EAASktB,EAAW1oB,IAAM4oB,EAAaF,EAAW1oB,GAEnI,CACO,SAAS6oB,GAAsBC,GACpC,IAAIC,mBACFA,EAAkBL,WAClBA,EAAUpvB,IACVA,EAAG0vB,cACHA,EAAa9C,SACbA,EAAQ+C,iBACRA,EAAgBC,iBAChBA,EAAgB/pB,QAChBA,EAAOgqB,iBACPA,GACEL,EACJ,GAAI5C,GAAY1qB,EAAS0qB,EAAS5sB,IAChC,OAAO4sB,EAAS5sB,GAElB,IAAIulB,EAAW6J,EAAWpvB,GAAO4vB,GAAoBF,EAAgB,EAAIA,EAAgB,GACrFpK,EAAW8J,EAAWpvB,GAAO0vB,EACjC,GAAID,EAAmBzvB,GACrB,OAAO2vB,EAAiB3vB,GAAOulB,EAAWD,EAE5C,IAAIwK,EAAajqB,EAAQ7F,GACzB,OAAkB,MAAd8vB,EACK,EAELH,EAAiB3vB,GACIulB,EACAuK,EAEd3oB,KAAKkgB,IAAI/B,EAAUwK,GAErB3oB,KAAKkgB,IAAI9B,EAAUuK,GAEJ,MAApBD,EACK,EAEavK,EAAWsK,EACXE,EAAaD,EAE1B1oB,KAAKkgB,IAAI9B,EAAUuK,GAErB3oB,KAAKkgB,IAAI/B,EAAUwK,EAC5B,CC5DA,SAAS9d,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAM5K,MAAM8qB,WAA2B5b,EAuBtC6b,iBAAAA,GACEC,SAASC,iBAAiB,UAAWroB,KAAKsoB,cAC5C,CACAC,oBAAAA,GACEH,SAASI,oBAAoB,UAAWxoB,KAAKsoB,cAC/C,CACAG,kBAAAA,GACE,IAAIC,EAAwBC,EACvB3oB,KAAKyb,MAAMmN,aAG0C,QAApDF,EAAyB1oB,KAAK/D,MAAMsrB,kBAAmD,IAA3BmB,OAAoC,EAASA,EAAuB9pB,KAAOoB,KAAKyb,MAAMoN,sBAAsBjqB,IAA2D,QAApD+pB,EAAyB3oB,KAAK/D,MAAMsrB,kBAAmD,IAA3BoB,OAAoC,EAASA,EAAuB9pB,KAAOmB,KAAKyb,MAAMoN,sBAAsBhqB,IAC3VmB,KAAKyb,MAAMmN,WAAY,GAE3B,CACAna,MAAAA,GACE,IAAIqa,OACFA,EAAMlB,mBACNA,EAAkBmB,kBAClBA,EAAiBC,gBACjBA,EAAenrB,SACfA,EAAQ0pB,WACRA,EAAU0B,WACVA,EAAUC,kBACVA,EAAiBzK,OACjBA,EAAMsG,SACNA,EAAQ+C,iBACRA,EAAgBqB,eAChBA,EAAcnrB,QACdA,EAAOumB,aACPA,EAAYpI,gBACZA,EAAeiN,SACfA,EAAQC,mBACRA,GACErpB,KAAK/D,OACLqtB,WACFA,EAAUC,cACVA,GDGC,SAA6B1J,GAClC,IAUI0J,EAAe/B,EAAYC,GAV3BG,mBACFA,EAAkBL,WAClBA,EAAUM,cACVA,EAAa9C,SACbA,EAAQ+C,iBACRA,EAAgB0B,WAChBA,EAAUL,eACVA,EAAcnrB,QACdA,GACE6hB,EAiCJ,OARE0J,EAvBEC,EAAWzrB,OAAS,GAAKyrB,EAAW1rB,MAAQ,GAAKypB,EAtBhD,SAA2BkC,GAChC,IAAIjC,WACFA,EAAUC,WACVA,EAAU0B,eACVA,GACEM,EACJ,MAAO,CACL9d,UAAWwd,EAAiB,eAAe7tB,OAAOksB,EAAY,QAAQlsB,OAAOmsB,EAAY,UAAY,aAAansB,OAAOksB,EAAY,QAAQlsB,OAAOmsB,EAAY,OAEpK,CAoCoBiC,CAAkB,CAChClC,WAvBFA,EAAaE,GAAsB,CACjCE,qBACAL,aACApvB,IAAK,IACL0vB,gBACA9C,WACA+C,mBACAC,iBAAkByB,EAAW1rB,MAC7BE,UACAgqB,iBAAkBhqB,EAAQF,QAe1B2pB,WAbFA,EAAaC,GAAsB,CACjCE,qBACAL,aACApvB,IAAK,IACL0vB,gBACA9C,WACA+C,mBACAC,iBAAkByB,EAAWzrB,OAC7BC,UACAgqB,iBAAkBhqB,EAAQD,SAK1BorB,mBAGc/B,GAEX,CACLmC,gBACAD,WAAYhC,GAAuB,CACjCE,aACAC,aACAF,eAGN,CCrDQoC,CAAoB,CACtB/B,qBACAL,aACAM,cAAepJ,EACfsG,WACA+C,mBACA0B,WAAY,CACVzrB,OAAQoe,EAAgBpe,OACxBD,MAAOqe,EAAgBre,OAEzBqrB,iBACAnrB,YAIE4rB,EAAiBP,EAAqB,GAAK9e,GAAcA,GAAc,CACzEsf,WAAYX,GAAqBJ,EAAS,aAAaxtB,OAAOytB,EAAmB,OAAOztB,OAAO0tB,QAAmBpvB,GACjH2vB,GAAgB,GAAI,CACrBO,cAAe,OACfzC,YAAarnB,KAAKyb,MAAMmN,WAAaE,GAAUG,EAAa,UAAY,SACxElE,SAAU,WACVxI,IAAK,EACLD,KAAM,IAEJwI,EAAava,GAAcA,GAAc,CAAA,EAAIqf,GAAiB,GAAI,CACpEvC,YAAarnB,KAAKyb,MAAMmN,WAAaE,GAAUG,EAAa,UAAY,UACvE1E,GACH,OAGEvlB,EAAMC,cAAc,MAAO,CAEzB8qB,MAAO,+BACPC,UAAU,EACV/rB,UAAWqrB,EACXprB,MAAO4mB,EACPlnB,IAAKwrB,GACJvrB,EAEP,CAnGA,WAAAqF,GACE+mB,SAAStvB,WACT6P,GAAgBxK,KAAM,QAAS,CAC7B4oB,WAAW,EACXC,sBAAuB,CACrBjqB,EAAG,EACHC,EAAG,KAGP2L,GAAgBxK,KAAM,gBAAiBkqB,IAEnC,IAAIC,EAAuBC,EAAwBC,EAAwBC,EAD3D,WAAdJ,EAAM/xB,KAER6H,KAAKuqB,SAAS,CACZ3B,WAAW,EACXC,sBAAuB,CACrBjqB,EAAoK,QAAhKurB,EAA6E,QAApDC,EAAyBpqB,KAAK/D,MAAMsrB,kBAAmD,IAA3B6C,OAAoC,EAASA,EAAuBxrB,SAAyC,IAA1BurB,EAAmCA,EAAwB,EACvOtrB,EAAqK,QAAjKwrB,EAA8E,QAApDC,EAAyBtqB,KAAK/D,MAAMsrB,kBAAmD,IAA3B+C,OAAoC,EAASA,EAAuBzrB,SAA0C,IAA3BwrB,EAAoCA,EAAyB,MAKpP,EC9BF,IACWG,KADyC,oBAAXC,QAA0BA,OAAOrC,UAAY5W,QAAQiZ,OAAOrC,SAASnpB,gBAAkBwrB,OAAOC,YCAhI,SAASC,GAAoBxtB,GAClC,OAAO7C,OAAOswB,SAASztB,EACzB,CCFA,SAASH,KAAa,OAAOA,GAAWpF,OAAOqF,OAASrF,OAAOqF,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAIzC,UAAU9B,OAAQuE,IAAK,CAAE,IAAIC,EAAI1C,UAAUyC,GAAI,IAAK,IAAIE,KAAKD,GAAI,CAAC,GAAGE,eAAeC,KAAKH,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAGH,GAASS,MAAM,KAAM9C,UAAY,CACnR,SAASwP,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAanL,IAAIytB,GAAkB,CACpBC,iB9EgCa,SAAS/mB,GACtB,OAAO,IAAIyD,GAAYzD,EACzB,E8EjCEgnB,e7EkBa,SAAShnB,GACtB,OAAO,IAAI0D,GAAU1D,EACvB,E6EnBEinB,W/E6Ba,SAASjnB,GACtB,OAAO,IAAIwD,GAAMxD,EACnB,E+E9BEknB,WxF4CK,SAAelnB,GACpB,OAAO,IAAIkC,GAAKlC,GAAS,EAC3B,EwF7CEmnB,WxF+CK,SAAennB,GACpB,OAAO,IAAIkC,GAAKlC,GAAS,EAC3B,EwFhDEonB,kB5EAa,SAASpnB,GACtB,OAAO,IAAI2D,GAAa3D,EAC1B,E4EDEE,eACAmnB,e3EyEK,SAAmBrnB,GACxB,OAAO,IAAIsE,GAAUtE,EACvB,E2E1EEsnB,e3E4EK,SAAmBtnB,GACxB,OAAO,IAAIuE,GAAUvE,EACvB,E2E7EEunB,a1EoCa,SAASvnB,GACtB,OAAO,IAAIyE,GAAQzE,EACrB,E0ErCEwnB,UzEea,SAASxnB,GACtB,OAAO,IAAI6E,GAAK7E,EAAS,GAC3B,EyEhBEynB,ezEsBK,SAAmBznB,GACxB,OAAO,IAAI6E,GAAK7E,EAAS,EAC3B,EyEvBE0nB,gBzEiBK,SAAoB1nB,GACzB,OAAO,IAAI6E,GAAK7E,EAAS,EAC3B,GyENIK,GAAUF,GAAKymB,GAAoBzmB,EAAEtF,IAAM+rB,GAAoBzmB,EAAErF,GACjE6sB,GAAOxnB,GAAKA,EAAEtF,EACd+sB,GAAOznB,GAAKA,EAAErF,EAeP+sB,GAAUjvB,IACnB,IASIkvB,GATAvgB,KACFA,EAAO,SAAQwgB,OACfA,EAAS,GAAEC,SACXA,EAAQre,OACRA,EAAMse,aACNA,GAAe,GACbrvB,EACAsvB,EAtBgB,EAAC3gB,EAAMoC,KAC3B,GAAoB,mBAATpC,EACT,OAAOA,EAET,IAAIM,EAAO,QAAQtQ,OAAOD,EAAWiQ,IACrC,MAAc,kBAATM,GAAqC,cAATA,IAAyB8B,EAGnDmd,GAAgBjf,IAAS3H,GAFvB4mB,GAAgB,GAAGvvB,OAAOsQ,GAAMtQ,OAAkB,aAAXoS,EAAwB,IAAM,OAgB3Dwe,CAAgB5gB,EAAMoC,GACrCye,EAAeH,EAAeF,EAAO1hB,OAAOhG,IAAW0nB,EAE3D,GAAIjyB,MAAMC,QAAQiyB,GAAW,CAC3B,IAAIK,EAAiBJ,EAAeD,EAAS3hB,OAAOiiB,GAAQjoB,GAAQioB,IAASN,EACzEO,EAAaH,EAAale,IAAI,CAACC,EAAOpV,IAAUyR,GAAcA,GAAc,CAAA,EAAI2D,GAAQ,CAAA,EAAI,CAC9Fme,KAAMD,EAAetzB,MAQvB,OALE+yB,EADa,aAAXne,EACazI,KAAYpG,EAAE8sB,IAAM/qB,GAAG8qB,IAAMvqB,GAAGiC,GAAKA,EAAEipB,KAAKztB,GAE5CqG,KAAYrG,EAAE8sB,IAAM7qB,GAAG8qB,IAAMvqB,GAAGgC,GAAKA,EAAEipB,KAAKxtB,IAEhDuF,QAAQA,IAASE,MAAM2nB,GAC7BJ,EAAaS,EACtB,CASA,OAPET,EADa,aAAXne,GAAyBrT,EAAS0xB,GACrB9mB,KAAYpG,EAAE8sB,IAAM/qB,GAAG8qB,IAAMvqB,GAAG4qB,GACtC1xB,EAAS0xB,GACH9mB,KAAYrG,EAAE8sB,IAAM7qB,GAAG8qB,IAAMvqB,GAAG2qB,GAEhC5nB,KAAYvF,EAAE8sB,IAAM7sB,EAAE8sB,KAE1BvnB,QAAQA,IAASE,MAAM2nB,GAC7BJ,EAAaM,IAEXI,GAAQtwB,IACjB,IAAIgC,UACFA,EAAS6tB,OACTA,EAAMpyB,KACNA,EAAI8yB,QACJA,GACEvwB,EACJ,KAAM6vB,GAAWA,EAAOjzB,QAAYa,GAClC,OAAO,KAET,IAAI+yB,EAAWX,GAAUA,EAAOjzB,OAAS+yB,GAAQ3vB,GAASvC,EAC1D,OAAoBsF,EAAMC,cAAc,OAAQjC,GAAS,CAAA,EAAIhB,EAAYC,GAAO,GrGDlD,CAACA,IAC/B,IAAKA,GAA0B,mBAAVA,GAAyC,kBAAVA,EAClD,OAAO,KAET,IAAIG,EAAaH,EAIjB,GAHiBI,EAAeJ,KAC9BG,EAAaH,EAAMA,OAEK,iBAAfG,GAAiD,mBAAfA,EAC3C,OAAO,KAET,IAAIE,EAAM,CAAA,EAMV,OALA1E,OAAO2E,KAAKH,GAAYI,QAAQrE,IAC1B4D,EAAU1D,SAASF,KACrBmE,EAAInE,GAAsBiF,GAAKhB,EAAWjE,GAAKiE,EAAYgB,MAGxDd,GqGhBiFowB,CAAmBzwB,GAAQ,CACjHgC,UAAWc,EAAK,iBAAkBd,GAClCmF,EAAgB,OAAbqpB,OAAoB7yB,EAAY6yB,EACnC7uB,IAAK4uB,MC3GLzvB,GAAY,CAAC,IAAK,IAAK,MAAO,OAAQ,QAAS,SAAU,aAC7D,SAASC,KAAa,OAAOA,GAAWpF,OAAOqF,OAASrF,OAAOqF,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAIzC,UAAU9B,OAAQuE,IAAK,CAAE,IAAIC,EAAI1C,UAAUyC,GAAI,IAAK,IAAIE,KAAKD,GAAI,CAAC,GAAGE,eAAeC,KAAKH,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAGH,GAASS,MAAM,KAAM9C,UAAY,CACnR,SAASwP,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAE9P,SAASmN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAYnL,IAAIwuB,GAAU,CAAChtB,EAAGC,EAAGf,EAAOC,EAAQwe,EAAKD,IAChC,IAAIhhB,OAAOsD,EAAG,KAAKtD,OAAOihB,EAAK,KAAKjhB,OAAOyC,EAAQ,KAAKzC,OAAOghB,EAAM,KAAKhhB,OAAOuD,EAAG,KAAKvD,OAAOwC,GAE9F6uB,GAAQhwB,IACjB,IAAIiC,EACAA,EAAI,EAACC,EACLA,EAAI,EAAC0d,IACLA,EAAM,EAACD,KACPA,EAAO,EAACxe,MACRA,EAAQ,EAACC,OACTA,EAAS,EAACE,UACVA,GACEtB,EAEFV,EA3BN,SAAuBmB,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CA2BxamN,CAAc,CACxB3L,IACAC,IACA0d,MACAD,OACAxe,QACAC,UA7BJ,SAAkCX,EAAGC,GAAK,GAAI,MAAQD,EAAG,MAAO,CAAA,EAAI,IAAIkB,EAAGhB,EAAGnC,EAC9E,SAAuCmC,EAAGF,GAAK,GAAI,MAAQE,EAAG,MAAO,CAAA,EAAI,IAAID,EAAI,CAAA,EAAI,IAAK,IAAIF,KAAKG,EAAG,GAAI,CAAC,EAAEC,eAAeC,KAAKF,EAAGH,GAAI,CAAE,QAAWC,EAAEhD,QAAQ+C,GAAI,SAAUE,EAAEF,GAAKG,EAAEH,EAAI,CAAE,OAAOE,CAAG,CADpHkB,CAA8BnB,EAAGC,GAAI,GAAIzF,OAAO4G,sBAAuB,CAAE,IAAIrB,EAAIvF,OAAO4G,sBAAsBpB,GAAI,IAAKE,EAAI,EAAGA,EAAIH,EAAEtE,OAAQyE,IAAKgB,EAAInB,EAAEG,IAAI,IAAOD,EAAEjD,QAAQkE,IAAM,CAAC,EAAEG,qBAAqBjB,KAAKJ,EAAGkB,KAAOnD,EAAEmD,GAAKlB,EAAEkB,GAAK,CAAE,OAAOnD,CAAG,CAsB1TuD,CAAyB/B,EAAMI,KASxC,OAAK1C,EAASuE,IAAOvE,EAASwE,IAAOxE,EAASyD,IAAWzD,EAAS0D,IAAY1D,EAASkiB,IAASliB,EAASiiB,GAGrFtd,EAAMC,cAAc,OAAQjC,GAAS,CAAA,EAAIhB,EAAYC,GAAO,GAAO,CACrFgC,UAAWc,EAAK,iBAAkBd,GAClCmF,EAAGwoB,GAAQhtB,EAAGC,EAAGf,EAAOC,EAAQwe,EAAKD,MAJ9B,MCvCX,SAASnS,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAE9P,SAASmN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAkB5K,SAASwvB,GAAoBC,EAAWC,GAK7C,IAAIC,EAxBN,SAAuB3vB,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CAwBhamN,CAAc,CAAA,EAAIsiB,GAOlCG,EAAKF,EAqBT,OAXWl1B,OAAO2E,KAAKuwB,GACC3N,OAAO,CAAC8N,EAAK90B,UAClByB,IAAbqzB,EAAI90B,SAAkCyB,IAAZozB,EAAG70B,KAC/B80B,EAAI90B,GAAO60B,EAAG70B,IAET80B,GACNF,EAML,iECpDAn1B,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAgB5DH,EAAAo1B,cAdA,SAAuBj1B,GACnB,IAAKA,GAA0B,iBAAVA,EACjB,OAAO,EAEX,MAAMk1B,EAAQv1B,OAAO+c,eAAe1c,GAIpC,QAHqC,OAAVk1B,GACvBA,IAAUv1B,OAAOiO,WACgB,OAAjCjO,OAAO+c,eAAewY,KAIuB,oBAA1Cv1B,OAAOiO,UAAU5C,SAASzF,KAAKvF,EAC1C,uDCdAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMi1B,EAAgB9zB,KAChBqY,EAAapY,KACbqY,EAASpY,KACTma,EAAOla,KACPuW,EAAK4D,KAKX,SAAS0Z,EAAgBrmB,EAAG4B,EAAGjM,EAAU2wB,EAASC,EAASjd,EAAOkd,GAC9D,MAAM30B,EAAS20B,EAAexmB,EAAG4B,EAAGjM,EAAU2wB,EAASC,EAASjd,GAChE,QAAezW,IAAXhB,EACA,OAAOA,EAEX,UAAWmO,UAAa4B,EACpB,cAAe5B,GACX,IAAK,SACL,IAAK,SACL,IAAK,UACL,IAAK,SACL,IAAK,YAML,IAAK,WACD,OAAOA,IAAM4B,EAJjB,IAAK,SACD,OAAO5B,IAAM4B,GAAK/Q,OAAOW,GAAGwO,EAAG4B,GAKnC,IAAK,SACD,OAAO6kB,EAAgBzmB,EAAG4B,EAAG0H,EAAOkd,GAIhD,OAAOC,EAAgBzmB,EAAG4B,EAAG0H,EAAOkd,EACxC,CACA,SAASC,EAAgBzmB,EAAG4B,EAAG0H,EAAOkd,GAClC,GAAI31B,OAAOW,GAAGwO,EAAG4B,GACb,OAAO,EAEX,IAAI8kB,EAAO/b,EAAOA,OAAO3K,GACrB2mB,EAAOhc,EAAOA,OAAO/I,GAOzB,GANI8kB,IAASha,EAAK9B,eACd8b,EAAOha,EAAKb,WAEZ8a,IAASja,EAAK9B,eACd+b,EAAOja,EAAKb,WAEZ6a,IAASC,EACT,OAAO,EAEX,OAAQD,GACJ,KAAKha,EAAKV,UACN,OAAOhM,EAAE9D,aAAe0F,EAAE1F,WAC9B,KAAKwQ,EAAKd,UAAW,CACjB,MAAM/T,EAAImI,EAAEvO,UACNqG,EAAI8J,EAAEnQ,UACZ,OAAOsX,EAAGA,GAAGlR,EAAGC,EAC5B,CACQ,KAAK4U,EAAKzB,WACV,KAAKyB,EAAKvB,QACV,KAAKuB,EAAKT,UACN,OAAOpb,OAAOW,GAAGwO,EAAEvO,UAAWmQ,EAAEnQ,WACpC,KAAKib,EAAKZ,UACN,OAAO9L,EAAEoJ,SAAWxH,EAAEwH,QAAUpJ,EAAEuN,QAAU3L,EAAE2L,MAElD,KAAKb,EAAKnB,YACN,OAAOvL,IAAM4B,EAIrB,MAAMglB,GADNtd,EAAQA,GAAS,IAAInB,KACA1V,IAAIuN,GACnB6mB,EAASvd,EAAM7W,IAAImP,GACzB,GAAc,MAAVglB,GAA4B,MAAVC,EAClB,OAAOD,IAAWhlB,EAEtB0H,EAAMjB,IAAIrI,EAAG4B,GACb0H,EAAMjB,IAAIzG,EAAG5B,GACb,IACI,OAAQ0mB,GACJ,KAAKha,EAAKf,OACN,GAAI3L,EAAEV,OAASsC,EAAEtC,KACb,OAAO,EAEX,IAAK,MAAOlO,EAAKF,KAAU8O,EAAEyJ,UACzB,IAAK7H,EAAEwG,IAAIhX,KAASi1B,EAAgBn1B,EAAO0Q,EAAEnP,IAAIrB,GAAMA,EAAK4O,EAAG4B,EAAG0H,EAAOkd,GACrE,OAAO,EAGf,OAAO,EAEX,KAAK9Z,EAAKX,OAAQ,CACd,GAAI/L,EAAEV,OAASsC,EAAEtC,KACb,OAAO,EAEX,MAAMwnB,EAAUh0B,MAAMgK,KAAKkD,EAAEsI,UACvBye,EAAUj0B,MAAMgK,KAAK8E,EAAE0G,UAC7B,IAAK,IAAIlU,EAAI,EAAGA,EAAI0yB,EAAQh1B,OAAQsC,IAAK,CACrC,MAAM4yB,EAASF,EAAQ1yB,GACjBrC,EAAQg1B,EAAQE,UAAUC,GACrBb,EAAgBW,EAAQE,OAAQr0B,EAAWmN,EAAG4B,EAAG0H,EAAOkd,IAEnE,IAAe,IAAXz0B,EACA,OAAO,EAEXg1B,EAAQvK,OAAOzqB,EAAO,EAC1C,CACgB,OAAO,CACvB,CACY,KAAK2a,EAAK5B,SACV,KAAK4B,EAAKN,cACV,KAAKM,EAAKL,qBACV,KAAKK,EAAKR,eACV,KAAKQ,EAAKP,eACV,KAAKO,EAAK1B,kBACV,KAAK0B,EAAKhB,aACV,KAAKgB,EAAKlB,cACV,KAAKkB,EAAKjB,cACV,KAAKiB,EAAK3B,iBACV,KAAK2B,EAAKrB,gBACV,KAAKqB,EAAKpB,gBACN,GAAsB,oBAAXmC,QAA0BA,OAAOC,SAAS1N,KAAOyN,OAAOC,SAAS9L,GACxE,OAAO,EAEX,GAAI5B,EAAElO,SAAW8P,EAAE9P,OACf,OAAO,EAEX,IAAK,IAAIsC,EAAI,EAAGA,EAAI4L,EAAElO,OAAQsC,IAC1B,IAAKiyB,EAAgBrmB,EAAE5L,GAAIwN,EAAExN,GAAIA,EAAG4L,EAAG4B,EAAG0H,EAAOkd,GAC7C,OAAO,EAGf,OAAO,EAEX,KAAK9Z,EAAK7B,eACN,OAAI7K,EAAE+N,aAAenM,EAAEmM,YAGhB0Y,EAAgB,IAAIU,WAAWnnB,GAAI,IAAImnB,WAAWvlB,GAAI0H,EAAOkd,GAExE,KAAK9Z,EAAKxB,YACN,OAAIlL,EAAE+N,aAAenM,EAAEmM,YAAc/N,EAAE8N,aAAelM,EAAEkM,YAGjD2Y,EAAgB,IAAIU,WAAWnnB,GAAI,IAAImnB,WAAWvlB,GAAI0H,EAAOkd,GAExE,KAAK9Z,EAAKtB,SACN,OAAOpL,EAAE6E,OAASjD,EAAEiD,MAAQ7E,EAAEmO,UAAYvM,EAAEuM,QAEhD,KAAKzB,EAAKb,UAAW,CAGjB,KAF0B4a,EAAgBzmB,EAAE7D,YAAayF,EAAEzF,YAAamN,EAAOkd,IAC1EL,EAAcA,cAAcnmB,IAAMmmB,EAAcA,cAAcvkB,IAE/D,OAAO,EAEX,MAAMwlB,EAAQ,IAAIv2B,OAAO2E,KAAKwK,MAAO0K,EAAWA,WAAW1K,IACrDqnB,EAAQ,IAAIx2B,OAAO2E,KAAKoM,MAAO8I,EAAWA,WAAW9I,IAC3D,GAAIwlB,EAAMt1B,SAAWu1B,EAAMv1B,OACvB,OAAO,EAEX,IAAK,IAAIsC,EAAI,EAAGA,EAAIgzB,EAAMt1B,OAAQsC,IAAK,CACnC,MAAMkzB,EAAUF,EAAMhzB,GAChBmzB,EAAQvnB,EAAEsnB,GAChB,IAAKz2B,OAAOqc,OAAOtL,EAAG0lB,GAClB,OAAO,EAGX,IAAKjB,EAAgBkB,EADP3lB,EAAE0lB,GACmBA,EAAStnB,EAAG4B,EAAG0H,EAAOkd,GACrD,OAAO,CAE/B,CACgB,OAAO,CACvB,CACY,QACI,OAAO,EAGvB,CAAA,QAEQld,EAAMO,OAAO7J,GACbsJ,EAAMO,OAAOjI,EACrB,CACA,CAEA7Q,EAAAy2B,YAlLA,SAAqBxnB,EAAG4B,EAAG4kB,GACvB,OAAOH,EAAgBrmB,EAAG4B,OAAG/O,OAAWA,OAAWA,OAAWA,EAAW2zB,EAC7E,qECVA31B,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAI5DH,EAAAuR,KAFA,WAAgB,uDCFhBzR,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMs2B,EAAcn1B,KACdiQ,EAAOhQ,KAMbvB,EAAAyZ,QAJA,SAAiBxK,EAAG4B,GAChB,OAAO4lB,EAAYA,YAAYxnB,EAAG4B,EAAGU,EAAKA,KAC9C,4CCTAkI,GAAiBnY,KAAwCmY,wBCAlD,IAAIid,GAAW,KAClBC,GAAoB,CAACC,EAAIC,IAAO,CAAC,EAAG,EAAID,EAAI,EAAIC,EAAK,EAAID,EAAI,EAAIA,EAAK,EAAIC,EAAK,GAC/EC,GAAqB,CAACC,EAAQxxB,IAAMwxB,EAAO5gB,IAAI,CAAC6gB,EAAO3zB,IAAM2zB,EAAQzxB,GAAKlC,GAAGgkB,OAAO,CAAC4P,EAAKC,IAASD,EAAMC,GACzGC,GAAc,CAACP,EAAIC,IAAOtxB,IAC5B,IAAIwxB,EAASJ,GAAkBC,EAAIC,GACnC,OAAOC,GAAmBC,EAAQxxB,IAQzB6xB,GAAe,WAExB,IADA,IAAItuB,EAAIG,EAAIF,EAAIG,EACPmuB,EAAOx0B,UAAU9B,OAAQu2B,EAAO,IAAIv1B,MAAMs1B,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ10B,UAAU00B,GAEzB,GAAoB,IAAhBD,EAAKv2B,OACP,OAAQu2B,EAAK,IACX,IAAK,UACFxuB,EAAIC,EAAIE,EAAIC,GAAM,CAAC,EAAK,EAAK,EAAK,GACnC,MACF,IAAK,QACFJ,EAAIC,EAAIE,EAAIC,GAAM,CAAC,IAAM,GAAK,IAAM,GACrC,MACF,IAAK,WACFJ,EAAIC,EAAIE,EAAIC,GAAM,CAAC,IAAM,EAAK,EAAK,GACpC,MACF,IAAK,YACFJ,EAAIC,EAAIE,EAAIC,GAAM,CAAC,IAAM,EAAK,IAAM,GACrC,MACF,IAAK,eACFJ,EAAIC,EAAIE,EAAIC,GAAM,CAAC,EAAK,EAAK,IAAM,GACpC,MACF,QAEI,IAAIsuB,EAASF,EAAK,GAAGG,MAAM,KACT,iBAAdD,EAAO,IAAuE,IAA9CA,EAAO,GAAGC,MAAM,KAAK,GAAGA,MAAM,KAAK12B,UACpE+H,EAAIC,EAAIE,EAAIC,GAAMsuB,EAAO,GAAGC,MAAM,KAAK,GAAGA,MAAM,KAAKthB,IAAIrP,GAAK/D,WAAW+D,UAIzD,IAAhBwwB,EAAKv2B,UACb+H,EAAIC,EAAIE,EAAIC,GAAMouB,GAErB,IAvC2BV,EAAIC,EAuC3Ba,EAASP,GAAYruB,EAAIG,GACzB0uB,EAASR,GAAYpuB,EAAIG,GACzB0uB,GAzCuBhB,EAyCW9tB,EAzCP+tB,EAyCW5tB,EAzCJ1D,IACtC,IACIsyB,EAAY,IADHlB,GAAkBC,EAAIC,GACR1gB,IAAI,CAAC6gB,EAAO3zB,IAAM2zB,EAAQ3zB,GAAGL,MAAM,GAAI,GAClE,OAAO8zB,GAAmBe,EAAWtyB,KAuCjCuyB,EAAa33B,GACXA,EAAQ,EACH,EAELA,EAAQ,EACH,EAEFA,EAEL43B,EAAShnB,IAGX,IAFA,IAAIxL,EAAIwL,EAAK,EAAI,EAAIA,EACjBjK,EAAIvB,EACClC,EAAI,EAAGA,EAAI,IAAKA,EAAG,CAC1B,IAAI20B,EAAQN,EAAO5wB,GAAKvB,EACpB0yB,EAASL,EAAU9wB,GACvB,GAAIU,KAAKoC,IAAIouB,EAAQzyB,GAAKmxB,IAAYuB,EAASvB,GAC7C,OAAOiB,EAAO7wB,GAEhBA,EAAIgxB,EAAWhxB,EAAIkxB,EAAQC,EAC7B,CACA,OAAON,EAAO7wB,IAGhB,OADAixB,EAAOG,WAAY,EACZH,CACT,EAsBWI,GAAeX,IACxB,GAAsB,iBAAXA,EACT,OAAQA,GACN,IAAK,OACL,IAAK,cACL,IAAK,WACL,IAAK,UACL,IAAK,SACH,OAAOJ,GAAaI,GACtB,IAAK,SACH,OA/BkB,WACxB,IAAIY,EAASv1B,UAAU9B,OAAS,QAAsBe,IAAjBe,UAAU,GAAmBA,UAAU,GAAK,CAAA,GAC7Ew1B,MACFA,EAAQ,IAAGC,QACXA,EAAU,EAACC,GACXA,EAAK,IACHH,EACAI,EAAU,CAACC,EAAOC,EAAOC,KAC3B,IAEIC,EAAOD,KAFKF,EAAQC,GAASL,EAClBM,EAAQL,GACmBC,EAAK,IAC3CM,EAAOF,EAAQJ,EAAK,IAAOE,EAC/B,OAAIjxB,KAAKoC,IAAIivB,EAAOH,GAAShC,IAAYlvB,KAAKoC,IAAIgvB,GAAQlC,GACjD,CAACgC,EAAO,GAEV,CAACG,EAAMD,IAIhB,OAFAJ,EAAQN,WAAY,EACpBM,EAAQD,GAAKA,EACNC,CACT,CAWeM,GACT,QACE,GAA6B,iBAAzBtB,EAAOC,MAAM,KAAK,GACpB,OAAOL,GAAaI,GAI5B,MAAsB,mBAAXA,EACFA,EAEF,MCnHT,SAASnlB,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAO5K,IAiBIyzB,GAAY,CAACC,EAAIvb,IAAQ3d,OAAO2E,KAAKgZ,GAAK4J,OAAO,CAACI,EAAKpnB,IAAQoS,GAAcA,GAAc,CAAA,EAAIgV,GAAM,GAAI,CAClHpnB,CAACA,GAAM24B,EAAG34B,EAAKod,EAAIpd,MACjB,CAAA,GC5BJ,SAASgS,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAI5K,IAAI2zB,GAAQ,CAACC,EAAOC,EAAK3tB,IAAM0tB,GAASC,EAAMD,GAAS1tB,EAC1D4tB,GAAev0B,IACjB,IAAIkH,KACFA,EAAIstB,GACJA,GACEx0B,EACJ,OAAOkH,IAASstB,GAMdC,GAAiB,CAAC9B,EAAQ+B,EAASC,KACrC,IAAIC,EAAeV,GAAU,CAAC14B,EAAKq5B,KACjC,GAAIN,GAAaM,GAAM,CACrB,IAAKb,EAAMD,GAAQpB,EAAOkC,EAAI3tB,KAAM2tB,EAAIL,GAAIK,EAAIC,UAChD,OAAOlnB,GAAcA,GAAc,CAAA,EAAIinB,GAAM,CAAA,EAAI,CAC/C3tB,KAAM8sB,EACNc,SAAUf,GAEd,CACA,OAAOc,GACNH,GACH,OAAIC,EAAQ,EACHT,GAAU,CAAC14B,EAAKq5B,IACjBN,GAAaM,GACRjnB,GAAcA,GAAc,CAAA,EAAIinB,GAAM,CAAA,EAAI,CAC/CC,SAAUV,GAAMS,EAAIC,SAAUF,EAAap5B,GAAKs5B,SAAUH,GAC1DztB,KAAMktB,GAAMS,EAAI3tB,KAAM0tB,EAAap5B,GAAK0L,KAAMytB,KAG3CE,EACNH,GAEED,GAAe9B,EAAQiC,EAAcD,EAAQ,IAEtD,SAASI,GAAoB7tB,EAAMstB,EAAI7B,EAAQqC,EAAWljB,EAAQmjB,GAChE,IAAIC,EACAC,EAAeH,EAAUxS,OAAO,CAACI,EAAKpnB,IAAQoS,GAAcA,GAAc,CAAA,EAAIgV,GAAM,CAAA,EAAI,CAC1FpnB,CAACA,GAAM,CACL0L,KAAMA,EAAK1L,GACXs5B,SAAU,EACVN,GAAIA,EAAGh5B,MAEP,CAAA,GAGA45B,EAAgB,KAChBC,EAAgBC,IACbJ,IACHA,EAAUI,GAEZ,IACIX,GADYW,EAAMJ,GACEvC,EAAOe,GAC/ByB,EAAeV,GAAe9B,EAAQwC,EAAcR,GAEpD7iB,EAAOlE,GAAcA,GAAcA,GAAc,CAAA,EAAI1G,GAAOstB,GAXrCN,GAAU,CAAC14B,EAAKq5B,IAAQA,EAAI3tB,KAAMiuB,KAYzDD,EAAUI,EAXqBr6B,OAAOyX,OAAOyiB,GAAc1nB,OAAO8mB,IAAcr4B,SAa9Ek5B,EAAgBH,EAAkBlH,WAAWsH,KAKjD,MAAO,KACLD,EAAgBH,EAAkBlH,WAAWsH,GAGtC,KACLD,KAGN,CAqCA,IAAAG,GAAe,CAACruB,EAAMstB,EAAI7B,EAAQ6C,EAAU1jB,EAAQmjB,KAClD,IDlGgCQ,EAAQC,ECkGpCV,GDlG4BS,ECkGIvuB,EDlGIwuB,ECkGElB,EDlGU,CAACv5B,OAAO2E,KAAK61B,GAASx6B,OAAO2E,KAAK81B,IAAUlT,OAAO,CAACpY,EAAG4B,IAAM5B,EAAEqD,OAAOpD,GAAK2B,EAAEtQ,SAAS2O,MCmG1I,OAA4B,IAArBsoB,EAAOU,UAAqB0B,GAAoB7tB,EAAMstB,EAAI7B,EAAQqC,EAAWljB,EAAQmjB,GAtC9F,SAA4B/tB,EAAMstB,EAAI7B,EAAQ6C,EAAUR,EAAWljB,EAAQmjB,GACzE,IAIIU,EAJAP,EAAgB,KAChBQ,EAAcZ,EAAUxS,OAAO,CAACI,EAAKpnB,IAAQoS,GAAcA,GAAc,CAAA,EAAIgV,GAAM,CAAA,EAAI,CACzFpnB,CAACA,GAAM,CAAC0L,EAAK1L,GAAMg5B,EAAGh5B,MACpB,CAAA,GAEAq6B,EAAeP,IACZK,IACHA,EAAYL,GAEd,IAAI50B,GAAK40B,EAAMK,GAAaH,EACxBM,EAAY5B,GAAU,CAAC14B,EAAKq5B,IAAQT,MAASS,EAAKlC,EAAOjyB,IAAKk1B,GAIlE,GADA9jB,EAAOlE,GAAcA,GAAcA,GAAc,CAAA,EAAI1G,GAAOstB,GAAKsB,IAC7Dp1B,EAAI,EACN00B,EAAgBH,EAAkBlH,WAAW8H,OACxC,CACL,IAAI7jB,EAAakiB,GAAU,CAAC14B,EAAKq5B,IAAQT,MAASS,EAAKlC,EAAO,IAAKiD,GACnE9jB,EAAOlE,GAAcA,GAAcA,GAAc,CAAA,EAAI1G,GAAOstB,GAAKxiB,GACnE,GAIF,MAAO,KACLojB,EAAgBH,EAAkBlH,WAAW8H,GAGtC,KACLT,KAGN,CAMmHW,CAAmB7uB,EAAMstB,EAAI7B,EAAQ6C,EAAUR,EAAWljB,EAAQmjB,EACrL,EC7GO,MAAMe,GACXjI,UAAAA,CAAWkI,GACT,IAAIC,EAAQl4B,UAAU9B,OAAS,QAAsBe,IAAjBe,UAAU,GAAmBA,UAAU,GAAK,EAC5Em4B,EAAYC,YAAYd,MACxBe,EAAY,KACZC,EAAkBhB,IAChBA,EAAMa,GAAaD,EACrBD,EAASX,GAGiC,mBAA1BiB,wBAChBF,EAAYE,sBAAsBD,KAItC,OADAD,EAAYE,sBAAsBD,GAC3B,KACLE,qBAAqBH,GAEzB,EC3BF,IAAIj2B,GAAY,CAAC,WAAY,QAAS,WAAY,gBAAiB,SAAU,WAAY,OAAQ,KAAM,WAAY,iBAAkB,kBAAmB,qBAAsB,oBAC9K,SAASC,KAAa,OAAOA,GAAWpF,OAAOqF,OAASrF,OAAOqF,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAIzC,UAAU9B,OAAQuE,IAAK,CAAE,IAAIC,EAAI1C,UAAUyC,GAAI,IAAK,IAAIE,KAAKD,GAAI,CAAC,GAAGE,eAAeC,KAAKH,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAGH,GAASS,MAAM,KAAM9C,UAAY,CAGnR,SAASwP,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAWnL,SAASg2B,KACP,OCRmCxB,EDQP,IAAIe,GCN5BU,EAAe,IAAM,KACrBC,GAAa,EACbC,EAAgB,KAChBC,EAAWC,IACb,IAAIH,EAAJ,CAGA,GAAIz5B,MAAMC,QAAQ25B,GAAS,CACzB,IAAKA,EAAO56B,OACV,OAEF,IAAI66B,EAASD,GACRzE,KAAS2E,GAAcD,EAC5B,MAAoB,iBAAT1E,OACTuE,EAAgB3B,EAAkBlH,WAAW8I,EAASt2B,KAAK,KAAMy2B,GAAa3E,KAGhFwE,EAASxE,QACTuE,EAAgB3B,EAAkBlH,WAAW8I,EAASt2B,KAAK,KAAMy2B,KAEnE,CACsB,iBAAXF,GAETJ,EADYI,GAGQ,mBAAXA,GACTA,GApBF,GAuBK,CACLG,KAAM,KACJN,GAAa,GAEfO,MAAO31B,IACLo1B,GAAa,EACTC,IACFA,IACAA,EAAgB,MAElBC,EAASt1B,IAEXqZ,UAAWuc,IACTT,EAAeS,EACR,KACLT,EAAe,IAAM,OAGzBU,qBAAsB,IAAMnC,GAjDzB,IAA8BA,EAE/ByB,EACAC,EACAC,EACAC,CDIN,CACA,MAAMQ,WAAoB1nB,EAkDxB6b,iBAAAA,GACE,IAAI8L,SACFA,EAAQC,SACRA,GACEl0B,KAAK/D,MACT+D,KAAKm0B,SAAU,EACVF,GAAaC,GAGlBl0B,KAAKo0B,aAAap0B,KAAK/D,MACzB,CACAwsB,kBAAAA,CAAmB4L,GACjB,IAAIJ,SACFA,EAAQC,SACRA,EAAQI,cACRA,EAAaC,gBACbA,EAAepD,GACfA,EACAttB,KAAM2wB,GACJx0B,KAAK/D,OACLiC,MACFA,GACE8B,KAAKyb,MACT,GAAKyY,EAGL,GAAKD,GAaL,KAAI1iB,GAAQ8iB,EAAUlD,GAAIA,IAAOkD,EAAUH,UAAYG,EAAUJ,UAAjE,CAGA,IAAIQ,GAAeJ,EAAUH,WAAaG,EAAUJ,SACpDj0B,KAAK00B,QAAQd,OACT5zB,KAAK20B,iBACP30B,KAAK20B,kBAEP,IAAI9wB,EAAO4wB,GAAeF,EAAkBC,EAAcH,EAAUlD,GACpE,GAAInxB,KAAKyb,OAASvd,EAAO,CACvB,IAAI02B,EAAY,CACd12B,MAAOo2B,EAAgB,CACrBA,CAACA,GAAgBzwB,GACfA,IAEFywB,GAAiBp2B,EAAMo2B,KAAmBzwB,IAASywB,GAAiBp2B,IAAU2F,IAChF7D,KAAKuqB,SAASqK,EAElB,CACA50B,KAAKo0B,aAAa7pB,GAAcA,GAAc,CAAA,EAAIvK,KAAK/D,OAAQ,GAAI,CACjE4H,OACAmtB,MAAO,IAnBT,MAfA,CACE,IAAI6D,EAAW,CACb32B,MAAOo2B,EAAgB,CACrBA,CAACA,GAAgBnD,GACfA,GAEFnxB,KAAKyb,OAASvd,IACZo2B,GAAiBp2B,EAAMo2B,KAAmBnD,IAAOmD,GAAiBp2B,IAAUizB,IAC9EnxB,KAAKuqB,SAASsK,EAIpB,CAwBF,CACAtM,oBAAAA,GACEvoB,KAAKm0B,SAAU,EACf,IAAIW,eACFA,GACE90B,KAAK/D,MACL+D,KAAK+0B,aACP/0B,KAAK+0B,cAEP/0B,KAAK00B,QAAQd,OACT5zB,KAAK20B,iBACP30B,KAAK20B,kBAEHG,GACFA,GAEJ,CACAE,iBAAAA,CAAkB92B,GAChB8B,KAAKi1B,YAAY/2B,EACnB,CACA+2B,WAAAA,CAAY/2B,GACN8B,KAAKm0B,SACPn0B,KAAKuqB,SAAS,CACZrsB,SAGN,CACAg3B,cAAAA,CAAej5B,GACb,IAAI4H,KACFA,EAAIstB,GACJA,EAAEgB,SACFA,EAAQ7C,OACRA,EAAM0B,MACNA,EAAK8D,eACLA,EAAcK,iBACdA,GACEl5B,EACAm5B,EAAiBlD,GAAaruB,EAAMstB,EAAIlB,GAAaX,GAAS6C,EAAUnyB,KAAKi1B,YAAaj1B,KAAK00B,QAAQX,wBAI3G/zB,KAAK00B,QAAQb,MAAM,CAACsB,EAAkBnE,EAHZ,KACxBhxB,KAAK20B,gBAAkBS,KAEyCjD,EAAU2C,GAC9E,CACAV,YAAAA,CAAan4B,GACX,IAAI+0B,MACFA,EAAKmB,SACLA,EAAQmC,cACRA,EACAnD,GAAIkE,EAAO/F,OACXA,EAAM6F,iBACNA,EAAgBL,eAChBA,EAAcj3B,SACdA,GACE5B,EAEJ,GADA+D,KAAK+0B,YAAc/0B,KAAK00B,QAAQnd,UAAUvX,KAAKg1B,mBACzB,mBAAX1F,GAA6C,mBAAbzxB,GAAsC,WAAXyxB,EAAtE,CAIA,IAAI6B,EAAKmD,EAAgB,CACvBA,CAACA,GAAgBe,GACfA,EACAxL,EHxLsB,EAAC5tB,EAAOk2B,EAAU7C,IAAWrzB,EAAMgS,IAAIqnB,IAAQ,SAAGh6B,QADvDsQ,EAC0E0pB,EADlE1pB,EAAK2pB,QAAQ,WAAYC,GAAK,IAAIl6B,OAAOk6B,EAAEC,iBAC8B,KAAKn6B,OAAO62B,EAAU,OAAO72B,OAAOg0B,GADrH1jB,IAAAA,IAC8H2Z,KAAK,KGwLvImQ,CAAiB99B,OAAO2E,KAAK40B,GAAKgB,EAAU7C,GAC7DtvB,KAAK00B,QAAQb,MAAM,CAACsB,EAAkBnE,EAAOzmB,GAAcA,GAAc,CAAA,EAAI4mB,GAAK,CAAA,EAAI,CACpFtH,eACEsI,EAAU2C,GAPd,MAFE90B,KAAKk1B,eAAej5B,EAUxB,CACAwS,MAAAA,GACE,IAAIknB,EAAc31B,KAAK/D,OACrB4B,SACEA,EAAQmzB,MACRA,EAAKmB,SACLA,EAAQmC,cACRA,EAAahF,OACbA,EAAM2E,SACNA,EAAQpwB,KACRA,EAAIstB,GACJA,EAAE+C,SACFA,EAAQY,eACRA,EAAcP,gBACdA,EAAeqB,mBACfA,EAAkBC,iBAClBA,GACEF,EACJt3B,EAtNN,SAAkCjB,EAAGC,GAAK,GAAI,MAAQD,EAAG,MAAO,CAAA,EAAI,IAAIkB,EAAGhB,EAAGnC,EAC9E,SAAuCmC,EAAGF,GAAK,GAAI,MAAQE,EAAG,MAAO,CAAA,EAAI,IAAID,EAAI,CAAA,EAAI,IAAK,IAAIF,KAAKG,EAAG,GAAI,CAAC,EAAEC,eAAeC,KAAKF,EAAGH,GAAI,CAAE,QAAWC,EAAEhD,QAAQ+C,GAAI,SAAUE,EAAEF,GAAKG,EAAEH,EAAI,CAAE,OAAOE,CAAG,CADpHkB,CAA8BnB,EAAGC,GAAI,GAAIzF,OAAO4G,sBAAuB,CAAE,IAAIrB,EAAIvF,OAAO4G,sBAAsBpB,GAAI,IAAKE,EAAI,EAAGA,EAAIH,EAAEtE,OAAQyE,IAAKgB,EAAInB,EAAEG,IAAI,IAAOD,EAAEjD,QAAQkE,IAAM,CAAC,EAAEG,qBAAqBjB,KAAKJ,EAAGkB,KAAOnD,EAAEmD,GAAKlB,EAAEkB,GAAK,CAAE,OAAOnD,CAAG,CAsNtTuD,CAAyBi3B,EAAa54B,IAC7C+4B,EAAQC,EAASD,MAAMj4B,GACvBm4B,EAAah2B,KAAKyb,MAAMvd,MAC5B,GAAwB,mBAAbL,EACT,OAAOA,EAASm4B,GAElB,IAAK/B,GAAsB,IAAV6B,GAAe3D,GAAY,EAC1C,OAAOt0B,EAET,IAAIo4B,EAAiBC,IACnB,IAAIh4B,MACFA,EAAQ,CAAA,EAAED,UACVA,GACEi4B,EAAUj6B,MAKd,OAJuBsR,EAAa2oB,EAAW3rB,GAAcA,GAAc,CAAA,EAAIlM,GAAS,GAAI,CAC1FH,MAAOqM,GAAcA,GAAc,CAAA,EAAIrM,GAAQ83B,GAC/C/3B,gBAIJ,OAAc,IAAV63B,EAEKG,EAAeF,EAASI,KAAKt4B,IAIlBmB,EAAMC,cAAc,MAAO,KAAM82B,EAAS9nB,IAAIpQ,EAAUu4B,GAASH,EAAeG,IACtG,CA9NA,WAAAlzB,CAAYjH,EAAO8H,GACjBkmB,MAAMhuB,EAAO8H,GACbyG,GAAgBxK,KAAM,WAAW,GACjCwK,GAAgBxK,KAAM,UAAW,MACjCwK,GAAgBxK,KAAM,kBAAmB,MACzCwK,GAAgBxK,KAAM,cAAe,MACrC,IAAIi0B,SACFA,EAAQK,cACRA,EAAazwB,KACbA,EAAIstB,GACJA,EAAEtzB,SACFA,EAAQs0B,SACRA,EAAQ0D,iBACRA,GACE71B,KAAK/D,MAIT,GAHA+D,KAAK00B,QAAUmB,EACf71B,KAAKg1B,kBAAoBh1B,KAAKg1B,kBAAkB93B,KAAK8C,MACrDA,KAAKi1B,YAAcj1B,KAAKi1B,YAAY/3B,KAAK8C,OACpCi0B,GAAY9B,GAAY,EAW3B,OAVAnyB,KAAKyb,MAAQ,CACXvd,MAAO,CAAA,QAIe,mBAAbL,IACTmC,KAAKyb,MAAQ,CACXvd,MAAOizB,KAKb,GAAIttB,EAAM,CACR,GAAwB,mBAAbhG,EAIT,YAHAmC,KAAKyb,MAAQ,CACXvd,MAAO2F,IAIX7D,KAAKyb,MAAQ,CACXvd,MAAOo2B,EAAgB,CACrBA,CAACA,GAAgBzwB,GACfA,EAER,MACE7D,KAAKyb,MAAQ,CACXvd,MAAO,CAAA,EAGb,EAgLFsM,GAAgBwpB,GAAa,cAAe,WAC5CxpB,GAAgBwpB,GAAa,eAAgB,CAC3ChD,MAAO,EACPmB,SAAU,IACVmC,cAAe,GACfhF,OAAQ,OACR2E,UAAU,EACVC,UAAU,EACVY,eAAgB,OAChBK,iBAAkB,SAEb,IAAIkB,GAAuCl3B,EAAc,MACzD,SAASm3B,GAAQr6B,GACtB,IAAIU,EAAM45B,EACNC,EAA0B3d,EAAWwd,IACzC,OAAoBr3B,EAAMC,cAAc+0B,GAAah3B,GAAS,CAAA,EAAIf,EAAO,CACvE45B,iBAA+K,QAA5Jl5B,EAA4D,QAApD45B,EAAwBt6B,EAAM45B,wBAAwD,IAA1BU,EAAmCA,EAAwBC,SAA8C,IAAT75B,EAAkBA,EAAOy2B,OAEpN,CEvQA,SAASp2B,KAAa,OAAOA,GAAWpF,OAAOqF,OAASrF,OAAOqF,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAIzC,UAAU9B,OAAQuE,IAAK,CAAE,IAAIC,EAAI1C,UAAUyC,GAAI,IAAK,IAAIE,KAAKD,GAAI,CAAC,GAAGE,eAAeC,KAAKH,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAGH,GAASS,MAAM,KAAM9C,UAAY,CAUnR,IAAI87B,GAAmB,CAAC73B,EAAGC,EAAGf,EAAOC,EAAQmf,KAC3C,IAIIxjB,EAJAg9B,EAAYp3B,KAAK2I,IAAI3I,KAAKoC,IAAI5D,GAAS,EAAGwB,KAAKoC,IAAI3D,GAAU,GAC7D44B,EAAQ54B,GAAU,EAAI,GAAI,EAC1B64B,EAAQ94B,GAAS,EAAI,GAAI,EACzB+4B,EAAY94B,GAAU,GAAKD,GAAS,GAAKC,EAAS,GAAKD,EAAQ,EAAI,EAAI,EAE3E,GAAI44B,EAAY,GAAKxZ,aAAkBrjB,MAAO,CAE5C,IADA,IAAIi9B,EAAY,CAAC,EAAG,EAAG,EAAG,GACjB37B,EAAI,EAAYA,EAAH,EAAYA,IAChC27B,EAAU37B,GAAK+hB,EAAO/hB,GAAKu7B,EAAYA,EAAYxZ,EAAO/hB,GAE5DzB,EAAO,IAAI4B,OAAOsD,EAAG,KAAKtD,OAAOuD,EAAI83B,EAAQG,EAAU,IACnDA,EAAU,GAAK,IACjBp9B,GAAQ,KAAK4B,OAAOw7B,EAAU,GAAI,KAAKx7B,OAAOw7B,EAAU,GAAI,SAASx7B,OAAOu7B,EAAW,KAAKv7B,OAAOsD,EAAIg4B,EAAQE,EAAU,GAAI,KAAKx7B,OAAOuD,IAE3InF,GAAQ,KAAK4B,OAAOsD,EAAId,EAAQ84B,EAAQE,EAAU,GAAI,KAAKx7B,OAAOuD,GAC9Di4B,EAAU,GAAK,IACjBp9B,GAAQ,KAAK4B,OAAOw7B,EAAU,GAAI,KAAKx7B,OAAOw7B,EAAU,GAAI,SAASx7B,OAAOu7B,EAAW,eAAev7B,OAAOsD,EAAId,EAAO,KAAKxC,OAAOuD,EAAI83B,EAAQG,EAAU,KAE5Jp9B,GAAQ,KAAK4B,OAAOsD,EAAId,EAAO,KAAKxC,OAAOuD,EAAId,EAAS44B,EAAQG,EAAU,IACtEA,EAAU,GAAK,IACjBp9B,GAAQ,KAAK4B,OAAOw7B,EAAU,GAAI,KAAKx7B,OAAOw7B,EAAU,GAAI,SAASx7B,OAAOu7B,EAAW,eAAev7B,OAAOsD,EAAId,EAAQ84B,EAAQE,EAAU,GAAI,KAAKx7B,OAAOuD,EAAId,IAEjKrE,GAAQ,KAAK4B,OAAOsD,EAAIg4B,EAAQE,EAAU,GAAI,KAAKx7B,OAAOuD,EAAId,GAC1D+4B,EAAU,GAAK,IACjBp9B,GAAQ,KAAK4B,OAAOw7B,EAAU,GAAI,KAAKx7B,OAAOw7B,EAAU,GAAI,SAASx7B,OAAOu7B,EAAW,eAAev7B,OAAOsD,EAAG,KAAKtD,OAAOuD,EAAId,EAAS44B,EAAQG,EAAU,KAE7Jp9B,GAAQ,GACV,MAAO,GAAIg9B,EAAY,GAAKxZ,KAAYA,GAAUA,EAAS,EAAG,CAC5D,IAAI6Z,EAAaz3B,KAAK2I,IAAIyuB,EAAWxZ,GACrCxjB,EAAO,KAAK4B,OAAOsD,EAAG,KAAKtD,OAAOuD,EAAI83B,EAAQI,EAAY,oBAAoBz7B,OAAOy7B,EAAY,KAAKz7B,OAAOy7B,EAAY,SAASz7B,OAAOu7B,EAAW,KAAKv7B,OAAOsD,EAAIg4B,EAAQG,EAAY,KAAKz7B,OAAOuD,EAAG,oBAAoBvD,OAAOsD,EAAId,EAAQ84B,EAAQG,EAAY,KAAKz7B,OAAOuD,EAAG,oBAAoBvD,OAAOy7B,EAAY,KAAKz7B,OAAOy7B,EAAY,SAASz7B,OAAOu7B,EAAW,KAAKv7B,OAAOsD,EAAId,EAAO,KAAKxC,OAAOuD,EAAI83B,EAAQI,EAAY,oBAAoBz7B,OAAOsD,EAAId,EAAO,KAAKxC,OAAOuD,EAAId,EAAS44B,EAAQI,EAAY,oBAAoBz7B,OAAOy7B,EAAY,KAAKz7B,OAAOy7B,EAAY,SAASz7B,OAAOu7B,EAAW,KAAKv7B,OAAOsD,EAAId,EAAQ84B,EAAQG,EAAY,KAAKz7B,OAAOuD,EAAId,EAAQ,oBAAoBzC,OAAOsD,EAAIg4B,EAAQG,EAAY,KAAKz7B,OAAOuD,EAAId,EAAQ,oBAAoBzC,OAAOy7B,EAAY,KAAKz7B,OAAOy7B,EAAY,SAASz7B,OAAOu7B,EAAW,KAAKv7B,OAAOsD,EAAG,KAAKtD,OAAOuD,EAAId,EAAS44B,EAAQI,EAAY,KAC13B,MACEr9B,EAAO,KAAK4B,OAAOsD,EAAG,KAAKtD,OAAOuD,EAAG,OAAOvD,OAAOwC,EAAO,OAAOxC,OAAOyC,EAAQ,OAAOzC,QAAQwC,EAAO,MAExG,OAAOpE,GAELozB,GAAe,CACjBluB,EAAG,EACHC,EAAG,EACHf,MAAO,EACPC,OAAQ,EAIRmf,OAAQ,EACRgM,mBAAmB,EACnB8N,yBAAyB,EACzBC,eAAgB,EAChBlO,kBAAmB,KACnBC,gBAAiB,QAERkO,GAAYC,IACrB,IAAIl7B,EAAQ2wB,GAAoBuK,EAAgBrK,IAC5CN,EAAUvV,EAAO,OAChBmgB,EAAaC,GAAkBhb,GAAS,GAC7CnF,EAAU,KACR,GAAIsV,EAAQzyB,SAAWyyB,EAAQzyB,QAAQu9B,eACrC,IACE,IAAIC,EAAkB/K,EAAQzyB,QAAQu9B,iBAClCC,GACFF,EAAeE,EAEnB,CAAE,MAAOC,GAET,GAED,IACH,IAAI54B,EACFA,EAACC,EACDA,EAACf,MACDA,EAAKC,OACLA,EAAMmf,OACNA,EAAMjf,UACNA,GACEhC,GACA+sB,gBACFA,EAAeD,kBACfA,EAAiBkO,eACjBA,EAAc/N,kBACdA,EAAiB8N,wBACjBA,GACE/6B,EACJ,GAAI2C,KAAOA,GAAKC,KAAOA,GAAKf,KAAWA,GAASC,KAAYA,GAAoB,IAAVD,GAA0B,IAAXC,EACnF,OAAO,KAET,IAAIe,EAAaC,EAAK,qBAAsBd,GAC5C,OAAK+4B,EAMeh4B,EAAMC,cAAcq3B,GAAS,CAC/CpC,SAAUkD,EAAc,EACxBvzB,KAAM,CACJ/F,QACAC,SACAa,IACAC,KAEFsyB,GAAI,CACFrzB,QACAC,SACAa,IACAC,KAEFszB,SAAUpJ,EAGVC,gBAAiBA,EACjBiL,SAAU+C,GACTr6B,IACD,IACEmB,MAAO25B,EACP15B,OAAQ25B,EACR94B,EAAG2xB,EACH1xB,EAAG84B,GACDh7B,EACJ,OAAoBqC,EAAMC,cAAcq3B,GAAS,CAC/CpC,SAAUkD,EAAc,EAGxBvzB,KAAM,OAAOvI,QAAuB,IAAhB87B,EAAqB,EAAIA,EAAa,MAG1DjG,GAAI,GAAG71B,OAAO87B,EAAa,UAC3B9C,cAAe,kBACftD,MAAOiG,EACP9E,SAAUpJ,EACVkL,SAAU/K,EACVoG,OAAQtG,GACMhqB,EAAMC,cAAc,OAAQjC,GAAS,CAAA,EAAIhB,EAAYC,GAAO,GAAO,CACjFgC,UAAWa,EACXsE,EAAGqzB,GAAiBlG,EAAOoH,EAAOF,EAAWC,EAAYxa,GACzDtf,IAAK4uB,QA/CaxtB,EAAMC,cAAc,OAAQjC,GAAS,CAAA,EAAIhB,EAAYC,GAAO,GAAO,CACrFgC,UAAWa,EACXsE,EAAGqzB,GAAiB73B,EAAGC,EAAGf,EAAOC,EAAQmf,OC7FxC,SAAS0a,GAAsBC,GACpC,IAAIrsB,GACFA,EAAEC,GACFA,EAAEyR,OACFA,EAAM4a,WACNA,EAAUC,SACVA,GACEF,EAGJ,MAAO,CACL/L,OAAQ,CAHO7O,GAAiBzR,EAAIC,EAAIyR,EAAQ4a,GACnC7a,GAAiBzR,EAAIC,EAAIyR,EAAQ6a,IAG9CvsB,KACAC,KACAyR,SACA4a,aACAC,WAEJ,CCxBA,SAAS/6B,KAAa,OAAOA,GAAWpF,OAAOqF,OAASrF,OAAOqF,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAIzC,UAAU9B,OAAQuE,IAAK,CAAE,IAAIC,EAAI1C,UAAUyC,GAAI,IAAK,IAAIE,KAAKD,GAAI,CAAC,GAAGE,eAAeC,KAAKH,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAGH,GAASS,MAAM,KAAM9C,UAAY,CAOnR,IAKIq9B,GAAmBr7B,IACrB,IAAI6O,GACFA,EAAEC,GACFA,EAAEyR,OACFA,EAAMlR,MACNA,EAAKrE,KACLA,EAAIswB,WACJA,EAAUC,aACVA,EAAYC,iBACZA,GACEx7B,EACAy7B,EAAeF,GAAgBD,EAAa,GAAI,GAAM/a,EACtDmb,EAAQ/4B,KAAKg5B,KAAKJ,EAAeE,GAAgBltB,GACjDqtB,EAAcJ,EAAmBnsB,EAAQA,EAAQrE,EAAO0wB,EAKxDG,EAAoBL,EAAmBnsB,EAAQrE,EAAO0wB,EAAQrsB,EAElE,MAAO,CACLysB,OAPWxb,GAAiBzR,EAAIC,EAAI2sB,EAAcG,GAQlDG,eANmBzb,GAAiBzR,EAAIC,EAAIyR,EAAQqb,GAOpDI,aAJiB1b,GAAiBzR,EAAIC,EAAI2sB,EAAe94B,KAAKD,IAAIg5B,EAAQntB,IAASstB,GAKnFH,UAGAO,GAAgBjR,IAClB,IAAInc,GACFA,EAAEC,GACFA,EAAEotB,YACFA,EAAWC,YACXA,EAAWhB,WACXA,EAAUC,SACVA,GACEpQ,EACA3b,EAzCc,EAAC8rB,EAAYC,IACpB99B,EAAS89B,EAAWD,GACdx4B,KAAK2I,IAAI3I,KAAKoC,IAAIq2B,EAAWD,GAAa,SAuC/CiB,CAAcjB,EAAYC,GAGlCiB,EAAelB,EAAa9rB,EAC5BitB,EAAkBhc,GAAiBzR,EAAIC,EAAIqtB,EAAahB,GACxDoB,EAAgBjc,GAAiBzR,EAAIC,EAAIqtB,EAAaE,GACtDt/B,EAAO,KAAK4B,OAAO29B,EAAgBr6B,EAAG,KAAKtD,OAAO29B,EAAgBp6B,EAAG,YAAYvD,OAAOw9B,EAAa,KAAKx9B,OAAOw9B,EAAa,aAAax9B,SAASgE,KAAKoC,IAAIsK,GAAS,KAAM,KAAK1Q,SAASw8B,EAAakB,GAAe,WAAW19B,OAAO49B,EAAct6B,EAAG,KAAKtD,OAAO49B,EAAcr6B,EAAG,QAC1R,GAAIg6B,EAAc,EAAG,CACnB,IAAIM,EAAkBlc,GAAiBzR,EAAIC,EAAIotB,EAAaf,GACxDsB,EAAgBnc,GAAiBzR,EAAIC,EAAIotB,EAAaG,GAC1Dt/B,GAAQ,KAAK4B,OAAO89B,EAAcx6B,EAAG,KAAKtD,OAAO89B,EAAcv6B,EAAG,oBAAoBvD,OAAOu9B,EAAa,KAAKv9B,OAAOu9B,EAAa,qBAAqBv9B,SAASgE,KAAKoC,IAAIsK,GAAS,KAAM,KAAK1Q,SAASw8B,GAAckB,GAAe,mBAAmB19B,OAAO69B,EAAgBv6B,EAAG,KAAKtD,OAAO69B,EAAgBt6B,EAAG,KAClT,MACEnF,GAAQ,KAAK4B,OAAOkQ,EAAI,KAAKlQ,OAAOmQ,EAAI,MAE1C,OAAO/R,GA+FLozB,GAAe,CACjBthB,GAAI,EACJC,GAAI,EACJotB,YAAa,EACbC,YAAa,EACbhB,WAAY,EACZC,SAAU,EACVG,aAAc,EACdmB,mBAAmB,EACnBlB,kBAAkB,GAETmB,GAASC,IAClB,IAAIt9B,EAAQ2wB,GAAoB2M,EAAazM,KACzCthB,GACFA,EAAEC,GACFA,EAAEotB,YACFA,EAAWC,YACXA,EAAWZ,aACXA,EAAYmB,kBACZA,EAAiBlB,iBACjBA,EAAgBL,WAChBA,EAAUC,SACVA,EAAQ95B,UACRA,GACEhC,EACJ,GAAI68B,EAAcD,GAAef,IAAeC,EAC9C,OAAO,KAET,IAGIr+B,EAHAoF,EAAaC,EAAK,kBAAmBd,GACrCu7B,EAAcV,EAAcD,EAC5BY,EAAKj/B,EAAgB09B,EAAcsB,EAAa,GAAG,GAwBvD,OArBE9/B,EADE+/B,EAAK,GAAKn6B,KAAKoC,IAAIo2B,EAAaC,GAAY,IA7HxBtO,CAAAA,IACxB,IAAIje,GACFA,EAAEC,GACFA,EAAEotB,YACFA,EAAWC,YACXA,EAAWZ,aACXA,EAAYmB,kBACZA,EAAiBlB,iBACjBA,EAAgBL,WAChBA,EAAUC,SACVA,GACEtO,EACA9hB,EAAO1N,EAAS89B,EAAWD,IAE7BY,eAAgBgB,EAChBf,aAAcgB,EACdtB,MAAOuB,GACL5B,GAAiB,CACnBxsB,KACAC,KACAyR,OAAQ4b,EACR9sB,MAAO8rB,EACPnwB,OACAuwB,eACAC,sBAGAO,eAAgBmB,EAChBlB,aAAcmB,EACdzB,MAAO0B,GACL/B,GAAiB,CACnBxsB,KACAC,KACAyR,OAAQ4b,EACR9sB,MAAO+rB,EACPpwB,MAAOA,EACPuwB,eACAC,qBAEE6B,EAAgB7B,EAAmB74B,KAAKoC,IAAIo2B,EAAaC,GAAYz4B,KAAKoC,IAAIo2B,EAAaC,GAAY6B,EAAMG,EACjH,GAAIC,EAAgB,EAClB,OAAIX,EACK,KAAK/9B,OAAOq+B,EAAK/6B,EAAG,KAAKtD,OAAOq+B,EAAK96B,EAAG,eAAevD,OAAO48B,EAAc,KAAK58B,OAAO48B,EAAc,WAAW58B,OAAsB,EAAf48B,EAAkB,iBAAiB58B,OAAO48B,EAAc,KAAK58B,OAAO48B,EAAc,WAAW58B,OAAuB,GAAf48B,EAAkB,cAEjPU,GAAc,CACnBptB,KACAC,KACAotB,cACAC,cACAhB,aACAC,aAGJ,IAAIr+B,EAAO,KAAK4B,OAAOq+B,EAAK/6B,EAAG,KAAKtD,OAAOq+B,EAAK96B,EAAG,WAAWvD,OAAO48B,EAAc,KAAK58B,OAAO48B,EAAc,SAAS58B,SAASqM,EAAO,GAAI,KAAKrM,OAAOo+B,EAAK96B,EAAG,KAAKtD,OAAOo+B,EAAK76B,EAAG,WAAWvD,OAAOw9B,EAAa,KAAKx9B,OAAOw9B,EAAa,OAAOx9B,SAAS0+B,EAAgB,KAAM,KAAK1+B,SAASqM,EAAO,GAAI,KAAKrM,OAAOu+B,EAAKj7B,EAAG,KAAKtD,OAAOu+B,EAAKh7B,EAAG,WAAWvD,OAAO48B,EAAc,KAAK58B,OAAO48B,EAAc,SAAS58B,SAASqM,EAAO,GAAI,KAAKrM,OAAOw+B,EAAKl7B,EAAG,KAAKtD,OAAOw+B,EAAKj7B,EAAG,QAChd,GAAIg6B,EAAc,EAAG,CACnB,IACEH,eAAgBuB,EAChBtB,aAAcuB,EACd7B,MAAO8B,GACLnC,GAAiB,CACnBxsB,KACAC,KACAyR,OAAQ2b,EACR7sB,MAAO8rB,EACPnwB,OACAswB,YAAY,EACZC,eACAC,sBAGAO,eAAgB0B,EAChBzB,aAAc0B,EACdhC,MAAOiC,GACLtC,GAAiB,CACnBxsB,KACAC,KACAyR,OAAQ2b,EACR7sB,MAAO+rB,EACPpwB,MAAOA,EACPswB,YAAY,EACZC,eACAC,qBAEEoC,EAAgBpC,EAAmB74B,KAAKoC,IAAIo2B,EAAaC,GAAYz4B,KAAKoC,IAAIo2B,EAAaC,GAAYoC,EAAMG,EACjH,GAAIC,EAAgB,GAAsB,IAAjBrC,EACvB,MAAO,GAAG58B,OAAO5B,EAAM,KAAK4B,OAAOkQ,EAAI,KAAKlQ,OAAOmQ,EAAI,KAEzD/R,GAAQ,IAAI4B,OAAO++B,EAAKz7B,EAAG,KAAKtD,OAAO++B,EAAKx7B,EAAG,aAAavD,OAAO48B,EAAc,KAAK58B,OAAO48B,EAAc,SAAS58B,SAASqM,EAAO,GAAI,KAAKrM,OAAO8+B,EAAKx7B,EAAG,KAAKtD,OAAO8+B,EAAKv7B,EAAG,aAAavD,OAAOu9B,EAAa,KAAKv9B,OAAOu9B,EAAa,OAAOv9B,SAASi/B,EAAgB,KAAM,KAAKj/B,SAASqM,EAAO,GAAI,KAAKrM,OAAO2+B,EAAKr7B,EAAG,KAAKtD,OAAO2+B,EAAKp7B,EAAG,aAAavD,OAAO48B,EAAc,KAAK58B,OAAO48B,EAAc,SAAS58B,SAASqM,EAAO,GAAI,KAAKrM,OAAO4+B,EAAKt7B,EAAG,KAAKtD,OAAO4+B,EAAKr7B,EAAG,IACpd,MACEnF,GAAQ,IAAI4B,OAAOkQ,EAAI,KAAKlQ,OAAOmQ,EAAI,KAEzC,OAAO/R,GAmCE8gC,CAAoB,CACzBhvB,KACAC,KACAotB,cACAC,cACAZ,aAAc54B,KAAK2I,IAAIwxB,EAAID,EAAc,GACzCH,oBACAlB,mBACAL,aACAC,aAGKa,GAAc,CACnBptB,KACAC,KACAotB,cACAC,cACAhB,aACAC,aAGgB/4B,EAAMC,cAAc,OAAQjC,GAAS,CAAA,EAAIhB,EAAYC,GAAO,GAAO,CACrFgC,UAAWa,EACXsE,EAAG1J,MCnNA,SAAS+gC,GAAgB/sB,EAAQmqB,EAAkBpZ,GACxD,IAAI7d,EAAIC,EAAIE,EAAIC,EAChB,GAAe,eAAX0M,EAEF3M,EADAH,EAAKi3B,EAAiBj5B,EAEtBiC,EAAK4d,EAAOlC,IACZvb,EAAKyd,EAAOlC,IAAMkC,EAAO1gB,YACpB,GAAe,aAAX2P,EAET1M,EADAH,EAAKg3B,EAAiBh5B,EAEtB+B,EAAK6d,EAAOnC,KACZvb,EAAK0d,EAAOnC,KAAOmC,EAAO3gB,WACrB,GAA2B,MAAvB+5B,EAAiBrsB,IAAqC,MAAvBqsB,EAAiBpsB,GAAY,CACrE,GAAe,YAAXiC,EAgBF,OAAOkqB,GAAsBC,GAf7B,IAAIrsB,GACFA,EAAEC,GACFA,EAAEotB,YACFA,EAAWC,YACXA,EAAW9sB,MACXA,GACE6rB,EACA6C,EAAazd,GAAiBzR,EAAIC,EAAIotB,EAAa7sB,GACnD2uB,EAAa1d,GAAiBzR,EAAIC,EAAIqtB,EAAa9sB,GACvDpL,EAAK85B,EAAW97B,EAChBiC,EAAK65B,EAAW77B,EAChBkC,EAAK45B,EAAW/7B,EAChBoC,EAAK25B,EAAW97B,CAKpB,CACA,MAAO,CAAC,CACND,EAAGgC,EACH/B,EAAGgC,GACF,CACDjC,EAAGmC,EACHlC,EAAGmC,GAEP,iFCvCApJ,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAM+hB,EAAW5gB,KASjBtB,EAAA8iC,SAPA,SAAkB3iC,GACd,OAAI+hB,EAASA,SAAS/hB,GACX8N,IAEJzL,OAAOrC,EAClB,sDCTAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAM2iC,EAAWxhC,KAcjBtB,EAAA+iC,SAZA,SAAkB5iC,GACd,IAAKA,EACD,OAAiB,IAAVA,EAAcA,EAAQ,EAGjC,IADAA,EAAQ2iC,EAASA,SAAS3iC,MACZwnB,KAAYxnB,KAAWwnB,IAAU,CAE3C,OADaxnB,EAAQ,GAAI,EAAK,GAChBqC,OAAOwgC,SAC7B,CACI,OAAO7iC,GAAUA,EAAQA,EAAQ,CACrC,sDCdAL,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMqjB,EAAiBliB,KACjByhC,EAAWxhC,KAwBjBvB,EAAAijC,MAtBA,SAAelH,EAAO5C,EAAK+J,GACnBA,GAAwB,iBAATA,GAAqB1f,EAAeA,eAAeuY,EAAO5C,EAAK+J,KAC9E/J,EAAM+J,OAAOphC,GAEjBi6B,EAAQgH,EAASA,SAAShH,QACdj6B,IAARq3B,GACAA,EAAM4C,EACNA,EAAQ,GAGR5C,EAAM4J,EAASA,SAAS5J,GAE5B+J,OAAgBphC,IAATohC,EAAsBnH,EAAQ5C,EAAM,KAAU4J,EAASA,SAASG,GACvE,MAAMniC,EAASyG,KAAKkgB,IAAIlgB,KAAK27B,MAAMhK,EAAM4C,IAAUmH,GAAQ,IAAK,GAC1DpiC,EAAS,IAAIiB,MAAMhB,GACzB,IAAK,IAAIC,EAAQ,EAAGA,EAAQD,EAAQC,IAChCF,EAAOE,GAAS+6B,EAChBA,GAASmH,EAEb,OAAOpiC,CACX,4CC3BAmiC,GAAiB3hC,KAAwC2hC,sBCA1C,SAASG,GAAUn0B,EAAG4B,GACnC,OAAY,MAAL5B,GAAkB,MAAL4B,EAAY5C,IAAMgB,EAAI4B,GAAI,EAAK5B,EAAI4B,EAAI,EAAI5B,GAAK4B,EAAI,EAAI5C,GAC9E,CCFe,SAASo1B,GAAWp0B,EAAG4B,GACpC,OAAY,MAAL5B,GAAkB,MAAL4B,EAAY5C,IAC5B4C,EAAI5B,GAAI,EACR4B,EAAI5B,EAAI,EACR4B,GAAK5B,EAAI,EACThB,GACN,CCHe,SAASq1B,GAASC,GAC/B,IAAIC,EAAUC,EAAUC,EAiBxB,SAASlf,EAAKvV,EAAGnI,EAAG68B,EAAK,EAAGC,EAAK30B,EAAElO,QACjC,GAAI4iC,EAAKC,EAAI,CACX,GAAuB,IAAnBJ,EAAS18B,EAAGA,GAAU,OAAO88B,EACjC,EAAG,CACD,MAAMC,EAAMF,EAAMC,IAAQ,EACtBH,EAASx0B,EAAE40B,GAAM/8B,GAAK,EAAG68B,EAAKE,EAAM,EACnCD,EAAKC,CACZ,OAASF,EAAKC,EAChB,CACA,OAAOD,CACT,CAmBA,OAvCiB,IAAbJ,EAAExiC,QACJyiC,EAAWJ,GACXK,EAAW,CAACn4B,EAAGxE,IAAMs8B,GAAUG,EAAEj4B,GAAIxE,GACrC48B,EAAQ,CAACp4B,EAAGxE,IAAMy8B,EAAEj4B,GAAKxE,IAEzB08B,EAAWD,IAAMH,IAAaG,IAAMF,GAAaE,EAAIO,GACrDL,EAAWF,EACXG,EAAQH,GAgCH,CAAC/e,OAAMmc,OALd,SAAgB1xB,EAAGnI,EAAG68B,EAAK,EAAGC,EAAK30B,EAAElO,QACnC,MAAMsC,EAAImhB,EAAKvV,EAAGnI,EAAG68B,EAAIC,EAAK,GAC9B,OAAOvgC,EAAIsgC,GAAMD,EAAMz0B,EAAE5L,EAAI,GAAIyD,IAAM48B,EAAMz0B,EAAE5L,GAAIyD,GAAKzD,EAAI,EAAIA,CAClE,EAEsBmmB,MAjBtB,SAAeva,EAAGnI,EAAG68B,EAAK,EAAGC,EAAK30B,EAAElO,QAClC,GAAI4iC,EAAKC,EAAI,CACX,GAAuB,IAAnBJ,EAAS18B,EAAGA,GAAU,OAAO88B,EACjC,EAAG,CACD,MAAMC,EAAMF,EAAMC,IAAQ,EACtBH,EAASx0B,EAAE40B,GAAM/8B,IAAM,EAAG68B,EAAKE,EAAM,EACpCD,EAAKC,CACZ,OAASF,EAAKC,EAChB,CACA,OAAOD,CACT,EAQF,CAEA,SAASG,KACP,OAAO,CACT,CCvDe,SAASC,GAAOj9B,GAC7B,OAAa,OAANA,EAAamH,KAAOnH,CAC7B,CCEA,MACak9B,GADWV,GAASF,IACU5Z,MAEf8Z,GAASS,IAAQpD,OCPtC,MAAMsD,WAAkB7sB,IAM7B1V,GAAAA,CAAIrB,GACF,OAAO8xB,MAAMzwB,IAAIwiC,GAAWh8B,KAAM7H,GACpC,CACAgX,GAAAA,CAAIhX,GACF,OAAO8xB,MAAM9a,IAAI6sB,GAAWh8B,KAAM7H,GACpC,CACAiX,GAAAA,CAAIjX,EAAKF,GACP,OAAOgyB,MAAM7a,IA6BjB,UAAoB6sB,QAACA,EAAO5M,KAAEA,GAAOp3B,GACnC,MAAME,EAAMk3B,EAAKp3B,GACjB,OAAIgkC,EAAQ9sB,IAAIhX,GAAa8jC,EAAQziC,IAAIrB,IACzC8jC,EAAQ7sB,IAAIjX,EAAKF,GACVA,EACT,CAlCqBikC,CAAWl8B,KAAM7H,GAAMF,EAC1C,CACA2Y,OAAOzY,GACL,OAAO8xB,MAAMrZ,OAiCjB,UAAuBqrB,QAACA,EAAO5M,KAAEA,GAAOp3B,GACtC,MAAME,EAAMk3B,EAAKp3B,GACbgkC,EAAQ9sB,IAAIhX,KACdF,EAAQgkC,EAAQziC,IAAIrB,GACpB8jC,EAAQrrB,OAAOzY,IAEjB,OAAOF,CACT,CAxCwBkkC,CAAcn8B,KAAM7H,GAC1C,CAhBA,WAAA+K,CAAYsN,EAASrY,EAAMikC,IAGzB,GAFAnS,QACAryB,OAAO8S,iBAAiB1K,KAAM,CAACi8B,QAAS,CAAChkC,MAAO,IAAIiX,KAAQmgB,KAAM,CAACp3B,MAAOE,KAC3D,MAAXqY,EAAiB,IAAK,MAAOrY,EAAKF,KAAUuY,EAASxQ,KAAKoP,IAAIjX,EAAKF,EACzE,EAgCF,SAAS+jC,IAAWC,QAACA,EAAO5M,KAAEA,GAAOp3B,GACnC,MAAME,EAAMk3B,EAAKp3B,GACjB,OAAOgkC,EAAQ9sB,IAAIhX,GAAO8jC,EAAQziC,IAAIrB,GAAOF,CAC/C,CAkBA,SAASmkC,GAAMnkC,GACb,OAAiB,OAAVA,GAAmC,iBAAVA,EAAqBA,EAAMO,UAAYP,CACzE,CCxBO,SAASokC,GAAiBt1B,EAAG4B,GAClC,OAAa,MAAL5B,KAAeA,GAAKA,KAAY,MAAL4B,KAAeA,GAAKA,MAAQ5B,EAAI4B,GAAI,EAAK5B,EAAI4B,EAAI,EAAI,EAC1F,CCtCA,MAAM2zB,GAAMh9B,KAAKE,KAAK,IAClB+8B,GAAKj9B,KAAKE,KAAK,IACfg9B,GAAKl9B,KAAKE,KAAK,GAEnB,SAASi9B,GAAS5I,EAAOD,EAAMkC,GAC7B,MAAMkF,GAAQpH,EAAOC,GAASv0B,KAAKkgB,IAAI,EAAGsW,GACtC4G,EAAQp9B,KAAK+D,MAAM/D,KAAKq9B,MAAM3B,IAC9B4B,EAAQ5B,EAAO17B,KAAKu9B,IAAI,GAAIH,GAC5BI,EAASF,GAASN,GAAM,GAAKM,GAASL,GAAK,EAAIK,GAASJ,GAAK,EAAI,EACrE,IAAItyB,EAAI6yB,EAAIC,EAeZ,OAdIN,EAAQ,GACVM,EAAM19B,KAAKu9B,IAAI,IAAKH,GAASI,EAC7B5yB,EAAK5K,KAAKiE,MAAMswB,EAAQmJ,GACxBD,EAAKz9B,KAAKiE,MAAMqwB,EAAOoJ,GACnB9yB,EAAK8yB,EAAMnJ,KAAS3pB,EACpB6yB,EAAKC,EAAMpJ,KAAQmJ,EACvBC,GAAOA,IAEPA,EAAM19B,KAAKu9B,IAAI,GAAIH,GAASI,EAC5B5yB,EAAK5K,KAAKiE,MAAMswB,EAAQmJ,GACxBD,EAAKz9B,KAAKiE,MAAMqwB,EAAOoJ,GACnB9yB,EAAK8yB,EAAMnJ,KAAS3pB,EACpB6yB,EAAKC,EAAMpJ,KAAQmJ,GAErBA,EAAK7yB,GAAM,IAAO4rB,GAASA,EAAQ,EAAU2G,GAAS5I,EAAOD,EAAc,EAARkC,GAChE,CAAC5rB,EAAI6yB,EAAIC,EAClB,CAEe,SAASC,GAAMpJ,EAAOD,EAAMkC,GAEzC,MAD8BA,GAASA,GACzB,GAAI,MAAO,GACzB,IAFcjC,GAASA,MAAvBD,GAAQA,GAEY,MAAO,CAACC,GAC5B,MAAMqJ,EAAUtJ,EAAOC,GAAQ3pB,EAAI6yB,EAAIC,GAAOE,EAAUT,GAAS7I,EAAMC,EAAOiC,GAAS2G,GAAS5I,EAAOD,EAAMkC,GAC7G,KAAMiH,GAAM7yB,GAAK,MAAO,GACxB,MAAM/M,EAAI4/B,EAAK7yB,EAAK,EAAG+yB,EAAQ,IAAIpjC,MAAMsD,GACzC,GAAI+/B,EACF,GAAIF,EAAM,EAAG,IAAK,IAAI7hC,EAAI,EAAGA,EAAIgC,IAAKhC,EAAG8hC,EAAM9hC,IAAM4hC,EAAK5hC,IAAM6hC,OAC3D,IAAK,IAAI7hC,EAAI,EAAGA,EAAIgC,IAAKhC,EAAG8hC,EAAM9hC,IAAM4hC,EAAK5hC,GAAK6hC,OAEvD,GAAIA,EAAM,EAAG,IAAK,IAAI7hC,EAAI,EAAGA,EAAIgC,IAAKhC,EAAG8hC,EAAM9hC,IAAM+O,EAAK/O,IAAM6hC,OAC3D,IAAK,IAAI7hC,EAAI,EAAGA,EAAIgC,IAAKhC,EAAG8hC,EAAM9hC,IAAM+O,EAAK/O,GAAK6hC,EAEzD,OAAOC,CACT,CAEO,SAASE,GAActJ,EAAOD,EAAMkC,GAEzC,OAAO2G,GADO5I,GAASA,EAAvBD,GAAQA,EAAsBkC,GAASA,GACH,EACtC,CAEO,SAASsH,GAASvJ,EAAOD,EAAMkC,GACNA,GAASA,EACvC,MAAMoH,GADNtJ,GAAQA,IAAMC,GAASA,GACOmJ,EAAME,EAAUC,GAAcvJ,EAAMC,EAAOiC,GAASqH,GAActJ,EAAOD,EAAMkC,GAC7G,OAAQoH,GAAU,EAAK,IAAMF,EAAM,EAAI,GAAKA,EAAMA,EACpD,CCtDe,SAASxd,GAAInQ,EAAQguB,GAClC,IAAI7d,EAEF,IAAK,MAAMvnB,KAASoX,EACL,MAATpX,IACIunB,EAAMvnB,QAAkB2B,IAAR4lB,GAAqBvnB,GAASA,KACpDunB,EAAMvnB,GAYZ,OAAOunB,CACT,CCnBe,SAASvX,GAAIoH,EAAQguB,GAClC,IAAIp1B,EAEF,IAAK,MAAMhQ,KAASoX,EACL,MAATpX,IACIgQ,EAAMhQ,QAAkB2B,IAARqO,GAAqBhQ,GAASA,KACpDgQ,EAAMhQ,GAYZ,OAAOgQ,CACT,CCfe,SAASq1B,GAAY15B,EAAON,EAAGgZ,EAAO,EAAGgF,EAAQ7B,IAAUrP,GAKxE,GAJA9M,EAAIhE,KAAK+D,MAAMC,GACfgZ,EAAOhd,KAAK+D,MAAM/D,KAAKkgB,IAAI,EAAGlD,IAC9BgF,EAAQhiB,KAAK+D,MAAM/D,KAAK2I,IAAIrE,EAAM/K,OAAS,EAAGyoB,MAExChF,GAAQhZ,GAAKA,GAAKge,GAAQ,OAAO1d,EAIvC,IAFAwM,OAAsBxW,IAAZwW,EAAwBisB,GJe7B,SAAwBjsB,EAAU8qB,IACvC,GAAI9qB,IAAY8qB,GAAW,OAAOmB,GAClC,GAAuB,mBAAZjsB,EAAwB,MAAM,IAAIxF,UAAU,6BACvD,MAAO,CAAC7D,EAAG4B,KACT,MAAM/J,EAAIwR,EAAQrJ,EAAG4B,GACrB,OAAI/J,GAAW,IAANA,EAAgBA,GACC,IAAlBwR,EAAQzH,EAAGA,KAA+B,IAAlByH,EAAQrJ,EAAGA,IAE/C,CIvBuDw2B,CAAentB,GAE7DkR,EAAQhF,GAAM,CACnB,GAAIgF,EAAQhF,EAAO,IAAK,CACtB,MAAMnf,EAAImkB,EAAQhF,EAAO,EACnB5T,EAAIpF,EAAIgZ,EAAO,EACfkhB,EAAIl+B,KAAKm+B,IAAItgC,GACb8J,EAAI,GAAM3H,KAAKo+B,IAAI,EAAIF,EAAI,GAC3BG,EAAK,GAAMr+B,KAAKE,KAAKg+B,EAAIv2B,GAAK9J,EAAI8J,GAAK9J,IAAMuL,EAAIvL,EAAI,EAAI,GAAI,EAAK,GAGxEmgC,GAAY15B,EAAON,EAFHhE,KAAKkgB,IAAIlD,EAAMhd,KAAK+D,MAAMC,EAAIoF,EAAIzB,EAAI9J,EAAIwgC,IACzCr+B,KAAK2I,IAAIqZ,EAAOhiB,KAAK+D,MAAMC,GAAKnG,EAAIuL,GAAKzB,EAAI9J,EAAIwgC,IACzBvtB,EAC3C,CAEA,MAAM/S,EAAIuG,EAAMN,GAChB,IAAInI,EAAImhB,EACJnX,EAAImc,EAKR,IAHAsc,GAAKh6B,EAAO0Y,EAAMhZ,GACd8M,EAAQxM,EAAM0d,GAAQjkB,GAAK,GAAGugC,GAAKh6B,EAAO0Y,EAAMgF,GAE7CnmB,EAAIgK,GAAG,CAEZ,IADAy4B,GAAKh6B,EAAOzI,EAAGgK,KAAMhK,IAAKgK,EACnBiL,EAAQxM,EAAMzI,GAAIkC,GAAK,KAAKlC,EACnC,KAAOiV,EAAQxM,EAAMuB,GAAI9H,GAAK,KAAK8H,CACrC,CAEgC,IAA5BiL,EAAQxM,EAAM0Y,GAAOjf,GAAUugC,GAAKh6B,EAAO0Y,EAAMnX,MAC9CA,EAAGy4B,GAAKh6B,EAAOuB,EAAGmc,IAErBnc,GAAK7B,IAAGgZ,EAAOnX,EAAI,GACnB7B,GAAK6B,IAAGmc,EAAQnc,EAAI,EAC1B,CAEA,OAAOvB,CACT,CAEA,SAASg6B,GAAKh6B,EAAOzI,EAAGgK,GACtB,MAAM9H,EAAIuG,EAAMzI,GAChByI,EAAMzI,GAAKyI,EAAMuB,GACjBvB,EAAMuB,GAAK9H,CACb,CC9BO,SAASwgC,GAAexuB,EAAQnL,EAAGm5B,EAAUxB,IAClD,IAAM1+B,EAAIkS,EAAOxW,UAAWoQ,MAAM/E,GAAKA,GAAvC,CACA,GAAIA,GAAK,GAAK/G,EAAI,EAAG,OAAQkgC,EAAQhuB,EAAO,GAAI,EAAGA,GACnD,GAAInL,GAAK,EAAG,OAAQm5B,EAAQhuB,EAAOlS,EAAI,GAAIA,EAAI,EAAGkS,GAClD,IAAIlS,EACAhC,GAAKgC,EAAI,GAAK+G,EACd+F,EAAK3K,KAAK+D,MAAMlI,GAChB2iC,GAAUT,EAAQhuB,EAAOpF,GAAKA,EAAIoF,GAEtC,OAAOyuB,IADOT,EAAQhuB,EAAOpF,EAAK,GAAIA,EAAK,EAAGoF,GACpByuB,IAAW3iC,EAAI8O,EARE,CAS7C,CChCO,SAAS8zB,GAAU7e,EAAQ6b,GAChC,OAAQpgC,UAAU9B,QAChB,KAAK,EAAG,MACR,KAAK,EAAGmH,KAAK+6B,MAAM7b,GAAS,MAC5B,QAASlf,KAAK+6B,MAAMA,GAAO7b,OAAOA,GAEpC,OAAOlf,IACT,CAEO,SAASg+B,GAAiB9e,EAAQ+e,GACvC,OAAQtjC,UAAU9B,QAChB,KAAK,EAAG,MACR,KAAK,EACmB,mBAAXqmB,EAAuBlf,KAAKi+B,aAAa/e,GAC/Clf,KAAK+6B,MAAM7b,GAChB,MAEF,QACElf,KAAKkf,OAAOA,GACgB,mBAAjB+e,EAA6Bj+B,KAAKi+B,aAAaA,GACrDj+B,KAAK+6B,MAAMkD,GAIpB,OAAOj+B,IACT,CCtBO,MAAMk+B,GAAWnmC,OAAO,YAEhB,SAASomC,KACtB,IAAIrlC,EAAQ,IAAIijC,GACZ7c,EAAS,GACT6b,EAAQ,GACRqD,EAAUF,GAEd,SAASG,EAAMj7B,GACb,IAAIjI,EAAIrC,EAAMU,IAAI4J,GAClB,QAAUxJ,IAANuB,EAAiB,CACnB,GAAIijC,IAAYF,GAAU,OAAOE,EACjCtlC,EAAMsW,IAAIhM,EAAGjI,EAAI+jB,EAAOhmB,KAAKkK,GAAK,EACpC,CACA,OAAO23B,EAAM5/B,EAAI4/B,EAAMliC,OACzB,CA0BA,OAxBAwlC,EAAMnf,OAAS,SAASjf,GACtB,IAAKtF,UAAU9B,OAAQ,OAAOqmB,EAAOpkB,QACrCokB,EAAS,GAAIpmB,EAAQ,IAAIijC,GACzB,IAAK,MAAM9jC,KAASgI,EACdnH,EAAMqW,IAAIlX,IACda,EAAMsW,IAAInX,EAAOinB,EAAOhmB,KAAKjB,GAAS,GAExC,OAAOomC,CACT,EAEAA,EAAMtD,MAAQ,SAAS96B,GACrB,OAAOtF,UAAU9B,QAAUkiC,EAAQlhC,MAAMgK,KAAK5D,GAAIo+B,GAAStD,EAAMjgC,OACnE,EAEAujC,EAAMD,QAAU,SAASn+B,GACvB,OAAOtF,UAAU9B,QAAUulC,EAAUn+B,EAAGo+B,GAASD,CACnD,EAEAC,EAAMC,KAAO,WACX,OAAOH,GAAQjf,EAAQ6b,GAAOqD,QAAQA,EACxC,EAEAL,GAAUtgC,MAAM4gC,EAAO1jC,WAEhB0jC,CACT,CCzCe,SAASE,KACtB,IAKIvD,EACAwD,EANAH,EAAQF,KAAUC,aAAQxkC,GAC1BslB,EAASmf,EAAMnf,OACfuf,EAAeJ,EAAMtD,MACrB2D,EAAK,EACLC,EAAK,EAGLp7B,GAAQ,EACRq7B,EAAe,EACfC,EAAe,EACfnwB,EAAQ,GAIZ,SAASowB,IACP,IAAI3hC,EAAI+hB,IAASrmB,OACbqkC,EAAUyB,EAAKD,EACf7K,EAAQqJ,EAAUyB,EAAKD,EACvB9K,EAAOsJ,EAAUwB,EAAKC,EAC1B3D,GAAQpH,EAAOC,GAASv0B,KAAKkgB,IAAI,EAAGriB,EAAIyhC,EAA8B,EAAfC,GACnDt7B,IAAOy3B,EAAO17B,KAAK+D,MAAM23B,IAC7BnH,IAAUD,EAAOC,EAAQmH,GAAQ79B,EAAIyhC,IAAiBlwB,EACtD8vB,EAAYxD,GAAQ,EAAI4D,GACpBr7B,IAAOswB,EAAQv0B,KAAKiE,MAAMswB,GAAQ2K,EAAYl/B,KAAKiE,MAAMi7B,IAC7D,IAAInvB,EC7BO,SAAewkB,EAAOD,EAAMoH,GACzCnH,GAASA,EAAOD,GAAQA,EAAMoH,GAAQ79B,EAAIxC,UAAU9B,QAAU,GAAK+6B,EAAOC,EAAOA,EAAQ,EAAG,GAAK12B,EAAI,EAAI,GAAK69B,EAM9G,IAJA,IAAI7/B,GAAI,EACJgC,EAAoD,EAAhDmC,KAAKkgB,IAAI,EAAGlgB,KAAK27B,MAAMrH,EAAOC,GAASmH,IAC3CD,EAAQ,IAAIlhC,MAAMsD,KAEbhC,EAAIgC,GACX49B,EAAM5/B,GAAK04B,EAAQ14B,EAAI6/B,EAGzB,OAAOD,CACT,CDiBiBgE,CAAS5hC,GAAG8Q,IAAI,SAAS9S,GAAK,OAAO04B,EAAQmH,EAAO7/B,CAAG,GACpE,OAAOsjC,EAAavB,EAAU7tB,EAAO6tB,UAAY7tB,EACnD,CAkDA,cAhEOgvB,EAAMD,QAgBbC,EAAMnf,OAAS,SAASjf,GACtB,OAAOtF,UAAU9B,QAAUqmB,EAAOjf,GAAI6+B,KAAa5f,GACrD,EAEAmf,EAAMtD,MAAQ,SAAS96B,GACrB,OAAOtF,UAAU9B,SAAW6lC,EAAIC,GAAM1+B,EAAGy+B,GAAMA,EAAIC,GAAMA,EAAIG,KAAa,CAACJ,EAAIC,EACjF,EAEAN,EAAMW,WAAa,SAAS/+B,GAC1B,OAAQy+B,EAAIC,GAAM1+B,EAAGy+B,GAAMA,EAAIC,GAAMA,EAAIp7B,GAAQ,EAAMu7B,GACzD,EAEAT,EAAMG,UAAY,WAChB,OAAOA,CACT,EAEAH,EAAMrD,KAAO,WACX,OAAOA,CACT,EAEAqD,EAAM96B,MAAQ,SAAStD,GACrB,OAAOtF,UAAU9B,QAAU0K,IAAUtD,EAAG6+B,KAAav7B,CACvD,EAEA86B,EAAMzvB,QAAU,SAAS3O,GACvB,OAAOtF,UAAU9B,QAAU+lC,EAAet/B,KAAK2I,IAAI,EAAG42B,GAAgB5+B,GAAI6+B,KAAaF,CACzF,EAEAP,EAAMO,aAAe,SAAS3+B,GAC5B,OAAOtF,UAAU9B,QAAU+lC,EAAet/B,KAAK2I,IAAI,EAAGhI,GAAI6+B,KAAaF,CACzE,EAEAP,EAAMQ,aAAe,SAAS5+B,GAC5B,OAAOtF,UAAU9B,QAAUgmC,GAAgB5+B,EAAG6+B,KAAaD,CAC7D,EAEAR,EAAM3vB,MAAQ,SAASzO,GACrB,OAAOtF,UAAU9B,QAAU6V,EAAQpP,KAAKkgB,IAAI,EAAGlgB,KAAK2I,IAAI,EAAGhI,IAAK6+B,KAAapwB,CAC/E,EAEA2vB,EAAMC,KAAO,WACX,OAAOC,GAAKrf,IAAU,CAACwf,EAAIC,IACtBp7B,MAAMA,GACNq7B,aAAaA,GACbC,aAAaA,GACbnwB,MAAMA,EACb,EAEOqvB,GAAUtgC,MAAMqhC,IAAWnkC,UACpC,CAEA,SAASskC,GAASZ,GAChB,IAAIC,EAAOD,EAAMC,KAUjB,OARAD,EAAMzvB,QAAUyvB,EAAMQ,oBACfR,EAAMO,oBACNP,EAAMQ,aAEbR,EAAMC,KAAO,WACX,OAAOW,GAASX,IAClB,EAEOD,CACT,CEhGe,SAAAa,GAASh8B,EAAaiJ,EAAStG,GAC5C3C,EAAY2C,UAAYsG,EAAQtG,UAAYA,EAC5CA,EAAU3C,YAAcA,CAC1B,CAEO,SAASi8B,GAAOC,EAAQC,GAC7B,IAAIx5B,EAAYjO,OAAOiS,OAAOu1B,EAAOv5B,WACrC,IAAK,IAAI1N,KAAOknC,EAAYx5B,EAAU1N,GAAOknC,EAAWlnC,GACxD,OAAO0N,CACT,CCPO,SAASy5B,KAAS,CAElB,IAAIC,GAAS,GACTC,GAAW,EAAID,GAEtBE,GAAM,sBACNC,GAAM,oDACNC,GAAM,qDACNC,GAAQ,qBACRC,GAAe,IAAIxrB,OAAO,UAAUorB,MAAOA,MAAOA,UAClDK,GAAe,IAAIzrB,OAAO,UAAUsrB,MAAOA,MAAOA,UAClDI,GAAgB,IAAI1rB,OAAO,WAAWorB,MAAOA,MAAOA,MAAOC,UAC3DM,GAAgB,IAAI3rB,OAAO,WAAWsrB,MAAOA,MAAOA,MAAOD,UAC3DO,GAAe,IAAI5rB,OAAO,UAAUqrB,MAAOC,MAAOA,UAClDO,GAAgB,IAAI7rB,OAAO,WAAWqrB,MAAOC,MAAOA,MAAOD,UAE3DS,GAAQ,CACVC,UAAW,SACXC,aAAc,SACdC,KAAM,MACNC,WAAY,QACZC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,MAAO,EACPC,eAAgB,SAChBC,KAAM,IACNC,WAAY,QACZC,MAAO,SACPC,UAAW,SACXC,UAAW,QACXC,WAAY,QACZC,UAAW,SACXC,MAAO,SACPC,eAAgB,QAChBC,SAAU,SACVC,QAAS,SACTC,KAAM,MACNC,SAAU,IACVC,SAAU,MACVC,cAAe,SACfC,SAAU,SACVC,UAAW,MACXC,SAAU,SACVC,UAAW,SACXC,YAAa,QACbC,eAAgB,QAChBC,WAAY,SACZC,WAAY,SACZC,QAAS,QACTC,WAAY,SACZC,aAAc,QACdC,cAAe,QACfC,cAAe,QACfC,cAAe,QACfC,cAAe,MACfC,WAAY,QACZC,SAAU,SACVC,YAAa,MACbC,QAAS,QACTC,QAAS,QACTC,WAAY,QACZC,UAAW,SACXC,YAAa,SACbC,YAAa,QACbC,QAAS,SACTC,UAAW,SACXC,WAAY,SACZC,KAAM,SACNC,UAAW,SACXC,KAAM,QACNC,MAAO,MACPC,YAAa,SACbC,KAAM,QACNC,SAAU,SACVC,QAAS,SACTC,UAAW,SACXC,OAAQ,QACRC,MAAO,SACPC,MAAO,SACPC,SAAU,SACVC,cAAe,SACfC,UAAW,QACXC,aAAc,SACdC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,qBAAsB,SACtBC,UAAW,SACXC,WAAY,QACZC,UAAW,SACXC,UAAW,SACXC,YAAa,SACbC,cAAe,QACfC,aAAc,QACdC,eAAgB,QAChBC,eAAgB,QAChBC,eAAgB,SAChBC,YAAa,SACbC,KAAM,MACNC,UAAW,QACXC,MAAO,SACPC,QAAS,SACTC,OAAQ,QACRC,iBAAkB,QAClBC,WAAY,IACZC,aAAc,SACdC,aAAc,QACdC,eAAgB,QAChBC,gBAAiB,QACjBC,kBAAmB,MACnBC,gBAAiB,QACjBC,gBAAiB,SACjBC,aAAc,QACdC,UAAW,SACXC,UAAW,SACXC,SAAU,SACVC,YAAa,SACbC,KAAM,IACNC,QAAS,SACTC,MAAO,QACPC,UAAW,QACXC,OAAQ,SACRC,UAAW,SACXC,OAAQ,SACRC,cAAe,SACfC,UAAW,SACXC,cAAe,SACfC,cAAe,SACfC,WAAY,SACZC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,WAAY,SACZC,OAAQ,QACRC,cAAe,QACfC,IAAK,SACLC,UAAW,SACXC,UAAW,QACXC,YAAa,QACbC,OAAQ,SACRC,WAAY,SACZC,SAAU,QACVC,SAAU,SACVC,OAAQ,SACRC,OAAQ,SACRC,QAAS,QACTC,UAAW,QACXC,UAAW,QACXC,UAAW,QACXC,KAAM,SACNC,YAAa,MACbC,UAAW,QACX1mC,IAAK,SACL2mC,KAAM,MACNC,QAAS,SACTC,OAAQ,SACRC,UAAW,QACXC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,WAAY,SACZC,OAAQ,SACRC,YAAa,UAkBf,SAASC,KACP,OAAOvpC,KAAKwpC,MAAMC,WACpB,CAUA,SAASC,KACP,OAAO1pC,KAAKwpC,MAAMG,WACpB,CAEe,SAAS98B,GAAM+8B,GAC5B,IAAIlhC,EAAGzG,EAEP,OADA2nC,GAAUA,EAAS,IAAIC,OAAOpU,eACtB/sB,EAAIk3B,GAAMkK,KAAKF,KAAY3nC,EAAIyG,EAAE,GAAG7P,OAAQ6P,EAAIqhC,SAASrhC,EAAE,GAAI,IAAW,IAANzG,EAAU+nC,GAAKthC,GAC/E,IAANzG,EAAU,IAAIgoC,GAAIvhC,GAAM,EAAI,GAAQA,GAAK,EAAI,IAAOA,GAAM,EAAI,GAAY,IAAJA,GAAiB,GAAJA,IAAY,EAAU,GAAJA,EAAU,GACzG,IAANzG,EAAUioC,GAAKxhC,GAAK,GAAK,IAAMA,GAAK,GAAK,IAAMA,GAAK,EAAI,KAAW,IAAJA,GAAY,KACrE,IAANzG,EAAUioC,GAAKxhC,GAAM,GAAK,GAAQA,GAAK,EAAI,IAAOA,GAAM,EAAI,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAY,IAAJA,IAAkB,GAAJA,IAAY,EAAU,GAAJA,GAAY,KAClJ,OACCA,EAAIm3B,GAAaiK,KAAKF,IAAW,IAAIK,GAAIvhC,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI,IAC3DA,EAAIo3B,GAAagK,KAAKF,IAAW,IAAIK,GAAW,IAAPvhC,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAK,IAC/FA,EAAIq3B,GAAc+J,KAAKF,IAAWM,GAAKxhC,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAC3DA,EAAIs3B,GAAc8J,KAAKF,IAAWM,GAAY,IAAPxhC,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAKA,EAAE,KAC/FA,EAAIu3B,GAAa6J,KAAKF,IAAWO,GAAKzhC,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAK,IACpEA,EAAIw3B,GAAc4J,KAAKF,IAAWO,GAAKzhC,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAKA,EAAE,IACxEy3B,GAAM5iC,eAAeqsC,GAAUI,GAAK7J,GAAMyJ,IAC/B,gBAAXA,EAA2B,IAAIK,GAAIlkC,IAAKA,IAAKA,IAAK,GAClD,IACR,CAEA,SAASikC,GAAK7sC,GACZ,OAAO,IAAI8sC,GAAI9sC,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAU,IAAJA,EAAU,EAC1D,CAEA,SAAS+sC,GAAK5sC,EAAG8sC,EAAGzhC,EAAG5B,GAErB,OADIA,GAAK,IAAGzJ,EAAI8sC,EAAIzhC,EAAI5C,KACjB,IAAIkkC,GAAI3sC,EAAG8sC,EAAGzhC,EAAG5B,EAC1B,CASO,SAASyiC,GAAIlsC,EAAG8sC,EAAGzhC,EAAG0hC,GAC3B,OAA4B,IAArB1vC,UAAU9B,SARQyF,EAQkBhB,aAPxBgiC,KAAQhhC,EAAIuO,GAAMvO,IAChCA,EAEE,IAAI2rC,IADX3rC,EAAIA,EAAEkrC,OACWlsC,EAAGgB,EAAE8rC,EAAG9rC,EAAEqK,EAAGrK,EAAE+rC,SAFjB,IAAIJ,IAM6B,IAAIA,GAAI3sC,EAAG8sC,EAAGzhC,EAAc,MAAX0hC,EAAkB,EAAIA,GARlF,IAAoB/rC,CAS3B,CAEO,SAAS2rC,GAAI3sC,EAAG8sC,EAAGzhC,EAAG0hC,GAC3BrqC,KAAK1C,GAAKA,EACV0C,KAAKoqC,GAAKA,EACVpqC,KAAK2I,GAAKA,EACV3I,KAAKqqC,SAAWA,CAClB,CA8BA,SAASC,KACP,MAAO,IAAIC,GAAIvqC,KAAK1C,KAAKitC,GAAIvqC,KAAKoqC,KAAKG,GAAIvqC,KAAK2I,IAClD,CAMA,SAAS6hC,KACP,MAAMzjC,EAAI0jC,GAAOzqC,KAAKqqC,SACtB,MAAO,GAAS,IAANtjC,EAAU,OAAS,UAAU2jC,GAAO1qC,KAAK1C,OAAOotC,GAAO1qC,KAAKoqC,OAAOM,GAAO1qC,KAAK2I,KAAW,IAAN5B,EAAU,IAAM,KAAKA,MACrH,CAEA,SAAS0jC,GAAOJ,GACd,OAAOphC,MAAMohC,GAAW,EAAI/qC,KAAKkgB,IAAI,EAAGlgB,KAAK2I,IAAI,EAAGoiC,GACtD,CAEA,SAASK,GAAOzyC,GACd,OAAOqH,KAAKkgB,IAAI,EAAGlgB,KAAK2I,IAAI,IAAK3I,KAAKiE,MAAMtL,IAAU,GACxD,CAEA,SAASsyC,GAAItyC,GAEX,QADAA,EAAQyyC,GAAOzyC,IACC,GAAK,IAAM,IAAMA,EAAMgL,SAAS,GAClD,CAEA,SAASknC,GAAKnnC,EAAGiE,EAAGhF,EAAG8E,GAIrB,OAHIA,GAAK,EAAG/D,EAAIiE,EAAIhF,EAAI8D,IACf9D,GAAK,GAAKA,GAAK,EAAGe,EAAIiE,EAAIlB,IAC1BkB,GAAK,IAAGjE,EAAI+C,KACd,IAAI4kC,GAAI3nC,EAAGiE,EAAGhF,EAAG8E,EAC1B,CAEO,SAAS6jC,GAAWtsC,GACzB,GAAIA,aAAaqsC,GAAK,OAAO,IAAIA,GAAIrsC,EAAE0E,EAAG1E,EAAE2I,EAAG3I,EAAE2D,EAAG3D,EAAE+rC,SAEtD,GADM/rC,aAAaghC,KAAQhhC,EAAIuO,GAAMvO,KAChCA,EAAG,OAAO,IAAIqsC,GACnB,GAAIrsC,aAAaqsC,GAAK,OAAOrsC,EAE7B,IAAIhB,GADJgB,EAAIA,EAAEkrC,OACIlsC,EAAI,IACV8sC,EAAI9rC,EAAE8rC,EAAI,IACVzhC,EAAIrK,EAAEqK,EAAI,IACVV,EAAM3I,KAAK2I,IAAI3K,EAAG8sC,EAAGzhC,GACrB6W,EAAMlgB,KAAKkgB,IAAIliB,EAAG8sC,EAAGzhC,GACrB3F,EAAI+C,IACJkB,EAAIuY,EAAMvX,EACVhG,GAAKud,EAAMvX,GAAO,EAUtB,OATIhB,GACajE,EAAX1F,IAAMkiB,GAAU4qB,EAAIzhC,GAAK1B,EAAc,GAATmjC,EAAIzhC,GAC7ByhC,IAAM5qB,GAAU7W,EAAIrL,GAAK2J,EAAI,GAC5B3J,EAAI8sC,GAAKnjC,EAAI,EACvBA,GAAKhF,EAAI,GAAMud,EAAMvX,EAAM,EAAIuX,EAAMvX,EACrCjF,GAAK,IAELiE,EAAIhF,EAAI,GAAKA,EAAI,EAAI,EAAIe,EAEpB,IAAI2nC,GAAI3nC,EAAGiE,EAAGhF,EAAG3D,EAAE+rC,QAC5B,CAMA,SAASM,GAAI3nC,EAAGiE,EAAGhF,EAAGooC,GACpBrqC,KAAKgD,GAAKA,EACVhD,KAAKiH,GAAKA,EACVjH,KAAKiC,GAAKA,EACVjC,KAAKqqC,SAAWA,CAClB,CAsCA,SAASQ,GAAO5yC,GAEd,OADAA,GAASA,GAAS,GAAK,KACR,EAAIA,EAAQ,IAAMA,CACnC,CAEA,SAAS6yC,GAAO7yC,GACd,OAAOqH,KAAKkgB,IAAI,EAAGlgB,KAAK2I,IAAI,EAAGhQ,GAAS,GAC1C,CAGA,SAAS8yC,GAAQ/nC,EAAGgoC,EAAIC,GACtB,OAGY,KAHJjoC,EAAI,GAAKgoC,GAAMC,EAAKD,GAAMhoC,EAAI,GAChCA,EAAI,IAAMioC,EACVjoC,EAAI,IAAMgoC,GAAMC,EAAKD,IAAO,IAAMhoC,GAAK,GACvCgoC,EACR,CAlOA9L,GAAOI,GAAOzyB,GAAO,CACnByxB,IAAAA,CAAK4M,GACH,OAAOtzC,OAAOqF,OAAO,IAAI+C,KAAKkD,YAAalD,KAAMkrC,EACnD,EACAC,WAAAA,GACE,OAAOnrC,KAAKwpC,MAAM2B,aACpB,EACAZ,IAAKhB,GACLE,UAAWF,GACX6B,WAUF,WACE,OAAOprC,KAAKwpC,MAAM4B,YACpB,EAXEC,UAaF,WACE,OAAOT,GAAW5qC,MAAMqrC,WAC1B,EAdE1B,UAAWD,GACXzmC,SAAUymC,KAiEZxK,GAAO+K,GAAKT,GAAKrK,GAAOG,GAAO,CAC7BE,QAAAA,CAASl8B,GAEP,OADAA,EAAS,MAALA,EAAYk8B,GAAWlgC,KAAKu9B,IAAI2C,GAAUl8B,GACvC,IAAI2mC,GAAIjqC,KAAK1C,EAAIgG,EAAGtD,KAAKoqC,EAAI9mC,EAAGtD,KAAK2I,EAAIrF,EAAGtD,KAAKqqC,QAC1D,EACA9K,MAAAA,CAAOj8B,GAEL,OADAA,EAAS,MAALA,EAAYi8B,GAASjgC,KAAKu9B,IAAI0C,GAAQj8B,GACnC,IAAI2mC,GAAIjqC,KAAK1C,EAAIgG,EAAGtD,KAAKoqC,EAAI9mC,EAAGtD,KAAK2I,EAAIrF,EAAGtD,KAAKqqC,QAC1D,EACAb,GAAAA,GACE,OAAOxpC,IACT,EACAsrC,KAAAA,GACE,OAAO,IAAIrB,GAAIS,GAAO1qC,KAAK1C,GAAIotC,GAAO1qC,KAAKoqC,GAAIM,GAAO1qC,KAAK2I,GAAI8hC,GAAOzqC,KAAKqqC,SAC7E,EACAc,WAAAA,GACE,WAAgBnrC,KAAK1C,GAAK0C,KAAK1C,EAAI,YACnB0C,KAAKoqC,GAAKpqC,KAAKoqC,EAAI,QAC3B,IAAQpqC,KAAK2I,GAAK3I,KAAK2I,EAAI,OAC3B,GAAK3I,KAAKqqC,SAAWrqC,KAAKqqC,SAAW,CAC/C,EACAE,IAAKD,GACLb,UAAWa,GACXc,WASF,WACE,MAAO,IAAIb,GAAIvqC,KAAK1C,KAAKitC,GAAIvqC,KAAKoqC,KAAKG,GAAIvqC,KAAK2I,KAAK4hC,GAA+C,KAA1CthC,MAAMjJ,KAAKqqC,SAAW,EAAIrqC,KAAKqqC,WAC3F,EAVEV,UAAWa,GACXvnC,SAAUunC,MAyEZtL,GAAOyL,GAXA,SAAa3nC,EAAGiE,EAAGhF,EAAGooC,GAC3B,OAA4B,IAArB1vC,UAAU9B,OAAe+xC,GAAW5nC,GAAK,IAAI2nC,GAAI3nC,EAAGiE,EAAGhF,EAAc,MAAXooC,EAAkB,EAAIA,EACzF,EASiBlL,GAAOG,GAAO,CAC7BE,QAAAA,CAASl8B,GAEP,OADAA,EAAS,MAALA,EAAYk8B,GAAWlgC,KAAKu9B,IAAI2C,GAAUl8B,GACvC,IAAIqnC,GAAI3qC,KAAKgD,EAAGhD,KAAKiH,EAAGjH,KAAKiC,EAAIqB,EAAGtD,KAAKqqC,QAClD,EACA9K,MAAAA,CAAOj8B,GAEL,OADAA,EAAS,MAALA,EAAYi8B,GAASjgC,KAAKu9B,IAAI0C,GAAQj8B,GACnC,IAAIqnC,GAAI3qC,KAAKgD,EAAGhD,KAAKiH,EAAGjH,KAAKiC,EAAIqB,EAAGtD,KAAKqqC,QAClD,EACAb,GAAAA,GACE,IAAIxmC,EAAIhD,KAAKgD,EAAI,IAAqB,KAAdhD,KAAKgD,EAAI,GAC7BiE,EAAIgC,MAAMjG,IAAMiG,MAAMjJ,KAAKiH,GAAK,EAAIjH,KAAKiH,EACzChF,EAAIjC,KAAKiC,EACTgpC,EAAKhpC,GAAKA,EAAI,GAAMA,EAAI,EAAIA,GAAKgF,EACjC+jC,EAAK,EAAI/oC,EAAIgpC,EACjB,OAAO,IAAIhB,GACTc,GAAQ/nC,GAAK,IAAMA,EAAI,IAAMA,EAAI,IAAKgoC,EAAIC,GAC1CF,GAAQ/nC,EAAGgoC,EAAIC,GACfF,GAAQ/nC,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAKgoC,EAAIC,GACzCjrC,KAAKqqC,QAET,EACAiB,KAAAA,GACE,OAAO,IAAIX,GAAIE,GAAO7qC,KAAKgD,GAAI8nC,GAAO9qC,KAAKiH,GAAI6jC,GAAO9qC,KAAKiC,GAAIwoC,GAAOzqC,KAAKqqC,SAC7E,EACAc,WAAAA,GACE,OAAQ,GAAKnrC,KAAKiH,GAAKjH,KAAKiH,GAAK,GAAKgC,MAAMjJ,KAAKiH,KACzC,GAAKjH,KAAKiC,GAAKjC,KAAKiC,GAAK,GACzB,GAAKjC,KAAKqqC,SAAWrqC,KAAKqqC,SAAW,CAC/C,EACAgB,SAAAA,GACE,MAAMtkC,EAAI0jC,GAAOzqC,KAAKqqC,SACtB,MAAO,GAAS,IAANtjC,EAAU,OAAS,UAAU8jC,GAAO7qC,KAAKgD,OAAwB,IAAjB8nC,GAAO9qC,KAAKiH,QAA+B,IAAjB6jC,GAAO9qC,KAAKiC,MAAkB,IAAN8E,EAAU,IAAM,KAAKA,MACnI,KCzXF,IAAA1C,GAAezF,GAAK,IAAMA,ECmBnB,SAAS2sC,GAAM1sC,GACpB,OAAoB,KAAZA,GAAKA,GAAW2sC,GAAU,SAASzkC,EAAG4B,GAC5C,OAAOA,EAAI5B,EAbf,SAAqBA,EAAG4B,EAAG9J,GACzB,OAAOkI,EAAIzH,KAAKu9B,IAAI91B,EAAGlI,GAAI8J,EAAIrJ,KAAKu9B,IAAIl0B,EAAG9J,GAAKkI,EAAGlI,EAAI,EAAIA,EAAG,SAASxB,GACrE,OAAOiC,KAAKu9B,IAAI91B,EAAI1J,EAAIsL,EAAG9J,EAC7B,CACF,CASmB4sC,CAAY1kC,EAAG4B,EAAG9J,GAAKwF,GAAS4E,MAAMlC,GAAK4B,EAAI5B,EAChE,CACF,CAEe,SAASykC,GAAQzkC,EAAG4B,GACjC,IAAIvF,EAAIuF,EAAI5B,EACZ,OAAO3D,EAzBT,SAAgB2D,EAAG3D,GACjB,OAAO,SAAS/F,GACd,OAAO0J,EAAI1J,EAAI+F,CACjB,CACF,CAqBasoC,CAAO3kC,EAAG3D,GAAKiB,GAAS4E,MAAMlC,GAAK4B,EAAI5B,EACpD,CCvBA,IAAAyiC,GAAe,SAAUmC,EAAS9sC,GAChC,IAAIgO,EAAQ0+B,GAAM1sC,GAElB,SAAS2qC,EAAI3V,EAAO5C,GAClB,IAAI3zB,EAAIuP,GAAOgnB,EAAQ+X,GAAS/X,IAAQv2B,GAAI2zB,EAAM2a,GAAS3a,IAAM3zB,GAC7D8sC,EAAIv9B,EAAMgnB,EAAMuW,EAAGnZ,EAAImZ,GACvBzhC,EAAIkE,EAAMgnB,EAAMlrB,EAAGsoB,EAAItoB,GACvB0hC,EAAUmB,GAAQ3X,EAAMwW,QAASpZ,EAAIoZ,SACzC,OAAO,SAAShtC,GAKd,OAJAw2B,EAAMv2B,EAAIA,EAAED,GACZw2B,EAAMuW,EAAIA,EAAE/sC,GACZw2B,EAAMlrB,EAAIA,EAAEtL,GACZw2B,EAAMwW,QAAUA,EAAQhtC,GACjBw2B,EAAQ,EACjB,CACF,CAIA,OAFA2V,EAAI+B,MAAQI,EAELnC,CACT,CApBe,CAoBZ,GCzBY,SAAAqC,GAAS9kC,EAAG4B,GACpBA,IAAGA,EAAI,IACZ,IAEIxN,EAFAgC,EAAI4J,EAAIzH,KAAK2I,IAAIU,EAAE9P,OAAQkO,EAAElO,QAAU,EACvCmO,EAAI2B,EAAE7N,QAEV,OAAO,SAASuC,GACd,IAAKlC,EAAI,EAAGA,EAAIgC,IAAKhC,EAAG6L,EAAE7L,GAAK4L,EAAE5L,IAAM,EAAIkC,GAAKsL,EAAExN,GAAKkC,EACvD,OAAO2J,CACT,CACF,CCFO,SAAS8kC,GAAa/kC,EAAG4B,GAC9B,IAIIxN,EAJA4wC,EAAKpjC,EAAIA,EAAE9P,OAAS,EACpBmzC,EAAKjlC,EAAIzH,KAAK2I,IAAI8jC,EAAIhlC,EAAElO,QAAU,EAClC+F,EAAI,IAAI/E,MAAMmyC,GACdhlC,EAAI,IAAInN,MAAMkyC,GAGlB,IAAK5wC,EAAI,EAAGA,EAAI6wC,IAAM7wC,EAAGyD,EAAEzD,GAAKlD,GAAM8O,EAAE5L,GAAIwN,EAAExN,IAC9C,KAAOA,EAAI4wC,IAAM5wC,EAAG6L,EAAE7L,GAAKwN,EAAExN,GAE7B,OAAO,SAASkC,GACd,IAAKlC,EAAI,EAAGA,EAAI6wC,IAAM7wC,EAAG6L,EAAE7L,GAAKyD,EAAEzD,GAAGkC,GACrC,OAAO2J,CACT,CACF,CCrBe,SAAAilC,GAASllC,EAAG4B,GACzB,IAAIvF,EAAI,IAAI+Q,KACZ,OAAOpN,GAAKA,EAAG4B,GAAKA,EAAG,SAAStL,GAC9B,OAAO+F,EAAE8oC,QAAQnlC,GAAK,EAAI1J,GAAKsL,EAAItL,GAAI+F,CACzC,CACF,CCLe,SAAA+oC,GAASplC,EAAG4B,GACzB,OAAO5B,GAAKA,EAAG4B,GAAKA,EAAG,SAAStL,GAC9B,OAAO0J,GAAK,EAAI1J,GAAKsL,EAAItL,CAC3B,CACF,CCFe,SAAA5D,GAASsN,EAAG4B,GACzB,IAEIrF,EAFAnI,EAAI,CAAA,EACJ6L,EAAI,CAAA,EAMR,IAAK1D,KAHK,OAANyD,GAA2B,iBAANA,IAAgBA,EAAI,CAAA,GACnC,OAAN4B,GAA2B,iBAANA,IAAgBA,EAAI,CAAA,GAEnCA,EACJrF,KAAKyD,EACP5L,EAAEmI,GAAKrL,GAAM8O,EAAEzD,GAAIqF,EAAErF,IAErB0D,EAAE1D,GAAKqF,EAAErF,GAIb,OAAO,SAASjG,GACd,IAAKiG,KAAKnI,EAAG6L,EAAE1D,GAAKnI,EAAEmI,GAAGjG,GACzB,OAAO2J,CACT,CACF,CCpBA,IAAIolC,GAAM,8CACNC,GAAM,IAAIh4B,OAAO+3B,GAAIj8B,OAAQ,KAclB,SAAAm8B,GAASvlC,EAAG4B,GACzB,IACI4jC,EACAC,EACAC,EAHAC,EAAKN,GAAI73B,UAAY83B,GAAI93B,UAAY,EAIrCpZ,GAAI,EACJ8L,EAAI,GACJ0lC,EAAI,GAMR,IAHA5lC,GAAQ,GAAI4B,GAAQ,IAGZ4jC,EAAKH,GAAItC,KAAK/iC,MACdylC,EAAKH,GAAIvC,KAAKnhC,MACf8jC,EAAKD,EAAG1zC,OAAS4zC,IACpBD,EAAK9jC,EAAE7N,MAAM4xC,EAAID,GACbxlC,EAAE9L,GAAI8L,EAAE9L,IAAMsxC,EACbxlC,IAAI9L,GAAKsxC,IAEXF,EAAKA,EAAG,OAASC,EAAKA,EAAG,IACxBvlC,EAAE9L,GAAI8L,EAAE9L,IAAMqxC,EACbvlC,IAAI9L,GAAKqxC,GAEdvlC,IAAI9L,GAAK,KACTwxC,EAAEzzC,KAAK,CAACiC,EAAGA,EAAGyD,EAAGi9B,GAAO0Q,EAAIC,MAE9BE,EAAKL,GAAI93B,UAYX,OARIm4B,EAAK/jC,EAAE9P,SACT4zC,EAAK9jC,EAAE7N,MAAM4xC,GACTzlC,EAAE9L,GAAI8L,EAAE9L,IAAMsxC,EACbxlC,IAAI9L,GAAKsxC,GAKTxlC,EAAEpO,OAAS,EAAK8zC,EAAE,GA7C3B,SAAahkC,GACX,OAAO,SAAStL,GACd,OAAOsL,EAAEtL,GAAK,EAChB,CACF,CA0CQuvC,CAAID,EAAE,GAAG/tC,GApDjB,SAAc+J,GACZ,OAAO,WACL,OAAOA,CACT,CACF,CAiDQizB,CAAKjzB,IACJA,EAAIgkC,EAAE9zC,OAAQ,SAASwE,GACtB,IAAK,IAAWiB,EAAPnD,EAAI,EAAMA,EAAIwN,IAAKxN,EAAG8L,GAAG3I,EAAIquC,EAAExxC,IAAIA,GAAKmD,EAAEM,EAAEvB,GACrD,OAAO4J,EAAEse,KAAK,GAChB,EACR,CCrDe,SAAAsnB,GAAS9lC,EAAG4B,GACzB,IAAkB3B,EAAd3J,SAAWsL,EACf,OAAY,MAALA,GAAmB,YAANtL,EAAkBgH,GAASsE,IAClC,WAANtL,EAAiBw+B,GACZ,WAANx+B,GAAmB2J,EAAI6F,GAAMlE,KAAOA,EAAI3B,EAAGwiC,IAAO8C,GAClD3jC,aAAakE,GAAQ28B,GACrB7gC,aAAawL,KAAO24B,GNLrB,SAAuBluC,GAC5B,OAAO0U,YAAYC,OAAO3U,MAAQA,aAAa4U,SACjD,CMIQu5B,CAAcpkC,GAAKkjC,GACnBhyC,MAAMC,QAAQ6O,GAAKmjC,GACE,mBAAdnjC,EAAEnQ,SAAgD,mBAAfmQ,EAAE1F,UAA2BgG,MAAMN,GAAKlP,GAClFoiC,IAAQ90B,EAAG4B,EACnB,CCrBe,SAAAqkC,GAASjmC,EAAG4B,GACzB,OAAO5B,GAAKA,EAAG4B,GAAKA,EAAG,SAAStL,GAC9B,OAAOiC,KAAKiE,MAAMwD,GAAK,EAAI1J,GAAKsL,EAAItL,EACtC,CACF,CCFe,SAAS4vC,GAAUJ,EAAax9B,QAC9BzV,IAAXyV,IAAsBA,EAASw9B,EAAaA,EAAc50C,IAE9D,IADA,IAAIkD,EAAI,EAAGgC,EAAIkS,EAAOxW,OAAS,EAAG28B,EAAInmB,EAAO,GAAI69B,EAAI,IAAIrzC,MAAMsD,EAAI,EAAI,EAAIA,GACpEhC,EAAIgC,GAAG+vC,EAAE/xC,GAAK0xC,EAAYrX,EAAGA,EAAInmB,IAASlU,IACjD,OAAO,SAASkC,GACd,IAAIlC,EAAImE,KAAKkgB,IAAI,EAAGlgB,KAAK2I,IAAI9K,EAAI,EAAGmC,KAAK+D,MAAMhG,GAAKF,KACpD,OAAO+vC,EAAE/xC,GAAGkC,EAAIlC,EAClB,CACF,CCVe,SAAS0gC,GAAOj9B,GAC7B,OAAQA,CACV,CCGA,IAAIqoB,GAAO,CAAC,EAAG,GAER,SAAS3X,GAAS1Q,GACvB,OAAOA,CACT,CAEA,SAASuuC,GAAUpmC,EAAG4B,GACpB,OAAQA,GAAM5B,GAAKA,GACb,SAASnI,GAAK,OAAQA,EAAImI,GAAK4B,CAAG,ECb3B,SAAmB/J,GAChC,OAAO,WACL,OAAOA,CACT,CACF,CDUQyF,CAAS4E,MAAMN,GAAK5C,IAAM,GAClC,CAUA,SAASqnC,GAAMluB,EAAQ6b,EAAO8R,GAC5B,IAAIQ,EAAKnuB,EAAO,GAAIouB,EAAKpuB,EAAO,GAAIwf,EAAK3D,EAAM,GAAI4D,EAAK5D,EAAM,GAG9D,OAFIuS,EAAKD,GAAIA,EAAKF,GAAUG,EAAID,GAAK3O,EAAKmO,EAAYlO,EAAID,KACrD2O,EAAKF,GAAUE,EAAIC,GAAK5O,EAAKmO,EAAYnO,EAAIC,IAC3C,SAAS//B,GAAK,OAAO8/B,EAAG2O,EAAGzuC,GAAK,CACzC,CAEA,SAAS2uC,GAAQruB,EAAQ6b,EAAO8R,GAC9B,IAAI1nC,EAAI7F,KAAK2I,IAAIiX,EAAOrmB,OAAQkiC,EAAMliC,QAAU,EAC5CuK,EAAI,IAAIvJ,MAAMsL,GACd7H,EAAI,IAAIzD,MAAMsL,GACdhK,GAAI,EAQR,IALI+jB,EAAO/Z,GAAK+Z,EAAO,KACrBA,EAASA,EAAOpkB,QAAQoiC,UACxBnC,EAAQA,EAAMjgC,QAAQoiC,aAGf/hC,EAAIgK,GACX/B,EAAEjI,GAAKgyC,GAAUjuB,EAAO/jB,GAAI+jB,EAAO/jB,EAAI,IACvCmC,EAAEnC,GAAK0xC,EAAY9R,EAAM5/B,GAAI4/B,EAAM5/B,EAAI,IAGzC,OAAO,SAASyD,GACd,IAAIzD,EAAIqyC,GAAOtuB,EAAQtgB,EAAG,EAAGuG,GAAK,EAClC,OAAO7H,EAAEnC,GAAGiI,EAAEjI,GAAGyD,GACnB,CACF,CAEO,SAAS0/B,GAAKnuB,EAAQD,GAC3B,OAAOA,EACFgP,OAAO/O,EAAO+O,UACd6b,MAAM5qB,EAAO4qB,SACb8R,YAAY18B,EAAO08B,eACnBvB,MAAMn7B,EAAOm7B,SACblN,QAAQjuB,EAAOiuB,UACtB,CAEO,SAASqP,KACd,IAGI9hC,EACA+hC,EACAtP,EAEA6O,EACA1oC,EACA2P,EATAgL,EAAS+H,GACT8T,EAAQ9T,GACR4lB,EAAcc,GAIdrC,EAAQh8B,GAKZ,SAASwvB,IACP,IAAI3hC,EAAImC,KAAK2I,IAAIiX,EAAOrmB,OAAQkiC,EAAMliC,QAItC,OAHIyyC,IAAUh8B,KAAUg8B,EA7D5B,SAAiBvkC,EAAG4B,GAClB,IAAItL,EAEJ,OADI0J,EAAI4B,IAAGtL,EAAI0J,EAAGA,EAAI4B,EAAGA,EAAItL,GACtB,SAASuB,GAAK,OAAOU,KAAKkgB,IAAIzY,EAAGzH,KAAK2I,IAAIU,EAAG/J,GAAK,CAC3D,CAyDoCgvC,CAAQ1uB,EAAO,GAAIA,EAAO/hB,EAAI,KAC9D8vC,EAAY9vC,EAAI,EAAIowC,GAAUH,GAC9B7oC,EAAS2P,EAAQ,KACVmqB,CACT,CAEA,SAASA,EAAMz/B,GACb,OAAY,MAALA,GAAaqK,MAAMrK,GAAKA,GAAKw/B,GAAW75B,IAAWA,EAAS0oC,EAAU/tB,EAAOjR,IAAItC,GAAYovB,EAAO8R,KAAelhC,EAAU2/B,EAAM1sC,IAC5I,CA8BA,OA5BAy/B,EAAMwP,OAAS,SAAShvC,GACtB,OAAOysC,EAAMoC,GAAax5B,IAAUA,EAAQ+4B,EAAUlS,EAAO7b,EAAOjR,IAAItC,GAAYwgC,MAAqBttC,IAC3G,EAEAw/B,EAAMnf,OAAS,SAASjf,GACtB,OAAOtF,UAAU9B,QAAUqmB,EAASrlB,MAAMgK,KAAK5D,EAAG47B,IAASiD,KAAa5f,EAAOpkB,OACjF,EAEAujC,EAAMtD,MAAQ,SAAS96B,GACrB,OAAOtF,UAAU9B,QAAUkiC,EAAQlhC,MAAMgK,KAAK5D,GAAI6+B,KAAa/D,EAAMjgC,OACvE,EAEAujC,EAAMW,WAAa,SAAS/+B,GAC1B,OAAO86B,EAAQlhC,MAAMgK,KAAK5D,GAAI4sC,EAAcG,GAAkBlO,GAChE,EAEAT,EAAMiN,MAAQ,SAASrrC,GACrB,OAAOtF,UAAU9B,QAAUyyC,IAAQrrC,GAAWqP,GAAUwvB,KAAawM,IAAUh8B,EACjF,EAEA+uB,EAAMwO,YAAc,SAAS5sC,GAC3B,OAAOtF,UAAU9B,QAAUg0C,EAAc5sC,EAAG6+B,KAAa+N,CAC3D,EAEAxO,EAAMD,QAAU,SAASn+B,GACvB,OAAOtF,UAAU9B,QAAUulC,EAAUn+B,EAAGo+B,GAASD,CACnD,EAEO,SAAS/gC,EAAGywC,GAEjB,OADAniC,EAAYtO,EAAGqwC,EAAcI,EACtBhP,GACT,CACF,CAEe,SAASiP,KACtB,OAAON,KAAcn+B,GAAUA,GACjC,CEnHO,SAAS0+B,GAAmBpvC,EAAGsF,GACpC,IAAK/I,GAAKyD,EAAIsF,EAAItF,EAAEqvC,cAAc/pC,EAAI,GAAKtF,EAAEqvC,iBAAiB7zC,QAAQ,MAAQ,EAAG,OAAO,KACxF,IAAIe,EAAG+yC,EAActvC,EAAE9D,MAAM,EAAGK,GAIhC,MAAO,CACL+yC,EAAYr1C,OAAS,EAAIq1C,EAAY,GAAKA,EAAYpzC,MAAM,GAAKozC,GAChEtvC,EAAE9D,MAAMK,EAAI,GAEjB,CCjBe,SAAAgzC,GAASvvC,GACtB,OAAOA,EAAIovC,GAAmB1uC,KAAKoC,IAAI9C,KAASA,EAAE,GAAKmH,GACzD,CCHA,ICCWqoC,GDDPC,GAAK,2EAEM,SAASC,GAAgBC,GACtC,KAAMC,EAAQH,GAAGvE,KAAKyE,IAAa,MAAM,IAAIrtC,MAAM,mBAAqBqtC,GACxE,IAAIC,EACJ,OAAO,IAAIC,GAAgB,CACzBxhC,KAAMuhC,EAAM,GACZ9/B,MAAO8/B,EAAM,GACb7mC,KAAM6mC,EAAM,GACZnjC,OAAQmjC,EAAM,GACd5S,KAAM4S,EAAM,GACZ1wC,MAAO0wC,EAAM,GACbE,MAAOF,EAAM,GACbG,UAAWH,EAAM,IAAMA,EAAM,GAAG1zC,MAAM,GACtC+uC,KAAM2E,EAAM,GACZljC,KAAMkjC,EAAM,KAEhB,CAIO,SAASC,GAAgBF,GAC9BvuC,KAAKiN,UAA0BrT,IAAnB20C,EAAUthC,KAAqB,IAAMshC,EAAUthC,KAAO,GAClEjN,KAAK0O,WAA4B9U,IAApB20C,EAAU7/B,MAAsB,IAAM6/B,EAAU7/B,MAAQ,GACrE1O,KAAK2H,UAA0B/N,IAAnB20C,EAAU5mC,KAAqB,IAAM4mC,EAAU5mC,KAAO,GAClE3H,KAAKqL,YAA8BzR,IAArB20C,EAAUljC,OAAuB,GAAKkjC,EAAUljC,OAAS,GACvErL,KAAK47B,OAAS2S,EAAU3S,KACxB57B,KAAKlC,WAA4BlE,IAApB20C,EAAUzwC,WAAsBlE,GAAa20C,EAAUzwC,MACpEkC,KAAK0uC,QAAUH,EAAUG,MACzB1uC,KAAK2uC,eAAoC/0C,IAAxB20C,EAAUI,eAA0B/0C,GAAa20C,EAAUI,UAC5E3uC,KAAK6pC,OAAS0E,EAAU1E,KACxB7pC,KAAKsL,UAA0B1R,IAAnB20C,EAAUjjC,KAAqB,GAAKijC,EAAUjjC,KAAO,EACnE,CE/Be,SAAAsjC,GAAShwC,EAAGsF,GACzB,IAAId,EAAI4qC,GAAmBpvC,EAAGsF,GAC9B,IAAKd,EAAG,OAAOxE,EAAI,GACnB,IAAIsvC,EAAc9qC,EAAE,GAChB+qC,EAAW/qC,EAAE,GACjB,OAAO+qC,EAAW,EAAI,KAAO,IAAIt0C,OAAOs0C,GAAU5oB,KAAK,KAAO2oB,EACxDA,EAAYr1C,OAASs1C,EAAW,EAAID,EAAYpzC,MAAM,EAAGqzC,EAAW,GAAK,IAAMD,EAAYpzC,MAAMqzC,EAAW,GAC5GD,EAAc,IAAIr0C,MAAMs0C,EAAWD,EAAYr1C,OAAS,GAAG0sB,KAAK,IACxE,CFUA+oB,GAAgBzoC,UAAY4oC,GAAgB5oC,UAe5C4oC,GAAgB5oC,UAAU5C,SAAW,WACnC,OAAOjD,KAAKiN,KACNjN,KAAK0O,MACL1O,KAAK2H,KACL3H,KAAKqL,QACJrL,KAAK47B,KAAO,IAAM,UACHhiC,IAAfoG,KAAKlC,MAAsB,GAAKwB,KAAKkgB,IAAI,EAAgB,EAAbxf,KAAKlC,SACjDkC,KAAK0uC,MAAQ,IAAM,UACA90C,IAAnBoG,KAAK2uC,UAA0B,GAAK,IAAMrvC,KAAKkgB,IAAI,EAAoB,EAAjBxf,KAAK2uC,aAC3D3uC,KAAK6pC,KAAO,IAAM,IACnB7pC,KAAKsL,IACb,EG1CA,IAAAujC,GAAe,CACb,IAAK,CAACjwC,EAAGsF,KAAW,IAAJtF,GAASkwC,QAAQ5qC,GACjCyE,EAAM/J,GAAMU,KAAKiE,MAAM3E,GAAGqE,SAAS,GACnC+D,EAAMpI,GAAMA,EAAI,GAChBwE,ELRa,SAASxE,GACtB,OAAOU,KAAKoC,IAAI9C,EAAIU,KAAKiE,MAAM3E,KAAO,KAChCA,EAAEmwC,eAAe,MAAMxZ,QAAQ,KAAM,IACrC32B,EAAEqE,SAAS,GACnB,EKKE7F,EAAK,CAACwB,EAAGsF,IAAMtF,EAAEqvC,cAAc/pC,GAC/Bm3B,EAAK,CAACz8B,EAAGsF,IAAMtF,EAAEkwC,QAAQ5qC,GACzBkmC,EAAK,CAACxrC,EAAGsF,IAAMtF,EAAEowC,YAAY9qC,GAC7B5F,EAAMM,GAAMU,KAAKiE,MAAM3E,GAAGqE,SAAS,GACnCiB,EAAK,CAACtF,EAAGsF,IAAM0qC,GAAkB,IAAJhwC,EAASsF,GACtC5G,EAAKsxC,GACL3nC,EFXa,SAASrI,EAAGsF,GACzB,IAAId,EAAI4qC,GAAmBpvC,EAAGsF,GAC9B,IAAKd,EAAG,OAAOxE,EAAI,GACnB,IAAIsvC,EAAc9qC,EAAE,GAChB+qC,EAAW/qC,EAAE,GACbjI,EAAIgzC,GAAYC,GAAuE,EAAtD9uC,KAAKkgB,KAAI,EAAIlgB,KAAK2I,IAAI,EAAG3I,KAAK+D,MAAM8qC,EAAW,MAAY,EAC5FhxC,EAAI+wC,EAAYr1C,OACpB,OAAOsC,IAAMgC,EAAI+wC,EACX/yC,EAAIgC,EAAI+wC,EAAc,IAAIr0C,MAAMsB,EAAIgC,EAAI,GAAGooB,KAAK,KAChDpqB,EAAI,EAAI+yC,EAAYpzC,MAAM,EAAGK,GAAK,IAAM+yC,EAAYpzC,MAAMK,GAC1D,KAAO,IAAItB,MAAM,EAAIsB,GAAGoqB,KAAK,KAAOyoB,GAAmBpvC,EAAGU,KAAKkgB,IAAI,EAAGtb,EAAI/I,EAAI,IAAI,EAC1F,EECE8zC,EAAMrwC,GAAMU,KAAKiE,MAAM3E,GAAGqE,SAAS,IAAIzH,cACvCoD,EAAMA,GAAMU,KAAKiE,MAAM3E,GAAGqE,SAAS,KCjBtB,SAAAisC,GAAStwC,GACtB,OAAOA,CACT,CCOA,ICPIuwC,GACOvF,GACAwF,GDKPnhC,GAAMpU,MAAMgM,UAAUoI,IACtBohC,GAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAEhE,SAAAC,GAASH,GACtB,IEbsBI,EAAUC,EFa5BnwB,OAA4BzlB,IAApBu1C,EAAOI,eAA+C31C,IAArBu1C,EAAOK,UAA0BlgC,IEbxDigC,EFa+EthC,GAAIzQ,KAAK2xC,EAAOI,SAAUj1C,QEb/Fk1C,EFawGL,EAAOK,UAAY,GEZpJ,SAASv3C,EAAO6F,GAOrB,IANA,IAAI3C,EAAIlD,EAAMY,OACVwE,EAAI,GACJ8H,EAAI,EACJilC,EAAImF,EAAS,GACb12C,EAAS,EAENsC,EAAI,GAAKivC,EAAI,IACdvxC,EAASuxC,EAAI,EAAItsC,IAAOssC,EAAI9qC,KAAKkgB,IAAI,EAAG1hB,EAAQjF,IACpDwE,EAAEnE,KAAKjB,EAAMw3C,UAAUt0C,GAAKivC,EAAGjvC,EAAIivC,OAC9BvxC,GAAUuxC,EAAI,GAAKtsC,KACxBssC,EAAImF,EAASpqC,GAAKA,EAAI,GAAKoqC,EAAS12C,QAGtC,OAAOwE,EAAE6/B,UAAU3X,KAAKiqB,EAC1B,GFFIE,OAAqC91C,IAApBu1C,EAAOQ,SAAyB,GAAKR,EAAOQ,SAAS,GAAK,GAC3EC,OAAqCh2C,IAApBu1C,EAAOQ,SAAyB,GAAKR,EAAOQ,SAAS,GAAK,GAC3EE,OAA6Bj2C,IAAnBu1C,EAAOU,QAAwB,IAAMV,EAAOU,QAAU,GAChEC,OAA+Bl2C,IAApBu1C,EAAOW,SAAyBxgC,GGjBlC,SAASwgC,GACtB,OAAO,SAAS73C,GACd,OAAOA,EAAMs9B,QAAQ,SAAU,SAASp6B,GACtC,OAAO20C,GAAU30C,EACnB,EACF,CACF,CHW4D40C,CAAe9hC,GAAIzQ,KAAK2xC,EAAOW,SAAUr3C,SAC/FgC,OAA6Bb,IAAnBu1C,EAAO10C,QAAwB,IAAM00C,EAAO10C,QAAU,GAChEu1C,OAAyBp2C,IAAjBu1C,EAAOa,MAAsB,IAAMb,EAAOa,MAAQ,GAC1DC,OAAqBr2C,IAAfu1C,EAAOc,IAAoB,MAAQd,EAAOc,IAAM,GAE1D,SAASC,EAAU3B,GAGjB,IAAIthC,GAFJshC,EAAYD,GAAgBC,IAEPthC,KACjByB,EAAQ6/B,EAAU7/B,MAClB/G,EAAO4mC,EAAU5mC,KACjB0D,EAASkjC,EAAUljC,OACnBuwB,EAAO2S,EAAU3S,KACjB99B,EAAQywC,EAAUzwC,MAClB4wC,EAAQH,EAAUG,MAClBC,EAAYJ,EAAUI,UACtB9E,EAAO0E,EAAU1E,KACjBv+B,EAAOijC,EAAUjjC,KAGR,MAATA,GAAcojC,GAAQ,EAAMpjC,EAAO,KAG7BujC,GAAYvjC,UAAqB1R,IAAd+0C,IAA4BA,EAAY,IAAK9E,GAAO,EAAMv+B,EAAO,MAG1FswB,GAAkB,MAAT3uB,GAA0B,MAAVyB,KAAgBktB,GAAO,EAAM3uB,EAAO,IAAKyB,EAAQ,KAI9E,IAAIyhC,EAAoB,MAAX9kC,EAAiBqkC,EAA4B,MAAXrkC,GAAkB,SAAS2K,KAAK1K,GAAQ,IAAMA,EAAKmqB,cAAgB,GAC9G2a,EAAoB,MAAX/kC,EAAiBukC,EAAiB,OAAO55B,KAAK1K,GAAQ7Q,EAAU,GAKzE41C,EAAaxB,GAAYvjC,GACzBglC,EAAc,aAAat6B,KAAK1K,GAUpC,SAASs+B,EAAO3xC,GACd,IAEIkD,EAAGgC,EAAG6J,EAFNupC,EAAcJ,EACdK,EAAcJ,EAGlB,GAAa,MAAT9kC,EACFklC,EAAcH,EAAWp4C,GAASu4C,EAClCv4C,EAAQ,OACH,CAIL,IAAIw4C,GAHJx4C,GAASA,GAGmB,GAAK,EAAIA,EAAQ,EAiB7C,GAdAA,EAAQgR,MAAMhR,GAASg4C,EAAMI,EAAW/wC,KAAKoC,IAAIzJ,GAAQ02C,GAGrD9E,IAAM5xC,EIjFH,SAASgP,GACtB3K,EAAK,IAAK,IAAkC4N,EAA9B/M,EAAI8J,EAAEpO,OAAQsC,EAAI,EAAG8O,GAAK,EAAQ9O,EAAIgC,IAAKhC,EACvD,OAAQ8L,EAAE9L,IACR,IAAK,IAAK8O,EAAKC,EAAK/O,EAAG,MACvB,IAAK,IAAgB,IAAP8O,IAAUA,EAAK9O,GAAG+O,EAAK/O,EAAG,MACxC,QAAS,KAAM8L,EAAE9L,GAAI,MAAMmB,EAAS2N,EAAK,IAAGA,EAAK,GAGrD,OAAOA,EAAK,EAAIhD,EAAEnM,MAAM,EAAGmP,GAAMhD,EAAEnM,MAAMoP,EAAK,GAAKjD,CACrD,CJwE0BypC,CAAWz4C,IAGzBw4C,GAA4B,KAAVx4C,GAAwB,MAAT0P,IAAc8oC,GAAgB,GAGnEF,GAAeE,EAA0B,MAAT9oC,EAAeA,EAAOqoC,EAAkB,MAATroC,GAAyB,MAATA,EAAe,GAAKA,GAAQ4oC,EAC3GC,GAAwB,MAATllC,EAAe+jC,GAAS,EAAIjB,GAAiB,GAAK,IAAMoC,GAAeC,GAA0B,MAAT9oC,EAAe,IAAM,IAIxH2oC,EAEF,IADAn1C,GAAI,EAAIgC,EAAIlF,EAAMY,SACTsC,EAAIgC,GACX,GAA6B,IAAzB6J,EAAI/O,EAAMgB,WAAWkC,KAAc6L,EAAI,GAAI,CAC7CwpC,GAAqB,KAANxpC,EAAW6oC,EAAU53C,EAAM6C,MAAMK,EAAI,GAAKlD,EAAM6C,MAAMK,IAAMq1C,EAC3Ev4C,EAAQA,EAAM6C,MAAM,EAAGK,GACvB,KACF,CAGN,CAGIuzC,IAAU9S,IAAM3jC,EAAQonB,EAAMpnB,EAAOwnB,MAGzC,IAAI5mB,EAAS03C,EAAY13C,OAASZ,EAAMY,OAAS23C,EAAY33C,OACzD+V,EAAU/V,EAASiF,EAAQ,IAAIjE,MAAMiE,EAAQjF,EAAS,GAAG0sB,KAAKtY,GAAQ,GAM1E,OAHIyhC,GAAS9S,IAAM3jC,EAAQonB,EAAMzQ,EAAU3W,EAAO2W,EAAQ/V,OAASiF,EAAQ0yC,EAAY33C,OAAS4mB,KAAW7Q,EAAU,IAG7GF,GACN,IAAK,IAAKzW,EAAQs4C,EAAct4C,EAAQu4C,EAAc5hC,EAAS,MAC/D,IAAK,IAAK3W,EAAQs4C,EAAc3hC,EAAU3W,EAAQu4C,EAAa,MAC/D,IAAK,IAAKv4C,EAAQ2W,EAAQ9T,MAAM,EAAGjC,EAAS+V,EAAQ/V,QAAU,GAAK03C,EAAct4C,EAAQu4C,EAAc5hC,EAAQ9T,MAAMjC,GAAS,MAC9H,QAASZ,EAAQ2W,EAAU2hC,EAAct4C,EAAQu4C,EAGnD,OAAOV,EAAS73C,EAClB,CAMA,OAtEA02C,OAA0B/0C,IAAd+0C,EAA0B,EAChC,SAAS34B,KAAK1K,GAAQhM,KAAKkgB,IAAI,EAAGlgB,KAAK2I,IAAI,GAAI0mC,IAC/CrvC,KAAKkgB,IAAI,EAAGlgB,KAAK2I,IAAI,GAAI0mC,IAgE/B/E,EAAO3mC,SAAW,WAChB,OAAOsrC,EAAY,EACrB,EAEO3E,CACT,CAYA,MAAO,CACLA,OAAQsG,EACRd,aAZF,SAAsBb,EAAWt2C,GAC/B,IAAIojC,EAAI6U,IAAW3B,EAAYD,GAAgBC,IAAsBjjC,KAAO,IAAKijC,IAC7EnxC,EAAiE,EAA7DkC,KAAKkgB,KAAI,EAAIlgB,KAAK2I,IAAI,EAAG3I,KAAK+D,MAAM8qC,GAASl2C,GAAS,KAC1DqL,EAAIhE,KAAKu9B,IAAI,IAAKz/B,GAClB+yC,EAASd,GAAS,EAAIjyC,EAAI,GAC9B,OAAO,SAASnF,GACd,OAAOojC,EAAE/3B,EAAIrL,GAASk4C,CACxB,CACF,EAMF,CKhJe,SAASQ,GAAW9c,EAAOD,EAAMkC,EAAOyY,GACrD,IACII,EADA3T,EAAOoC,GAASvJ,EAAOD,EAAMkC,GAGjC,QADAyY,EAAYD,GAA6B,MAAbC,EAAoB,KAAOA,IACrCjjC,MAChB,IAAK,IACH,IAAIrT,EAAQqH,KAAKkgB,IAAIlgB,KAAKoC,IAAImyB,GAAQv0B,KAAKoC,IAAIkyB,IAE/C,OAD2B,MAAvB2a,EAAUI,WAAsB1lC,MAAM0lC,ECRjC,SAAS3T,EAAM/iC,GAC5B,OAAOqH,KAAKkgB,IAAI,EAAgE,EAA7DlgB,KAAKkgB,KAAI,EAAIlgB,KAAK2I,IAAI,EAAG3I,KAAK+D,MAAM8qC,GAASl2C,GAAS,KAAWk2C,GAAS7uC,KAAKoC,IAAIs5B,IACxG,CDM4D4V,CAAgB5V,EAAM/iC,MAASs2C,EAAUI,UAAYA,GACpGS,GAAab,EAAWt2C,GAEjC,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACwB,MAAvBs2C,EAAUI,WAAsB1lC,MAAM0lC,EEhBjC,SAAS3T,EAAMxb,GAE5B,OADAwb,EAAO17B,KAAKoC,IAAIs5B,GAAOxb,EAAMlgB,KAAKoC,IAAI8d,GAAOwb,EACtC17B,KAAKkgB,IAAI,EAAG2uB,GAAS3uB,GAAO2uB,GAASnT,IAAS,CACvD,CFa4D6V,CAAe7V,EAAM17B,KAAKkgB,IAAIlgB,KAAKoC,IAAImyB,GAAQv0B,KAAKoC,IAAIkyB,QAAU2a,EAAUI,UAAYA,GAAgC,MAAnBJ,EAAUjjC,OACrK,MAEF,IAAK,IACL,IAAK,IACwB,MAAvBijC,EAAUI,WAAsB1lC,MAAM0lC,EGrBjC,SAAS3T,GACtB,OAAO17B,KAAKkgB,IAAI,GAAI2uB,GAAS7uC,KAAKoC,IAAIs5B,IACxC,CHmB4D8V,CAAe9V,MAAQuT,EAAUI,UAAYA,EAAuC,GAAP,MAAnBJ,EAAUjjC,OAI9H,OAAOs+B,GAAO2E,EAChB,CIvBO,SAASwC,GAAU1S,GACxB,IAAInf,EAASmf,EAAMnf,OAkDnB,OAhDAmf,EAAMpB,MAAQ,SAASnH,GACrB,IAAI1yB,EAAI8b,IACR,OAAO+d,GAAM75B,EAAE,GAAIA,EAAEA,EAAEvK,OAAS,GAAa,MAATi9B,EAAgB,GAAKA,EAC3D,EAEAuI,EAAMsS,WAAa,SAAS7a,EAAOyY,GACjC,IAAInrC,EAAI8b,IACR,OAAOyxB,GAAWvtC,EAAE,GAAIA,EAAEA,EAAEvK,OAAS,GAAa,MAATi9B,EAAgB,GAAKA,EAAOyY,EACvE,EAEAlQ,EAAM2S,KAAO,SAASlb,GACP,MAATA,IAAeA,EAAQ,IAE3B,IAKImb,EACAjW,EANA53B,EAAI8b,IACJjV,EAAK,EACLC,EAAK9G,EAAEvK,OAAS,EAChBg7B,EAAQzwB,EAAE6G,GACV2pB,EAAOxwB,EAAE8G,GAGTgnC,EAAU,GAOd,IALItd,EAAOC,IACTmH,EAAOnH,EAAOA,EAAQD,EAAMA,EAAOoH,EACnCA,EAAO/wB,EAAIA,EAAKC,EAAIA,EAAK8wB,GAGpBkW,KAAY,GAAG,CAEpB,IADAlW,EAAOmC,GAActJ,EAAOD,EAAMkC,MACrBmb,EAGX,OAFA7tC,EAAE6G,GAAM4pB,EACRzwB,EAAE8G,GAAM0pB,EACD1U,EAAO9b,GACT,GAAI43B,EAAO,EAChBnH,EAAQv0B,KAAK+D,MAAMwwB,EAAQmH,GAAQA,EACnCpH,EAAOt0B,KAAK27B,KAAKrH,EAAOoH,GAAQA,MAC3B,MAAIA,EAAO,GAIhB,MAHAnH,EAAQv0B,KAAK27B,KAAKpH,EAAQmH,GAAQA,EAClCpH,EAAOt0B,KAAK+D,MAAMuwB,EAAOoH,GAAQA,CAGnC,CACAiW,EAAUjW,CACZ,CAEA,OAAOqD,CACT,EAEOA,CACT,CCzDe,SAAS2S,GAAK9xB,EAAQiyB,GAGnC,IAII9zC,EAJA4M,EAAK,EACLC,GAHJgV,EAASA,EAAOpkB,SAGAjC,OAAS,EACrBsI,EAAK+d,EAAOjV,GACZrJ,EAAKse,EAAOhV,GAUhB,OAPItJ,EAAKO,IACP9D,EAAI4M,EAAIA,EAAKC,EAAIA,EAAK7M,EACtBA,EAAI8D,EAAIA,EAAKP,EAAIA,EAAKvD,GAGxB6hB,EAAOjV,GAAMknC,EAAS9tC,MAAMlC,GAC5B+d,EAAOhV,GAAMinC,EAASlW,KAAKr6B,GACpBse,CACT,CCXA,SAASkyB,GAAaxyC,GACpB,OAAOU,KAAKm+B,IAAI7+B,EAClB,CAEA,SAASyyC,GAAazyC,GACpB,OAAOU,KAAKo+B,IAAI9+B,EAClB,CAEA,SAAS0yC,GAAc1yC,GACrB,OAAQU,KAAKm+B,KAAK7+B,EACpB,CAEA,SAAS2yC,GAAc3yC,GACrB,OAAQU,KAAKo+B,KAAK9+B,EACpB,CAEA,SAAS4yC,GAAM5yC,GACb,OAAOgsB,SAAShsB,KAAO,KAAOA,GAAKA,EAAI,EAAI,EAAIA,CACjD,CAeA,SAAS6yC,GAAQpW,GACf,MAAO,CAACz8B,EAAG0E,KAAO+3B,GAAGz8B,EAAG0E,EAC1B,CAEO,SAASouC,GAAQ/lC,GACtB,MAAM0yB,EAAQ1yB,EAAUylC,GAAcC,IAChCnyB,EAASmf,EAAMnf,OACrB,IACIyyB,EACAC,EAFAvlB,EAAO,GAIX,SAASyS,IAQP,OAPA6S,EAnBJ,SAActlB,GACZ,OAAOA,IAAS/sB,KAAKuyC,EAAIvyC,KAAKm+B,IACf,KAATpR,GAAe/sB,KAAKq9B,OACV,IAATtQ,GAAc/sB,KAAKwyC,OAClBzlB,EAAO/sB,KAAKm+B,IAAIpR,GAAOztB,GAAKU,KAAKm+B,IAAI7+B,GAAKytB,EACpD,CAcW0lB,CAAK1lB,GAAOulB,EAzBvB,SAAcvlB,GACZ,OAAgB,KAATA,EAAcmlB,GACfnlB,IAAS/sB,KAAKuyC,EAAIvyC,KAAKo+B,IACvB9+B,GAAKU,KAAKu9B,IAAIxQ,EAAMztB,EAC5B,CAqB8BozC,CAAK3lB,GAC3BnN,IAAS,GAAK,GAChByyB,EAAOF,GAAQE,GAAOC,EAAOH,GAAQG,GACrCjmC,EAAU2lC,GAAeC,KAEzB5lC,EAAUylC,GAAcC,IAEnBhT,CACT,CAwEA,OAtEAA,EAAMhS,KAAO,SAASpsB,GACpB,OAAOtF,UAAU9B,QAAUwzB,GAAQpsB,EAAG6+B,KAAazS,CACrD,EAEAgS,EAAMnf,OAAS,SAASjf,GACtB,OAAOtF,UAAU9B,QAAUqmB,EAAOjf,GAAI6+B,KAAa5f,GACrD,EAEAmf,EAAMpB,MAAQnH,IACZ,MAAM1yB,EAAI8b,IACV,IAAI4uB,EAAI1qC,EAAE,GACNoyB,EAAIpyB,EAAEA,EAAEvK,OAAS,GACrB,MAAMyE,EAAIk4B,EAAIsY,EAEVxwC,KAAKwwC,EAAGtY,GAAK,CAACA,EAAGsY,IAErB,IAEIxqC,EACAjG,EAHAlC,EAAIw2C,EAAK7D,GACT3oC,EAAIwsC,EAAKnc,GAGb,MAAMr4B,EAAa,MAAT24B,EAAgB,IAAMA,EAChC,IAAI0H,EAAI,GAER,KAAMnR,EAAO,IAAMlnB,EAAIhK,EAAIgC,EAAG,CAE5B,GADAhC,EAAImE,KAAK+D,MAAMlI,GAAIgK,EAAI7F,KAAK27B,KAAK91B,GAC7B2oC,EAAI,GAAG,KAAO3yC,GAAKgK,IAAKhK,EAC1B,IAAKmI,EAAI,EAAGA,EAAI+oB,IAAQ/oB,EAEtB,GADAjG,EAAIlC,EAAI,EAAImI,EAAIsuC,GAAMz2C,GAAKmI,EAAIsuC,EAAKz2C,KAChCkC,EAAIywC,GAAR,CACA,GAAIzwC,EAAIm4B,EAAG,MACXgI,EAAEtkC,KAAKmE,EAFI,OAIR,KAAOlC,GAAKgK,IAAKhK,EACtB,IAAKmI,EAAI+oB,EAAO,EAAG/oB,GAAK,IAAKA,EAE3B,GADAjG,EAAIlC,EAAI,EAAImI,EAAIsuC,GAAMz2C,GAAKmI,EAAIsuC,EAAKz2C,KAChCkC,EAAIywC,GAAR,CACA,GAAIzwC,EAAIm4B,EAAG,MACXgI,EAAEtkC,KAAKmE,EAFI,CAKA,EAAXmgC,EAAE3kC,OAAasE,IAAGqgC,EAAIP,GAAM6Q,EAAGtY,EAAGr4B,GACxC,MACEqgC,EAAIP,GAAM9hC,EAAGgK,EAAG7F,KAAK2I,IAAI9C,EAAIhK,EAAGgC,IAAI8Q,IAAI2jC,GAE1C,OAAOt0C,EAAIkgC,EAAEN,UAAYM,GAG3Ba,EAAMsS,WAAa,CAAC7a,EAAOyY,KAOzB,GANa,MAATzY,IAAeA,EAAQ,IACV,MAAbyY,IAAmBA,EAAqB,KAATliB,EAAc,IAAM,KAC9B,mBAAdkiB,IACHliB,EAAO,GAA4D,OAArDkiB,EAAYD,GAAgBC,IAAYI,YAAmBJ,EAAU1E,MAAO,GAChG0E,EAAY3E,GAAO2E,IAEjBzY,IAAUrW,IAAU,OAAO8uB,EAC/B,MAAMjrC,EAAIhE,KAAKkgB,IAAI,EAAG6M,EAAOyJ,EAAQuI,EAAMpB,QAAQpkC,QACnD,OAAOuK,IACL,IAAIjI,EAAIiI,EAAIwuC,EAAKtyC,KAAKiE,MAAMouC,EAAKvuC,KAEjC,OADIjI,EAAIkxB,EAAOA,EAAO,KAAKlxB,GAAKkxB,GACzBlxB,GAAKmI,EAAIirC,EAAUnrC,GAAK,KAInCi7B,EAAM2S,KAAO,IACJ9xB,EAAO8xB,GAAK9xB,IAAU,CAC3B7b,MAAOzE,GAAKgzC,EAAKtyC,KAAK+D,MAAMsuC,EAAK/yC,KACjCq8B,KAAMr8B,GAAKgzC,EAAKtyC,KAAK27B,KAAK0W,EAAK/yC,QAI5By/B,CACT,CChIA,SAAS4T,GAAgBjrC,GACvB,OAAO,SAASpI,GACd,OAAOU,KAAKqI,KAAK/I,GAAKU,KAAK4yC,MAAM5yC,KAAKoC,IAAI9C,EAAIoI,GAChD,CACF,CAEA,SAASmrC,GAAgBnrC,GACvB,OAAO,SAASpI,GACd,OAAOU,KAAKqI,KAAK/I,GAAKU,KAAK8yC,MAAM9yC,KAAKoC,IAAI9C,IAAMoI,CAClD,CACF,CAEO,SAASqrC,GAAU1mC,GACxB,IAAI3E,EAAI,EAAGq3B,EAAQ1yB,EAAUsmC,GAAgBjrC,GAAImrC,GAAgBnrC,IAMjE,OAJAq3B,EAAMh6B,SAAW,SAASpE,GACxB,OAAOtF,UAAU9B,OAAS8S,EAAUsmC,GAAgBjrC,GAAK/G,GAAIkyC,GAAgBnrC,IAAMA,CACrF,EAEO+pC,GAAU1S,EACnB,CCpBA,SAASiU,GAAanE,GACpB,OAAO,SAASvvC,GACd,OAAOA,EAAI,GAAKU,KAAKu9B,KAAKj+B,EAAGuvC,GAAY7uC,KAAKu9B,IAAIj+B,EAAGuvC,EACvD,CACF,CAEA,SAASoE,GAAc3zC,GACrB,OAAOA,EAAI,GAAKU,KAAKE,MAAMZ,GAAKU,KAAKE,KAAKZ,EAC5C,CAEA,SAAS4zC,GAAgB5zC,GACvB,OAAOA,EAAI,GAAKA,EAAIA,EAAIA,EAAIA,CAC9B,CAEO,SAAS6zC,GAAO9mC,GACrB,IAAI0yB,EAAQ1yB,EAAU2D,GAAUA,IAC5B6+B,EAAW,EAYf,OAJA9P,EAAM8P,SAAW,SAASluC,GACxB,OAAOtF,UAAU9B,OANG,KAMOs1C,GAAYluC,GANf0L,EAAU2D,GAAUA,IACzB,KAAb6+B,EAAmBxiC,EAAU4mC,GAAeC,IAC5C7mC,EAAU2mC,GAAanE,GAAWmE,GAAa,EAAInE,IAIFA,CACzD,EAEO4C,GAAU1S,EACnB,CAEe,SAASxB,KACtB,IAAIwB,EAAQoU,GAAOhF,MAQnB,OANApP,EAAMC,KAAO,WACX,OAAOA,GAAKD,EAAOxB,MAAOsR,SAAS9P,EAAM8P,WAC3C,EAEApQ,GAAUtgC,MAAM4gC,EAAO1jC,WAEhB0jC,CACT,CCxCA,SAASqU,GAAO9zC,GACd,OAAOU,KAAKqI,KAAK/I,GAAKA,EAAIA,CAC5B,CbMEuwC,GAASwD,GAPG,CACZnD,UAAW,IACXD,SAAU,CAAC,GACXI,SAAU,CAAC,IAAK,MAKhB/F,GAASuF,GAAOvF,OAChBwF,GAAeD,GAAOC,acfxB,MAAMjnC,GAAK,IAAIgM,KAAM/L,GAAK,IAAI+L,KAEvB,SAASy+B,GAAaC,EAAQC,EAAShd,EAAOid,GAEnD,SAAS5B,EAASrE,GAChB,OAAO+F,EAAO/F,EAA4B,IAArBnyC,UAAU9B,OAAe,IAAIsb,KAAO,IAAIA,MAAM24B,IAAQA,CAC7E,CA6DA,OA3DAqE,EAAS9tC,MAASypC,IACT+F,EAAO/F,EAAO,IAAI34B,MAAM24B,IAAQA,GAGzCqE,EAASlW,KAAQ6R,IACR+F,EAAO/F,EAAO,IAAI34B,KAAK24B,EAAO,IAAKgG,EAAQhG,EAAM,GAAI+F,EAAO/F,GAAOA,GAG5EqE,EAAS5tC,MAASupC,IAChB,MAAMO,EAAK8D,EAASrE,GAAOQ,EAAK6D,EAASlW,KAAK6R,GAC9C,OAAOA,EAAOO,EAAKC,EAAKR,EAAOO,EAAKC,GAGtC6D,EAAS1yB,OAAS,CAACquB,EAAM9R,KAChB8X,EAAQhG,EAAO,IAAI34B,MAAM24B,GAAe,MAAR9R,EAAe,EAAI17B,KAAK+D,MAAM23B,IAAQ8R,GAG/EqE,EAASpW,MAAQ,CAAClH,EAAOD,EAAMoH,KAC7B,MAAMD,EAAQ,GAGd,GAFAlH,EAAQsd,EAASlW,KAAKpH,GACtBmH,EAAe,MAARA,EAAe,EAAI17B,KAAK+D,MAAM23B,KAC/BnH,EAAQD,GAAWoH,EAAO,GAAI,OAAOD,EAC3C,IAAIiY,EACJ,GAAGjY,EAAM7hC,KAAK85C,EAAW,IAAI7+B,MAAM0f,IAASif,EAAQjf,EAAOmH,GAAO6X,EAAOhf,SAClEmf,EAAWnf,GAASA,EAAQD,GACnC,OAAOmH,GAGToW,EAAS/mC,OAAU4L,GACV48B,GAAc9F,IACnB,GAAIA,GAAQA,EAAM,KAAO+F,EAAO/F,IAAQ92B,EAAK82B,IAAOA,EAAKZ,QAAQY,EAAO,IACvE,CAACA,EAAM9R,KACR,GAAI8R,GAAQA,EACV,GAAI9R,EAAO,EAAG,OAASA,GAAQ,GAC7B,KAAO8X,EAAQhG,GAAM,IAAM92B,EAAK82B,UAC3B,OAAS9R,GAAQ,GACtB,KAAO8X,EAAQhG,EAAM,IAAM92B,EAAK82B,QAMpChX,IACFqb,EAASrb,MAAQ,CAACjC,EAAO5C,KACvB9oB,GAAG+jC,SAASrY,GAAQzrB,GAAG8jC,SAASjb,GAChC4hB,EAAO1qC,IAAK0qC,EAAOzqC,IACZ9I,KAAK+D,MAAMyyB,EAAM3tB,GAAIC,MAG9B+oC,EAAS8B,MAASjY,IAChBA,EAAO17B,KAAK+D,MAAM23B,GACVpQ,SAASoQ,IAAWA,EAAO,EAC3BA,EAAO,EACTmW,EAAS/mC,OAAO2oC,EACX3vC,GAAM2vC,EAAM3vC,GAAK43B,IAAS,EAC1B53B,GAAM+tC,EAASrb,MAAM,EAAG1yB,GAAK43B,IAAS,GAH7BmW,EADoB,OAQrCA,CACT,CClEO,MAAM+B,GAAcN,GAAa,OAErC,CAAC9F,EAAM9R,KACR8R,EAAKZ,SAASY,EAAO9R,IACpB,CAACnH,EAAO5C,IACFA,EAAM4C,GAIfqf,GAAYD,MAAS3vC,IACnBA,EAAIhE,KAAK+D,MAAMC,GACVsnB,SAAStnB,IAAQA,EAAI,EACpBA,EAAI,EACHsvC,GAAc9F,IACnBA,EAAKZ,QAAQ5sC,KAAK+D,MAAMypC,EAAOxpC,GAAKA,IACnC,CAACwpC,EAAM9R,KACR8R,EAAKZ,SAASY,EAAO9R,EAAO13B,IAC3B,CAACuwB,EAAO5C,KACDA,EAAM4C,GAASvwB,GANJ4vC,GADgB,MAWXA,GAAYnY,MCxBjC,MAAMoY,GAAiB,IACjBC,GAAiBD,IACjBE,GAAeD,KACfE,GAAcD,MACdE,GAAeD,OACfE,GAAgBF,OAChBG,GAAeH,QCHfI,GAASd,GAAc9F,IAClCA,EAAKZ,QAAQY,EAAOA,EAAK6G,oBACxB,CAAC7G,EAAM9R,KACR8R,EAAKZ,SAASY,EAAO9R,EAAOmY,KAC3B,CAACtf,EAAO5C,KACDA,EAAM4C,GAASsf,GACrBrG,GACKA,EAAK8G,iBAGSF,GAAO3Y,MCVvB,MAAM8Y,GAAajB,GAAc9F,IACtCA,EAAKZ,QAAQY,EAAOA,EAAK6G,kBAAoB7G,EAAKgH,aAAeX,KAChE,CAACrG,EAAM9R,KACR8R,EAAKZ,SAASY,EAAO9R,EAAOoY,KAC3B,CAACvf,EAAO5C,KACDA,EAAM4C,GAASuf,GACrBtG,GACKA,EAAKiH,cAGaF,GAAW9Y,MAE/B,MAAMiZ,GAAYpB,GAAc9F,IACrCA,EAAKmH,cAAc,EAAG,IACrB,CAACnH,EAAM9R,KACR8R,EAAKZ,SAASY,EAAO9R,EAAOoY,KAC3B,CAACvf,EAAO5C,KACDA,EAAM4C,GAASuf,GACrBtG,GACKA,EAAKoH,iBAGYF,GAAUjZ,MCtB7B,MAAMoZ,GAAWvB,GAAc9F,IACpCA,EAAKZ,QAAQY,EAAOA,EAAK6G,kBAAoB7G,EAAKgH,aAAeX,GAAiBrG,EAAKiH,aAAeX,KACrG,CAACtG,EAAM9R,KACR8R,EAAKZ,SAASY,EAAO9R,EAAOqY,KAC3B,CAACxf,EAAO5C,KACDA,EAAM4C,GAASwf,GACrBvG,GACKA,EAAKsH,YAGWD,GAASpZ,MAE3B,MAAMsZ,GAAUzB,GAAc9F,IACnCA,EAAKwH,cAAc,EAAG,EAAG,IACxB,CAACxH,EAAM9R,KACR8R,EAAKZ,SAASY,EAAO9R,EAAOqY,KAC3B,CAACxf,EAAO5C,KACDA,EAAM4C,GAASwf,GACrBvG,GACKA,EAAKyH,eAGUF,GAAQtZ,MCtBzB,MAAMyZ,GAAU5B,GACrB9F,GAAQA,EAAK2H,SAAS,EAAG,EAAG,EAAG,GAC/B,CAAC3H,EAAM9R,IAAS8R,EAAK4H,QAAQ5H,EAAK6H,UAAY3Z,GAC9C,CAACnH,EAAO5C,KAASA,EAAM4C,GAAS5C,EAAI2jB,oBAAsB/gB,EAAM+gB,qBAAuBxB,IAAkBE,GACzGxG,GAAQA,EAAK6H,UAAY,GAGHH,GAAQzZ,MAEzB,MAAM8Z,GAASjC,GAAc9F,IAClCA,EAAKgI,YAAY,EAAG,EAAG,EAAG,IACzB,CAAChI,EAAM9R,KACR8R,EAAKiI,WAAWjI,EAAKkI,aAAeha,IACnC,CAACnH,EAAO5C,KACDA,EAAM4C,GAASyf,GACrBxG,GACKA,EAAKkI,aAAe,GAGNH,GAAO9Z,MAEvB,MAAMka,GAAUrC,GAAc9F,IACnCA,EAAKgI,YAAY,EAAG,EAAG,EAAG,IACzB,CAAChI,EAAM9R,KACR8R,EAAKiI,WAAWjI,EAAKkI,aAAeha,IACnC,CAACnH,EAAO5C,KACDA,EAAM4C,GAASyf,GACrBxG,GACKxtC,KAAK+D,MAAMypC,EAAOwG,KC5B3B,SAAS4B,GAAY/5C,GACnB,OAAOy3C,GAAc9F,IACnBA,EAAK4H,QAAQ5H,EAAK6H,WAAa7H,EAAKqI,SAAW,EAAIh6C,GAAK,GACxD2xC,EAAK2H,SAAS,EAAG,EAAG,EAAG,IACtB,CAAC3H,EAAM9R,KACR8R,EAAK4H,QAAQ5H,EAAK6H,UAAmB,EAAP3Z,IAC7B,CAACnH,EAAO5C,KACDA,EAAM4C,GAAS5C,EAAI2jB,oBAAsB/gB,EAAM+gB,qBAAuBxB,IAAkBG,GAEpG,CDsBwB0B,GAAQla,MCpBzB,MAAMqa,GAAaF,GAAY,GACzBG,GAAaH,GAAY,GACzBI,GAAcJ,GAAY,GAC1BK,GAAgBL,GAAY,GAC5BM,GAAeN,GAAY,GAC3BO,GAAaP,GAAY,GACzBQ,GAAeR,GAAY,GAUxC,SAASS,GAAWx6C,GAClB,OAAOy3C,GAAc9F,IACnBA,EAAKiI,WAAWjI,EAAKkI,cAAgBlI,EAAK8I,YAAc,EAAIz6C,GAAK,GACjE2xC,EAAKgI,YAAY,EAAG,EAAG,EAAG,IACzB,CAAChI,EAAM9R,KACR8R,EAAKiI,WAAWjI,EAAKkI,aAAsB,EAAPha,IACnC,CAACnH,EAAO5C,KACDA,EAAM4C,GAAS0f,GAE3B,CAjB2B6B,GAAWra,MACXsa,GAAWta,MACVua,GAAYva,MACVwa,GAAcxa,MACfya,GAAaza,MACf0a,GAAW1a,MACT2a,GAAa3a,MAanC,MAAM8a,GAAYF,GAAW,GACvBG,GAAYH,GAAW,GACvBI,GAAaJ,GAAW,GACxBK,GAAeL,GAAW,GAC1BM,GAAcN,GAAW,GACzBO,GAAYP,GAAW,GACvBQ,GAAcR,GAAW,GAEZE,GAAU9a,MACV+a,GAAU/a,MACTgb,GAAWhb,MACTib,GAAajb,MACdkb,GAAYlb,MACdmb,GAAUnb,MACRob,GAAYpb,MCrDjC,MAAMqb,GAAYxD,GAAc9F,IACrCA,EAAK4H,QAAQ,GACb5H,EAAK2H,SAAS,EAAG,EAAG,EAAG,IACtB,CAAC3H,EAAM9R,KACR8R,EAAKuJ,SAASvJ,EAAKwJ,WAAatb,IAC/B,CAACnH,EAAO5C,IACFA,EAAIqlB,WAAaziB,EAAMyiB,WAAyD,IAA3CrlB,EAAIslB,cAAgB1iB,EAAM0iB,eACpEzJ,GACKA,EAAKwJ,YAGYF,GAAUrb,MAE7B,MAAMyb,GAAW5D,GAAc9F,IACpCA,EAAKiI,WAAW,GAChBjI,EAAKgI,YAAY,EAAG,EAAG,EAAG,IACzB,CAAChI,EAAM9R,KACR8R,EAAK2J,YAAY3J,EAAK4J,cAAgB1b,IACrC,CAACnH,EAAO5C,IACFA,EAAIylB,cAAgB7iB,EAAM6iB,cAAkE,IAAjDzlB,EAAI0lB,iBAAmB9iB,EAAM8iB,kBAC7E7J,GACKA,EAAK4J,eAGWF,GAASzb,MCxB3B,MAAM6b,GAAWhE,GAAc9F,IACpCA,EAAKuJ,SAAS,EAAG,GACjBvJ,EAAK2H,SAAS,EAAG,EAAG,EAAG,IACtB,CAAC3H,EAAM9R,KACR8R,EAAK+J,YAAY/J,EAAKyJ,cAAgBvb,IACrC,CAACnH,EAAO5C,IACFA,EAAIslB,cAAgB1iB,EAAM0iB,cAC/BzJ,GACKA,EAAKyJ,eAIdK,GAAS3D,MAAS3vC,GACRsnB,SAAStnB,EAAIhE,KAAK+D,MAAMC,KAASA,EAAI,EAAYsvC,GAAc9F,IACrEA,EAAK+J,YAAYv3C,KAAK+D,MAAMypC,EAAKyJ,cAAgBjzC,GAAKA,GACtDwpC,EAAKuJ,SAAS,EAAG,GACjBvJ,EAAK2H,SAAS,EAAG,EAAG,EAAG,IACtB,CAAC3H,EAAM9R,KACR8R,EAAK+J,YAAY/J,EAAKyJ,cAAgBvb,EAAO13B,KALG,KAS3BszC,GAAS7b,MAE3B,MAAM+b,GAAUlE,GAAc9F,IACnCA,EAAK2J,YAAY,EAAG,GACpB3J,EAAKgI,YAAY,EAAG,EAAG,EAAG,IACzB,CAAChI,EAAM9R,KACR8R,EAAKiK,eAAejK,EAAK6J,iBAAmB3b,IAC3C,CAACnH,EAAO5C,IACFA,EAAI0lB,iBAAmB9iB,EAAM8iB,iBAClC7J,GACKA,EAAK6J,kBCvBd,SAASK,GAAOC,EAAMC,EAAOC,EAAMC,EAAKC,EAAMC,GAE5C,MAAMC,EAAgB,CACpB,CAAC7D,GAAS,EAAQP,IAClB,CAACO,GAAS,EAAI,KACd,CAACA,GAAQ,GAAI,MACb,CAACA,GAAQ,GAAI,KACb,CAAC4D,EAAS,EAAQlE,IAClB,CAACkE,EAAS,EAAI,KACd,CAACA,EAAQ,GAAI,KACb,CAACA,EAAQ,GAAI,MACb,CAAGD,EAAO,EAAQhE,IAClB,CAAGgE,EAAO,EAAI,OACd,CAAGA,EAAO,EAAI,OACd,CAAGA,EAAM,GAAI,OACb,CAAID,EAAM,EAAQ9D,IAClB,CAAI8D,EAAM,EAAI,QACd,CAAGD,EAAO,EAAQ5D,IAClB,CAAE2D,EAAQ,EAAQ1D,IAClB,CAAE0D,EAAQ,EAAI,QACd,CAAGD,EAAO,EAAQxD,KAWpB,SAAS+D,EAAa3jB,EAAOD,EAAMkC,GACjC,MAAM5lB,EAAS5Q,KAAKoC,IAAIkyB,EAAOC,GAASiC,EAClC36B,EAAIigC,GAAS,IAAKJ,KAAUA,GAAM1Z,MAAMi2B,EAAernC,GAC7D,GAAI/U,IAAMo8C,EAAc1+C,OAAQ,OAAOo+C,EAAKhE,MAAM7V,GAASvJ,EAAQ4f,GAAc7f,EAAO6f,GAAc3d,IACtG,GAAU,IAAN36B,EAAS,OAAO+3C,GAAYD,MAAM3zC,KAAKkgB,IAAI4d,GAASvJ,EAAOD,EAAMkC,GAAQ,IAC7E,MAAOz4B,EAAG29B,GAAQuc,EAAcrnC,EAASqnC,EAAcp8C,EAAI,GAAG,GAAKo8C,EAAcp8C,GAAG,GAAK+U,EAAS/U,EAAI,EAAIA,GAC1G,OAAOkC,EAAE41C,MAAMjY,EACjB,CAEA,MAAO,CAjBP,SAAenH,EAAOD,EAAMkC,GAC1B,MAAMoH,EAAUtJ,EAAOC,EACnBqJ,KAAUrJ,EAAOD,GAAQ,CAACA,EAAMC,IACpC,MAAMsd,EAAWrb,GAAgC,mBAAhBA,EAAMiF,MAAuBjF,EAAQ0hB,EAAa3jB,EAAOD,EAAMkC,GAC1FmH,EAAQkU,EAAWA,EAASpW,MAAMlH,GAAQD,EAAO,GAAK,GAC5D,OAAOsJ,EAAUD,EAAMC,UAAYD,CACrC,EAWeua,EACjB,CDdAV,GAAQ7D,MAAS3vC,GACPsnB,SAAStnB,EAAIhE,KAAK+D,MAAMC,KAASA,EAAI,EAAYsvC,GAAc9F,IACrEA,EAAKiK,eAAez3C,KAAK+D,MAAMypC,EAAK6J,iBAAmBrzC,GAAKA,GAC5DwpC,EAAK2J,YAAY,EAAG,GACpB3J,EAAKgI,YAAY,EAAG,EAAG,EAAG,IACzB,CAAChI,EAAM9R,KACR8R,EAAKiK,eAAejK,EAAK6J,iBAAmB3b,EAAO13B,KALH,KAS5BwzC,GAAQ/b,MCMhC,MAAO0c,GAAUC,IAAmBV,GAAOF,GAASN,GAAUX,GAAWZ,GAASZ,GAASL,KACpF2D,GAAWC,IAAoBZ,GAAOJ,GAAUR,GAAWhB,GAAYZ,GAASL,GAAUN,IC1CjG,SAASgE,GAAUz0C,GACjB,GAAI,GAAKA,EAAEvE,GAAKuE,EAAEvE,EAAI,IAAK,CACzB,IAAIiuC,EAAO,IAAI34B,MAAK,EAAI/Q,EAAEsF,EAAGtF,EAAEA,EAAGA,EAAE00C,EAAG10C,EAAE20C,EAAG30C,EAAE40C,EAAG50C,EAAE60C,GAEnD,OADAnL,EAAK+J,YAAYzzC,EAAEvE,GACZiuC,CACT,CACA,OAAO,IAAI34B,KAAK/Q,EAAEvE,EAAGuE,EAAEsF,EAAGtF,EAAEA,EAAGA,EAAE00C,EAAG10C,EAAE20C,EAAG30C,EAAE40C,EAAG50C,EAAE60C,EAClD,CAEA,SAASC,GAAQ90C,GACf,GAAI,GAAKA,EAAEvE,GAAKuE,EAAEvE,EAAI,IAAK,CACzB,IAAIiuC,EAAO,IAAI34B,KAAKA,KAAKgkC,OAAQ/0C,EAAEsF,EAAGtF,EAAEA,EAAGA,EAAE00C,EAAG10C,EAAE20C,EAAG30C,EAAE40C,EAAG50C,EAAE60C,IAE5D,OADAnL,EAAKiK,eAAe3zC,EAAEvE,GACfiuC,CACT,CACA,OAAO,IAAI34B,KAAKA,KAAKgkC,IAAI/0C,EAAEvE,EAAGuE,EAAEsF,EAAGtF,EAAEA,EAAGA,EAAE00C,EAAG10C,EAAE20C,EAAG30C,EAAE40C,EAAG50C,EAAE60C,GAC3D,CAEA,SAASG,GAAQv5C,EAAG6J,EAAGtF,GACrB,MAAO,CAACvE,EAAGA,EAAG6J,EAAGA,EAAGtF,EAAGA,EAAG00C,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGC,EAAG,EACjD,CAkWA,ICjYI9I,GACOkJ,GAEAC,GD8XPC,GAAO,CAAC,IAAK,GAAIt4C,EAAK,IAAK,EAAK,KAChCu4C,GAAW,UACXC,GAAY,KACZC,GAAY,sBAEhB,SAASC,GAAI1gD,EAAOgV,EAAMnP,GACxB,IAAI6J,EAAO1P,EAAQ,EAAI,IAAM,GACzBq0C,GAAU3kC,GAAQ1P,EAAQA,GAAS,GACnCY,EAASyzC,EAAOzzC,OACpB,OAAO8O,GAAQ9O,EAASiF,EAAQ,IAAIjE,MAAMiE,EAAQjF,EAAS,GAAG0sB,KAAKtY,GAAQq/B,EAASA,EACtF,CAEA,SAASsM,GAAQ3xC,GACf,OAAOA,EAAEsuB,QAAQmjB,GAAW,OAC9B,CAEA,SAASG,GAASC,GAChB,OAAO,IAAIzkC,OAAO,OAASykC,EAAM7qC,IAAI2qC,IAASrzB,KAAK,KAAO,IAAK,IACjE,CAEA,SAASwzB,GAAaD,GACpB,OAAO,IAAI5pC,IAAI4pC,EAAM7qC,IAAI,CAACrC,EAAMzQ,IAAM,CAACyQ,EAAK6pB,cAAet6B,IAC7D,CAEA,SAAS69C,GAAyB51C,EAAGkpC,EAAQnxC,GAC3C,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAEL,GAAK5F,EAAE,GAAIhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC9C,CAEA,SAASogD,GAAyB71C,EAAGkpC,EAAQnxC,GAC3C,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAE0qC,GAAK3wC,EAAE,GAAIhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC9C,CAEA,SAASqgD,GAAsB91C,EAAGkpC,EAAQnxC,GACxC,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAE+1C,GAAKh8C,EAAE,GAAIhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC9C,CAEA,SAASugD,GAAmBh2C,EAAGkpC,EAAQnxC,GACrC,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAEi2C,GAAKl8C,EAAE,GAAIhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC9C,CAEA,SAASygD,GAAsBl2C,EAAGkpC,EAAQnxC,GACxC,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAEm2C,GAAKp8C,EAAE,GAAIhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC9C,CAEA,SAAS2gD,GAAcp2C,EAAGkpC,EAAQnxC,GAChC,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAEvE,GAAK1B,EAAE,GAAIhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC9C,CAEA,SAAS4gD,GAAUr2C,EAAGkpC,EAAQnxC,GAC5B,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAEvE,GAAK1B,EAAE,KAAOA,EAAE,GAAK,GAAK,KAAO,KAAOhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC3E,CAEA,SAAS6gD,GAAUt2C,EAAGkpC,EAAQnxC,GAC5B,IAAIgC,EAAI,+BAA+B2sC,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAChE,OAAOgC,GAAKiG,EAAEu2C,EAAIx8C,EAAE,GAAK,IAAMA,EAAE,IAAMA,EAAE,IAAM,OAAQhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC5E,CAEA,SAAS+gD,GAAax2C,EAAGkpC,EAAQnxC,GAC/B,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAEupC,EAAW,EAAPxvC,EAAE,GAAS,EAAGhC,EAAIgC,EAAE,GAAGtE,SAAU,CACrD,CAEA,SAASghD,GAAiBz2C,EAAGkpC,EAAQnxC,GACnC,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAEsF,EAAIvL,EAAE,GAAK,EAAGhC,EAAIgC,EAAE,GAAGtE,SAAU,CACjD,CAEA,SAASihD,GAAgB12C,EAAGkpC,EAAQnxC,GAClC,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAEA,GAAKjG,EAAE,GAAIhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC9C,CAEA,SAASkhD,GAAe32C,EAAGkpC,EAAQnxC,GACjC,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAEsF,EAAI,EAAGtF,EAAEA,GAAKjG,EAAE,GAAIhC,EAAIgC,EAAE,GAAGtE,SAAU,CACvD,CAEA,SAASmhD,GAAY52C,EAAGkpC,EAAQnxC,GAC9B,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAE00C,GAAK36C,EAAE,GAAIhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC9C,CAEA,SAASohD,GAAa72C,EAAGkpC,EAAQnxC,GAC/B,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAE20C,GAAK56C,EAAE,GAAIhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC9C,CAEA,SAASqhD,GAAa92C,EAAGkpC,EAAQnxC,GAC/B,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAE40C,GAAK76C,EAAE,GAAIhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC9C,CAEA,SAASshD,GAAkB/2C,EAAGkpC,EAAQnxC,GACpC,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAE60C,GAAK96C,EAAE,GAAIhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC9C,CAEA,SAASuhD,GAAkBh3C,EAAGkpC,EAAQnxC,GACpC,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC1C,OAAOgC,GAAKiG,EAAE60C,EAAI34C,KAAK+D,MAAMlG,EAAE,GAAK,KAAOhC,EAAIgC,EAAE,GAAGtE,SAAU,CAChE,CAEA,SAASwhD,GAAoBj3C,EAAGkpC,EAAQnxC,GACtC,IAAIgC,EAAIs7C,GAAU3O,KAAKwC,EAAOxxC,MAAMK,EAAGA,EAAI,IAC3C,OAAOgC,EAAIhC,EAAIgC,EAAE,GAAGtE,QAAS,CAC/B,CAEA,SAASyhD,GAAmBl3C,EAAGkpC,EAAQnxC,GACrC,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,IACnC,OAAOgC,GAAKiG,EAAEm3C,GAAKp9C,EAAE,GAAIhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC9C,CAEA,SAAS2hD,GAA0Bp3C,EAAGkpC,EAAQnxC,GAC5C,IAAIgC,EAAIq7C,GAAS1O,KAAKwC,EAAOxxC,MAAMK,IACnC,OAAOgC,GAAKiG,EAAE6D,GAAK9J,EAAE,GAAIhC,EAAIgC,EAAE,GAAGtE,SAAU,CAC9C,CAEA,SAAS4hD,GAAiBr3C,EAAGc,GAC3B,OAAOy0C,GAAIv1C,EAAEuxC,UAAWzwC,EAAG,EAC7B,CAEA,SAASw2C,GAAat3C,EAAGc,GACvB,OAAOy0C,GAAIv1C,EAAEgxC,WAAYlwC,EAAG,EAC9B,CAEA,SAASy2C,GAAav3C,EAAGc,GACvB,OAAOy0C,GAAIv1C,EAAEgxC,WAAa,IAAM,GAAIlwC,EAAG,EACzC,CAEA,SAAS02C,GAAgBx3C,EAAGc,GAC1B,OAAOy0C,GAAI,EAAInE,GAAQ1e,MAAM8gB,GAASxzC,GAAIA,GAAIc,EAAG,EACnD,CAEA,SAAS22C,GAAmBz3C,EAAGc,GAC7B,OAAOy0C,GAAIv1C,EAAEuwC,kBAAmBzvC,EAAG,EACrC,CAEA,SAAS42C,GAAmB13C,EAAGc,GAC7B,OAAO22C,GAAmBz3C,EAAGc,GAAK,KACpC,CAEA,SAAS62C,GAAkB33C,EAAGc,GAC5B,OAAOy0C,GAAIv1C,EAAEkzC,WAAa,EAAGpyC,EAAG,EAClC,CAEA,SAAS82C,GAAc53C,EAAGc,GACxB,OAAOy0C,GAAIv1C,EAAE2wC,aAAc7vC,EAAG,EAChC,CAEA,SAAS+2C,GAAc73C,EAAGc,GACxB,OAAOy0C,GAAIv1C,EAAE0wC,aAAc5vC,EAAG,EAChC,CAEA,SAASg3C,GAA0B93C,GACjC,IAAIg0C,EAAMh0C,EAAE+xC,SACZ,OAAe,IAARiC,EAAY,EAAIA,CACzB,CAEA,SAAS+D,GAAuB/3C,EAAGc,GACjC,OAAOy0C,GAAIvD,GAAWtf,MAAM8gB,GAASxzC,GAAK,EAAGA,GAAIc,EAAG,EACtD,CAEA,SAASk3C,GAAKh4C,GACZ,IAAIg0C,EAAMh0C,EAAE+xC,SACZ,OAAQiC,GAAO,GAAa,IAARA,EAAa5B,GAAapyC,GAAKoyC,GAAava,KAAK73B,EACvE,CAEA,SAASi4C,GAAoBj4C,EAAGc,GAE9B,OADAd,EAAIg4C,GAAKh4C,GACFu1C,GAAInD,GAAa1f,MAAM8gB,GAASxzC,GAAIA,IAA+B,IAAzBwzC,GAASxzC,GAAG+xC,UAAiBjxC,EAAG,EACnF,CAEA,SAASo3C,GAA0Bl4C,GACjC,OAAOA,EAAE+xC,QACX,CAEA,SAASoG,GAAuBn4C,EAAGc,GACjC,OAAOy0C,GAAItD,GAAWvf,MAAM8gB,GAASxzC,GAAK,EAAGA,GAAIc,EAAG,EACtD,CAEA,SAASs3C,GAAWp4C,EAAGc,GACrB,OAAOy0C,GAAIv1C,EAAEmzC,cAAgB,IAAKryC,EAAG,EACvC,CAEA,SAASu3C,GAAcr4C,EAAGc,GAExB,OAAOy0C,IADPv1C,EAAIg4C,GAAKh4C,IACImzC,cAAgB,IAAKryC,EAAG,EACvC,CAEA,SAASw3C,GAAet4C,EAAGc,GACzB,OAAOy0C,GAAIv1C,EAAEmzC,cAAgB,IAAOryC,EAAG,EACzC,CAEA,SAASy3C,GAAkBv4C,EAAGc,GAC5B,IAAIkzC,EAAMh0C,EAAE+xC,SAEZ,OAAOwD,IADPv1C,EAAKg0C,GAAO,GAAa,IAARA,EAAa5B,GAAapyC,GAAKoyC,GAAava,KAAK73B,IACrDmzC,cAAgB,IAAOryC,EAAG,EACzC,CAEA,SAAS03C,GAAWx4C,GAClB,IAAIo6B,EAAIp6B,EAAEwxC,oBACV,OAAQpX,EAAI,EAAI,KAAOA,MAAS,MAC1Bmb,GAAInb,EAAI,GAAK,EAAG,IAAK,GACrBmb,GAAInb,EAAI,GAAI,IAAK,EACzB,CAEA,SAASqe,GAAoBz4C,EAAGc,GAC9B,OAAOy0C,GAAIv1C,EAAE4xC,aAAc9wC,EAAG,EAChC,CAEA,SAAS43C,GAAgB14C,EAAGc,GAC1B,OAAOy0C,GAAIv1C,EAAEmxC,cAAerwC,EAAG,EACjC,CAEA,SAAS63C,GAAgB34C,EAAGc,GAC1B,OAAOy0C,GAAIv1C,EAAEmxC,cAAgB,IAAM,GAAIrwC,EAAG,EAC5C,CAEA,SAAS83C,GAAmB54C,EAAGc,GAC7B,OAAOy0C,GAAI,EAAI9D,GAAO/e,MAAMghB,GAAQ1zC,GAAIA,GAAIc,EAAG,EACjD,CAEA,SAAS+3C,GAAsB74C,EAAGc,GAChC,OAAOy0C,GAAIv1C,EAAE84C,qBAAsBh4C,EAAG,EACxC,CAEA,SAASi4C,GAAsB/4C,EAAGc,GAChC,OAAO+3C,GAAsB74C,EAAGc,GAAK,KACvC,CAEA,SAASk4C,GAAqBh5C,EAAGc,GAC/B,OAAOy0C,GAAIv1C,EAAEszC,cAAgB,EAAGxyC,EAAG,EACrC,CAEA,SAASm4C,GAAiBj5C,EAAGc,GAC3B,OAAOy0C,GAAIv1C,EAAE8wC,gBAAiBhwC,EAAG,EACnC,CAEA,SAASo4C,GAAiBl5C,EAAGc,GAC3B,OAAOy0C,GAAIv1C,EAAEwwC,gBAAiB1vC,EAAG,EACnC,CAEA,SAASq4C,GAA6Bn5C,GACpC,IAAIo5C,EAAMp5C,EAAEwyC,YACZ,OAAe,IAAR4G,EAAY,EAAIA,CACzB,CAEA,SAASC,GAA0Br5C,EAAGc,GACpC,OAAOy0C,GAAI9C,GAAU/f,MAAMghB,GAAQ1zC,GAAK,EAAGA,GAAIc,EAAG,EACpD,CAEA,SAASw4C,GAAQt5C,GACf,IAAIg0C,EAAMh0C,EAAEwyC,YACZ,OAAQwB,GAAO,GAAa,IAARA,EAAanB,GAAY7yC,GAAK6yC,GAAYhb,KAAK73B,EACrE,CAEA,SAASu5C,GAAuBv5C,EAAGc,GAEjC,OADAd,EAAIs5C,GAAQt5C,GACLu1C,GAAI1C,GAAYngB,MAAMghB,GAAQ1zC,GAAIA,IAAiC,IAA3B0zC,GAAQ1zC,GAAGwyC,aAAoB1xC,EAAG,EACnF,CAEA,SAAS04C,GAA6Bx5C,GACpC,OAAOA,EAAEwyC,WACX,CAEA,SAASiH,GAA0Bz5C,EAAGc,GACpC,OAAOy0C,GAAI7C,GAAUhgB,MAAMghB,GAAQ1zC,GAAK,EAAGA,GAAIc,EAAG,EACpD,CAEA,SAAS44C,GAAc15C,EAAGc,GACxB,OAAOy0C,GAAIv1C,EAAEuzC,iBAAmB,IAAKzyC,EAAG,EAC1C,CAEA,SAAS64C,GAAiB35C,EAAGc,GAE3B,OAAOy0C,IADPv1C,EAAIs5C,GAAQt5C,IACCuzC,iBAAmB,IAAKzyC,EAAG,EAC1C,CAEA,SAAS84C,GAAkB55C,EAAGc,GAC5B,OAAOy0C,GAAIv1C,EAAEuzC,iBAAmB,IAAOzyC,EAAG,EAC5C,CAEA,SAAS+4C,GAAqB75C,EAAGc,GAC/B,IAAIkzC,EAAMh0C,EAAEwyC,YAEZ,OAAO+C,IADPv1C,EAAKg0C,GAAO,GAAa,IAARA,EAAanB,GAAY7yC,GAAK6yC,GAAYhb,KAAK73B,IACnDuzC,iBAAmB,IAAOzyC,EAAG,EAC5C,CAEA,SAASg5C,KACP,MAAO,OACT,CAEA,SAASC,KACP,MAAO,GACT,CAEA,SAASC,GAAoBh6C,GAC3B,OAAQA,CACV,CAEA,SAASi6C,GAA2Bj6C,GAClC,OAAO9D,KAAK+D,OAAOD,EAAI,IACzB,CElrBA,SAAS0pC,GAAKzvC,GACZ,OAAO,IAAI8W,KAAK9W,EAClB,CAEA,SAASw+B,GAAOx+B,GACd,OAAOA,aAAa8W,MAAQ9W,GAAK,IAAI8W,MAAM9W,EAC7C,CAEO,SAASigD,GAASrgB,EAAOua,EAAcP,EAAMC,EAAOC,EAAMC,EAAKC,EAAMC,EAAQ5D,EAAQ9J,GAC1F,IAAIvL,EAAQ0P,KACRF,EAASxP,EAAMwP,OACf3uB,EAASmf,EAAMnf,OAEfq+B,EAAoB3T,EAAO,OAC3B4T,EAAe5T,EAAO,OACtB6T,EAAe7T,EAAO,SACtB8T,EAAa9T,EAAO,SACpB+T,EAAY/T,EAAO,SACnBgU,EAAahU,EAAO,SACpBiU,EAAcjU,EAAO,MACrB4R,EAAa5R,EAAO,MAExB,SAAS+G,EAAW7D,GAClB,OAAQ4G,EAAO5G,GAAQA,EAAOyQ,EACxBjG,EAAOxK,GAAQA,EAAO0Q,EACtBnG,EAAKvK,GAAQA,EAAO2Q,EACpBrG,EAAItK,GAAQA,EAAO4Q,EACnBxG,EAAMpK,GAAQA,EAAQqK,EAAKrK,GAAQA,EAAO6Q,EAAYC,EACtD3G,EAAKnK,GAAQA,EAAO+Q,EACpBrC,GAAY1O,EACpB,CA6BA,OA3BAzO,EAAMwP,OAAS,SAAShvC,GACtB,OAAO,IAAIsV,KAAK05B,EAAOhvC,GACzB,EAEAw/B,EAAMnf,OAAS,SAASjf,GACtB,OAAOtF,UAAU9B,OAASqmB,EAAOrlB,MAAMgK,KAAK5D,EAAG47B,KAAW3c,IAASjR,IAAI6+B,GACzE,EAEAzO,EAAMpB,MAAQ,SAASkU,GACrB,IAAI/tC,EAAI8b,IACR,OAAO+d,EAAM75B,EAAE,GAAIA,EAAEA,EAAEvK,OAAS,GAAgB,MAAZs4C,EAAmB,GAAKA,EAC9D,EAEA9S,EAAMsS,WAAa,SAAS7a,EAAOyY,GACjC,OAAoB,MAAbA,EAAoBoC,EAAa/G,EAAO2E,EACjD,EAEAlQ,EAAM2S,KAAO,SAASG,GACpB,IAAI/tC,EAAI8b,IAER,OADKiyB,GAAsC,mBAAnBA,EAASpW,QAAsBoW,EAAWqG,EAAap0C,EAAE,GAAIA,EAAEA,EAAEvK,OAAS,GAAgB,MAAZs4C,EAAmB,GAAKA,IACvHA,EAAWjyB,EAAO8xB,GAAK5tC,EAAG+tC,IAAa9S,CAChD,EAEAA,EAAMC,KAAO,WACX,OAAOA,GAAKD,EAAOif,GAASrgB,EAAOua,EAAcP,EAAMC,EAAOC,EAAMC,EAAKC,EAAMC,EAAQ5D,EAAQ9J,GACjG,EAEOvL,CACT,CC1DA,SAASoP,KACP,IAEItlC,EACAC,EACA01C,EACAnyC,EAGAyyB,EARAj9B,EAAK,EACLP,EAAK,EAKLq9B,EAAe3uB,GACfg8B,GAAQ,EAGZ,SAASjN,EAAMz/B,GACb,OAAY,MAALA,GAAaqK,MAAMrK,GAAKA,GAAKw/B,EAAUH,EAAqB,IAAR6f,EAAY,IAAOl/C,GAAK+M,EAAU/M,GAAKuJ,GAAM21C,EAAKxS,EAAQhsC,KAAKkgB,IAAI,EAAGlgB,KAAK2I,IAAI,EAAGrJ,IAAMA,GACrJ,CAcA,SAASm8B,EAAM8R,GACb,OAAO,SAAS5sC,GACd,IAAIy+B,EAAIC,EACR,OAAOhkC,UAAU9B,SAAW6lC,EAAIC,GAAM1+B,EAAGg+B,EAAe4O,EAAYnO,EAAIC,GAAKN,GAAS,CAACJ,EAAa,GAAIA,EAAa,GACvH,CACF,CAUA,OA3BAI,EAAMnf,OAAS,SAASjf,GACtB,OAAOtF,UAAU9B,SAAWsI,EAAIP,GAAMX,EAAGkI,EAAKwD,EAAUxK,GAAMA,GAAKiH,EAAKuD,EAAU/K,GAAMA,GAAKk9C,EAAM31C,IAAOC,EAAK,EAAI,GAAKA,EAAKD,GAAKk2B,GAAS,CAACl9B,EAAIP,EAClJ,EAEAy9B,EAAMiN,MAAQ,SAASrrC,GACrB,OAAOtF,UAAU9B,QAAUyyC,IAAUrrC,EAAGo+B,GAASiN,CACnD,EAEAjN,EAAMJ,aAAe,SAASh+B,GAC5B,OAAOtF,UAAU9B,QAAUolC,EAAeh+B,EAAGo+B,GAASJ,CACxD,EASAI,EAAMtD,MAAQA,EAAM8R,IAEpBxO,EAAMW,WAAajE,EAAMiS,IAEzB3O,EAAMD,QAAU,SAASn+B,GACvB,OAAOtF,UAAU9B,QAAUulC,EAAUn+B,EAAGo+B,GAASD,CACnD,EAEO,SAAS/gC,GAEd,OADAsO,EAAYtO,EAAG8K,EAAK9K,EAAE8D,GAAKiH,EAAK/K,EAAEuD,GAAKk9C,EAAM31C,IAAOC,EAAK,EAAI,GAAKA,EAAKD,GAChEk2B,CACT,CACF,CAEO,SAASC,GAAKnuB,EAAQD,GAC3B,OAAOA,EACFgP,OAAO/O,EAAO+O,UACd+e,aAAa9tB,EAAO8tB,gBACpBqN,MAAMn7B,EAAOm7B,SACblN,QAAQjuB,EAAOiuB,UACtB,CAgCO,SAAS2f,KACd,IAAI1f,EAAQoU,GAAOhF,MAMnB,OAJApP,EAAMC,KAAO,WACX,OAAOA,GAAKD,EAAO0f,MAAiB5P,SAAS9P,EAAM8P,WACrD,EAEOnQ,GAAiBvgC,MAAM4gC,EAAO1jC,UACvC,CC7FA,SAAS8yC,KACP,IAIItlC,EACAC,EACA41C,EACAF,EACAG,EAEAtyC,EAEAyyB,EAZAj9B,EAAK,EACLP,EAAK,GACLG,EAAK,EACLkG,EAAI,EAMJg3B,EAAe3uB,GAEfg8B,GAAQ,EAGZ,SAASjN,EAAMz/B,GACb,OAAOqK,MAAMrK,GAAKA,GAAKw/B,GAAWx/B,EAAI,KAAQA,GAAK+M,EAAU/M,IAAMwJ,IAAOnB,EAAIrI,EAAIqI,EAAImB,EAAK01C,EAAMG,GAAMhgB,EAAaqN,EAAQhsC,KAAKkgB,IAAI,EAAGlgB,KAAK2I,IAAI,EAAGrJ,IAAMA,GAC5J,CAcA,SAASm8B,EAAM8R,GACb,OAAO,SAAS5sC,GACd,IAAIy+B,EAAIC,EAAIuf,EACZ,OAAOvjD,UAAU9B,SAAW6lC,EAAIC,EAAIuf,GAAMj+C,EAAGg+B,EAAegP,GAAUJ,EAAa,CAACnO,EAAIC,EAAIuf,IAAM7f,GAAS,CAACJ,EAAa,GAAIA,EAAa,IAAMA,EAAa,GAC/J,CACF,CAUA,OA3BAI,EAAMnf,OAAS,SAASjf,GACtB,OAAOtF,UAAU9B,SAAWsI,EAAIP,EAAIG,GAAMd,EAAGkI,EAAKwD,EAAUxK,GAAMA,GAAKiH,EAAKuD,EAAU/K,GAAMA,GAAKo9C,EAAKryC,EAAU5K,GAAMA,GAAK+8C,EAAM31C,IAAOC,EAAK,EAAI,IAAOA,EAAKD,GAAK81C,EAAM71C,IAAO41C,EAAK,EAAI,IAAOA,EAAK51C,GAAKnB,EAAImB,EAAKD,GAAK,EAAK,EAAGk2B,GAAS,CAACl9B,EAAIP,EAAIG,EACnP,EAEAs9B,EAAMiN,MAAQ,SAASrrC,GACrB,OAAOtF,UAAU9B,QAAUyyC,IAAUrrC,EAAGo+B,GAASiN,CACnD,EAEAjN,EAAMJ,aAAe,SAASh+B,GAC5B,OAAOtF,UAAU9B,QAAUolC,EAAeh+B,EAAGo+B,GAASJ,CACxD,EASAI,EAAMtD,MAAQA,EAAM8R,IAEpBxO,EAAMW,WAAajE,EAAMiS,IAEzB3O,EAAMD,QAAU,SAASn+B,GACvB,OAAOtF,UAAU9B,QAAUulC,EAAUn+B,EAAGo+B,GAASD,CACnD,EAEO,SAAS/gC,GAEd,OADAsO,EAAYtO,EAAG8K,EAAK9K,EAAE8D,GAAKiH,EAAK/K,EAAEuD,GAAKo9C,EAAK3gD,EAAE0D,GAAK+8C,EAAM31C,IAAOC,EAAK,EAAI,IAAOA,EAAKD,GAAK81C,EAAM71C,IAAO41C,EAAK,EAAI,IAAOA,EAAK51C,GAAKnB,EAAImB,EAAKD,GAAK,EAAK,EAC7Ik2B,CACT,CACF,CAgCO,SAAS8f,KACd,IAAI9f,EAAQoU,GAAOhF,MAMnB,OAJApP,EAAMC,KAAO,WACX,OAAOA,GAAKD,EAAO8f,MAAgBhQ,SAAS9P,EAAM8P,WACpD,EAEOnQ,GAAiBvgC,MAAM4gC,EAAO1jC,UACvC,EHhFe,SAAuB0kC,GACpC8P,GDea,SAAsBA,GACnC,IAAIiP,EAAkBjP,EAAOkP,SACzBC,EAAcnP,EAAOrC,KACrByR,EAAcpP,EAAOqP,KACrBC,EAAiBtP,EAAOuP,QACxBC,EAAkBxP,EAAOyP,KACzBC,EAAuB1P,EAAO2P,UAC9BC,EAAgB5P,EAAO6P,OACvBC,EAAqB9P,EAAO+P,YAE5BC,EAAWtG,GAAS4F,GACpBW,EAAerG,GAAa0F,GAC5BY,EAAYxG,GAAS8F,GACrBW,EAAgBvG,GAAa4F,GAC7BY,EAAiB1G,GAASgG,GAC1BW,EAAqBzG,GAAa8F,GAClCY,EAAU5G,GAASkG,GACnBW,EAAc3G,GAAagG,GAC3BY,EAAe9G,GAASoG,GACxBW,EAAmB7G,GAAakG,GAEhCY,EAAU,CACZ94C,EAkQF,SAA4B3D,GAC1B,OAAOy7C,EAAqBz7C,EAAE+xC,SAChC,EAnQE2K,EAqQF,SAAuB18C,GACrB,OAAOu7C,EAAgBv7C,EAAE+xC,SAC3B,EAtQExsC,EAwQF,SAA0BvF,GACxB,OAAO67C,EAAmB77C,EAAEkzC,WAC9B,EAzQEyJ,EA2QF,SAAqB38C,GACnB,OAAO27C,EAAc37C,EAAEkzC,WACzB,EA5QEtvC,EAAK,KACL5D,EAAKq3C,GACLr9C,EAAKq9C,GACLpf,EAAKyf,GACL1Q,EAAKqR,GACLuE,EAAKrE,GACL7D,EAAK4C,GACLxN,EAAKyN,GACLx1C,EAAKy1C,GACL3C,EAAK4C,GACLnyC,EAAKqyC,GACLhD,EAAKiD,GACL92C,EAkQF,SAAsBd,GACpB,OAAOq7C,IAAiBr7C,EAAEgxC,YAAc,IAC1C,EAnQEzH,EAqQF,SAAuBvpC,GACrB,OAAO,KAAOA,EAAEkzC,WAAa,EAC/B,EAtQEiE,EAAK6C,GACLn2C,EAAKo2C,GACLrF,EAAKiD,GACLnN,EAAKoN,GACL/B,EAAKgC,GACL9B,EAAKgC,GACLt4C,EAAKu4C,GACL/B,EAAKgC,GACL38C,EAAK,KACLqwC,EAAK,KACLpwC,EAAK28C,GACLyE,EAAKvE,GACL/B,EAAKiC,GACL,IAAKuB,IAGH+C,EAAa,CACfn5C,EAuPF,SAA+B3D,GAC7B,OAAOy7C,EAAqBz7C,EAAEwyC,YAChC,EAxPEkK,EA0PF,SAA0B18C,GACxB,OAAOu7C,EAAgBv7C,EAAEwyC,YAC3B,EA3PEjtC,EA6PF,SAA6BvF,GAC3B,OAAO67C,EAAmB77C,EAAEszC,cAC9B,EA9PEqJ,EAgQF,SAAwB38C,GACtB,OAAO27C,EAAc37C,EAAEszC,cACzB,EAjQE1vC,EAAK,KACL5D,EAAKy4C,GACLz+C,EAAKy+C,GACLxgB,EAAK8gB,GACL/R,EAAK2S,GACLiD,EAAK/C,GACLnF,EAAKgE,GACL5O,EAAK6O,GACL52C,EAAK62C,GACL/D,EAAKgE,GACLvzC,EAAK0zC,GACLrE,EAAKsE,GACLn4C,EAuPF,SAAyBd,GACvB,OAAOq7C,IAAiBr7C,EAAEmxC,eAAiB,IAC7C,EAxPE5H,EA0PF,SAA0BvpC,GACxB,OAAO,KAAOA,EAAEszC,cAAgB,EAClC,EA3PE6D,EAAK6C,GACLn2C,EAAKo2C,GACLrF,EAAKsE,GACLxO,EAAKyO,GACLpD,EAAKsD,GACLpD,EAAKsD,GACL55C,EAAK65C,GACLrD,EAAKsD,GACLj+C,EAAK,KACLqwC,EAAK,KACLpwC,EAAKi+C,GACLmD,EAAKjD,GACLrD,EAAKuD,GACL,IAAKC,IAGHgD,EAAS,CACXp5C,EA4JF,SAA2B3D,EAAGkpC,EAAQnxC,GACpC,IAAIgC,EAAIoiD,EAAezV,KAAKwC,EAAOxxC,MAAMK,IACzC,OAAOgC,GAAKiG,EAAEL,EAAIy8C,EAAmBhmD,IAAI2D,EAAE,GAAGs4B,eAAgBt6B,EAAIgC,EAAE,GAAGtE,SAAU,CACnF,EA9JEinD,EAgKF,SAAsB18C,EAAGkpC,EAAQnxC,GAC/B,IAAIgC,EAAIkiD,EAAUvV,KAAKwC,EAAOxxC,MAAMK,IACpC,OAAOgC,GAAKiG,EAAEL,EAAIu8C,EAAc9lD,IAAI2D,EAAE,GAAGs4B,eAAgBt6B,EAAIgC,EAAE,GAAGtE,SAAU,CAC9E,EAlKE8P,EAoKF,SAAyBvF,EAAGkpC,EAAQnxC,GAClC,IAAIgC,EAAIwiD,EAAa7V,KAAKwC,EAAOxxC,MAAMK,IACvC,OAAOgC,GAAKiG,EAAEsF,EAAIk3C,EAAiBpmD,IAAI2D,EAAE,GAAGs4B,eAAgBt6B,EAAIgC,EAAE,GAAGtE,SAAU,CACjF,EAtKEknD,EAwKF,SAAoB38C,EAAGkpC,EAAQnxC,GAC7B,IAAIgC,EAAIsiD,EAAQ3V,KAAKwC,EAAOxxC,MAAMK,IAClC,OAAOgC,GAAKiG,EAAEsF,EAAIg3C,EAAYlmD,IAAI2D,EAAE,GAAGs4B,eAAgBt6B,EAAIgC,EAAE,GAAGtE,SAAU,CAC5E,EA1KEmO,EA4KF,SAA6B5D,EAAGkpC,EAAQnxC,GACtC,OAAOilD,EAAeh9C,EAAGg7C,EAAiB9R,EAAQnxC,EACpD,EA7KEiI,EAAK02C,GACL18C,EAAK08C,GACLze,EAAK+e,GACLhQ,EAAKqP,GACLuG,EAAKxG,GACL1B,EAAKkC,GACL9M,EAAK8M,GACL70C,EAAK40C,GACL9B,EAAKkC,GACLzxC,EAAKmxC,GACL9B,EAAKkC,GACL/1C,EAuIF,SAAqBd,EAAGkpC,EAAQnxC,GAC9B,IAAIgC,EAAIgiD,EAASrV,KAAKwC,EAAOxxC,MAAMK,IACnC,OAAOgC,GAAKiG,EAAEc,EAAIk7C,EAAa5lD,IAAI2D,EAAE,GAAGs4B,eAAgBt6B,EAAIgC,EAAE,GAAGtE,SAAU,CAC7E,EAzIE8zC,EAAKiN,GACLW,EAAKD,GACLrzC,EAAKuzC,GACLxC,EAAKkC,GACLpM,EAAKmL,GACLE,EAAKD,GACLG,EAAKD,GACLr2C,EAAKi2C,GACLO,EAAKD,GACL16C,EA0JF,SAAyBwE,EAAGkpC,EAAQnxC,GAClC,OAAOilD,EAAeh9C,EAAGk7C,EAAahS,EAAQnxC,EAChD,EA3JE8zC,EA6JF,SAAyB7rC,EAAGkpC,EAAQnxC,GAClC,OAAOilD,EAAeh9C,EAAGm7C,EAAajS,EAAQnxC,EAChD,EA9JE0D,EAAK46C,GACLwG,EAAKzG,GACLG,EAAKD,GACL,IAAKW,IAWP,SAASnK,EAAU3B,EAAWsR,GAC5B,OAAO,SAAS/S,GACd,IAII9lC,EACA2xC,EACA/O,EANA0C,EAAS,GACTnxC,GAAI,EACJgK,EAAI,EACJhI,EAAIoxC,EAAU11C,OAOlB,IAFMi0C,aAAgB34B,OAAO24B,EAAO,IAAI34B,MAAM24B,MAErC3xC,EAAIgC,GACqB,KAA5BoxC,EAAUt1C,WAAWkC,KACvBmxC,EAAOpzC,KAAKq1C,EAAUzzC,MAAMqK,EAAGhK,IACgB,OAA1Cw9C,EAAMJ,GAAKvxC,EAAIunC,EAAUhzC,SAASJ,KAAc6L,EAAIunC,EAAUhzC,SAASJ,GACvEw9C,EAAY,MAAN3xC,EAAY,IAAM,KACzB4iC,EAASiW,EAAQ74C,MAAIA,EAAI4iC,EAAOkD,EAAM6L,IAC1CrM,EAAOpzC,KAAK8N,GACZ7B,EAAIhK,EAAI,GAKZ,OADAmxC,EAAOpzC,KAAKq1C,EAAUzzC,MAAMqK,EAAGhK,IACxBmxC,EAAO/mB,KAAK,GACrB,CACF,CAEA,SAAS86B,EAAS9R,EAAWoL,GAC3B,OAAO,SAASrN,GACd,IAEI6K,EAAMC,EAFNh0C,EAAIg1C,GAAQ,UAAMx+C,EAAW,GAGjC,GAFQwmD,EAAeh9C,EAAGmrC,EAAWjC,GAAU,GAAI,IAE1CA,EAAOzzC,OAAQ,OAAO,KAG/B,GAAI,MAAOuK,EAAG,OAAO,IAAI+Q,KAAK/Q,EAAEm3C,GAChC,GAAI,MAAOn3C,EAAG,OAAO,IAAI+Q,KAAW,IAAN/Q,EAAE6D,GAAY,MAAO7D,EAAIA,EAAE60C,EAAI,IAY7D,GATI0B,KAAO,MAAOv2C,KAAIA,EAAEu2C,EAAI,GAGxB,MAAOv2C,IAAGA,EAAE00C,EAAI10C,EAAE00C,EAAI,GAAW,GAAN10C,EAAEc,QAGrBtK,IAARwJ,EAAEsF,IAAiBtF,EAAEsF,EAAI,MAAOtF,EAAIA,EAAEupC,EAAI,GAG1C,MAAOvpC,EAAG,CACZ,GAAIA,EAAEi2C,EAAI,GAAKj2C,EAAEi2C,EAAI,GAAI,OAAO,KAC1B,MAAOj2C,IAAIA,EAAEL,EAAI,GACnB,MAAOK,GAC2Bg0C,GAApCD,EAAOe,GAAQE,GAAQh1C,EAAEvE,EAAG,EAAG,KAAgB+2C,YAC/CuB,EAAOC,EAAM,GAAa,IAARA,EAAYtB,GAAU7a,KAAKkc,GAAQrB,GAAUqB,GAC/DA,EAAOtC,GAAOp2B,OAAO04B,EAAkB,GAAX/zC,EAAEi2C,EAAI,IAClCj2C,EAAEvE,EAAIs4C,EAAKR,iBACXvzC,EAAEsF,EAAIyuC,EAAKT,cACXtzC,EAAEA,EAAI+zC,EAAKnC,cAAgB5xC,EAAEL,EAAI,GAAK,IAEAq0C,GAAtCD,EAAOU,GAAUO,GAAQh1C,EAAEvE,EAAG,EAAG,KAAgBs2C,SACjDgC,EAAOC,EAAM,GAAa,IAARA,EAAY/B,GAAWpa,KAAKkc,GAAQ9B,GAAW8B,GACjEA,EAAO3C,GAAQ/1B,OAAO04B,EAAkB,GAAX/zC,EAAEi2C,EAAI,IACnCj2C,EAAEvE,EAAIs4C,EAAKZ,cACXnzC,EAAEsF,EAAIyuC,EAAKb,WACXlzC,EAAEA,EAAI+zC,EAAKxC,WAAavxC,EAAEL,EAAI,GAAK,EAEvC,MAAW,MAAOK,GAAK,MAAOA,KACtB,MAAOA,IAAIA,EAAEL,EAAI,MAAOK,EAAIA,EAAE0qC,EAAI,EAAI,MAAO1qC,EAAI,EAAI,GAC3Dg0C,EAAM,MAAOh0C,EAAI80C,GAAQE,GAAQh1C,EAAEvE,EAAG,EAAG,IAAI+2C,YAAciC,GAAUO,GAAQh1C,EAAEvE,EAAG,EAAG,IAAIs2C,SACzF/xC,EAAEsF,EAAI,EACNtF,EAAEA,EAAI,MAAOA,GAAKA,EAAEL,EAAI,GAAK,EAAU,EAANK,EAAEm2C,GAASnC,EAAM,GAAK,EAAIh0C,EAAEL,EAAU,EAANK,EAAE+1C,GAAS/B,EAAM,GAAK,GAKzF,MAAI,MAAOh0C,GACTA,EAAE00C,GAAK10C,EAAEu2C,EAAI,IAAM,EACnBv2C,EAAE20C,GAAK30C,EAAEu2C,EAAI,IACNzB,GAAQ90C,IAIVy0C,GAAUz0C,EACnB,CACF,CAEA,SAASg9C,EAAeh9C,EAAGmrC,EAAWjC,EAAQnnC,GAO5C,IANA,IAGI6B,EACAs5C,EAJAnlD,EAAI,EACJgC,EAAIoxC,EAAU11C,OACd6P,EAAI4jC,EAAOzzC,OAIRsC,EAAIgC,GAAG,CACZ,GAAIgI,GAAKuD,EAAG,OAAO,EAEnB,GAAU,MADV1B,EAAIunC,EAAUt1C,WAAWkC,OAIvB,GAFA6L,EAAIunC,EAAUhzC,OAAOJ,OACrBmlD,EAAQH,EAAOn5C,KAAKuxC,GAAOhK,EAAUhzC,OAAOJ,KAAO6L,MACnC7B,EAAIm7C,EAAMl9C,EAAGkpC,EAAQnnC,IAAM,EAAI,OAAO,OACjD,GAAI6B,GAAKslC,EAAOrzC,WAAWkM,KAChC,OAAO,CAEX,CAEA,OAAOA,CACT,CAuFA,OAzMA06C,EAAQjhD,EAAIsxC,EAAUoO,EAAauB,GACnCA,EAAQ5Q,EAAIiB,EAAUqO,EAAasB,GACnCA,EAAQ74C,EAAIkpC,EAAUkO,EAAiByB,GACvCK,EAAWthD,EAAIsxC,EAAUoO,EAAa4B,GACtCA,EAAWjR,EAAIiB,EAAUqO,EAAa2B,GACtCA,EAAWl5C,EAAIkpC,EAAUkO,EAAiB8B,GAoMnC,CACLtW,OAAQ,SAAS2E,GACf,IAAIlT,EAAI6U,EAAU3B,GAAa,GAAIsR,GAEnC,OADAxkB,EAAEp4B,SAAW,WAAa,OAAOsrC,CAAW,EACrClT,CACT,EACAilB,MAAO,SAAS/R,GACd,IAAIrqC,EAAIm8C,EAAS9R,GAAa,IAAI,GAElC,OADArqC,EAAEjB,SAAW,WAAa,OAAOsrC,CAAW,EACrCrqC,CACT,EACAo0C,UAAW,SAAS/J,GAClB,IAAIlT,EAAI6U,EAAU3B,GAAa,GAAI2R,GAEnC,OADA7kB,EAAEp4B,SAAW,WAAa,OAAOsrC,CAAW,EACrClT,CACT,EACAklB,SAAU,SAAShS,GACjB,IAAIrqC,EAAIm8C,EAAS9R,GAAa,IAAI,GAElC,OADArqC,EAAEjB,SAAW,WAAa,OAAOsrC,CAAW,EACrCrqC,CACT,EAEJ,CC7WWyuC,CAAatT,GACtBgZ,GAAalJ,GAAOvF,OACRuF,GAAOmR,MACnBhI,GAAYnJ,GAAOmJ,UACRnJ,GAAOoR,QAEpB,CAlBAC,CAAc,CACZnC,SAAU,SACVvR,KAAM,aACN0R,KAAM,eACNE,QAAS,CAAC,KAAM,MAChBE,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACzEE,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDE,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvHE,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,0EG6C9E,SAASuB,IACtB,IAAIpiB,EAAQ0S,GAAUtD,KAAcn+B,KAMpC,OAJA+uB,EAAMC,KAAO,WACX,OAAOA,GAAKD,EAAOoiB,IACrB,EAEOziB,GAAiBvgC,MAAM4gC,EAAO1jC,UACvC,oBAEO,SAAS+lD,IACd,IAAIriB,EAAQqT,GAAQjE,MAAevuB,OAAO,CAAC,GAAK,EAAG,KAMnD,OAJAmf,EAAMC,KAAO,WACX,OAAOA,GAAKD,EAAOqiB,KAAgBr0B,KAAKgS,EAAMhS,OAChD,EAEO2R,GAAiBvgC,MAAM4gC,EAAO1jC,UACvC,0CAsBO,WACL,OAAOwjD,GAAa1gD,MAAM,KAAM9C,WAAWwzC,SAAS,GACtD,uBAtBO,SAASwS,IACd,IAAItiB,EAAQgU,GAAU5E,MAMtB,OAJApP,EAAMC,KAAO,WACX,OAAOA,GAAKD,EAAOsiB,KAAmBt8C,SAASg6B,EAAMh6B,WACvD,EAEO25B,GAAiBvgC,MAAM4gC,EAAO1jC,UACvC,gBCtFe,SAAS2U,EAAS4P,GAC/B,IAAIkf,EAEJ,SAASC,EAAMz/B,GACb,OAAY,MAALA,GAAaqK,MAAMrK,GAAKA,GAAKw/B,EAAUx/B,CAChD,CAkBA,OAhBAy/B,EAAMwP,OAASxP,EAEfA,EAAMnf,OAASmf,EAAMtD,MAAQ,SAAS96B,GACpC,OAAOtF,UAAU9B,QAAUqmB,EAASrlB,MAAMgK,KAAK5D,EAAG47B,IAASwC,GAASnf,EAAOpkB,OAC7E,EAEAujC,EAAMD,QAAU,SAASn+B,GACvB,OAAOtF,UAAU9B,QAAUulC,EAAUn+B,EAAGo+B,GAASD,CACnD,EAEAC,EAAMC,KAAO,WACX,OAAOhvB,EAAS4P,GAAQkf,QAAQA,EAClC,EAEAlf,EAASvkB,UAAU9B,OAASgB,MAAMgK,KAAKqb,EAAQ2c,IAAU,CAAC,EAAG,GAEtDkV,GAAU1S,EACnB,+BtBgCe,SAASqN,IACtB,IAAIrN,EAAQ0P,KAQZ,OANA1P,EAAMC,KAAO,WACX,OAAOA,GAAKD,EAAOqN,IACrB,EAEA3N,GAAUtgC,MAAM4gC,EAAO1jC,WAEhBo2C,GAAU1S,EACnB,WEiEe,SAASZ,IACtB,MAAMY,EAAQqT,GAAQjE,MAAevuB,OAAO,CAAC,EAAG,KAGhD,OAFAmf,EAAMC,KAAO,IAAMA,GAAKD,EAAOZ,KAAOpR,KAAKgS,EAAMhS,QACjD0R,GAAUtgC,MAAM4gC,EAAO1jC,WAChB0jC,CACT,6BrCzCO,WACL,OAAOY,GAASV,GAAK9gC,MAAM,KAAM9C,WAAWikC,aAAa,GAC3D,4B0DjGe,SAASgiB,IACtB,IAGIxiB,EAHAlf,EAAS,GACT6b,EAAQ,GACR8lB,EAAa,GAGjB,SAAS/hB,IACP,IAAI3jC,EAAI,EAAGgC,EAAImC,KAAKkgB,IAAI,EAAGub,EAAMliC,QAEjC,IADAgoD,EAAa,IAAIhnD,MAAMsD,EAAI,KAClBhC,EAAIgC,GAAG0jD,EAAW1lD,EAAI,GAAK2lD,GAAU5hC,EAAQ/jB,EAAIgC,GAC1D,OAAOkhC,CACT,CAEA,SAASA,EAAMz/B,GACb,OAAY,MAALA,GAAaqK,MAAMrK,GAAKA,GAAKw/B,EAAUrD,EAAMyS,GAAOqT,EAAYjiD,GACzE,CAqCA,OAnCAy/B,EAAM0iB,aAAe,SAASliD,GAC5B,IAAI1D,EAAI4/B,EAAM3gC,QAAQyE,GACtB,OAAO1D,EAAI,EAAI,CAAC4K,IAAKA,KAAO,CAC1B5K,EAAI,EAAI0lD,EAAW1lD,EAAI,GAAK+jB,EAAO,GACnC/jB,EAAI0lD,EAAWhoD,OAASgoD,EAAW1lD,GAAK+jB,EAAOA,EAAOrmB,OAAS,GAEnE,EAEAwlC,EAAMnf,OAAS,SAASjf,GACtB,IAAKtF,UAAU9B,OAAQ,OAAOqmB,EAAOpkB,QACrCokB,EAAS,GACT,IAAK,IAAI9b,KAAKnD,EAAY,MAALmD,GAAc6F,MAAM7F,GAAKA,IAAI8b,EAAOhmB,KAAKkK,GAE9D,OADA8b,EAAOnE,KAAKmgB,IACL4D,GACT,EAEAT,EAAMtD,MAAQ,SAAS96B,GACrB,OAAOtF,UAAU9B,QAAUkiC,EAAQlhC,MAAMgK,KAAK5D,GAAI6+B,KAAa/D,EAAMjgC,OACvE,EAEAujC,EAAMD,QAAU,SAASn+B,GACvB,OAAOtF,UAAU9B,QAAUulC,EAAUn+B,EAAGo+B,GAASD,CACnD,EAEAC,EAAM2iB,UAAY,WAChB,OAAOH,EAAW/lD,OACpB,EAEAujC,EAAMC,KAAO,WACX,OAAOsiB,IACF1hC,OAAOA,GACP6b,MAAMA,GACNqD,QAAQA,EACf,EAEOL,GAAUtgC,MAAM4gC,EAAO1jC,UAChC,gBCpDe,SAASsmD,IACtB,IAKI7iB,EALAj9B,EAAK,EACLP,EAAK,EACLzD,EAAI,EACJ+hB,EAAS,CAAC,IACV6b,EAAQ,CAAC,EAAG,GAGhB,SAASsD,EAAMz/B,GACb,OAAY,MAALA,GAAaA,GAAKA,EAAIm8B,EAAMyS,GAAOtuB,EAAQtgB,EAAG,EAAGzB,IAAMihC,CAChE,CAEA,SAASU,IACP,IAAI3jC,GAAI,EAER,IADA+jB,EAAS,IAAIrlB,MAAMsD,KACVhC,EAAIgC,GAAG+hB,EAAO/jB,KAAOA,EAAI,GAAKyF,GAAMzF,EAAIgC,GAAKgE,IAAOhE,EAAI,GACjE,OAAOkhC,CACT,CAiCA,OA/BAA,EAAMnf,OAAS,SAASjf,GACtB,OAAOtF,UAAU9B,SAAWsI,EAAIP,GAAMX,EAAGkB,GAAMA,EAAIP,GAAMA,EAAIk+B,KAAa,CAAC39B,EAAIP,EACjF,EAEAy9B,EAAMtD,MAAQ,SAAS96B,GACrB,OAAOtF,UAAU9B,QAAUsE,GAAK49B,EAAQlhC,MAAMgK,KAAK5D,IAAIpH,OAAS,EAAGimC,KAAa/D,EAAMjgC,OACxF,EAEAujC,EAAM0iB,aAAe,SAASliD,GAC5B,IAAI1D,EAAI4/B,EAAM3gC,QAAQyE,GACtB,OAAO1D,EAAI,EAAI,CAAC4K,IAAKA,KACf5K,EAAI,EAAI,CAACgG,EAAI+d,EAAO,IACpB/jB,GAAKgC,EAAI,CAAC+hB,EAAO/hB,EAAI,GAAIyD,GACzB,CAACse,EAAO/jB,EAAI,GAAI+jB,EAAO/jB,GAC/B,EAEAkjC,EAAMD,QAAU,SAASn+B,GACvB,OAAOtF,UAAU9B,QAAUulC,EAAUn+B,EAAGo+B,GAASA,CACnD,EAEAA,EAAMwiB,WAAa,WACjB,OAAO3hC,EAAOpkB,OAChB,EAEAujC,EAAMC,KAAO,WACX,OAAO2iB,IACF/hC,OAAO,CAAC/d,EAAIP,IACZm6B,MAAMA,GACNqD,QAAQA,EACf,EAEOL,GAAUtgC,MAAMszC,GAAU1S,GAAQ1jC,UAC3C,cnB1Ce,SAASumD,IACtB,IAGI9iB,EAHA+iB,EAAUpT,KACVhT,EAAQ,CAAC,EAAG,GACZx3B,GAAQ,EAGZ,SAAS86B,EAAMz/B,GACb,IAAIC,EAXR,SAAkBD,GAChB,OAAOU,KAAKqI,KAAK/I,GAAKU,KAAKE,KAAKF,KAAKoC,IAAI9C,GAC3C,CASYwiD,CAASD,EAAQviD,IACzB,OAAOqK,MAAMpK,GAAKu/B,EAAU76B,EAAQjE,KAAKiE,MAAM1E,GAAKA,CACtD,CAuCA,OArCAw/B,EAAMwP,OAAS,SAAShvC,GACtB,OAAOsiD,EAAQtT,OAAO6E,GAAO7zC,GAC/B,EAEAw/B,EAAMnf,OAAS,SAASjf,GACtB,OAAOtF,UAAU9B,QAAUsoD,EAAQjiC,OAAOjf,GAAIo+B,GAAS8iB,EAAQjiC,QACjE,EAEAmf,EAAMtD,MAAQ,SAAS96B,GACrB,OAAOtF,UAAU9B,QAAUsoD,EAAQpmB,OAAOA,EAAQlhC,MAAMgK,KAAK5D,EAAG47B,KAAS5tB,IAAIykC,KAAUrU,GAAStD,EAAMjgC,OACxG,EAEAujC,EAAMW,WAAa,SAAS/+B,GAC1B,OAAOo+B,EAAMtD,MAAM96B,GAAGsD,OAAM,EAC9B,EAEA86B,EAAM96B,MAAQ,SAAStD,GACrB,OAAOtF,UAAU9B,QAAU0K,IAAUtD,EAAGo+B,GAAS96B,CACnD,EAEA86B,EAAMiN,MAAQ,SAASrrC,GACrB,OAAOtF,UAAU9B,QAAUsoD,EAAQ7V,MAAMrrC,GAAIo+B,GAAS8iB,EAAQ7V,OAChE,EAEAjN,EAAMD,QAAU,SAASn+B,GACvB,OAAOtF,UAAU9B,QAAUulC,EAAUn+B,EAAGo+B,GAASD,CACnD,EAEAC,EAAMC,KAAO,WACX,OAAO4iB,EAAOC,EAAQjiC,SAAU6b,GAC3Bx3B,MAAMA,GACN+nC,MAAM6V,EAAQ7V,SACdlN,QAAQA,EACf,EAEAL,GAAUtgC,MAAM4gC,EAAO1jC,WAEhBo2C,GAAU1S,EACnB,kBeEe,SAASgjB,IACtB,IAAIhjB,EAAQ0S,GAAUtD,KAAcn+B,KAMpC,OAJA+uB,EAAMC,KAAO,WACX,OAAOA,GAAKD,EAAOgjB,IACrB,EAEOrjB,GAAiBvgC,MAAM4gC,EAAO1jC,UACvC,qBAEO,SAAS2mD,IACd,IAAIjjB,EAAQqT,GAAQjE,MAAevuB,OAAO,CAAC,EAAG,KAM9C,OAJAmf,EAAMC,KAAO,WACX,OAAOA,GAAKD,EAAOijB,KAAiBj1B,KAAKgS,EAAMhS,OACjD,EAEO2R,GAAiBvgC,MAAM4gC,EAAO1jC,UACvC,gDK9Ee,SAAS4mD,IACtB,IAAIriC,EAAS,GACT+e,EAAe3uB,GAEnB,SAAS+uB,EAAMz/B,GACb,GAAS,MAALA,IAAcqK,MAAMrK,GAAKA,GAAI,OAAOq/B,GAAcuP,GAAOtuB,EAAQtgB,EAAG,GAAK,IAAMsgB,EAAOrmB,OAAS,GACrG,CA0BA,OAxBAwlC,EAAMnf,OAAS,SAASjf,GACtB,IAAKtF,UAAU9B,OAAQ,OAAOqmB,EAAOpkB,QACrCokB,EAAS,GACT,IAAK,IAAI9b,KAAKnD,EAAY,MAALmD,GAAc6F,MAAM7F,GAAKA,IAAI8b,EAAOhmB,KAAKkK,GAE9D,OADA8b,EAAOnE,KAAKmgB,IACLmD,CACT,EAEAA,EAAMJ,aAAe,SAASh+B,GAC5B,OAAOtF,UAAU9B,QAAUolC,EAAeh+B,EAAGo+B,GAASJ,CACxD,EAEAI,EAAMtD,MAAQ,WACZ,OAAO7b,EAAOjR,IAAI,CAAC7K,EAAGjI,IAAM8iC,EAAa9iC,GAAK+jB,EAAOrmB,OAAS,IAChE,EAEAwlC,EAAM2iB,UAAY,SAAS7jD,GACzB,OAAOtD,MAAMgK,KAAK,CAAChL,OAAQsE,EAAI,GAAI,CAAC8C,EAAG9E,I/DpB5B,SAAkBkU,EAAQnL,GAEvC,IAAM/G,GADNkS,EAASmyC,aAAa39C,KRNjB,UAAkBwL,GAErB,IAAK,IAAIpX,KAASoX,EACH,MAATpX,IAAkBA,GAASA,IAAUA,UACjCA,EAWd,CQT6BwpD,CAAQpyC,KAClBxW,UAAWoQ,MAAM/E,GAAKA,GAAvC,CACA,GAAIA,GAAK,GAAK/G,EAAI,EAAG,OAAO8K,GAAIoH,GAChC,GAAInL,GAAK,EAAG,OAAOsb,GAAInQ,GACvB,IAAIlS,EACAhC,GAAKgC,EAAI,GAAK+G,EACd+F,EAAK3K,KAAK+D,MAAMlI,GAChB2iC,EAASte,GAAI8d,GAAYjuB,EAAQpF,GAAIyK,SAAS,EAAGzK,EAAK,IAE1D,OAAO6zB,GADM71B,GAAIoH,EAAOqF,SAASzK,EAAK,IACZ6zB,IAAW3iC,EAAI8O,EARE,CAS7C,C+DSiD22C,CAAS1hC,EAAQ/jB,EAAIgC,GACpE,EAEAkhC,EAAMC,KAAO,WACX,OAAOijB,EAAmBtjB,GAAc/e,OAAOA,EACjD,EAEO8e,GAAiBvgC,MAAM4gC,EAAO1jC,UACvC,sBLmEO,WACL,OAAOojD,GAActgD,MAAM,KAAM9C,WAAWwzC,SAAS,GACvD,wBAtBO,SAASuT,IACd,IAAIrjB,EAAQgU,GAAU5E,MAMtB,OAJApP,EAAMC,KAAO,WACX,OAAOA,GAAKD,EAAOqjB,KAAoBr9C,SAASg6B,EAAMh6B,WACxD,EAEO25B,GAAiBvgC,MAAM4gC,EAAO1jC,UACvC,YhB7CO,WACL,OAAOkiC,GAAIp/B,MAAM,KAAM9C,WAAWwzC,SAAS,GAC7C,cDvBe,SAASwT,IACtB,IAAItjB,EAAQgU,GAAU5E,MAMtB,OAJApP,EAAMC,KAAO,WACX,OAAOA,GAAKD,EAAOsjB,KAAUt9C,SAASg6B,EAAMh6B,WAC9C,EAEO05B,GAAUtgC,MAAM4gC,EAAO1jC,UAChC,iBuB/Be,SAASmmD,IACtB,IAEI1iB,EAFAlf,EAAS,CAAC,IACV6b,EAAQ,CAAC,EAAG,GAEZ59B,EAAI,EAER,SAASkhC,EAAMz/B,GACb,OAAY,MAALA,GAAaA,GAAKA,EAAIm8B,EAAMyS,GAAOtuB,EAAQtgB,EAAG,EAAGzB,IAAMihC,CAChE,CA0BA,OAxBAC,EAAMnf,OAAS,SAASjf,GACtB,OAAOtF,UAAU9B,QAAUqmB,EAASrlB,MAAMgK,KAAK5D,GAAI9C,EAAImC,KAAK2I,IAAIiX,EAAOrmB,OAAQkiC,EAAMliC,OAAS,GAAIwlC,GAASnf,EAAOpkB,OACpH,EAEAujC,EAAMtD,MAAQ,SAAS96B,GACrB,OAAOtF,UAAU9B,QAAUkiC,EAAQlhC,MAAMgK,KAAK5D,GAAI9C,EAAImC,KAAK2I,IAAIiX,EAAOrmB,OAAQkiC,EAAMliC,OAAS,GAAIwlC,GAAStD,EAAMjgC,OAClH,EAEAujC,EAAM0iB,aAAe,SAASliD,GAC5B,IAAI1D,EAAI4/B,EAAM3gC,QAAQyE,GACtB,MAAO,CAACqgB,EAAO/jB,EAAI,GAAI+jB,EAAO/jB,GAChC,EAEAkjC,EAAMD,QAAU,SAASn+B,GACvB,OAAOtF,UAAU9B,QAAUulC,EAAUn+B,EAAGo+B,GAASD,CACnD,EAEAC,EAAMC,KAAO,WACX,OAAOwiB,IACF5hC,OAAOA,GACP6b,MAAMA,GACNqD,QAAQA,EACf,EAEOL,GAAUtgC,MAAM4gC,EAAO1jC,UAChC,YP8Be,WACb,OAAOojC,GAAUtgC,MAAM6/C,GAAS3F,GAAWC,GAAkBhB,GAAUR,GAAWwL,GAAUpN,GAASL,GAAUN,GAAYgO,GAAYxJ,IAAYn5B,OAAO,CAAC,IAAI/K,KAAK,IAAM,EAAG,GAAI,IAAIA,KAAK,IAAM,EAAG,KAAMxZ,UAC3M,WQjEe,WACb,OAAOojC,GAAUtgC,MAAM6/C,GAAS7F,GAAUC,GAAiBZ,GAASN,GAAUsL,GAASjN,GAAQR,GAASL,GAAW+N,GAAWzJ,IAAWp5B,OAAO,CAAC/K,KAAKgkC,IAAI,IAAM,EAAG,GAAIhkC,KAAKgkC,IAAI,IAAM,EAAG,KAAMx9C,UACjM,kBCMWqnD,GAA6BvmC,GAASA,EAAMwmC,UAO5CC,GAAwCrmC,GAAe,CAACmmC,IAA6BG,IAC9F,IAAIC,EAAsC,MAAvBD,EAAUF,UAAoBE,EAAUF,UAAUppD,OAAS,EAAI,EAClF,MAAO,CACLopD,UAAWE,EAAUF,UACrBI,aAAcF,EAAUE,aACxBD,eACAE,eAAgB,KCvBb,SAASC,GAAyB/sB,GACvC,GAAI37B,MAAMC,QAAQ07B,IAAmB,IAAbA,EAAE38B,OAAc,CACtC,IAAKoP,EAAKuX,GAAOgW,EACjB,GAAI7K,GAAoB1iB,IAAQ0iB,GAAoBnL,GAClD,OAAO,CAEX,CACA,OAAO,CACT,CACO,SAASgjC,GAAaC,EAAgBC,EAAgBC,GAC3D,OAAIA,EAEKF,EAOF,CAACnjD,KAAK2I,IAAIw6C,EAAe,GAAIC,EAAe,IAAKpjD,KAAKkgB,IAAIijC,EAAe,GAAIC,EAAe,IACrG,CCTA,IA4DEE,GA5DEC,GAAa,IAiDfC,IAAW,EAEXC,GAAe,kBACfC,GAAkBD,GAAe,qBACjCE,GAAqBF,GAAe,0BAEpCG,GAAY5jD,KAAK+D,MACjB8/C,GAAU7jD,KAAKu9B,IAEfumB,GAAY,qCAGZC,GAAO,IAEPvtC,GAAmB,iBACnBwtC,GAAQJ,GAAUptC,oBAGlBytC,GAAI,CAAA,EAg0BN,SAASryC,GAAItS,EAAGC,GACd,IAAI2kD,EAAOpgD,EAAGhG,EAAGjC,EAAGmI,EAAGrI,EAAKwoD,EAAIC,EAC9BC,EAAO/kD,EAAEsE,YACT0gD,EAAKD,EAAKhV,UAGZ,IAAK/vC,EAAEqI,IAAMpI,EAAEoI,EAKb,OADKpI,EAAEoI,IAAGpI,EAAI,IAAI8kD,EAAK/kD,IAChBkkD,GAAWv/C,GAAM1E,EAAG+kD,GAAM/kD,EAcnC,GAXA4kD,EAAK7kD,EAAEwE,EACPsgD,EAAK7kD,EAAEuE,EAIPE,EAAI1E,EAAExB,EACNA,EAAIyB,EAAEzB,EACNqmD,EAAKA,EAAG3oD,QACRK,EAAImI,EAAIlG,EAGD,CAsBL,IArBIjC,EAAI,GACNiI,EAAIqgD,EACJtoD,GAAKA,EACLF,EAAMyoD,EAAG7qD,SAETuK,EAAIsgD,EACJtmD,EAAIkG,EACJrI,EAAMwoD,EAAG5qD,QAOPsC,GAFJF,GADAqI,EAAIhE,KAAK27B,KAAK2oB,EA12BL,IA22BC3oD,EAAMqI,EAAI,EAAIrI,EAAM,KAG5BE,EAAIF,EACJmI,EAAEvK,OAAS,GAIbuK,EAAE85B,UACK/hC,KAAMiI,EAAElK,KAAK,GACpBkK,EAAE85B,SACJ,CAcA,KAZAjiC,EAAMwoD,EAAG5qD,SACTsC,EAAIuoD,EAAG7qD,QAGO,IACZsC,EAAIF,EACJmI,EAAIsgD,EACJA,EAAKD,EACLA,EAAKrgD,GAIFogD,EAAQ,EAAGroD,GACdqoD,GAASC,IAAKtoD,GAAKsoD,EAAGtoD,GAAKuoD,EAAGvoD,GAAKqoD,GAASH,GAAO,EACnDI,EAAGtoD,IAAMkoD,GAUX,IAPIG,IACFC,EAAGI,QAAQL,KACTpmD,GAKCnC,EAAMwoD,EAAG5qD,OAAqB,GAAb4qD,IAAKxoD,IAAYwoD,EAAGK,MAK1C,OAHAjlD,EAAEuE,EAAIqgD,EACN5kD,EAAEzB,EAAIA,EAEC0lD,GAAWv/C,GAAM1E,EAAG+kD,GAAM/kD,CACnC,CAGA,SAASklD,GAAW5oD,EAAG8M,EAAKuX,GAC1B,GAAIrkB,MAAQA,GAAKA,EAAI8M,GAAO9M,EAAIqkB,EAC9B,MAAMte,MAAM8hD,GAAkB7nD,EAElC,CAGA,SAAS6oD,GAAe5gD,GACtB,IAAIjI,EAAGmI,EAAG2gD,EACRC,EAAkB9gD,EAAEvK,OAAS,EAC7BsrD,EAAM,GACNphD,EAAIK,EAAE,GAER,GAAI8gD,EAAkB,EAAG,CAEvB,IADAC,GAAOphD,EACF5H,EAAI,EAAGA,EAAI+oD,EAAiB/oD,KAE/BmI,EA16BO,GAy6BP2gD,EAAK7gD,EAAEjI,GAAK,IACMtC,UACXsrD,GAAOC,GAAc9gD,IAC5B6gD,GAAOF,GAKT3gD,EAj7BS,GAg7BT2gD,GADAlhD,EAAIK,EAAEjI,IACG,IACStC,UACXsrD,GAAOC,GAAc9gD,GAC9B,MAAO,GAAU,IAANP,EACT,MAAO,IAIT,KAAOA,EAAI,IAAO,GAAIA,GAAK,GAE3B,OAAOohD,EAAMphD,CACf,CAr4BAwgD,GAAEc,cAAgBd,GAAE7hD,IAAM,WACxB,IAAI9C,EAAI,IAAIoB,KAAKkD,YAAYlD,MAE7B,OADIpB,EAAEqI,IAAGrI,EAAEqI,EAAI,GACRrI,CACT,EAUA2kD,GAAEe,WAAaf,GAAEgB,IAAM,SAAU1lD,GAC/B,IAAI1D,EAAGgK,EAAGq/C,EAAKC,EACb7lD,EAAIoB,KAKN,GAHAnB,EAAI,IAAID,EAAEsE,YAAYrE,GAGlBD,EAAEqI,IAAMpI,EAAEoI,EAAG,OAAOrI,EAAEqI,IAAMpI,EAAEoI,EAGlC,GAAIrI,EAAExB,IAAMyB,EAAEzB,EAAG,OAAOwB,EAAExB,EAAIyB,EAAEzB,EAAIwB,EAAEqI,EAAI,EAAI,GAAI,EAMlD,IAAK9L,EAAI,EAAGgK,GAJZq/C,EAAM5lD,EAAEwE,EAAEvK,SACV4rD,EAAM5lD,EAAEuE,EAAEvK,QAGkB2rD,EAAMC,EAAKtpD,EAAIgK,IAAKhK,EAC9C,GAAIyD,EAAEwE,EAAEjI,KAAO0D,EAAEuE,EAAEjI,GAAI,OAAOyD,EAAEwE,EAAEjI,GAAK0D,EAAEuE,EAAEjI,GAAKyD,EAAEqI,EAAI,EAAI,GAAI,EAIhE,OAAOu9C,IAAQC,EAAM,EAAID,EAAMC,EAAM7lD,EAAEqI,EAAI,EAAI,GAAI,CACrD,EAOAs8C,GAAEmB,cAAgBnB,GAAEv2B,GAAK,WACvB,IAAIpuB,EAAIoB,KACN+C,EAAInE,EAAEwE,EAAEvK,OAAS,EACjBm0B,EApGS,GAoGHjqB,EAAInE,EAAExB,GAId,GADA2F,EAAInE,EAAEwE,EAAEL,GACD,KAAOA,EAAI,IAAM,EAAGA,GAAK,GAAIiqB,IAEpC,OAAOA,EAAK,EAAI,EAAIA,CACtB,EAQAu2B,GAAEoB,UAAYpB,GAAEqB,IAAM,SAAU/lD,GAC9B,OAAOgmD,GAAO7kD,KAAM,IAAIA,KAAKkD,YAAYrE,GAC3C,EAQA0kD,GAAEuB,mBAAqBvB,GAAEwB,KAAO,SAAUlmD,GACxC,IACE8kD,EADM3jD,KACGkD,YACX,OAAOK,GAAMshD,GAFL7kD,KAEe,IAAI2jD,EAAK9kD,GAAI,EAAG,GAAI8kD,EAAKhV,UAClD,EAOA4U,GAAEyB,OAASzB,GAAEzzC,GAAK,SAAUjR,GAC1B,OAAQmB,KAAKukD,IAAI1lD,EACnB,EAOA0kD,GAAEpV,SAAW,WACX,OAAO8W,GAAkBjlD,KAC3B,EAQAujD,GAAE2B,YAAc3B,GAAE4B,GAAK,SAAUtmD,GAC/B,OAAOmB,KAAKukD,IAAI1lD,GAAK,CACvB,EAQA0kD,GAAE6B,qBAAuB7B,GAAE8B,IAAM,SAAUxmD,GACzC,OAAOmB,KAAKukD,IAAI1lD,IAAM,CACxB,EAOA0kD,GAAExtC,UAAYwtC,GAAE+B,MAAQ,WACtB,OAAOtlD,KAAK5C,EAAI4C,KAAKoD,EAAEvK,OAAS,CAClC,EAOA0qD,GAAEgC,WAAahC,GAAEiC,MAAQ,WACvB,OAAOxlD,KAAKiH,EAAI,CAClB,EAOAs8C,GAAEkC,WAAalC,GAAEmC,MAAQ,WACvB,OAAO1lD,KAAKiH,EAAI,CAClB,EAOAs8C,GAAEoC,OAAS,WACT,OAAkB,IAAX3lD,KAAKiH,CACd,EAOAs8C,GAAEqC,SAAWrC,GAAEsC,GAAK,SAAUhnD,GAC5B,OAAOmB,KAAKukD,IAAI1lD,GAAK,CACvB,EAOA0kD,GAAEuC,kBAAoBvC,GAAEwC,IAAM,SAAUlnD,GACtC,OAAOmB,KAAKukD,IAAI1lD,GAAK,CACvB,EAgBA0kD,GAAEyC,UAAYzC,GAAE9lB,IAAM,SAAUpR,GAC9B,IAAI/uB,EACFsB,EAAIoB,KACJ2jD,EAAO/kD,EAAEsE,YACT0gD,EAAKD,EAAKhV,UACVsX,EAAMrC,EAAK,EAGb,QAAa,IAATv3B,EACFA,EAAO,IAAIs3B,EAAK,SAOhB,IALAt3B,EAAO,IAAIs3B,EAAKt3B,IAKPplB,EAAI,GAAKolB,EAAKvc,GAAG8yC,IAAM,MAAM1hD,MAAM6hD,GAAe,OAK7D,GAAInkD,EAAEqI,EAAI,EAAG,MAAM/F,MAAM6hD,IAAgBnkD,EAAEqI,EAAI,MAAQ,cAGvD,OAAIrI,EAAEkR,GAAG8yC,IAAa,IAAIe,EAAK,IAE/Bb,IAAW,EACXxlD,EAAIunD,GAAOqB,GAAGtnD,EAAGqnD,GAAMC,GAAG75B,EAAM45B,GAAMA,GACtCnD,IAAW,EAEJv/C,GAAMjG,EAAGsmD,GAClB,EAQAL,GAAEvT,MAAQuT,GAAE4C,IAAM,SAAUtnD,GAC1B,IAAID,EAAIoB,KAER,OADAnB,EAAI,IAAID,EAAEsE,YAAYrE,GACfD,EAAEqI,GAAKpI,EAAEoI,EAAIm/C,GAASxnD,EAAGC,GAAKqS,GAAItS,GAAIC,EAAEoI,GAAKpI,EAAEoI,EAAGpI,GAC3D,EAQA0kD,GAAE8C,OAAS9C,GAAE+C,IAAM,SAAUznD,GAC3B,IAAI8tC,EACF/tC,EAAIoB,KACJ2jD,EAAO/kD,EAAEsE,YACT0gD,EAAKD,EAAKhV,UAKZ,KAHA9vC,EAAI,IAAI8kD,EAAK9kD,IAGNoI,EAAG,MAAM/F,MAAM6hD,GAAe,OAGrC,OAAKnkD,EAAEqI,GAGP67C,IAAW,EACXnW,EAAIkY,GAAOjmD,EAAGC,EAAG,EAAG,GAAG0nD,MAAM1nD,GAC7BikD,IAAW,EAEJlkD,EAAEoxC,MAAMrD,IAPEppC,GAAM,IAAIogD,EAAK/kD,GAAIglD,EAQtC,EASAL,GAAEiD,mBAAqBjD,GAAE7lB,IAAM,WAC7B,OAAOA,GAAI19B,KACb,EAQAujD,GAAEkD,iBAAmBlD,GAAE2C,GAAK,WAC1B,OAAOA,GAAGlmD,KACZ,EAQAujD,GAAEmD,QAAUnD,GAAEoD,IAAM,WAClB,IAAI/nD,EAAI,IAAIoB,KAAKkD,YAAYlD,MAE7B,OADApB,EAAEqI,GAAKrI,EAAEqI,GAAK,EACPrI,CACT,EAQA2kD,GAAEqD,KAAOrD,GAAEryC,IAAM,SAAUrS,GACzB,IAAID,EAAIoB,KAER,OADAnB,EAAI,IAAID,EAAEsE,YAAYrE,GACfD,EAAEqI,GAAKpI,EAAEoI,EAAIiK,GAAItS,EAAGC,GAAKunD,GAASxnD,GAAIC,EAAEoI,GAAKpI,EAAEoI,EAAGpI,GAC3D,EASA0kD,GAAE5U,UAAY4U,GAAE5lB,GAAK,SAAUH,GAC7B,IAAIpgC,EAAGugC,EAAI56B,EACTnE,EAAIoB,KAEN,QAAU,IAANw9B,GAAgBA,MAAQA,GAAW,IAANA,GAAiB,IAANA,EAAS,MAAMt8B,MAAM8hD,GAAkBxlB,GAQnF,GANApgC,EAAI6nD,GAAkBrmD,GAAK,EAE3B++B,EAlXW,GAiXX56B,EAAInE,EAAEwE,EAAEvK,OAAS,GACG,EACpBkK,EAAInE,EAAEwE,EAAEL,GAGD,CAGL,KAAOA,EAAI,IAAM,EAAGA,GAAK,GAAI46B,IAG7B,IAAK56B,EAAInE,EAAEwE,EAAE,GAAIL,GAAK,GAAIA,GAAK,GAAI46B,GACrC,CAEA,OAAOH,GAAKpgC,EAAIugC,EAAKvgC,EAAIugC,CAC3B,EAQA4lB,GAAEsD,WAAatD,GAAE/jD,KAAO,WACtB,IAAIpC,EAAGD,EAAGymD,EAAItmD,EAAG2J,EAAG5J,EAAG4oD,EACrBrnD,EAAIoB,KACJ2jD,EAAO/kD,EAAEsE,YAGX,GAAItE,EAAEqI,EAAI,EAAG,CACX,IAAKrI,EAAEqI,EAAG,OAAO,IAAI08C,EAAK,GAG1B,MAAMziD,MAAM6hD,GAAe,MAC7B,CAgCA,IA9BA3lD,EAAI6nD,GAAkBrmD,GACtBkkD,IAAW,EAOF,IAJT77C,EAAI3H,KAAKE,MAAMZ,KAIDqI,GAAK,OACjB9J,EAAI6mD,GAAeplD,EAAEwE,IACdvK,OAASuE,GAAK,GAAK,IAAGD,GAAK,KAClC8J,EAAI3H,KAAKE,KAAKrC,GACdC,EAAI8lD,IAAW9lD,EAAI,GAAK,IAAMA,EAAI,GAAKA,EAAI,GAS3CE,EAAI,IAAIqmD,EANNxmD,EADE8J,GAAK,IACH,KAAO7J,GAEXD,EAAI8J,EAAEgnC,iBACAnzC,MAAM,EAAGqC,EAAE/C,QAAQ,KAAO,GAAKgD,IAKvCE,EAAI,IAAIqmD,EAAK18C,EAAEhE,YAIjBgE,EAAIg/C,GADJrC,EAAKD,EAAKhV,WACK,IAOb,GAFArxC,GADAD,EAAIC,GACEspD,KAAK/B,GAAOjmD,EAAGvB,EAAG4oD,EAAM,IAAIM,MAAM,IAEpCvC,GAAe3mD,EAAE+F,GAAGtI,MAAM,EAAGmrD,MAAU9oD,EAAI6mD,GAAe1mD,EAAE8F,IAAItI,MAAM,EAAGmrD,GAAM,CAKjF,GAJA9oD,EAAIA,EAAErC,MAAMmrD,EAAM,EAAGA,EAAM,GAIvBh/C,GAAKg/C,GAAY,QAAL9oD,GAMd,GAFAoG,GAAMlG,EAAGumD,EAAK,EAAG,GAEbvmD,EAAEkpD,MAAMlpD,GAAGyS,GAAGlR,GAAI,CACpBtB,EAAID,EACJ,KACF,OACK,GAAS,QAALF,EACT,MAGF8oD,GAAO,CACT,CAKF,OAFAnD,IAAW,EAEJv/C,GAAMjG,EAAGsmD,EAClB,EAQAL,GAAEgD,MAAQhD,GAAEuD,IAAM,SAAUjoD,GAC1B,IAAI2kD,EAAOpmD,EAAGjC,EAAGmI,EAAGhG,EAAGypD,EAAI1pD,EAAGmnD,EAAKC,EACjC7lD,EAAIoB,KACJ2jD,EAAO/kD,EAAEsE,YACTugD,EAAK7kD,EAAEwE,EACPsgD,GAAM7kD,EAAI,IAAI8kD,EAAK9kD,IAAIuE,EAGzB,IAAKxE,EAAEqI,IAAMpI,EAAEoI,EAAG,OAAO,IAAI08C,EAAK,GAoBlC,IAlBA9kD,EAAEoI,GAAKrI,EAAEqI,EACT7J,EAAIwB,EAAExB,EAAIyB,EAAEzB,GACZonD,EAAMf,EAAG5qD,SACT4rD,EAAMf,EAAG7qD,UAIPyE,EAAImmD,EACJA,EAAKC,EACLA,EAAKpmD,EACLypD,EAAKvC,EACLA,EAAMC,EACNA,EAAMsC,GAIRzpD,EAAI,GAECnC,EADL4rD,EAAKvC,EAAMC,EACEtpD,KAAMmC,EAAEpE,KAAK,GAG1B,IAAKiC,EAAIspD,IAAOtpD,GAAK,GAAI,CAEvB,IADAqoD,EAAQ,EACHlgD,EAAIkhD,EAAMrpD,EAAGmI,EAAInI,GACpBkC,EAAIC,EAAEgG,GAAKogD,EAAGvoD,GAAKsoD,EAAGngD,EAAInI,EAAI,GAAKqoD,EACnClmD,EAAEgG,KAAOjG,EAAIgmD,GAAO,EACpBG,EAAQnmD,EAAIgmD,GAAO,EAGrB/lD,EAAEgG,IAAMhG,EAAEgG,GAAKkgD,GAASH,GAAO,CACjC,CAGA,MAAQ/lD,IAAIypD,IAAMzpD,EAAEwmD,MAQpB,OANIN,IAASpmD,EACRE,EAAE0pD,QAEPnoD,EAAEuE,EAAI9F,EACNuB,EAAEzB,EAAIA,EAEC0lD,GAAWv/C,GAAM1E,EAAG8kD,EAAKhV,WAAa9vC,CAC/C,EAaA0kD,GAAE0D,gBAAkB1D,GAAE2D,KAAO,SAAUl6B,EAAIm6B,GACzC,IAAIvoD,EAAIoB,KACN2jD,EAAO/kD,EAAEsE,YAGX,OADAtE,EAAI,IAAI+kD,EAAK/kD,QACF,IAAPouB,EAAsBpuB,GAE1BmlD,GAAW/2B,EAAI,EAAG61B,SAEP,IAAPsE,EAAeA,EAAKxD,EAAKyD,SACxBrD,GAAWoD,EAAI,EAAG,GAEhB5jD,GAAM3E,EAAGouB,EAAKi4B,GAAkBrmD,GAAK,EAAGuoD,GACjD,EAWA5D,GAAEtV,cAAgB,SAAUjhB,EAAIm6B,GAC9B,IAAIhD,EACFvlD,EAAIoB,KACJ2jD,EAAO/kD,EAAEsE,YAcX,YAZW,IAAP8pB,EACFm3B,EAAMlhD,GAASrE,GAAG,IAElBmlD,GAAW/2B,EAAI,EAAG61B,SAEP,IAAPsE,EAAeA,EAAKxD,EAAKyD,SACxBrD,GAAWoD,EAAI,EAAG,GAGvBhD,EAAMlhD,GADNrE,EAAI2E,GAAM,IAAIogD,EAAK/kD,GAAIouB,EAAK,EAAGm6B,IACb,EAAMn6B,EAAK,IAGxBm3B,CACT,EAmBAZ,GAAEzU,QAAU,SAAU9hB,EAAIm6B,GACxB,IAAIhD,EAAKtlD,EACPD,EAAIoB,KACJ2jD,EAAO/kD,EAAEsE,YAEX,YAAW,IAAP8pB,EAAsB/pB,GAASrE,IAEnCmlD,GAAW/2B,EAAI,EAAG61B,SAEP,IAAPsE,EAAeA,EAAKxD,EAAKyD,SACxBrD,GAAWoD,EAAI,EAAG,GAGvBhD,EAAMlhD,IADNpE,EAAI0E,GAAM,IAAIogD,EAAK/kD,GAAIouB,EAAKi4B,GAAkBrmD,GAAK,EAAGuoD,IACrCzlD,OAAO,EAAOsrB,EAAKi4B,GAAkBpmD,GAAK,GAIpDD,EAAE4mD,UAAY5mD,EAAE+mD,SAAW,IAAMxB,EAAMA,EAChD,EAQAZ,GAAE8D,UAAY9D,GAAE+D,MAAQ,WACtB,IAAI1oD,EAAIoB,KACN2jD,EAAO/kD,EAAEsE,YACX,OAAOK,GAAM,IAAIogD,EAAK/kD,GAAIqmD,GAAkBrmD,GAAK,EAAG+kD,EAAKyD,SAC3D,EAOA7D,GAAE3oB,SAAW,WACX,OAAQ56B,IACV,EAgBAujD,GAAEgE,QAAUhE,GAAE1mB,IAAM,SAAUh+B,GAC5B,IAAIzB,EAAGkG,EAAGsgD,EAAItmD,EAAGqK,EAAM6/C,EACrB5oD,EAAIoB,KACJ2jD,EAAO/kD,EAAEsE,YAETukD,IAAO5oD,EAAI,IAAI8kD,EAAK9kD,IAGtB,IAAKA,EAAEoI,EAAG,OAAO,IAAI08C,EAAKf,IAM1B,KAJAhkD,EAAI,IAAI+kD,EAAK/kD,IAINqI,EAAG,CACR,GAAIpI,EAAEoI,EAAI,EAAG,MAAM/F,MAAM6hD,GAAe,YACxC,OAAOnkD,CACT,CAGA,GAAIA,EAAEkR,GAAG8yC,IAAM,OAAOhkD,EAKtB,GAHAglD,EAAKD,EAAKhV,UAGN9vC,EAAEiR,GAAG8yC,IAAM,OAAOr/C,GAAM3E,EAAGglD,GAO/B,GAHA4D,GAFApqD,EAAIyB,EAAEzB,KACNkG,EAAIzE,EAAEuE,EAAEvK,OAAS,GAEjB8O,EAAO/I,EAAEqI,EAEJugD,GAME,IAAKlkD,EAAImkD,EAAK,GAAKA,EAAKA,IAAO3xC,GAAkB,CAStD,IARAxY,EAAI,IAAIqmD,EAAKf,IAIbxlD,EAAIkC,KAAK27B,KAAK2oB,EAzrBL,EAyrBqB,GAE9Bd,IAAW,EAGLx/C,EAAI,GAENokD,IADApqD,EAAIA,EAAEipD,MAAM3nD,IACDwE,EAAGhG,GAIN,KADVkG,EAAI4/C,GAAU5/C,EAAI,KAIlBokD,IADA9oD,EAAIA,EAAE2nD,MAAM3nD,IACDwE,EAAGhG,GAKhB,OAFA0lD,IAAW,EAEJjkD,EAAEoI,EAAI,EAAI,IAAI08C,EAAKf,IAAKgC,IAAItnD,GAAKiG,GAAMjG,EAAGsmD,EACnD,OA5BE,GAAIj8C,EAAO,EAAG,MAAMzG,MAAM6hD,GAAe,OAwC3C,OATAp7C,EAAOA,EAAO,GAA2B,EAAtB9I,EAAEuE,EAAE9D,KAAKkgB,IAAIpiB,EAAGkG,KAAU,EAAK,EAElD1E,EAAEqI,EAAI,EACN67C,IAAW,EACXxlD,EAAIuB,EAAE0nD,MAAML,GAAGtnD,EAAGglD,EAlER,KAmEVd,IAAW,GACXxlD,EAAIogC,GAAIpgC,IACN2J,EAAIU,EAECrK,CACT,EAcAimD,GAAEvU,YAAc,SAAUrR,EAAIwpB,GAC5B,IAAI/pD,EAAG+mD,EACLvlD,EAAIoB,KACJ2jD,EAAO/kD,EAAEsE,YAgBX,YAdW,IAAPy6B,EAEFwmB,EAAMlhD,GAASrE,GADfxB,EAAI6nD,GAAkBrmD,KACC+kD,EAAKgE,UAAYvqD,GAAKumD,EAAKiE,WAElD7D,GAAWpmB,EAAI,EAAGklB,SAEP,IAAPsE,EAAeA,EAAKxD,EAAKyD,SACxBrD,GAAWoD,EAAI,EAAG,GAIvBhD,EAAMlhD,GAFNrE,EAAI2E,GAAM,IAAIogD,EAAK/kD,GAAI++B,EAAIwpB,GAETxpB,IADlBvgC,EAAI6nD,GAAkBrmD,KACOxB,GAAKumD,EAAKgE,SAAUhqB,IAG5CwmB,CACT,EAYAZ,GAAEsE,oBAAsBtE,GAAEuE,KAAO,SAAUnqB,EAAIwpB,GAC7C,IACExD,EADM3jD,KACGkD,YAYX,YAVW,IAAPy6B,GACFA,EAAKgmB,EAAKhV,UACVwY,EAAKxD,EAAKyD,WAEVrD,GAAWpmB,EAAI,EAAGklB,SAEP,IAAPsE,EAAeA,EAAKxD,EAAKyD,SACxBrD,GAAWoD,EAAI,EAAG,IAGlB5jD,GAAM,IAAIogD,EAbT3jD,MAakB29B,EAAIwpB,EAChC,EAUA5D,GAAEtgD,SAAWsgD,GAAE/qD,QAAU+qD,GAAE/xB,IAAM+xB,GAAEwE,OAASxE,GAAExrD,OAAO+kB,IAAI,+BAAiC,WACxF,IAAIle,EAAIoB,KACN5C,EAAI6nD,GAAkBrmD,GACtB+kD,EAAO/kD,EAAEsE,YAEX,OAAOD,GAASrE,EAAGxB,GAAKumD,EAAKgE,UAAYvqD,GAAKumD,EAAKiE,SACrD,EAuJA,IAAI/C,GAAS,WAGX,SAASmD,EAAgBppD,EAAG0E,GAC1B,IAAI2kD,EACFzE,EAAQ,EACRroD,EAAIyD,EAAE/F,OAER,IAAK+F,EAAIA,EAAE9D,QAASK,KAClB8sD,EAAOrpD,EAAEzD,GAAKmI,EAAIkgD,EAClB5kD,EAAEzD,GAAK8sD,EAAO5E,GAAO,EACrBG,EAAQyE,EAAO5E,GAAO,EAKxB,OAFIG,GAAO5kD,EAAEilD,QAAQL,GAEd5kD,CACT,CAEA,SAASwR,EAAQrJ,EAAG4B,EAAGu/C,EAAIC,GACzB,IAAIhtD,EAAGmC,EAEP,GAAI4qD,GAAMC,EACR7qD,EAAI4qD,EAAKC,EAAK,GAAI,OAElB,IAAKhtD,EAAImC,EAAI,EAAGnC,EAAI+sD,EAAI/sD,IACtB,GAAI4L,EAAE5L,IAAMwN,EAAExN,GAAI,CAChBmC,EAAIyJ,EAAE5L,GAAKwN,EAAExN,GAAK,GAAI,EACtB,KACF,CAIJ,OAAOmC,CACT,CAEA,SAAS8oD,EAASr/C,EAAG4B,EAAGu/C,GAItB,IAHA,IAAI/sD,EAAI,EAGD+sD,KACLnhD,EAAEmhD,IAAO/sD,EACTA,EAAI4L,EAAEmhD,GAAMv/C,EAAEu/C,GAAM,EAAI,EACxBnhD,EAAEmhD,GAAM/sD,EAAIkoD,GAAOt8C,EAAEmhD,GAAMv/C,EAAEu/C,GAI/B,MAAQnhD,EAAE,IAAMA,EAAElO,OAAS,GAAIkO,EAAEigD,OACnC,CAEA,OAAO,SAAUpoD,EAAGC,EAAG+kD,EAAI52B,GACzB,IAAIu3B,EAAKnnD,EAAGjC,EAAGmI,EAAG8kD,EAAMC,EAAO1b,EAAG2b,EAAIC,EAAKC,EAAMC,EAAM9qB,EAAItgC,EAAGqrD,EAAIC,EAAIC,EAAKC,EAAIC,EAC7EnF,EAAO/kD,EAAEsE,YACTyE,EAAO/I,EAAEqI,GAAKpI,EAAEoI,EAAI,GAAI,EACxBw8C,EAAK7kD,EAAEwE,EACPsgD,EAAK7kD,EAAEuE,EAGT,IAAKxE,EAAEqI,EAAG,OAAO,IAAI08C,EAAK/kD,GAC1B,IAAKC,EAAEoI,EAAG,MAAM/F,MAAM6hD,GAAe,oBASrC,IAPA3lD,EAAIwB,EAAExB,EAAIyB,EAAEzB,EACZyrD,EAAKnF,EAAG7qD,OACR8vD,EAAKlF,EAAG5qD,OAERyvD,GADA3b,EAAI,IAAIgX,EAAKh8C,IACNvE,EAAI,GAGNjI,EAAI,EAAGuoD,EAAGvoD,KAAOsoD,EAAGtoD,IAAM,MAAQA,EAWvC,GAVIuoD,EAAGvoD,IAAMsoD,EAAGtoD,IAAM,MAAMiC,GAG1BugC,EADQ,MAANimB,EACGA,EAAKD,EAAKhV,UACN3hB,EACJ42B,GAAMqB,GAAkBrmD,GAAKqmD,GAAkBpmD,IAAM,EAErD+kD,GAGE,EAAG,OAAO,IAAID,EAAK,GAO5B,GAJAhmB,EAAKA,EAhhCI,EAghCY,EAAI,EACzBxiC,EAAI,EAGM,GAAN0tD,EAMF,IALAvlD,EAAI,EACJogD,EAAKA,EAAG,GACR/lB,KAGQxiC,EAAIwtD,GAAMrlD,IAAMq6B,IAAMxiC,IAC5BkC,EAAIiG,EAAI+/C,IAAQI,EAAGtoD,IAAM,GACzBmtD,EAAGntD,GAAKkC,EAAIqmD,EAAK,EACjBpgD,EAAIjG,EAAIqmD,EAAK,MAIV,CAiBL,KAdApgD,EAAI+/C,IAAQK,EAAG,GAAK,GAAK,GAEjB,IACNA,EAAKsE,EAAgBtE,EAAIpgD,GACzBmgD,EAAKuE,EAAgBvE,EAAIngD,GACzBulD,EAAKnF,EAAG7qD,OACR8vD,EAAKlF,EAAG5qD,QAGV6vD,EAAKG,EAELL,GADAD,EAAM9E,EAAG3oD,MAAM,EAAG+tD,IACPhwD,OAGJ2vD,EAAOK,GAAKN,EAAIC,KAAU,GAEjCM,EAAKpF,EAAG5oD,SACL+oD,QAAQ,GACX+E,EAAMlF,EAAG,GAELA,EAAG,IAAML,GAAO,KAAKuF,EAEzB,GACEtlD,EAAI,GAGJihD,EAAMn0C,EAAQszC,EAAI6E,EAAKM,EAAIL,IAGjB,GAGRC,EAAOF,EAAI,GACPM,GAAML,IAAMC,EAAOA,EAAOpF,IAAQkF,EAAI,IAAM,KAGhDjlD,EAAImlD,EAAOG,EAAM,GAUT,GACFtlD,GAAK+/C,KAAM//C,EAAI+/C,GAAO,GAWf,IAHXkB,EAAMn0C,EALNg4C,EAAOJ,EAAgBtE,EAAIpgD,GAKPilD,EAJpBF,EAAQD,EAAKvvD,OACb2vD,EAAOD,EAAI1vD,WAOTyK,IAGA8iD,EAASgC,EAAMS,EAAKR,EAAQS,EAAKpF,EAAI2E,MAO9B,GAAL/kD,IAAQihD,EAAMjhD,EAAI,GACtB8kD,EAAO1E,EAAG5oD,UAGZutD,EAAQD,EAAKvvD,QACD2vD,GAAMJ,EAAKvE,QAAQ,GAG/BuC,EAASmC,EAAKH,EAAMI,IAGT,GAAPjE,IAIFA,EAAMn0C,EAAQszC,EAAI6E,EAAKM,EAHvBL,EAAOD,EAAI1vD,SAMD,IACRyK,IAGA8iD,EAASmC,EAAKM,EAAKL,EAAOM,EAAKpF,EAAI8E,IAIvCA,EAAOD,EAAI1vD,QACM,IAAR0rD,IACTjhD,IACAilD,EAAM,CAAC,IAITD,EAAGntD,KAAOmI,EAGNihD,GAAOgE,EAAI,GACbA,EAAIC,KAAU/E,EAAGiF,IAAO,GAExBH,EAAM,CAAC9E,EAAGiF,IACVF,EAAO,UAGDE,IAAOC,QAAiB,IAAXJ,EAAI,KAAkB5qB,IAC/C,CAOA,OAJK2qB,EAAG,IAAIA,EAAGtB,QAEfra,EAAEvvC,EAAIA,EAECmG,GAAMopC,EAAG3f,EAAK42B,EAAKqB,GAAkBtY,GAAK,EAAIiX,EACvD,CACF,CAhOa,GAyPb,SAASlmB,GAAI9+B,EAAG++B,GACd,IAAIorB,EAAoBlsB,EAAKmsB,EAAK3rD,EAAG4oD,EACnC9qD,EAAI,EACJmI,EAAI,EACJqgD,EAAO/kD,EAAEsE,YACT0gD,EAAKD,EAAKhV,UAEZ,GAAIsW,GAAkBrmD,GAAK,GAAI,MAAMsC,MAAM+hD,GAAqBgC,GAAkBrmD,IAGlF,IAAKA,EAAEqI,EAAG,OAAO,IAAI08C,EAAKf,IAW1B,IAREE,IAAW,EACXmD,EAAMrC,EAKRvmD,EAAI,IAAIsmD,EAAK,QAEN/kD,EAAE8C,MAAM2jD,IAAI,KACjBzmD,EAAIA,EAAE2nD,MAAMlpD,GACZiG,GAAK,EASP,IAJA2iD,GADQ3mD,KAAKm+B,IAAI0lB,GAAQ,EAAG7/C,IAAMhE,KAAK2pD,KAAO,EAAI,EAAI,EAEtDF,EAAclsB,EAAMmsB,EAAM,IAAIrF,EAAKf,IACnCe,EAAKhV,UAAYsX,IAER,CAKP,GAJAppB,EAAMt5B,GAAMs5B,EAAI0pB,MAAM3nD,GAAIqnD,GAC1B8C,EAAcA,EAAYxC,QAAQprD,GAG9B6oD,IAFJ3mD,EAAI2rD,EAAIpC,KAAK/B,GAAOhoB,EAAKksB,EAAa9C,KAEjB7iD,GAAGtI,MAAM,EAAGmrD,KAASjC,GAAegF,EAAI5lD,GAAGtI,MAAM,EAAGmrD,GAAM,CAC7E,KAAO3iD,KAAK0lD,EAAMzlD,GAAMylD,EAAIzC,MAAMyC,GAAM/C,GAExC,OADAtC,EAAKhV,UAAYiV,EACJ,MAANjmB,GAAcmlB,IAAW,EAAMv/C,GAAMylD,EAAKpF,IAAOoF,CAC1D,CAEAA,EAAM3rD,CACR,CACF,CAIA,SAAS4nD,GAAkBrmD,GAKzB,IAJA,IAAIxB,EAzuCO,EAyuCHwB,EAAExB,EACR2F,EAAInE,EAAEwE,EAAE,GAGHL,GAAK,GAAIA,GAAK,GAAI3F,IACzB,OAAOA,CACT,CAGA,SAAS8rD,GAAQvF,EAAMhmB,EAAIimB,GAEzB,GAAIjmB,EAAKgmB,EAAKsF,KAAKtrB,KAMjB,MAFAmlB,IAAW,EACPc,IAAID,EAAKhV,UAAYiV,GACnB1iD,MAAM6hD,GAAe,iCAG7B,OAAOx/C,GAAM,IAAIogD,EAAKA,EAAKsF,MAAOtrB,EACpC,CAGA,SAASymB,GAAc9gD,GAErB,IADA,IAAI6lD,EAAK,GACF7lD,KAAM6lD,GAAM,IACnB,OAAOA,CACT,CAUA,SAASjD,GAAGrnD,EAAG8+B,GACb,IAAI32B,EAAGoiD,EAAIL,EAAa3rD,EAAGisD,EAAWL,EAAK3rD,EAAG4oD,EAAKllD,EACjD5D,EAAI,EAEJyB,EAAIC,EACJ4kD,EAAK7kD,EAAEwE,EACPugD,EAAO/kD,EAAEsE,YACT0gD,EAAKD,EAAKhV,UAIZ,GAAI/vC,EAAEqI,EAAI,EAAG,MAAM/F,MAAM6hD,IAAgBnkD,EAAEqI,EAAI,MAAQ,cAGvD,GAAIrI,EAAEkR,GAAG8yC,IAAM,OAAO,IAAIe,EAAK,GAS/B,GAPU,MAANhmB,GACFmlB,IAAW,EACXmD,EAAMrC,GAENqC,EAAMtoB,EAGJ/+B,EAAEkR,GAAG,IAEP,OADU,MAAN6tB,IAAYmlB,IAAW,GACpBoG,GAAQvF,EAAMsC,GASvB,GANAA,GAzBU,GA0BVtC,EAAKhV,UAAYsX,EAEjBmD,GADApiD,EAAIg9C,GAAeP,IACZloD,OAAO,GACd6B,EAAI6nD,GAAkBrmD,KAElBU,KAAKoC,IAAItE,GAAK,OAqChB,OAJAC,EAAI6rD,GAAQvF,EAAMsC,EAAM,EAAGrC,GAAI2C,MAAMnpD,EAAI,IACzCwB,EAAIsnD,GAAG,IAAIvC,EAAKyF,EAAK,IAAMpiD,EAAElM,MAAM,IAAKmrD,EAjEhC,IAiE6CW,KAAKvpD,GAE1DsmD,EAAKhV,UAAYiV,EACJ,MAANjmB,GAAcmlB,IAAW,EAAMv/C,GAAM3E,EAAGglD,IAAOhlD,EAxBtD,KAAOwqD,EAAK,GAAW,GAANA,GAAiB,GAANA,GAAWpiD,EAAEzL,OAAO,GAAK,GAGnD6tD,GADApiD,EAAIg9C,IADJplD,EAAIA,EAAE2nD,MAAM1nD,IACSuE,IACd7H,OAAO,GACd4B,IAgCJ,IA7BEC,EAAI6nD,GAAkBrmD,GAElBwqD,EAAK,GACPxqD,EAAI,IAAI+kD,EAAK,KAAO38C,GACpB5J,KAEAwB,EAAI,IAAI+kD,EAAKyF,EAAK,IAAMpiD,EAAElM,MAAM,IAmBpCkuD,EAAMK,EAAYzqD,EAAIimD,GAAOjmD,EAAEoxC,MAAM4S,IAAMhkD,EAAEgoD,KAAKhE,IAAMqD,GACxDllD,EAAKwC,GAAM3E,EAAE2nD,MAAM3nD,GAAIqnD,GACvB8C,EAAc,IAEL,CAIP,GAHAM,EAAY9lD,GAAM8lD,EAAU9C,MAAMxlD,GAAKklD,GAGnCjC,IAFJ3mD,EAAI2rD,EAAIpC,KAAK/B,GAAOwE,EAAW,IAAI1F,EAAKoF,GAAc9C,KAEjC7iD,GAAGtI,MAAM,EAAGmrD,KAASjC,GAAegF,EAAI5lD,GAAGtI,MAAM,EAAGmrD,GAQvE,OAPA+C,EAAMA,EAAIzC,MAAM,GAGN,IAANnpD,IAAS4rD,EAAMA,EAAIpC,KAAKsC,GAAQvF,EAAMsC,EAAM,EAAGrC,GAAI2C,MAAMnpD,EAAI,MACjE4rD,EAAMnE,GAAOmE,EAAK,IAAIrF,EAAKxmD,GAAI8oD,GAE/BtC,EAAKhV,UAAYiV,EACJ,MAANjmB,GAAcmlB,IAAW,EAAMv/C,GAAMylD,EAAKpF,IAAOoF,EAG1DA,EAAM3rD,EACN0rD,GAAe,CACjB,CACF,CAMA,SAASO,GAAa1qD,EAAGulD,GACvB,IAAI/mD,EAAGjC,EAAGF,EAmBV,KAhBKmC,EAAI+mD,EAAI/pD,QAAQ,WAAY+pD,EAAMA,EAAI5uB,QAAQ,IAAK,MAGnDp6B,EAAIgpD,EAAIoF,OAAO,OAAS,GAGvBnsD,EAAI,IAAGA,EAAIjC,GACfiC,IAAM+mD,EAAIrpD,MAAMK,EAAI,GACpBgpD,EAAMA,EAAI1U,UAAU,EAAGt0C,IACdiC,EAAI,IAGbA,EAAI+mD,EAAItrD,QAILsC,EAAI,EAAyB,KAAtBgpD,EAAIlrD,WAAWkC,MAAcA,EAGzC,IAAKF,EAAMkpD,EAAItrD,OAAoC,KAA5BsrD,EAAIlrD,WAAWgC,EAAM,MAAcA,EAG1D,GAFAkpD,EAAMA,EAAIrpD,MAAMK,EAAGF,GAEV,CAaP,GAZAA,GAAOE,EACPiC,EAAIA,EAAIjC,EAAI,EACZyD,EAAExB,EAAI8lD,GAAU9lD,EAv5CP,GAw5CTwB,EAAEwE,EAAI,GAMNjI,GAAKiC,EAAI,GA95CA,EA+5CLA,EAAI,IAAGjC,GA/5CF,GAi6CLA,EAAIF,EAAK,CAEX,IADIE,GAAGyD,EAAEwE,EAAElK,MAAMirD,EAAIrpD,MAAM,EAAGK,IACzBF,GAn6CE,EAm6CeE,EAAIF,GAAM2D,EAAEwE,EAAElK,MAAMirD,EAAIrpD,MAAMK,EAAGA,GAn6ChD,IAq6CPA,EAr6CO,GAo6CPgpD,EAAMA,EAAIrpD,MAAMK,IACGtC,MACrB,MACEsC,GAAKF,EAGP,KAAOE,KAAMgpD,GAAO,IAGpB,GAFAvlD,EAAEwE,EAAElK,MAAMirD,GAENrB,KAAalkD,EAAExB,EAAIkmD,IAAS1kD,EAAExB,GAAKkmD,IAAQ,MAAMpiD,MAAM+hD,GAAqB7lD,EAClF,MAGEwB,EAAEqI,EAAI,EACNrI,EAAExB,EAAI,EACNwB,EAAEwE,EAAI,CAAC,GAGT,OAAOxE,CACT,CAMC,SAAS2E,GAAM3E,EAAG++B,EAAIwpB,GACrB,IAAIhsD,EAAGgK,EAAG7B,EAAGnG,EAAGqsD,EAAIC,EAAS1mD,EAAG2mD,EAC9BjG,EAAK7kD,EAAEwE,EAWT,IAAKjG,EAAI,EAAGmG,EAAImgD,EAAG,GAAIngD,GAAK,GAAIA,GAAK,GAAInG,IAIzC,IAHAhC,EAAIwiC,EAAKxgC,GAGD,EACNhC,GA/8CS,EAg9CTgK,EAAIw4B,EACJ56B,EAAI0gD,EAAGiG,EAAM,OACR,CAGL,IAFAA,EAAMpqD,KAAK27B,MAAM9/B,EAAI,GAn9CZ,MAo9CTmI,EAAImgD,EAAG5qD,QACO,OAAO+F,EAIrB,IAHAmE,EAAIO,EAAImgD,EAAGiG,GAGNvsD,EAAI,EAAGmG,GAAK,GAAIA,GAAK,GAAInG,IAO9BgI,GAJAhK,GA59CS,KAg+CUgC,CACrB,CAwBA,QAtBW,IAAPgqD,IAIFqC,EAAKzmD,GAHLO,EAAI6/C,GAAQ,GAAIhmD,EAAIgI,EAAI,IAGX,GAAK,EAGlBskD,EAAU9rB,EAAK,QAAqB,IAAhB8lB,EAAGiG,EAAM,IAAiB3mD,EAAIO,EAMlDmmD,EAAUtC,EAAK,GACVqC,GAAMC,KAAmB,GAANtC,GAAWA,IAAOvoD,EAAEqI,EAAI,EAAI,EAAI,IACpDuiD,EAAK,GAAW,GAANA,IAAkB,GAANrC,GAAWsC,GAAiB,GAANtC,IAG1ChsD,EAAI,EAAIgK,EAAI,EAAIpC,EAAIogD,GAAQ,GAAIhmD,EAAIgI,GAAK,EAAIs+C,EAAGiG,EAAM,IAAM,GAAM,GAClEvC,IAAOvoD,EAAEqI,EAAI,EAAI,EAAI,KAGzB02B,EAAK,IAAM8lB,EAAG,GAkBhB,OAjBIgG,GACFnmD,EAAI2hD,GAAkBrmD,GACtB6kD,EAAG5qD,OAAS,EAGZ8kC,EAAKA,EAAKr6B,EAAI,EAGdmgD,EAAG,GAAKN,GAAQ,IAlgDT,EAkgDyBxlB,EAlgDzB,MAmgDP/+B,EAAExB,EAAI8lD,IAAWvlB,EAngDV,IAmgD4B,IAEnC8lB,EAAG5qD,OAAS,EAGZ4qD,EAAG,GAAK7kD,EAAExB,EAAIwB,EAAEqI,EAAI,GAGfrI,EAiBT,GAbS,GAALzD,GACFsoD,EAAG5qD,OAAS6wD,EACZpmD,EAAI,EACJomD,MAEAjG,EAAG5qD,OAAS6wD,EAAM,EAClBpmD,EAAI6/C,GAAQ,GArhDH,EAqhDkBhoD,GAI3BsoD,EAAGiG,GAAOvkD,EAAI,GAAKpC,EAAIogD,GAAQ,GAAIhmD,EAAIgI,GAAKg+C,GAAQ,GAAIh+C,GAAK,GAAK7B,EAAI,GAGpEmmD,EACF,OAAS,CAGP,GAAW,GAAPC,EAAU,EACPjG,EAAG,IAAMngD,IAAM+/C,KAClBI,EAAG,GAAK,IACN7kD,EAAExB,GAGN,KACF,CAEE,GADAqmD,EAAGiG,IAAQpmD,EACPmgD,EAAGiG,IAAQrG,GAAM,MACrBI,EAAGiG,KAAS,EACZpmD,EAAI,CAER,CAIF,IAAKnI,EAAIsoD,EAAG5qD,OAAoB,IAAZ4qD,IAAKtoD,IAAWsoD,EAAGK,MAEvC,GAAIhB,KAAalkD,EAAExB,EAAIkmD,IAAS1kD,EAAExB,GAAKkmD,IACrC,MAAMpiD,MAAM+hD,GAAqBgC,GAAkBrmD,IAGrD,OAAOA,CACT,CAGA,SAASwnD,GAASxnD,EAAGC,GACnB,IAAIuE,EAAGhG,EAAGjC,EAAGgK,EAAG7B,EAAGrI,EAAKwoD,EAAIkG,EAAIC,EAAMlG,EACpCC,EAAO/kD,EAAEsE,YACT0gD,EAAKD,EAAKhV,UAIZ,IAAK/vC,EAAEqI,IAAMpI,EAAEoI,EAGb,OAFIpI,EAAEoI,EAAGpI,EAAEoI,GAAKpI,EAAEoI,EACbpI,EAAI,IAAI8kD,EAAK/kD,GACXkkD,GAAWv/C,GAAM1E,EAAG+kD,GAAM/kD,EAcnC,GAXA4kD,EAAK7kD,EAAEwE,EACPsgD,EAAK7kD,EAAEuE,EAIPhG,EAAIyB,EAAEzB,EACNusD,EAAK/qD,EAAExB,EACPqmD,EAAKA,EAAG3oD,QACRwI,EAAIqmD,EAAKvsD,EAGF,CAyBL,KAxBAwsD,EAAOtmD,EAAI,IAGTF,EAAIqgD,EACJngD,GAAKA,EACLrI,EAAMyoD,EAAG7qD,SAETuK,EAAIsgD,EACJtmD,EAAIusD,EACJ1uD,EAAMwoD,EAAG5qD,QAQPyK,GAFJnI,EAAImE,KAAKkgB,IAAIlgB,KAAK27B,KAAK2oB,EAnmDd,GAmmD8B3oD,GAAO,KAG5CqI,EAAInI,EACJiI,EAAEvK,OAAS,GAIbuK,EAAE85B,UACG/hC,EAAImI,EAAGnI,KAAMiI,EAAElK,KAAK,GACzBkK,EAAE85B,SAGJ,KAAO,CASL,KAHA0sB,GAFAzuD,EAAIsoD,EAAG5qD,SACPoC,EAAMyoD,EAAG7qD,WAECoC,EAAME,GAEXA,EAAI,EAAGA,EAAIF,EAAKE,IACnB,GAAIsoD,EAAGtoD,IAAMuoD,EAAGvoD,GAAI,CAClByuD,EAAOnG,EAAGtoD,GAAKuoD,EAAGvoD,GAClB,KACF,CAGFmI,EAAI,CACN,CAaA,IAXIsmD,IACFxmD,EAAIqgD,EACJA,EAAKC,EACLA,EAAKtgD,EACLvE,EAAEoI,GAAKpI,EAAEoI,GAGXhM,EAAMwoD,EAAG5qD,OAIJsC,EAAIuoD,EAAG7qD,OAASoC,EAAKE,EAAI,IAAKA,EAAGsoD,EAAGxoD,KAAS,EAGlD,IAAKE,EAAIuoD,EAAG7qD,OAAQsC,EAAImI,GAAI,CAC1B,GAAImgD,IAAKtoD,GAAKuoD,EAAGvoD,GAAI,CACnB,IAAKgK,EAAIhK,EAAGgK,GAAiB,IAAZs+C,IAAKt+C,IAAWs+C,EAAGt+C,GAAKk+C,GAAO,IAC9CI,EAAGt+C,GACLs+C,EAAGtoD,IAAMkoD,EACX,CAEAI,EAAGtoD,IAAMuoD,EAAGvoD,EACd,CAGA,KAAqB,IAAdsoD,IAAKxoD,IAAawoD,EAAGK,MAG5B,KAAiB,IAAVL,EAAG,GAAUA,EAAGuD,UAAW5pD,EAGlC,OAAKqmD,EAAG,IAER5kD,EAAEuE,EAAIqgD,EACN5kD,EAAEzB,EAAIA,EAGC0lD,GAAWv/C,GAAM1E,EAAG+kD,GAAM/kD,GANd,IAAI8kD,EAAK,EAO9B,CAGA,SAAS1gD,GAASrE,EAAGirD,EAAOlsB,GAC1B,IAAIr6B,EACFlG,EAAI6nD,GAAkBrmD,GACtBulD,EAAMH,GAAeplD,EAAEwE,GACvBnI,EAAMkpD,EAAItrD,OAwBZ,OAtBIgxD,GACElsB,IAAOr6B,EAAIq6B,EAAK1iC,GAAO,EACzBkpD,EAAMA,EAAI5oD,OAAO,GAAK,IAAM4oD,EAAIrpD,MAAM,GAAKspD,GAAc9gD,GAChDrI,EAAM,IACfkpD,EAAMA,EAAI5oD,OAAO,GAAK,IAAM4oD,EAAIrpD,MAAM,IAGxCqpD,EAAMA,GAAO/mD,EAAI,EAAI,IAAM,MAAQA,GAC1BA,EAAI,GACb+mD,EAAM,KAAOC,IAAehnD,EAAI,GAAK+mD,EACjCxmB,IAAOr6B,EAAIq6B,EAAK1iC,GAAO,IAAGkpD,GAAOC,GAAc9gD,KAC1ClG,GAAKnC,GACdkpD,GAAOC,GAAchnD,EAAI,EAAInC,GACzB0iC,IAAOr6B,EAAIq6B,EAAKvgC,EAAI,GAAK,IAAG+mD,EAAMA,EAAM,IAAMC,GAAc9gD,OAE3DA,EAAIlG,EAAI,GAAKnC,IAAKkpD,EAAMA,EAAIrpD,MAAM,EAAGwI,GAAK,IAAM6gD,EAAIrpD,MAAMwI,IAC3Dq6B,IAAOr6B,EAAIq6B,EAAK1iC,GAAO,IACrBmC,EAAI,IAAMnC,IAAKkpD,GAAO,KAC1BA,GAAOC,GAAc9gD,KAIlB1E,EAAEqI,EAAI,EAAI,IAAMk9C,EAAMA,CAC/B,CAIA,SAASuD,GAAS14C,EAAK/T,GACrB,GAAI+T,EAAInW,OAASoC,EAEf,OADA+T,EAAInW,OAASoC,GACN,CAEX,CAgIA,SAASi1B,GAAO3a,GACd,IAAKA,GAAsB,iBAARA,EACjB,MAAMrU,MAAM6hD,GAAe,mBAE7B,IAAI5nD,EAAG+I,EAAGsxB,EACRs0B,EAAK,CACH,YAAa,EAAGjH,GAChB,WAAY,EAAG,EACf,YAAY,IAAQ,EACpB,WAAY,EAAG,KAGnB,IAAK1nD,EAAI,EAAGA,EAAI2uD,EAAGjxD,OAAQsC,GAAK,EAC9B,QAA6B,KAAxBq6B,EAAIjgB,EAAIrR,EAAI4lD,EAAG3uD,KAAiB,CACnC,KAAI+nD,GAAU1tB,KAAOA,GAAKA,GAAKs0B,EAAG3uD,EAAI,IAAMq6B,GAAKs0B,EAAG3uD,EAAI,IACnD,MAAM+F,MAAM8hD,GAAkB9+C,EAAI,KAAOsxB,GADcx1B,KAAKkE,GAAKsxB,CAExE,CAGF,QAA8B,KAAzBA,EAAIjgB,EAAIrR,EAAI,SAAqB,CAClC,GAAIsxB,GAAKl2B,KAAK2pD,KACT,MAAM/nD,MAAM8hD,GAAkB9+C,EAAI,KAAOsxB,GAD1Bx1B,KAAKkE,GAAK,IAAIlE,KAAKw1B,EAE3C,CAEA,OAAOx1B,IACT,CAIO,IAAI+pD,GA5IX,SAASC,EAAMz0C,GACb,IAAIpa,EAAG+I,EAAG4lD,EASV,SAASC,EAAQ9xD,GACf,IAAI2G,EAAIoB,KAGR,KAAMpB,aAAamrD,GAAU,OAAO,IAAIA,EAAQ9xD,GAOhD,GAHA2G,EAAEsE,YAAc6mD,EAGZ9xD,aAAiB8xD,EAInB,OAHAnrD,EAAEqI,EAAIhP,EAAMgP,EACZrI,EAAExB,EAAInF,EAAMmF,OACZwB,EAAEwE,GAAKnL,EAAQA,EAAMmL,GAAKnL,EAAM6C,QAAU7C,GAI5C,GAAqB,iBAAVA,EAAoB,CAG7B,GAAY,EAARA,GAAc,EAChB,MAAMiJ,MAAM8hD,GAAkB/qD,GAGhC,GAAIA,EAAQ,EACV2G,EAAEqI,EAAI,MACD,MAAIhP,EAAQ,GAOjB,OAHA2G,EAAEqI,EAAI,EACNrI,EAAExB,EAAI,OACNwB,EAAEwE,EAAI,CAAC,IALPnL,GAASA,EACT2G,EAAEqI,GAAI,CAMR,CAGA,OAAIhP,MAAYA,GAASA,EAAQ,KAC/B2G,EAAExB,EAAI,OACNwB,EAAEwE,EAAI,CAACnL,KAIFqxD,GAAa1qD,EAAG3G,EAAMgL,WAC/B,CAAO,GAAqB,iBAAVhL,EAChB,MAAMiJ,MAAM8hD,GAAkB/qD,GAWhC,GAP4B,KAAxBA,EAAMgB,WAAW,IACnBhB,EAAQA,EAAM6C,MAAM,GACpB8D,EAAEqI,GAAI,GAENrI,EAAEqI,EAAI,GAGJm8C,GAAUptC,KAAK/d,GACd,MAAMiJ,MAAM8hD,GAAkB/qD,GADRqxD,GAAa1qD,EAAG3G,EAE7C,CAkBA,GAhBA8xD,EAAQlkD,UAAY09C,GAEpBwG,EAAQE,SAAW,EACnBF,EAAQG,WAAa,EACrBH,EAAQI,WAAa,EACrBJ,EAAQK,YAAc,EACtBL,EAAQM,cAAgB,EACxBN,EAAQO,gBAAkB,EAC1BP,EAAQQ,gBAAkB,EAC1BR,EAAQS,gBAAkB,EAC1BT,EAAQU,iBAAmB,EAE3BV,EAAQC,MAAQA,EAChBD,EAAQ75B,OAAS65B,EAAQ36C,IAAM8gB,QAEnB,IAAR3a,IAAgBA,EAAM,CAAA,GACtBA,EAEF,IADAu0C,EAAK,CAAC,YAAa,WAAY,WAAY,WAAY,QAClD3uD,EAAI,EAAGA,EAAI2uD,EAAGjxD,QAAc0c,EAAIhY,eAAe2G,EAAI4lD,EAAG3uD,QAAOoa,EAAIrR,GAAKlE,KAAKkE,IAKlF,OAFA6lD,EAAQ75B,OAAO3a,GAERw0C,CACT,CA6CqBC,CAz6DR,CAOTrb,UAAW,GAkBXyY,SAAU,EAIVO,UAAU,EAIVC,SAAW,GAIXqB,KAAM,yHAu4DVrG,GAAM,IAAImH,GAAQ,GAElB,IAAAW,GAAeX,GCh8DXz6C,GAAWnU,GAAKA,EACTwvD,GAAe,CAE1B,EACIC,GAAgBp5B,GAAOA,IAAQm5B,GAC/BE,GAAS/5B,GAAM,SAASg6B,IAC1B,OAAyB,IAArBnwD,UAAU9B,QAAqC,IAArB8B,UAAU9B,QAAgB+xD,GAAcjwD,UAAU9B,QAAU,OAAIe,EAAYe,UAAU,IAC3GmwD,EAEFh6B,KAAMn2B,UACf,EACIowD,GAAS,CAAC5tD,EAAG2zB,IACL,IAAN3zB,EACK2zB,EAEF+5B,GAAO,WACZ,IAAK,IAAI17B,EAAOx0B,UAAU9B,OAAQu2B,EAAO,IAAIv1B,MAAMs1B,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ10B,UAAU00B,GAEzB,IAAI27B,EAAa57B,EAAKhlB,OAAO6gD,GAAOA,IAAQN,IAAc9xD,OAC1D,OAAImyD,GAAc7tD,EACT2zB,KAAM1B,GAER27B,GAAO5tD,EAAI6tD,EAAYH,GAAO,WACnC,IAAK,IAAIK,EAAQvwD,UAAU9B,OAAQsyD,EAAW,IAAItxD,MAAMqxD,GAAQE,EAAQ,EAAGA,EAAQF,EAAOE,IACxFD,EAASC,GAASzwD,UAAUywD,GAE9B,IAAIC,EAAUj8B,EAAKnhB,IAAIg9C,GAAOL,GAAcK,GAAOE,EAASnE,QAAUiE,GACtE,OAAOn6B,KAAMu6B,KAAYF,EAC3B,GACF,GAESG,GAAQx6B,GAAMi6B,GAAOj6B,EAAGj4B,OAAQi4B,GAChCiK,GAAQ,CAAC/J,EAAOC,KAEzB,IADA,IAAIjiB,EAAM,GACD7T,EAAI61B,EAAO71B,EAAI81B,IAAO91B,EAC7B6T,EAAI7T,EAAI61B,GAAS71B,EAEnB,OAAO6T,GAEEf,GAAMq9C,GAAM,CAACx6B,EAAI9hB,IACtBnV,MAAMC,QAAQkV,GACTA,EAAIf,IAAI6iB,GAEVl5B,OAAO2E,KAAKyS,GAAKf,IAAI9V,GAAO6W,EAAI7W,IAAM8V,IAAI6iB,IAiBxCoM,GAAUluB,GACfnV,MAAMC,QAAQkV,GACTA,EAAIkuB,UAINluB,EAAIugB,MAAM,IAAI2N,UAAU3X,KAAK,IAE3BgmC,GAAUz6B,IACnB,IAAI06B,EAAW,KACXC,EAAa,KACjB,OAAO,WACL,IAAK,IAAIC,EAAQ/wD,UAAU9B,OAAQu2B,EAAO,IAAIv1B,MAAM6xD,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFv8B,EAAKu8B,GAAShxD,UAAUgxD,GAE1B,OAAIH,GAAYp8B,EAAK6jB,MAAM,CAACzhB,EAAKr2B,KAC/B,IAAIywD,EACJ,OAAOp6B,KAAoC,QAA1Bo6B,EAAYJ,SAAoC,IAAdI,OAAuB,EAASA,EAAUzwD,MAEtFswD,GAETD,EAAWp8B,EACXq8B,EAAa36B,KAAM1B,GAErB,GCpEF,SAASy8B,GAAc5zD,GAOrB,OALc,IAAVA,EACO,EAEAqH,KAAK+D,MAAM,IAAI0mD,GAAQ9xD,GAAOyJ,MAAM+7B,IAAI,IAAI7C,YAAc,CAGvE,CAWA,SAASkxB,GAAUj4B,EAAO5C,EAAK+J,GAM7B,IALA,IAAI+wB,EAAM,IAAIhC,GAAQl2B,GAClB14B,EAAI,EACJvC,EAAS,GAGNmzD,EAAIlG,GAAG50B,IAAQ91B,EAAI,KACxBvC,EAAOM,KAAK6yD,EAAInxB,YAChBmxB,EAAMA,EAAI76C,IAAI8pB,GACd7/B,IAEF,OAAOvC,CACT,CAUwB0yD,GAAM,CAACvkD,EAAG4B,EAAGtL,KACnC,IAAI2uD,GAAQjlD,EAEZ,OAAOilD,EAAO3uD,IADFsL,EACcqjD,KAWFV,GAAM,CAACvkD,EAAG4B,EAAG/J,KACrC,IAAIqtD,EAAOtjD,GAAK5B,EAEhB,OAAQnI,EAAImI,IADZklD,EAAOA,GAAQxsC,OAaa6rC,GAAM,CAACvkD,EAAG4B,EAAG/J,KACzC,IAAIqtD,EAAOtjD,GAAK5B,EAEhB,OADAklD,EAAOA,GAAQxsC,IACRngB,KAAKkgB,IAAI,EAAGlgB,KAAK2I,IAAI,GAAIrJ,EAAImI,GAAKklD,MC1EpC,IAAIC,GAAmBvvD,IAC5B,IAAKsL,EAAKuX,GAAO7iB,GACZwvD,EAAUC,GAAY,CAACnkD,EAAKuX,GAMjC,OAHIvX,EAAMuX,KACP2sC,EAAUC,GAAY,CAAC5sC,EAAKvX,IAExB,CAACkkD,EAAUC,IAWTC,GAAgB,CAACC,EAAWC,EAAeC,KACpD,GAAIF,EAAUvG,IAAI,GAChB,OAAO,IAAIgE,GAAQ,GAErB,IAAI0C,EAAaZ,GAAcS,EAAU1xB,YAGrC8xB,EAAkB,IAAI3C,GAAQ,IAAIltB,IAAI4vB,GACtCE,EAAYL,EAAU1H,IAAI8H,GAE1BE,EAAgC,IAAfH,EAAmB,IAAO,GAE3CI,EADiB,IAAI9C,GAAQzqD,KAAK27B,KAAK0xB,EAAU/H,IAAIgI,GAAgBhyB,aAAa1pB,IAAIs7C,GAAkB1F,IAAI8F,GAChF9F,IAAI4F,GACpC,OAAuB,IAAI3C,GAApBwC,EAA4BM,EAAWjyB,WAA0Bt7B,KAAK27B,KAAK4xB,EAAWjyB,cAWpFkyB,GAAuB,CAAC70D,EAAO80D,EAAWR,KACnD,IAAIvxB,EAAO,IAAI+uB,GAAQ,GAEnBiD,EAAS,IAAIjD,GAAQ9xD,GACzB,IAAK+0D,EAAO1H,SAAWiH,EAAe,CACpC,IAAIU,EAAS3tD,KAAKoC,IAAIzJ,GAClBg1D,EAAS,GAEXjyB,EAAO,IAAI+uB,GAAQ,IAAIltB,IAAIgvB,GAAc5zD,GAAS,GAClD+0D,EAAS,IAAIjD,GAAQzqD,KAAK+D,MAAM2pD,EAAOpI,IAAI5pB,GAAMJ,aAAaksB,IAAI9rB,IACzDiyB,EAAS,IAElBD,EAAS,IAAIjD,GAAQzqD,KAAK+D,MAAMpL,IAEpC,MAAqB,IAAVA,EACT+0D,EAAS,IAAIjD,GAAQzqD,KAAK+D,OAAO0pD,EAAY,GAAK,IACxCR,IACVS,EAAS,IAAIjD,GAAQzqD,KAAK+D,MAAMpL,KAElC,IAAIi1D,EAAc5tD,KAAK+D,OAAO0pD,EAAY,GAAK,GAE/C,OFlCmB,WACnB,IAAK,IAAII,EAAQxyD,UAAU9B,OAAQu2B,EAAO,IAAIv1B,MAAMszD,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFh+B,EAAKg+B,GAASzyD,UAAUyyD,GAE1B,IAAKh+B,EAAKv2B,OACR,OAAOyW,GAET,IAAI+9C,EAAMj+B,EAAK8N,UAEXowB,EAAUD,EAAI,GACdE,EAAUF,EAAIvyD,MAAM,GACxB,OAAO,WACL,OAAOyyD,EAAQpuC,OAAO,CAACI,EAAKuR,IAAOA,EAAGvR,GAAM+tC,KAAW3yD,WACzD,CACF,CEmBW6yD,CAAQv/C,GAAI9Q,GAAK6vD,EAAO97C,IAAI,IAAI64C,GAAQ5sD,EAAI+vD,GAAapG,IAAI9rB,IAAOJ,YAAaG,GACnFjK,CAAG,EAAGi8B,IAaXU,GAAiB,SAAuBxlD,EAAKuX,EAAKutC,EAAWR,GAC/D,IAAIC,EAAmB7xD,UAAU9B,OAAS,QAAsBe,IAAjBe,UAAU,GAAmBA,UAAU,GAAK,EAE3F,IAAKL,OAAOswB,UAAUpL,EAAMvX,IAAQ8kD,EAAY,IAC9C,MAAO,CACL/xB,KAAM,IAAI+uB,GAAQ,GAClB2D,QAAS,IAAI3D,GAAQ,GACrB4D,QAAS,IAAI5D,GAAQ,IAKzB,IAGIiD,EAHAhyB,EAAOqxB,GAAc,IAAItC,GAAQvqC,GAAK2mC,IAAIl+C,GAAK28C,IAAImI,EAAY,GAAIR,EAAeC,GAOpFQ,EADE/kD,GAAO,GAAKuX,GAAO,EACZ,IAAIuqC,GAAQ,IAGrBiD,EAAS,IAAIjD,GAAQ9hD,GAAKiJ,IAAIsO,GAAKolC,IAAI,IAEvBuB,IAAI,IAAI4D,GAAQiD,GAAQ1G,IAAItrB,IAE9C,IAAI4yB,EAAatuD,KAAK27B,KAAK+xB,EAAO7G,IAAIl+C,GAAK28C,IAAI5pB,GAAMJ,YACjDizB,EAAUvuD,KAAK27B,KAAK,IAAI8uB,GAAQvqC,GAAK2mC,IAAI6G,GAAQpI,IAAI5pB,GAAMJ,YAC3DkzB,EAAaF,EAAaC,EAAU,EACxC,OAAIC,EAAaf,EAERU,GAAexlD,EAAKuX,EAAKutC,EAAWR,EAAeC,EAAmB,IAE3EsB,EAAaf,IAEfc,EAAUruC,EAAM,EAAIquC,GAAWd,EAAYe,GAAcD,EACzDD,EAAapuC,EAAM,EAAIouC,EAAaA,GAAcb,EAAYe,IAEzD,CACL9yB,OACA0yB,QAASV,EAAO7G,IAAI,IAAI4D,GAAQ6D,GAAY9G,IAAI9rB,IAChD2yB,QAASX,EAAO97C,IAAI,IAAI64C,GAAQ8D,GAAS/G,IAAI9rB,KAEjD,EAuEO,IAAI+yB,GAAoBxC,GA3D/B,SAA6B5jC,GAC3B,IAAK1f,EAAKuX,GAAOmI,EACbolC,EAAYpyD,UAAU9B,OAAS,QAAsBe,IAAjBe,UAAU,GAAmBA,UAAU,GAAK,EAChF4xD,IAAgB5xD,UAAU9B,OAAS,QAAsBe,IAAjBe,UAAU,KAAmBA,UAAU,GAE/Em7B,EAAQx2B,KAAKkgB,IAAIutC,EAAW,IAC3BiB,EAAQC,GAAU/B,GAAiB,CAACjkD,EAAKuX,IAC9C,GAAIwuC,KAAYvuC,KAAYwuC,IAAWxuC,IAAU,CAC/C,IAAIyuC,EAAUD,IAAWxuC,IAAW,CAACuuC,KAAWjzB,GAAM,EAAGgyB,EAAY,GAAG9+C,IAAI,IAAMwR,MAAa,IAAIsb,GAAM,EAAGgyB,EAAY,GAAG9+C,IAAI,KAAOwR,KAAWwuC,GACjJ,OAAOhmD,EAAMuX,EAAM0d,GAAQgxB,GAAWA,CACxC,CACA,GAAIF,IAAWC,EACb,OAAOnB,GAAqBkB,EAAQjB,EAAWR,GAIjD,IAAIvxB,KACFA,EAAI0yB,QACJA,EAAOC,QACPA,GACEF,GAAeO,EAAQC,EAAQn4B,EAAOy2B,EAAe,GACrDl9C,EAASy8C,GAAU4B,EAASC,EAAQz8C,IAAI,IAAI64C,GAAQ,IAAKjD,IAAI9rB,IAAQA,GACzE,OAAO/yB,EAAMuX,EAAM0d,GAAQ7tB,GAAUA,CACvC,GAqCW8+C,GAA2B5C,GA1BtC,SAAoC9hC,EAAOsjC,GACzC,IAAK9kD,EAAKuX,GAAOiK,EACb8iC,IAAgB5xD,UAAU9B,OAAS,QAAsBe,IAAjBe,UAAU,KAAmBA,UAAU,IAE9EqzD,EAAQC,GAAU/B,GAAiB,CAACjkD,EAAKuX,IAC9C,GAAIwuC,KAAYvuC,KAAYwuC,IAAWxuC,IACrC,MAAO,CAACxX,EAAKuX,GAEf,GAAIwuC,IAAWC,EACb,MAAO,CAACD,GAEV,IAAIl4B,EAAQx2B,KAAKkgB,IAAIutC,EAAW,GAC5B/xB,EAAOqxB,GAAc,IAAItC,GAAQkE,GAAQ9H,IAAI6H,GAAQpJ,IAAI9uB,EAAQ,GAAIy2B,EAAe,GACpFl9C,EAAS,IAAIy8C,GAAU,IAAI/B,GAAQiE,GAAS,IAAIjE,GAAQkE,GAASjzB,GAAOizB,GAU5E,OATsB,IAAlB1B,IAOFl9C,EAASA,EAAOpB,IAAIhW,GAASqH,KAAKiE,MAAMtL,KAEnCgQ,EAAMuX,EAAM0d,GAAQ7tB,GAAUA,CACvC,GC1MW++C,GAAwB3yC,GAASA,EAAM4yC,UAAUC,YACjDC,GAAkB9yC,GAASA,EAAM+yC,QAAQC,UACzCC,GAAejzC,GAASA,EAAM4yC,UAAUM,OACxCC,GAAmBnzC,GAASA,EAAM4yC,UAAUQ,WAC5CC,GAAqBrzC,GAASA,EAAM+yC,QAAQO,aCR5CC,GAGI,EAHJA,GASF,OATEA,IAUH,ECVGC,IACU,EADVA,IAEgB,EAFhBA,GAQK,EARLA,GASF,OATEA,IAWH,EAXGA,GAYE,ECZFC,GAA8B,CAACC,EAAcC,KACtD,GAAKD,GAAiBC,EAGtB,OAAID,SAAoDA,EAAaE,SAC5D,CAACD,EAAU,GAAIA,EAAU,IAE3BA,GCEEE,GAAoB,CAC7B3M,mBAAmB,EACnB4J,eAAe,EACfgD,yBAAyB,EAEzBnyC,aAASxjB,EACTslB,YAAQtlB,EACR41D,GAAIR,GACJS,eAAe,EACf7jD,UAAMhS,EACNy1D,UHXU,EGYVhxB,MAAO2wB,GACPU,KAAMV,GACNjC,eAAWnzD,EACXqjC,WAAOrjC,EACP0R,KHXM,WGYN2b,UAAMrtB,GAEG+1D,GAAqB,CAC9BhN,kBAAmBsM,GACnB1C,eAAe,EACfgD,wBAAyBN,GACzB7xC,aAASxjB,EACTslB,YAAQtlB,EACR41D,GAAIP,GACJQ,eAAe,EACf7jD,UAAMhS,EACNy1D,UAAU,EACVhxB,MAAO4wB,GACPS,KAAMT,GACNlC,UAAWkC,GACXhyB,WAAOrjC,EACP0R,KF5BM,SE6BN2b,UAAMrtB,GAEGg2D,GAA6B,CACtCjN,mBAAmB,EACnB4J,eAAe,EACfgD,yBH9CyB,EG+CzBnyC,aAASxjB,EACTslB,YAAQtlB,EACR41D,GAAIR,GACJS,eAAe,EACf7jD,UAAMhS,EACNy1D,UAAU,EACVhxB,MAAO2wB,GACPU,KAAMV,GACNjC,eAAWnzD,EACXqjC,WAAOrjC,EACP0R,KAAM,SACN2b,UAAMrtB,GAEGi2D,GAA8B,CACvClN,kBAAmBsM,GACnB1C,eAAe,EACfgD,wBAAyBN,GACzB7xC,aAASxjB,EACTslB,YAAQtlB,EACR41D,GAAIP,GACJQ,eAAe,EACf7jD,UAAMhS,EACNy1D,UAAU,EACVhxB,MAAO4wB,GACPS,KAAMT,GACNlC,UAAWkC,GACXhyB,WAAOrjC,EACP0R,KAAM,WACN2b,UAAMrtB,GAEGk2D,GAAkB,CAACr0C,EAAOs0C,IACW,MAA1Ct0C,EAAMu0C,UAAUC,UAAUF,GACrBt0C,EAAMu0C,UAAUC,UAAUF,GAEH,WAA5Bt0C,EAAM/N,OAAOmV,WACR+sC,GAEFN,GAEEY,GAAmB,CAACz0C,EAAO00C,IACY,MAA5C10C,EAAMu0C,UAAUI,WAAWD,GACtB10C,EAAMu0C,UAAUI,WAAWD,GAEJ,WAA5B10C,EAAM/N,OAAOmV,WACRgtC,GAEFF,GAEEU,GAAqB50C,GAASA,EAAM60C,aACpCC,GAAkB10C,GAAe,CAACkE,GAAkBC,GAAmBS,IjIpFxD,SAAsB3iB,EAAOC,GACrD,IAAI0gB,EAAS9jB,UAAU9B,OAAS,QAAsBe,IAAjBe,UAAU,GAAmBA,UAAU,GAAK,CAC/E4hB,IAAK,EACL+E,MAAO,EACPE,OAAQ,EACRlF,KAAM,GAKR,OAAOhd,KAAK2I,IAAI3I,KAAKoC,IAAI5D,GAAS2gB,EAAOnC,MAAQ,IAAMmC,EAAO6C,OAAS,IAAKhiB,KAAKoC,IAAI3D,GAAU0gB,EAAOlC,KAAO,IAAMkC,EAAO+C,QAAU,KAAO,CAC7I,GiI0EIgvC,GAAoB30C,GAAe,CAACw0C,GAAoBE,IAAkB,CAACE,EAAmB/5B,KAChG,GAAyB,MAArB+5B,EAGJ,OAAOj2D,EAAgBi2D,EAAkB53B,YAAanC,EAAW,KAExDg6B,GAAoB70C,GAAe,CAACw0C,GAAoBE,IAAkB,CAACE,EAAmB/5B,KACvG,GAAyB,MAArB+5B,EAGJ,OAAOj2D,EAAgBi2D,EAAkB33B,YAAapC,EAAuB,GAAZA,KAYxDi6B,GAAuB90C,GAAe,CAACw0C,IAVtBC,IAC1B,GAAoB,MAAhBA,EACF,MAAO,CAAC,EAAG,GAEb,IAAIx4B,WACFA,EAAUC,SACVA,GACEu4B,EACJ,MAAO,CAACx4B,EAAYC,KAGwBlc,GAAe,CAACi0C,GAAiBa,IAAuBzB,IAC/F,IAAI0B,GAAwB/0C,GAAe,CAAC00C,GAAiBC,GAAmBE,IAAoB,CAACh6B,EAAWmC,EAAaC,KAClI,GAAiB,MAAbpC,GAAoC,MAAfmC,GAAsC,MAAfC,EAGhD,MAAO,CAACD,EAAaC,KAEwBjd,GAAe,CAACq0C,GAAkBU,IAAwB1B,IACzErzC,GAAe,CAAC+G,GAAmBytC,GAAoBG,GAAmBE,GAAmB3wC,GAAkBC,IAAoB,CAACtS,EAAQ4iD,EAAcz3B,EAAaC,EAAah7B,EAAOC,KACzN,IAAe,YAAX2P,GAAmC,WAAXA,IAAuC,MAAhB4iD,GAAuC,MAAfz3B,GAAsC,MAAfC,EAAlG,CAGA,IAAIttB,GACFA,EAAEC,GACFA,EAAEqsB,WACFA,EAAUC,SACVA,GACEu4B,EACJ,MAAO,CACL9kD,GAAIhR,EAAgBgR,EAAI1N,EAAOA,EAAQ,GACvC2N,GAAIjR,EAAgBiR,EAAI1N,EAAQA,EAAS,GACzC86B,cACAC,cACAhB,aACAC,WACAlB,WAAW,EAdb,ICpIK,IAAIg6B,GAAe,CAACC,EAAQxzC,IAAaA,ECArCyzC,GAAa,CAACD,EAAQE,EAAWC,IAAWA,ECAvD,SAAS9mD,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAuBnL,IAAI8zD,GAAuB,CAAC,EAAG,QAgBpBC,GAAgB,CACzBxO,mBAAmB,EACnB4J,eAAe,EACfgD,yBAAyB,EACzBvjD,MAAO,EACPoR,aAASxjB,EACTslB,YAAQtlB,EACRmE,OAAQ,GACRsjB,MAAM,EACNmuC,GAAI,EACJC,eAAe,EACfte,SAAU,cACVigB,WAAY,EACZhwC,QAAQ,EACRxV,UAAMhS,EACNunB,YAAa,SACbvS,QAAS,CACP0N,KAAM,EACNgF,MAAO,GAET+tC,UAAU,EACVhxB,MAAO,OACPqxB,MAAM,EACN3C,UAAW,EACXsE,mBAAez3D,EACfqjC,WAAOrjC,EACP0R,KAAM,WACN2b,UAAMrtB,GAEG03D,GAAsB,CAAC71C,EAAOw1C,KACvC,IAAIM,EAAO91C,EAAM0E,cAAcC,MAAM6wC,GACrC,OAAY,MAARM,EACKJ,GAEFI,GAQEC,GAAgB,CACzB7O,mBAAmB,EACnB4J,eAAe,EACfgD,yBAAyB,EACzBvjD,MAAO,EACPoR,aAASxjB,EACTslB,OAAQgyC,GACR7vC,MAAM,EACNmuC,GAAI,EACJC,eAAe,EACfte,SAAU,cACVigB,WAAY,EACZhwC,QAAQ,EACRxV,UAAMhS,EACNunB,YAAa,OACbvS,QAAS,CACP2N,IAAK,EACLiF,OAAQ,GAEV6tC,UAAU,EACVhxB,MAAO,OACPqxB,MAAM,EACN3C,UAAW,EACXsE,mBAAez3D,EACfqjC,WAAOrjC,EACP0R,KAAM,SACN2b,UAAMrtB,EACNkE,M5H/EgC,I4HiFvB2zD,GAAsB,CAACh2C,EAAOw1C,KACvC,IAAIM,EAAO91C,EAAM0E,cAAcI,MAAM0wC,GACrC,OAAY,MAARM,EACKC,GAEFD,GAEEG,GAAgB,CACzBxyC,OAAQ,CAAC,EAAG,QACZuwC,eAAe,EACfJ,UAAU,EACV1M,mBAAmB,EACnB4M,yBAAyB,EACzBnyC,aAASxjB,EACT41D,GAAI,EACJ5jD,KAAM,GACNmvB,MAAO,CAAC,GAAI,IACZsD,MAAO,OACP/yB,KAAM,SACN2b,KAAM,IAEG0qC,GAAsB,CAACl2C,EAAOw1C,KACvC,IAAIM,EAAO91C,EAAM0E,cAAcyxC,MAAMX,GACrC,OAAY,MAARM,EACKG,GAEFH,GAEEM,GAAiB,CAACp2C,EAAO6B,EAAU2zC,KAC5C,OAAQ3zC,GACN,IAAK,QAED,OAAOg0C,GAAoB71C,EAAOw1C,GAEtC,IAAK,QAED,OAAOQ,GAAoBh2C,EAAOw1C,GAEtC,IAAK,QAED,OAAOU,GAAoBl2C,EAAOw1C,GAEtC,IAAK,YAED,OAAOnB,GAAgBr0C,EAAOw1C,GAElC,IAAK,aAED,OAAOf,GAAiBz0C,EAAOw1C,GAEnC,QACE,MAAM,IAAI/vD,MAAM,yBAAyB5F,OAAOgiB,MAyB3Cw0C,GAAqB,CAACr2C,EAAO6B,EAAU2zC,KAChD,OAAQ3zC,GACN,IAAK,QAED,OAAOg0C,GAAoB71C,EAAOw1C,GAEtC,IAAK,QAED,OAAOQ,GAAoBh2C,EAAOw1C,GAEtC,IAAK,YAED,OAAOnB,GAAgBr0C,EAAOw1C,GAElC,IAAK,aAED,OAAOf,GAAiBz0C,EAAOw1C,GAEnC,QACE,MAAM,IAAI/vD,MAAM,yBAAyB5F,OAAOgiB,MAQ3Cy0C,GAAet2C,GAASA,EAAMu2C,eAAeC,YAAc,EAS/D,SAASC,GAAkB50C,EAAU2zC,GAC1C,OAAO5iD,IACL,OAAQiP,GACN,IAAK,QAEH,MAAO,YAAajP,GAAQA,EAAK8jD,UAAYlB,EAC/C,IAAK,QACH,MAAO,YAAa5iD,GAAQA,EAAK+jD,UAAYnB,EAC/C,IAAK,QACH,MAAO,YAAa5iD,GAAQA,EAAKgkD,UAAYpB,EAC/C,IAAK,YACH,MAAO,gBAAiB5iD,GAAQA,EAAK0hD,cAAgBkB,EACvD,IAAK,aACH,MAAO,iBAAkB5iD,GAAQA,EAAK8hD,eAAiBc,EACzD,QACE,OAAO,GAGf,CACO,IACHqB,GAAsBz2C,GAAe,CAACg1C,GAAcE,IAAamB,IAC1DK,GAAgC,CAACP,EAAgB7C,EAAcqD,IAAkBR,EAAe5nD,OAAOooD,GAAepoD,OAAOiE,IACrC,KAA5F8gD,aAAmD,EAASA,EAAaM,iBAGtEphD,EAAKgT,MAEJoxC,GAA+B52C,GAAe,CARbJ,GAASA,EAAMu2C,eAAeU,eAQgBb,GAAgBS,IAAsBC,IACrHI,GAAiCD,GAAkBA,EAAetoD,OAAOiE,QAAyBzU,IAAjByU,EAAK+Q,SAC7FwzC,GAA4C/2C,GAAe,CAAC42C,IAA+BE,IACpFE,GAA4BH,GAAkBA,EAAezkD,IAAII,GAAQA,EAAK5J,MAAM2F,OAAOoH,SAASwK,KAAK,GAQzG82C,GAAoCj3C,GAAe,CAAC42C,IAA+BI,IACnFE,GAAuB,CAACC,EAAoBr2D,KACrD,IAAIslD,UACFA,EAAY,GAAEK,eACdA,EAAcF,aACdA,GACEzlD,EACJ,OAAIq2D,EAAmBn6D,OAAS,EAgBvBm6D,EAEF/Q,EAAUnnD,MAAMwnD,EAAgBF,EAAe,IAU7C6Q,GAAsBp3C,GAAe,CAACi3C,Gb5QM,CAACr3C,EAAOy3C,EAAUC,EAAUC,IAC7EA,EACKlR,GAAsCzmC,GAExCumC,GAA2BvmC,IawQ4Fs3C,IACrHM,GAAuB,CAAC5uD,EAAM0qD,EAAcxoC,IACqC,OAArFwoC,aAAmD,EAASA,EAAa/xC,SACrE3Y,EAAKwJ,IAAII,KACdpW,MAAOklB,GAAkB9O,EAAM8gD,EAAa/xC,YAG5CuJ,EAAM9tB,OAAS,EACV8tB,EAAM1Y,IAAII,GAAQA,EAAK+O,SAASk2C,QAAQl2C,GAAW3Y,EAAKwJ,IAAIC,KACjEjW,MAAOklB,GAAkBjP,EAAOkP,OAG7B3Y,EAAKwJ,IAAIC,KACdjW,MAAOiW,KAUAqlD,GAAyB13C,GAAe,CAACo3C,GAAqBpB,GAAgBY,IAA+BY,IACjH,SAASG,GAA8Bl2C,EAAUm2C,GACtD,OAAQn2C,GACN,IAAK,QACH,MAA8B,MAAvBm2C,EAASC,UAClB,IAAK,QACH,MAA8B,MAAvBD,EAASC,UAClB,QACE,OAAO,EAEb,CAyBA,SAASC,GAAiBlvD,GACxB,OAAOA,EAAK2F,OAAOorB,GAAKj7B,EAAWi7B,IAAMA,aAAarhB,MAAMlG,IAAI3T,QAAQ8P,OAAOjN,IAAkB,IAAbjD,EAAMiD,GAC5F,CAQO,SAASy2D,GAAwB1lD,EAAO2lD,EAAcC,GAC3D,OAAKA,GAA6C,iBAAjBD,GAA6B35D,EAAM25D,GAC3D,GAEJC,EAAkBj7D,OAGhB86D,GAAiBG,EAAkBR,QAAQS,IAChD,IACIC,EAAUC,EADVC,EAAa/2C,GAAkBjP,EAAO6lD,EAAG32C,SAO7C,GALIvjB,MAAMC,QAAQo6D,IACfF,EAAUC,GAAaC,EAExBF,EAAWC,EAAYC,EAEpBvpC,GAAoBqpC,IAAcrpC,GAAoBspC,GAG3D,MAAO,CAACJ,EAAeG,EAAUH,EAAeI,MAbzC,EAeX,CACO,IAAIE,GAAqB,CAACC,EAAeztC,EAAO0tC,KACrD,IACIC,EAAa3tC,EAAMxH,OAAO,CAAC8N,EAAK5e,KACd,MAAhBA,EAAK+Q,UAGgB,MAArB6N,EAAI5e,EAAK+Q,WACX6N,EAAI5e,EAAK+Q,SAAW,IAEtB6N,EAAI5e,EAAK+Q,SAASlmB,KAAKmV,IALd4e,GAHc,CAAA,GAWzB,OAAOr1B,OAAO28D,YAAY38D,OAAO4Y,QAAQ8jD,GAAYrmD,IAAI0Z,IACvD,IAAKvI,EAAS4yC,GAAkBrqC,EAC5BtJ,EAAW2zC,EAAe/jD,IAAI9S,GAAKA,EAAEiiB,SACzC,MAAO,CAACgC,EAAS,CAEfE,YAAalB,GAAeg2C,EAAe/1C,EAAUg2C,GACrDrC,uBASKwC,GAAoB34C,GAAe,CAACo3C,GAAqBR,GAA8BrE,IAAwB+F,IAC/GM,GAA6B,CAAC11C,EAAa0K,EAAOnM,KAC3D,IAAIglC,eACFA,EAAcF,aACdA,GACE34B,EACJ,GAAiB,UAAbnM,EAAJ,CAIA,IAAIo3C,EAAsB51C,GAAuBC,EAAaujC,EAAgBF,GAC9E,GAA2B,MAAvBsS,GAA0D,IAA3BA,EAAoB,IAAuC,IAA3BA,EAAoB,GAGvF,OAAOA,CALP,GAOSC,GAA4B94C,GAAe,CAAC24C,GAAmBxS,GAA4B6O,IAAe4D,IAC1GG,GAAoD,CAACnwD,EAAM0qD,EAAcxoC,EAAOrJ,IACrFqJ,EAAM9tB,OAAS,EACV4L,EAAK6uD,QAAQplD,GACXyY,EAAM2sC,QAAQjlD,IACnB,IAAIwmD,EAAiBC,EACjBhB,EAA2D,QAAtCe,EAAkBxmD,EAAK0mD,iBAA2C,IAApBF,OAA6B,EAASA,EAAgBzqD,OAAOqpD,GAAYD,GAA8Bl2C,EAAUm2C,IACpLuB,EAAiB73C,GAAkBjP,EAA0D,QAAlD4mD,EAAwB3F,EAAa/xC,eAA+C,IAA1B03C,EAAmCA,EAAwBzmD,EAAK+O,SACzK,MAAO,CACLnlB,MAAO+8D,EACPC,YAAarB,GAAwB1lD,EAAO8mD,EAAgBlB,OAG/D1pD,OAAOoH,SAE8E,OAArF29C,aAAmD,EAASA,EAAa/xC,SACrE3Y,EAAKwJ,IAAII,KACdpW,MAAOklB,GAAkB9O,EAAM8gD,EAAa/xC,SAC5C63C,YAAa,MAGVxwD,EAAKwJ,IAAIC,KACdjW,MAAOiW,EACP+mD,YAAa,MAGNC,GAAsDr5C,GAAeo3C,GAAqBpB,GAAgBe,GAA2C/B,GAAc+D,IAC9K,SAASO,GAAmC9mD,GAC1C,IAAIpW,MACFA,GACEoW,EACJ,GAAI9T,EAAWtC,IAAUA,aAAiBkc,KACxC,OAAOlc,CAGX,CACA,IA0BWm9D,GAAsBjG,IAC/B,IAAIkG,EACJ,GAAoB,MAAhBlG,KAA0B,WAAYA,GACxC,OAAO+B,GAET,GAA2B,MAAvB/B,EAAajwC,OACf,OAAOiwC,EAAajwC,OAEtB,GAA0B,MAAtBiwC,EAAalyB,MAAe,CAC9B,GAA0B,WAAtBkyB,EAAa7jD,KAAmB,CAClC,IAAIgqD,EAAY3B,GAAiBxE,EAAalyB,OAC9C,MAAO,CAAC39B,KAAK2I,OAAOqtD,GAAYh2D,KAAKkgB,OAAO81C,GAC9C,CACA,GAA0B,aAAtBnG,EAAa7jD,KACf,OAAO6jD,EAAalyB,MAAMhvB,IAAIxV,OAElC,CACA,OAAoH,QAA5G48D,EAAuBlG,aAAmD,EAASA,EAAajwC,cAA6C,IAAzBm2C,EAAkCA,EAAuBnE,IAE5KqE,GAAe,WACxB,IAAK,IAAIpmC,EAAOx0B,UAAU9B,OAAQ28D,EAAU,IAAI37D,MAAMs1B,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAClFmmC,EAAQnmC,GAAQ10B,UAAU00B,GAE5B,IAAIomC,EAAaD,EAAQprD,OAAOoH,SAChC,GAA0B,IAAtBikD,EAAW58D,OAAf,CAGA,IAAIy8D,EAAYG,EAAWz5C,OAG3B,MAAO,CAFG1c,KAAK2I,OAAOqtD,GACZh2D,KAAKkgB,OAAO81C,GAHtB,CAKF,EACWI,GAAsBj6C,GAASA,EAAMk6C,kBAAkBC,KACvDC,GAA0B,CAACC,EAAUx4C,EAAU2zC,IACjD6E,EAAS1rD,OAAO2rD,GAAwB,iBAAlBA,EAAGC,YAA+B5rD,OAAO2rD,GACnD,UAAbz4C,EACKy4C,EAAG5D,UAAYlB,EAEjB8E,EAAG3D,UAAYnB,GAGfgF,GAA4Bp6C,GAAe,CAAC65C,GAAqB7E,GAAcE,IAAa8E,IAC5FK,GAAuBz6C,GAASA,EAAMk6C,kBAAkBQ,MACxDC,GAA6Bv6C,GAAe,CAACq6C,GAAsBrF,GAAcE,IAAa8E,IAC9FQ,GAAuB56C,GAASA,EAAMk6C,kBAAkBW,MACxDC,GAA6B16C,GAAe,CAACw6C,GAAsBxF,GAAcE,IAAa8E,IAC9FW,GAAoB,CAACZ,EAAMt4C,KACpC,IAAIm5C,EAAY9C,GAAiBiC,EAAK3nD,IAAIyoD,GAAoB,UAAbp5C,EAAuBo5C,EAAI93D,EAAI83D,EAAI73D,IACpF,GAAyB,IAArB43D,EAAU59D,OAGd,MAAO,CAACyG,KAAK2I,OAAOwuD,GAAYn3D,KAAKkgB,OAAOi3C,KAE1CE,GAA4B96C,GAAeo6C,GAA2BpF,GAAc2F,IAC7EI,GAAqB,CAACT,EAAO74C,KACtC,IAAIm5C,EAAY9C,GAAiBwC,EAAM7C,QAAQpuD,GAAQ,CAAc,UAAboY,EAAuBpY,EAAKtE,GAAKsE,EAAKrE,GAAiB,UAAbyc,EAAuBpY,EAAKnE,GAAKmE,EAAKlE,MACxI,GAAyB,IAArBy1D,EAAU59D,OAGd,MAAO,CAACyG,KAAK2I,OAAOwuD,GAAYn3D,KAAKkgB,OAAOi3C,KAE1CI,GAA6Bh7C,GAAe,CAACu6C,GAA4BvF,IAAe+F,IACjFE,GAAqB,CAACR,EAAOh5C,KACtC,IAAIm5C,EAAY9C,GAAiB2C,EAAMroD,IAAIzJ,GAAqB,UAAb8Y,EAAuB9Y,EAAK5F,EAAI4F,EAAK3F,IACxF,GAAyB,IAArB43D,EAAU59D,OAGd,MAAO,CAACyG,KAAK2I,OAAOwuD,GAAYn3D,KAAKkgB,OAAOi3C,KAE1CM,GAA6Bl7C,GAAe06C,GAA4B1F,GAAciG,IACtFE,GAAgCn7C,GAAe86C,GAA2BI,GAA4BF,GAA4B,CAACI,EAAYC,EAAaC,IACvJ5B,GAAa0B,EAAYE,EAAaD,IAEpCE,GAAyBv7C,GAAe,CAACg2C,IAAiBuD,IAC1DiC,GAAyB,CAAClI,EAAcmI,EAAkB5C,EAAqB6C,EAAyBC,KACjH,IAAIC,EZvgBC,SAAsDC,EAAY/U,GACvE,GAAKA,GAIqB,mBAAf+U,GAIP79D,MAAMC,QAAQ49D,IAAqC,IAAtBA,EAAW7+D,OAAc,CACxD,IACI8+D,EAAUC,GADTC,EAAaC,GAAeJ,EAEjC,GAAI/sC,GAAoBktC,GACtBF,EAAWE,OACN,GAA2B,mBAAhBA,EAEhB,OAEF,GAAIltC,GAAoBmtC,GACtBF,EAAWE,OACN,GAA2B,mBAAhBA,EAEhB,OAEF,IAAIC,EAAY,CAACJ,EAAUC,GAC3B,GAAIrV,GAAyBwV,GAC3B,OAAOA,CAEX,CAEF,CYyeiCC,CAA6CV,EAAkBnI,EAAaxM,mBAC3G,OAAgC,MAA5B8U,EAEKA,EZtdJ,SAAkCC,EAAYO,EAAYtV,GAC/D,GAAKA,GAAmC,MAAdsV,EAA1B,CAIA,GAA0B,mBAAfP,GAA2C,MAAdO,EACtC,IACE,IAAIr/D,EAAS8+D,EAAWO,EAAYtV,GACpC,GAAIJ,GAAyB3pD,GAC3B,OAAO4pD,GAAa5pD,EAAQq/D,EAAYtV,EAE5C,CAAE,MAAOnrB,GAET,CAEF,GAAI39B,MAAMC,QAAQ49D,IAAqC,IAAtBA,EAAW7+D,OAAc,CACxD,IACI8+D,EAAUC,GADTC,EAAaC,GAAeJ,EAEjC,GAAoB,SAAhBG,EACgB,MAAdI,IACFN,EAAWr4D,KAAK2I,OAAOgwD,SAEpB,GAAI59D,EAASw9D,GAClBF,EAAWE,OACN,GAA2B,mBAAhBA,EAChB,IACoB,MAAdI,IACFN,EAAWE,EAAYI,aAA+C,EAASA,EAAW,IAE9F,CAAE,MAAOC,GAET,MACK,GAA2B,iBAAhBL,GAA4Bn4C,GAAc1J,KAAK6hD,GAAc,CAC7E,IAAIrpB,EAAQ9uB,GAAcoqB,KAAK+tB,GAC/B,GAAa,MAATrpB,GAA+B,MAAdypB,EACnBN,OAAW/9D,MACN,CACL,IAAI3B,GAASu2C,EAAM,GACnBmpB,EAAWM,EAAW,GAAKhgE,CAC7B,CACF,MACE0/D,EAAWM,aAA+C,EAASA,EAAW,GAEhF,GAAoB,SAAhBH,EACgB,MAAdG,IACFL,EAAWt4D,KAAKkgB,OAAOy4C,SAEpB,GAAI59D,EAASy9D,GAClBF,EAAWE,OACN,GAA2B,mBAAhBA,EAChB,IACoB,MAAdG,IACFL,EAAWE,EAAYG,aAA+C,EAASA,EAAW,IAE9F,CAAE,MAAOE,GAET,MACK,GAA2B,iBAAhBL,GAA4Bn4C,GAAc3J,KAAK8hD,GAAc,CAC7E,IAAIM,EAASz4C,GAAcmqB,KAAKguB,GAChC,GAAc,MAAVM,GAAgC,MAAdH,EACpBL,OAAWh+D,MACN,CACL,IAAIy+D,GAAUD,EAAO,GACrBR,EAAWK,EAAW,GAAKI,CAC7B,CACF,MACET,EAAWK,aAA+C,EAASA,EAAW,GAEhF,IAAIF,EAAY,CAACJ,EAAUC,GAC3B,GAAIrV,GAAyBwV,GAC3B,OAAkB,MAAdE,EACKF,EAEFvV,GAAauV,EAAWE,EAAYtV,EAE/C,CAvEA,CAyEF,CY2YS2V,CAAyBhB,EAAkB/B,GAAab,EAAqB8C,EA1GzDe,CAAAA,IAC3B,IAKIC,EAAc7E,GALI4E,EAErBjF,QAAQlwD,GAAK,CAACA,EAAEnL,MAAOmL,EAAE6xD,cAEzBj5C,KAAK,IAEN,GAA2B,IAAvBw8C,EAAY3/D,OAGhB,MAAO,CAACyG,KAAK2I,OAAOuwD,GAAcl5D,KAAKkgB,OAAOg5C,KAgG+DC,CAAuBlB,IAA2BpI,EAAaxM,oBAE1K+V,GAAwB78C,GAAe,CAACg2C,GAAgBuF,GAAwBzC,GAA2BO,GAAqD8B,IAAgCK,IAOhMsB,GAAe,CAAC,EAAG,GACZC,GAAoB,CAACzJ,EAAczhD,EAAQ0mD,EAAeyE,EAAkBxE,EAAiB/2C,EAAUw7C,KAChH,GAAoB,MAAhB3J,GAAyC,MAAjBiF,GAAkD,IAAzBA,EAAcv7D,OAAnE,CAGA,IAAIukB,QACFA,EAAO9R,KACPA,GACE6jD,EACA4J,EAAgB17C,GAAkB3P,EAAQ4P,GAC9C,OAAIy7C,GAA4B,MAAX37C,EACZ2d,GAAM,EAAGq5B,EAAcv7D,QAEnB,aAATyS,EApH4B,EAAC0tD,EAAiB7J,EAAc4J,KAChE,IAAIE,EAAoBD,EAAgB/qD,IAAIknD,IAAoC/qD,OAAOorB,GAAU,MAALA,GAC5F,OAAIujC,IAA0C,MAAxB5J,EAAa/xC,SAAmB+xC,EAAaI,yBAA2Bx0D,EAAak+D,IAKlGl+B,GAAM,EAAGi+B,EAAgBngE,QAE9Bs2D,EAAaI,wBACR0J,EAEFp/D,MAAMgK,KAAK,IAAI6M,IAAIuoD,KAyGjBC,CAA4BL,EAAkB1J,EAAc4J,GAE7C,WAApB1E,EACKsE,GAEFG,CAfP,GAiBSK,GAAmBt9C,GAAe,CAACg2C,GAAgBjvC,GAAmBqwC,GAAqBM,GAAwBnF,GAAuByC,GAAc6H,IAAwBE,IAChLQ,GAAuB,CAACC,EAAY3rD,EAAQ4rD,EAAQC,EAAWj8C,KACxE,GAAkB,MAAd+7C,EAAJ,CAGA,IAAIh7B,MACFA,EAAK/yB,KACLA,GACE+tD,EACJ,GAAc,SAAVh7B,EACF,MAAe,WAAX3wB,GAAoC,eAAb4P,EAClB,OAEM,WAAX5P,GAAoC,cAAb4P,EAClB,SAEI,aAAThS,GAAuBiuD,IAAcA,EAAUn/D,QAAQ,cAAgB,GAAKm/D,EAAUn/D,QAAQ,cAAgB,GAAKm/D,EAAUn/D,QAAQ,kBAAoB,IAAMk/D,GAC1J,QAEI,aAAThuD,EACK,OAEF,SAET,GAAqB,iBAAV+yB,EAAoB,CAC7B,IAAIzyB,EAAO,QAAQtQ,OAAOD,EAAWgjC,IACrC,OAAOzyB,KAAQ4tD,GAAW5tD,EAAO,OACnC,CAvBA,GA0BS6tD,GAAsB59C,GAAe,CAACg2C,GAAgBjvC,GAAmBmvC,GAAcxD,GAAiBsC,IAAeuI,IAgB3H,SAASM,GAAqBnI,EAAMoI,EAAeC,EAAYxK,GACpE,GAAkB,MAAdwK,GAAmC,MAAbxK,EAA1B,CAGA,GAA0B,mBAAfmC,EAAKlzB,MAEd,OAAOkzB,EAAKlzB,MAAMC,OAAOpf,OAAO06C,GAAY7+B,MAAMq0B,GAEpD,IAAIyK,EAvBN,SAA4BF,GAC1B,GAAqB,MAAjBA,EAAJ,CAGA,GAAIA,KAAiBH,GAEnB,OAAOA,GAASG,KAElB,IAAI/tD,EAAO,QAAQtQ,OAAOD,EAAWs+D,IACrC,OAAI/tD,KAAQ4tD,GAEHA,GAAS5tD,UAFlB,CANA,CAWF,CASwBkuD,CAAmBH,GACzC,GAAuB,MAAnBE,EAAJ,CAGA,IAAIx7B,EAAQw7B,EAAgB36C,OAAO06C,GAAY7+B,MAAMq0B,GAGrD,MnI7b8B/wB,CAAAA,IAC9B,IAAInf,EAASmf,EAAMnf,SACnB,GAAKA,KAAUA,EAAOrmB,QAAU,GAAhC,CAGA,IAAIoC,EAAMikB,EAAOrmB,OACbkiC,EAAQsD,EAAMtD,QACdg/B,EAAWz6D,KAAK2I,IAAI8yB,EAAM,GAAIA,EAAM,IAAMxd,GAC1Cy8C,EAAW16D,KAAKkgB,IAAIub,EAAM,GAAIA,EAAM,IAAMxd,GAC1C08C,EAAQ57B,EAAMnf,EAAO,IACrBg7C,EAAO77B,EAAMnf,EAAOjkB,EAAM,KAC1Bg/D,EAAQF,GAAYE,EAAQD,GAAYE,EAAOH,GAAYG,EAAOF,IACpE37B,EAAMnf,OAAO,CAACA,EAAO,GAAIA,EAAOjkB,EAAM,IARxC,GmIwbAk/D,CAAmB97B,GACZA,CAJP,CARA,CAaF,CACO,IAAI+7B,GAAmB,CAACR,EAAYzK,EAAcwK,KACvD,IAAIrC,EAAmBlC,GAAoBjG,GAC3C,GAAsB,SAAlBwK,GAA8C,WAAlBA,EAGhC,OAAoB,MAAhBxK,GAAwBA,EAAapC,WAAalzD,MAAMC,QAAQw9D,KAA8C,SAAxBA,EAAiB,IAAyC,SAAxBA,EAAiB,KAAkB/U,GAAyBqX,GAC/K7L,GAAkB6L,EAAYzK,EAAapC,UAAWoC,EAAa5C,eAExD,MAAhB4C,GAAwBA,EAAapC,WAAmC,WAAtBoC,EAAa7jD,MAAqBi3C,GAAyBqX,GACxGzL,GAAyByL,EAAYzK,EAAapC,UAAWoC,EAAa5C,oBADnF,GAKS8N,GAAkBx+C,GAAe,CAACs9C,GAAkBrH,GAAoB2H,IAAsBW,IAC9FE,GAAiC,CAACnL,EAAcjwC,EAAQq7C,EAAWj9C,KAC5E,GAOa,cAAbA,GAAgH,YAAnF6xC,aAAmD,EAASA,EAAa7jD,OAAsBi3C,GAAyBrjC,IAAWrlB,MAAMC,QAAQygE,IAAcA,EAAU1hE,OAAS,EAAG,CAChN,IAAI2hE,EAAgBt7C,EAAO,GACvBu7C,EAAeF,EAAU,GACzBG,EAAgBx7C,EAAO,GACvBy7C,EAAeJ,EAAUA,EAAU1hE,OAAS,GAChD,MAAO,CAACyG,KAAK2I,IAAIuyD,EAAeC,GAAen7D,KAAKkgB,IAAIk7C,EAAeC,GACzE,CACA,OAAOz7C,GAEE07C,GAAqC/+C,GAAe,CAACg2C,GAAgBsH,GAAkBkB,GAAiBxJ,IAAeyJ,IAQvHO,GAAsCh/C,GAAe03C,GAAwB1B,GAAgB,CAACmH,EAAiB7J,KACxH,GAAKA,GAAsC,WAAtBA,EAAa7jD,KAAlC,CAGA,IAAIwvD,EAAgCr7C,IAChCs7C,EAAelhE,MAAMgK,KAAK8vD,GAAiBqF,EAAgB/qD,IAAI7K,GAAKA,EAAEnL,SAAS8iB,KAAK,CAAChU,EAAG4B,IAAM5B,EAAI4B,GACtG,GAAIoyD,EAAaliE,OAAS,EACxB,OAAO4mB,IAET,IAAIwsC,EAAO8O,EAAaA,EAAaliE,OAAS,GAAKkiE,EAAa,GAChE,GAAa,IAAT9O,EACF,OAAOxsC,IAGT,IAAK,IAAItkB,EAAI,EAAGA,EAAI4/D,EAAaliE,OAAS,EAAGsC,IAAK,CAChD,IAAI6/D,EAAWD,EAAa5/D,EAAI,GAAK4/D,EAAa5/D,GAClD2/D,EAAgCx7D,KAAK2I,IAAI6yD,EAA+BE,EAC1E,CACA,OAAOF,EAAgC7O,CAfvC,IAiBEgP,GAA0Bp/C,GAAeg/C,GAAqCj4C,GPjtBhDnH,GAASA,EAAM4yC,UAAU6M,eOitBgEz6C,GAA2B,CAAC06C,EAAIC,EAAIC,EAAIzsD,IAAYA,EAAS,CAAC0sD,EAA2B5tD,EAAQwtD,EAAgBz8C,EAAQ7P,KAClP,IAAK+b,GAAoB2wC,GACvB,OAAO,EAET,IAAIC,EAAwB,aAAX7tD,EAAwB+Q,EAAO1gB,OAAS0gB,EAAO3gB,MAChE,GAAgB,QAAZ8Q,EACF,OAAO0sD,EAA4BC,EAAa,EAElD,GAAgB,WAAZ3sD,EAAsB,CACxB,IAAI4sD,EAAMhhE,EAAgB0gE,EAAgBI,EAA4BC,GAClEE,EAAWH,EAA4BC,EAAa,EACxD,OAAOE,EAAWD,GAAOC,EAAWD,GAAOD,EAAaC,CAC1D,CACA,OAAO,IAgBLE,GAAqB7/C,GAAey1C,GAdE,CAAC71C,EAAOw1C,KAChD,IAAI0K,EAAgBrK,GAAoB71C,EAAOw1C,GAC/C,OAAqB,MAAjB0K,GAA0D,iBAA1BA,EAAc/sD,QACzC,EAEFqsD,GAAwBx/C,EAAO,QAASw1C,EAAQ0K,EAAc/sD,UASoB,CAAC+sD,EAAeC,KACzG,IAAIC,EAAeC,EACnB,GAAqB,MAAjBH,EACF,MAAO,CACLr/C,KAAM,EACNgF,MAAO,GAGX,IAAI1S,QACFA,GACE+sD,EACJ,MAAuB,iBAAZ/sD,EACF,CACL0N,KAAMs/C,EACNt6C,MAAOs6C,GAGJ,CACLt/C,MAA0C,QAAlCu/C,EAAgBjtD,EAAQ0N,YAAoC,IAAlBu/C,EAA2BA,EAAgB,GAAKD,EAClGt6C,OAA6C,QAApCw6C,EAAiBltD,EAAQ0S,aAAsC,IAAnBw6C,EAA4BA,EAAiB,GAAKF,KAGvGG,GAAqBlgD,GAAe41C,GA7BE,CAACh2C,EAAOw1C,KAChD,IAAI+K,EAAgBvK,GAAoBh2C,EAAOw1C,GAC/C,OAAqB,MAAjB+K,GAA0D,iBAA1BA,EAAcptD,QACzC,EAEFqsD,GAAwBx/C,EAAO,QAASw1C,EAAQ+K,EAAcptD,UAwBoB,CAACotD,EAAeJ,KACzG,IAAIK,EAAcC,EAClB,GAAqB,MAAjBF,EACF,MAAO,CACLz/C,IAAK,EACLiF,OAAQ,GAGZ,IAAI5S,QACFA,GACEotD,EACJ,MAAuB,iBAAZptD,EACF,CACL2N,IAAKq/C,EACLp6C,OAAQo6C,GAGL,CACLr/C,KAAuC,QAAhC0/C,EAAertD,EAAQ2N,WAAkC,IAAjB0/C,EAA0BA,EAAe,GAAKL,EAC7Fp6C,QAAgD,QAAtC06C,EAAkBttD,EAAQ4S,cAAwC,IAApB06C,EAA6BA,EAAkB,GAAKN,KAGrGO,GAAoBtgD,GAAe,CAAC4E,GAA2Bi7C,GAAoBx5C,GAAuBD,GAAqB,CAAC6uC,EAAQsL,EAAShJ,IAAeA,GAAa,CAAC30C,EAAQ7P,EAAS4T,EAAiB3C,EAAOuzC,KAChO,IACExkD,QAAS6T,GACP5C,EACJ,OAAIuzC,EACK,CAAC3wC,EAAanG,KAAMkG,EAAgB1kB,MAAQ2kB,EAAanB,OAE3D,CAAC7C,EAAOnC,KAAO1N,EAAQ0N,KAAMmC,EAAOnC,KAAOmC,EAAO3gB,MAAQ8Q,EAAQ0S,SAEhE+6C,GAAoBxgD,GAAe,CAAC4E,GAA2BmC,GAAmBm5C,GAAoB75C,GAAuBD,GAAqB,CAAC6uC,EAAQsL,EAAShJ,IAAeA,GAAa,CAAC30C,EAAQ/Q,EAAQkB,EAAS4T,EAAiB85C,EAAOlJ,KAC3P,IACExkD,QAAS6T,GACP65C,EACJ,OAAIlJ,EACK,CAAC5wC,EAAgBzkB,OAAS0kB,EAAajB,OAAQiB,EAAalG,KAEtD,eAAX7O,EACK,CAAC+Q,EAAOlC,IAAMkC,EAAO1gB,OAAS6Q,EAAQ4S,OAAQ/C,EAAOlC,IAAM3N,EAAQ2N,KAErE,CAACkC,EAAOlC,IAAM3N,EAAQ2N,IAAKkC,EAAOlC,IAAMkC,EAAO1gB,OAAS6Q,EAAQ4S,UAE9D+6C,GAAkB,CAAC9gD,EAAO6B,EAAU2zC,EAAQmC,KACrD,IAAIoJ,EACJ,OAAQl/C,GACN,IAAK,QACH,OAAO6+C,GAAkB1gD,EAAOw1C,EAAQmC,GAC1C,IAAK,QACH,OAAOiJ,GAAkB5gD,EAAOw1C,EAAQmC,GAC1C,IAAK,QACH,OAAuE,QAA/DoJ,EAAuB7K,GAAoBl2C,EAAOw1C,UAA8C,IAAzBuL,OAAkC,EAASA,EAAqBzhC,MACjJ,IAAK,YACH,OAAO41B,GAAqBl1C,GAC9B,IAAK,aACH,OAAOm1C,GAAsBn1C,EAAOw1C,GACtC,QACE,SAGKwL,GAA6B5gD,GAAe,CAACg2C,GAAgB0K,IAAkBrN,IAC/EwN,GAAkB7gD,GAAe,CAACg2C,GAAgB4H,GAAqBmB,GAAoC6B,IAA6B/C,IASnJ,SAASiD,GAAW51D,EAAG4B,GACrB,OAAI5B,EAAEyoD,GAAK7mD,EAAE6mD,IACJ,EAELzoD,EAAEyoD,GAAK7mD,EAAE6mD,GACJ,EAEF,CACT,CAhBqC3zC,GAAe42C,GAA8B5B,GAAc,CAAClqC,EAAOrJ,IAC/FqJ,EAAM2sC,QAAQjlD,IACnB,IAAIuuD,EACJ,OAA+C,QAAvCA,EAAmBvuD,EAAK0mD,iBAA4C,IAArB6H,EAA8BA,EAAmB,KACvGxyD,OAAOhN,GACDo2D,GAA8Bl2C,EAAUlgB,KAYnD,IAAIy/D,GAAsB,CAAC/L,EAAQ3vC,IAAgBA,EAC/C27C,GAAa,CAAChM,EAAQiM,EAAc37C,IAAWA,EAC/C47C,GAA+BnhD,GAAeqE,GAAgB28C,GAAqBC,GAAY,CAACG,EAAS97C,EAAaC,IAAW67C,EAAQ7yD,OAAOmnD,GAAQA,EAAKpwC,cAAgBA,GAAa/W,OAAOmnD,GAAQA,EAAKnwC,SAAWA,GAAQrG,KAAK4hD,KACtOO,GAA+BrhD,GAAeyE,GAAgBu8C,GAAqBC,GAAY,CAACG,EAAS97C,EAAaC,IAAW67C,EAAQ7yD,OAAOmnD,GAAQA,EAAKpwC,cAAgBA,GAAa/W,OAAOmnD,GAAQA,EAAKnwC,SAAWA,GAAQrG,KAAK4hD,KACtOQ,GAAe,CAAC1+C,EAAQ0wC,KACnB,CACLrxD,MAAO2gB,EAAO3gB,MACdC,OAAQoxD,EAAapxD,SAUI8d,GAAe4E,GAA2B6wC,GAAqB6L,IAqBrDthD,GAAemE,GAAmBS,GAA2Bu8C,GAA8BH,GAAqBC,GAAY,CAACl8C,EAAanC,EAAQ2+C,EAA2Bj8C,EAAaC,KAC/N,IACI2D,EADAuM,EAAQ,CAAA,EAWZ,OATA8rC,EAA0B5gE,QAAQ+0D,IAChC,IAAI8L,EAAWF,GAAa1+C,EAAQ8yC,GACpB,MAAZxsC,IACFA,EA1BkC,EAACtG,EAAQ0C,EAAaP,KAC5D,OAAQO,GACN,IAAK,MACH,OAAO1C,EAAOlC,IAChB,IAAK,SACH,OAAOqE,EAAcnC,EAAO+C,OAC9B,QACE,OAAO,IAmBI87C,CAAkC7+C,EAAQ0C,EAAaP,IAEpE,IAAI28C,EAA4B,QAAhBp8C,IAA0BC,GAA0B,WAAhBD,GAA4BC,EAChFkQ,EAAMigC,EAAK/B,IAAMzqC,EAAWzqB,OAAOijE,GAAaF,EAASt/D,OACzDgnB,IAAaw4C,GAAY,EAAK,GAAKF,EAASt/D,SAEvCuzB,IAE8BzV,GAAekE,GAAkBU,GAA2By8C,GAA8BL,GAAqBC,GAAY,CAACn8C,EAAYlC,EAAQ2+C,EAA2Bj8C,EAAaC,KAC7N,IACI2D,EADAuM,EAAQ,CAAA,EAWZ,OATA8rC,EAA0B5gE,QAAQ+0D,IAChC,IAAI8L,EA9CW,EAAC5+C,EAAQ0wC,KAEnB,CACLrxD,MAFwC,iBAAvBqxD,EAAarxD,MAAqBqxD,EAAarxD,M5Hj0BlC,G4Ho0B9BC,OAAQ0gB,EAAO1gB,SA0CAy/D,CAAa/+C,EAAQ8yC,GACpB,MAAZxsC,IACFA,EA9BkC,EAACtG,EAAQ0C,EAAaR,KAC5D,OAAQQ,GACN,IAAK,OACH,OAAO1C,EAAOnC,KAChB,IAAK,QACH,OAAOqE,EAAalC,EAAO6C,MAC7B,QACE,OAAO,IAuBIm8C,CAAkCh/C,EAAQ0C,EAAaR,IAEpE,IAAI48C,EAA4B,SAAhBp8C,IAA2BC,GAA0B,UAAhBD,GAA2BC,EAChFkQ,EAAMigC,EAAK/B,IAAMzqC,EAAWzqB,OAAOijE,GAAaF,EAASv/D,MACzDinB,IAAaw4C,GAAY,EAAK,GAAKF,EAASv/D,QAEvCwzB,IAwCoBzV,GAAe4E,GAA2BgxC,GAAqB,CAAChzC,EAAQ0wC,KAE5F,CACLrxD,MAFwC,iBAAvBqxD,EAAarxD,MAAqBqxD,EAAarxD,M5H/5BlC,G4Hk6B9BC,OAAQ0gB,EAAO1gB,UAmBZ,IAAI2/D,GAAyB,CAACC,EAAaC,EAAerM,EAAMj0C,KACrE,GAAY,MAARi0C,EAAJ,CAGA,IAAIhC,wBACFA,EAAuBjkD,KACvBA,EAAI8R,QACJA,GACEm0C,EACAwH,EAAgB17C,GAAkBsgD,EAAargD,GAC/CugD,EAAUD,EAAc3vD,IAAI6vD,GAAMA,EAAG7lE,OACzC,OAAImlB,GAAW27C,GAA0B,aAATztD,GAAuBikD,GAA2Bx0D,EAAa8iE,GACtFA,OADT,CARA,GAaSE,GAAwBliD,GAAe,CAAC+G,GAAmB2wC,GAAwB1B,GAAgBhB,IAAe6M,IAClHM,GAA2B,CAACtwD,EAAQkwD,EAAerM,EAAMj0C,KAClE,GAAY,MAARi0C,GAAgC,MAAhBA,EAAKn0C,QAAzB,CAGA,IAAI9R,KACFA,EAAI+yB,MACJA,GACEkzB,EAEJ,OADoBl0C,GAAkB3P,EAAQ4P,IACf,WAAThS,GAA+B,SAAV+yB,OAA3C,EACSu/B,EAAc3vD,IAAI7K,GAAKA,EAAEnL,MAPlC,GAWSgmE,GAA0BpiD,GAAe,CAAC+G,GAAmB2wC,GAAwBzB,GAAoBjB,IAAemN,IAClEniD,GAAe,CAAC+G,GA90B/C,CAACnH,EAAO6B,EAAU2zC,KAClD,OAAQ3zC,GACN,IAAK,QAED,OAAOg0C,GAAoB71C,EAAOw1C,GAEtC,IAAK,QAED,OAAOQ,GAAoBh2C,EAAOw1C,GAEtC,QACE,MAAM,IAAI/vD,MAAM,yBAAyB5F,OAAOgiB,MAm0B2Em8C,GAAqBiD,GAAiBqB,GAAuBE,GAAyB1B,GAAiBlC,GAAiBxJ,IAAe,CAACnjD,EAAQ6jD,EAAMoI,EAAet7B,EAAO6/B,EAAiBjF,EAAmB7J,EAAWmL,EAAWj9C,KACrW,GAAY,MAARi0C,EACF,OAAO,KAET,IAAIwH,EAAgB17C,GAAkB3P,EAAQ4P,GAC9C,MAAO,CACLtR,MAAOulD,EAAKvlD,MACZmlC,SAAUogB,EAAKpgB,SACfigB,WAAYG,EAAKH,WACjBjwC,YAAaowC,EAAKpwC,YAClBuuC,KAAM6B,EAAK7B,KACX3C,UAAWwE,EAAKxE,UAChBsE,cAAeE,EAAKF,cACpBp0B,MAAOs0B,EAAKt0B,MACZ3xB,KAAMimD,EAAKjmD,KACX2b,KAAMsqC,EAAKtqC,KACX3J,WACA27C,oBACAiF,kBACAnF,gBACAwB,YACAx/B,MAAOq0B,EACPuK,gBACAt7B,WA+D2BxiB,GAAe,CAAC+G,GAAmBkvC,GAAoB2H,GAAqBiD,GAAiBrC,GAAiBkC,GAAiBwB,GAAuBE,GAAyBpN,IA5DhL,CAACnjD,EAAQ6jD,EAAMoI,EAAet7B,EAAOk8B,EAAWnL,EAAW8O,EAAiBjF,EAAmB37C,KAC3H,GAAY,MAARi0C,GAAyB,MAATlzB,EAApB,CAGA,IAAI06B,EAAgB17C,GAAkB3P,EAAQ4P,IAC1ChS,KACFA,EAAI2xB,MACJA,EAAK8vB,UACLA,GACEwE,EAGA4M,EAAkC,cAAlBxE,GAA4D,mBAApBt7B,EAAMG,UAA2BH,EAAMG,YAAc,EAAI,EACjH/f,EAAkB,aAATnT,GAAuB+yB,EAAMG,UAAYH,EAAMG,YAAc2/B,EAAgB,EAC1F1/C,EAAsB,cAAbnB,GAAyC,MAAb8xC,GAAqBA,EAAUv2D,QAAU,EAA4C,EAAxCoB,EAASm1D,EAAU,GAAKA,EAAU,IAAU3wC,EAASA,EAGvI,IAAI2/C,EAAmBnhC,GAASs9B,EAChC,OAAI6D,EACWA,EAAiBnwD,IAAI,CAACC,EAAOpV,KACxC,IAAIulE,EAAeH,EAAkBA,EAAgB9jE,QAAQ8T,GAASA,EACtE,MAAO,CACLpV,QAGAyuB,WAAY8W,EAAMggC,GAAgB5/C,EAClCxmB,MAAOiW,EACPuQ,YAGUrU,OAAOk0D,IAAQpkE,EAAMokE,EAAI/2C,aAIrCwxC,GAAiBE,EACZA,EAAkBhrD,IAAI,CAACC,EAAOpV,MACnCyuB,WAAY8W,EAAMnwB,GAASuQ,EAC3BxmB,MAAOiW,EACPpV,QACA2lB,YAGA4f,EAAMpB,MACDoB,EAAMpB,MAAM8vB,GAElB9+C,IAAIC,IAAAA,CACHqZ,WAAY8W,EAAMnwB,GAASuQ,EAC3BxmB,MAAOiW,EACPuQ,YAKG4f,EAAMnf,SAASjR,IAAI,CAACC,EAAOpV,MAChCyuB,WAAY8W,EAAMnwB,GAASuQ,EAC3BxmB,MAAOimE,EAAkBA,EAAgBhwD,GAASA,EAClDpV,QACA2lB,WAtDF,IAgGsC5C,GAAe,CAAC+G,GAAmBkvC,GAAoB4K,GAAiBH,GAAiBwB,GAAuBE,GAAyBpN,IAtC1I,CAACnjD,EAAQ6jD,EAAMlzB,EAAO+wB,EAAW8O,EAAiBjF,EAAmB37C,KAC1G,GAAY,MAARi0C,GAAyB,MAATlzB,GAA8B,MAAb+wB,GAAqBA,EAAU,KAAOA,EAAU,GAArF,CAGA,IAAI2J,EAAgB17C,GAAkB3P,EAAQ4P,IAC1CyvC,UACFA,GACEwE,EACA9yC,EAAS,EAIb,OAHAA,EAAsB,cAAbnB,IAA6B8xC,aAA6C,EAASA,EAAUv2D,SAAW,EAA4C,EAAxCoB,EAASm1D,EAAU,GAAKA,EAAU,IAAU3wC,EAASA,EAGtKs6C,GAAiBE,EACZA,EAAkBhrD,IAAI,CAACC,EAAOpV,MACnCyuB,WAAY8W,EAAMnwB,GAASuQ,EAC3BxmB,MAAOiW,EACPpV,QACA2lB,YAGA4f,EAAMpB,MACDoB,EAAMpB,MAAM8vB,GAElB9+C,IAAIC,IAAAA,CACHqZ,WAAY8W,EAAMnwB,GAASuQ,EAC3BxmB,MAAOiW,EACPuQ,YAKG4f,EAAMnf,SAASjR,IAAI,CAACC,EAAOpV,MAChCyuB,WAAY8W,EAAMnwB,GAASuQ,EAC3BxmB,MAAOimE,EAAkBA,EAAgBhwD,GAASA,EAClDpV,QACA2lB,WAhCF,IAoC+B5C,GAAeg2C,GAAgB6K,GAAiB,CAACnL,EAAMlzB,KACtF,GAAY,MAARkzB,GAAyB,MAATlzB,EAGpB,OAAO9zB,GAAcA,GAAc,CAAA,EAAIgnD,GAAO,CAAA,EAAI,CAChDlzB,YAGJ,IAAIkgC,GAAmB1iD,GAAe,CAACg2C,GAAgB4H,GAAqBN,GAAkBsD,IAA6B/C,IACzF79C,GAAe,CAACJ,EAAOu1C,EAAWC,IAAWU,GAAoBl2C,EAAOw1C,GAASsN,GAAkB,CAAChN,EAAMlzB,KAC1I,GAAY,MAARkzB,GAAyB,MAATlzB,EAGpB,OAAO9zB,GAAcA,GAAc,CAAA,EAAIgnD,GAAO,CAAA,EAAI,CAChDlzB,YAQ8BxiB,GAAe,CAAC+G,GAAmB1C,GAAgBI,IAAiB,CAAC5S,EAAQ8wD,EAAUC,KACvH,OAAQ/wD,GACN,IAAK,aAED,OAAO8wD,EAASE,KAAKnN,GAAQA,EAAKlC,UAAY,gBAAkB,gBAEpE,IAAK,WAED,OAAOoP,EAASC,KAAKnN,GAAQA,EAAKlC,UAAY,gBAAkB,gBAIpE,IAAK,UACL,IAAK,SAED,MAAO,gBAEX,QAEI,UC1pCD,IAAIsP,GAAgCljD,GAASA,EAAM+yC,QAAQoQ,wBACvDC,GAAkCpjD,GAASA,EAAM+yC,QAAQsQ,0BAC7D,SAASC,GAAwBC,EAAQJ,EAAyBE,GACvE,GAAc,MAAVE,EACF,OAAOJ,EAET,IAAIK,EAAYD,EAAS,OAAS,OAClC,OAAiC,MAA7BF,EACKF,EAEFE,EAA0BzmE,SAAS4mE,GAAaA,EAAYL,CACrE,CAMO,SAASM,GAAoBF,GAClC,OAAO9lD,GAAeuC,GANjB,SAAgCA,EAAOujD,GAG5C,OAAOD,GAAwBC,EAFDL,GAA8BljD,GAC5BojD,GAAgCpjD,GAElE,CAEiC0jD,CAAuB1jD,EAAOujD,GAC/D,CCnBO,IAAII,GAAqB,CAACC,EAAcC,KAC7C,IAAIC,EACApiE,EAAI7C,OAAOglE,GACf,IAAIplE,EAAMiD,IAAqB,MAAfmiE,EAGhB,OAAOniE,GAAK,EAAIkiE,SAA4F,QAAvCE,EAAkBF,EAAaliE,UAAoC,IAApBoiE,OAA6B,EAASA,EAAgBtnE,WAAQ2B,GCiDzK4lE,GAAgB,CACzB12C,QAAQ,EACRhwB,MAAO,KACPskB,aAASxjB,EACT2tB,gBAAY3tB,GAqCV6lE,GAAe18C,GAAY,CAC7BnX,KAAM,UACNoX,aA5BwB,CACxB08C,gBAAiB,CACfC,MAAOH,GACPI,MAAOJ,IAETK,gBAAiB,CACfF,MAAOH,GACPI,MAAOJ,IAETM,oBAAqBN,GACrBO,gBAAiB,CACfj3C,QAAQ,EACRhwB,MAAO,KACPskB,aAASxjB,EACTksB,WAAOlsB,EACP2tB,gBAAY3tB,GAEdomE,oBAAqB,GACrBrkD,SAAU,CACRqjD,YAAQplE,EACRqmE,QAAS,QACThP,OAAQ,EACRnoC,QAAQ,EACRo3C,kBAActmE,IAMhBqpB,SAAU,CACRk9C,uBAAAA,CAAwB1kD,EAAO0H,GAC7B1H,EAAMukD,oBAAoB9mE,KAAeiqB,EAAO/V,QAClD,EACAgzD,0BAAAA,CAA2B3kD,EAAO0H,GAChC,IAAIrqB,EAAQiB,GAAQ0hB,GAAOukD,oBAAoB5lE,QAAkB+oB,EAAO/V,SACpEtU,GAAQ,GACV2iB,EAAMukD,oBAAoBz8C,OAAOzqB,EAAO,EAE5C,EACAunE,uBAAAA,CAAwB5kD,EAAO0H,GAC7B1H,EAAME,SAAWwH,EAAO/V,OAC1B,EACAkzD,2BAAAA,CAA4B7kD,EAAO0H,GACjC1H,EAAMskD,gBAAgBj3C,QAAS,EAC/BrN,EAAMqkD,oBAAoBh3C,QAAS,EACnCrN,EAAMikD,gBAAgBE,MAAM92C,QAAS,EACrCrN,EAAMikD,gBAAgBE,MAAM9mE,MAAQqqB,EAAO/V,QAAQkyD,YACnD7jD,EAAMikD,gBAAgBE,MAAMxiD,QAAU+F,EAAO/V,QAAQmzD,cACrD9kD,EAAMikD,gBAAgBE,MAAMr4C,WAAapE,EAAO/V,QAAQyqB,gBAC1D,EACA2oC,eAAAA,CAAgB/kD,GAQdA,EAAMikD,gBAAgBE,MAAM92C,QAAS,EACrCrN,EAAMokD,gBAAgBD,MAAM92C,QAAS,CACvC,EACA23C,cAAAA,CAAehlD,GACbA,EAAMikD,gBAAgBE,MAAM92C,QAAS,CACvC,EACA43C,uBAAAA,CAAwBjlD,EAAO0H,GAC7B1H,EAAMskD,gBAAgBj3C,QAAS,EAC/BrN,EAAMikD,gBAAgBC,MAAM72C,QAAS,EACrCrN,EAAMqkD,oBAAoBh3C,QAAS,EACnCrN,EAAMikD,gBAAgBC,MAAM7mE,MAAQqqB,EAAO/V,QAAQkyD,YACnD7jD,EAAMikD,gBAAgBC,MAAMviD,QAAU+F,EAAO/V,QAAQmzD,cACrD9kD,EAAMikD,gBAAgBC,MAAMp4C,WAAapE,EAAO/V,QAAQyqB,gBAC1D,EACA8oC,qBAAAA,CAAsBllD,EAAO0H,GAC3B1H,EAAMskD,gBAAgBj3C,QAAS,EAC/BrN,EAAMokD,gBAAgBD,MAAM92C,QAAS,EACrCrN,EAAMqkD,oBAAoBh3C,QAAS,EACnCrN,EAAMokD,gBAAgBD,MAAM9mE,MAAQqqB,EAAO/V,QAAQkyD,YACnD7jD,EAAMokD,gBAAgBD,MAAMxiD,QAAU+F,EAAO/V,QAAQmzD,cACrD9kD,EAAMokD,gBAAgBD,MAAMr4C,WAAapE,EAAO/V,QAAQyqB,gBAC1D,EACA+oC,sBAAAA,CAAuBnlD,EAAO0H,GAC5B1H,EAAMskD,gBAAgBj3C,QAAS,EAC/BrN,EAAMqkD,oBAAoBh3C,QAAS,EACnCrN,EAAMokD,gBAAgBF,MAAM72C,QAAS,EACrCrN,EAAMokD,gBAAgBF,MAAM7mE,MAAQqqB,EAAO/V,QAAQkyD,YACnD7jD,EAAMokD,gBAAgBF,MAAMviD,QAAU+F,EAAO/V,QAAQmzD,cACrD9kD,EAAMokD,gBAAgBF,MAAMp4C,WAAapE,EAAO/V,QAAQyqB,gBAC1D,EACAgpC,kBAAAA,CAAmBplD,EAAO0H,GACxB1H,EAAMskD,gBAAkB58C,EAAO/V,OACjC,EACA0zD,sBAAAA,CAAuBrlD,EAAO0H,GAC5B1H,EAAMqkD,oBAAoBh3C,OAAS3F,EAAO/V,QAAQ0b,OAClDrN,EAAMqkD,oBAAoBhnE,MAAQqqB,EAAO/V,QAAQkyD,YACjD7jD,EAAMqkD,oBAAoBv4C,WAAapE,EAAO/V,QAAQyqB,iBACtDpc,EAAMqkD,oBAAoB1iD,QAAU+F,EAAO/V,QAAQmzD,aACrD,MAGOJ,wBACTA,GAAuBC,2BACvBA,GAA0BC,wBAC1BA,GAAuBC,4BACvBA,GAA2BG,eAC3BA,GAAcD,gBACdA,GAAeE,wBACfA,GAAuBC,sBACvBA,GAAqBC,uBACrBA,GAAsBC,mBACtBA,GAAkBC,uBAClBA,IACErB,GAAaj8C,QCtLjB,SAASrZ,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAmB5K,IAAI2jE,GAAiC,CAACC,EAAcC,EAAkBhB,EAASC,KACpF,GAAwB,MAApBe,EACF,OAAOzB,GAET,IAAI0B,EAnBN,SAA2CF,EAAcC,EAAkBhB,GACzE,MAAyB,SAArBgB,EACc,UAAZhB,EACKe,EAAanB,gBAAgBF,MAE/BqB,EAAanB,gBAAgBD,MAEtB,UAAZK,EACKe,EAAatB,gBAAgBC,MAE/BqB,EAAatB,gBAAgBE,KACtC,CAQoCuB,CAAkCH,EAAcC,EAAkBhB,GACpG,GAAmC,MAA/BiB,EACF,OAAO1B,GAET,GAAI0B,EAA4Bp4C,OAC9B,OAAOo4C,EAET,GAAIF,EAAalB,oBAAoBh3C,OACnC,OAAOk4C,EAAalB,oBAEtB,GAAIkB,EAAajB,gBAAgBj3C,QAAgD,MAAtCk4C,EAAajB,gBAAgBjnE,MACtE,OAAOkoE,EAAajB,gBAEtB,IAAIqB,GAAmD,IAAjCJ,EAAarlD,SAASmN,OAC5C,GApBwC,MAoBZo4C,EApBGpoE,OAqB7B,GAAIsoE,EACF,OAAO72D,GAAcA,GAAc,CAAA,EAAI22D,GAA8B,CAAA,EAAI,CACvEp4C,QAAQ,SAGP,GAAoB,MAAhBo3C,EACT,MAAO,CACLp3C,QAAQ,EACRvB,gBAAY3tB,EACZwjB,aAASxjB,EACTd,MAAOonE,GAGX,OAAO31D,GAAcA,GAAc,CAAA,EAAIi1D,IAAgB,CAAA,EAAI,CACzDj4C,WAAY25C,EAA4B35C,cCrDjC85C,GAA4B,CAACC,EAAoBrf,KAC1D,IAAIsf,EAAeD,aAA+D,EAASA,EAAmBxoE,MAC9G,GAAoB,MAAhByoE,EACF,OAAO,KAET,IAAIC,EAAgBlnE,OAAOinE,GAC3B,IAAK52C,GAAoB62C,GAEvB,OAAOD,EAOT,IACIE,EAAchiD,IAMlB,OALIwiC,EAAUppD,OAAS,IACrB4oE,EAAaxf,EAAUppD,OAAS,GAI3BJ,OAAO6G,KAAKkgB,IAPF,EAOkBlgB,KAAK2I,IAAIu5D,EAAeC,MCvBlDC,GAAmC,CAAC5jE,EAAOC,EAAQ2P,EAAQ+Q,EAAQ4gD,EAAca,EAAcyB,EAAuBC,KAC/H,GAAoB,MAAhB1B,GAAkD,MAA1B0B,EAA5B,CAIA,IAAIC,EAAqBF,EAAsB,GAE3CG,EAAsC,MAAtBD,OAA6BjoE,EAAYgoE,EAAuBC,EAAmBE,UAAW7B,GAClH,GAAqB,MAAjB4B,EACF,OAAOA,EAET,IAAIpS,EAAO2P,aAAmD,EAASA,EAAa/kE,OAAO4lE,IAC3F,GAAKxQ,EAGL,MACO,eADChiD,EAGK,CACL9O,EAAG8wD,EAAKnoC,WACR1oB,GAAI4f,EAAOlC,IAAMxe,GAAU,GAMtB,CACLa,GAAI6f,EAAOnC,KAAOxe,GAAS,EAC3Be,EAAG6wD,EAAKnoC,WAzBhB,GCHSy6C,GAAsC,CAAChB,EAAcC,EAAkBhB,EAASC,KAEzF,MAAyB,SAArBe,EACKD,EAAahB,oBAM0B,IAA5CgB,EAAahB,oBAAoBnnE,OAE5B,GAQc,OAJrBopE,EADc,UAAZhC,EACgBe,EAAatB,gBAAgBE,MAAMxiD,QAEnC4jD,EAAatB,gBAAgBC,MAAMviD,UAER,MAAhB8iD,EAMtB,CAACc,EAAahB,oBAAoB,IAEpCgB,EAAahB,oBAAoB51D,OAAO83D,IAC7C,IAAIC,EACJ,OAA2C,QAAlCA,EAAgBD,EAAIvmD,gBAAwC,IAAlBwmD,OAA2B,EAASA,EAAc/kD,WAAa6kD,IAhBpH,IAAIA,GCbKG,GAA+B3mD,GAASA,EAAM+yC,QAAQoT,uBCAtDS,GAAqB5mD,GAASA,EAAM6mD,QCA/C,SAASn4D,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAwB5K,IAAImlE,GAAwB,CAACC,EAA8BlD,EAAamD,EAAgBC,EAAaC,EAAaf,EAAwBX,KAC/I,GAAmB,MAAf3B,GAAiD,MAA1BsC,EAA3B,CAGA,IAAI3f,UACFA,EAASI,aACTA,EAAYC,eACZA,EAAcF,aACdA,GACEqgB,EAEJ,OAAOD,EAA6BrjD,OAAO,CAACyjD,EAAKjmE,KAC/C,IAAIkmE,EA/BW7zD,EAAKgQ,EAAYC,EAyC5B6jD,EAuDEC,GAhEFC,kBACFA,EAAiBrnD,SACjBA,GACEhf,EACAsmE,EA3BR,SAAyBD,EAAmBE,GAK1C,OAAyB,MAArBF,EACKA,EAEFE,CACT,CAkBoBC,CAAgBH,EAAmB/gB,GAC/CmhB,GArCWp0D,EAqCQi0D,EArCHjkD,EAqCcsjC,EArCFrjC,EAqCkBmjC,EApC/CvoD,MAAMC,QAAQkV,IAGfA,GAAOgQ,EAAaC,IAAa,EAC5BjQ,EAAIlU,MAAMkkB,EAAYC,EAAW,GAHjCjQ,GAoCHq0D,EAA8G,QAA9FR,EAAoBlnD,aAA2C,EAASA,EAASyB,eAA2C,IAAtBylD,EAA+BA,EAAoBH,aAAiD,EAASA,EAAYtlD,QAE/OkmD,EAAe3nD,aAA2C,EAASA,EAAS4nD,SA0B9ET,EAxBEJ,SAAkDA,EAAYtlD,SAAWvjB,MAAMC,QAAQspE,KAQ1FvpE,MAAMC,QAAQspE,EAAO,KAeD,SAArBnC,EhOmBG,SAA0BjmE,EAAKwoE,EAAcC,GAClD,GAAKzoE,GAAQA,EAAInC,OAGjB,OAAOmC,EAAI0oE,KAAKx1D,GAASA,IAAkC,mBAAjBs1D,EAA8BA,EAAat1D,GAAS1U,EAAI0U,EAAOs1D,MAAmBC,EAC9H,CgOvBuBE,CAAiBP,EAAQV,EAAYtlD,QAASulD,GAQ9Cf,EAAuBwB,EAAQ9D,EAAajd,EAAcihB,GAEzEzpE,MAAMC,QAAQgpE,IAChBA,EAAetmE,QAAQ6R,IACrB,IAAIu1D,EAAcr5D,GAAcA,GAAc,CAAA,EAAIoR,GAAW,GAAI,CAC/D/P,KAAMyC,EAAKzC,KACXqb,KAAM5Y,EAAK4Y,KAEXpa,WAAOjT,EAEPqT,UAAMrT,IAERgpE,EAAI1pE,KAAK0mB,GAAgB,CACvBE,qBAAsB8jD,EACtBxmD,QAAS/O,EAAK+O,QACdhQ,QAASiB,EAAKjB,QAEdnV,MAAOklB,GAAkB9O,EAAKjB,QAASiB,EAAK+O,SAC5CxR,KAAMyC,EAAKzC,UAMfg3D,EAAI1pE,KAAK0mB,GAAgB,CACvBE,qBAAsBnE,EACtByB,QAASimD,EACTj2D,QAAS01D,EAET7qE,MAAOklB,GAAkB2lD,EAAgBO,GAEzCz3D,KAAiF,QAA1Em3D,EAAqB5lD,GAAkB2lD,EAAgBQ,UAAkD,IAAvBP,EAAgCA,EAAqBpnD,aAA2C,EAASA,EAAS/P,QAG/M,OAAOg3D,GA/EE,GAPX,GCTSiB,GAAwBpoD,IACjC,IAAI/N,EAASkV,GAAkBnH,GAC/B,MAAe,eAAX/N,EACK,QAEM,aAAXA,EACK,QAEM,YAAXA,EACK,YAEF,cAEEo2D,GAAsBroD,GAASA,EAAM6mD,QAAQ3mD,SAASs1C,OACtD8S,GAAoBtoD,IAC7B,IAAI6B,EAAWumD,GAAsBpoD,GACjCw1C,EAAS6S,GAAoBroD,GACjC,OAAOq2C,GAAmBr2C,EAAO6B,EAAU2zC,IAElC+S,GAAiCnoD,GAAe,CAACkoD,GAAmBnhD,GAAmBmvC,GAAcxD,GAAiBsV,IAAwBzK,IAC9I6K,GAAoCpoD,GAAe,CAACJ,GAASA,EAAMu2C,eAAeU,eAAgBj3C,GAASA,EAAMu2C,eAAekS,YAAa,CAACxR,EAAgBwR,IAAe,IAAIxR,KAAmBwR,IAC3MC,GAA6BtoD,GAAe,CAACgoD,GAAuBC,IAAsB5R,IACnFkS,GAAkCvoD,GAAe,CAACooD,GAAmCF,GAAmBI,IAA6B5R,IACrI8R,GAAkCxoD,GAAe,CAACuoD,IAAkCvR,IAQpFyR,GAA6BzoD,GAAe,CAACwoD,GAAiCriB,IAA6B+Q,IAClHwR,GAAgC1oD,GAAe,CAACyoD,GAA4BP,GAAmBK,IAAkC/Q,IACjImR,GAAoC3oD,GAAe,CAACkoD,IAAoB3O,IACxEqP,GAA2B5oD,GAAe,CAACyoD,GAA4BF,GAAiChW,IAAwB+F,IAChIuQ,GAAmC7oD,GAAe,CAAC4oD,GAA0BziB,GAA4B6hB,IAAwBpP,IACjIkQ,GAA0C9oD,GAAe,CAACuoD,IAAkCzR,IAC5FiS,GAA6D/oD,GAAe,CAACyoD,GAA4BP,GAAmBY,GAAyCd,IAAwBjP,IAC7LiQ,GAAmChpD,GAAe,CAAC65C,GAAqBmO,GAAuBC,IAAsBjO,IACrHiP,GAAmCjpD,GAAe,CAACgpD,GAAkChB,IAAwBrN,IAC7GuO,GAAoClpD,GAAe,CAACq6C,GAAsB2N,GAAuBC,IAAsBjO,IACvHmP,GAAoCnpD,GAAe,CAACkpD,GAAmClB,IAAwBjN,IAC/GqO,GAAoCppD,GAAe,CAACw6C,GAAsBwN,GAAuBC,IAAsBjO,IACvHqP,GAAoCrpD,GAAe,CAACopD,GAAmCpB,IAAwB/M,IAC/GqO,GAAuCtpD,GAAe,CAACipD,GAAkCI,GAAmCF,IAAoCzP,IAChK6P,GAA+BvpD,GAAe,CAACkoD,GAAmBS,GAAmCE,GAAkCE,GAA4DO,IAAuC9N,IACnOgO,GAA0BxpD,GAAe,CAACkoD,GAAmBnhD,GAAmB0hD,GAA4BC,GAA+BnW,GAAuByV,GAAuBuB,IAA+BxM,IAC/N0M,GAAyBzpD,GAAe,CAACwpD,GAAyBtB,GAAmBC,IAAiC5J,IAC/GmL,GAA4C1pD,GAAe,CAACkoD,GAAmBsB,GAAyBC,GAAwBzB,IAAwBvJ,IAC/JkL,GAAyB/pD,IAC3B,IAAI6B,EAAWumD,GAAsBpoD,GACjCw1C,EAAS6S,GAAoBroD,GAEjC,OAAO8gD,GAAgB9gD,EAAO6B,EAAU2zC,GADvB,IAGRwU,GAAoC5pD,GAAe,CAACkoD,GAAmByB,IAAyBtW,IAChGwW,GAAyB7pD,GAAe,CAACkoD,GAAmBC,GAAgCuB,GAA2CE,IAAoC/L,IAClLiM,GAA+B9pD,GAAe,CAAC+G,GAAmB2hD,GAA+BR,GAAmBF,IAAwBnG,IACrIkI,GAAiC/pD,GAAe,CAAC+G,GAAmB2hD,GAA+BR,GAAmBF,IAAwB7F,IAkC9I6H,GAAyBhqD,GAAe,CAAC+G,GAAmBmhD,GAAmBC,GAAgC0B,GAAwBF,GAAwBG,GAA8BC,GAAgC/B,IAjCxM,CAACn2D,EAAQ6jD,EAAMoI,EAAet7B,EAAOtD,EAAOmjC,EAAiBjF,EAAmB37C,KAC9G,GAAKi0C,EAAL,CAGA,IAAIjmD,KACFA,GACEimD,EACAwH,EAAgB17C,GAAkB3P,EAAQ4P,GAC9C,GAAK+gB,EAAL,CAGA,IAAI8/B,EAAkC,cAAlBxE,GAAiCt7B,EAAMG,UAAYH,EAAMG,YAAc,EAAI,EAC3F/f,EAAkB,aAATnT,GAAuB+yB,EAAMG,UAAYH,EAAMG,YAAc2/B,EAAgB,EAI1F,OAHA1/C,EAAsB,cAAbnB,GAAqC,MAATyd,IAAkBA,aAAqC,EAASA,EAAMliC,SAAW,EAAoC,EAAhCoB,EAAS8gC,EAAM,GAAKA,EAAM,IAAUtc,EAASA,EAGnKs6C,GAAiBE,EACZA,EAAkBhrD,IAAI,CAACC,EAAOpV,MACnCyuB,WAAY8W,EAAMnwB,GAASuQ,EAC3BxmB,MAAOiW,EACPpV,QACA2lB,YAKG4f,EAAMnf,SAASjR,IAAI,CAACC,EAAOpV,MAChCyuB,WAAY8W,EAAMnwB,GAASuQ,EAC3BxmB,MAAOimE,EAAkBA,EAAgBhwD,GAASA,EAClDpV,QACA2lB,WApBF,CAPA,IA+BE0gD,GAAyBtjD,GAAe,CAAC8iD,GAA+BE,GCjHzCpjD,GAASA,EAAM6mD,QAAQ3mD,UDiH2E,CAACijD,EAAyBkH,EAA0BnqD,IAAaojD,GAAwBpjD,EAASqjD,OAAQJ,EAAyBkH,IACpQC,GAAuBtqD,GAASA,EAAM6mD,QAAQ3mD,SAASskD,QACvD+F,GAAqBvqD,GAASA,EAAM6mD,QAAQ3mD,SAASukD,aACrD+F,GAAgCpqD,GAAe,CAACwmD,GAAoBlD,GAAwB4G,GAAsBC,IAAqBjF,IAChImF,GAA2BrqD,GAAe,CAACoqD,GAA+B3B,IAA6BjD,IACvG8E,GAAoBtqD,GAAe,CAACgqD,GAAwBK,IAA2B9G,IAC1DvjD,GAAe,CAACoqD,IAAgC3E,IACtF,GAAKA,EAGL,OAAOA,EAAmBlkD,UAE5B,IAAIgpD,GAAqCvqD,GAAe,CAACwmD,GAAoBlD,GAAwB4G,GAAsBC,IAAqBhE,IAC5IqE,GAAyCxqD,GAAe,CAACkE,GAAkBC,GAAmB4C,GAAmBnC,GAA2BolD,GAAwBG,GAAoBI,GAAoChE,IAA+BV,IACpN7lD,GAAe,CAACoqD,GAA+BI,IAAyC,CAACC,EAAyBC,IACvJD,SAA0EA,EAAwB/+C,WAC7F++C,EAAwB/+C,WAE1Bg/C,GAE0B1qD,GAAe,CAACoqD,IAAgCK,GAA2BA,EAAwBx9C,QAC/H,IAAI09C,GAA6B3qD,GAAe,CAACuqD,GAAoCF,GAA0BlkB,GAA4B+hB,GAAmBoC,GAAmB/D,GAA8BjD,IAAyBoD,IEtI/O,SAASp4D,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CFqIxIye,GAAe,CAAC2qD,IAA6Bp5D,IACtF,GAAe,MAAXA,EAAJ,CAGA,IAAIq5D,EAAar5D,EAAQa,IAAI/J,GAAKA,EAAEkJ,SAAShD,OAAOlG,GAAU,MAALA,GACzD,OAAOrK,MAAMgK,KAAK,IAAI6M,IAAI+1D,GAF1B,IElIK,IACIC,GAAyB,KAClC,IAAIhE,EAF4BxpD,GAAe6qD,IAG3C1E,EAAenmD,GAAe2sD,IAC9Bc,EAAmBztD,GAAewsD,IACtC,MhJqc6B,EAACnU,EAAMt0B,KACpC,GAAIs0B,GAAQA,EAAKlzB,OAASkzB,EAAKlzB,MAAMG,UAGjC,OAFc+yB,EAAKlzB,MAAMG,YAK7B,GAAI+yB,GAAQt0B,GAASA,EAAMpkC,QAAU,EAAG,CAGtC,IAFA,IAAI+tE,EAAerrD,GAAO0hB,EAAO3+B,GAAKA,EAAEipB,YACpCs/C,EAAWpnD,IACNtkB,EAAI,EAAGF,EAAM2rE,EAAa/tE,OAAQsC,EAAIF,EAAKE,IAAK,CACvD,IAAI2rE,EAAMF,EAAazrE,GACnB4rE,EAAOH,EAAazrE,EAAI,GAC5B0rE,EAAWvnE,KAAK2I,KAAK6+D,EAAIv/C,YAAc,IAAMw/C,EAAKx/C,YAAc,GAAIs/C,EACtE,CACA,OAAOA,IAAapnD,IAAW,EAAIonD,CACrC,CACA,OAA2B,GgJtdpBG,CAAkBz8D,GAAcA,GAAc,CAAA,EAAIm4D,GAAc,GAAI,CACzErkC,MAAOsoC,IACLtH,ICMF4H,GAAuB,CAACnW,EAAQmQ,IAAqBA,EACrDiG,GAAc,CAACpW,EAAQqW,EAAmBlH,IAAYA,EACtDmH,GAAmB,CAACtW,EAAQqW,EAAmBE,EAAUnH,IAAiBA,EACvCrkD,GAAegqD,GAAwB5oC,GAAS1hB,GAAO0hB,EAAO3+B,GAAKA,EAAEipB,aACrG,IAAI0+C,GAAgCpqD,GAAe,CAACwmD,GAAoB4E,GAAsBC,GAAaE,IAAmBrG,IAC1HuG,GAAoBzrD,GAAe,CAACoqD,GAA+B3B,IAA6BjD,IAiBhG+E,GAAqCvqD,GAAe,CAACwmD,GAAoB4E,GAAsBC,GAAaE,IAAmBpF,IAC/HuF,GAAkC1rD,GAAe,CAACkE,GAAkBC,GAAmB4C,GAAmBnC,GAA2BolD,GAAwBuB,GAAkBhB,GAAoChE,IAA+BV,IAClP8F,GAAyB3rD,GAAe,CAACoqD,GAA+BsB,IAAkC,CAACjB,EAAyBC,KAC7I,IAAIkB,EACJ,OAAwE,QAAhEA,EAAwBnB,EAAwB/+C,kBAAkD,IAA1BkgD,EAAmCA,EAAwBlB,IAElIJ,GAAoBtqD,GAAegqD,GAAwByB,GAAmBlI,IAC9EsI,GAAuB7rD,GAAe,CAACuqD,GAAoCkB,GAAmBtlB,GAA4B+hB,GAAmBoC,GAAmB/D,GAA8B6E,IAAuB1E,IACrNoF,GAAwB9rD,GAAe,CAACoqD,IAAgCK,IAC1E,CACLryC,SAAUqyC,EAAwBx9C,OAClCw2C,YAAagH,EAAwBxtE,SCtDzC,SAASkE,KAAa,OAAOA,GAAWpF,OAAOqF,OAASrF,OAAOqF,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAIzC,UAAU9B,OAAQuE,IAAK,CAAE,IAAIC,EAAI1C,UAAUyC,GAAI,IAAK,IAAIE,KAAKD,GAAI,CAAC,GAAGE,eAAeC,KAAKH,EAAGC,KAAOH,EAAEG,GAAKD,EAAEC,GAAK,CAAE,OAAOH,CAAG,EAAGH,GAASS,MAAM,KAAM9C,UAAY,CACnR,SAASwP,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAwB5K,SAASwqE,GAAe3rE,GAC7B,IAmBI4rE,EAAWC,GAnBXvgD,WACFA,EAAUna,QACVA,EAAOtU,MACPA,EAAK2lB,OACLA,EAAMspD,oBACNA,EAAmBr6D,OACnBA,EAAMs6D,OACNA,EAAM/G,iBACNA,EAAgBxS,UAChBA,GACExyD,EAGA47B,EAAmBtQ,EACnB0gD,EAAgB76D,EAChB86D,EAAqBpvE,EACzB,IAAKkvE,IAAWnwC,GAAkC,iBAAd42B,GAAqD,SAArBwS,EAClE,OAAO,KAGT,GAAkB,iBAAdxS,EACFoZ,EAAYhwC,EACZiwC,EAAan7C,QACR,GAAkB,aAAd8hC,EACToZ,ECpDG,SAA4Bn6D,EAAQmqB,EAAkBpZ,EAAQspD,GACnE,IAAIr7D,EAAWq7D,EAAsB,EACrC,MAAO,CACL76D,OAAQ,OACRD,KAAM,OACNrO,EAAc,eAAX8O,EAA0BmqB,EAAiBj5B,EAAI8N,EAAW+R,EAAOnC,KAAO,GAC3Ezd,EAAc,eAAX6O,EAA0B+Q,EAAOlC,IAAM,GAAMsb,EAAiBh5B,EAAI6N,EACrE5O,MAAkB,eAAX4P,EAA0Bq6D,EAAsBtpD,EAAO3gB,MAAQ,EACtEC,OAAmB,eAAX2P,EAA0B+Q,EAAO1gB,OAAS,EAAIgqE,EAE1D,CD0CgBI,CAAmBz6D,EAAQmqB,EAAkBpZ,EAAQspD,GACjED,EAAa5wC,QACR,GAAe,WAAXxpB,EAAqB,CAE9B,IAAIlC,GACFA,EAAEC,GACFA,EAAEyR,OACFA,EAAM4a,WACNA,EAAUC,SACVA,GACEH,GAAsBC,GAC1BgwC,EAAY,CACVr8D,KACAC,KACAqsB,aACAC,WACAc,YAAa3b,EACb4b,YAAa5b,GAEf4qD,EAAaxuC,EACf,MACEuuC,EAAY,CACV/7C,OAAQ2O,GAAgB/sB,EAAQmqB,EAAkBpZ,IAEpDqpD,EAAav7C,GAEf,IAAI67C,EAAmC,iBAAXJ,GAAuB,cAAeA,EAASA,EAAO/pE,eAAYrE,EAC1FyuE,EAAc99D,GAAcA,GAAcA,GAAcA,GAAc,CACxE2C,OAAQ,OACR4c,cAAe,QACdrL,GAASopD,GAAY7rE,EAAYgsE,GAAQ,IAAS,GAAI,CACvD56D,QAAS66D,EACTK,aAAcJ,EACdjqE,UAAWc,EAAK,0BAA2BqpE,KAE7C,OAAoB/rE,EAAe2rE,GAAuBz6D,EAAay6D,EAAQK,GAA4BppE,EAAc6oE,EAAYO,EACvI,CAUO,SAASE,GAAOtsE,GACrB,IxI3DIusE,EwI2DAT,EAAsBrB,KACtBjoD,ExI3DsE,QAAlE+pD,EAAmBtvD,GAAeuH,WAA6D,IAArB+nD,EAA8BA,EAAmB9lD,GwI4D/HhV,ExID4BwL,GAAe0J,IwIE3C6rC,EDnFGv1C,GAAeq1C,ICoFtB,OAAoBvvD,EAAMC,cAAc2oE,GAAgB5qE,GAAS,CAAA,EAAIf,EAAO,CAC1EsrB,WAAYtrB,EAAMsrB,WAClBzuB,MAAOmD,EAAMnD,MACbsU,QAASnR,EAAMmR,QACfqR,OAAQA,EACR/Q,OAAQA,EACRq6D,oBAAqBA,EACrBtZ,UAAWA,IAEf,CE/GO,OAAIga,GAAoCtpE,EAAc,oDCC7D,IAAIgQ,EAAMvX,OAAOiO,UAAUtI,eACvB4yC,EAAS,IASb,SAASu4B,IAAS,CA4BlB,SAASC,EAAG73C,EAAI/sB,EAAS6kE,GACvB5oE,KAAK8wB,GAAKA,EACV9wB,KAAK+D,QAAUA,EACf/D,KAAK4oE,KAAOA,IAAQ,CACtB,CAaA,SAASC,EAAYC,EAAS5+C,EAAO4G,EAAI/sB,EAAS6kE,GAChD,GAAkB,mBAAP93C,EACT,MAAM,IAAIlmB,UAAU,mCAGtB,IAAIm+D,EAAW,IAAIJ,EAAG73C,EAAI/sB,GAAW+kE,EAASF,GAC1CI,EAAM74B,EAASA,EAASjmB,EAAQA,EAMpC,OAJK4+C,EAAQG,QAAQD,GACXF,EAAQG,QAAQD,GAAKl4C,GAC1Bg4C,EAAQG,QAAQD,GAAO,CAACF,EAAQG,QAAQD,GAAMD,GADhBD,EAAQG,QAAQD,GAAK9vE,KAAK6vE,IADlCD,EAAQG,QAAQD,GAAOD,EAAUD,EAAQI,gBAI7DJ,CACT,CASA,SAASK,EAAWL,EAASE,GACI,MAAzBF,EAAQI,aAAoBJ,EAAQG,QAAU,IAAIP,SAC5CI,EAAQG,QAAQD,EAC9B,CASA,SAASI,IACPppE,KAAKipE,QAAU,IAAIP,EACnB1oE,KAAKkpE,aAAe,CACtB,CAzEItxE,OAAOiS,SACT6+D,EAAO7iE,UAAYjO,OAAOiS,OAAO,OAM5B,IAAI6+D,GAASW,YAAWl5B,GAAS,IA2ExCi5B,EAAavjE,UAAUyjE,WAAa,WAClC,IACIC,EACA39D,EAFAktC,EAAQ,GAIZ,GAA0B,IAAtB94C,KAAKkpE,aAAoB,OAAOpwB,EAEpC,IAAKltC,KAAS29D,EAASvpE,KAAKipE,QACtB95D,EAAI3R,KAAK+rE,EAAQ39D,IAAOktC,EAAM5/C,KAAKi3C,EAASvkC,EAAK9Q,MAAM,GAAK8Q,GAGlE,OAAIhU,OAAO4G,sBACFs6C,EAAMx9C,OAAO1D,OAAO4G,sBAAsB+qE,IAG5CzwB,CACT,EASAswB,EAAavjE,UAAU2jE,UAAY,SAAmBt/C,GACpD,IAAI8+C,EAAM74B,EAASA,EAASjmB,EAAQA,EAChCu/C,EAAWzpE,KAAKipE,QAAQD,GAE5B,IAAKS,EAAU,MAAO,GACtB,GAAIA,EAAS34C,GAAI,MAAO,CAAC24C,EAAS34C,IAElC,IAAK,IAAI31B,EAAI,EAAG8G,EAAIwnE,EAAS5wE,OAAQ6wE,EAAK,IAAI7vE,MAAMoI,GAAI9G,EAAI8G,EAAG9G,IAC7DuuE,EAAGvuE,GAAKsuE,EAAStuE,GAAG21B,GAGtB,OAAO44C,CACT,EASAN,EAAavjE,UAAU8jE,cAAgB,SAAuBz/C,GAC5D,IAAI8+C,EAAM74B,EAASA,EAASjmB,EAAQA,EAChCs/C,EAAYxpE,KAAKipE,QAAQD,GAE7B,OAAKQ,EACDA,EAAU14C,GAAW,EAClB04C,EAAU3wE,OAFM,CAGzB,EASAuwE,EAAavjE,UAAU+jE,KAAO,SAAc1/C,EAAO1nB,EAAIqnE,EAAIC,EAAIC,EAAIC,GACjE,IAAIhB,EAAM74B,EAASA,EAASjmB,EAAQA,EAEpC,IAAKlqB,KAAKipE,QAAQD,GAAM,OAAO,EAE/B,IAEI55C,EACAj0B,EAHAquE,EAAYxpE,KAAKipE,QAAQD,GACzB/tE,EAAMN,UAAU9B,OAIpB,GAAI2wE,EAAU14C,GAAI,CAGhB,OAFI04C,EAAUZ,MAAM5oE,KAAKiqE,eAAe//C,EAAOs/C,EAAU14C,QAAIl3B,GAAW,GAEhEqB,GACN,KAAK,EAAG,OAAOuuE,EAAU14C,GAAGtzB,KAAKgsE,EAAUzlE,UAAU,EACrD,KAAK,EAAG,OAAOylE,EAAU14C,GAAGtzB,KAAKgsE,EAAUzlE,QAASvB,IAAK,EACzD,KAAK,EAAG,OAAOgnE,EAAU14C,GAAGtzB,KAAKgsE,EAAUzlE,QAASvB,EAAIqnE,IAAK,EAC7D,KAAK,EAAG,OAAOL,EAAU14C,GAAGtzB,KAAKgsE,EAAUzlE,QAASvB,EAAIqnE,EAAIC,IAAK,EACjE,KAAK,EAAG,OAAON,EAAU14C,GAAGtzB,KAAKgsE,EAAUzlE,QAASvB,EAAIqnE,EAAIC,EAAIC,IAAK,EACrE,KAAK,EAAG,OAAOP,EAAU14C,GAAGtzB,KAAKgsE,EAAUzlE,QAASvB,EAAIqnE,EAAIC,EAAIC,EAAIC,IAAK,EAG3E,IAAK7uE,EAAI,EAAGi0B,EAAO,IAAIv1B,MAAMoB,EAAK,GAAIE,EAAIF,EAAKE,IAC7Ci0B,EAAKj0B,EAAI,GAAKR,UAAUQ,GAG1BquE,EAAU14C,GAAGrzB,MAAM+rE,EAAUzlE,QAASqrB,EAC1C,KAAS,CACL,IACIjqB,EADAtM,EAAS2wE,EAAU3wE,OAGvB,IAAKsC,EAAI,EAAGA,EAAItC,EAAQsC,IAGtB,OAFIquE,EAAUruE,GAAGytE,MAAM5oE,KAAKiqE,eAAe//C,EAAOs/C,EAAUruE,GAAG21B,QAAIl3B,GAAW,GAEtEqB,GACN,KAAK,EAAGuuE,EAAUruE,GAAG21B,GAAGtzB,KAAKgsE,EAAUruE,GAAG4I,SAAU,MACpD,KAAK,EAAGylE,EAAUruE,GAAG21B,GAAGtzB,KAAKgsE,EAAUruE,GAAG4I,QAASvB,GAAK,MACxD,KAAK,EAAGgnE,EAAUruE,GAAG21B,GAAGtzB,KAAKgsE,EAAUruE,GAAG4I,QAASvB,EAAIqnE,GAAK,MAC5D,KAAK,EAAGL,EAAUruE,GAAG21B,GAAGtzB,KAAKgsE,EAAUruE,GAAG4I,QAASvB,EAAIqnE,EAAIC,GAAK,MAChE,QACE,IAAK16C,EAAM,IAAKjqB,EAAI,EAAGiqB,EAAO,IAAIv1B,MAAMoB,EAAK,GAAIkK,EAAIlK,EAAKkK,IACxDiqB,EAAKjqB,EAAI,GAAKxK,UAAUwK,GAG1BqkE,EAAUruE,GAAG21B,GAAGrzB,MAAM+rE,EAAUruE,GAAG4I,QAASqrB,GAGtD,CAEE,OAAO,CACT,EAWAg6C,EAAavjE,UAAUqkE,GAAK,SAAYhgD,EAAO4G,EAAI/sB,GACjD,OAAO8kE,EAAY7oE,KAAMkqB,EAAO4G,EAAI/sB,GAAS,EAC/C,EAWAqlE,EAAavjE,UAAU+iE,KAAO,SAAc1+C,EAAO4G,EAAI/sB,GACrD,OAAO8kE,EAAY7oE,KAAMkqB,EAAO4G,EAAI/sB,GAAS,EAC/C,EAYAqlE,EAAavjE,UAAUokE,eAAiB,SAAwB//C,EAAO4G,EAAI/sB,EAAS6kE,GAClF,IAAII,EAAM74B,EAASA,EAASjmB,EAAQA,EAEpC,IAAKlqB,KAAKipE,QAAQD,GAAM,OAAOhpE,KAC/B,IAAK8wB,EAEH,OADAq4C,EAAWnpE,KAAMgpE,GACVhpE,KAGT,IAAIwpE,EAAYxpE,KAAKipE,QAAQD,GAE7B,GAAIQ,EAAU14C,GAEV04C,EAAU14C,KAAOA,GACf83C,IAAQY,EAAUZ,MAClB7kE,GAAWylE,EAAUzlE,UAAYA,GAEnColE,EAAWnpE,KAAMgpE,OAEd,CACL,IAAK,IAAI7tE,EAAI,EAAGouE,EAAS,GAAI1wE,EAAS2wE,EAAU3wE,OAAQsC,EAAItC,EAAQsC,KAEhEquE,EAAUruE,GAAG21B,KAAOA,GACnB83C,IAASY,EAAUruE,GAAGytE,MACtB7kE,GAAWylE,EAAUruE,GAAG4I,UAAYA,IAErCwlE,EAAOrwE,KAAKswE,EAAUruE,IAOtBouE,EAAO1wE,OAAQmH,KAAKipE,QAAQD,GAAyB,IAAlBO,EAAO1wE,OAAe0wE,EAAO,GAAKA,EACpEJ,EAAWnpE,KAAMgpE,EAC1B,CAEE,OAAOhpE,IACT,EASAopE,EAAavjE,UAAUskE,mBAAqB,SAA4BjgD,GACtE,IAAI8+C,EAUJ,OARI9+C,GACF8+C,EAAM74B,EAASA,EAASjmB,EAAQA,EAC5BlqB,KAAKipE,QAAQD,IAAMG,EAAWnpE,KAAMgpE,KAExChpE,KAAKipE,QAAU,IAAIP,EACnB1oE,KAAKkpE,aAAe,GAGflpE,IACT,EAKAopE,EAAavjE,UAAUukE,IAAMhB,EAAavjE,UAAUokE,eACpDb,EAAavjE,UAAUgjE,YAAcO,EAAavjE,UAAUqkE,GAK5Dd,EAAaiB,SAAWl6B,EAKxBi5B,EAAaA,aAAeA,EAM1BkB,UAAiBlB,oBC7UfmB,GAAc,WCDX,SAASC,GAA+B/uD,GAC7C,OAAOA,EAAM6mD,QAAQvC,eACvB,CC4JO,SAAS0K,GAA+BxJ,EAAkBhB,EAASpoC,EAAkB8qC,EAAarD,EAAaoL,GACpH,IAAInK,EAAgBrnD,GAAeuC,GPpIH,EAACA,EAAOwlD,EAAkBhB,KAC1D,GAAwB,MAApBgB,EAAJ,CAGA,IAAID,EAAeqB,GAAmB5mD,GACtC,MAAyB,SAArBwlD,EACc,UAAZhB,EACKe,EAAanB,gBAAgBD,MAAMxiD,QAErC4jD,EAAanB,gBAAgBF,MAAMviD,QAE5B,UAAZ6iD,EACKe,EAAatB,gBAAgBE,MAAMxiD,QAErC4jD,EAAatB,gBAAgBC,MAAMviD,OAX1C,GOiI4CutD,CAAqBlvD,EAAOwlD,EAAkBhB,IACtF2K,EAAqB1xD,GAAe41C,IACpCH,EAASz1C,GAAew1C,IACxBG,EAAa31C,GAAe01C,IAC5BoS,EAAe9nD,GAAesxD,IAC9BK,EAA6B7J,aAAmD,EAASA,EAAal4C,OAC1G5R,EAAU,KACR,IAAI2zD,GAQU,MAAVlc,GAOsB,MAAtBic,EAAJ,CAOA,IAAIE,EAAajK,GAAmB,CAClC/3C,OAAQ4hD,EACRnjD,WAAYsQ,EACZza,QAASmjD,EACTznE,MAAOwmE,EACPx5C,MAA8B,iBAAhB68C,EAA2BlqE,OAAOkqE,GAAeA,IAEjE4H,GAAYX,KFhMgB,6BEgMSjb,EAAQmc,EAAYF,EARzD,GASC,CAACC,EAA4BhzC,EAAkB0oC,EAAejB,EAAaqD,EAAaiI,EAAoBjc,EAAQE,EAAY6b,GACrI,CCrMA,SAASvgE,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAqBnL,SAASqZ,GAAcvI,GACrB,OAAOA,EAAMkP,OACf,CAUA,IAAI2tD,GAAe,GACfC,GAAsB,CACxBpjD,mBAAoB,CAClBhpB,GAAG,EACHC,GAAG,GAELkqB,kBAAmB,IACnBC,gBAAiB,OACjBioC,OAAQ,EACRvrC,aAAc,CAAA,EACdsiD,QAAQ,EACRiD,YAAY,EACZ/hD,mBAAoBsB,GACpBzO,WAAY,OACZnO,UAAW,CAAA,EACX+X,WAAY,CAAA,EACZlH,OAAQ,GACRqJ,iBAAkB,CAChBlpB,GAAG,EACHC,GAAG,GAEL4mB,UAAW,MACXw6C,QAAS,QACT92C,gBAAgB,EAChB5E,aAAc,CAAA,mECzDhB3sB,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WA8F5DH,EAAAozE,SA5FA,SAAkBC,EAAMC,EAAO,EAAG5c,EAAU,CAAA,GACjB,iBAAZA,IACPA,EAAU,CAAA,GAEd,IAKI/C,EALA4f,EAAc,KACdC,EAAc,KACdC,EAAe,KACfC,EAAoB,EACpBC,EAAY,KAEhB,MAAMC,QAAEA,GAAU,EAAKC,SAAEA,GAAW,EAAIC,QAAEA,GAAYpd,EAChDqd,EAAa,YAAard,EAC1Bsd,EAAYD,EAAavsE,KAAKkgB,IAAIllB,OAAOsxE,IAAY,EAAGR,GAAQ,EAChEW,EAAUvtB,IACQ,OAAhB6sB,IACA5f,EAAa0f,EAAK1tE,MAAM6tE,EAAaD,IAEzCA,EAAcC,EAAc,KAC5BE,EAAoBhtB,EACbiN,GAULugB,EAAkBxtB,IACpBitB,EAAY,KACRE,GAA4B,OAAhBN,EACLU,EAAOvtB,GAEXiN,GAELwgB,EAAkBztB,IACpB,GAAqB,OAAjB+sB,EACA,OAAO,EAEX,MAAMW,EAAoB1tB,EAAO+sB,EAGjC,OAF+BW,GAAqBd,GAAQc,EAAoB,GACvDL,GAAcrtB,EAAOgtB,GAAqBM,GASjEK,EAAgB,KAClB,MAAMC,EAAcj4D,KAAK8d,MACzB,GAAIg6C,EAAeG,GACf,OAAOJ,EAAeI,GAE1BX,EAAY/gD,WAAWyhD,EAXI,CAAC3tB,IAC5B,MACM6tB,EAAwBjB,GADa,OAAjBG,EAAwB,EAAI/sB,EAAO+sB,GAEvDe,EAAuBR,GAAattB,EAAOgtB,GACjD,OAAOK,EAAavsE,KAAK2I,IAAIokE,EAAuBC,GAAwBD,GAOtCE,CAAuBH,KAE3DI,EAAoB,YAAap9C,GACnC,MAAMg9C,EAAcj4D,KAAK8d,MACnBw6C,EAAYR,EAAeG,GAIjC,GAHAf,EAAcj8C,EACdk8C,EAActrE,KACdurE,EAAea,EACXK,EAAW,CACX,GAAkB,OAAdhB,EACA,MA7CU,CAACjtB,IACnBgtB,EAAoBhtB,EACpBitB,EAAY/gD,WAAWyhD,EAAef,GAClCM,GAA2B,OAAhBL,EACJU,EAAOvtB,GAEXiN,GAuCQihB,CAAcN,GAEzB,GAAIP,EAGA,OAFAc,aAAalB,GACbA,EAAY/gD,WAAWyhD,EAAef,GAC/BW,EAAOK,EAE9B,CAIQ,OAHkB,OAAdX,IACAA,EAAY/gD,WAAWyhD,EAAef,IAEnC3f,CACf,EAWI,OAVA+gB,EAAkBI,OAAS,KACL,OAAdnB,GACAkB,aAAalB,GAEjBD,EAAoB,EACpBD,EAAeF,EAAcC,EAAcG,EAAY,MAE3De,EAAkBK,MAAQ,IACD,OAAdpB,EAAqBhgB,EAAaugB,EAAe73D,KAAK8d,OAE1Du6C,CACX,uDC5FA50E,OAAOC,eAAeC,EAASC,OAAOC,YAAa,CAAEC,MAAO,WAE5D,MAAMizE,EAAW9xE,KAWjBtB,EAAAg1E,SATA,SAAkB3B,EAAM4B,EAAa,EAAGve,EAAU,CAAA,GAC9C,MAAMkd,QAAEA,GAAU,EAAIC,SAAEA,GAAW,GAASnd,EAC5C,OAAO0c,EAASA,SAASC,EAAM4B,EAAY,CACvCrB,UACAE,QAASmB,EACTpB,YAER,4CCbAmB,GAAiB1zE,KAA+C0zE,yBCC5DE,GAAiC,eAAzBt2D,QAAQC,IAAIC,SACbq2D,GAAO,SAAcC,EAAWtjC,GACzC,IAAK,IAAIza,EAAOx0B,UAAU9B,OAAQu2B,EAAO,IAAIv1B,MAAMs1B,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAClGD,EAAKC,EAAO,GAAK10B,UAAU00B,GAE7B,GAAI29C,IAA4B,oBAAZG,SAA2BA,QAAQF,OAIhDC,EACH,QAAetzE,IAAXgwC,QAQV,ECnBA,SAASz/B,GAAQ/M,EAAGE,GAAK,IAAID,EAAIzF,OAAO2E,KAAKa,GAAI,GAAIxF,OAAO4G,sBAAuB,CAAE,IAAIF,EAAI1G,OAAO4G,sBAAsBpB,GAAIE,IAAMgB,EAAIA,EAAE8L,OAAO,SAAU9M,GAAK,OAAO1F,OAAOyS,yBAAyBjN,EAAGE,GAAGgN,UAAY,IAAKjN,EAAEnE,KAAKuE,MAAMJ,EAAGiB,EAAI,CAAE,OAAOjB,CAAG,CAC9P,SAASkN,GAAcnN,GAAK,IAAK,IAAIE,EAAI,EAAGA,EAAI3C,UAAU9B,OAAQyE,IAAK,CAAE,IAAID,EAAI,MAAQ1C,UAAU2C,GAAK3C,UAAU2C,GAAK,CAAA,EAAIA,EAAI,EAAI6M,GAAQvS,OAAOyF,IAAI,GAAIb,QAAQ,SAAUc,GAAKkN,GAAgBpN,EAAGE,EAAGD,EAAEC,GAAK,GAAK1F,OAAO6S,0BAA4B7S,OAAO8S,iBAAiBtN,EAAGxF,OAAO6S,0BAA0BpN,IAAM8M,GAAQvS,OAAOyF,IAAIb,QAAQ,SAAUc,GAAK1F,OAAOC,eAAeuF,EAAGE,EAAG1F,OAAOyS,yBAAyBhN,EAAGC,GAAK,EAAI,CAAE,OAAOF,CAAG,CACtb,SAASoN,GAAgBpN,EAAGE,EAAGD,GAAK,OAAQC,EAC5C,SAAwBD,GAAK,IAAIlC,EACjC,SAAsBkC,EAAGC,GAAK,GAAI,iBAAmBD,IAAMA,EAAG,OAAOA,EAAG,IAAID,EAAIC,EAAEtF,OAAO4S,aAAc,QAAI,IAAWvN,EAAG,CAAE,IAAIjC,EAAIiC,EAAEI,KAAKH,EAAGC,GAAiB,GAAI,iBAAmBnC,EAAG,OAAOA,EAAG,MAAM,IAAIyP,UAAU,+CAAiD,CAAE,OAAQ,WAAatN,EAAI7E,OAAS6B,QAAQ+C,EAAI,CADlRwN,CAAaxN,EAAG,UAAW,MAAO,iBAAmBlC,EAAIA,EAAIA,EAAI,EAAI,CAD1D2P,CAAexN,MAAOF,EAAIxF,OAAOC,eAAeuF,EAAGE,EAAG,CAAErF,MAAOoF,EAAGiN,YAAY,EAAIS,cAAc,EAAIC,UAAU,IAAQ5N,EAAEE,GAAKD,EAAGD,CAAG,CAS5K,IAAIgwE,GAAmCzvE,EAAW,CAAChB,EAAMiB,KAC9D,IAAIyvE,OACFA,EAAMC,iBACNA,EAAmB,CACjBxvE,OAAO,EACPC,QAAQ,GACTD,MACDA,EAAQ,OAAMC,OACdA,EAAS,OAAMwvE,SAKfA,EAAW,EAACC,UACZA,EAASC,UACTA,EAAS5vE,SACTA,EAAQqtE,SACRA,EAAW,EAAC1b,GACZA,EAAEvxD,UACFA,EAASyvE,SACTA,EAAQxvE,MACRA,EAAQ,CAAA,GACNvB,EACAgxE,EAAe12D,EAAO,MACtB22D,EAAc32D,IAClB22D,EAAY7zE,QAAU2zE,EACtBG,EAAoBjwE,EAAK,IAAM+vE,EAAa5zE,SAC5C,IAAK+zE,EAAOC,GAAY1xD,EAAS,CAC/B2xD,eAAgBV,EAAiBxvE,MACjCmwE,gBAAiBX,EAAiBvvE,SAEhCmwE,EAAmBzxD,EAAY,CAAC0xD,EAAUC,KAC5CL,EAASM,IACP,IAAIC,EAAehvE,KAAKiE,MAAM4qE,GAC1BI,EAAgBjvE,KAAKiE,MAAM6qE,GAC/B,OAAIC,EAAUL,iBAAmBM,GAAgBD,EAAUJ,kBAAoBM,EACtEF,EAEF,CACLL,eAAgBM,EAChBL,gBAAiBM,MAGpB,IACHr3D,EAAU,KACR,IAAI0b,EAAWpiB,IACb,IAAIg+D,GAEF1wE,MAAOkwE,EACPjwE,OAAQkwE,GACNz9D,EAAQ,GAAGi+D,YACfP,EAAiBF,EAAgBC,GACgB,QAAhDO,EAAuBZ,EAAY7zE,eAA8C,IAAzBy0E,GAAmCA,EAAqBhxE,KAAKowE,EAAaI,EAAgBC,IAEjJ/C,EAAW,IACbt4C,EAAWk6C,GAASl6C,EAAUs4C,EAAU,CACtCS,UAAU,EACVD,SAAS,KAGb,IAAIgD,EAAW,IAAIC,eAAe/7C,IAEhC90B,MAAOkwE,EACPjwE,OAAQkwE,GACNN,EAAa5zE,QAAQ4iB,wBAGzB,OAFAuxD,EAAiBF,EAAgBC,GACjCS,EAASE,QAAQjB,EAAa5zE,SACvB,KACL20E,EAASG,eAEV,CAACX,EAAkBhD,IACtB,IAAI4D,EAAe33D,EAAQ,KACzB,IAAI62D,eACFA,EAAcC,gBACdA,GACEH,EACJ,GAAIE,EAAiB,GAAKC,EAAkB,EAC1C,OAAO,KAEThB,GAAK9yE,EAAU2D,IAAU3D,EAAU4D,GAAS,kHAAmHD,EAAOC,GACtKkvE,IAAMI,GAAUA,EAAS,EAAG,4CAA6CA,GACzE,IAAI0B,EAAkB50E,EAAU2D,GAASkwE,EAAiBlwE,EACtDkxE,EAAmB70E,EAAU4D,GAAUkwE,EAAkBlwE,EAiB7D,OAhBIsvE,GAAUA,EAAS,IAEjB0B,EAEFC,EAAmBD,EAAkB1B,EAC5B2B,IAETD,EAAkBC,EAAmB3B,GAInCI,GAAauB,EAAmBvB,IAClCuB,EAAmBvB,IAGvBR,GAAK8B,EAAkB,GAAKC,EAAmB,EAAG,gQAAiQD,EAAiBC,EAAkBlxE,EAAOC,EAAQwvE,EAAUC,EAAWH,GACnXruE,EAAM+2B,SAAS9nB,IAAIpQ,EAAUu4B,GACd7oB,EAAa6oB,EAAO,CACtCt4B,MAAOixE,EACPhxE,OAAQixE,EAER9wE,MAAOqM,GAAc,CACnBzM,MAAOixE,EACPhxE,OAAQixE,GACP54C,EAAMn6B,MAAMiC,WAGlB,CAACmvE,EAAQxvE,EAAUE,EAAQ0vE,EAAWD,EAAWD,EAAUO,EAAOhwE,IACrE,OAAoBkB,EAAMC,cAAc,MAAO,CAC7CuwD,GAAIA,EAAK,GAAGl0D,OAAOk0D,QAAM51D,EACzBqE,UAAWc,EAAK,gCAAiCd,GACjDC,MAAOqM,GAAcA,GAAc,CAAA,EAAIrM,GAAQ,CAAA,EAAI,CACjDJ,QACAC,SACAwvE,WACAC,YACAC,cAEF7vE,IAAK+vE,GACS3uE,EAAMC,cAAc,MAAO,CACzCf,MAAO,CACLJ,MAAO,EACPC,OAAQ,EACRkxE,SAAU,YAEXH,MCrIL,MAAMI,GAAS,CAAEC,MAAO,GAAIC,KAAM,SAgB5BC,GAAerwE,EAAMG,cAAwC,MAEnE,SAASmwE,KACR,MAAMvrE,EAAU/E,EAAM6Z,WAAWw2D,IAEjC,IAAKtrE,EACJ,MAAM,IAAI7C,MAAM,qDAGjB,OAAO6C,CACR,CAEA,SAASwrE,IAAe/f,GACvBA,EAAEvxD,UACFA,EAASJ,SACTA,EAAQqyB,OACRA,KACGj0B,IAKH,MAAMuzE,EAAWxwE,EAAMywE,QACjBC,EAAU,SAASlgB,GAAMggB,EAASj6C,QAAQ,KAAM,MAEtD,OACCv2B,EAAAC,cAACowE,GAAaM,SAAQ,CAAC13E,MAAO,CAAEi4B,WAC/BlxB,EAAAC,cAAC2lD,MAAAA,CACAgrB,YAAU,QACVC,aAAYH,EACZzxE,UAAW6xE,EACV,8pBACA7xE,MAEGhC,GAEJ+C,EAAAC,cAAC8wE,GAAAA,CAAWvgB,GAAIkgB,EAASx/C,OAAQA,IACjClxB,EAAAC,cAAC+wE,GAAqC,KAAEnyE,IAI5C,CAEA,MAAMkyE,GAAa,EAAGvgB,KAAIt/B,aACzB,MAAM+/C,EAAcr4E,OAAO4Y,QAAQ0f,GAAQ9lB,OAAO,EAAC,CAAG8lB,KAAYA,EAAOggD,OAAShgD,EAAOrjB,OAEzF,OAAKojE,EAAYp3E,OAKhBmG,EAAAC,cAACf,QAAAA,CAEAiyE,wBAAyB,CACxBC,OAAQx4E,OAAO4Y,QAAQ0+D,IACrBjhE,IACA,EAAEiiE,EAAO//B,KAAY,KACzBA,iBAAsBqf,SACtBygB,EACAhiE,IAAI,EAAE9V,EAAKk4E,MACX,MAAMxjE,EAAQwjE,EAAWH,QAAQA,IAA2CG,EAAWxjE,MACvF,OAAOA,EAAQ,aAAa1U,MAAQ0U,KAAW,OAE/C0Y,KAAK,cAIDA,KAAK,SApBF,MA0BH+qD,GNlCC,SAAiBC,GACtB,IAAIt0E,EAAQ2wB,GAAoB2jD,EAAcvF,KAE5CliD,OAAQs4C,EAAex5C,mBACvBA,EAAkBmB,kBAClBA,EAAiBC,gBACjBA,EAAejF,QACfA,EAAOknD,WACPA,EAAU/hD,kBACVA,EAAiBzK,OACjBA,EAAMoF,cACNA,EAAakB,SACbA,EAAQ+C,iBACRA,EAAgBqB,eAChBA,EAAc5E,aACdA,EAAYyjD,OACZA,EAAMhJ,OACNA,EAAMiB,QACNA,EAAOC,aACPA,EACA17C,OAAQC,EAAewsC,OACvBA,GACEh1D,EACA8c,EAAWH,KACX43D,EAA+C,iBAAjBtQ,EAA4BznE,OAAOynE,GAAgBA,EACrFhpD,EAAU,KACR6B,EAASsnD,GAAwB,CAC/BrB,SACAiB,UACAhP,SACAnoC,OAAQs4C,EACRlB,aAAcsQ,MAEf,CAACz3D,EAAUimD,EAAQiB,EAAShP,EAAQmQ,EAAiBoP,IACxD,IAAIxyE,EAAUokB,KACV4D,EO/FmC9M,GAAeuC,GAASA,EAAM4yC,UAAUroC,oBPgG3Ei7C,EAAmB/B,GAAoBF,IACvCM,YACFA,EAAWrrC,SACXA,GACE/a,GAAeuC,GAASksD,GAAsBlsD,EAAOwlD,EAAkBhB,EAASuQ,IAChFC,EAAmBv3D,GAAeuC,GAASisD,GAAqBjsD,EAAOwlD,EAAkBhB,EAASuQ,IAClGE,EAAiBx3D,GAAeuC,GAAS0qD,GAAkB1qD,EAAOwlD,EAAkBhB,EAASuQ,IAC7FjpD,EAAarO,GAAeuC,GAAS+rD,GAAuB/rD,EAAOwlD,EAAkBhB,EAASuQ,IAC9FpjE,EAAUqjE,EACVE,ELxG8B93D,EAAW4vD,IK+GzCmI,EAAgBxP,QAAyDA,EAAkBntC,GAC1F9X,EAAiBK,GAAqBP,GAAiB,CAAC7O,EAASwjE,IAClEtqD,EAAkC,SAArB26C,EAA8ByP,OAAiB92E,EAChE6wE,GAA+BxJ,EAAkBhB,EAAS14C,EAAYjB,EAAYg5C,EAAasR,GAC/F,IAAIC,EAAgBpsD,QAAyDA,EAAkBksD,EAC/F,GAAqB,MAAjBE,EACF,OAAO,KAET,IAAIjtD,EAAexW,QAAyCA,EAAU29D,GACjE6F,IACHhtD,EAAemnD,IAEbE,GAAcrnD,EAAa/qB,SAC7B+qB,EAAerN,GAAenJ,EAAQhD,OAAO8D,GAAwB,MAAfA,EAAMjW,SAAiC,IAAfiW,EAAMmT,MAAiBplB,EAAMwzD,gBAAiB5rC,EAAepN,KAE7I,IAAIwS,EAAarF,EAAa/qB,OAAS,EACnCi4E,EAA8B9xE,EAAMC,cAAcipB,GAAoB,CACxEN,mBAAoBA,EACpBmB,kBAAmBA,EACnBC,gBAAiBA,EACjBE,kBAAmBA,EACnBJ,OAAQ8nD,EACRrpD,WAAYA,EACZ0B,WAAYA,EACZxK,OAAQA,EACRsG,SAAUA,EACV+C,iBAAkBA,EAClBqB,eAAgBA,EAChBnrB,QAASA,EACTumB,aAAcA,EACdpI,gBAAiBA,EACjBiN,SAAU5M,EACV6M,mBAAoB7X,QAAQiT,IAvHhC,SAAuBV,EAAS9nB,GAC9B,OAAiB+C,EAAM3C,eAAe0nB,GAChB/kB,EAAMuO,aAAawW,EAAS9nB,GAE3B,mBAAZ8nB,EACW/kB,EAAMC,cAAc8kB,EAAS9nB,GAE/B+C,EAAMC,cAAcumB,GAAuBvpB,EACjE,CAgHKirB,CAAcnD,EAASxZ,GAAcA,GAAc,GAAItO,GAAQ,GAAI,CAEpEmR,QAASwW,EACTkC,MAAOQ,EACPwC,OAAQ8nD,EACRrpD,aACAvB,yBAEF,OAAoBhnB,EAAMC,cAAcD,EAAM+xE,SAAU,KAAmB1rD,EAAayrD,EAAgBD,GAAgBD,GAA8B5xE,EAAMC,cAAcspE,GAAQ,CAChLP,OAAQA,EACR/G,iBAAkBA,EAClB15C,WAAYA,EACZna,QAASA,EACTtU,MAAOwmE,IAEX,EMhEA,SAAS0R,IAAoBloD,OAC5BA,EAAM1b,QACNA,EAAOnP,UACPA,EAASgzE,UACTA,EAAY,MAAKC,UACjBA,GAAY,EAAKC,cACjBA,GAAgB,EAAKrrD,MACrBA,EAAKC,eACLA,EAAcF,eACdA,EAAclY,UACdA,EAASd,MACTA,EAAK02D,QACLA,EAAO6N,SACPA,IAqBA,MAAMlhD,OAAEA,GAAWo/C,KAEb+B,EAAeryE,EAAMmY,QAAQ,KAClC,GAAI+5D,IAAc9jE,GAASvU,OAC1B,OAAO,KAGR,MAAOwV,GAAQjB,EAETijE,EAAaiB,GAA4BphD,EAAQ7hB,EAD3C,GAAG+iE,GAAY/iE,GAAM+O,SAAW/O,GAAMzC,MAAQ,WAEpD3T,EACJm5E,GAA6B,iBAAVtrD,EAEjBuqD,GAAYvqD,MADZoK,EAAOpK,IAA+BA,OAASA,EAGnD,OAAIC,EAEF/mB,EAAAC,cAAC2lD,MAAAA,CAAI3mD,UAAW6xE,EAAG,cAAejqD,IAAkBE,EAAe9tB,EAAOmV,IAIvEnV,EAIE+G,EAAAC,cAAC2lD,MAAAA,CAAI3mD,UAAW6xE,EAAG,cAAejqD,IAAkB5tB,GAHnD,MAIN,CAAC6tB,EAAOC,EAAgB3Y,EAAS8jE,EAAWrrD,EAAgBqK,EAAQkhD,IAEvE,IAAKtoD,IAAW1b,GAASvU,OACxB,OAAO,KAGR,MAAM04E,EAA+B,IAAnBnkE,EAAQvU,QAA8B,QAAdo4E,EAE1C,OACCjyE,EAAAC,cAAC2lD,MAAAA,CACA3mD,UAAW6xE,EACV,yHACA7xE,IAGCszE,EAA2B,KAAfF,EACdryE,EAAAC,cAAC2lD,MAAAA,CAAI3mD,UAAU,gBACbmP,EAAQa,IAAI,CAACI,EAAMvV,KACnB,MAAMX,EAAM,GAAGorE,GAAWl1D,EAAKzC,MAAQyC,EAAK+O,SAAW,UACjDizD,EAAaiB,GAA4BphD,EAAQ7hB,EAAMlW,GACvDq5E,EAAiB3kE,GAASwB,EAAKjB,SAASH,MAAQoB,EAAKxB,MAE3D,OACC7N,EAAAC,cAAC2lD,MAAAA,CACAzsD,IAAKkW,EAAK+O,QACVnf,UAAW6xE,EACV,sGACc,QAAdmB,GAAuB,iBAGvBtjE,QAA6B/T,IAAhByU,GAAMpW,OAAuBoW,EAAKzC,KAC/C+B,EAAUU,EAAKpW,MAAOoW,EAAKzC,KAAMyC,EAAMvV,EAAOuV,EAAKjB,SAASH,MAE5DjO,EAAAC,cAAAD,EAAA+xE,SAAA,KACEV,GAAYoB,KACZzyE,EAAAC,cAACoxE,EAAWoB,KAAI,OAEfN,GACAnyE,EAAAC,cAAC2lD,MAAAA,CACA3mD,UAAW6xE,EACV,iEACA,CACC,cAA6B,QAAdmB,EACf,MAAqB,SAAdA,EACP,kDACe,WAAdA,EACD,SAAUM,GAA2B,WAAdN,IAGzB/yE,MACC,CACC,aAAcszE,EACd,iBAAkBA,KAMvBxyE,EAAAC,cAAC2lD,MAAAA,CACA3mD,UAAW6xE,EACV,2CACAyB,EAAY,YAAc,iBAG3BvyE,EAAAC,cAAC2lD,MAAAA,CAAI3mD,UAAU,gBACbszE,EAAYF,EAAe,KAC5BryE,EAAAC,cAACyyE,OAAAA,CAAKzzE,UAAU,yBACdoyE,GAAYvqD,OAASzX,EAAKzC,OAG5ByC,EAAKpW,OACL+G,EAAAC,cAACyyE,OAAAA,CAAKzzE,UAAU,sDACdoQ,EAAKpW,MAAM82C,wBAYxB,CAEA,MAAM4iC,GAAc3B,GAEpB,SAAS4B,IAAmB3zE,UAC3BA,EAAS4zE,SACTA,GAAW,EAAKzkE,QAChBA,EAAOY,cACPA,EAAgB,SAAQu1D,QACxBA,IAOA,MAAMrzC,OAAEA,GAAWo/C,KAEnB,OAAKliE,GAASvU,OAKbmG,EAAAC,cAAC2lD,MAAAA,CACA3mD,UAAW6xE,EACV,yCACkB,QAAlB9hE,EAA0B,OAAS,OACnC/P,IAGAmP,EAAQa,IAAKI,IACb,MAAMlW,EAAM,GAAGorE,GAAWl1D,EAAK+O,SAAW,UACpCizD,EAAaiB,GAA4BphD,EAAQ7hB,EAAMlW,GAE7D,OACC6G,EAAAC,cAAC2lD,MAAAA,CACAzsD,IAAKkW,EAAKpW,MACVgG,UAAW6xE,EACV,oFAGAO,GAAYoB,OAASI,EACrB7yE,gBAACqxE,EAAWoB,WAEZzyE,EAAAC,cAAC2lD,MAAAA,CACA3mD,UAAU,iCACVC,MAAO,CACN+nB,gBAAiB5X,EAAKxB,SAIxBwjE,GAAYvqD,UAhCV,IAsCT,CAGA,SAASwrD,GAA4BphD,EAAqB9iB,EAAkBjV,GAC3E,GAAuB,iBAAZiV,GAAoC,OAAZA,EAClC,OAGD,MAAM0kE,EACL,YAAa1kE,GAAsC,iBAApBA,EAAQA,SAA4C,OAApBA,EAAQA,QACpEA,EAAQA,aACRxT,EAEJ,IAAIm4E,EAAyB55E,EAY7B,OAVIA,KAAOiV,GAA2D,iBAAzCA,EAAQjV,GACpC45E,EAAiB3kE,EAAQjV,GAEzB25E,GACA35E,KAAO25E,GACuD,iBAAvDA,EAAe35E,KAEtB45E,EAAiBD,EAAe35E,IAG1B45E,KAAkB7hD,EAASA,EAAO6hD,GAAkB7hD,EAAO/3B,EACnE","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,249]}
|