highcharts 13.0.1 → 13.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (915) hide show
  1. package/bower.json +2 -3
  2. package/es-modules/Accessibility/A11yI18n.js +4 -4
  3. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +6 -4
  4. package/es-modules/Accessibility/Components/LegendComponent.js +2 -2
  5. package/es-modules/Accessibility/Components/NavigatorComponent.js +2 -2
  6. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +13 -10
  7. package/es-modules/Accessibility/Components/ZoomComponent.js +2 -2
  8. package/es-modules/Accessibility/FocusBorder.js +2 -2
  9. package/es-modules/Accessibility/Options/DeprecatedOptions.js +1 -2
  10. package/es-modules/Core/Animation/AnimationUtilities.js +3 -2
  11. package/es-modules/Core/Axis/Axis.js +48 -57
  12. package/es-modules/Core/Axis/Axis3DComposition.js +8 -6
  13. package/es-modules/Core/Axis/BrokenAxis.js +6 -5
  14. package/es-modules/Core/Axis/Color/ColorAxis.js +17 -10
  15. package/es-modules/Core/Axis/Color/ColorAxisComposition.js +2 -2
  16. package/es-modules/Core/Axis/GridAxis.js +4 -4
  17. package/es-modules/Core/Axis/LogarithmicAxis.js +5 -3
  18. package/es-modules/Core/Axis/NavigatorAxisComposition.js +2 -2
  19. package/es-modules/Core/Axis/OrdinalAxis.js +9 -7
  20. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -2
  21. package/es-modules/Core/Axis/RadialAxis.js +15 -9
  22. package/es-modules/Core/Axis/ScrollbarAxis.js +3 -3
  23. package/es-modules/Core/Axis/Stacking/StackItem.js +5 -5
  24. package/es-modules/Core/Axis/Stacking/StackingAxis.js +4 -4
  25. package/es-modules/Core/Axis/Tick.js +10 -11
  26. package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +3 -3
  27. package/es-modules/Core/Chart/Chart.js +14 -14
  28. package/es-modules/Core/Chart/Chart3D.js +3 -3
  29. package/es-modules/Core/Chart/ChartDefaults.js +23 -0
  30. package/es-modules/Core/Chart/MapChart.js +7 -5
  31. package/es-modules/Core/Chart/StockChart.js +15 -11
  32. package/es-modules/Core/Color/Color.js +3 -1
  33. package/es-modules/Core/Defaults.js +35 -0
  34. package/es-modules/Core/Globals.js +1 -1
  35. package/es-modules/Core/Legend/Legend.js +16 -12
  36. package/es-modules/Core/Legend/LegendSymbol.js +2 -2
  37. package/es-modules/Core/MSPointer.js +2 -2
  38. package/es-modules/Core/Math3D.js +6 -7
  39. package/es-modules/Core/Pointer.js +9 -9
  40. package/es-modules/Core/Renderer/RendererUtilities.js +2 -2
  41. package/es-modules/Core/Renderer/SVG/SVGElement.js +11 -9
  42. package/es-modules/Core/Renderer/SVG/SVGElement3D.js +2 -2
  43. package/es-modules/Core/Renderer/SVG/SVGLabel.js +5 -5
  44. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +5 -5
  45. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +11 -9
  46. package/es-modules/Core/Renderer/SVG/Symbols.js +6 -5
  47. package/es-modules/Core/Renderer/SVG/TextBuilder.js +2 -2
  48. package/es-modules/Core/Responsive.js +7 -5
  49. package/es-modules/Core/Series/DataLabel.js +8 -6
  50. package/es-modules/Core/Series/OverlappingDataLabels.js +5 -2
  51. package/es-modules/Core/Series/Point.js +3 -3
  52. package/es-modules/Core/Series/Series.js +37 -21
  53. package/es-modules/Core/Series/Series3D.js +2 -2
  54. package/es-modules/Core/Templating.js +2 -2
  55. package/es-modules/Core/Tooltip.js +11 -7
  56. package/es-modules/Core/Utilities.js +4 -3
  57. package/es-modules/Data/Connectors/DataConnector.js +2 -2
  58. package/es-modules/Data/Connectors/GoogleSheetsConnector.js +2 -2
  59. package/es-modules/Data/DataTable.js +17 -0
  60. package/es-modules/Extensions/Annotations/Annotation.js +4 -4
  61. package/es-modules/Extensions/Annotations/AnnotationChart.js +2 -2
  62. package/es-modules/Extensions/Annotations/ControlPoint.js +2 -2
  63. package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +2 -2
  64. package/es-modules/Extensions/Annotations/EventEmitter.js +4 -4
  65. package/es-modules/Extensions/Annotations/NavigationBindings.js +6 -3
  66. package/es-modules/Extensions/Annotations/NavigationBindingsUtilities.js +2 -2
  67. package/es-modules/Extensions/Annotations/Popup/Popup.js +3 -2
  68. package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +4 -6
  69. package/es-modules/Extensions/Annotations/Types/Measure.js +3 -3
  70. package/es-modules/Extensions/Annotations/Types/VerticalLine.js +3 -3
  71. package/es-modules/Extensions/Boost/BoostChart.js +11 -4
  72. package/es-modules/Extensions/Boost/BoostSeries.js +8 -9
  73. package/es-modules/Extensions/Boost/WGLRenderer.js +9 -6
  74. package/es-modules/Extensions/Boost/WGLShader.js +3 -3
  75. package/es-modules/Extensions/BoostCanvas.js +2 -2
  76. package/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +5 -4
  77. package/es-modules/Extensions/DataGrouping/DataGrouping.js +2 -2
  78. package/es-modules/Extensions/DataGrouping/DataGroupingAxisComposition.js +4 -3
  79. package/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +2 -2
  80. package/es-modules/Extensions/DraggablePoints/DragDropProps.js +2 -3
  81. package/es-modules/Extensions/ExportData/ExportData.js +17 -16
  82. package/es-modules/Extensions/Exporting/Exporting.js +7 -7
  83. package/es-modules/Extensions/MouseWheelZoom/MouseWheelZoom.js +2 -2
  84. package/es-modules/Extensions/Pane/PaneComposition.js +2 -2
  85. package/es-modules/Extensions/ParallelCoordinates/ParallelAxis.js +2 -2
  86. package/es-modules/Extensions/PatternFill.js +7 -5
  87. package/es-modules/Extensions/PriceIndication.js +5 -4
  88. package/es-modules/Extensions/SeriesLabel/SeriesLabel.js +7 -7
  89. package/es-modules/Extensions/Sonification/MIDI.js +2 -3
  90. package/es-modules/Extensions/Sonification/Sonification.js +2 -2
  91. package/es-modules/Extensions/Sonification/SonificationSpeaker.js +3 -2
  92. package/es-modules/Extensions/Sonification/SynthPatch.js +3 -3
  93. package/es-modules/Extensions/Sonification/TimelineFromChart.js +11 -11
  94. package/es-modules/Gantt/Legacy.js +2 -2
  95. package/es-modules/Gantt/Pathfinder.js +3 -3
  96. package/es-modules/Gantt/PathfinderAlgorithms.js +4 -3
  97. package/es-modules/Gantt/Tree.js +1 -1
  98. package/es-modules/Maps/MapNavigation.js +4 -4
  99. package/es-modules/Maps/MapPointer.js +2 -2
  100. package/es-modules/Maps/MapView.js +2 -2
  101. package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +8 -6
  102. package/es-modules/Series/Area/AreaSeries.js +4 -5
  103. package/es-modules/Series/BoxPlot/BoxPlotSeries.js +13 -4
  104. package/es-modules/Series/Bubble/BubbleLegendItem.js +10 -6
  105. package/es-modules/Series/Bubble/BubbleSeries.js +10 -9
  106. package/es-modules/Series/Bullet/BulletSeries.js +17 -10
  107. package/es-modules/Series/CenteredUtilities.js +7 -5
  108. package/es-modules/Series/Column/ColumnSeries.js +2 -2
  109. package/es-modules/Series/Column3D/Column3DComposition.js +6 -5
  110. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +4 -4
  111. package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +4 -2
  112. package/es-modules/Series/Cylinder/CylinderComposition.js +2 -2
  113. package/es-modules/Series/DataModifyComposition.js +9 -7
  114. package/es-modules/Series/DotPlot/DotPlotSeries.js +3 -2
  115. package/es-modules/Series/Dumbbell/DumbbellPoint.js +14 -3
  116. package/es-modules/Series/Dumbbell/DumbbellSeries.js +24 -7
  117. package/es-modules/Series/FlowMap/FlowMapPoint.js +5 -3
  118. package/es-modules/Series/FlowMap/FlowMapSeries.js +17 -9
  119. package/es-modules/Series/Funnel/FunnelSeries.js +2 -2
  120. package/es-modules/Series/Funnel3D/Funnel3DSeries.js +7 -5
  121. package/es-modules/Series/Gauge/GaugeSeries.js +2 -2
  122. package/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +4 -4
  123. package/es-modules/Series/Heatmap/HeatmapPoint.js +6 -6
  124. package/es-modules/Series/Heatmap/HeatmapPointOptions.js +12 -0
  125. package/es-modules/Series/Heatmap/HeatmapSeries.js +13 -13
  126. package/es-modules/Series/Heatmap/HeatmapSeriesOptions.js +12 -0
  127. package/es-modules/Series/Histogram/HistogramPoint.js +17 -0
  128. package/es-modules/Series/Histogram/HistogramPointOptions.js +12 -0
  129. package/es-modules/Series/Histogram/HistogramSeries.js +14 -2
  130. package/es-modules/Series/Histogram/HistogramSeriesOptions.js +12 -0
  131. package/es-modules/Series/InterpolationUtilities.js +5 -5
  132. package/es-modules/Series/Item/ItemPointOptions.js +14 -0
  133. package/es-modules/Series/Item/ItemSeries.js +18 -6
  134. package/es-modules/Series/Item/ItemSeriesOptions.js +14 -0
  135. package/es-modules/Series/Map/MapPoint.js +5 -3
  136. package/es-modules/Series/Map/MapSeries.js +5 -8
  137. package/es-modules/Series/Networkgraph/NetworkgraphPoint.js +3 -3
  138. package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +4 -2
  139. package/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +18 -9
  140. package/es-modules/Series/NodesComposition.js +9 -10
  141. package/es-modules/Series/Organization/OrganizationPoint.js +3 -2
  142. package/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -3
  143. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +5 -5
  144. package/es-modules/Series/Pictorial/PictorialSeries.js +4 -2
  145. package/es-modules/Series/Pie/PieDataLabel.js +2 -2
  146. package/es-modules/Series/Pie/PiePoint.js +2 -2
  147. package/es-modules/Series/Pie/PieSeries.js +3 -2
  148. package/es-modules/Series/Pie3D/Pie3DSeries.js +8 -4
  149. package/es-modules/Series/PolarComposition.js +8 -7
  150. package/es-modules/Series/Sankey/SankeySeries.js +11 -5
  151. package/es-modules/Series/Scatter/ScatterSeries.js +6 -5
  152. package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +2 -2
  153. package/es-modules/Series/Spline/SplineSeries.js +5 -5
  154. package/es-modules/Series/TiledWebMap/TiledWebMapSeries.js +8 -6
  155. package/es-modules/Series/Tilemap/TilemapShapes.js +2 -2
  156. package/es-modules/Series/Timeline/TimelinePoint.js +2 -2
  157. package/es-modules/Series/Timeline/TimelineSeries.js +4 -3
  158. package/es-modules/Series/TreeUtilities.js +16 -7
  159. package/es-modules/Series/Treegraph/TreegraphLink.js +2 -2
  160. package/es-modules/Series/Treemap/TreemapPoint.js +2 -2
  161. package/es-modules/Series/Treemap/TreemapSeries.js +14 -11
  162. package/es-modules/Series/VariablePie/VariablePieSeries.js +6 -4
  163. package/es-modules/Series/Variwide/VariwideSeries.js +2 -2
  164. package/es-modules/Series/Waterfall/WaterfallSeries.js +2 -2
  165. package/es-modules/Series/Windbarb/WindbarbSeries.js +2 -2
  166. package/es-modules/Shared/TimeBase.js +8 -2
  167. package/es-modules/Shared/Utilities.js +9 -7
  168. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -3
  169. package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +4 -3
  170. package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +1 -1
  171. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +2 -2
  172. package/es-modules/Stock/Navigator/ChartNavigatorComposition.js +4 -4
  173. package/es-modules/Stock/Navigator/Navigator.js +26 -26
  174. package/es-modules/Stock/Navigator/StandaloneNavigator.js +4 -4
  175. package/es-modules/Stock/RangeSelector/RangeSelector.js +15 -11
  176. package/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +3 -3
  177. package/es-modules/Stock/Scrollbar/Scrollbar.js +8 -7
  178. package/es-modules/Stock/StockTools/StockToolbar.js +5 -5
  179. package/es-modules/Stock/StockTools/StockTools.js +2 -2
  180. package/es-modules/Stock/StockTools/StockToolsGui.js +4 -2
  181. package/es-modules/masters/highcharts-3d.src.js +1 -1
  182. package/es-modules/masters/highcharts-autoload.src.js +1 -1
  183. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  184. package/es-modules/masters/highcharts-more.src.js +1 -1
  185. package/es-modules/masters/highcharts.src.js +7 -2
  186. package/es-modules/masters/highmaps.src.js +1 -1
  187. package/es-modules/masters/highstock.src.js +1 -1
  188. package/es-modules/masters/i18n/fr-FR.src.d.ts +1 -1
  189. package/es-modules/masters/i18n/fr-FR.src.js +1 -1
  190. package/es-modules/masters/i18n/nb-NO.src.d.ts +1 -1
  191. package/es-modules/masters/i18n/nb-NO.src.js +1 -1
  192. package/es-modules/masters/i18n/zh-CN.src.d.ts +1 -1
  193. package/es-modules/masters/i18n/zh-CN.src.js +1 -1
  194. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  195. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  196. package/es-modules/masters/indicators/ao.src.js +1 -1
  197. package/es-modules/masters/indicators/apo.src.js +1 -1
  198. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  199. package/es-modules/masters/indicators/aroon.src.js +1 -1
  200. package/es-modules/masters/indicators/atr.src.js +1 -1
  201. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  202. package/es-modules/masters/indicators/cci.src.js +1 -1
  203. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  204. package/es-modules/masters/indicators/cmf.src.js +1 -1
  205. package/es-modules/masters/indicators/cmo.src.js +1 -1
  206. package/es-modules/masters/indicators/dema.src.js +1 -1
  207. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  208. package/es-modules/masters/indicators/dmi.src.js +1 -1
  209. package/es-modules/masters/indicators/dpo.src.js +1 -1
  210. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  211. package/es-modules/masters/indicators/indicators-all.src.js +1 -1
  212. package/es-modules/masters/indicators/indicators.src.js +1 -1
  213. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  214. package/es-modules/masters/indicators/klinger.src.js +1 -1
  215. package/es-modules/masters/indicators/macd.src.js +1 -1
  216. package/es-modules/masters/indicators/mfi.src.js +1 -1
  217. package/es-modules/masters/indicators/momentum.src.js +1 -1
  218. package/es-modules/masters/indicators/natr.src.js +1 -1
  219. package/es-modules/masters/indicators/obv.src.js +1 -1
  220. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  221. package/es-modules/masters/indicators/ppo.src.js +1 -1
  222. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  223. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  224. package/es-modules/masters/indicators/psar.src.js +1 -1
  225. package/es-modules/masters/indicators/regressions.src.js +1 -1
  226. package/es-modules/masters/indicators/roc.src.js +1 -1
  227. package/es-modules/masters/indicators/rsi.src.js +1 -1
  228. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  229. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  230. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  231. package/es-modules/masters/indicators/tema.src.js +1 -1
  232. package/es-modules/masters/indicators/trendline.src.js +1 -1
  233. package/es-modules/masters/indicators/trix.src.js +1 -1
  234. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  235. package/es-modules/masters/indicators/vwap.src.js +1 -1
  236. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  237. package/es-modules/masters/indicators/wma.src.js +1 -1
  238. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  239. package/es-modules/masters/modules/accessibility.src.js +1 -1
  240. package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
  241. package/es-modules/masters/modules/annotations.src.js +1 -1
  242. package/es-modules/masters/modules/arc-diagram.src.js +1 -1
  243. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  244. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  245. package/es-modules/masters/modules/boost.src.js +1 -1
  246. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  247. package/es-modules/masters/modules/bullet.src.js +1 -1
  248. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  249. package/es-modules/masters/modules/contour.src.js +1 -1
  250. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  251. package/es-modules/masters/modules/cylinder.src.js +1 -1
  252. package/es-modules/masters/modules/data-sorting.src.js +1 -1
  253. package/es-modules/masters/modules/data-tools.src.js +1 -1
  254. package/es-modules/masters/modules/data.src.js +1 -1
  255. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  256. package/es-modules/masters/modules/debugger.src.js +1 -1
  257. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  258. package/es-modules/masters/modules/dotplot.src.js +1 -1
  259. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  260. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  261. package/es-modules/masters/modules/drilldown.src.js +1 -1
  262. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  263. package/es-modules/masters/modules/export-data.src.js +1 -1
  264. package/es-modules/masters/modules/exporting.src.js +1 -1
  265. package/es-modules/masters/modules/flowmap.src.js +1 -1
  266. package/es-modules/masters/modules/full-screen.src.js +1 -1
  267. package/es-modules/masters/modules/funnel.src.js +1 -1
  268. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  269. package/es-modules/masters/modules/gantt.src.js +1 -1
  270. package/es-modules/masters/modules/geoheatmap.src.js +1 -1
  271. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  272. package/es-modules/masters/modules/heatmap.src.js +1 -1
  273. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  274. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  275. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  276. package/es-modules/masters/modules/item-series.src.js +1 -1
  277. package/es-modules/masters/modules/lollipop.src.js +1 -1
  278. package/es-modules/masters/modules/map.src.js +1 -1
  279. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  280. package/es-modules/masters/modules/mouse-wheel-zoom.src.js +1 -1
  281. package/es-modules/masters/modules/navigator.src.js +1 -1
  282. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  283. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  284. package/es-modules/masters/modules/non-cartesian-zoom.src.js +1 -1
  285. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  286. package/es-modules/masters/modules/organization.src.js +1 -1
  287. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  288. package/es-modules/masters/modules/pareto.src.js +1 -1
  289. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  290. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  291. package/es-modules/masters/modules/pictorial.src.js +1 -1
  292. package/es-modules/masters/modules/pointandfigure.src.js +1 -1
  293. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  294. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  295. package/es-modules/masters/modules/renko.src.js +1 -1
  296. package/es-modules/masters/modules/sankey.src.js +1 -1
  297. package/es-modules/masters/modules/series-label.src.js +1 -1
  298. package/es-modules/masters/modules/series-on-point.src.js +1 -1
  299. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  300. package/es-modules/masters/modules/sonification.src.js +1 -1
  301. package/es-modules/masters/modules/static-scale.src.js +1 -1
  302. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  303. package/es-modules/masters/modules/stock.src.js +1 -1
  304. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  305. package/es-modules/masters/modules/sunburst.src.js +1 -1
  306. package/es-modules/masters/modules/textpath.src.js +1 -1
  307. package/es-modules/masters/modules/tiledwebmap.src.js +1 -1
  308. package/es-modules/masters/modules/tilemap.src.js +1 -1
  309. package/es-modules/masters/modules/timeline.src.js +1 -1
  310. package/es-modules/masters/modules/treegraph.src.js +1 -1
  311. package/es-modules/masters/modules/treegrid.src.js +1 -1
  312. package/es-modules/masters/modules/treemap.src.js +1 -1
  313. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  314. package/es-modules/masters/modules/variwide.src.js +1 -1
  315. package/es-modules/masters/modules/vector.src.js +1 -1
  316. package/es-modules/masters/modules/venn.src.js +1 -1
  317. package/es-modules/masters/modules/windbarb.src.js +1 -1
  318. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  319. package/es-modules/masters/modules/xrange.src.js +1 -1
  320. package/es-modules/masters/standalone-navigator.src.js +1 -1
  321. package/es-modules/masters/themes/adaptive.src.js +1 -1
  322. package/es-modules/masters/themes/avocado.src.js +1 -1
  323. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  324. package/es-modules/masters/themes/grid-light.src.js +1 -1
  325. package/es-modules/masters/themes/high-contrast.src.js +1 -1
  326. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  327. package/es-modules/masters/themes/sunset.src.js +1 -1
  328. package/es-modules/tsconfig.tsbuildinfo +1 -1
  329. package/esm/highcharts-3d.js +2 -2
  330. package/esm/highcharts-3d.src.js +40 -32
  331. package/esm/highcharts-autoload.js +1 -1
  332. package/esm/highcharts-autoload.src.js +1 -1
  333. package/esm/highcharts-gantt.js +1 -1
  334. package/esm/highcharts-gantt.src.js +1 -1
  335. package/esm/highcharts-more.js +2 -2
  336. package/esm/highcharts-more.src.js +90 -56
  337. package/esm/highcharts.js +4 -4
  338. package/esm/highcharts.src.js +312 -207
  339. package/esm/highmaps.js +1 -1
  340. package/esm/highmaps.src.js +1 -1
  341. package/esm/highstock.js +1 -1
  342. package/esm/highstock.src.js +1 -1
  343. package/esm/i18n/fr-FR.js +1 -1
  344. package/esm/i18n/fr-FR.src.js +1 -1
  345. package/esm/i18n/nb-NO.js +1 -1
  346. package/esm/i18n/nb-NO.src.js +1 -1
  347. package/esm/i18n/zh-CN.js +1 -1
  348. package/esm/i18n/zh-CN.src.js +1 -1
  349. package/esm/indicators/acceleration-bands.js +1 -1
  350. package/esm/indicators/acceleration-bands.src.js +1 -1
  351. package/esm/indicators/accumulation-distribution.js +1 -1
  352. package/esm/indicators/accumulation-distribution.src.js +1 -1
  353. package/esm/indicators/ao.js +1 -1
  354. package/esm/indicators/ao.src.js +1 -1
  355. package/esm/indicators/apo.js +1 -1
  356. package/esm/indicators/apo.src.js +1 -1
  357. package/esm/indicators/aroon-oscillator.js +1 -1
  358. package/esm/indicators/aroon-oscillator.src.js +1 -1
  359. package/esm/indicators/aroon.js +2 -2
  360. package/esm/indicators/aroon.src.js +3 -3
  361. package/esm/indicators/atr.js +1 -1
  362. package/esm/indicators/atr.src.js +1 -1
  363. package/esm/indicators/bollinger-bands.js +1 -1
  364. package/esm/indicators/bollinger-bands.src.js +1 -1
  365. package/esm/indicators/cci.js +1 -1
  366. package/esm/indicators/cci.src.js +1 -1
  367. package/esm/indicators/chaikin.js +1 -1
  368. package/esm/indicators/chaikin.src.js +1 -1
  369. package/esm/indicators/cmf.js +1 -1
  370. package/esm/indicators/cmf.src.js +1 -1
  371. package/esm/indicators/cmo.js +1 -1
  372. package/esm/indicators/cmo.src.js +1 -1
  373. package/esm/indicators/dema.js +1 -1
  374. package/esm/indicators/dema.src.js +1 -1
  375. package/esm/indicators/disparity-index.js +1 -1
  376. package/esm/indicators/disparity-index.src.js +1 -1
  377. package/esm/indicators/dmi.js +1 -1
  378. package/esm/indicators/dmi.src.js +1 -1
  379. package/esm/indicators/dpo.js +2 -2
  380. package/esm/indicators/dpo.src.js +4 -3
  381. package/esm/indicators/ichimoku-kinko-hyo.js +1 -1
  382. package/esm/indicators/ichimoku-kinko-hyo.src.js +1 -1
  383. package/esm/indicators/indicators-all.js +2 -2
  384. package/esm/indicators/indicators-all.src.js +8 -7
  385. package/esm/indicators/indicators.js +2 -2
  386. package/esm/indicators/indicators.src.js +2 -2
  387. package/esm/indicators/keltner-channels.js +1 -1
  388. package/esm/indicators/keltner-channels.src.js +1 -1
  389. package/esm/indicators/klinger.js +1 -1
  390. package/esm/indicators/klinger.src.js +1 -1
  391. package/esm/indicators/macd.js +1 -1
  392. package/esm/indicators/macd.src.js +1 -1
  393. package/esm/indicators/mfi.js +1 -1
  394. package/esm/indicators/mfi.src.js +1 -1
  395. package/esm/indicators/momentum.js +1 -1
  396. package/esm/indicators/momentum.src.js +1 -1
  397. package/esm/indicators/natr.js +1 -1
  398. package/esm/indicators/natr.src.js +1 -1
  399. package/esm/indicators/obv.js +1 -1
  400. package/esm/indicators/obv.src.js +1 -1
  401. package/esm/indicators/pivot-points.js +1 -1
  402. package/esm/indicators/pivot-points.src.js +1 -1
  403. package/esm/indicators/ppo.js +1 -1
  404. package/esm/indicators/ppo.src.js +1 -1
  405. package/esm/indicators/price-channel.js +1 -1
  406. package/esm/indicators/price-channel.src.js +1 -1
  407. package/esm/indicators/price-envelopes.js +1 -1
  408. package/esm/indicators/price-envelopes.src.js +1 -1
  409. package/esm/indicators/psar.js +1 -1
  410. package/esm/indicators/psar.src.js +1 -1
  411. package/esm/indicators/regressions.js +1 -1
  412. package/esm/indicators/regressions.src.js +1 -1
  413. package/esm/indicators/roc.js +1 -1
  414. package/esm/indicators/roc.src.js +1 -1
  415. package/esm/indicators/rsi.js +1 -1
  416. package/esm/indicators/rsi.src.js +2 -2
  417. package/esm/indicators/slow-stochastic.js +1 -1
  418. package/esm/indicators/slow-stochastic.src.js +1 -1
  419. package/esm/indicators/stochastic.js +1 -1
  420. package/esm/indicators/stochastic.src.js +1 -1
  421. package/esm/indicators/supertrend.js +1 -1
  422. package/esm/indicators/supertrend.src.js +1 -1
  423. package/esm/indicators/tema.js +1 -1
  424. package/esm/indicators/tema.src.js +1 -1
  425. package/esm/indicators/trendline.js +1 -1
  426. package/esm/indicators/trendline.src.js +1 -1
  427. package/esm/indicators/trix.js +1 -1
  428. package/esm/indicators/trix.src.js +1 -1
  429. package/esm/indicators/volume-by-price.js +1 -1
  430. package/esm/indicators/volume-by-price.src.js +1 -1
  431. package/esm/indicators/vwap.js +1 -1
  432. package/esm/indicators/vwap.src.js +1 -1
  433. package/esm/indicators/williams-r.js +1 -1
  434. package/esm/indicators/williams-r.src.js +1 -1
  435. package/esm/indicators/wma.js +1 -1
  436. package/esm/indicators/wma.src.js +1 -1
  437. package/esm/indicators/zigzag.js +1 -1
  438. package/esm/indicators/zigzag.src.js +1 -1
  439. package/esm/modules/accessibility.js +2 -2
  440. package/esm/modules/accessibility.src.js +69 -63
  441. package/esm/modules/annotations-advanced.js +3 -3
  442. package/esm/modules/annotations-advanced.src.js +25 -23
  443. package/esm/modules/annotations.js +3 -3
  444. package/esm/modules/annotations.src.js +21 -19
  445. package/esm/modules/arc-diagram.js +2 -2
  446. package/esm/modules/arc-diagram.src.js +16 -15
  447. package/esm/modules/arrow-symbols.js +1 -1
  448. package/esm/modules/arrow-symbols.src.js +1 -1
  449. package/esm/modules/boost-canvas.js +2 -2
  450. package/esm/modules/boost-canvas.src.js +29 -20
  451. package/esm/modules/boost.js +2 -2
  452. package/esm/modules/boost.src.js +28 -19
  453. package/esm/modules/broken-axis.js +2 -2
  454. package/esm/modules/broken-axis.src.js +6 -5
  455. package/esm/modules/bullet.js +2 -2
  456. package/esm/modules/bullet.src.js +17 -10
  457. package/esm/modules/coloraxis.js +2 -2
  458. package/esm/modules/coloraxis.src.js +18 -11
  459. package/esm/modules/contour.js +1 -1
  460. package/esm/modules/contour.src.js +1 -1
  461. package/esm/modules/current-date-indicator.js +1 -1
  462. package/esm/modules/current-date-indicator.src.js +1 -1
  463. package/esm/modules/cylinder.js +2 -2
  464. package/esm/modules/cylinder.src.js +9 -10
  465. package/esm/modules/data-sorting.js +1 -1
  466. package/esm/modules/data-sorting.src.js +1 -1
  467. package/esm/modules/data-tools.js +2 -2
  468. package/esm/modules/data-tools.src.js +20 -3
  469. package/esm/modules/data.js +1 -1
  470. package/esm/modules/data.src.js +1 -1
  471. package/esm/modules/datagrouping.js +2 -2
  472. package/esm/modules/datagrouping.src.js +6 -5
  473. package/esm/modules/debugger.js +1 -1
  474. package/esm/modules/debugger.src.js +1 -1
  475. package/esm/modules/dependency-wheel.js +1 -1
  476. package/esm/modules/dependency-wheel.src.js +1 -1
  477. package/esm/modules/dotplot.js +2 -2
  478. package/esm/modules/dotplot.src.js +3 -2
  479. package/esm/modules/drag-panes.js +1 -1
  480. package/esm/modules/drag-panes.src.js +1 -1
  481. package/esm/modules/draggable-points.js +2 -2
  482. package/esm/modules/draggable-points.src.js +2 -3
  483. package/esm/modules/drilldown.js +2 -2
  484. package/esm/modules/drilldown.src.js +5 -4
  485. package/esm/modules/dumbbell.js +2 -2
  486. package/esm/modules/dumbbell.src.js +37 -9
  487. package/esm/modules/export-data.js +2 -2
  488. package/esm/modules/export-data.src.js +17 -16
  489. package/esm/modules/exporting.js +2 -2
  490. package/esm/modules/exporting.src.js +7 -7
  491. package/esm/modules/flowmap.js +2 -2
  492. package/esm/modules/flowmap.src.js +21 -11
  493. package/esm/modules/full-screen.js +1 -1
  494. package/esm/modules/full-screen.src.js +1 -1
  495. package/esm/modules/funnel.js +2 -2
  496. package/esm/modules/funnel.src.js +2 -2
  497. package/esm/modules/funnel3d.js +2 -2
  498. package/esm/modules/funnel3d.src.js +14 -13
  499. package/esm/modules/gantt.js +2 -2
  500. package/esm/modules/gantt.src.js +93 -76
  501. package/esm/modules/geoheatmap.js +2 -2
  502. package/esm/modules/geoheatmap.src.js +8 -8
  503. package/esm/modules/grid-axis.js +2 -2
  504. package/esm/modules/grid-axis.src.js +4 -4
  505. package/esm/modules/heatmap.js +2 -2
  506. package/esm/modules/heatmap.src.js +22 -22
  507. package/esm/modules/heikinashi.js +1 -1
  508. package/esm/modules/heikinashi.src.js +1 -1
  509. package/esm/modules/histogram-bellcurve.js +1 -1
  510. package/esm/modules/histogram-bellcurve.src.js +15 -3
  511. package/esm/modules/hollowcandlestick.js +1 -1
  512. package/esm/modules/hollowcandlestick.src.js +1 -1
  513. package/esm/modules/item-series.js +2 -2
  514. package/esm/modules/item-series.src.js +18 -6
  515. package/esm/modules/lollipop.js +1 -1
  516. package/esm/modules/lollipop.src.js +1 -1
  517. package/esm/modules/map.js +2 -2
  518. package/esm/modules/map.src.js +65 -57
  519. package/esm/modules/marker-clusters.js +1 -1
  520. package/esm/modules/marker-clusters.src.js +1 -1
  521. package/esm/modules/mouse-wheel-zoom.js +2 -2
  522. package/esm/modules/mouse-wheel-zoom.src.js +3 -3
  523. package/esm/modules/navigator.js +2 -2
  524. package/esm/modules/navigator.src.js +47 -45
  525. package/esm/modules/networkgraph.js +2 -2
  526. package/esm/modules/networkgraph.src.js +31 -21
  527. package/esm/modules/no-data-to-display.js +1 -1
  528. package/esm/modules/no-data-to-display.src.js +1 -1
  529. package/esm/modules/non-cartesian-zoom.js +1 -1
  530. package/esm/modules/non-cartesian-zoom.src.js +1 -1
  531. package/esm/modules/offline-exporting.js +1 -1
  532. package/esm/modules/offline-exporting.src.js +1 -1
  533. package/esm/modules/organization.js +2 -2
  534. package/esm/modules/organization.src.js +3 -2
  535. package/esm/modules/parallel-coordinates.js +2 -2
  536. package/esm/modules/parallel-coordinates.src.js +2 -2
  537. package/esm/modules/pareto.js +1 -1
  538. package/esm/modules/pareto.src.js +1 -1
  539. package/esm/modules/pathfinder.js +2 -2
  540. package/esm/modules/pathfinder.src.js +7 -6
  541. package/esm/modules/pattern-fill.js +2 -2
  542. package/esm/modules/pattern-fill.src.js +7 -5
  543. package/esm/modules/pictorial.js +2 -2
  544. package/esm/modules/pictorial.src.js +10 -6
  545. package/esm/modules/pointandfigure.js +1 -1
  546. package/esm/modules/pointandfigure.src.js +1 -1
  547. package/esm/modules/price-indicator.js +2 -2
  548. package/esm/modules/price-indicator.src.js +5 -4
  549. package/esm/modules/pyramid3d.js +1 -1
  550. package/esm/modules/pyramid3d.src.js +1 -1
  551. package/esm/modules/renko.js +1 -1
  552. package/esm/modules/renko.src.js +1 -1
  553. package/esm/modules/sankey.js +2 -2
  554. package/esm/modules/sankey.src.js +34 -20
  555. package/esm/modules/series-label.js +2 -2
  556. package/esm/modules/series-label.src.js +7 -7
  557. package/esm/modules/series-on-point.js +1 -1
  558. package/esm/modules/series-on-point.src.js +1 -1
  559. package/esm/modules/solid-gauge.js +2 -2
  560. package/esm/modules/solid-gauge.src.js +2 -2
  561. package/esm/modules/sonification.js +2 -2
  562. package/esm/modules/sonification.src.js +19 -19
  563. package/esm/modules/static-scale.js +1 -1
  564. package/esm/modules/static-scale.src.js +1 -1
  565. package/esm/modules/stock-tools.js +3 -3
  566. package/esm/modules/stock-tools.src.js +15 -10
  567. package/esm/modules/stock.js +2 -2
  568. package/esm/modules/stock.src.js +90 -76
  569. package/esm/modules/streamgraph.js +1 -1
  570. package/esm/modules/streamgraph.src.js +1 -1
  571. package/esm/modules/sunburst.js +2 -2
  572. package/esm/modules/sunburst.src.js +41 -26
  573. package/esm/modules/textpath.js +1 -1
  574. package/esm/modules/textpath.src.js +1 -1
  575. package/esm/modules/tiledwebmap.js +2 -2
  576. package/esm/modules/tiledwebmap.src.js +8 -6
  577. package/esm/modules/tilemap.js +2 -2
  578. package/esm/modules/tilemap.src.js +3 -3
  579. package/esm/modules/timeline.js +2 -2
  580. package/esm/modules/timeline.src.js +5 -4
  581. package/esm/modules/treegraph.js +2 -2
  582. package/esm/modules/treegraph.src.js +17 -8
  583. package/esm/modules/treegrid.js +2 -2
  584. package/esm/modules/treegrid.src.js +28 -18
  585. package/esm/modules/treemap.js +2 -2
  586. package/esm/modules/treemap.src.js +35 -22
  587. package/esm/modules/variable-pie.js +2 -2
  588. package/esm/modules/variable-pie.src.js +6 -4
  589. package/esm/modules/variwide.js +2 -2
  590. package/esm/modules/variwide.src.js +2 -2
  591. package/esm/modules/vector.js +1 -1
  592. package/esm/modules/vector.src.js +1 -1
  593. package/esm/modules/venn.js +1 -1
  594. package/esm/modules/venn.src.js +1 -1
  595. package/esm/modules/windbarb.js +2 -2
  596. package/esm/modules/windbarb.src.js +2 -2
  597. package/esm/modules/wordcloud.js +1 -1
  598. package/esm/modules/wordcloud.src.js +1 -1
  599. package/esm/modules/xrange.js +1 -1
  600. package/esm/modules/xrange.src.js +1 -1
  601. package/esm/standalone-navigator.js +4 -4
  602. package/esm/standalone-navigator.src.js +355 -249
  603. package/esm/themes/adaptive.js +1 -1
  604. package/esm/themes/adaptive.src.js +1 -1
  605. package/esm/themes/avocado.js +1 -1
  606. package/esm/themes/avocado.src.js +1 -1
  607. package/esm/themes/dark-unica.js +1 -1
  608. package/esm/themes/dark-unica.src.js +1 -1
  609. package/esm/themes/grid-light.js +1 -1
  610. package/esm/themes/grid-light.src.js +1 -1
  611. package/esm/themes/high-contrast.js +1 -1
  612. package/esm/themes/high-contrast.src.js +1 -1
  613. package/esm/themes/sand-signika.js +1 -1
  614. package/esm/themes/sand-signika.src.js +1 -1
  615. package/esm/themes/sunset.js +1 -1
  616. package/esm/themes/sunset.src.js +1 -1
  617. package/highcharts-3d.js +2 -2
  618. package/highcharts-3d.src.js +40 -32
  619. package/highcharts-autoload.d.ts +8 -2
  620. package/highcharts-autoload.js +4 -4
  621. package/highcharts-autoload.src.d.ts +8 -2
  622. package/highcharts-autoload.src.js +313 -208
  623. package/highcharts-gantt.js +4 -4
  624. package/highcharts-gantt.src.js +404 -283
  625. package/highcharts-more.js +2 -2
  626. package/highcharts-more.src.js +90 -56
  627. package/highcharts.d.ts +61 -4
  628. package/highcharts.js +4 -4
  629. package/highcharts.src.d.ts +61 -4
  630. package/highcharts.src.js +312 -207
  631. package/highmaps.js +4 -4
  632. package/highmaps.src.js +390 -272
  633. package/highstock.js +4 -4
  634. package/highstock.src.js +413 -293
  635. package/i18n/fr-FR.js +1 -1
  636. package/i18n/fr-FR.src.js +1 -1
  637. package/i18n/nb-NO.js +1 -1
  638. package/i18n/nb-NO.src.js +1 -1
  639. package/i18n/zh-CN.js +1 -1
  640. package/i18n/zh-CN.src.js +1 -1
  641. package/indicators/acceleration-bands.js +1 -1
  642. package/indicators/acceleration-bands.src.js +1 -1
  643. package/indicators/accumulation-distribution.js +1 -1
  644. package/indicators/accumulation-distribution.src.js +1 -1
  645. package/indicators/ao.js +1 -1
  646. package/indicators/ao.src.js +1 -1
  647. package/indicators/apo.js +1 -1
  648. package/indicators/apo.src.js +1 -1
  649. package/indicators/aroon-oscillator.js +1 -1
  650. package/indicators/aroon-oscillator.src.js +1 -1
  651. package/indicators/aroon.js +2 -2
  652. package/indicators/aroon.src.js +3 -3
  653. package/indicators/atr.js +1 -1
  654. package/indicators/atr.src.js +1 -1
  655. package/indicators/bollinger-bands.js +1 -1
  656. package/indicators/bollinger-bands.src.js +1 -1
  657. package/indicators/cci.js +1 -1
  658. package/indicators/cci.src.js +1 -1
  659. package/indicators/chaikin.js +1 -1
  660. package/indicators/chaikin.src.js +1 -1
  661. package/indicators/cmf.js +1 -1
  662. package/indicators/cmf.src.js +1 -1
  663. package/indicators/cmo.js +1 -1
  664. package/indicators/cmo.src.js +1 -1
  665. package/indicators/dema.js +1 -1
  666. package/indicators/dema.src.js +1 -1
  667. package/indicators/disparity-index.js +1 -1
  668. package/indicators/disparity-index.src.js +1 -1
  669. package/indicators/dmi.js +1 -1
  670. package/indicators/dmi.src.js +1 -1
  671. package/indicators/dpo.js +2 -2
  672. package/indicators/dpo.src.js +4 -3
  673. package/indicators/ichimoku-kinko-hyo.js +1 -1
  674. package/indicators/ichimoku-kinko-hyo.src.js +1 -1
  675. package/indicators/indicators-all.js +2 -2
  676. package/indicators/indicators-all.src.js +8 -7
  677. package/indicators/indicators.js +2 -2
  678. package/indicators/indicators.src.js +2 -2
  679. package/indicators/keltner-channels.js +1 -1
  680. package/indicators/keltner-channels.src.js +1 -1
  681. package/indicators/klinger.js +1 -1
  682. package/indicators/klinger.src.js +1 -1
  683. package/indicators/macd.js +1 -1
  684. package/indicators/macd.src.js +1 -1
  685. package/indicators/mfi.js +1 -1
  686. package/indicators/mfi.src.js +1 -1
  687. package/indicators/momentum.js +1 -1
  688. package/indicators/momentum.src.js +1 -1
  689. package/indicators/natr.js +1 -1
  690. package/indicators/natr.src.js +1 -1
  691. package/indicators/obv.js +1 -1
  692. package/indicators/obv.src.js +1 -1
  693. package/indicators/pivot-points.js +1 -1
  694. package/indicators/pivot-points.src.js +1 -1
  695. package/indicators/ppo.js +1 -1
  696. package/indicators/ppo.src.js +1 -1
  697. package/indicators/price-channel.js +1 -1
  698. package/indicators/price-channel.src.js +1 -1
  699. package/indicators/price-envelopes.js +1 -1
  700. package/indicators/price-envelopes.src.js +1 -1
  701. package/indicators/psar.js +1 -1
  702. package/indicators/psar.src.js +1 -1
  703. package/indicators/regressions.js +1 -1
  704. package/indicators/regressions.src.js +1 -1
  705. package/indicators/roc.js +1 -1
  706. package/indicators/roc.src.js +1 -1
  707. package/indicators/rsi.js +1 -1
  708. package/indicators/rsi.src.js +2 -2
  709. package/indicators/slow-stochastic.js +1 -1
  710. package/indicators/slow-stochastic.src.js +1 -1
  711. package/indicators/stochastic.js +1 -1
  712. package/indicators/stochastic.src.js +1 -1
  713. package/indicators/supertrend.js +1 -1
  714. package/indicators/supertrend.src.js +1 -1
  715. package/indicators/tema.js +1 -1
  716. package/indicators/tema.src.js +1 -1
  717. package/indicators/trendline.js +1 -1
  718. package/indicators/trendline.src.js +1 -1
  719. package/indicators/trix.js +1 -1
  720. package/indicators/trix.src.js +1 -1
  721. package/indicators/volume-by-price.js +1 -1
  722. package/indicators/volume-by-price.src.js +1 -1
  723. package/indicators/vwap.js +1 -1
  724. package/indicators/vwap.src.js +1 -1
  725. package/indicators/williams-r.js +1 -1
  726. package/indicators/williams-r.src.js +1 -1
  727. package/indicators/wma.js +1 -1
  728. package/indicators/wma.src.js +1 -1
  729. package/indicators/zigzag.js +1 -1
  730. package/indicators/zigzag.src.js +1 -1
  731. package/modules/accessibility.js +2 -2
  732. package/modules/accessibility.src.js +69 -63
  733. package/modules/annotations-advanced.js +3 -3
  734. package/modules/annotations-advanced.src.js +25 -23
  735. package/modules/annotations.js +3 -3
  736. package/modules/annotations.src.js +21 -19
  737. package/modules/arc-diagram.js +2 -2
  738. package/modules/arc-diagram.src.js +16 -15
  739. package/modules/arrow-symbols.js +1 -1
  740. package/modules/arrow-symbols.src.js +1 -1
  741. package/modules/boost-canvas.js +2 -2
  742. package/modules/boost-canvas.src.js +29 -20
  743. package/modules/boost.js +2 -2
  744. package/modules/boost.src.js +28 -19
  745. package/modules/broken-axis.js +2 -2
  746. package/modules/broken-axis.src.js +6 -5
  747. package/modules/bullet.js +2 -2
  748. package/modules/bullet.src.js +17 -10
  749. package/modules/coloraxis.js +2 -2
  750. package/modules/coloraxis.src.js +18 -11
  751. package/modules/contour.js +4 -4
  752. package/modules/contour.src.js +19 -12
  753. package/modules/current-date-indicator.js +1 -1
  754. package/modules/current-date-indicator.src.js +1 -1
  755. package/modules/cylinder.js +2 -2
  756. package/modules/cylinder.src.js +9 -10
  757. package/modules/data-sorting.js +1 -1
  758. package/modules/data-sorting.src.js +1 -1
  759. package/modules/data-tools.js +2 -2
  760. package/modules/data-tools.src.js +20 -3
  761. package/modules/data.js +1 -1
  762. package/modules/data.src.js +1 -1
  763. package/modules/datagrouping.js +2 -2
  764. package/modules/datagrouping.src.js +6 -5
  765. package/modules/debugger.js +1 -1
  766. package/modules/debugger.src.js +1 -1
  767. package/modules/dependency-wheel.js +1 -1
  768. package/modules/dependency-wheel.src.js +1 -1
  769. package/modules/dotplot.js +2 -2
  770. package/modules/dotplot.src.js +3 -2
  771. package/modules/drag-panes.js +1 -1
  772. package/modules/drag-panes.src.js +1 -1
  773. package/modules/draggable-points.js +2 -2
  774. package/modules/draggable-points.src.js +2 -3
  775. package/modules/drilldown.js +2 -2
  776. package/modules/drilldown.src.js +5 -4
  777. package/modules/dumbbell.js +2 -2
  778. package/modules/dumbbell.src.js +37 -9
  779. package/modules/export-data.js +2 -2
  780. package/modules/export-data.src.js +17 -16
  781. package/modules/exporting.js +2 -2
  782. package/modules/exporting.src.js +7 -7
  783. package/modules/flowmap.js +2 -2
  784. package/modules/flowmap.src.js +21 -11
  785. package/modules/full-screen.js +1 -1
  786. package/modules/full-screen.src.js +1 -1
  787. package/modules/funnel.js +2 -2
  788. package/modules/funnel.src.js +2 -2
  789. package/modules/funnel3d.js +2 -2
  790. package/modules/funnel3d.src.js +14 -13
  791. package/modules/gantt.js +6 -6
  792. package/modules/gantt.src.js +96 -79
  793. package/modules/geoheatmap.d.ts +0 -12
  794. package/modules/geoheatmap.js +2 -2
  795. package/modules/geoheatmap.src.d.ts +0 -12
  796. package/modules/geoheatmap.src.js +8 -8
  797. package/modules/grid-axis.js +2 -2
  798. package/modules/grid-axis.src.js +4 -4
  799. package/modules/heatmap.d.ts +0 -12
  800. package/modules/heatmap.js +4 -4
  801. package/modules/heatmap.src.d.ts +0 -12
  802. package/modules/heatmap.src.js +40 -33
  803. package/modules/heikinashi.js +1 -1
  804. package/modules/heikinashi.src.js +1 -1
  805. package/modules/histogram-bellcurve.js +1 -1
  806. package/modules/histogram-bellcurve.src.js +15 -3
  807. package/modules/hollowcandlestick.js +1 -1
  808. package/modules/hollowcandlestick.src.js +1 -1
  809. package/modules/item-series.js +2 -2
  810. package/modules/item-series.src.js +18 -6
  811. package/modules/lollipop.js +1 -1
  812. package/modules/lollipop.src.js +1 -1
  813. package/modules/map.d.ts +0 -12
  814. package/modules/map.js +4 -4
  815. package/modules/map.src.d.ts +0 -12
  816. package/modules/map.src.js +83 -68
  817. package/modules/marker-clusters.js +1 -1
  818. package/modules/marker-clusters.src.js +1 -1
  819. package/modules/mouse-wheel-zoom.js +2 -2
  820. package/modules/mouse-wheel-zoom.src.js +3 -3
  821. package/modules/navigator.js +2 -2
  822. package/modules/navigator.src.js +47 -45
  823. package/modules/networkgraph.js +2 -2
  824. package/modules/networkgraph.src.js +31 -21
  825. package/modules/no-data-to-display.js +1 -1
  826. package/modules/no-data-to-display.src.js +1 -1
  827. package/modules/non-cartesian-zoom.js +1 -1
  828. package/modules/non-cartesian-zoom.src.js +1 -1
  829. package/modules/offline-exporting.js +1 -1
  830. package/modules/offline-exporting.src.js +1 -1
  831. package/modules/organization.js +2 -2
  832. package/modules/organization.src.js +3 -2
  833. package/modules/parallel-coordinates.js +2 -2
  834. package/modules/parallel-coordinates.src.js +2 -2
  835. package/modules/pareto.js +1 -1
  836. package/modules/pareto.src.js +1 -1
  837. package/modules/pathfinder.js +2 -2
  838. package/modules/pathfinder.src.js +7 -6
  839. package/modules/pattern-fill.js +2 -2
  840. package/modules/pattern-fill.src.js +7 -5
  841. package/modules/pictorial.js +2 -2
  842. package/modules/pictorial.src.js +10 -6
  843. package/modules/pointandfigure.js +1 -1
  844. package/modules/pointandfigure.src.js +1 -1
  845. package/modules/price-indicator.js +2 -2
  846. package/modules/price-indicator.src.js +5 -4
  847. package/modules/pyramid3d.js +1 -1
  848. package/modules/pyramid3d.src.js +1 -1
  849. package/modules/renko.js +1 -1
  850. package/modules/renko.src.js +1 -1
  851. package/modules/sankey.js +2 -2
  852. package/modules/sankey.src.js +34 -20
  853. package/modules/series-label.js +2 -2
  854. package/modules/series-label.src.js +7 -7
  855. package/modules/series-on-point.js +1 -1
  856. package/modules/series-on-point.src.js +1 -1
  857. package/modules/solid-gauge.js +2 -2
  858. package/modules/solid-gauge.src.js +2 -2
  859. package/modules/sonification.js +2 -2
  860. package/modules/sonification.src.js +19 -19
  861. package/modules/static-scale.js +1 -1
  862. package/modules/static-scale.src.js +1 -1
  863. package/modules/stock-tools.js +3 -3
  864. package/modules/stock-tools.src.js +15 -10
  865. package/modules/stock.js +6 -6
  866. package/modules/stock.src.js +105 -89
  867. package/modules/streamgraph.js +1 -1
  868. package/modules/streamgraph.src.js +1 -1
  869. package/modules/sunburst.js +2 -2
  870. package/modules/sunburst.src.js +41 -26
  871. package/modules/textpath.js +1 -1
  872. package/modules/textpath.src.js +1 -1
  873. package/modules/tiledwebmap.js +2 -2
  874. package/modules/tiledwebmap.src.js +8 -6
  875. package/modules/tilemap.js +2 -2
  876. package/modules/tilemap.src.js +3 -3
  877. package/modules/timeline.js +2 -2
  878. package/modules/timeline.src.js +5 -4
  879. package/modules/treegraph.js +2 -2
  880. package/modules/treegraph.src.js +17 -8
  881. package/modules/treegrid.js +2 -2
  882. package/modules/treegrid.src.js +28 -18
  883. package/modules/treemap.js +2 -2
  884. package/modules/treemap.src.js +35 -22
  885. package/modules/variable-pie.js +2 -2
  886. package/modules/variable-pie.src.js +6 -4
  887. package/modules/variwide.js +2 -2
  888. package/modules/variwide.src.js +2 -2
  889. package/modules/vector.js +1 -1
  890. package/modules/vector.src.js +1 -1
  891. package/modules/venn.js +1 -1
  892. package/modules/venn.src.js +1 -1
  893. package/modules/windbarb.js +2 -2
  894. package/modules/windbarb.src.js +2 -2
  895. package/modules/wordcloud.js +1 -1
  896. package/modules/wordcloud.src.js +1 -1
  897. package/modules/xrange.js +1 -1
  898. package/modules/xrange.src.js +1 -1
  899. package/package.json +2 -3
  900. package/standalone-navigator.js +4 -4
  901. package/standalone-navigator.src.js +355 -249
  902. package/themes/adaptive.js +1 -1
  903. package/themes/adaptive.src.js +1 -1
  904. package/themes/avocado.js +1 -1
  905. package/themes/avocado.src.js +1 -1
  906. package/themes/dark-unica.js +1 -1
  907. package/themes/dark-unica.src.js +1 -1
  908. package/themes/grid-light.js +1 -1
  909. package/themes/grid-light.src.js +1 -1
  910. package/themes/high-contrast.js +1 -1
  911. package/themes/high-contrast.src.js +1 -1
  912. package/themes/sand-signika.js +1 -1
  913. package/themes/sand-signika.src.js +1 -1
  914. package/themes/sunset.js +1 -1
  915. package/themes/sunset.src.js +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Highstock JS v13.0.1 (2026-08-17)
2
+ * Highstock JS v13.0.2 (2026-08-27)
3
3
  * @module highcharts/indicators/indicators-all
4
4
  * @requires highcharts
5
5
  * @requires highcharts/modules/stock
@@ -11,4 +11,4 @@
11
11
  *
12
12
  * A commercial license may be required depending on use,
13
13
  * see www.highcharts.com/license
14
- */import*as e from"../highcharts.js";import*as t from"../modules/datagrouping.js";let s={};s.n=e=>{let t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{if(Array.isArray(t))for(var a=0;a<t.length;){var o=t[a++],i=t[a++];s.o(e,o)?0===i&&a++:0===i?Object.defineProperty(e,o,{enumerable:!0,value:t[a++]}):Object.defineProperty(e,o,{enumerable:!0,get:i})}else for(var o in t)s.o(t,o)&&!s.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);let a=e.default;var o,i=s.n(a);let r=e.default.Chart;var n=s.n(r);let{setLength:l,splice:p}={convertToNumber:function(e,t){switch(typeof e){case"boolean":return+!!e;case"number":return isNaN(e)&&!t?null:e;default:return isNaN(e=parseFloat(`${e??""}`))&&!t?null:e}},setLength:function(e,t,s){return Array.isArray(e)?(e.length=t,e):e[s?"subarray":"slice"](0,t)},splice:function(e,t,s,a,o=[]){if(Array.isArray(e))return Array.isArray(o)||(o=Array.from(o)),{removed:e.splice(t,s,...o),array:e};let i=Object.getPrototypeOf(e).constructor,r=e[a?"subarray":"slice"](t,t+s),n=new i(e.length-s+o.length);return n.set(e.subarray(0,t),0),n.set(o,t),n.set(e.subarray(t+s),t+o.length),{removed:r,array:n}}},u=class{constructor(e={}){this.isDataTable=!0,this.autoId=!e.id,this.columns={},this.id=e.id||(0,a.uniqueKey)(),this.rowCount=0,this.versionTag=(0,a.uniqueKey)();let t=0;(0,a.objectEach)(e.columns||{},(e,s)=>{this.columns[s]=e.slice(),t=Math.max(t,e.length)}),this.applyRowCount(t)}applyRowCount(e){this.rowCount=e,(0,a.objectEach)(this.columns,(t,s)=>{t.length!==e&&(this.columns[s]=l(t,e))})}deleteRows(e,t=1){if(t>0&&e<this.rowCount){let s=0;(0,a.objectEach)(this.columns,(a,o)=>{this.columns[o]=p(a,e,t).array,s=a.length}),this.rowCount=s}(0,a.fireEvent)(this,"afterDeleteRows",{rowIndex:e,rowCount:t}),this.versionTag=(0,a.uniqueKey)()}getColumn(e,t){return this.columns[e]}getColumns(e,t){return(e||Object.keys(this.columns)).reduce((e,t)=>(e[t]=this.columns[t],e),{})}getRowObject(e,t){let s={},a=this.columns;for(let o of(t??(t=Object.keys(this.columns)),t))s[o]=a[o]?.[e];return s}setColumn(e,t=[],s=0,a){this.setColumns({[e]:t},s,a)}setColumns(e,t,s){let o=this.rowCount;(0,a.objectEach)(e,(e,t)=>{this.columns[t]=e.slice(),o=e.length}),this.applyRowCount(o),s?.silent||((0,a.fireEvent)(this,"afterSetColumns"),this.versionTag=(0,a.uniqueKey)())}setRow(e,t=this.rowCount,s,o){var i;let{columns:r}=this,n=s?this.rowCount+1:t+1,l=Object.keys(e);if(o?.addColumns!==!1)for(let e=0,t=l.length;e<t;e++)r[i=l[e]]||(r[i]=Array(this.rowCount));(0,a.objectEach)(r,(a,o)=>{a&&(s?a=p(a,t,0,!0,[e[o]]).array:a[t]=o in e?e[o]:a[t],r[o]=a)}),this.applyRowCount(Math.max(n,this.rowCount)),o?.silent||((0,a.fireEvent)(this,"afterSetRows",{rowIndex:t}),this.versionTag=(0,a.uniqueKey)())}getModified(){return this.modified||this}},h=e.default.SeriesRegistry;var d=s.n(h);let{line:c}=d().seriesTypes,m=(e,t)=>{let s=[],a=e.pointArrayMap,o=t&&e.dataTable.getModified()||e.dataTable;if(!a)return e.getColumn("y",t);let i=a.map(s=>e.getColumn(s,t));for(let e=0;e<o.rowCount;e++){let t=a.map((t,s)=>i[s]?.[e]||0);s.push(t)}return s};class g extends c{destroy(){this.dataEventsToUnbind.forEach(function(e){e()}),super.destroy.apply(this,arguments)}getName(){let e=[],t=this.name;return t||((this.nameComponents||[]).forEach(function(t,s){e.push(this.options.params[t]+(0,a.pick)(this.nameSuffixes[s],""))},this),t=(this.nameBase||this.type.toUpperCase())+(this.nameComponents?" ("+e.join(", ")+")":"")),t}getValues(e,t){let s=t.period,o=e.xData||[],i=e.yData,r=i.length,n=[],l=[],p=[],u,h=-1,d=0,c,m=0;if(!(o.length<s)){for((0,a.isArray)(i[0])&&(h=t.index?t.index:0);d<s-1;)m+=h<0?i[d]:i[d][h],d++;for(u=d;u<r;u++)m+=h<0?i[u]:i[u][h],c=[o[u],m/s],n.push(c),l.push(c[0]),p.push(c[1]),m-=h<0?i[u-d]:i[u-d][h];return{values:n,xData:l,yData:p}}}init(e,t){let s=this;super.init.call(s,e,t);let o=(0,a.addEvent)(n(),"afterLinkSeries",function({isUpdating:t}){if(t)return;let o=!!s.dataEventsToUnbind.length;if(!s.linkedParent)return(0,a.error)("Series "+s.options.linkedTo+" not found! Check `linkedTo`.",!1,e);if(!o&&(s.dataEventsToUnbind.push((0,a.addEvent)(s.linkedParent,"updatedData",function(){s.recalculateValues()})),s.calculateOn.xAxis&&s.dataEventsToUnbind.push((0,a.addEvent)(s.linkedParent.xAxis,s.calculateOn.xAxis,function(){s.recalculateValues()}))),"init"===s.calculateOn.chart)s.closestPointRange||s.recalculateValues();else if(!o){let e=(0,a.addEvent)(s.chart,s.calculateOn.chart,function(){s.recalculateValues(),e()})}},{order:0});s.dataEventsToUnbind=[],s.eventsToUnbind.push(o)}recalculateValues(){let e=this.dataTable,t=this.dataTable.rowCount,s=!0,o,i,r=this.linkedParent.yData,n=this.linkedParent.processedYData;this.linkedParent.xData=this.linkedParent.getColumn("x"),this.linkedParent.yData=m(this.linkedParent),this.linkedParent.processedYData=m(this.linkedParent,!0);let l=this.linkedParent.options&&this.linkedParent.dataTable.rowCount&&this.getValues(this.linkedParent,this.options.params)||{values:[],xData:[],yData:[]};l.xData.length=l.values.length,delete this.linkedParent.xData,this.linkedParent.yData=r,this.linkedParent.processedYData=n;let p=this.pointArrayMap||["y"],h={};if(l.yData.forEach(e=>{p.forEach((t,s)=>{let o=h[t]||[];o.push((0,a.isArray)(e)?e[s]:e),h[t]||(h[t]=o)})}),t&&!this.hasGroupedData&&this.visible&&this.points)if(this.cropped){this.xAxis&&(o=this.xAxis.min,i=this.xAxis.max);let t=this.cropData(e,o,i);this.setData(t.modified,!1)}else(this.updateAllPoints||l.xData.length!==t-1&&l.xData.length!==t+1)&&(s=!1,this.setData(new u({columns:{x:l.xData,...h}}),!1));s&&(h.x=l.xData,l.values.reduce((e,t,s)=>(Object.keys(t).forEach(a=>{e[a]||(e[a]=[]),e[a][s]=t[a]}),e),h),e.setColumns(h),delete this.xColumn,delete this.xColumnIsNumbers),this.calculateOn.xAxis&&this.getColumn("x",!0).length&&(this.isDirty=!0,this.redraw()),this.isDirtyData=!!this.linkedSeries.length,(0,a.fireEvent)(this,"updatedData")}processData(){let e=this.options.compareToMain,t=this.linkedParent;super.processData.apply(this,arguments),this.dataModify&&t&&t.dataModify&&t.dataModify.compareValue&&e&&(this.dataModify.compareValue=t.dataModify.compareValue)}}g.defaultOptions=(0,a.merge)(c.defaultOptions,{name:void 0,tooltip:{valueDecimals:4},linkedTo:void 0,compareToMain:!1,params:{index:3,period:14}}),(0,a.extend)(g.prototype,{calculateOn:{chart:"init"},hasDerivedData:!0,nameComponents:["period"],nameSuffixes:[],useCommonDataGrouping:!0}),d().registerSeriesType("sma",g);let{sma:y}=d().seriesTypes;class f extends y{accumulatePeriodPoints(e,t,s){let a=0,o=0;for(;o<e;)a+=t<0?s[o]:s[o][t],o++;return a}calculateEma(e,t,s,o,i,r,n){let l=e[s-1],p=r<0?t[s-1]:t[s-1][r];return[l,void 0===i?n:(0,a.correctFloat)(p*o+i*(1-o))]}getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=2/(s+1),l=[],p=[],u=[],h,d,c,m=-1,g=0;if(!(r<s)){for((0,a.isArray)(i[0])&&(m=t.index?t.index:0),g=this.accumulatePeriodPoints(s,m,i)/s,c=s;c<r+1;c++)d=this.calculateEma(o,i,c,n,h,m,g),l.push(d),p.push(d[0]),u.push(d[1]),h=d[1];return{values:l,xData:p,yData:u}}}}f.defaultOptions=(0,a.merge)(y.defaultOptions,{params:{index:3,period:9}}),d().registerSeriesType("ema",f);let{sma:x}=d().seriesTypes;class v extends x{static populateAverage(e,t,s,a,o){let i=t[a][1],r=t[a][2],n=t[a][3],l=s[a],p=n===i&&n===r||i===r?0:(2*n-r-i)/(i-r)*l;return[e[a],p]}getValues(e,t){let s,o,i,r=t.period,n=e.xData,l=e.yData,p=t.volumeSeriesID,u=e.chart.get(p),h=u?.getColumn("y"),d=l?l.length:0,c=[],m=[],g=[];if(!(n.length<=r)||!d||4===l[0].length){if(!u)return void(0,a.error)("Series "+p+" not found! Check `volumeSeriesID`.",!0,e.chart);for(o=r;o<d;o++)s=c.length,i=v.populateAverage(n,l,h,o,r),s>0&&(i[1]+=c[s-1][1]),c.push(i),m.push(i[0]),g.push(i[1]);return{values:c,xData:m,yData:g}}}}v.defaultOptions=(0,a.merge)(x.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume"}}),(0,a.extend)(v.prototype,{nameComponents:!1,nameBase:"Accumulation/Distribution"}),d().registerSeriesType("ad",v);let{noop:D}=i(),{column:{prototype:A},sma:b}=d().seriesTypes;class S extends b{drawGraph(){let e,t=this.options,s=this.points,a=this.userOptions.color,o=t.greaterBarColor,i=t.lowerBarColor,r=s[0];if(!a&&r)for(e=1,r.color=o;e<s.length;e++)s[e].y>s[e-1].y?s[e].color=o:s[e].y<s[e-1].y?s[e].color=i:s[e].color=s[e-1].color}getValues(e){let t=e.xData||[],s=e.yData||[],o=s.length,i=[],r=[],n=[],l,p,u,h,d,c,m,g,y=0,f=0;if(!(t.length<=34)&&(0,a.isArray)(s[0])&&4===s[0].length){for(m=0;m<33;m++)c=(s[m][1]+s[m][2])/2,m>=29&&(f=(0,a.correctFloat)(f+c)),y=(0,a.correctFloat)(y+c);for(g=33;g<o;g++)c=(s[g][1]+s[g][2])/2,f=(0,a.correctFloat)(f+c),y=(0,a.correctFloat)(y+c),l=f/5,p=y/34,u=(0,a.correctFloat)(l-p),i.push([t[g],u]),r.push(t[g]),n.push(u),h=g+1-5,d=g+1-34,f=(0,a.correctFloat)(f-(s[h][1]+s[h][2])/2),y=(0,a.correctFloat)(y-(s[d][1]+s[d][2])/2);return{values:i,xData:r,yData:n}}}}S.defaultOptions=(0,a.merge)(b.defaultOptions,{params:{index:void 0,period:void 0},greaterBarColor:"var(--highcharts-positive-color)",lowerBarColor:"var(--highcharts-negative-color)",threshold:0,groupPadding:.2,pointPadding:.2,crisp:!1,states:{hover:{halo:{size:0}}}}),(0,a.extend)(S.prototype,{nameBase:"AO",nameComponents:void 0,markerAttribs:D,getColumnMetrics:A.getColumnMetrics,crispCol:A.crispCol,translate:A.translate,drawPoints:A.drawPoints}),d().registerSeriesType("ao",S);let{sma:{prototype:C}}=d().seriesTypes;!function(e){let t=["bottomLine"],s=["top","bottom"],o=["top"];function i(e){return"plot"+e.charAt(0).toUpperCase()+e.slice(1)}function r(e,t){let s=[];return(e.pointArrayMap||[]).forEach(e=>{e!==t&&s.push(i(e))}),s}function n(){let e=this,t=e.pointValKey,s=e.linesApiNames,o=e.areaLinesNames,n=e.points,l=e.options,p=e.graph,u={options:{gapSize:l.gapSize}},h=[],d=r(e,t),c=n.length,m;if(d.forEach((e,t)=>{for(h[t]=[];c--;)m=n[c],h[t].push({x:m.x,plotX:m.plotX,plotY:m[e],isNull:!(0,a.defined)(m[e])});c=n.length}),e.userOptions.fillColor&&o.length){let t=h[d.indexOf(i(o[0]))],s=1===o.length?n:h[d.indexOf(i(o[1]))],r=e.color;e.points=s,e.nextPoints=t,e.color=e.userOptions.fillColor,e.options=(0,a.merge)(n,u),e.graph=e.area,e.fillGraph=!0,C.drawGraph.call(e),e.area=e.graph,delete e.nextPoints,delete e.fillGraph,e.color=r}s.forEach((t,s)=>{h[s]?(e.points=h[s],l[t]?e.options=(0,a.merge)(l[t].styles,u):(0,a.error)('Error: "There is no '+t+' in DOCS options declared. Check if linesApiNames are consistent with your DOCS line names."'),e.graph=e["graph"+t],C.drawGraph.call(e),e["graph"+t]=e.graph):(0,a.error)('Error: "'+t+" doesn't have equivalent in pointArrayMap. To many elements in linesApiNames relative to pointArrayMap.\"")}),e.points=n,e.options=l,e.graph=p,C.drawGraph.call(e)}function l(e){let t,s=[],a=[];if(e=e||this.points,this.fillGraph&&this.nextPoints){if((t=C.getGraphPath.call(this,this.nextPoints))&&t.length){t[0][0]="L",s=C.getGraphPath.call(this,e),a=t.slice(0,s.length);for(let e=a.length-1;e>=0;e--)s.push(a[e])}}else s=C.getGraphPath.apply(this,arguments);return s}function p(e){let t=[];return(this.pointArrayMap||[]).forEach(s=>{t.push(e[s])}),t}function u(){let e=this.pointArrayMap,t=[],s;t=r(this),C.translate.apply(this,arguments),this.points.forEach(a=>{e.forEach((e,o)=>{s=a[e],this.dataModify&&(s=this.dataModify.modifyValue(s)),null!==s&&(a[t[o]]=this.yAxis.toPixels(s,!0))})})}e.compose=function(e){let a=e.prototype;return a.linesApiNames=a.linesApiNames||t.slice(),a.pointArrayMap=a.pointArrayMap||s.slice(),a.pointValKey=a.pointValKey||"top",a.areaLinesNames=a.areaLinesNames||o.slice(),a.drawGraph=n,a.getGraphPath=l,a.toYData=p,a.translate=u,e}}(o||(o={}));let T=o,{sma:P}=d().seriesTypes;function M(e,t){let s=e[0],a=0,o;for(o=1;o<e.length;o++)("max"===t&&e[o]>=s||"min"===t&&e[o]<=s)&&(s=e[o],a=o);return a}class V extends P{getValues(e,t){let s,o,i,r,n,l=t.period,p=e.xData,u=e.yData,h=u?u.length:0,d=[],c=[],m=[];for(r=l-1;r<h;r++)i=M((n=u.slice(r-l+1,r+2)).map(function(e){return(0,a.pick)(e[2],e)}),"min"),s=M(n.map(function(e){return(0,a.pick)(e[1],e)}),"max")/l*100,o=i/l*100,p[r+1]&&(d.push([p[r+1],s,o]),c.push(p[r+1]),m.push([s,o]));return{values:d,xData:c,yData:m}}}V.defaultOptions=(0,a.merge)(P.defaultOptions,{params:{index:void 0,period:25},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Aroon Up: {point.y}<br/>Aroon Down: {point.aroonDown}<br/>'},aroonDown:{styles:{lineWidth:1,lineColor:void 0}},dataGrouping:{approximation:"averages"}}),(0,a.extend)(V.prototype,{areaLinesNames:[],linesApiNames:["aroonDown"],nameBase:"Aroon",pointArrayMap:["y","aroonDown"],pointValKey:"y"}),T.compose(V),d().registerSeriesType("aroon",V);let{aroon:O}=d().seriesTypes;class k extends O{getValues(e,t){let s,a,o=[],i=[],r=[],n=super.getValues.call(this,e,t);for(a=0;a<n.yData.length;a++)s=n.yData[a][0]-n.yData[a][1],o.push([n.xData[a],s]),i.push(n.xData[a]),r.push(s);return{values:o,xData:i,yData:r}}}k.defaultOptions=(0,a.merge)(O.defaultOptions,{tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b>: {point.y}'}}),(0,a.extend)(k.prototype,{nameBase:"Aroon Oscillator",linesApiNames:[],pointArrayMap:["y"],pointValKey:"y"}),T.compose(O),d().registerSeriesType("aroonoscillator",k);let{sma:L}=d().seriesTypes;function w(e,t){return Math.max(e[1]-e[2],void 0===t?0:Math.abs(e[1]-t[3]),void 0===t?0:Math.abs(e[2]-t[3]))}class E extends L{getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=[[o[0],i[0]]],l=[],p=[],u=[],h,d,c=0,m=1,g=0;if(!(o.length<=s)&&(0,a.isArray)(i[0])&&4===i[0].length){for(d=1;d<=r;d++){var y,f,x,v,D;!function(e,t,s,a){let o=t[a],i=s[a];e.push([o,i])}(n,o,i,d),s<m?(c=(y=o,f=i,x=d,v=s,D=c,h=[y[x-1],(D*(v-1)+w(f[x-1],f[x-2]))/v])[1],l.push(h),p.push(h[0]),u.push(h[1])):(s===m?(c=g/(d-1),l.push([o[d-1],c]),p.push(o[d-1]),u.push(c)):g+=w(i[d-1],i[d-2]),m++)}return{values:l,xData:p,yData:u}}}}E.defaultOptions=(0,a.merge)(L.defaultOptions,{params:{index:void 0}}),d().registerSeriesType("atr",E);let{sma:I}=d().seriesTypes;class N extends I{init(){d().seriesTypes.sma.prototype.init.apply(this,arguments),this.options=(0,a.merge)({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,t){let s,o,i,r,n,l,p,u,h,c=t.period,m=t.standardDeviation,g=[],y=[],f=e.xData,x=e.yData,v=x?x.length:0,D=[];if(f.length<c)return;let A=(0,a.isArray)(x[0]);for(h=c;h<=v;h++)n=f.slice(h-c,h),l=x.slice(h-c,h),r=(u=d().seriesTypes.sma.prototype.getValues.call(this,{xData:n,yData:l},t)).xData[0],s=u.yData[0],p=function(e,t,s,a){let o=e.length,i=0,r,n=0;for(;i<o;i++)n+=(r=(s?e[i][t]:e[i])-a)*r;return Math.sqrt(n/=o-1)}(l,t.index,A,s),o=s+m*p,i=s-m*p,D.push([r,o,s,i]),g.push(r),y.push([o,s,i]);return{values:D,xData:g,yData:y}}}N.defaultOptions=(0,a.merge)(I.defaultOptions,{params:{period:20,standardDeviation:2,index:3},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1,lineColor:void 0}},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Top: {point.top}<br/>Middle: {point.middle}<br/>Bottom: {point.bottom}<br/>'},marker:{enabled:!1},dataGrouping:{approximation:"averages"}}),(0,a.extend)(N.prototype,{areaLinesNames:["top","bottom"],linesApiNames:["topLine","bottomLine"],nameComponents:["period","standardDeviation"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),T.compose(N),d().registerSeriesType("bb",N);let{sma:F}=d().seriesTypes;class B extends F{getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=[],l=[],p=[],u=[],h,d,c=[],m,g=1,y,f,x,v;if(!(o.length<=s)&&(0,a.isArray)(i[0])&&4===i[0].length){for(;g<s;)d=i[g-1],n.push((d[1]+d[2]+d[3])/3),g++;for(v=s;v<=r;v++)f=((d=i[v-1])[1]+d[2]+d[3])/3,m=n.push(f),y=(c=n.slice(m-s)).reduce(function(e,t){return e+t},0)/s,x=function(e,t){let s=e.length,a=0,o;for(o=0;o<s;o++)a+=Math.abs(t-e[o]);return a}(c,y)/s,h=(f-y)/(.015*x),l.push([o[v-1],h]),p.push(o[v-1]),u.push(h);return{values:l,xData:p,yData:u}}}}B.defaultOptions=(0,a.merge)(F.defaultOptions,{params:{index:void 0}}),d().registerSeriesType("cci",B);let{sma:G}=d().seriesTypes;class W extends G{constructor(){super(...arguments),this.nameBase="Chaikin Money Flow"}isValid(){let e=this.chart,t=this.options,s=this.linkedParent,a=this.volumeSeries||(this.volumeSeries=e.get(t.params.volumeSeriesID)),o=s?.pointArrayMap?.length===4;function i(e){return e.dataTable.rowCount>=t.params.period}return!!(s&&a&&i(s)&&i(a)&&o)}getValues(e,t){if(this.isValid())return this.getMoneyFlow(e.xData,e.yData,this.volumeSeries.getColumn("y"),t.period)}getMoneyFlow(e,t,s,a){let o=t.length,i=[],r=[],n=[],l=[],p,u,h=-1,d=0,c=0;function m(e,t){let s=e[1],a=e[2],o=e[3];return null!==t&&null!==s&&null!==a&&null!==o&&s!==a?(o-a-(s-o))/(s-a)*t:(h=p,null)}if(a>0&&a<=o){for(p=0;p<a;p++)i[p]=m(t[p],s[p]),d+=s[p],c+=i[p];for(r.push(e[p-1]),n.push(p-h>=a&&0!==d?c/d:null),l.push([r[0],n[0]]);p<o;p++)i[p]=m(t[p],s[p]),d-=s[p-a],d+=s[p],c-=i[p-a],c+=i[p],u=[e[p],p-h>=a?c/d:null],r.push(u[0]),n.push(u[1]),l.push([u[0],u[1]])}return{values:l,xData:r,yData:n}}}W.defaultOptions=(0,a.merge)(G.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume"}}),d().registerSeriesType("cmf",W);let{sma:z}=d().seriesTypes;class Y extends z{calculateDM(e,t,s){let o,i=e[t][1],r=e[t][2],n=e[t-1][1],l=e[t-1][2];return o=i-n>l-r?s?Math.max(i-n,0):0:s?0:Math.max(l-r,0),(0,a.correctFloat)(o)}calculateDI(e,t){return e/t*100}calculateDX(e,t){return(0,a.correctFloat)(Math.abs(e-t)/Math.abs(e+t)*100)}smoothValues(e,t,s){return(0,a.correctFloat)(e-e/s+t)}getTR(e,t){return(0,a.correctFloat)(Math.max(e[1]-e[2],t?Math.abs(e[1]-t[3]):0,t?Math.abs(e[2]-t[3]):0))}getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=[],l=[],p=[];if(o.length<=s||!(0,a.isArray)(i[0])||4!==i[0].length)return;let u=0,h=0,d=0,c;for(c=1;c<r;c++){let e,t,a,r,m,g,y,f,x;c<=s?(r=this.calculateDM(i,c,!0),m=this.calculateDM(i,c),g=this.getTR(i[c],i[c-1]),u+=r,h+=m,d+=g,c===s&&(y=this.calculateDI(u,d),f=this.calculateDI(h,d),x=this.calculateDX(u,h),n.push([o[c],x,y,f]),l.push(o[c]),p.push([x,y,f]))):(r=this.calculateDM(i,c,!0),m=this.calculateDM(i,c),g=this.getTR(i[c],i[c-1]),e=this.smoothValues(u,r,s),t=this.smoothValues(h,m,s),a=this.smoothValues(d,g,s),u=e,h=t,d=a,y=this.calculateDI(u,d),f=this.calculateDI(h,d),x=this.calculateDX(u,h),n.push([o[c],x,y,f]),l.push(o[c]),p.push([x,y,f]))}return{values:n,xData:l,yData:p}}}Y.defaultOptions=(0,a.merge)(z.defaultOptions,{params:{index:void 0},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color: {point.color}">●</span><b> {series.name}</b><br/><span style="color: {point.color}">DX</span>: {point.y}<br/><span style="color: {point.series.options.plusDILine.styles.lineColor}">+DI</span>: {point.plusDI}<br/><span style="color: {point.series.options.minusDILine.styles.lineColor}">-DI</span>: {point.minusDI}<br/>'},plusDILine:{styles:{lineWidth:1,lineColor:"var(--highcharts-positive-color)"}},minusDILine:{styles:{lineWidth:1,lineColor:"var(--highcharts-negative-color)"}},dataGrouping:{approximation:"averages"}}),(0,a.extend)(Y.prototype,{areaLinesNames:[],nameBase:"DMI",linesApiNames:["plusDILine","minusDILine"],pointArrayMap:["y","plusDI","minusDI"],parallelArrays:["x","y","plusDI","minusDI"],pointValKey:"y"}),T.compose(Y),d().registerSeriesType("dmi",Y);let{sma:X}=d().seriesTypes;function R(e,t,s,o,i){let r=(0,a.pick)(t[s][o],t[s]);return i?(0,a.correctFloat)(e-r):(0,a.correctFloat)(e+r)}class K extends X{getValues(e,t){let s=t.period,o=t.index,i=Math.floor(s/2+1),r=s+i,n=e.xData||[],l=e.yData||[],p=l.length,u=[],h=[],d=[],c,m,g,y,f,x=0;if(!(n.length<=r)){for(y=0;y<s-1;y++)x=R(x,l,y,o);for(f=0;f<=p-r;f++)m=f+s-1,g=f+r-1,x=R(x,l,m,o),c=(0,a.pick)(l[g][o],l[g])-x/s,x=R(x,l,f,o,!0),u.push([n[g],c]),h.push(n[g]),d.push(c);return{values:u,xData:h,yData:d}}}}K.defaultOptions=(0,a.merge)(X.defaultOptions,{params:{index:0,period:21}}),(0,a.extend)(K.prototype,{nameBase:"DPO"}),d().registerSeriesType("dpo",K);let{ema:j}=d().seriesTypes;class U extends j{getValues(e,t){let s,o,i=t.periods,r=t.period,n=[],l=[],p=[];if(2!==i.length||i[1]<=i[0])return void(0,a.error)('Error: "Chaikin requires two periods. Notice, first period should be lower than the second one."');let u=v.prototype.getValues.call(this,e,{volumeSeriesID:t.volumeSeriesID,period:r});if(!u)return;let h=super.getValues.call(this,u,{period:i[0]}),d=super.getValues.call(this,u,{period:i[1]});if(!h||!d)return;let c=i[1]-i[0];for(o=0;o<d.yData.length;o++)s=(0,a.correctFloat)(h.yData[o+c]-d.yData[o]),n.push([d.xData[o],s]),l.push(d.xData[o]),p.push(s);return{values:n,xData:l,yData:p}}}U.defaultOptions=(0,a.merge)(j.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume",period:9,periods:[3,10]}}),(0,a.extend)(U.prototype,{nameBase:"Chaikin Osc",nameComponents:["periods"]}),d().registerSeriesType("chaikin",U);let{sma:Z}=d().seriesTypes;class q extends Z{getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=[],l=[],p=[],u,h=t.index,d;if(o.length<s)return;(0,a.isNumber)(i[0])?d=i:(h=Math.min(h,i[0].length-1),d=i.map(e=>e[h]));let c=0,m=0,g=0,y;for(let e=s;e>0;e--)d[e]>d[e-1]?m+=d[e]-d[e-1]:d[e]<d[e-1]&&(g+=d[e-1]-d[e]);for(y=m+g>0?100*(m-g)/(m+g):0,l.push(o[s]),p.push(y),n.push([o[s],y]),u=s+1;u<r;u++)c=Math.abs(d[u-s-1]-d[u-s]),d[u]>d[u-1]?m+=d[u]-d[u-1]:d[u]<d[u-1]&&(g+=d[u-1]-d[u]),d[u-s]>d[u-s-1]?m-=c:g-=c,y=m+g>0?100*(m-g)/(m+g):0,l.push(o[u]),p.push(y),n.push([o[u],y]);return{values:n,xData:l,yData:p}}}q.defaultOptions=(0,a.merge)(Z.defaultOptions,{params:{period:20,index:3}}),d().registerSeriesType("cmo",q);let{ema:$}=d().seriesTypes;class _ extends ${getEMA(e,t,s,a,o,i){return super.calculateEma(i||[],e,void 0===o?1:o,this.EMApercent,t,void 0===a?-1:a,s)}getValues(e,t){let s=t.period,o=[],i=2*s,r=e.xData,n=e.yData,l=n?n.length:0,p=[],u=[],h=[],d=0,c=0,m,g,y,f,x=-1,v,D=0;if(this.EMApercent=2/(s+1),!(l<2*s-1)){for((0,a.isArray)(n[0])&&(x=t.index?t.index:0),D=(d=super.accumulatePeriodPoints(s,x,n))/s,d=0,f=s;f<l+2;f++)f<l+1&&(c=this.getEMA(n,g,D,x,f)[1],o.push(c)),g=c,f<i?d+=c:(f===i&&(D=d/s),c=o[f-s-1],m=this.getEMA([c],y,D)[1],v=[r[f-2],(0,a.correctFloat)(2*c-m)],p.push(v),u.push(v[0]),h.push(v[1]),y=m);return{values:p,xData:u,yData:h}}}}_.defaultOptions=(0,a.merge)($.defaultOptions),d().registerSeriesType("dema",_);let{ema:H}=d().seriesTypes;class J extends H{getEMA(e,t,s,a,o,i){return super.calculateEma(i||[],e,void 0===o?1:o,this.EMApercent,t,void 0===a?-1:a,s)}getTemaPoint(e,t,s,o){return[e[o-3],(0,a.correctFloat)(3*s.level1-3*s.level2+s.level3)]}getValues(e,t){let s=t.period,o=2*s,i=3*s,r=e.xData,n=e.yData,l=n?n.length:0,p=[],u=[],h=[],d=[],c=[],m={},g=-1,y=0,f=0,x,v,D,A;if(this.EMApercent=2/(s+1),!(l<3*s-2)){for((0,a.isArray)(n[0])&&(g=t.index?t.index:0),f=(y=super.accumulatePeriodPoints(s,g,n))/s,y=0,D=s;D<l+3;D++)D<l+1&&(m.level1=this.getEMA(n,x,f,g,D)[1],d.push(m.level1)),x=m.level1,D<o?y+=m.level1:(D===o&&(f=y/s,y=0),m.level1=d[D-s-1],m.level2=this.getEMA([m.level1],v,f)[1],c.push(m.level2),v=m.level2,D<i?y+=m.level2:(D===i&&(f=y/s),D===l+1&&(m.level1=d[D-s-1],m.level2=this.getEMA([m.level1],v,f)[1],c.push(m.level2)),m.level1=d[D-s-2],m.level2=c[D-2*s-1],m.level3=this.getEMA([m.level2],m.prevLevel3,f)[1],(A=this.getTemaPoint(r,i,m,D))&&(p.push(A),u.push(A[0]),h.push(A[1])),m.prevLevel3=m.level3));return{values:p,xData:u,yData:h}}}}J.defaultOptions=(0,a.merge)(H.defaultOptions),d().registerSeriesType("tema",J);let{tema:Q}=d().seriesTypes;class ee extends Q{getTemaPoint(e,t,s,o){if(o>t)return[e[o-3],0!==s.prevLevel3?(0,a.correctFloat)(s.level3-s.prevLevel3)/s.prevLevel3*100:null]}}ee.defaultOptions=(0,a.merge)(Q.defaultOptions),d().registerSeriesType("trix",ee);let{ema:et}=d().seriesTypes;class es extends et{getValues(e,t){let s,o,i=t.periods,r=t.index,n=[],l=[],p=[];if(2!==i.length||i[1]<=i[0])return void(0,a.error)('Error: "APO requires two periods. Notice, first period should be lower than the second one."');let u=super.getValues.call(this,e,{index:r,period:i[0]}),h=super.getValues.call(this,e,{index:r,period:i[1]});if(!u||!h)return;let d=i[1]-i[0];for(o=0;o<h.yData.length;o++)s=u.yData[o+d]-h.yData[o],n.push([h.xData[o],s]),l.push(h.xData[o]),p.push(s);return{values:n,xData:l,yData:p}}}es.defaultOptions=(0,a.merge)(et.defaultOptions,{params:{period:void 0,periods:[10,20]}}),(0,a.extend)(es.prototype,{nameBase:"APO",nameComponents:["periods"]}),d().registerSeriesType("apo",es);let ea=t.default.dataGrouping.approximations;var eo=s.n(ea);let ei=e.default.Color,{parse:er}=s.n(ei)(),{sma:en}=d().seriesTypes;function el(e){return{high:e.reduce(function(e,t){return Math.max(e,t[1])},-1/0),low:e.reduce(function(e,t){return Math.min(e,t[2])},1/0)}}function ep(e){let t=e.indicator;t.points=e.points,t.nextPoints=e.nextPoints,t.color=e.color,t.options=(0,a.merge)(e.options.senkouSpan.styles,e.gap),t.graph=e.graph,t.fillGraph=!0,d().seriesTypes.sma.prototype.drawGraph.call(t)}class eu extends en{constructor(){super(...arguments),this.data=[],this.options={},this.points=[],this.graphCollection=[]}init(){super.init.apply(this,arguments),this.options=(0,a.merge)({tenkanLine:{styles:{lineColor:this.color}},kijunLine:{styles:{lineColor:this.color}},chikouLine:{styles:{lineColor:this.color}},senkouSpanA:{styles:{lineColor:this.color,fill:er(this.color).setOpacity(.5).get()}},senkouSpanB:{styles:{lineColor:this.color,fill:er(this.color).setOpacity(.5).get()}},senkouSpan:{styles:{fill:er(this.color).setOpacity(.2).get()}}},this.options)}toYData(e){return[e.tenkanSen,e.kijunSen,e.chikouSpan,e.senkouSpanA,e.senkouSpanB]}translate(){for(let e of(d().seriesTypes.sma.prototype.translate.apply(this),this.points))for(let t of this.pointArrayMap){let s=e[t];(0,a.isNumber)(s)&&(e["plot"+t]=this.yAxis.toPixels(s,!0),e.plotY=e["plot"+t],e.tooltipPos=[e.plotX,e["plot"+t]],e.isNull=!1)}}drawGraph(){let e=this,t=e.points,s=e.options,o=e.graph,i=e.color,r={options:{gapSize:s.gapSize}},n=e.pointArrayMap.length,l=[[],[],[],[],[],[]],p={tenkanLine:l[0],kijunLine:l[1],chikouLine:l[2],senkouSpanA:l[3],senkouSpanB:l[4],senkouSpan:l[5]},u=[],h=e.options.senkouSpan,c=h.color||h.styles.fill,m=h.negativeColor,g=[[],[]],y=[[],[]],f=t.length,x=0,v,D,A,b,S,C,T,P,M,V,O,k,L;for(e.ikhMap=p;f--;){for(A=0,D=t[f];A<n;A++)v=e.pointArrayMap[A],(0,a.defined)(D[v])&&l[A].push({plotX:D.plotX,plotY:D["plot"+v],isNull:!1});if(m&&f!==t.length-1){let e=p.senkouSpanB.length-1,t=function(e,t,s,a){if(e&&t&&s&&a){let o=t.plotX-e.plotX,i=t.plotY-e.plotY,r=a.plotX-s.plotX,n=a.plotY-s.plotY,l=e.plotX-s.plotX,p=e.plotY-s.plotY,u=(-i*l+o*p)/(-r*i+o*n),h=(r*p-n*l)/(-r*i+o*n);if(u>=0&&u<=1&&h>=0&&h<=1)return{plotX:e.plotX+h*o,plotY:e.plotY+h*i}}}(p.senkouSpanA[e-1],p.senkouSpanA[e],p.senkouSpanB[e-1],p.senkouSpanB[e]);if(t){let s={plotX:t.plotX,plotY:t.plotY,isNull:!1,intersectPoint:!0};p.senkouSpanA.splice(e,0,s),p.senkouSpanB.splice(e,0,s),u.push(e)}}}if((0,a.objectEach)(p,(t,o)=>{s[o]&&"senkouSpan"!==o&&(e.points=l[x],e.options=(0,a.merge)(s[o].styles,r),e.graph=e["graph"+o],e.fillGraph=!1,e.color=i,d().seriesTypes.sma.prototype.drawGraph.call(e),e["graph"+o]=e.graph),x++}),e.graphCollection)for(let t of e.graphCollection)e[t].destroy(),delete e[t];if(e.graphCollection=[],m&&p.senkouSpanA[0]&&p.senkouSpanB[0]){for(u.unshift(0),u.push(p.senkouSpanA.length-1),k=0;k<u.length-1;k++)if(b=u[k],S=u[k+1],C=p.senkouSpanB.slice(b,S+1),T=p.senkouSpanA.slice(b,S+1),Math.floor(C.length/2)>=1){let e=Math.floor(C.length/2);if(C[e].plotY===T[e].plotY){for(L=0,P=0,M=0;L<C.length;L++)P+=C[L].plotY,M+=T[L].plotY;g[O=P>M?0:1]=g[O].concat(C),y[O]=y[O].concat(T)}else g[O=C[e].plotY>T[e].plotY?0:1]=g[O].concat(C),y[O]=y[O].concat(T)}else g[O=C[0].plotY>T[0].plotY?0:1]=g[O].concat(C),y[O]=y[O].concat(T);["graphsenkouSpanColor","graphsenkouSpanNegativeColor"].forEach(function(t,a){g[a].length&&y[a].length&&(V=0===a?c:m,ep({indicator:e,points:g[a],nextPoints:y[a],color:V,options:s,gap:r,graph:e[t]}),e[t]=e.graph,e.graphCollection.push(t))})}else ep({indicator:e,points:p.senkouSpanB,nextPoints:p.senkouSpanA,color:c,options:s,gap:r,graph:e.graphsenkouSpan}),e.graphsenkouSpan=e.graph;delete e.nextPoints,delete e.fillGraph,e.points=t,e.options=s,e.graph=o,e.color=i}getGraphPath(e){let t=[],s,a=[];if(e=e||this.points,this.fillGraph&&this.nextPoints){if((s=d().seriesTypes.sma.prototype.getGraphPath.call(this,this.nextPoints))&&s.length){s[0][0]="L",t=d().seriesTypes.sma.prototype.getGraphPath.call(this,e),a=s.slice(0,t.length);for(let e=a.length-1;e>=0;e--)t.push(a[e])}}else t=d().seriesTypes.sma.prototype.getGraphPath.apply(this,arguments);return t}getValues(e,t){let s,o,i,r,n,l,p,u,h,d,c=t.period,m=t.periodTenkan,g=t.periodSenkouSpanB,y=e.xData,f=e.yData,x=e.xAxis,v=f&&f.length||0,D=(0,a.getClosestDistance)(x.series.map(e=>e.getColumn("x"))),A=[],b=[];if(y.length<=c||!(0,a.isArray)(f[0])||4!==f[0].length)return;let S=y[0]-c*D;for(n=0;n<c;n++)b.push(S+n*D);for(n=0;n<v;n++)n>=m&&(l=((o=el(f.slice(n-m,n))).high+o.low)/2),n>=c&&(h=(l+(p=((i=el(f.slice(n-c,n))).high+i.low)/2))/2),n>=g&&(d=((r=el(f.slice(n-g,n))).high+r.low)/2),u=f[n][3],s=y[n],void 0===A[n]&&(A[n]=[]),void 0===A[n+c-1]&&(A[n+c-1]=[]),A[n+c-1][0]=l,A[n+c-1][1]=p,A[n+c-1][2]=void 0,void 0===A[n+1]&&(A[n+1]=[]),A[n+1][2]=u,n<=c&&(A[n+c-1][3]=void 0,A[n+c-1][4]=void 0),void 0===A[n+2*c-2]&&(A[n+2*c-2]=[]),A[n+2*c-2][3]=h,A[n+2*c-2][4]=d,b.push(s);for(n=1;n<=c;n++)b.push(s+n*D);return{values:A,xData:b,yData:A}}}eu.defaultOptions=(0,a.merge)(en.defaultOptions,{params:{index:void 0,period:26,periodTenkan:9,periodSenkouSpanB:52},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b> {series.name}</b><br/>TENKAN SEN: {point.tenkanSen:.3f}<br/>KIJUN SEN: {point.kijunSen:.3f}<br/>CHIKOU SPAN: {point.chikouSpan:.3f}<br/>SENKOU SPAN A: {point.senkouSpanA:.3f}<br/>SENKOU SPAN B: {point.senkouSpanB:.3f}<br/>'},tenkanLine:{styles:{lineWidth:1,lineColor:void 0}},kijunLine:{styles:{lineWidth:1,lineColor:void 0}},chikouLine:{styles:{lineWidth:1,lineColor:void 0}},senkouSpanA:{styles:{lineWidth:1,lineColor:void 0}},senkouSpanB:{styles:{lineWidth:1,lineColor:void 0}},senkouSpan:{styles:{fill:"rgba(255, 0, 0, 0.5)"}},dataGrouping:{approximation:"ichimoku-averages"}}),(0,a.extend)(eu.prototype,{pointArrayMap:["tenkanSen","kijunSen","chikouSpan","senkouSpanA","senkouSpanB"],pointValKey:"tenkanSen",nameComponents:["periodSenkouSpanB","period","periodTenkan"]}),eo()["ichimoku-averages"]=function(){let e,t=[];return[].forEach.call(arguments,function(s,a){t.push(eo().average(s)),e=!e&&void 0===t[a]}),e?void 0:t},d().registerSeriesType("ikh",eu);let{sma:eh}=d().seriesTypes;class ed extends eh{init(){d().seriesTypes.sma.prototype.init.apply(this,arguments),this.options=(0,a.merge)({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,t){let s,o,i,r,n,l,p,u=t.period,h=t.periodATR,c=t.multiplierATR,m=t.index,g=e.yData,y=g?g.length:0,f=[],x=d().seriesTypes.ema.prototype.getValues(e,{period:u,index:m}),v=d().seriesTypes.atr.prototype.getValues(e,{period:h}),D=[],A=[];if(!(y<u)){for(p=u;p<=y;p++)n=x.values[p-u],l=v.values[p-h],r=n[0],o=(0,a.correctFloat)(n[1]+c*l[1]),i=(0,a.correctFloat)(n[1]-c*l[1]),s=n[1],f.push([r,o,s,i]),D.push(r),A.push([o,s,i]);return{values:f,xData:D,yData:A}}}}ed.defaultOptions=(0,a.merge)(eh.defaultOptions,{params:{index:0,period:20,periodATR:10,multiplierATR:2},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1,lineColor:void 0}},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Upper Channel: {point.top}<br/>EMA({series.options.params.period}): {point.middle}<br/>Lower Channel: {point.bottom}<br/>'},marker:{enabled:!1},dataGrouping:{approximation:"averages"},lineWidth:1}),(0,a.extend)(ed.prototype,{nameBase:"Keltner Channels",areaLinesNames:["top","bottom"],nameComponents:["period","periodATR","multiplierATR"],linesApiNames:["topLine","bottomLine"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),T.compose(ed),d().registerSeriesType("keltnerchannels",ed);let{ema:ec,sma:em}=d().seriesTypes;class eg extends em{calculateTrend(e,t){return e[t][1]+e[t][2]+e[t][3]>e[t-1][1]+e[t-1][2]+e[t-1][3]?1:-1}isValidData(e){let t=this.chart,s=this.options,o=this.linkedParent,i=(0,a.isArray)(e)&&4===e.length,r=this.volumeSeries||(this.volumeSeries=t.get(s.params.volumeSeriesID));return r||(0,a.error)("Series "+s.params.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,o.chart),!!([o,r].every(function(e){return e&&e.dataTable.rowCount>=s.params.slowAvgPeriod})&&i)}getCM(e,t,s,o,i){return(0,a.correctFloat)(t+(s===o?e:i))}getDM(e,t){return(0,a.correctFloat)(e-t)}getVolumeForce(e){let t=[],s=0,a,o=1,i=0,r=e[0][1]-e[0][2],n=0,l;for(;o<e.length;o++)l=this.calculateTrend(e,o),a=this.getDM(e[o][1],e[o][2]),s=this.getCM(i,a,l,n,r),t.push([this.volumeSeries.getColumn("y")[o]*l*Math.abs(2*(a/s-1))*100]),n=l,i=s,r=a;return t}getEMA(e,t,s,a,o,i,r){return ec.prototype.calculateEma(r||[],e,void 0===i?1:i,a,t,void 0===o?-1:o,s)}getSMA(e,t,s){return ec.prototype.accumulatePeriodPoints(e,t,s)/e}getValues(e,t){let s=[],o=e.xData,i=e.yData,r=[],n=[],l=[],p,u=0,h=0,d,c,m,g=null;if(!this.isValidData(i[0]))return;let y=this.getVolumeForce(i),f=this.getSMA(t.fastAvgPeriod,0,y),x=this.getSMA(t.slowAvgPeriod,0,y),v=2/(t.fastAvgPeriod+1),D=2/(t.slowAvgPeriod+1);for(;u<i.length;u++)u>=t.fastAvgPeriod&&(c=h=this.getEMA(y,c,f,v,0,u,o)[1]),u>=t.slowAvgPeriod&&(m=d=this.getEMA(y,m,x,D,0,u,o)[1],l.push(p=(0,a.correctFloat)(h-d)),l.length>=t.signalPeriod&&(g=l.slice(-t.signalPeriod).reduce((e,t)=>e+t)/t.signalPeriod),s.push([o[u],p,g]),r.push(o[u]),n.push([p,g]));return{values:s,xData:r,yData:n}}}eg.defaultOptions=(0,a.merge)(em.defaultOptions,{params:{fastAvgPeriod:34,slowAvgPeriod:55,signalPeriod:13,volumeSeriesID:"volume"},signalLine:{styles:{lineWidth:1,lineColor:"#ff0000"}},dataGrouping:{approximation:"averages"},tooltip:{pointFormat:'<span style="color: {point.color}">●</span><b> {series.name}</b><br/><span style="color: {point.color}">Klinger</span>: {point.y}<br/><span style="color: {point.series.options.signalLine.styles.lineColor}">Signal</span>: {point.signal}<br/>'}}),(0,a.extend)(eg.prototype,{areaLinesNames:[],linesApiNames:["signalLine"],nameBase:"Klinger",nameComponents:["fastAvgPeriod","slowAvgPeriod"],pointArrayMap:["y","signal"],parallelArrays:["x","y","signal"],pointValKey:"y"}),T.compose(eg),d().registerSeriesType("klinger",eg);let{noop:ey}=i(),{sma:ef}=d().seriesTypes;class ex extends ef{init(){d().seriesTypes.sma.prototype.init.apply(this,arguments);let e=this.color,t=this.colorIndex;this.options&&((0,a.defined)(this.colorIndex)&&(this.options.signalLine?.styles&&!this.options.signalLine.styles.lineColor&&(this.options.colorIndex=this.colorIndex+1,this.getCyclic("color",void 0,this.chart.options.colors),this.options.signalLine.styles.lineColor=this.color),this.options.macdLine?.styles&&!this.options.macdLine.styles.lineColor&&(this.options.colorIndex=this.colorIndex+1,this.getCyclic("color",void 0,this.chart.options.colors),this.options.macdLine.styles.lineColor=this.color)),this.macdZones={zones:this.options.macdLine?.zones,startIndex:0},this.signalZones={zones:this.macdZones.zones?.concat(this.options.signalLine.zones),startIndex:this.macdZones.zones?.length}),this.color=e,this.colorIndex=t}toYData(e){return[e.y,e.signal,e.MACD]}translate(){let e=this,t=["plotSignal","plotMACD"];i().seriesTypes.column.prototype.translate.apply(e),e.points.forEach(function(s){[s.signal,s.MACD].forEach(function(a,o){null!==a&&(s[t[o]]=e.yAxis.toPixels(a,!0))})})}destroy(){this.graph=null,this.graphmacd=this.graphmacd&&this.graphmacd.destroy(),this.graphsignal=this.graphsignal&&this.graphsignal.destroy(),d().seriesTypes.sma.prototype.destroy.apply(this,arguments)}drawGraph(){let e=this,t=e.points,s=e.options,o=e.zones,i={options:{gapSize:s.gapSize}},r=[[],[]],n,l=t.length;for(;l--;)n=t[l],(0,a.defined)(n.plotMACD)&&r[0].push({plotX:n.plotX,plotY:n.plotMACD,isNull:!(0,a.defined)(n.plotMACD)}),(0,a.defined)(n.plotSignal)&&r[1].push({plotX:n.plotX,plotY:n.plotSignal,isNull:!(0,a.defined)(n.plotMACD)});["macd","signal"].forEach((t,o)=>{e.points=r[o],e.options=(0,a.merge)(s[`${t}Line`]?.styles||{},i),e.graph=e[`graph${t}`],e.zones=(e[`${t}Zones`].zones||[]).slice(e[`${t}Zones`].startIndex||0),d().seriesTypes.sma.prototype.drawGraph.call(e),e[`graph${t}`]=e.graph}),e.points=t,e.options=s,e.zones=o}applyZones(){let e=this.zones;this.zones=this.signalZones.zones,d().seriesTypes.sma.prototype.applyZones.call(this),this.graphmacd&&this.options.macdLine.zones.length&&this.graphmacd.hide(),this.zones=e}getValues(e,t){let s=t.longPeriod-t.shortPeriod,o=[],i=[],r=[],n,l,p,u=0,h=[];if(!(e.xData.length<t.longPeriod+t.signalPeriod)){for(p=0,n=d().seriesTypes.ema.prototype.getValues(e,{period:t.shortPeriod,index:t.index}),l=d().seriesTypes.ema.prototype.getValues(e,{period:t.longPeriod,index:t.index}),n=n.values,l=l.values;p<=n.length;p++)(0,a.defined)(l[p])&&(0,a.defined)(l[p][1])&&(0,a.defined)(n[p+s])&&(0,a.defined)(n[p+s][0])&&o.push([n[p+s][0],0,null,n[p+s][1]-l[p][1]]);for(p=0;p<o.length;p++)i.push(o[p][0]),r.push([0,null,o[p][3]]);for(p=0,h=(h=d().seriesTypes.ema.prototype.getValues({xData:i,yData:r},{period:t.signalPeriod,index:2})).values;p<o.length;p++)o[p][0]>=h[0][0]&&(o[p][2]=h[u][1],r[p]=[0,h[u][1],o[p][3]],null===o[p][3]?(o[p][1]=0,r[p][0]=0):(o[p][1]=(0,a.correctFloat)(o[p][3]-h[u][1]),r[p][0]=(0,a.correctFloat)(o[p][3]-h[u][1])),u++);return{values:o,xData:i,yData:r}}}}ex.defaultOptions=(0,a.merge)(ef.defaultOptions,{params:{shortPeriod:12,longPeriod:26,signalPeriod:9,period:26},signalLine:{zones:[],styles:{lineWidth:1,lineColor:void 0}},macdLine:{zones:[],styles:{lineWidth:1,lineColor:void 0}},threshold:0,groupPadding:.1,pointPadding:.1,crisp:!1,states:{hover:{halo:{size:0}}},tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b> {series.name}</b><br/>Value: {point.MACD}<br/>Signal: {point.signal}<br/>Histogram: {point.y}<br/>'},dataGrouping:{approximation:"averages"},minPointLength:0}),(0,a.extend)(ex.prototype,{nameComponents:["longPeriod","shortPeriod","signalPeriod"],pointArrayMap:["y","signal","MACD"],parallelArrays:["x","y","signal","MACD"],pointValKey:"y",markerAttribs:ey,getColumnMetrics:i().seriesTypes.column.prototype.getColumnMetrics,crispCol:i().seriesTypes.column.prototype.crispCol,drawPoints:i().seriesTypes.column.prototype.drawPoints}),d().registerSeriesType("macd",ex);let{sma:ev}=d().seriesTypes;function eD(e){return e.reduce(function(e,t){return e+t})}function eA(e){return(e[1]+e[2]+e[3])/3}class eb extends ev{getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=t.decimals,l=e.chart.get(t.volumeSeriesID),p=l?.getColumn("y")||[],u=[],h=[],d=[],c=[],m=[],g,y,f,x,v,D,A=!1,b=1;if(!l)return void(0,a.error)("Series "+t.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,e.chart);if(!(o.length<=s)&&(0,a.isArray)(i[0])&&4===i[0].length&&p){for(g=eA(i[b]);b<s+1;)y=g,A=(g=eA(i[b]))>=y,f=g*p[b],c.push(A?f:0),m.push(A?0:f),b++;for(D=b-1;D<r;D++){var S;D>b-1&&(c.shift(),m.shift(),y=g,A=(g=eA(i[D]))>y,f=g*p[D],c.push(A?f:0),m.push(A?0:f)),x=eD(m),S=100-100/(1+eD(c)/x),v=parseFloat(S.toFixed(n)),u.push([o[D],v]),h.push(o[D]),d.push(v)}return{values:u,xData:h,yData:d}}}}eb.defaultOptions=(0,a.merge)(ev.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume",decimals:4}}),(0,a.extend)(eb.prototype,{nameBase:"Money Flow Index"}),d().registerSeriesType("mfi",eb);let{sma:eS}=d().seriesTypes;function eC(e,t,s,a,o){let i=t[s-1][o]-t[s-a-1][o];return[e[s-1],i]}class eT extends eS{getValues(e,t){let s,o,i=t.period,r=t.index,n=e.xData,l=e.yData,p=l?l.length:0,u=[],h=[],d=[];if(!(n.length<=i)&&(0,a.isArray)(l[0])){for(s=i+1;s<p;s++)o=eC(n,l,s,i,r),u.push(o),h.push(o[0]),d.push(o[1]);return o=eC(n,l,s,i,r),u.push(o),h.push(o[0]),d.push(o[1]),{values:u,xData:h,yData:d}}}}eT.defaultOptions=(0,a.merge)(eS.defaultOptions,{params:{index:3}}),(0,a.extend)(eT.prototype,{nameBase:"Momentum"}),d().registerSeriesType("momentum",eT);let{atr:eP}=d().seriesTypes;class eM extends eP{getValues(e,t){let s=super.getValues.apply(this,arguments),a=s.values.length,o=e.yData,i=0,r=t.period-1;if(s){for(;i<a;i++)s.yData[i]=s.values[i][1]/o[r][3]*100,s.values[i][1]=s.yData[i],r++;return s}}}eM.defaultOptions=(0,a.merge)(eP.defaultOptions,{tooltip:{valueSuffix:"%"}}),d().registerSeriesType("natr",eM);let{sma:eV}=d().seriesTypes;class eO extends eV{getValues(e,t){let s=e.chart.get(t.volumeSeriesID),o=e.xData,i=e.yData,r=[],n=[],l=[],p=!(0,a.isNumber)(i[0]),u=[],h=1,d=0,c=0,m=0,g=0,y;if(!s)return void(0,a.error)("Series "+t.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,e.chart);for(y=s.getColumn("y"),u=[o[0],d],m=p?i[0][3]:i[0],r.push(u),n.push(o[0]),l.push(u[1]);h<i.length;h++)c=(g=p?i[h][3]:i[h])>m?d+y[h]:g===m?d:d-y[h],u=[o[h],c],d=c,m=g,r.push(u),n.push(o[h]),l.push(u[1]);return{values:r,xData:n,yData:l}}}eO.defaultOptions=(0,a.merge)(eV.defaultOptions,{marker:{enabled:!1},params:{index:void 0,period:void 0,volumeSeriesID:"volume"},tooltip:{valueDecimals:0}}),(0,a.extend)(eO.prototype,{nameComponents:void 0}),d().registerSeriesType("obv",eO);let ek=d().seriesTypes.sma.prototype.pointClass;function eL(e,t){let s=e.series.pointArrayMap,a,o=s.length;for(d().seriesTypes.sma.prototype.pointClass.prototype[t].call(e);o--;)e[a="dataLabel"+s[o]]&&e[a].element&&e[a].destroy(),e[a]=null}let{sma:ew}=d().seriesTypes;class eE extends ew{toYData(e){return[e.P]}translate(){let e=this;super.translate.apply(e),e.points.forEach(function(t){e.pointArrayMap.forEach(function(s){(0,a.defined)(t[s])&&(t["plot"+s]=e.yAxis.toPixels(t[s],!0))})}),e.plotEndPoint=e.xAxis.toPixels(e.endPoint,!0)}getGraphPath(e){let t=this,s=[[],[],[],[],[],[],[],[],[]],o=t.pointArrayMap.length,i=t.plotEndPoint,r=[],n,l,p=e.length,u;for(;p--;){for(u=0,l=e[p];u<o;u++)n=t.pointArrayMap[u],(0,a.defined)(l[n])&&s[u].push({plotX:l.plotX,plotY:l["plot"+n],isNull:!1},{plotX:i,plotY:l["plot"+n],isNull:!1},{plotX:i,plotY:null,isNull:!0});i=l.plotX}return s.forEach(e=>{r=r.concat(super.getGraphPath.call(t,e))}),r}drawDataLabels(){let e,t,s,a,o=this,i=o.pointArrayMap;o.options.dataLabels.enabled&&(t=o.points.length,i.concat([!1]).forEach((r,n)=>{for(a=t;a--;)s=o.points[a],r?(s.y=s[r],s.pivotLine=r,s.plotY=s["plot"+r],e=s["dataLabel"+r],n&&(s["dataLabel"+i[n-1]]=s.dataLabel),s.dataLabels||(s.dataLabels=[]),s.dataLabels[0]=s.dataLabel=e=e&&e.element?e:null):s["dataLabel"+i[n-1]]=s.dataLabel;super.drawDataLabels.call(o)}))}getValues(e,t){let s,o,i,r,n,l,p,u=t.period,h=e.xData,d=e.yData,c=d?d.length:0,m=this[t.algorithm+"Placement"],g=[],y=[],f=[];if(!(h.length<u)&&(0,a.isArray)(d[0])&&4===d[0].length){for(p=u+1;p<=c+u;p+=u)i=h.slice(p-u-1,p),r=d.slice(p-u-1,p),o=i.length,s=i[o-1],l=m(this.getPivotAndHLC(r)),n=g.push([s].concat(l)),y.push(s),f.push(g[n-1].slice(1));return this.endPoint=i[0]+(s-i[0])/o*u,{values:g,xData:y,yData:f}}}getPivotAndHLC(e){let t=e[e.length-1][3],s=-1/0,a=1/0;return e.forEach(function(e){s=Math.max(s,e[1]),a=Math.min(a,e[2])}),[(s+a+t)/3,s,a,t]}standardPlacement(e){let t=e[1]-e[2];return[null,null,e[0]+t,2*e[0]-e[2],e[0],2*e[0]-e[1],e[0]-t,null,null]}camarillaPlacement(e){let t=e[1]-e[2];return[e[3]+1.5*t,e[3]+1.25*t,e[3]+1.1666*t,e[3]+1.0833*t,e[0],e[3]-1.0833*t,e[3]-1.1666*t,e[3]-1.25*t,e[3]-1.5*t]}fibonacciPlacement(e){let t=e[1]-e[2];return[null,e[0]+t,e[0]+.618*t,e[0]+.382*t,e[0],e[0]-.382*t,e[0]-.618*t,e[0]-t,null]}}eE.defaultOptions=(0,a.merge)(ew.defaultOptions,{params:{index:void 0,period:28,algorithm:"standard"},marker:{enabled:!1},enableMouseTracking:!1,dataLabels:{enabled:!0,format:"{point.pivotLine}"},dataGrouping:{approximation:"averages"}}),(0,a.extend)(eE.prototype,{nameBase:"Pivot Points",pointArrayMap:["R4","R3","R2","R1","P","S1","S2","S3","S4"],pointValKey:"P",pointClass:class extends ek{destroyElements(){eL(this,"destroyElements")}destroy(){eL(this,"destroyElements")}}}),d().registerSeriesType("pivotpoints",eE);let{ema:eI}=d().seriesTypes;class eN extends eI{getValues(e,t){let s,o,i=t.periods,r=t.index,n=[],l=[],p=[];if(2!==i.length||i[1]<=i[0])return void(0,a.error)('Error: "PPO requires two periods. Notice, first period should be lower than the second one."');let u=super.getValues.call(this,e,{index:r,period:i[0]}),h=super.getValues.call(this,e,{index:r,period:i[1]});if(!u||!h)return;let d=i[1]-i[0];for(o=0;o<h.yData.length;o++)s=(0,a.correctFloat)((u.yData[o+d]-h.yData[o])/h.yData[o]*100),n.push([h.xData[o],s]),l.push(h.xData[o]),p.push(s);return{values:n,xData:l,yData:p}}}eN.defaultOptions=(0,a.merge)(eI.defaultOptions,{params:{period:void 0,periods:[12,26]}}),(0,a.extend)(eN.prototype,{nameBase:"PPO",nameComponents:["periods"]}),d().registerSeriesType("ppo",eN);let eF=function(e,t,s){return e.reduce((e,a)=>[Math.min(e[0],a[t]),Math.max(e[1],a[s])],[Number.MAX_VALUE,-Number.MAX_VALUE])},{sma:eB}=d().seriesTypes;class eG extends eB{getValues(e,t){let s,a,o,i,r,n,l=t.period,p=e.xData,u=e.yData,h=u?u.length:0,d=[],c=[],m=[];if(!(h<l)){for(n=l;n<=h;n++)i=p[n-1],s=((a=(r=eF(u.slice(n-l,n),2,1))[1])+(o=r[0]))/2,d.push([i,a,s,o]),c.push(i),m.push([a,s,o]);return{values:d,xData:c,yData:m}}}}eG.defaultOptions=(0,a.merge)(eB.defaultOptions,{params:{index:void 0,period:20},lineWidth:1,topLine:{styles:{lineColor:"var(--highcharts-color-2)",lineWidth:1}},bottomLine:{styles:{lineColor:"var(--highcharts-color-8)",lineWidth:1}},dataGrouping:{approximation:"averages"}}),(0,a.extend)(eG.prototype,{areaLinesNames:["top","bottom"],nameBase:"Price Channel",nameComponents:["period"],linesApiNames:["topLine","bottomLine"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),T.compose(eG),d().registerSeriesType("pc",eG);let{sma:eW}=d().seriesTypes;class ez extends eW{init(){super.init.apply(this,arguments),this.options=(0,a.merge)({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,t){let s,o,i,r,n,l,p,u,h=t.period,d=t.topBand,c=t.bottomBand,m=e.xData,g=e.yData,y=g?g.length:0,f=[],x=[],v=[];if(!(m.length<h)&&(0,a.isArray)(g[0])&&4===g[0].length){for(u=h;u<=y;u++)n=m.slice(u-h,u),l=g.slice(u-h,u),r=(p=super.getValues({xData:n,yData:l},t)).xData[0],o=(s=p.yData[0])*(1+d),i=s*(1-c),f.push([r,o,s,i]),x.push(r),v.push([o,s,i]);return{values:f,xData:x,yData:v}}}}ez.defaultOptions=(0,a.merge)(eW.defaultOptions,{marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Top: {point.top}<br/>Middle: {point.middle}<br/>Bottom: {point.bottom}<br/>'},params:{period:20,topBand:.1,bottomBand:.1},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1}},dataGrouping:{approximation:"averages"}}),(0,a.extend)(ez.prototype,{areaLinesNames:["top","bottom"],linesApiNames:["topLine","bottomLine"],nameComponents:["period","topBand","bottomBand"],nameBase:"Price envelopes",pointArrayMap:["top","middle","bottom"],parallelArrays:["x","y","top","bottom"],pointValKey:"middle"}),T.compose(ez),d().registerSeriesType("priceenvelopes",ez);let{sma:eY}=d().seriesTypes;function eX(e,t){return parseFloat(e.toFixed(t))}class eR extends eY{constructor(){super(...arguments),this.nameComponents=void 0}getValues(e,t){let s=e.xData,a=e.yData,o=t.maxAccelerationFactor,i=t.increment,r=t.initialAccelerationFactor,n=t.decimals,l=t.index,p=[],u=[],h=[],d=t.initialAccelerationFactor,c,m=a[0][1],g,y,f,x=1,v,D,A,b,S=a[0][2],C,T,P,M;if(!(l>=a.length)){for(M=0;M<l;M++)m=Math.max(a[M][1],m),S=Math.min(a[M][2],eX(S,n));for(c=a[M][1]>S?1:-1,g=m-S,y=(d=t.initialAccelerationFactor)*g,p.push([s[l],S]),u.push(s[l]),h.push(eX(S,n)),M=l+1;M<a.length;M++)if(v=a[M-1][2],D=a[M-2][2],A=a[M-1][1],b=a[M-2][1],T=a[M][1],P=a[M][2],null!==D&&null!==b&&null!==v&&null!==A&&null!==T&&null!==P){var V,O,k,L,w,E,I,N,F,B,G,W,z,Y,X,R,K,j,U,Z,q;w=c,E=x,I=S,N=y,F=D,B=v,G=A,W=b,z=m,S=w===E?1===w?I+N<Math.min(F,B)?I+N:Math.min(F,B):I+N>Math.max(W,G)?I+N:Math.max(W,G):z,V=c,O=m,C=1===V?T>O?T:O:P<O?P:O,k=x,L=S,Y=f=1===k&&P>L||-1===k&&T>L?1:-1,X=c,R=C,K=m,j=d,U=i,Z=o,q=r,y=(d=Y===X?1===Y&&R>K||-1===Y&&R<K?j===Z?Z:eX(j+U,2):j:q)*(g=C-S),p.push([s[M],eX(S,n)]),u.push(s[M]),h.push(eX(S,n)),x=c,c=f,m=C}return{values:p,xData:u,yData:h}}}}eR.defaultOptions=(0,a.merge)(eY.defaultOptions,{lineWidth:0,marker:{enabled:!0},states:{hover:{lineWidthPlus:0}},params:{period:void 0,initialAccelerationFactor:.02,maxAccelerationFactor:.2,increment:.02,index:2,decimals:4}}),d().registerSeriesType("psar",eR);let{sma:eK}=d().seriesTypes;class ej extends eK{getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=[],l=[],p=[],u,h=-1,d;if(!(o.length<=s)){for((0,a.isArray)(i[0])&&(h=t.index),u=s;u<r;u++)d=function(e,t,s,a,o){let i,r;return r=o<0?(i=t[s-a])?(t[s]-i)/i*100:null:(i=t[s-a][o])?(t[s][o]-i)/i*100:null,[e[s],r]}(o,i,u,s,h),n.push(d),l.push(d[0]),p.push(d[1]);return{values:n,xData:l,yData:p}}}}ej.defaultOptions=(0,a.merge)(eK.defaultOptions,{params:{index:3,period:9}}),(0,a.extend)(ej.prototype,{nameBase:"Rate of Change"}),d().registerSeriesType("roc",ej);let{sma:eU}=d().seriesTypes;function eZ(e,t){return parseFloat(e.toFixed(t))}class eq extends eU{getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=t.decimals,l=[],p=[],u=[],h=0,d=0,c=t.index,m=1,g,y,f,x,v,D;if(!(o.length<s)){for((0,a.isNumber)(i[0])?D=i:(c=Math.min(c,i[0].length-1),D=i.map(e=>e[c]));m<s;)(y=eZ(D[m]-D[m-1],n))>0?h+=y:d+=Math.abs(y),m++;for(f=eZ(h/(s-1),n),x=eZ(d/(s-1),n),v=m;v<r;v++)(y=eZ(D[v]-D[v-1],n))>0?(h=y,d=0):(h=0,d=Math.abs(y)),f=eZ((f*(s-1)+h)/s,n),g=0===(x=eZ((x*(s-1)+d)/s,n))?100:0===f?0:eZ(100-100/(1+f/x),n),l.push([o[v],g]),p.push(o[v]),u.push(g);return{values:l,xData:p,yData:u}}}}eq.defaultOptions=(0,a.merge)(eU.defaultOptions,{params:{decimals:4,index:3}}),d().registerSeriesType("rsi",eq);let{sma:e$}=d().seriesTypes;class e_ extends e${init(){super.init.apply(this,arguments),this.options=(0,a.merge)({smoothedLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,t){let s=t.periods[0],o=t.periods[1],i=e.xData,r=e.yData,n=r?r.length:0,l=[],p=[],u=[],h,d,c=null,m,g;if(n<s||!(0,a.isArray)(r[0])||4!==r[0].length)return;let y=!0,f=0;for(g=s-1;g<n;g++){if(h=(m=eF(r.slice(g-s+1,g+1),2,1))[0],isNaN(d=(r[g][3]-h)/(m[1]-h)*100)&&y){f++;continue}y&&!isNaN(d)&&(y=!1);let e=p.push(i[g]);isNaN(d)?u.push([u[e-2]&&"number"==typeof u[e-2][0]?u[e-2][0]:null,null]):u.push([d,null]),g>=f+(s-1)+(o-1)&&(c=super.getValues({xData:p.slice(-o),yData:u.slice(-o)},{period:o}).yData[0]),l.push([i[g],d,c]),u[e-1][1]=c}return{values:l,xData:p,yData:u}}}e_.defaultOptions=(0,a.merge)(e$.defaultOptions,{params:{index:void 0,period:void 0,periods:[14,3]},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>%K: {point.y}<br/>%D: {point.smoothed}<br/>'},smoothedLine:{styles:{lineWidth:1,lineColor:void 0}},dataGrouping:{approximation:"averages"}}),(0,a.extend)(e_.prototype,{areaLinesNames:[],nameComponents:["periods"],nameBase:"Stochastic",pointArrayMap:["y","smoothed"],parallelArrays:["x","y","smoothed"],pointValKey:"y",linesApiNames:["smoothedLine"]}),T.compose(e_),d().registerSeriesType("stochastic",e_);let{sma:eH,stochastic:eJ}=d().seriesTypes;class eQ extends eJ{getValues(e,t){let s=t.periods,a=super.getValues.call(this,e,t),o={values:[],xData:[],yData:[]};if(!a)return;o.xData=a.xData.slice(s[1]-1);let i=a.yData.slice(s[1]-1),r=eH.prototype.getValues.call(this,{xData:o.xData,yData:i},{index:1,period:s[2]});if(r){for(let e=0,t=o.xData.length;e<t;e++)o.yData[e]=[i[e][1],r.yData[e-s[2]+1]||null],o.values[e]=[o.xData[e],i[e][1],r.yData[e-s[2]+1]||null];return o}}}eQ.defaultOptions=(0,a.merge)(eJ.defaultOptions,{params:{periods:[14,3,3]}}),(0,a.extend)(eQ.prototype,{nameBase:"Slow Stochastic"}),d().registerSeriesType("slowstochastic",eQ);let{atr:e0,sma:e1}=d().seriesTypes;function e2(e,t){return{index:t,close:e.getColumn("close")[t],x:e.getColumn("x")[t]}}class e3 extends e1{init(){let e=this;super.init.apply(e,arguments);let t=(0,a.addEvent)(this.chart.constructor,"afterLinkSeries",()=>{let{linkedParent:s,options:a}=e;a&&s&&(a.cropThreshold=(s.options.cropThreshold??0)-((a.params?.period??0)-1)),t()},{order:1})}drawGraph(){let e=this,t=e.options,s=e.linkedParent,o=s.getColumn("x"),i=s?s.points:[],r=e.points,n=e.graph,l=i.length-r.length,p=l>0?l:0,u={options:{gapSize:t.gapSize}},h={top:[],bottom:[],intersect:[]},d={top:{styles:{lineWidth:t.lineWidth,lineColor:t.fallingTrendColor||t.color,dashStyle:t.dashStyle}},bottom:{styles:{lineWidth:t.lineWidth,lineColor:t.risingTrendColor||t.color,dashStyle:t.dashStyle}},intersect:t.changeTrendLine},c,m,g,y,f,x,v,D,A,b=r.length;for(;b--;)c=r[b],m=r[b-1],g=i[b-1+p],y=i[b-2+p],f=i[b+p],x=i[b+p+1],v=c.options.color,D={x:c.x,plotX:c.plotX,plotY:c.plotY,isNull:!1},!y&&g&&(0,a.isNumber)(o[g.index-1])&&(y=e2(s,g.index-1)),!x&&f&&(0,a.isNumber)(o[f.index+1])&&(x=e2(s,f.index+1)),!g&&y&&(0,a.isNumber)(o[y.index+1])?g=e2(s,y.index+1):!g&&f&&(0,a.isNumber)(o[f.index-1])&&(g=e2(s,f.index-1)),c&&g&&f&&y&&c.x!==g.x&&(c.x===f.x?(y=g,g=f):c.x===y.x?(g=y,y={close:s.getColumn("close")[g.index-1],x:o[g.index-1]}):x&&c.x===x.x&&(g=x,y=f)),m&&y&&g?(A={x:m.x,plotX:m.plotX,plotY:m.plotY,isNull:!1},c.y>=g.close&&m.y>=y.close?(c.color=v||t.fallingTrendColor||t.color,h.top.push(D)):c.y<g.close&&m.y<y.close?(c.color=v||t.risingTrendColor||t.color,h.bottom.push(D)):(h.intersect.push(D),h.intersect.push(A),h.intersect.push((0,a.merge)(A,{isNull:!0})),c.y>=g.close&&m.y<y.close?(c.color=v||t.fallingTrendColor||t.color,m.color=v||t.risingTrendColor||t.color,h.top.push(D),h.top.push((0,a.merge)(A,{isNull:!0}))):c.y<g.close&&m.y>=y.close&&(c.color=v||t.risingTrendColor||t.color,m.color=v||t.fallingTrendColor||t.color,h.bottom.push(D),h.bottom.push((0,a.merge)(A,{isNull:!0}))))):g&&(c.y>=g.close?(c.color=v||t.fallingTrendColor||t.color,h.top.push(D)):(c.color=v||t.risingTrendColor||t.color,h.bottom.push(D)));(0,a.objectEach)(h,function(t,s){e.points=t,e.options=(0,a.merge)(d[s].styles,u),e.graph=e["graph"+s+"Line"],e1.prototype.drawGraph.call(e),e["graph"+s+"Line"]=e.graph}),e.points=r,e.options=t,e.graph=n}getValues(e,t){let s=t.period,o=t.multiplier,i=e.xData,r=e.yData,n=[],l=[],p=[],u=0===s?0:s-1,h=[],d=[],c=[],m,g,y,f,x,v,D,A,b;if(!(i.length<=s)&&(0,a.isArray)(r[0])&&4===r[0].length&&!(s<0)){for(b=0,c=e0.prototype.getValues.call(this,e,{period:s}).yData;b<c.length;b++)A=r[u+b],D=r[u+b-1]||[],f=h[b-1],x=d[b-1],v=p[b-1],0===b&&(f=x=v=0),m=(0,a.correctFloat)((A[1]+A[2])/2+o*c[b]),g=(0,a.correctFloat)((A[1]+A[2])/2-o*c[b]),m<f||D[3]>f?h[b]=m:h[b]=f,g>x||D[3]<x?d[b]=g:d[b]=x,v===f&&A[3]<h[b]||v===x&&A[3]<d[b]?y=h[b]:(v===f&&A[3]>h[b]||v===x&&A[3]>d[b])&&(y=d[b]),n.push([i[u+b],y]),l.push(i[u+b]),p.push(y);return{values:n,xData:l,yData:p}}}}e3.defaultOptions=(0,a.merge)(e1.defaultOptions,{params:{index:void 0,multiplier:3,period:10},risingTrendColor:"var(--highcharts-positive-color)",fallingTrendColor:"var(--highcharts-negative-color)",changeTrendLine:{styles:{lineWidth:1,lineColor:"var(--highcharts-neutral-color-80)",dashStyle:"LongDash"}}}),(0,a.extend)(e3.prototype,{nameBase:"Supertrend",nameComponents:["multiplier","period"]}),d().registerSeriesType("supertrend",e3);let{sma:{prototype:{pointClass:e4}}}=d().seriesTypes,e5=class extends e4{destroy(){this.negativeGraphic&&(this.negativeGraphic=this.negativeGraphic.destroy()),super.destroy.apply(this,arguments)}},{noop:e6}=i(),{column:{prototype:e8},sma:e9}=d().seriesTypes,e7=Math.abs;class te extends e9{init(e,t){let s=this;delete t.data,super.init.apply(s,arguments);let o=(0,a.addEvent)(this.chart.constructor,"afterLinkSeries",function(){if(s.options){let t=s.options.params,a=s.linkedParent,o=t?.volumeSeriesID?e.get(t?.volumeSeriesID):void 0;a&&o&&s.addCustomEvents(a,o)}o()},{order:1});return s}addCustomEvents(e,t){let s=this,o=()=>{s.chart.redraw(),s.setData([]),s.zoneStarts=[],s.zoneLinesSVG&&(s.zoneLinesSVG=s.zoneLinesSVG.destroy())};return s.dataEventsToUnbind.push((0,a.addEvent)(e,"remove",function(){o()})),t&&s.dataEventsToUnbind.push((0,a.addEvent)(t,"remove",function(){o()})),s}animate(e){let t=this,s=t.chart.inverted,o=t.group,i={};if(!e&&o){let e=s?t.yAxis.top:t.xAxis.left;s?(o["forceAnimate:translateY"]=!0,i.translateY=e):(o["forceAnimate:translateX"]=!0,i.translateX=e),o.animate(i,(0,a.extend)((0,a.animObject)(t.options.animation),{step:function(e,s){t.group.attr({scaleX:Math.max(.001,s.pos)})}}))}}drawPoints(){this.options.volumeDivision.enabled&&(this.posNegVolume(!0,!0),e8.drawPoints.apply(this,arguments),this.posNegVolume(!1,!1)),e8.drawPoints.apply(this,arguments)}posNegVolume(e,t){let s=t?["positive","negative"]:["negative","positive"],a=this.options.volumeDivision,o=this.points.length,i=[],r=[],n=0,l,p,u,h;for(e?(this.posWidths=i,this.negWidths=r):(i=this.posWidths,r=this.negWidths);n<o;n++)(h=this.points[n])[s[0]+"Graphic"]=h.graphic,h.graphic=h[s[1]+"Graphic"],e&&(l=h.shapeArgs.width,(u=(p=this.priceZones[n]).wholeVolumeData)?(i.push(l/u*p.positiveVolumeData),r.push(l/u*p.negativeVolumeData)):(i.push(0),r.push(0))),h.color=t?a.styles.positiveColor:a.styles.negativeColor,h.shapeArgs.width=t?this.posWidths[n]:this.negWidths[n],h.shapeArgs.x=t?h.shapeArgs.x:this.posWidths[n]}translate(){let e=this,t=e.options,s=e.chart,o=e.yAxis,i=o.min,r=e.options.zoneLines,n=e.priceZones,l=0,p,u,h,d,c,m,g,y,f,x,v;e8.translate.apply(e);let D=e.points;D.length&&(y=t.pointPadding<.5?t.pointPadding:.1,p=e.volumeDataArray,u=(0,a.arrayMax)(p),h=s.plotWidth/2,f=s.plotTop,d=e7(o.toPixels(i)-o.toPixels(i+e.rangeStep)),m=e7(o.toPixels(i)-o.toPixels(i+e.rangeStep)),y&&(c=e7(d*(1-2*y)),l=e7((d-c)/2),d=e7(c)),D.forEach(function(t,s){x=t.barX=t.plotX=0,v=t.plotY=o.toPixels(n[s].start)-f-(o.reversed?d-m:d)-l,t.pointWidth=g=(0,a.correctFloat)(h*n[s].wholeVolumeData/u),t.shapeArgs=e.crispCol.apply(e,[x,v,g,d]),t.volumeNeg=n[s].negativeVolumeData,t.volumePos=n[s].positiveVolumeData,t.volumeAll=n[s].wholeVolumeData,delete t.origin,t.isInside=e.isPointInside(t)}),r.enabled&&e.drawZones(s,o,e.zoneStarts,r.styles))}getExtremes(){let e,t=this.options.compare,s=this.options.cumulative;return this.options.compare?(this.options.compare=void 0,e=super.getExtremes(),this.options.compare=t):this.options.cumulative?(this.options.cumulative=!1,e=super.getExtremes(),this.options.cumulative=s):e=super.getExtremes(),e}getValues(e,t){let s=e.getColumn("x",!0),o=e.processedYData,i=this.chart,r=t.ranges,n=[],l=[],p=[],u=i.get(t.volumeSeriesID);if(!e.chart)return void(0,a.error)("Base series not found! In case it has been removed, add a new one.",!0,i);if(!u||!u.getColumn("x",!0).length){let e=u&&!u.getColumn("x",!0).length?" does not contain any data.":" not found! Check `volumeSeriesID`.";(0,a.error)("Series "+t.volumeSeriesID+e,!0,i);return}let h=(0,a.isArray)(o[0]);return h&&4!==o[0].length?void(0,a.error)("Type of "+e.name+" series is different than line, OHLC or candlestick.",!0,i):((this.priceZones=this.specifyZones(h,s,o,r,u)).forEach(function(e,t){n.push([e.x,e.end]),l.push(n[t][0]),p.push(n[t][1])}),{values:n,xData:l,yData:p})}specifyZones(e,t,s,o,i){let r=!!e&&function(e){let t=e.length,s=e[0][3],a=s,o=1,i;for(;o<t;o++)(i=e[o][3])<s&&(s=i),i>a&&(a=i);return{min:s,max:a}}(s),n=this.zoneStarts=[],l=[],p=r?r.min:(0,a.arrayMin)(s),u=r?r.max:(0,a.arrayMax)(s),h=0,d=1,c=this.linkedParent;if(!this.options.compareToMain&&c.dataModify&&(p=c.dataModify.modifyValue(p),u=c.dataModify.modifyValue(u)),!(0,a.defined)(p)||!(0,a.defined)(u))return this.points.length&&(this.setData([]),this.zoneStarts=[],this.zoneLinesSVG&&(this.zoneLinesSVG=this.zoneLinesSVG.destroy())),[];let m=this.rangeStep=(0,a.correctFloat)(u-p)/o;for(n.push(p);h<o-1;h++)n.push((0,a.correctFloat)(n[h]+m));n.push(u);let g=n.length;for(;d<g;d++)l.push({index:d-1,x:t[0],start:n[d-1],end:n[d]});return this.volumePerZone(e,l,i,t,s)}volumePerZone(e,t,s,a,o){let i,r,n,l,p,u=this,h=s.getColumn("x",!0),d=s.getColumn("y",!0),c=t.length-1,m=o.length,g=d.length;return e7(m-g)&&(a[0]!==h[0]&&d.unshift(0),a[m-1]!==h[g-1]&&d.push(0)),u.volumeDataArray=[],t.forEach(function(t){for(p=0,t.wholeVolumeData=0,t.positiveVolumeData=0,t.negativeVolumeData=0;p<m;p++){r=!1,n=!1,l=e?o[p][3]:o[p],i=p?e?o[p-1][3]:o[p-1]:l;let s=u.linkedParent;!u.options.compareToMain&&s.dataModify&&(l=s.dataModify.modifyValue(l),i=s.dataModify.modifyValue(i)),l<=t.start&&0===t.index&&(r=!0),l>=t.end&&t.index===c&&(n=!0),(l>t.start||r)&&(l<t.end||n)&&(t.wholeVolumeData+=d[p],i>l?t.negativeVolumeData+=d[p]:t.positiveVolumeData+=d[p])}u.volumeDataArray.push(t.wholeVolumeData)}),t}drawZones(e,t,s,a){let o=e.renderer,i=e.plotWidth,r=e.plotTop,n=this.zoneLinesSVG,l=[],p;s.forEach(function(s){p=t.toPixels(s)-r,l=l.concat(e.renderer.crispLine([["M",0,p],["L",i,p]],a.lineWidth))}),n?n.animate({d:l}):n=this.zoneLinesSVG=o.path(l).attr({"stroke-width":a.lineWidth,stroke:a.color,dashstyle:a.dashStyle,zIndex:this.group.zIndex+.1}).add(this.group)}}te.defaultOptions=(0,a.merge)(e9.defaultOptions,{params:{index:void 0,period:void 0,ranges:12,volumeSeriesID:"volume"},zoneLines:{enabled:!0,styles:{color:"#0A9AC9",dashStyle:"LongDash",lineWidth:1}},volumeDivision:{enabled:!0,styles:{positiveColor:"rgba(144, 237, 125, 0.8)",negativeColor:"rgba(244, 91, 91, 0.8)"}},animationLimit:1e3,enableMouseTracking:!1,pointPadding:0,zIndex:-1,crisp:!0,dataGrouping:{enabled:!1},dataLabels:{align:"left",allowOverlap:!0,distance:0,enabled:!0,format:"P: {point.volumePos:.2f} | N: {point.volumeNeg:.2f}",padding:0,style:{fontSize:"0.5em"},verticalAlign:"top"}}),(0,a.extend)(te.prototype,{nameBase:"Volume by Price",nameComponents:["ranges"],calculateOn:{chart:"render",xAxis:"afterSetExtremes"},pointClass:e5,markerAttribs:e6,drawGraph:e6,getColumnMetrics:e8.getColumnMetrics,crispCol:e8.crispCol}),d().registerSeriesType("vbp",te);let{sma:tt}=d().seriesTypes;class ts extends tt{getValues(e,t){let s=e.chart,o=e.xData,i=e.yData,r=t.period,n=!0,l;return(l=s.get(t.volumeSeriesID))?((0,a.isArray)(i[0])||(n=!1),this.calculateVWAPValues(n,o,i,l,r)):void(0,a.error)("Series "+t.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,s)}calculateVWAPValues(e,t,s,a,o){let i,r,n,l,p,u,h=a.getColumn("y"),d=h.length,c=t.length,m=[],g=[],y=[],f=[],x=[];for(p=0,i=c<=d?c:d,u=0;p<i;p++)r=(e?(s[p][1]+s[p][2]+s[p][3])/3:s[p])*h[p],n=u?m[p-1]+r:r,l=u?g[p-1]+h[p]:h[p],m.push(n),g.push(l),x.push([t[p],n/l]),y.push(x[p][0]),f.push(x[p][1]),++u===o&&(u=0);return{values:x,xData:y,yData:f}}}ts.defaultOptions=(0,a.merge)(tt.defaultOptions,{params:{index:void 0,period:30,volumeSeriesID:"volume"}}),d().registerSeriesType("vwap",ts);let{sma:ta}=d().seriesTypes;class to extends ta{getValues(e,t){let s,o,i,r,n,l=t.period,p=e.xData,u=e.yData,h=u?u.length:0,d=[],c=[],m=[];if(!(p.length<l)&&(0,a.isArray)(u[0])&&4===u[0].length){for(n=l-1;n<h;n++)r=(s=eF(u.slice(n-l+1,n+1),2,1))[0],o=-(((i=s[1])-u[n][3])/(i-r)*100),p[n]&&(d.push([p[n],o]),c.push(p[n]),m.push(o));return{values:d,xData:c,yData:m}}}}to.defaultOptions=(0,a.merge)(ta.defaultOptions,{params:{index:void 0,period:14}}),(0,a.extend)(to.prototype,{nameBase:"Williams %R"}),d().registerSeriesType("williamsr",to);let{sma:ti}=d().seriesTypes;function tr(e,t,s,a,o){let i=t[a],r=o<0?s[a]:s[a][o];e.push([i,r])}function tn(e,t,s,a){let o=e.length,i=e.reduce(function(e,t,s){return[null,e[1]+t[1]*(s+1)]})[1]/((o+1)/2*o),r=t[a-1];return e.shift(),[r,i]}class tl extends ti{getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=o[0],l=[],p=[],u=[],h=1,d=-1,c,m,g=i[0];if(o.length<s)return;(0,a.isArray)(i[0])&&(d=t.index,g=i[0][d]);let y=[[n,g]];for(;h!==s;)tr(y,o,i,h,d),h++;for(c=h;c<r;c++)l.push(m=tn(y,o,i,c)),p.push(m[0]),u.push(m[1]),tr(y,o,i,c,d);return l.push(m=tn(y,o,i,c)),p.push(m[0]),u.push(m[1]),{values:l,xData:p,yData:u}}}tl.defaultOptions=(0,a.merge)(ti.defaultOptions,{params:{index:3,period:9}}),d().registerSeriesType("wma",tl);let{sma:tp}=d().seriesTypes;class tu extends tp{getValues(e,t){let s=t.lowIndex,a=t.highIndex,o=t.deviation/100,i={low:1+o,high:1-o},r=e.xData,n=e.yData,l=n?n.length:0,p=[],u=[],h=[],d,c,m,g,y=!1,f=!1;if(!r||r.length<=1||l&&(void 0===n[0][s]||void 0===n[0][a]))return;let x=n[0][s],v=n[0][a];for(d=1;d<l;d++)n[d][s]<=v*i.high?(p.push([r[0],v]),m=[r[d],n[d][s]],g=!0,y=!0):n[d][a]>=x*i.low&&(p.push([r[0],x]),m=[r[d],n[d][a]],g=!1,y=!0),y&&(u.push(p[0][0]),h.push(p[0][1]),c=d++,d=l);for(d=c;d<l;d++)g?(n[d][s]<=m[1]&&(m=[r[d],n[d][s]]),n[d][a]>=m[1]*i.low&&(f=a)):(n[d][a]>=m[1]&&(m=[r[d],n[d][a]]),n[d][s]<=m[1]*i.high&&(f=s)),!1!==f&&(p.push(m),u.push(m[0]),h.push(m[1]),m=[r[d],n[d][f]],g=!g,f=!1);let D=p.length;return 0!==D&&p[D-1][0]<r[l-1]&&(p.push(m),u.push(m[0]),h.push(m[1])),{values:p,xData:u,yData:h}}}tu.defaultOptions=(0,a.merge)(tp.defaultOptions,{params:{index:void 0,period:void 0,lowIndex:2,highIndex:1,deviation:1}}),(0,a.extend)(tu.prototype,{nameComponents:["deviation"],nameSuffixes:["%"],nameBase:"Zig Zag"}),d().registerSeriesType("zigzag",tu);let{sma:th}=d().seriesTypes;class td extends th{getRegressionLineParameters(e,t){let s=this.options.params.index,o=function(e,t){return(0,a.isArray)(e)?e[t]:e},i=e.reduce(function(e,t){return t+e},0),r=t.reduce(function(e,t){return o(t,s)+e},0),n=i/e.length,l=r/t.length,p,u,h=0,d=0;for(u=0;u<e.length;u++)h+=(p=e[u]-n)*(o(t[u],s)-l),d+=Math.pow(p,2);let c=d?h/d:0;return{slope:c,intercept:l-c*n}}getEndPointY(e,t){return e.slope*t+e.intercept}transformXData(e,t){let s=e[0];return e.map(function(e){return(e-s)/t})}findClosestDistance(e){let t,s,a;for(a=1;a<e.length-1;a++)(t=e[a]-e[a-1])>0&&(void 0===s||t<s)&&(s=t);return s}getValues(e,t){let s,o,i,r,n,l,p,u,h,d=e.xData,c=e.yData,m=t.period,g={xData:[],yData:[],values:[]},y=this.options.params.xAxisUnit||this.findClosestDistance(d);for(o=m-1;o<=d.length-1;o++)i=o-m+1,r=o+1,n=d[o],p=d.slice(i,r),u=c.slice(i,r),h=this.transformXData(p,y),s=this.getRegressionLineParameters(h,u),l=this.getEndPointY(s,h[h.length-1]),g.values.push({regressionLineParameters:s,x:n,y:l}),(0,a.isArray)(g.xData)&&g.xData.push(n),(0,a.isArray)(g.yData)&&g.yData.push(l);return g}}td.defaultOptions=(0,a.merge)(th.defaultOptions,{params:{xAxisUnit:null},tooltip:{valueDecimals:4}}),(0,a.extend)(td.prototype,{nameBase:"Linear Regression Indicator"}),d().registerSeriesType("linearregression",td),d().registerSeriesType("linearRegression",td);let{linearregression:tc}=d().seriesTypes;class tm extends tc{getEndPointY(e){return e.slope}}tm.defaultOptions=(0,a.merge)(tc.defaultOptions),(0,a.extend)(tm.prototype,{nameBase:"Linear Regression Slope Indicator"}),d().registerSeriesType("linearregressionslope",tm),d().registerSeriesType("linearRegressionSlope",tm);let{linearregression:tg}=d().seriesTypes;class ty extends tg{getEndPointY(e){return e.intercept}}ty.defaultOptions=(0,a.merge)(tg.defaultOptions),(0,a.extend)(ty.prototype,{nameBase:"Linear Regression Intercept Indicator"}),d().registerSeriesType("linearregressionintercept",ty),d().registerSeriesType("linearRegressionIntercept",ty);let{linearregression:tf}=d().seriesTypes;class tx extends tf{slopeToAngle(e){return 180/Math.PI*Math.atan(e)}getEndPointY(e){return this.slopeToAngle(e.slope)}}tx.defaultOptions=(0,a.merge)(tf.defaultOptions,{tooltip:{pointFormat:'<span style="color:{point.color}">●</span>{series.name}: <b>{point.y}\xb0</b><br/>'}}),(0,a.extend)(tx.prototype,{nameBase:"Linear Regression Angle Indicator"}),d().registerSeriesType("linearregressionangle",tx),d().registerSeriesType("linearRegressionAngle",tx);let{sma:tv}=d().seriesTypes;class tD extends tv{getValues(e,t){let s,o,i,r,n,l,p,u,h,d,c,m=t.period,g=t.factor,y=t.index,f=e.xData,x=e.yData,v=x?x.length:0,D=[],A=[],b=[],S=[],C=[];if(!(v<m)){for(c=0;c<=v;c++){if(c<v){var T,P,M,V;T=x[c][2],P=x[c][1],n=(0,a.correctFloat)(P-T)/((0,a.correctFloat)(P+T)/2)*1e3*g,D.push((M=x[c][1],M*(0,a.correctFloat)(1+2*n))),A.push((V=x[c][2],V*(0,a.correctFloat)(1-2*n)))}c>=m&&(h=f.slice(c-m,c),d=x.slice(c-m,c),p=super.getValues.call(this,{xData:h,yData:D.slice(c-m,c)},{period:m}),u=super.getValues.call(this,{xData:h,yData:A.slice(c-m,c)},{period:m}),r=(l=super.getValues.call(this,{xData:h,yData:d},{period:m,index:y})).xData[0],o=p.yData[0],i=u.yData[0],s=l.yData[0],b.push([r,o,s,i]),S.push(r),C.push([o,s,i]))}return{values:b,xData:S,yData:C}}}}tD.defaultOptions=(0,a.merge)(tv.defaultOptions,{params:{period:20,factor:.001,index:3},lineWidth:1,topLine:{styles:{lineWidth:1}},bottomLine:{styles:{lineWidth:1}},dataGrouping:{approximation:"averages"}}),(0,a.extend)(tD.prototype,{areaLinesNames:["top","bottom"],linesApiNames:["topLine","bottomLine"],nameBase:"Acceleration Bands",nameComponents:["period","factor"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),T.compose(tD),d().registerSeriesType("abands",tD);let{sma:tA}=d().seriesTypes;class tb extends tA{constructor(){super(...arguments),this.updateAllPoints=!0}getValues(e,t){let s=e.xData,o=e.yData,i=[],r=[],n=[],l=[],p=t.index,u=0,h=0,d=0,c=0,m=0;for(let e=0;e<s.length;e++)(0===e||s[e]!==s[e-1])&&m++,i.push(m);for(let e=0;e<i.length;e++)d+=i[e],c+=(0,a.isArray)(o[e])?o[e][p]:o[e];let g=d/i.length,y=c/o.length;for(let e=0;e<i.length;e++){let t=(0,a.isArray)(o[e])?o[e][p]:o[e];u+=(i[e]-g)*(t-y),h+=Math.pow(i[e]-g,2)}for(let e=0;e<i.length;e++){if(s[e]===n[n.length-1])continue;let t=s[e],a=y+u/h*(i[e]-g);r.push([t,a]),n.push(t),l.push(a)}return{xData:n,yData:l,values:r}}}tb.defaultOptions=(0,a.merge)(tA.defaultOptions,{params:{period:void 0,index:3}}),(0,a.extend)(tb.prototype,{nameBase:"Trendline",nameComponents:void 0}),d().registerSeriesType("trendline",tb);let{sma:tS}=d().seriesTypes;class tC extends tS{init(){let e=arguments,t=e[1].params,s=t&&t.average?t.average:void 0;this.averageIndicator=d().seriesTypes[s]||tS,this.averageIndicator.prototype.init.apply(this,e)}calculateDisparityIndex(e,t){return(0,a.correctFloat)(e-t)/t*100}getValues(e,t){let s=t.index,o=e.xData,i=e.yData,r=i?i.length:0,n=[],l=[],p=[],u=this.averageIndicator,h=(0,a.isArray)(i[0]),d=u.prototype.getValues(e,t),c=d.yData,m=o.indexOf(d.xData[0]);if(c&&0!==c.length&&(0,a.defined)(s)&&!(i.length<=m)){for(let e=m;e<r;e++){let t=this.calculateDisparityIndex(h?i[e][s]:i[e],c[e-m]);n.push([o[e],t]),l.push(o[e]),p.push(t)}return{values:n,xData:l,yData:p}}}}tC.defaultOptions=(0,a.merge)(tS.defaultOptions,{params:{average:"sma",index:3},marker:{enabled:!1},dataGrouping:{approximation:"averages"}}),(0,a.extend)(tC.prototype,{nameBase:"Disparity Index",nameComponents:["period","average"]}),d().registerSeriesType("disparityindex",tC);let tT=i();tT.MultipleLinesComposition=tT.MultipleLinesComposition||T;let tP=i();export{tP as default};
14
+ */import*as e from"../highcharts.js";import*as t from"../modules/datagrouping.js";let s={};s.n=e=>{let t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{if(Array.isArray(t))for(var a=0;a<t.length;){var o=t[a++],i=t[a++];s.o(e,o)?0===i&&a++:0===i?Object.defineProperty(e,o,{enumerable:!0,value:t[a++]}):Object.defineProperty(e,o,{enumerable:!0,get:i})}else for(var o in t)s.o(t,o)&&!s.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);let a=e.default;var o,i=s.n(a);let r=e.default.Chart;var n=s.n(r);let{setLength:l,splice:p}={convertToNumber:function(e,t){switch(typeof e){case"boolean":return+!!e;case"number":return isNaN(e)&&!t?null:e;default:return isNaN(e=parseFloat(`${e??""}`))&&!t?null:e}},setLength:function(e,t,s){return Array.isArray(e)?(e.length=t,e):e[s?"subarray":"slice"](0,t)},splice:function(e,t,s,a,o=[]){if(Array.isArray(e))return Array.isArray(o)||(o=Array.from(o)),{removed:e.splice(t,s,...o),array:e};let i=Object.getPrototypeOf(e).constructor,r=e[a?"subarray":"slice"](t,t+s),n=new i(e.length-s+o.length);return n.set(e.subarray(0,t),0),n.set(o,t),n.set(e.subarray(t+s),t+o.length),{removed:r,array:n}}},u=class{constructor(e={}){this.isDataTable=!0,this.autoId=!e.id,this.columns={},this.id=e.id||(0,a.uniqueKey)(),this.rowCount=0,this.versionTag=(0,a.uniqueKey)();let t=0;(0,a.objectEach)(e.columns||{},(e,s)=>{this.columns[s]=e.slice(),t=Math.max(t,e.length)}),this.applyRowCount(t)}applyRowCount(e){this.rowCount=e,(0,a.objectEach)(this.columns,(t,s)=>{t.length!==e&&(this.columns[s]=l(t,e))})}deleteRows(e,t=1){if(t>0&&e<this.rowCount){let s=0;(0,a.objectEach)(this.columns,(a,o)=>{this.columns[o]=p(a,e,t).array,s=a.length}),this.rowCount=s}(0,a.fireEvent)(this,"afterDeleteRows",{rowIndex:e,rowCount:t}),this.versionTag=(0,a.uniqueKey)()}getColumn(e,t){return this.columns[e]}getColumns(e,t){return(e||Object.keys(this.columns)).reduce((e,t)=>(e[t]=this.columns[t],e),{})}getRowObject(e,t){let s={},a=this.columns;for(let o of(t??(t=Object.keys(this.columns)),t))s[o]=a[o]?.[e];return s}setColumn(e,t=[],s=0,a){this.setColumns({[e]:t},s,a)}setColumns(e,t,s){let o=this.rowCount;(0,a.objectEach)(e,(e,t)=>{this.columns[t]=e.slice(),o=e.length}),this.applyRowCount(o),s?.silent||((0,a.fireEvent)(this,"afterSetColumns"),this.versionTag=(0,a.uniqueKey)())}setRow(e,t=this.rowCount,s,o){var i;let{columns:r}=this,n=s?this.rowCount+1:t+1,l=Object.keys(e);if(o?.addColumns!==!1)for(let e=0,t=l.length;e<t;e++)r[i=l[e]]||(r[i]=Array(this.rowCount));(0,a.objectEach)(r,(a,o)=>{a&&(s?a=p(a,t,0,!0,[e[o]]).array:a[t]=o in e?e[o]:a[t],r[o]=a)}),this.applyRowCount(Math.max(n,this.rowCount)),o?.silent||((0,a.fireEvent)(this,"afterSetRows",{rowIndex:t}),this.versionTag=(0,a.uniqueKey)())}getModified(){return this.modified||this}},h=e.default.SeriesRegistry;var d=s.n(h);let{line:c}=d().seriesTypes,m=(e,t)=>{let s=[],a=e.pointArrayMap,o=t&&e.dataTable.getModified()||e.dataTable;if(!a)return e.getColumn("y",t);let i=a.map(s=>e.getColumn(s,t));for(let e=0;e<o.rowCount;e++){let t=a.map((t,s)=>i[s]?.[e]||0);s.push(t)}return s};class g extends c{destroy(){this.dataEventsToUnbind.forEach(function(e){e()}),super.destroy.apply(this,arguments)}getName(){let e=[],t=this.name;return t||((this.nameComponents||[]).forEach(function(t,s){e.push(this.options.params[t]+(this.nameSuffixes[s]??""))},this),t=(this.nameBase||this.type.toUpperCase())+(this.nameComponents?" ("+e.join(", ")+")":"")),t}getValues(e,t){let s=t.period,o=e.xData||[],i=e.yData,r=i.length,n=[],l=[],p=[],u,h=-1,d=0,c,m=0;if(!(o.length<s)){for((0,a.isArray)(i[0])&&(h=t.index?t.index:0);d<s-1;)m+=h<0?i[d]:i[d][h],d++;for(u=d;u<r;u++)m+=h<0?i[u]:i[u][h],c=[o[u],m/s],n.push(c),l.push(c[0]),p.push(c[1]),m-=h<0?i[u-d]:i[u-d][h];return{values:n,xData:l,yData:p}}}init(e,t){let s=this;super.init.call(s,e,t);let o=(0,a.addEvent)(n(),"afterLinkSeries",function({isUpdating:t}){if(t)return;let o=!!s.dataEventsToUnbind.length;if(!s.linkedParent)return(0,a.error)("Series "+s.options.linkedTo+" not found! Check `linkedTo`.",!1,e);if(!o&&(s.dataEventsToUnbind.push((0,a.addEvent)(s.linkedParent,"updatedData",function(){s.recalculateValues()})),s.calculateOn.xAxis&&s.dataEventsToUnbind.push((0,a.addEvent)(s.linkedParent.xAxis,s.calculateOn.xAxis,function(){s.recalculateValues()}))),"init"===s.calculateOn.chart)s.closestPointRange||s.recalculateValues();else if(!o){let e=(0,a.addEvent)(s.chart,s.calculateOn.chart,function(){s.recalculateValues(),e()})}},{order:0});s.dataEventsToUnbind=[],s.eventsToUnbind.push(o)}recalculateValues(){let e=this.dataTable,t=this.dataTable.rowCount,s=!0,o,i,r=this.linkedParent.yData,n=this.linkedParent.processedYData;this.linkedParent.xData=this.linkedParent.getColumn("x"),this.linkedParent.yData=m(this.linkedParent),this.linkedParent.processedYData=m(this.linkedParent,!0);let l=this.linkedParent.options&&this.linkedParent.dataTable.rowCount&&this.getValues(this.linkedParent,this.options.params)||{values:[],xData:[],yData:[]};l.xData.length=l.values.length,delete this.linkedParent.xData,this.linkedParent.yData=r,this.linkedParent.processedYData=n;let p=this.pointArrayMap||["y"],h={};if(l.yData.forEach(e=>{p.forEach((t,s)=>{let o=h[t]||[];o.push((0,a.isArray)(e)?e[s]:e),h[t]||(h[t]=o)})}),t&&!this.hasGroupedData&&this.visible&&this.points)if(this.cropped){this.xAxis&&(o=this.xAxis.min,i=this.xAxis.max);let t=this.cropData(e,o,i);this.setData(t.modified,!1)}else(this.updateAllPoints||l.xData.length!==t-1&&l.xData.length!==t+1)&&(s=!1,this.setData(new u({columns:{x:l.xData,...h}}),!1));s&&(h.x=l.xData,l.values.reduce((e,t,s)=>(Object.keys(t).forEach(a=>{e[a]||(e[a]=[]),e[a][s]=t[a]}),e),h),e.setColumns(h),delete this.xColumn,delete this.xColumnIsNumbers),this.calculateOn.xAxis&&this.getColumn("x",!0).length&&(this.isDirty=!0,this.redraw()),this.isDirtyData=!!this.linkedSeries.length,(0,a.fireEvent)(this,"updatedData")}processData(){let e=this.options.compareToMain,t=this.linkedParent;super.processData.apply(this,arguments),this.dataModify&&t&&t.dataModify&&t.dataModify.compareValue&&e&&(this.dataModify.compareValue=t.dataModify.compareValue)}}g.defaultOptions=(0,a.merge)(c.defaultOptions,{name:void 0,tooltip:{valueDecimals:4},linkedTo:void 0,compareToMain:!1,params:{index:3,period:14}}),(0,a.extend)(g.prototype,{calculateOn:{chart:"init"},hasDerivedData:!0,nameComponents:["period"],nameSuffixes:[],useCommonDataGrouping:!0}),d().registerSeriesType("sma",g);let{sma:y}=d().seriesTypes;class f extends y{accumulatePeriodPoints(e,t,s){let a=0,o=0;for(;o<e;)a+=t<0?s[o]:s[o][t],o++;return a}calculateEma(e,t,s,o,i,r,n){let l=e[s-1],p=r<0?t[s-1]:t[s-1][r];return[l,void 0===i?n:(0,a.correctFloat)(p*o+i*(1-o))]}getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=2/(s+1),l=[],p=[],u=[],h,d,c,m=-1,g=0;if(!(r<s)){for((0,a.isArray)(i[0])&&(m=t.index?t.index:0),g=this.accumulatePeriodPoints(s,m,i)/s,c=s;c<r+1;c++)d=this.calculateEma(o,i,c,n,h,m,g),l.push(d),p.push(d[0]),u.push(d[1]),h=d[1];return{values:l,xData:p,yData:u}}}}f.defaultOptions=(0,a.merge)(y.defaultOptions,{params:{index:3,period:9}}),d().registerSeriesType("ema",f);let{sma:x}=d().seriesTypes;class v extends x{static populateAverage(e,t,s,a,o){let i=t[a][1],r=t[a][2],n=t[a][3],l=s[a],p=n===i&&n===r||i===r?0:(2*n-r-i)/(i-r)*l;return[e[a],p]}getValues(e,t){let s,o,i,r=t.period,n=e.xData,l=e.yData,p=t.volumeSeriesID,u=e.chart.get(p),h=u?.getColumn("y"),d=l?l.length:0,c=[],m=[],g=[];if(!(n.length<=r)||!d||4===l[0].length){if(!u)return void(0,a.error)("Series "+p+" not found! Check `volumeSeriesID`.",!0,e.chart);for(o=r;o<d;o++)s=c.length,i=v.populateAverage(n,l,h,o,r),s>0&&(i[1]+=c[s-1][1]),c.push(i),m.push(i[0]),g.push(i[1]);return{values:c,xData:m,yData:g}}}}v.defaultOptions=(0,a.merge)(x.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume"}}),(0,a.extend)(v.prototype,{nameComponents:!1,nameBase:"Accumulation/Distribution"}),d().registerSeriesType("ad",v);let{noop:D}=i(),{column:{prototype:A},sma:b}=d().seriesTypes;class S extends b{drawGraph(){let e,t=this.options,s=this.points,a=this.userOptions.color,o=t.greaterBarColor,i=t.lowerBarColor,r=s[0];if(!a&&r)for(e=1,r.color=o;e<s.length;e++)s[e].y>s[e-1].y?s[e].color=o:s[e].y<s[e-1].y?s[e].color=i:s[e].color=s[e-1].color}getValues(e){let t=e.xData||[],s=e.yData||[],o=s.length,i=[],r=[],n=[],l,p,u,h,d,c,m,g,y=0,f=0;if(!(t.length<=34)&&(0,a.isArray)(s[0])&&4===s[0].length){for(m=0;m<33;m++)c=(s[m][1]+s[m][2])/2,m>=29&&(f=(0,a.correctFloat)(f+c)),y=(0,a.correctFloat)(y+c);for(g=33;g<o;g++)c=(s[g][1]+s[g][2])/2,f=(0,a.correctFloat)(f+c),y=(0,a.correctFloat)(y+c),l=f/5,p=y/34,u=(0,a.correctFloat)(l-p),i.push([t[g],u]),r.push(t[g]),n.push(u),h=g+1-5,d=g+1-34,f=(0,a.correctFloat)(f-(s[h][1]+s[h][2])/2),y=(0,a.correctFloat)(y-(s[d][1]+s[d][2])/2);return{values:i,xData:r,yData:n}}}}S.defaultOptions=(0,a.merge)(b.defaultOptions,{params:{index:void 0,period:void 0},greaterBarColor:"var(--highcharts-positive-color)",lowerBarColor:"var(--highcharts-negative-color)",threshold:0,groupPadding:.2,pointPadding:.2,crisp:!1,states:{hover:{halo:{size:0}}}}),(0,a.extend)(S.prototype,{nameBase:"AO",nameComponents:void 0,markerAttribs:D,getColumnMetrics:A.getColumnMetrics,crispCol:A.crispCol,translate:A.translate,drawPoints:A.drawPoints}),d().registerSeriesType("ao",S);let{sma:{prototype:C}}=d().seriesTypes;!function(e){let t=["bottomLine"],s=["top","bottom"],o=["top"];function i(e){return"plot"+e.charAt(0).toUpperCase()+e.slice(1)}function r(e,t){let s=[];return(e.pointArrayMap||[]).forEach(e=>{e!==t&&s.push(i(e))}),s}function n(){let e=this,t=e.pointValKey,s=e.linesApiNames,o=e.areaLinesNames,n=e.points,l=e.options,p=e.graph,u={options:{gapSize:l.gapSize}},h=[],d=r(e,t),c=n.length,m;if(d.forEach((e,t)=>{for(h[t]=[];c--;)m=n[c],h[t].push({x:m.x,plotX:m.plotX,plotY:m[e],isNull:!(0,a.defined)(m[e])});c=n.length}),e.userOptions.fillColor&&o.length){let t=h[d.indexOf(i(o[0]))],s=1===o.length?n:h[d.indexOf(i(o[1]))],r=e.color;e.points=s,e.nextPoints=t,e.color=e.userOptions.fillColor,e.options=(0,a.merge)(n,u),e.graph=e.area,e.fillGraph=!0,C.drawGraph.call(e),e.area=e.graph,delete e.nextPoints,delete e.fillGraph,e.color=r}s.forEach((t,s)=>{h[s]?(e.points=h[s],l[t]?e.options=(0,a.merge)(l[t].styles,u):(0,a.error)('Error: "There is no '+t+' in DOCS options declared. Check if linesApiNames are consistent with your DOCS line names."'),e.graph=e["graph"+t],C.drawGraph.call(e),e["graph"+t]=e.graph):(0,a.error)('Error: "'+t+" doesn't have equivalent in pointArrayMap. To many elements in linesApiNames relative to pointArrayMap.\"")}),e.points=n,e.options=l,e.graph=p,C.drawGraph.call(e)}function l(e){let t,s=[],a=[];if(e=e||this.points,this.fillGraph&&this.nextPoints){if((t=C.getGraphPath.call(this,this.nextPoints))&&t.length){t[0][0]="L",s=C.getGraphPath.call(this,e),a=t.slice(0,s.length);for(let e=a.length-1;e>=0;e--)s.push(a[e])}}else s=C.getGraphPath.apply(this,arguments);return s}function p(e){let t=[];return(this.pointArrayMap||[]).forEach(s=>{t.push(e[s])}),t}function u(){let e=this.pointArrayMap,t=[],s;t=r(this),C.translate.apply(this,arguments),this.points.forEach(a=>{e.forEach((e,o)=>{s=a[e],this.dataModify&&(s=this.dataModify.modifyValue(s)),null!==s&&(a[t[o]]=this.yAxis.toPixels(s,!0))})})}e.compose=function(e){let a=e.prototype;return a.linesApiNames=a.linesApiNames||t.slice(),a.pointArrayMap=a.pointArrayMap||s.slice(),a.pointValKey=a.pointValKey||"top",a.areaLinesNames=a.areaLinesNames||o.slice(),a.drawGraph=n,a.getGraphPath=l,a.toYData=p,a.translate=u,e}}(o||(o={}));let T=o,{sma:P}=d().seriesTypes;function M(e,t){let s=e[0],a=0,o;for(o=1;o<e.length;o++)("max"===t&&e[o]>=s||"min"===t&&e[o]<=s)&&(s=e[o],a=o);return a}class V extends P{getValues(e,t){let s,a,o,i,r,n=t.period,l=e.xData,p=e.yData,u=p?p.length:0,h=[],d=[],c=[];for(i=n-1;i<u;i++)o=M((r=p.slice(i-n+1,i+2)).map(function(e){return e[2]??e}),"min"),s=M(r.map(function(e){return e[1]??e}),"max")/n*100,a=o/n*100,l[i+1]&&(h.push([l[i+1],s,a]),d.push(l[i+1]),c.push([s,a]));return{values:h,xData:d,yData:c}}}V.defaultOptions=(0,a.merge)(P.defaultOptions,{params:{index:void 0,period:25},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Aroon Up: {point.y}<br/>Aroon Down: {point.aroonDown}<br/>'},aroonDown:{styles:{lineWidth:1,lineColor:void 0}},dataGrouping:{approximation:"averages"}}),(0,a.extend)(V.prototype,{areaLinesNames:[],linesApiNames:["aroonDown"],nameBase:"Aroon",pointArrayMap:["y","aroonDown"],pointValKey:"y"}),T.compose(V),d().registerSeriesType("aroon",V);let{aroon:O}=d().seriesTypes;class L extends O{getValues(e,t){let s,a,o=[],i=[],r=[],n=super.getValues.call(this,e,t);for(a=0;a<n.yData.length;a++)s=n.yData[a][0]-n.yData[a][1],o.push([n.xData[a],s]),i.push(n.xData[a]),r.push(s);return{values:o,xData:i,yData:r}}}L.defaultOptions=(0,a.merge)(O.defaultOptions,{tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b>: {point.y}'}}),(0,a.extend)(L.prototype,{nameBase:"Aroon Oscillator",linesApiNames:[],pointArrayMap:["y"],pointValKey:"y"}),T.compose(O),d().registerSeriesType("aroonoscillator",L);let{sma:k}=d().seriesTypes;function w(e,t){return Math.max(e[1]-e[2],void 0===t?0:Math.abs(e[1]-t[3]),void 0===t?0:Math.abs(e[2]-t[3]))}class E extends k{getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=[[o[0],i[0]]],l=[],p=[],u=[],h,d,c=0,m=1,g=0;if(!(o.length<=s)&&(0,a.isArray)(i[0])&&4===i[0].length){for(d=1;d<=r;d++){var y,f,x,v,D;!function(e,t,s,a){let o=t[a],i=s[a];e.push([o,i])}(n,o,i,d),s<m?(c=(y=o,f=i,x=d,v=s,D=c,h=[y[x-1],(D*(v-1)+w(f[x-1],f[x-2]))/v])[1],l.push(h),p.push(h[0]),u.push(h[1])):(s===m?(c=g/(d-1),l.push([o[d-1],c]),p.push(o[d-1]),u.push(c)):g+=w(i[d-1],i[d-2]),m++)}return{values:l,xData:p,yData:u}}}}E.defaultOptions=(0,a.merge)(k.defaultOptions,{params:{index:void 0}}),d().registerSeriesType("atr",E);let{sma:I}=d().seriesTypes;class N extends I{init(){d().seriesTypes.sma.prototype.init.apply(this,arguments),this.options=(0,a.merge)({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,t){let s,o,i,r,n,l,p,u,h,c=t.period,m=t.standardDeviation,g=[],y=[],f=e.xData,x=e.yData,v=x?x.length:0,D=[];if(f.length<c)return;let A=(0,a.isArray)(x[0]);for(h=c;h<=v;h++)n=f.slice(h-c,h),l=x.slice(h-c,h),r=(u=d().seriesTypes.sma.prototype.getValues.call(this,{xData:n,yData:l},t)).xData[0],s=u.yData[0],p=function(e,t,s,a){let o=e.length,i=0,r,n=0;for(;i<o;i++)n+=(r=(s?e[i][t]:e[i])-a)*r;return Math.sqrt(n/=o-1)}(l,t.index,A,s),o=s+m*p,i=s-m*p,D.push([r,o,s,i]),g.push(r),y.push([o,s,i]);return{values:D,xData:g,yData:y}}}N.defaultOptions=(0,a.merge)(I.defaultOptions,{params:{period:20,standardDeviation:2,index:3},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1,lineColor:void 0}},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Top: {point.top}<br/>Middle: {point.middle}<br/>Bottom: {point.bottom}<br/>'},marker:{enabled:!1},dataGrouping:{approximation:"averages"}}),(0,a.extend)(N.prototype,{areaLinesNames:["top","bottom"],linesApiNames:["topLine","bottomLine"],nameComponents:["period","standardDeviation"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),T.compose(N),d().registerSeriesType("bb",N);let{sma:F}=d().seriesTypes;class B extends F{getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=[],l=[],p=[],u=[],h,d,c=[],m,g=1,y,f,x,v;if(!(o.length<=s)&&(0,a.isArray)(i[0])&&4===i[0].length){for(;g<s;)d=i[g-1],n.push((d[1]+d[2]+d[3])/3),g++;for(v=s;v<=r;v++)f=((d=i[v-1])[1]+d[2]+d[3])/3,m=n.push(f),y=(c=n.slice(m-s)).reduce(function(e,t){return e+t},0)/s,x=function(e,t){let s=e.length,a=0,o;for(o=0;o<s;o++)a+=Math.abs(t-e[o]);return a}(c,y)/s,h=(f-y)/(.015*x),l.push([o[v-1],h]),p.push(o[v-1]),u.push(h);return{values:l,xData:p,yData:u}}}}B.defaultOptions=(0,a.merge)(F.defaultOptions,{params:{index:void 0}}),d().registerSeriesType("cci",B);let{sma:G}=d().seriesTypes;class W extends G{constructor(){super(...arguments),this.nameBase="Chaikin Money Flow"}isValid(){let e=this.chart,t=this.options,s=this.linkedParent,a=this.volumeSeries||(this.volumeSeries=e.get(t.params.volumeSeriesID)),o=s?.pointArrayMap?.length===4;function i(e){return e.dataTable.rowCount>=t.params.period}return!!(s&&a&&i(s)&&i(a)&&o)}getValues(e,t){if(this.isValid())return this.getMoneyFlow(e.xData,e.yData,this.volumeSeries.getColumn("y"),t.period)}getMoneyFlow(e,t,s,a){let o=t.length,i=[],r=[],n=[],l=[],p,u,h=-1,d=0,c=0;function m(e,t){let s=e[1],a=e[2],o=e[3];return null!==t&&null!==s&&null!==a&&null!==o&&s!==a?(o-a-(s-o))/(s-a)*t:(h=p,null)}if(a>0&&a<=o){for(p=0;p<a;p++)i[p]=m(t[p],s[p]),d+=s[p],c+=i[p];for(r.push(e[p-1]),n.push(p-h>=a&&0!==d?c/d:null),l.push([r[0],n[0]]);p<o;p++)i[p]=m(t[p],s[p]),d-=s[p-a],d+=s[p],c-=i[p-a],c+=i[p],u=[e[p],p-h>=a?c/d:null],r.push(u[0]),n.push(u[1]),l.push([u[0],u[1]])}return{values:l,xData:r,yData:n}}}W.defaultOptions=(0,a.merge)(G.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume"}}),d().registerSeriesType("cmf",W);let{sma:z}=d().seriesTypes;class Y extends z{calculateDM(e,t,s){let o,i=e[t][1],r=e[t][2],n=e[t-1][1],l=e[t-1][2];return o=i-n>l-r?s?Math.max(i-n,0):0:s?0:Math.max(l-r,0),(0,a.correctFloat)(o)}calculateDI(e,t){return e/t*100}calculateDX(e,t){return(0,a.correctFloat)(Math.abs(e-t)/Math.abs(e+t)*100)}smoothValues(e,t,s){return(0,a.correctFloat)(e-e/s+t)}getTR(e,t){return(0,a.correctFloat)(Math.max(e[1]-e[2],t?Math.abs(e[1]-t[3]):0,t?Math.abs(e[2]-t[3]):0))}getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=[],l=[],p=[];if(o.length<=s||!(0,a.isArray)(i[0])||4!==i[0].length)return;let u=0,h=0,d=0,c;for(c=1;c<r;c++){let e,t,a,r,m,g,y,f,x;c<=s?(r=this.calculateDM(i,c,!0),m=this.calculateDM(i,c),g=this.getTR(i[c],i[c-1]),u+=r,h+=m,d+=g,c===s&&(y=this.calculateDI(u,d),f=this.calculateDI(h,d),x=this.calculateDX(u,h),n.push([o[c],x,y,f]),l.push(o[c]),p.push([x,y,f]))):(r=this.calculateDM(i,c,!0),m=this.calculateDM(i,c),g=this.getTR(i[c],i[c-1]),e=this.smoothValues(u,r,s),t=this.smoothValues(h,m,s),a=this.smoothValues(d,g,s),u=e,h=t,d=a,y=this.calculateDI(u,d),f=this.calculateDI(h,d),x=this.calculateDX(u,h),n.push([o[c],x,y,f]),l.push(o[c]),p.push([x,y,f]))}return{values:n,xData:l,yData:p}}}Y.defaultOptions=(0,a.merge)(z.defaultOptions,{params:{index:void 0},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color: {point.color}">●</span><b> {series.name}</b><br/><span style="color: {point.color}">DX</span>: {point.y}<br/><span style="color: {point.series.options.plusDILine.styles.lineColor}">+DI</span>: {point.plusDI}<br/><span style="color: {point.series.options.minusDILine.styles.lineColor}">-DI</span>: {point.minusDI}<br/>'},plusDILine:{styles:{lineWidth:1,lineColor:"var(--highcharts-positive-color)"}},minusDILine:{styles:{lineWidth:1,lineColor:"var(--highcharts-negative-color)"}},dataGrouping:{approximation:"averages"}}),(0,a.extend)(Y.prototype,{areaLinesNames:[],nameBase:"DMI",linesApiNames:["plusDILine","minusDILine"],pointArrayMap:["y","plusDI","minusDI"],parallelArrays:["x","y","plusDI","minusDI"],pointValKey:"y"}),T.compose(Y),d().registerSeriesType("dmi",Y);let{sma:X}=d().seriesTypes;function R(e,t,s,o,i){let r=t[s][o]??t[s];return i?(0,a.correctFloat)(e-r):(0,a.correctFloat)(e+r)}class K extends X{getValues(e,t){let s=t.period,a=t.index,o=Math.floor(s/2+1),i=s+o,r=e.xData||[],n=e.yData||[],l=n.length,p=[],u=[],h=[],d,c,m,g,y,f=0;if(!(r.length<=i)){for(g=0;g<s-1;g++)f=R(f,n,g,a);for(y=0;y<=l-i;y++)c=y+s-1,m=y+i-1,f=R(f,n,c,a),d=(n[m][a]??n[m])-f/s,f=R(f,n,y,a,!0),p.push([r[m],d]),u.push(r[m]),h.push(d);return{values:p,xData:u,yData:h}}}}K.defaultOptions=(0,a.merge)(X.defaultOptions,{params:{index:0,period:21}}),(0,a.extend)(K.prototype,{nameBase:"DPO"}),d().registerSeriesType("dpo",K);let{ema:j}=d().seriesTypes;class U extends j{getValues(e,t){let s,o,i=t.periods,r=t.period,n=[],l=[],p=[];if(2!==i.length||i[1]<=i[0])return void(0,a.error)('Error: "Chaikin requires two periods. Notice, first period should be lower than the second one."');let u=v.prototype.getValues.call(this,e,{volumeSeriesID:t.volumeSeriesID,period:r});if(!u)return;let h=super.getValues.call(this,u,{period:i[0]}),d=super.getValues.call(this,u,{period:i[1]});if(!h||!d)return;let c=i[1]-i[0];for(o=0;o<d.yData.length;o++)s=(0,a.correctFloat)(h.yData[o+c]-d.yData[o]),n.push([d.xData[o],s]),l.push(d.xData[o]),p.push(s);return{values:n,xData:l,yData:p}}}U.defaultOptions=(0,a.merge)(j.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume",period:9,periods:[3,10]}}),(0,a.extend)(U.prototype,{nameBase:"Chaikin Osc",nameComponents:["periods"]}),d().registerSeriesType("chaikin",U);let{sma:Z}=d().seriesTypes;class q extends Z{getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=[],l=[],p=[],u,h=t.index,d;if(o.length<s)return;(0,a.isNumber)(i[0])?d=i:(h=Math.min(h,i[0].length-1),d=i.map(e=>e[h]));let c=0,m=0,g=0,y;for(let e=s;e>0;e--)d[e]>d[e-1]?m+=d[e]-d[e-1]:d[e]<d[e-1]&&(g+=d[e-1]-d[e]);for(y=m+g>0?100*(m-g)/(m+g):0,l.push(o[s]),p.push(y),n.push([o[s],y]),u=s+1;u<r;u++)c=Math.abs(d[u-s-1]-d[u-s]),d[u]>d[u-1]?m+=d[u]-d[u-1]:d[u]<d[u-1]&&(g+=d[u-1]-d[u]),d[u-s]>d[u-s-1]?m-=c:g-=c,y=m+g>0?100*(m-g)/(m+g):0,l.push(o[u]),p.push(y),n.push([o[u],y]);return{values:n,xData:l,yData:p}}}q.defaultOptions=(0,a.merge)(Z.defaultOptions,{params:{period:20,index:3}}),d().registerSeriesType("cmo",q);let{ema:$}=d().seriesTypes;class _ extends ${getEMA(e,t,s,a,o,i){return super.calculateEma(i||[],e,void 0===o?1:o,this.EMApercent,t,void 0===a?-1:a,s)}getValues(e,t){let s=t.period,o=[],i=2*s,r=e.xData,n=e.yData,l=n?n.length:0,p=[],u=[],h=[],d=0,c=0,m,g,y,f,x=-1,v,D=0;if(this.EMApercent=2/(s+1),!(l<2*s-1)){for((0,a.isArray)(n[0])&&(x=t.index?t.index:0),D=(d=super.accumulatePeriodPoints(s,x,n))/s,d=0,f=s;f<l+2;f++)f<l+1&&(c=this.getEMA(n,g,D,x,f)[1],o.push(c)),g=c,f<i?d+=c:(f===i&&(D=d/s),c=o[f-s-1],m=this.getEMA([c],y,D)[1],v=[r[f-2],(0,a.correctFloat)(2*c-m)],p.push(v),u.push(v[0]),h.push(v[1]),y=m);return{values:p,xData:u,yData:h}}}}_.defaultOptions=(0,a.merge)($.defaultOptions),d().registerSeriesType("dema",_);let{ema:H}=d().seriesTypes;class J extends H{getEMA(e,t,s,a,o,i){return super.calculateEma(i||[],e,void 0===o?1:o,this.EMApercent,t,void 0===a?-1:a,s)}getTemaPoint(e,t,s,o){return[e[o-3],(0,a.correctFloat)(3*s.level1-3*s.level2+s.level3)]}getValues(e,t){let s=t.period,o=2*s,i=3*s,r=e.xData,n=e.yData,l=n?n.length:0,p=[],u=[],h=[],d=[],c=[],m={},g=-1,y=0,f=0,x,v,D,A;if(this.EMApercent=2/(s+1),!(l<3*s-2)){for((0,a.isArray)(n[0])&&(g=t.index?t.index:0),f=(y=super.accumulatePeriodPoints(s,g,n))/s,y=0,D=s;D<l+3;D++)D<l+1&&(m.level1=this.getEMA(n,x,f,g,D)[1],d.push(m.level1)),x=m.level1,D<o?y+=m.level1:(D===o&&(f=y/s,y=0),m.level1=d[D-s-1],m.level2=this.getEMA([m.level1],v,f)[1],c.push(m.level2),v=m.level2,D<i?y+=m.level2:(D===i&&(f=y/s),D===l+1&&(m.level1=d[D-s-1],m.level2=this.getEMA([m.level1],v,f)[1],c.push(m.level2)),m.level1=d[D-s-2],m.level2=c[D-2*s-1],m.level3=this.getEMA([m.level2],m.prevLevel3,f)[1],(A=this.getTemaPoint(r,i,m,D))&&(p.push(A),u.push(A[0]),h.push(A[1])),m.prevLevel3=m.level3));return{values:p,xData:u,yData:h}}}}J.defaultOptions=(0,a.merge)(H.defaultOptions),d().registerSeriesType("tema",J);let{tema:Q}=d().seriesTypes;class ee extends Q{getTemaPoint(e,t,s,o){if(o>t)return[e[o-3],0!==s.prevLevel3?(0,a.correctFloat)(s.level3-s.prevLevel3)/s.prevLevel3*100:null]}}ee.defaultOptions=(0,a.merge)(Q.defaultOptions),d().registerSeriesType("trix",ee);let{ema:et}=d().seriesTypes;class es extends et{getValues(e,t){let s,o,i=t.periods,r=t.index,n=[],l=[],p=[];if(2!==i.length||i[1]<=i[0])return void(0,a.error)('Error: "APO requires two periods. Notice, first period should be lower than the second one."');let u=super.getValues.call(this,e,{index:r,period:i[0]}),h=super.getValues.call(this,e,{index:r,period:i[1]});if(!u||!h)return;let d=i[1]-i[0];for(o=0;o<h.yData.length;o++)s=u.yData[o+d]-h.yData[o],n.push([h.xData[o],s]),l.push(h.xData[o]),p.push(s);return{values:n,xData:l,yData:p}}}es.defaultOptions=(0,a.merge)(et.defaultOptions,{params:{period:void 0,periods:[10,20]}}),(0,a.extend)(es.prototype,{nameBase:"APO",nameComponents:["periods"]}),d().registerSeriesType("apo",es);let ea=t.default.dataGrouping.approximations;var eo=s.n(ea);let ei=e.default.Color,{parse:er}=s.n(ei)(),{sma:en}=d().seriesTypes;function el(e){return{high:e.reduce(function(e,t){return Math.max(e,t[1])},-1/0),low:e.reduce(function(e,t){return Math.min(e,t[2])},1/0)}}function ep(e){let t=e.indicator;t.points=e.points,t.nextPoints=e.nextPoints,t.color=e.color,t.options=(0,a.merge)(e.options.senkouSpan.styles,e.gap),t.graph=e.graph,t.fillGraph=!0,d().seriesTypes.sma.prototype.drawGraph.call(t)}class eu extends en{constructor(){super(...arguments),this.data=[],this.options={},this.points=[],this.graphCollection=[]}init(){super.init.apply(this,arguments),this.options=(0,a.merge)({tenkanLine:{styles:{lineColor:this.color}},kijunLine:{styles:{lineColor:this.color}},chikouLine:{styles:{lineColor:this.color}},senkouSpanA:{styles:{lineColor:this.color,fill:er(this.color).setOpacity(.5).get()}},senkouSpanB:{styles:{lineColor:this.color,fill:er(this.color).setOpacity(.5).get()}},senkouSpan:{styles:{fill:er(this.color).setOpacity(.2).get()}}},this.options)}toYData(e){return[e.tenkanSen,e.kijunSen,e.chikouSpan,e.senkouSpanA,e.senkouSpanB]}translate(){for(let e of(d().seriesTypes.sma.prototype.translate.apply(this),this.points))for(let t of this.pointArrayMap){let s=e[t];(0,a.isNumber)(s)&&(e["plot"+t]=this.yAxis.toPixels(s,!0),e.plotY=e["plot"+t],e.tooltipPos=[e.plotX,e["plot"+t]],e.isNull=!1)}}drawGraph(){let e=this,t=e.points,s=e.options,o=e.graph,i=e.color,r={options:{gapSize:s.gapSize}},n=e.pointArrayMap.length,l=[[],[],[],[],[],[]],p={tenkanLine:l[0],kijunLine:l[1],chikouLine:l[2],senkouSpanA:l[3],senkouSpanB:l[4],senkouSpan:l[5]},u=[],h=e.options.senkouSpan,c=h.color||h.styles.fill,m=h.negativeColor,g=[[],[]],y=[[],[]],f=t.length,x=0,v,D,A,b,S,C,T,P,M,V,O,L,k;for(e.ikhMap=p;f--;){for(A=0,D=t[f];A<n;A++)v=e.pointArrayMap[A],(0,a.defined)(D[v])&&l[A].push({plotX:D.plotX,plotY:D["plot"+v],isNull:!1});if(m&&f!==t.length-1){let e=p.senkouSpanB.length-1,t=function(e,t,s,a){if(e&&t&&s&&a){let o=t.plotX-e.plotX,i=t.plotY-e.plotY,r=a.plotX-s.plotX,n=a.plotY-s.plotY,l=e.plotX-s.plotX,p=e.plotY-s.plotY,u=(-i*l+o*p)/(-r*i+o*n),h=(r*p-n*l)/(-r*i+o*n);if(u>=0&&u<=1&&h>=0&&h<=1)return{plotX:e.plotX+h*o,plotY:e.plotY+h*i}}}(p.senkouSpanA[e-1],p.senkouSpanA[e],p.senkouSpanB[e-1],p.senkouSpanB[e]);if(t){let s={plotX:t.plotX,plotY:t.plotY,isNull:!1,intersectPoint:!0};p.senkouSpanA.splice(e,0,s),p.senkouSpanB.splice(e,0,s),u.push(e)}}}if((0,a.objectEach)(p,(t,o)=>{s[o]&&"senkouSpan"!==o&&(e.points=l[x],e.options=(0,a.merge)(s[o].styles,r),e.graph=e["graph"+o],e.fillGraph=!1,e.color=i,d().seriesTypes.sma.prototype.drawGraph.call(e),e["graph"+o]=e.graph),x++}),e.graphCollection)for(let t of e.graphCollection)e[t].destroy(),delete e[t];if(e.graphCollection=[],m&&p.senkouSpanA[0]&&p.senkouSpanB[0]){for(u.unshift(0),u.push(p.senkouSpanA.length-1),L=0;L<u.length-1;L++)if(b=u[L],S=u[L+1],C=p.senkouSpanB.slice(b,S+1),T=p.senkouSpanA.slice(b,S+1),Math.floor(C.length/2)>=1){let e=Math.floor(C.length/2);if(C[e].plotY===T[e].plotY){for(k=0,P=0,M=0;k<C.length;k++)P+=C[k].plotY,M+=T[k].plotY;g[O=P>M?0:1]=g[O].concat(C),y[O]=y[O].concat(T)}else g[O=C[e].plotY>T[e].plotY?0:1]=g[O].concat(C),y[O]=y[O].concat(T)}else g[O=C[0].plotY>T[0].plotY?0:1]=g[O].concat(C),y[O]=y[O].concat(T);["graphsenkouSpanColor","graphsenkouSpanNegativeColor"].forEach(function(t,a){g[a].length&&y[a].length&&(V=0===a?c:m,ep({indicator:e,points:g[a],nextPoints:y[a],color:V,options:s,gap:r,graph:e[t]}),e[t]=e.graph,e.graphCollection.push(t))})}else ep({indicator:e,points:p.senkouSpanB,nextPoints:p.senkouSpanA,color:c,options:s,gap:r,graph:e.graphsenkouSpan}),e.graphsenkouSpan=e.graph;delete e.nextPoints,delete e.fillGraph,e.points=t,e.options=s,e.graph=o,e.color=i}getGraphPath(e){let t=[],s,a=[];if(e=e||this.points,this.fillGraph&&this.nextPoints){if((s=d().seriesTypes.sma.prototype.getGraphPath.call(this,this.nextPoints))&&s.length){s[0][0]="L",t=d().seriesTypes.sma.prototype.getGraphPath.call(this,e),a=s.slice(0,t.length);for(let e=a.length-1;e>=0;e--)t.push(a[e])}}else t=d().seriesTypes.sma.prototype.getGraphPath.apply(this,arguments);return t}getValues(e,t){let s,o,i,r,n,l,p,u,h,d,c=t.period,m=t.periodTenkan,g=t.periodSenkouSpanB,y=e.xData,f=e.yData,x=e.xAxis,v=f&&f.length||0,D=(0,a.getClosestDistance)(x.series.map(e=>e.getColumn("x"))),A=[],b=[];if(y.length<=c||!(0,a.isArray)(f[0])||4!==f[0].length)return;let S=y[0]-c*D;for(n=0;n<c;n++)b.push(S+n*D);for(n=0;n<v;n++)n>=m&&(l=((o=el(f.slice(n-m,n))).high+o.low)/2),n>=c&&(h=(l+(p=((i=el(f.slice(n-c,n))).high+i.low)/2))/2),n>=g&&(d=((r=el(f.slice(n-g,n))).high+r.low)/2),u=f[n][3],s=y[n],void 0===A[n]&&(A[n]=[]),void 0===A[n+c-1]&&(A[n+c-1]=[]),A[n+c-1][0]=l,A[n+c-1][1]=p,A[n+c-1][2]=void 0,void 0===A[n+1]&&(A[n+1]=[]),A[n+1][2]=u,n<=c&&(A[n+c-1][3]=void 0,A[n+c-1][4]=void 0),void 0===A[n+2*c-2]&&(A[n+2*c-2]=[]),A[n+2*c-2][3]=h,A[n+2*c-2][4]=d,b.push(s);for(n=1;n<=c;n++)b.push(s+n*D);return{values:A,xData:b,yData:A}}}eu.defaultOptions=(0,a.merge)(en.defaultOptions,{params:{index:void 0,period:26,periodTenkan:9,periodSenkouSpanB:52},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b> {series.name}</b><br/>TENKAN SEN: {point.tenkanSen:.3f}<br/>KIJUN SEN: {point.kijunSen:.3f}<br/>CHIKOU SPAN: {point.chikouSpan:.3f}<br/>SENKOU SPAN A: {point.senkouSpanA:.3f}<br/>SENKOU SPAN B: {point.senkouSpanB:.3f}<br/>'},tenkanLine:{styles:{lineWidth:1,lineColor:void 0}},kijunLine:{styles:{lineWidth:1,lineColor:void 0}},chikouLine:{styles:{lineWidth:1,lineColor:void 0}},senkouSpanA:{styles:{lineWidth:1,lineColor:void 0}},senkouSpanB:{styles:{lineWidth:1,lineColor:void 0}},senkouSpan:{styles:{fill:"rgba(255, 0, 0, 0.5)"}},dataGrouping:{approximation:"ichimoku-averages"}}),(0,a.extend)(eu.prototype,{pointArrayMap:["tenkanSen","kijunSen","chikouSpan","senkouSpanA","senkouSpanB"],pointValKey:"tenkanSen",nameComponents:["periodSenkouSpanB","period","periodTenkan"]}),eo()["ichimoku-averages"]=function(){let e,t=[];return[].forEach.call(arguments,function(s,a){t.push(eo().average(s)),e=!e&&void 0===t[a]}),e?void 0:t},d().registerSeriesType("ikh",eu);let{sma:eh}=d().seriesTypes;class ed extends eh{init(){d().seriesTypes.sma.prototype.init.apply(this,arguments),this.options=(0,a.merge)({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,t){let s,o,i,r,n,l,p,u=t.period,h=t.periodATR,c=t.multiplierATR,m=t.index,g=e.yData,y=g?g.length:0,f=[],x=d().seriesTypes.ema.prototype.getValues(e,{period:u,index:m}),v=d().seriesTypes.atr.prototype.getValues(e,{period:h}),D=[],A=[];if(!(y<u)){for(p=u;p<=y;p++)n=x.values[p-u],l=v.values[p-h],r=n[0],o=(0,a.correctFloat)(n[1]+c*l[1]),i=(0,a.correctFloat)(n[1]-c*l[1]),s=n[1],f.push([r,o,s,i]),D.push(r),A.push([o,s,i]);return{values:f,xData:D,yData:A}}}}ed.defaultOptions=(0,a.merge)(eh.defaultOptions,{params:{index:0,period:20,periodATR:10,multiplierATR:2},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1,lineColor:void 0}},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Upper Channel: {point.top}<br/>EMA({series.options.params.period}): {point.middle}<br/>Lower Channel: {point.bottom}<br/>'},marker:{enabled:!1},dataGrouping:{approximation:"averages"},lineWidth:1}),(0,a.extend)(ed.prototype,{nameBase:"Keltner Channels",areaLinesNames:["top","bottom"],nameComponents:["period","periodATR","multiplierATR"],linesApiNames:["topLine","bottomLine"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),T.compose(ed),d().registerSeriesType("keltnerchannels",ed);let{ema:ec,sma:em}=d().seriesTypes;class eg extends em{calculateTrend(e,t){return e[t][1]+e[t][2]+e[t][3]>e[t-1][1]+e[t-1][2]+e[t-1][3]?1:-1}isValidData(e){let t=this.chart,s=this.options,o=this.linkedParent,i=(0,a.isArray)(e)&&4===e.length,r=this.volumeSeries||(this.volumeSeries=t.get(s.params.volumeSeriesID));return r||(0,a.error)("Series "+s.params.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,o.chart),!!([o,r].every(function(e){return e&&e.dataTable.rowCount>=s.params.slowAvgPeriod})&&i)}getCM(e,t,s,o,i){return(0,a.correctFloat)(t+(s===o?e:i))}getDM(e,t){return(0,a.correctFloat)(e-t)}getVolumeForce(e){let t=[],s=0,a,o=1,i=0,r=e[0][1]-e[0][2],n=0,l;for(;o<e.length;o++)l=this.calculateTrend(e,o),a=this.getDM(e[o][1],e[o][2]),s=this.getCM(i,a,l,n,r),t.push([this.volumeSeries.getColumn("y")[o]*l*Math.abs(2*(a/s-1))*100]),n=l,i=s,r=a;return t}getEMA(e,t,s,a,o,i,r){return ec.prototype.calculateEma(r||[],e,void 0===i?1:i,a,t,void 0===o?-1:o,s)}getSMA(e,t,s){return ec.prototype.accumulatePeriodPoints(e,t,s)/e}getValues(e,t){let s=[],o=e.xData,i=e.yData,r=[],n=[],l=[],p,u=0,h=0,d,c,m,g=null;if(!this.isValidData(i[0]))return;let y=this.getVolumeForce(i),f=this.getSMA(t.fastAvgPeriod,0,y),x=this.getSMA(t.slowAvgPeriod,0,y),v=2/(t.fastAvgPeriod+1),D=2/(t.slowAvgPeriod+1);for(;u<i.length;u++)u>=t.fastAvgPeriod&&(c=h=this.getEMA(y,c,f,v,0,u,o)[1]),u>=t.slowAvgPeriod&&(m=d=this.getEMA(y,m,x,D,0,u,o)[1],l.push(p=(0,a.correctFloat)(h-d)),l.length>=t.signalPeriod&&(g=l.slice(-t.signalPeriod).reduce((e,t)=>e+t)/t.signalPeriod),s.push([o[u],p,g]),r.push(o[u]),n.push([p,g]));return{values:s,xData:r,yData:n}}}eg.defaultOptions=(0,a.merge)(em.defaultOptions,{params:{fastAvgPeriod:34,slowAvgPeriod:55,signalPeriod:13,volumeSeriesID:"volume"},signalLine:{styles:{lineWidth:1,lineColor:"#ff0000"}},dataGrouping:{approximation:"averages"},tooltip:{pointFormat:'<span style="color: {point.color}">●</span><b> {series.name}</b><br/><span style="color: {point.color}">Klinger</span>: {point.y}<br/><span style="color: {point.series.options.signalLine.styles.lineColor}">Signal</span>: {point.signal}<br/>'}}),(0,a.extend)(eg.prototype,{areaLinesNames:[],linesApiNames:["signalLine"],nameBase:"Klinger",nameComponents:["fastAvgPeriod","slowAvgPeriod"],pointArrayMap:["y","signal"],parallelArrays:["x","y","signal"],pointValKey:"y"}),T.compose(eg),d().registerSeriesType("klinger",eg);let{noop:ey}=i(),{sma:ef}=d().seriesTypes;class ex extends ef{init(){d().seriesTypes.sma.prototype.init.apply(this,arguments);let e=this.color,t=this.colorIndex;this.options&&((0,a.defined)(this.colorIndex)&&(this.options.signalLine?.styles&&!this.options.signalLine.styles.lineColor&&(this.options.colorIndex=this.colorIndex+1,this.getCyclic("color",void 0,this.chart.options.colors),this.options.signalLine.styles.lineColor=this.color),this.options.macdLine?.styles&&!this.options.macdLine.styles.lineColor&&(this.options.colorIndex=this.colorIndex+1,this.getCyclic("color",void 0,this.chart.options.colors),this.options.macdLine.styles.lineColor=this.color)),this.macdZones={zones:this.options.macdLine?.zones,startIndex:0},this.signalZones={zones:this.macdZones.zones?.concat(this.options.signalLine.zones),startIndex:this.macdZones.zones?.length}),this.color=e,this.colorIndex=t}toYData(e){return[e.y,e.signal,e.MACD]}translate(){let e=this,t=["plotSignal","plotMACD"];i().seriesTypes.column.prototype.translate.apply(e),e.points.forEach(function(s){[s.signal,s.MACD].forEach(function(a,o){null!==a&&(s[t[o]]=e.yAxis.toPixels(a,!0))})})}destroy(){this.graph=null,this.graphmacd=this.graphmacd&&this.graphmacd.destroy(),this.graphsignal=this.graphsignal&&this.graphsignal.destroy(),d().seriesTypes.sma.prototype.destroy.apply(this,arguments)}drawGraph(){let e=this,t=e.points,s=e.options,o=e.zones,i={options:{gapSize:s.gapSize}},r=[[],[]],n,l=t.length;for(;l--;)n=t[l],(0,a.defined)(n.plotMACD)&&r[0].push({plotX:n.plotX,plotY:n.plotMACD,isNull:!(0,a.defined)(n.plotMACD)}),(0,a.defined)(n.plotSignal)&&r[1].push({plotX:n.plotX,plotY:n.plotSignal,isNull:!(0,a.defined)(n.plotMACD)});["macd","signal"].forEach((t,o)=>{e.points=r[o],e.options=(0,a.merge)(s[`${t}Line`]?.styles||{},i),e.graph=e[`graph${t}`],e.zones=(e[`${t}Zones`].zones||[]).slice(e[`${t}Zones`].startIndex||0),d().seriesTypes.sma.prototype.drawGraph.call(e),e[`graph${t}`]=e.graph}),e.points=t,e.options=s,e.zones=o}applyZones(){let e=this.zones;this.zones=this.signalZones.zones,d().seriesTypes.sma.prototype.applyZones.call(this),this.graphmacd&&this.options.macdLine.zones.length&&this.graphmacd.hide(),this.zones=e}getValues(e,t){let s=t.longPeriod-t.shortPeriod,o=[],i=[],r=[],n,l,p,u=0,h=[];if(!(e.xData.length<t.longPeriod+t.signalPeriod)){for(p=0,n=d().seriesTypes.ema.prototype.getValues(e,{period:t.shortPeriod,index:t.index}),l=d().seriesTypes.ema.prototype.getValues(e,{period:t.longPeriod,index:t.index}),n=n.values,l=l.values;p<=n.length;p++)(0,a.defined)(l[p])&&(0,a.defined)(l[p][1])&&(0,a.defined)(n[p+s])&&(0,a.defined)(n[p+s][0])&&o.push([n[p+s][0],0,null,n[p+s][1]-l[p][1]]);for(p=0;p<o.length;p++)i.push(o[p][0]),r.push([0,null,o[p][3]]);for(p=0,h=(h=d().seriesTypes.ema.prototype.getValues({xData:i,yData:r},{period:t.signalPeriod,index:2})).values;p<o.length;p++)o[p][0]>=h[0][0]&&(o[p][2]=h[u][1],r[p]=[0,h[u][1],o[p][3]],null===o[p][3]?(o[p][1]=0,r[p][0]=0):(o[p][1]=(0,a.correctFloat)(o[p][3]-h[u][1]),r[p][0]=(0,a.correctFloat)(o[p][3]-h[u][1])),u++);return{values:o,xData:i,yData:r}}}}ex.defaultOptions=(0,a.merge)(ef.defaultOptions,{params:{shortPeriod:12,longPeriod:26,signalPeriod:9,period:26},signalLine:{zones:[],styles:{lineWidth:1,lineColor:void 0}},macdLine:{zones:[],styles:{lineWidth:1,lineColor:void 0}},threshold:0,groupPadding:.1,pointPadding:.1,crisp:!1,states:{hover:{halo:{size:0}}},tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b> {series.name}</b><br/>Value: {point.MACD}<br/>Signal: {point.signal}<br/>Histogram: {point.y}<br/>'},dataGrouping:{approximation:"averages"},minPointLength:0}),(0,a.extend)(ex.prototype,{nameComponents:["longPeriod","shortPeriod","signalPeriod"],pointArrayMap:["y","signal","MACD"],parallelArrays:["x","y","signal","MACD"],pointValKey:"y",markerAttribs:ey,getColumnMetrics:i().seriesTypes.column.prototype.getColumnMetrics,crispCol:i().seriesTypes.column.prototype.crispCol,drawPoints:i().seriesTypes.column.prototype.drawPoints}),d().registerSeriesType("macd",ex);let{sma:ev}=d().seriesTypes;function eD(e){return e.reduce(function(e,t){return e+t})}function eA(e){return(e[1]+e[2]+e[3])/3}class eb extends ev{getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=t.decimals,l=e.chart.get(t.volumeSeriesID),p=l?.getColumn("y")||[],u=[],h=[],d=[],c=[],m=[],g,y,f,x,v,D,A=!1,b=1;if(!l)return void(0,a.error)("Series "+t.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,e.chart);if(!(o.length<=s)&&(0,a.isArray)(i[0])&&4===i[0].length&&p){for(g=eA(i[b]);b<s+1;)y=g,A=(g=eA(i[b]))>=y,f=g*p[b],c.push(A?f:0),m.push(A?0:f),b++;for(D=b-1;D<r;D++){var S;D>b-1&&(c.shift(),m.shift(),y=g,A=(g=eA(i[D]))>y,f=g*p[D],c.push(A?f:0),m.push(A?0:f)),x=eD(m),S=100-100/(1+eD(c)/x),v=parseFloat(S.toFixed(n)),u.push([o[D],v]),h.push(o[D]),d.push(v)}return{values:u,xData:h,yData:d}}}}eb.defaultOptions=(0,a.merge)(ev.defaultOptions,{params:{index:void 0,volumeSeriesID:"volume",decimals:4}}),(0,a.extend)(eb.prototype,{nameBase:"Money Flow Index"}),d().registerSeriesType("mfi",eb);let{sma:eS}=d().seriesTypes;function eC(e,t,s,a,o){let i=t[s-1][o]-t[s-a-1][o];return[e[s-1],i]}class eT extends eS{getValues(e,t){let s,o,i=t.period,r=t.index,n=e.xData,l=e.yData,p=l?l.length:0,u=[],h=[],d=[];if(!(n.length<=i)&&(0,a.isArray)(l[0])){for(s=i+1;s<p;s++)o=eC(n,l,s,i,r),u.push(o),h.push(o[0]),d.push(o[1]);return o=eC(n,l,s,i,r),u.push(o),h.push(o[0]),d.push(o[1]),{values:u,xData:h,yData:d}}}}eT.defaultOptions=(0,a.merge)(eS.defaultOptions,{params:{index:3}}),(0,a.extend)(eT.prototype,{nameBase:"Momentum"}),d().registerSeriesType("momentum",eT);let{atr:eP}=d().seriesTypes;class eM extends eP{getValues(e,t){let s=super.getValues.apply(this,arguments),a=s.values.length,o=e.yData,i=0,r=t.period-1;if(s){for(;i<a;i++)s.yData[i]=s.values[i][1]/o[r][3]*100,s.values[i][1]=s.yData[i],r++;return s}}}eM.defaultOptions=(0,a.merge)(eP.defaultOptions,{tooltip:{valueSuffix:"%"}}),d().registerSeriesType("natr",eM);let{sma:eV}=d().seriesTypes;class eO extends eV{getValues(e,t){let s=e.chart.get(t.volumeSeriesID),o=e.xData,i=e.yData,r=[],n=[],l=[],p=!(0,a.isNumber)(i[0]),u=[],h=1,d=0,c=0,m=0,g=0,y;if(!s)return void(0,a.error)("Series "+t.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,e.chart);for(y=s.getColumn("y"),u=[o[0],d],m=p?i[0][3]:i[0],r.push(u),n.push(o[0]),l.push(u[1]);h<i.length;h++)c=(g=p?i[h][3]:i[h])>m?d+y[h]:g===m?d:d-y[h],u=[o[h],c],d=c,m=g,r.push(u),n.push(o[h]),l.push(u[1]);return{values:r,xData:n,yData:l}}}eO.defaultOptions=(0,a.merge)(eV.defaultOptions,{marker:{enabled:!1},params:{index:void 0,period:void 0,volumeSeriesID:"volume"},tooltip:{valueDecimals:0}}),(0,a.extend)(eO.prototype,{nameComponents:void 0}),d().registerSeriesType("obv",eO);let eL=d().seriesTypes.sma.prototype.pointClass;function ek(e,t){let s=e.series.pointArrayMap,a,o=s.length;for(d().seriesTypes.sma.prototype.pointClass.prototype[t].call(e);o--;)e[a="dataLabel"+s[o]]&&e[a].element&&e[a].destroy(),e[a]=null}let{sma:ew}=d().seriesTypes;class eE extends ew{toYData(e){return[e.P]}translate(){let e=this;super.translate.apply(e),e.points.forEach(function(t){e.pointArrayMap.forEach(function(s){(0,a.defined)(t[s])&&(t["plot"+s]=e.yAxis.toPixels(t[s],!0))})}),e.plotEndPoint=e.xAxis.toPixels(e.endPoint,!0)}getGraphPath(e){let t=this,s=[[],[],[],[],[],[],[],[],[]],o=t.pointArrayMap.length,i=t.plotEndPoint,r=[],n,l,p=e.length,u;for(;p--;){for(u=0,l=e[p];u<o;u++)n=t.pointArrayMap[u],(0,a.defined)(l[n])&&s[u].push({plotX:l.plotX,plotY:l["plot"+n],isNull:!1},{plotX:i,plotY:l["plot"+n],isNull:!1},{plotX:i,plotY:null,isNull:!0});i=l.plotX}return s.forEach(e=>{r=r.concat(super.getGraphPath.call(t,e))}),r}drawDataLabels(){let e,t,s,a,o=this,i=o.pointArrayMap;o.options.dataLabels.enabled&&(t=o.points.length,i.concat([!1]).forEach((r,n)=>{for(a=t;a--;)s=o.points[a],r?(s.y=s[r],s.pivotLine=r,s.plotY=s["plot"+r],e=s["dataLabel"+r],n&&(s["dataLabel"+i[n-1]]=s.dataLabel),s.dataLabels||(s.dataLabels=[]),s.dataLabels[0]=s.dataLabel=e=e&&e.element?e:null):s["dataLabel"+i[n-1]]=s.dataLabel;super.drawDataLabels.call(o)}))}getValues(e,t){let s,o,i,r,n,l,p,u=t.period,h=e.xData,d=e.yData,c=d?d.length:0,m=this[t.algorithm+"Placement"],g=[],y=[],f=[];if(!(h.length<u)&&(0,a.isArray)(d[0])&&4===d[0].length){for(p=u+1;p<=c+u;p+=u)i=h.slice(p-u-1,p),r=d.slice(p-u-1,p),o=i.length,s=i[o-1],l=m(this.getPivotAndHLC(r)),n=g.push([s].concat(l)),y.push(s),f.push(g[n-1].slice(1));return this.endPoint=i[0]+(s-i[0])/o*u,{values:g,xData:y,yData:f}}}getPivotAndHLC(e){let t=e[e.length-1][3],s=-1/0,a=1/0;return e.forEach(function(e){s=Math.max(s,e[1]),a=Math.min(a,e[2])}),[(s+a+t)/3,s,a,t]}standardPlacement(e){let t=e[1]-e[2];return[null,null,e[0]+t,2*e[0]-e[2],e[0],2*e[0]-e[1],e[0]-t,null,null]}camarillaPlacement(e){let t=e[1]-e[2];return[e[3]+1.5*t,e[3]+1.25*t,e[3]+1.1666*t,e[3]+1.0833*t,e[0],e[3]-1.0833*t,e[3]-1.1666*t,e[3]-1.25*t,e[3]-1.5*t]}fibonacciPlacement(e){let t=e[1]-e[2];return[null,e[0]+t,e[0]+.618*t,e[0]+.382*t,e[0],e[0]-.382*t,e[0]-.618*t,e[0]-t,null]}}eE.defaultOptions=(0,a.merge)(ew.defaultOptions,{params:{index:void 0,period:28,algorithm:"standard"},marker:{enabled:!1},enableMouseTracking:!1,dataLabels:{enabled:!0,format:"{point.pivotLine}"},dataGrouping:{approximation:"averages"}}),(0,a.extend)(eE.prototype,{nameBase:"Pivot Points",pointArrayMap:["R4","R3","R2","R1","P","S1","S2","S3","S4"],pointValKey:"P",pointClass:class extends eL{destroyElements(){ek(this,"destroyElements")}destroy(){ek(this,"destroyElements")}}}),d().registerSeriesType("pivotpoints",eE);let{ema:eI}=d().seriesTypes;class eN extends eI{getValues(e,t){let s,o,i=t.periods,r=t.index,n=[],l=[],p=[];if(2!==i.length||i[1]<=i[0])return void(0,a.error)('Error: "PPO requires two periods. Notice, first period should be lower than the second one."');let u=super.getValues.call(this,e,{index:r,period:i[0]}),h=super.getValues.call(this,e,{index:r,period:i[1]});if(!u||!h)return;let d=i[1]-i[0];for(o=0;o<h.yData.length;o++)s=(0,a.correctFloat)((u.yData[o+d]-h.yData[o])/h.yData[o]*100),n.push([h.xData[o],s]),l.push(h.xData[o]),p.push(s);return{values:n,xData:l,yData:p}}}eN.defaultOptions=(0,a.merge)(eI.defaultOptions,{params:{period:void 0,periods:[12,26]}}),(0,a.extend)(eN.prototype,{nameBase:"PPO",nameComponents:["periods"]}),d().registerSeriesType("ppo",eN);let eF=function(e,t,s){return e.reduce((e,a)=>[Math.min(e[0],a[t]),Math.max(e[1],a[s])],[Number.MAX_VALUE,-Number.MAX_VALUE])},{sma:eB}=d().seriesTypes;class eG extends eB{getValues(e,t){let s,a,o,i,r,n,l=t.period,p=e.xData,u=e.yData,h=u?u.length:0,d=[],c=[],m=[];if(!(h<l)){for(n=l;n<=h;n++)i=p[n-1],s=((a=(r=eF(u.slice(n-l,n),2,1))[1])+(o=r[0]))/2,d.push([i,a,s,o]),c.push(i),m.push([a,s,o]);return{values:d,xData:c,yData:m}}}}eG.defaultOptions=(0,a.merge)(eB.defaultOptions,{params:{index:void 0,period:20},lineWidth:1,topLine:{styles:{lineColor:"var(--highcharts-color-2)",lineWidth:1}},bottomLine:{styles:{lineColor:"var(--highcharts-color-8)",lineWidth:1}},dataGrouping:{approximation:"averages"}}),(0,a.extend)(eG.prototype,{areaLinesNames:["top","bottom"],nameBase:"Price Channel",nameComponents:["period"],linesApiNames:["topLine","bottomLine"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),T.compose(eG),d().registerSeriesType("pc",eG);let{sma:eW}=d().seriesTypes;class ez extends eW{init(){super.init.apply(this,arguments),this.options=(0,a.merge)({topLine:{styles:{lineColor:this.color}},bottomLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,t){let s,o,i,r,n,l,p,u,h=t.period,d=t.topBand,c=t.bottomBand,m=e.xData,g=e.yData,y=g?g.length:0,f=[],x=[],v=[];if(!(m.length<h)&&(0,a.isArray)(g[0])&&4===g[0].length){for(u=h;u<=y;u++)n=m.slice(u-h,u),l=g.slice(u-h,u),r=(p=super.getValues({xData:n,yData:l},t)).xData[0],o=(s=p.yData[0])*(1+d),i=s*(1-c),f.push([r,o,s,i]),x.push(r),v.push([o,s,i]);return{values:f,xData:x,yData:v}}}}ez.defaultOptions=(0,a.merge)(eW.defaultOptions,{marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>Top: {point.top}<br/>Middle: {point.middle}<br/>Bottom: {point.bottom}<br/>'},params:{period:20,topBand:.1,bottomBand:.1},bottomLine:{styles:{lineWidth:1,lineColor:void 0}},topLine:{styles:{lineWidth:1}},dataGrouping:{approximation:"averages"}}),(0,a.extend)(ez.prototype,{areaLinesNames:["top","bottom"],linesApiNames:["topLine","bottomLine"],nameComponents:["period","topBand","bottomBand"],nameBase:"Price envelopes",pointArrayMap:["top","middle","bottom"],parallelArrays:["x","y","top","bottom"],pointValKey:"middle"}),T.compose(ez),d().registerSeriesType("priceenvelopes",ez);let{sma:eY}=d().seriesTypes;function eX(e,t){return parseFloat(e.toFixed(t))}class eR extends eY{constructor(){super(...arguments),this.nameComponents=void 0}getValues(e,t){let s=e.xData,a=e.yData,o=t.maxAccelerationFactor,i=t.increment,r=t.initialAccelerationFactor,n=t.decimals,l=t.index,p=[],u=[],h=[],d=t.initialAccelerationFactor,c,m=a[0][1],g,y,f,x=1,v,D,A,b,S=a[0][2],C,T,P,M;if(!(l>=a.length)){for(M=0;M<l;M++)m=Math.max(a[M][1],m),S=Math.min(a[M][2],eX(S,n));for(c=a[M][1]>S?1:-1,g=m-S,y=(d=t.initialAccelerationFactor)*g,p.push([s[l],S]),u.push(s[l]),h.push(eX(S,n)),M=l+1;M<a.length;M++)if(v=a[M-1][2],D=a[M-2][2],A=a[M-1][1],b=a[M-2][1],T=a[M][1],P=a[M][2],null!==D&&null!==b&&null!==v&&null!==A&&null!==T&&null!==P){var V,O,L,k,w,E,I,N,F,B,G,W,z,Y,X,R,K,j,U,Z,q;w=c,E=x,I=S,N=y,F=D,B=v,G=A,W=b,z=m,S=w===E?1===w?I+N<Math.min(F,B)?I+N:Math.min(F,B):I+N>Math.max(W,G)?I+N:Math.max(W,G):z,V=c,O=m,C=1===V?T>O?T:O:P<O?P:O,L=x,k=S,Y=f=1===L&&P>k||-1===L&&T>k?1:-1,X=c,R=C,K=m,j=d,U=i,Z=o,q=r,y=(d=Y===X?1===Y&&R>K||-1===Y&&R<K?j===Z?Z:eX(j+U,2):j:q)*(g=C-S),p.push([s[M],eX(S,n)]),u.push(s[M]),h.push(eX(S,n)),x=c,c=f,m=C}return{values:p,xData:u,yData:h}}}}eR.defaultOptions=(0,a.merge)(eY.defaultOptions,{lineWidth:0,marker:{enabled:!0},states:{hover:{lineWidthPlus:0}},params:{period:void 0,initialAccelerationFactor:.02,maxAccelerationFactor:.2,increment:.02,index:2,decimals:4}}),d().registerSeriesType("psar",eR);let{sma:eK}=d().seriesTypes;class ej extends eK{getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=[],l=[],p=[],u,h=-1,d;if(!(o.length<=s)){for((0,a.isArray)(i[0])&&(h=t.index),u=s;u<r;u++)d=function(e,t,s,a,o){let i,r;return r=o<0?(i=t[s-a])?(t[s]-i)/i*100:null:(i=t[s-a][o])?(t[s][o]-i)/i*100:null,[e[s],r]}(o,i,u,s,h),n.push(d),l.push(d[0]),p.push(d[1]);return{values:n,xData:l,yData:p}}}}ej.defaultOptions=(0,a.merge)(eK.defaultOptions,{params:{index:3,period:9}}),(0,a.extend)(ej.prototype,{nameBase:"Rate of Change"}),d().registerSeriesType("roc",ej);let{sma:eU}=d().seriesTypes;function eZ(e,t){return parseFloat(e.toFixed(t))}class eq extends eU{getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=t.decimals,l=[],p=[],u=[],h=0,d=0,c=t.index,m=1,g,y,f,x,v,D;if(!(o.length<s)){for((0,a.isNumber)(i[0])?D=i:(c=Math.min(c,i[0].length-1),D=i.map(e=>e[c]));m<s;)(y=eZ(D[m]-D[m-1],n))>0?h+=y:d+=Math.abs(y),m++;for(f=eZ(h/(s-1),n),x=eZ(d/(s-1),n),v=m;v<r;v++)(y=eZ(D[v]-D[v-1],n))>0?(h=y,d=0):(h=0,d=Math.abs(y)),f=eZ((f*(s-1)+h)/s,n),g=0===(x=eZ((x*(s-1)+d)/s,n))?100:0===f?0:eZ(100-100/(1+f/x),n),l.push([o[v],g]),p.push(o[v]),u.push(g);return{values:l,xData:p,yData:u}}}}eq.defaultOptions=(0,a.merge)(eU.defaultOptions,{params:{decimals:4,index:3}}),d().registerSeriesType("rsi",eq);let{sma:e$}=d().seriesTypes;class e_ extends e${init(){super.init.apply(this,arguments),this.options=(0,a.merge)({smoothedLine:{styles:{lineColor:this.color}}},this.options)}getValues(e,t){let s=t.periods[0],o=t.periods[1],i=e.xData,r=e.yData,n=r?r.length:0,l=[],p=[],u=[],h,d,c=null,m,g;if(n<s||!(0,a.isArray)(r[0])||4!==r[0].length)return;let y=!0,f=0;for(g=s-1;g<n;g++){if(h=(m=eF(r.slice(g-s+1,g+1),2,1))[0],isNaN(d=(r[g][3]-h)/(m[1]-h)*100)&&y){f++;continue}y&&!isNaN(d)&&(y=!1);let e=p.push(i[g]);isNaN(d)?u.push([u[e-2]&&"number"==typeof u[e-2][0]?u[e-2][0]:null,null]):u.push([d,null]),g>=f+(s-1)+(o-1)&&(c=super.getValues({xData:p.slice(-o),yData:u.slice(-o)},{period:o}).yData[0]),l.push([i[g],d,c]),u[e-1][1]=c}return{values:l,xData:p,yData:u}}}e_.defaultOptions=(0,a.merge)(e$.defaultOptions,{params:{index:void 0,period:void 0,periods:[14,3]},marker:{enabled:!1},tooltip:{pointFormat:'<span style="color:{point.color}">●</span><b> {series.name}</b><br/>%K: {point.y}<br/>%D: {point.smoothed}<br/>'},smoothedLine:{styles:{lineWidth:1,lineColor:void 0}},dataGrouping:{approximation:"averages"}}),(0,a.extend)(e_.prototype,{areaLinesNames:[],nameComponents:["periods"],nameBase:"Stochastic",pointArrayMap:["y","smoothed"],parallelArrays:["x","y","smoothed"],pointValKey:"y",linesApiNames:["smoothedLine"]}),T.compose(e_),d().registerSeriesType("stochastic",e_);let{sma:eH,stochastic:eJ}=d().seriesTypes;class eQ extends eJ{getValues(e,t){let s=t.periods,a=super.getValues.call(this,e,t),o={values:[],xData:[],yData:[]};if(!a)return;o.xData=a.xData.slice(s[1]-1);let i=a.yData.slice(s[1]-1),r=eH.prototype.getValues.call(this,{xData:o.xData,yData:i},{index:1,period:s[2]});if(r){for(let e=0,t=o.xData.length;e<t;e++)o.yData[e]=[i[e][1],r.yData[e-s[2]+1]||null],o.values[e]=[o.xData[e],i[e][1],r.yData[e-s[2]+1]||null];return o}}}eQ.defaultOptions=(0,a.merge)(eJ.defaultOptions,{params:{periods:[14,3,3]}}),(0,a.extend)(eQ.prototype,{nameBase:"Slow Stochastic"}),d().registerSeriesType("slowstochastic",eQ);let{atr:e0,sma:e1}=d().seriesTypes;function e2(e,t){return{index:t,close:e.getColumn("close")[t],x:e.getColumn("x")[t]}}class e3 extends e1{init(){let e=this;super.init.apply(e,arguments);let t=(0,a.addEvent)(this.chart.constructor,"afterLinkSeries",()=>{let{linkedParent:s,options:a}=e;a&&s&&(a.cropThreshold=(s.options.cropThreshold??0)-((a.params?.period??0)-1)),t()},{order:1})}drawGraph(){let e=this,t=e.options,s=e.linkedParent,o=s.getColumn("x"),i=s?s.points:[],r=e.points,n=e.graph,l=i.length-r.length,p=l>0?l:0,u={options:{gapSize:t.gapSize}},h={top:[],bottom:[],intersect:[]},d={top:{styles:{lineWidth:t.lineWidth,lineColor:t.fallingTrendColor||t.color,dashStyle:t.dashStyle}},bottom:{styles:{lineWidth:t.lineWidth,lineColor:t.risingTrendColor||t.color,dashStyle:t.dashStyle}},intersect:t.changeTrendLine},c,m,g,y,f,x,v,D,A,b=r.length;for(;b--;)c=r[b],m=r[b-1],g=i[b-1+p],y=i[b-2+p],f=i[b+p],x=i[b+p+1],v=c.options.color,D={x:c.x,plotX:c.plotX,plotY:c.plotY,isNull:!1},!y&&g&&(0,a.isNumber)(o[g.index-1])&&(y=e2(s,g.index-1)),!x&&f&&(0,a.isNumber)(o[f.index+1])&&(x=e2(s,f.index+1)),!g&&y&&(0,a.isNumber)(o[y.index+1])?g=e2(s,y.index+1):!g&&f&&(0,a.isNumber)(o[f.index-1])&&(g=e2(s,f.index-1)),c&&g&&f&&y&&c.x!==g.x&&(c.x===f.x?(y=g,g=f):c.x===y.x?(g=y,y={close:s.getColumn("close")[g.index-1],x:o[g.index-1]}):x&&c.x===x.x&&(g=x,y=f)),m&&y&&g?(A={x:m.x,plotX:m.plotX,plotY:m.plotY,isNull:!1},c.y>=g.close&&m.y>=y.close?(c.color=v||t.fallingTrendColor||t.color,h.top.push(D)):c.y<g.close&&m.y<y.close?(c.color=v||t.risingTrendColor||t.color,h.bottom.push(D)):(h.intersect.push(D),h.intersect.push(A),h.intersect.push((0,a.merge)(A,{isNull:!0})),c.y>=g.close&&m.y<y.close?(c.color=v||t.fallingTrendColor||t.color,m.color=v||t.risingTrendColor||t.color,h.top.push(D),h.top.push((0,a.merge)(A,{isNull:!0}))):c.y<g.close&&m.y>=y.close&&(c.color=v||t.risingTrendColor||t.color,m.color=v||t.fallingTrendColor||t.color,h.bottom.push(D),h.bottom.push((0,a.merge)(A,{isNull:!0}))))):g&&(c.y>=g.close?(c.color=v||t.fallingTrendColor||t.color,h.top.push(D)):(c.color=v||t.risingTrendColor||t.color,h.bottom.push(D)));(0,a.objectEach)(h,function(t,s){e.points=t,e.options=(0,a.merge)(d[s].styles,u),e.graph=e["graph"+s+"Line"],e1.prototype.drawGraph.call(e),e["graph"+s+"Line"]=e.graph}),e.points=r,e.options=t,e.graph=n}getValues(e,t){let s=t.period,o=t.multiplier,i=e.xData,r=e.yData,n=[],l=[],p=[],u=0===s?0:s-1,h=[],d=[],c=[],m,g,y,f,x,v,D,A,b;if(!(i.length<=s)&&(0,a.isArray)(r[0])&&4===r[0].length&&!(s<0)){for(b=0,c=e0.prototype.getValues.call(this,e,{period:s}).yData;b<c.length;b++)A=r[u+b],D=r[u+b-1]||[],f=h[b-1],x=d[b-1],v=p[b-1],0===b&&(f=x=v=0),m=(0,a.correctFloat)((A[1]+A[2])/2+o*c[b]),g=(0,a.correctFloat)((A[1]+A[2])/2-o*c[b]),m<f||D[3]>f?h[b]=m:h[b]=f,g>x||D[3]<x?d[b]=g:d[b]=x,v===f&&A[3]<h[b]||v===x&&A[3]<d[b]?y=h[b]:(v===f&&A[3]>h[b]||v===x&&A[3]>d[b])&&(y=d[b]),n.push([i[u+b],y]),l.push(i[u+b]),p.push(y);return{values:n,xData:l,yData:p}}}}e3.defaultOptions=(0,a.merge)(e1.defaultOptions,{params:{index:void 0,multiplier:3,period:10},risingTrendColor:"var(--highcharts-positive-color)",fallingTrendColor:"var(--highcharts-negative-color)",changeTrendLine:{styles:{lineWidth:1,lineColor:"var(--highcharts-neutral-color-80)",dashStyle:"LongDash"}}}),(0,a.extend)(e3.prototype,{nameBase:"Supertrend",nameComponents:["multiplier","period"]}),d().registerSeriesType("supertrend",e3);let{sma:{prototype:{pointClass:e4}}}=d().seriesTypes,e5=class extends e4{destroy(){this.negativeGraphic&&(this.negativeGraphic=this.negativeGraphic.destroy()),super.destroy.apply(this,arguments)}},{noop:e6}=i(),{column:{prototype:e8},sma:e9}=d().seriesTypes,e7=Math.abs;class te extends e9{init(e,t){let s=this;delete t.data,super.init.apply(s,arguments);let o=(0,a.addEvent)(this.chart.constructor,"afterLinkSeries",function(){if(s.options){let t=s.options.params,a=s.linkedParent,o=t?.volumeSeriesID?e.get(t?.volumeSeriesID):void 0;a&&o&&s.addCustomEvents(a,o)}o()},{order:1});return s}addCustomEvents(e,t){let s=this,o=()=>{s.chart.redraw(),s.setData([]),s.zoneStarts=[],s.zoneLinesSVG&&(s.zoneLinesSVG=s.zoneLinesSVG.destroy())};return s.dataEventsToUnbind.push((0,a.addEvent)(e,"remove",function(){o()})),t&&s.dataEventsToUnbind.push((0,a.addEvent)(t,"remove",function(){o()})),s}animate(e){let t=this,s=t.chart.inverted,o=t.group,i={};if(!e&&o){let e=s?t.yAxis.top:t.xAxis.left;s?(o["forceAnimate:translateY"]=!0,i.translateY=e):(o["forceAnimate:translateX"]=!0,i.translateX=e),o.animate(i,(0,a.extend)((0,a.animObject)(t.options.animation),{step:function(e,s){t.group.attr({scaleX:Math.max(.001,s.pos)})}}))}}drawPoints(){this.options.volumeDivision.enabled&&(this.posNegVolume(!0,!0),e8.drawPoints.apply(this,arguments),this.posNegVolume(!1,!1)),e8.drawPoints.apply(this,arguments)}posNegVolume(e,t){let s=t?["positive","negative"]:["negative","positive"],a=this.options.volumeDivision,o=this.points.length,i=[],r=[],n=0,l,p,u,h;for(e?(this.posWidths=i,this.negWidths=r):(i=this.posWidths,r=this.negWidths);n<o;n++)(h=this.points[n])[s[0]+"Graphic"]=h.graphic,h.graphic=h[s[1]+"Graphic"],e&&(l=h.shapeArgs.width,(u=(p=this.priceZones[n]).wholeVolumeData)?(i.push(l/u*p.positiveVolumeData),r.push(l/u*p.negativeVolumeData)):(i.push(0),r.push(0))),h.color=t?a.styles.positiveColor:a.styles.negativeColor,h.shapeArgs.width=t?this.posWidths[n]:this.negWidths[n],h.shapeArgs.x=t?h.shapeArgs.x:this.posWidths[n]}translate(){let e=this,t=e.options,s=e.chart,o=e.yAxis,i=o.min,r=e.options.zoneLines,n=e.priceZones,l=0,p,u,h,d,c,m,g,y,f,x,v;e8.translate.apply(e);let D=e.points;D.length&&(y=t.pointPadding<.5?t.pointPadding:.1,p=e.volumeDataArray,u=(0,a.arrayMax)(p),h=s.plotWidth/2,f=s.plotTop,d=e7(o.toPixels(i)-o.toPixels(i+e.rangeStep)),m=e7(o.toPixels(i)-o.toPixels(i+e.rangeStep)),y&&(c=e7(d*(1-2*y)),l=e7((d-c)/2),d=e7(c)),D.forEach(function(t,s){x=t.barX=t.plotX=0,v=t.plotY=o.toPixels(n[s].start)-f-(o.reversed?d-m:d)-l,t.pointWidth=g=(0,a.correctFloat)(h*n[s].wholeVolumeData/u),t.shapeArgs=e.crispCol.apply(e,[x,v,g,d]),t.volumeNeg=n[s].negativeVolumeData,t.volumePos=n[s].positiveVolumeData,t.volumeAll=n[s].wholeVolumeData,delete t.origin,t.isInside=e.isPointInside(t)}),r.enabled&&e.drawZones(s,o,e.zoneStarts,r.styles))}getExtremes(){let e,t=this.options.compare,s=this.options.cumulative;return this.options.compare?(this.options.compare=void 0,e=super.getExtremes(),this.options.compare=t):this.options.cumulative?(this.options.cumulative=!1,e=super.getExtremes(),this.options.cumulative=s):e=super.getExtremes(),e}getValues(e,t){let s=e.getColumn("x",!0),o=e.processedYData,i=this.chart,r=t.ranges,n=[],l=[],p=[],u=i.get(t.volumeSeriesID);if(!e.chart)return void(0,a.error)("Base series not found! In case it has been removed, add a new one.",!0,i);if(!u||!u.getColumn("x",!0).length){let e=u&&!u.getColumn("x",!0).length?" does not contain any data.":" not found! Check `volumeSeriesID`.";(0,a.error)("Series "+t.volumeSeriesID+e,!0,i);return}let h=(0,a.isArray)(o[0]);return h&&4!==o[0].length?void(0,a.error)("Type of "+e.name+" series is different than line, OHLC or candlestick.",!0,i):((this.priceZones=this.specifyZones(h,s,o,r,u)).forEach(function(e,t){n.push([e.x,e.end]),l.push(n[t][0]),p.push(n[t][1])}),{values:n,xData:l,yData:p})}specifyZones(e,t,s,o,i){let r=!!e&&function(e){let t=e.length,s=e[0][3],a=s,o=1,i;for(;o<t;o++)(i=e[o][3])<s&&(s=i),i>a&&(a=i);return{min:s,max:a}}(s),n=this.zoneStarts=[],l=[],p=r?r.min:(0,a.arrayMin)(s),u=r?r.max:(0,a.arrayMax)(s),h=0,d=1,c=this.linkedParent;if(!this.options.compareToMain&&c.dataModify&&(p=c.dataModify.modifyValue(p),u=c.dataModify.modifyValue(u)),!(0,a.defined)(p)||!(0,a.defined)(u))return this.points.length&&(this.setData([]),this.zoneStarts=[],this.zoneLinesSVG&&(this.zoneLinesSVG=this.zoneLinesSVG.destroy())),[];let m=this.rangeStep=(0,a.correctFloat)(u-p)/o;for(n.push(p);h<o-1;h++)n.push((0,a.correctFloat)(n[h]+m));n.push(u);let g=n.length;for(;d<g;d++)l.push({index:d-1,x:t[0],start:n[d-1],end:n[d]});return this.volumePerZone(e,l,i,t,s)}volumePerZone(e,t,s,a,o){let i,r,n,l,p,u=this,h=s.getColumn("x",!0),d=s.getColumn("y",!0),c=t.length-1,m=o.length,g=d.length;return e7(m-g)&&(a[0]!==h[0]&&d.unshift(0),a[m-1]!==h[g-1]&&d.push(0)),u.volumeDataArray=[],t.forEach(function(t){for(p=0,t.wholeVolumeData=0,t.positiveVolumeData=0,t.negativeVolumeData=0;p<m;p++){r=!1,n=!1,l=e?o[p][3]:o[p],i=p?e?o[p-1][3]:o[p-1]:l;let s=u.linkedParent;!u.options.compareToMain&&s.dataModify&&(l=s.dataModify.modifyValue(l),i=s.dataModify.modifyValue(i)),l<=t.start&&0===t.index&&(r=!0),l>=t.end&&t.index===c&&(n=!0),(l>t.start||r)&&(l<t.end||n)&&(t.wholeVolumeData+=d[p],i>l?t.negativeVolumeData+=d[p]:t.positiveVolumeData+=d[p])}u.volumeDataArray.push(t.wholeVolumeData)}),t}drawZones(e,t,s,a){let o=e.renderer,i=e.plotWidth,r=e.plotTop,n=this.zoneLinesSVG,l=[],p;s.forEach(function(s){p=t.toPixels(s)-r,l=l.concat(e.renderer.crispLine([["M",0,p],["L",i,p]],a.lineWidth))}),n?n.animate({d:l}):n=this.zoneLinesSVG=o.path(l).attr({"stroke-width":a.lineWidth,stroke:a.color,dashstyle:a.dashStyle,zIndex:this.group.zIndex+.1}).add(this.group)}}te.defaultOptions=(0,a.merge)(e9.defaultOptions,{params:{index:void 0,period:void 0,ranges:12,volumeSeriesID:"volume"},zoneLines:{enabled:!0,styles:{color:"#0A9AC9",dashStyle:"LongDash",lineWidth:1}},volumeDivision:{enabled:!0,styles:{positiveColor:"rgba(144, 237, 125, 0.8)",negativeColor:"rgba(244, 91, 91, 0.8)"}},animationLimit:1e3,enableMouseTracking:!1,pointPadding:0,zIndex:-1,crisp:!0,dataGrouping:{enabled:!1},dataLabels:{align:"left",allowOverlap:!0,distance:0,enabled:!0,format:"P: {point.volumePos:.2f} | N: {point.volumeNeg:.2f}",padding:0,style:{fontSize:"0.5em"},verticalAlign:"top"}}),(0,a.extend)(te.prototype,{nameBase:"Volume by Price",nameComponents:["ranges"],calculateOn:{chart:"render",xAxis:"afterSetExtremes"},pointClass:e5,markerAttribs:e6,drawGraph:e6,getColumnMetrics:e8.getColumnMetrics,crispCol:e8.crispCol}),d().registerSeriesType("vbp",te);let{sma:tt}=d().seriesTypes;class ts extends tt{getValues(e,t){let s=e.chart,o=e.xData,i=e.yData,r=t.period,n=!0,l;return(l=s.get(t.volumeSeriesID))?((0,a.isArray)(i[0])||(n=!1),this.calculateVWAPValues(n,o,i,l,r)):void(0,a.error)("Series "+t.volumeSeriesID+" not found! Check `volumeSeriesID`.",!0,s)}calculateVWAPValues(e,t,s,a,o){let i,r,n,l,p,u,h=a.getColumn("y"),d=h.length,c=t.length,m=[],g=[],y=[],f=[],x=[];for(p=0,i=c<=d?c:d,u=0;p<i;p++)r=(e?(s[p][1]+s[p][2]+s[p][3])/3:s[p])*h[p],n=u?m[p-1]+r:r,l=u?g[p-1]+h[p]:h[p],m.push(n),g.push(l),x.push([t[p],n/l]),y.push(x[p][0]),f.push(x[p][1]),++u===o&&(u=0);return{values:x,xData:y,yData:f}}}ts.defaultOptions=(0,a.merge)(tt.defaultOptions,{params:{index:void 0,period:30,volumeSeriesID:"volume"}}),d().registerSeriesType("vwap",ts);let{sma:ta}=d().seriesTypes;class to extends ta{getValues(e,t){let s,o,i,r,n,l=t.period,p=e.xData,u=e.yData,h=u?u.length:0,d=[],c=[],m=[];if(!(p.length<l)&&(0,a.isArray)(u[0])&&4===u[0].length){for(n=l-1;n<h;n++)r=(s=eF(u.slice(n-l+1,n+1),2,1))[0],o=-(((i=s[1])-u[n][3])/(i-r)*100),p[n]&&(d.push([p[n],o]),c.push(p[n]),m.push(o));return{values:d,xData:c,yData:m}}}}to.defaultOptions=(0,a.merge)(ta.defaultOptions,{params:{index:void 0,period:14}}),(0,a.extend)(to.prototype,{nameBase:"Williams %R"}),d().registerSeriesType("williamsr",to);let{sma:ti}=d().seriesTypes;function tr(e,t,s,a,o){let i=t[a],r=o<0?s[a]:s[a][o];e.push([i,r])}function tn(e,t,s,a){let o=e.length,i=e.reduce(function(e,t,s){return[null,e[1]+t[1]*(s+1)]})[1]/((o+1)/2*o),r=t[a-1];return e.shift(),[r,i]}class tl extends ti{getValues(e,t){let s=t.period,o=e.xData,i=e.yData,r=i?i.length:0,n=o[0],l=[],p=[],u=[],h=1,d=-1,c,m,g=i[0];if(o.length<s)return;(0,a.isArray)(i[0])&&(d=t.index,g=i[0][d]);let y=[[n,g]];for(;h!==s;)tr(y,o,i,h,d),h++;for(c=h;c<r;c++)l.push(m=tn(y,o,i,c)),p.push(m[0]),u.push(m[1]),tr(y,o,i,c,d);return l.push(m=tn(y,o,i,c)),p.push(m[0]),u.push(m[1]),{values:l,xData:p,yData:u}}}tl.defaultOptions=(0,a.merge)(ti.defaultOptions,{params:{index:3,period:9}}),d().registerSeriesType("wma",tl);let{sma:tp}=d().seriesTypes;class tu extends tp{getValues(e,t){let s=t.lowIndex,a=t.highIndex,o=t.deviation/100,i={low:1+o,high:1-o},r=e.xData,n=e.yData,l=n?n.length:0,p=[],u=[],h=[],d,c,m,g,y=!1,f=!1;if(!r||r.length<=1||l&&(void 0===n[0][s]||void 0===n[0][a]))return;let x=n[0][s],v=n[0][a];for(d=1;d<l;d++)n[d][s]<=v*i.high?(p.push([r[0],v]),m=[r[d],n[d][s]],g=!0,y=!0):n[d][a]>=x*i.low&&(p.push([r[0],x]),m=[r[d],n[d][a]],g=!1,y=!0),y&&(u.push(p[0][0]),h.push(p[0][1]),c=d++,d=l);for(d=c;d<l;d++)g?(n[d][s]<=m[1]&&(m=[r[d],n[d][s]]),n[d][a]>=m[1]*i.low&&(f=a)):(n[d][a]>=m[1]&&(m=[r[d],n[d][a]]),n[d][s]<=m[1]*i.high&&(f=s)),!1!==f&&(p.push(m),u.push(m[0]),h.push(m[1]),m=[r[d],n[d][f]],g=!g,f=!1);let D=p.length;return 0!==D&&p[D-1][0]<r[l-1]&&(p.push(m),u.push(m[0]),h.push(m[1])),{values:p,xData:u,yData:h}}}tu.defaultOptions=(0,a.merge)(tp.defaultOptions,{params:{index:void 0,period:void 0,lowIndex:2,highIndex:1,deviation:1}}),(0,a.extend)(tu.prototype,{nameComponents:["deviation"],nameSuffixes:["%"],nameBase:"Zig Zag"}),d().registerSeriesType("zigzag",tu);let{sma:th}=d().seriesTypes;class td extends th{getRegressionLineParameters(e,t){let s=this.options.params.index,o=function(e,t){return(0,a.isArray)(e)?e[t]:e},i=e.reduce(function(e,t){return t+e},0),r=t.reduce(function(e,t){return o(t,s)+e},0),n=i/e.length,l=r/t.length,p,u,h=0,d=0;for(u=0;u<e.length;u++)h+=(p=e[u]-n)*(o(t[u],s)-l),d+=Math.pow(p,2);let c=d?h/d:0;return{slope:c,intercept:l-c*n}}getEndPointY(e,t){return e.slope*t+e.intercept}transformXData(e,t){let s=e[0];return e.map(function(e){return(e-s)/t})}findClosestDistance(e){let t,s,a;for(a=1;a<e.length-1;a++)(t=e[a]-e[a-1])>0&&(void 0===s||t<s)&&(s=t);return s}getValues(e,t){let s,o,i,r,n,l,p,u,h,d=e.xData,c=e.yData,m=t.period,g={xData:[],yData:[],values:[]},y=this.options.params.xAxisUnit||this.findClosestDistance(d);for(o=m-1;o<=d.length-1;o++)i=o-m+1,r=o+1,n=d[o],p=d.slice(i,r),u=c.slice(i,r),h=this.transformXData(p,y),s=this.getRegressionLineParameters(h,u),l=this.getEndPointY(s,h[h.length-1]),g.values.push({regressionLineParameters:s,x:n,y:l}),(0,a.isArray)(g.xData)&&g.xData.push(n),(0,a.isArray)(g.yData)&&g.yData.push(l);return g}}td.defaultOptions=(0,a.merge)(th.defaultOptions,{params:{xAxisUnit:null},tooltip:{valueDecimals:4}}),(0,a.extend)(td.prototype,{nameBase:"Linear Regression Indicator"}),d().registerSeriesType("linearregression",td),d().registerSeriesType("linearRegression",td);let{linearregression:tc}=d().seriesTypes;class tm extends tc{getEndPointY(e){return e.slope}}tm.defaultOptions=(0,a.merge)(tc.defaultOptions),(0,a.extend)(tm.prototype,{nameBase:"Linear Regression Slope Indicator"}),d().registerSeriesType("linearregressionslope",tm),d().registerSeriesType("linearRegressionSlope",tm);let{linearregression:tg}=d().seriesTypes;class ty extends tg{getEndPointY(e){return e.intercept}}ty.defaultOptions=(0,a.merge)(tg.defaultOptions),(0,a.extend)(ty.prototype,{nameBase:"Linear Regression Intercept Indicator"}),d().registerSeriesType("linearregressionintercept",ty),d().registerSeriesType("linearRegressionIntercept",ty);let{linearregression:tf}=d().seriesTypes;class tx extends tf{slopeToAngle(e){return 180/Math.PI*Math.atan(e)}getEndPointY(e){return this.slopeToAngle(e.slope)}}tx.defaultOptions=(0,a.merge)(tf.defaultOptions,{tooltip:{pointFormat:'<span style="color:{point.color}">●</span>{series.name}: <b>{point.y}\xb0</b><br/>'}}),(0,a.extend)(tx.prototype,{nameBase:"Linear Regression Angle Indicator"}),d().registerSeriesType("linearregressionangle",tx),d().registerSeriesType("linearRegressionAngle",tx);let{sma:tv}=d().seriesTypes;class tD extends tv{getValues(e,t){let s,o,i,r,n,l,p,u,h,d,c,m=t.period,g=t.factor,y=t.index,f=e.xData,x=e.yData,v=x?x.length:0,D=[],A=[],b=[],S=[],C=[];if(!(v<m)){for(c=0;c<=v;c++){if(c<v){var T,P,M,V;T=x[c][2],P=x[c][1],n=(0,a.correctFloat)(P-T)/((0,a.correctFloat)(P+T)/2)*1e3*g,D.push((M=x[c][1],M*(0,a.correctFloat)(1+2*n))),A.push((V=x[c][2],V*(0,a.correctFloat)(1-2*n)))}c>=m&&(h=f.slice(c-m,c),d=x.slice(c-m,c),p=super.getValues.call(this,{xData:h,yData:D.slice(c-m,c)},{period:m}),u=super.getValues.call(this,{xData:h,yData:A.slice(c-m,c)},{period:m}),r=(l=super.getValues.call(this,{xData:h,yData:d},{period:m,index:y})).xData[0],o=p.yData[0],i=u.yData[0],s=l.yData[0],b.push([r,o,s,i]),S.push(r),C.push([o,s,i]))}return{values:b,xData:S,yData:C}}}}tD.defaultOptions=(0,a.merge)(tv.defaultOptions,{params:{period:20,factor:.001,index:3},lineWidth:1,topLine:{styles:{lineWidth:1}},bottomLine:{styles:{lineWidth:1}},dataGrouping:{approximation:"averages"}}),(0,a.extend)(tD.prototype,{areaLinesNames:["top","bottom"],linesApiNames:["topLine","bottomLine"],nameBase:"Acceleration Bands",nameComponents:["period","factor"],pointArrayMap:["top","middle","bottom"],pointValKey:"middle"}),T.compose(tD),d().registerSeriesType("abands",tD);let{sma:tA}=d().seriesTypes;class tb extends tA{constructor(){super(...arguments),this.updateAllPoints=!0}getValues(e,t){let s=e.xData,o=e.yData,i=[],r=[],n=[],l=[],p=t.index,u=0,h=0,d=0,c=0,m=0;for(let e=0;e<s.length;e++)(0===e||s[e]!==s[e-1])&&m++,i.push(m);for(let e=0;e<i.length;e++)d+=i[e],c+=(0,a.isArray)(o[e])?o[e][p]:o[e];let g=d/i.length,y=c/o.length;for(let e=0;e<i.length;e++){let t=(0,a.isArray)(o[e])?o[e][p]:o[e];u+=(i[e]-g)*(t-y),h+=Math.pow(i[e]-g,2)}for(let e=0;e<i.length;e++){if(s[e]===n[n.length-1])continue;let t=s[e],a=y+u/h*(i[e]-g);r.push([t,a]),n.push(t),l.push(a)}return{xData:n,yData:l,values:r}}}tb.defaultOptions=(0,a.merge)(tA.defaultOptions,{params:{period:void 0,index:3}}),(0,a.extend)(tb.prototype,{nameBase:"Trendline",nameComponents:void 0}),d().registerSeriesType("trendline",tb);let{sma:tS}=d().seriesTypes;class tC extends tS{init(){let e=arguments,t=e[1].params,s=t&&t.average?t.average:void 0;this.averageIndicator=d().seriesTypes[s]||tS,this.averageIndicator.prototype.init.apply(this,e)}calculateDisparityIndex(e,t){return(0,a.correctFloat)(e-t)/t*100}getValues(e,t){let s=t.index,o=e.xData,i=e.yData,r=i?i.length:0,n=[],l=[],p=[],u=this.averageIndicator,h=(0,a.isArray)(i[0]),d=u.prototype.getValues(e,t),c=d.yData,m=o.indexOf(d.xData[0]);if(c&&0!==c.length&&(0,a.defined)(s)&&!(i.length<=m)){for(let e=m;e<r;e++){let t=this.calculateDisparityIndex(h?i[e][s]:i[e],c[e-m]);n.push([o[e],t]),l.push(o[e]),p.push(t)}return{values:n,xData:l,yData:p}}}}tC.defaultOptions=(0,a.merge)(tS.defaultOptions,{params:{average:"sma",index:3},marker:{enabled:!1},dataGrouping:{approximation:"averages"}}),(0,a.extend)(tC.prototype,{nameBase:"Disparity Index",nameComponents:["period","average"]}),d().registerSeriesType("disparityindex",tC);let tT=i();tT.MultipleLinesComposition=tT.MultipleLinesComposition||T;let tP=i();export{tP as default};
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: LicenseRef-Highcharts
2
2
  /**
3
- * @license Highstock JS v13.0.1 (2026-08-17)
3
+ * @license Highstock JS v13.0.2 (2026-08-27)
4
4
  * @module highcharts/indicators/indicators-all
5
5
  * @requires highcharts
6
6
  * @requires highcharts/modules/stock
@@ -640,7 +640,7 @@ class SMAIndicator extends LineSeries {
640
640
  if (!name) {
641
641
  (this.nameComponents || []).forEach(function (component, index) {
642
642
  params.push(this.options.params[component] +
643
- (0,external_highcharts_src_js_default_namespaceObject.pick)(this.nameSuffixes[index], ''));
643
+ (this.nameSuffixes[index] ?? ''));
644
644
  }, this);
645
645
  name = (this.nameBase || this.type.toUpperCase()) +
646
646
  (this.nameComponents ? ' (' + params.join(', ') + ')' : '');
@@ -1790,10 +1790,10 @@ class AroonIndicator extends AroonIndicator_SMAIndicator {
1790
1790
  for (i = period - 1; i < yValLen; i++) {
1791
1791
  slicedY = yVal.slice(i - period + 1, i + 2);
1792
1792
  xLow = getExtremeIndexInArray(slicedY.map(function (elem) {
1793
- return (0,external_highcharts_src_js_default_namespaceObject.pick)(elem[low], elem);
1793
+ return (elem[low] ?? elem);
1794
1794
  }), 'min');
1795
1795
  xHigh = getExtremeIndexInArray(slicedY.map(function (elem) {
1796
- return (0,external_highcharts_src_js_default_namespaceObject.pick)(elem[high], elem);
1796
+ return (elem[high] ?? elem);
1797
1797
  }), 'max');
1798
1798
  aroonUp = (xHigh / period) * 100;
1799
1799
  aroonDown = (xLow / period) * 100;
@@ -3069,7 +3069,7 @@ const { sma: DPOIndicator_SMAIndicator } = (external_highcharts_src_js_default_S
3069
3069
  // Utils:
3070
3070
  /** @internal */
3071
3071
  function accumulatePoints(sum, yVal, i, index, subtract) {
3072
- const price = (0,external_highcharts_src_js_default_namespaceObject.pick)(yVal[i][index], yVal[i]);
3072
+ const price = (yVal[i][index] ?? yVal[i]);
3073
3073
  if (subtract) {
3074
3074
  return (0,external_highcharts_src_js_default_namespaceObject.correctFloat)(sum - price);
3075
3075
  }
@@ -3114,7 +3114,8 @@ class DPOIndicator extends DPOIndicator_SMAIndicator {
3114
3114
  rangeIndex = j + range - 1;
3115
3115
  // Adding the last period point
3116
3116
  sum = accumulatePoints(sum, yVal, periodIndex, index);
3117
- price = (0,external_highcharts_src_js_default_namespaceObject.pick)(yVal[rangeIndex][index], yVal[rangeIndex]);
3117
+ price = yVal[rangeIndex][index] ??
3118
+ yVal[rangeIndex];
3118
3119
  oscillator = price - sum / period;
3119
3120
  // Subtracting the first period point
3120
3121
  sum = accumulatePoints(sum, yVal, j, index, true);
@@ -7654,7 +7655,7 @@ class RSIIndicator extends RSIIndicator_SMAIndicator {
7654
7655
  // Cause we need to calculate change between two points
7655
7656
  RSI = [], xData = [], yData = [];
7656
7657
  let gain = 0, loss = 0, index = params.index, range = 1, RSIPoint, change, avgGain, avgLoss, i, values;
7657
- if ((xVal.length < period)) {
7658
+ if (xVal.length < period) {
7658
7659
  return;
7659
7660
  }
7660
7661
  if ((0,external_highcharts_src_js_default_namespaceObject.isNumber)(yVal[0])) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Highstock JS v13.0.1 (2026-08-17)
2
+ * Highstock JS v13.0.2 (2026-08-27)
3
3
  * @module highcharts/indicators/indicators
4
4
  * @requires highcharts
5
5
  * @requires highcharts/modules/stock
@@ -11,4 +11,4 @@
11
11
  *
12
12
  * A commercial license may be required depending on use,
13
13
  * see www.highcharts.com/license
14
- */import*as t from"../highcharts.js";let e={};e.n=t=>{let a=t&&t.__esModule?()=>t.default:()=>t;return e.d(a,{a:a}),a},e.d=(t,a)=>{if(Array.isArray(a))for(var i=0;i<a.length;){var s=a[i++],n=a[i++];e.o(t,s)?0===n&&i++:0===n?Object.defineProperty(t,s,{enumerable:!0,value:a[i++]}):Object.defineProperty(t,s,{enumerable:!0,get:n})}else for(var s in a)e.o(a,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:a[s]})},e.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);let a=t.default;var i,s=e.n(a);let n=t.default.Chart;var r=e.n(n);let{setLength:o,splice:l}={convertToNumber:function(t,e){switch(typeof t){case"boolean":return+!!t;case"number":return isNaN(t)&&!e?null:t;default:return isNaN(t=parseFloat(`${t??""}`))&&!e?null:t}},setLength:function(t,e,a){return Array.isArray(t)?(t.length=e,t):t[a?"subarray":"slice"](0,e)},splice:function(t,e,a,i,s=[]){if(Array.isArray(t))return Array.isArray(s)||(s=Array.from(s)),{removed:t.splice(e,a,...s),array:t};let n=Object.getPrototypeOf(t).constructor,r=t[i?"subarray":"slice"](e,e+a),o=new n(t.length-a+s.length);return o.set(t.subarray(0,e),0),o.set(s,e),o.set(t.subarray(e+a),e+s.length),{removed:r,array:o}}},h=class{constructor(t={}){this.isDataTable=!0,this.autoId=!t.id,this.columns={},this.id=t.id||(0,a.uniqueKey)(),this.rowCount=0,this.versionTag=(0,a.uniqueKey)();let e=0;(0,a.objectEach)(t.columns||{},(t,a)=>{this.columns[a]=t.slice(),e=Math.max(e,t.length)}),this.applyRowCount(e)}applyRowCount(t){this.rowCount=t,(0,a.objectEach)(this.columns,(e,a)=>{e.length!==t&&(this.columns[a]=o(e,t))})}deleteRows(t,e=1){if(e>0&&t<this.rowCount){let i=0;(0,a.objectEach)(this.columns,(a,s)=>{this.columns[s]=l(a,t,e).array,i=a.length}),this.rowCount=i}(0,a.fireEvent)(this,"afterDeleteRows",{rowIndex:t,rowCount:e}),this.versionTag=(0,a.uniqueKey)()}getColumn(t,e){return this.columns[t]}getColumns(t,e){return(t||Object.keys(this.columns)).reduce((t,e)=>(t[e]=this.columns[e],t),{})}getRowObject(t,e){let a={},i=this.columns;for(let s of(e??(e=Object.keys(this.columns)),e))a[s]=i[s]?.[t];return a}setColumn(t,e=[],a=0,i){this.setColumns({[t]:e},a,i)}setColumns(t,e,i){let s=this.rowCount;(0,a.objectEach)(t,(t,e)=>{this.columns[e]=t.slice(),s=t.length}),this.applyRowCount(s),i?.silent||((0,a.fireEvent)(this,"afterSetColumns"),this.versionTag=(0,a.uniqueKey)())}setRow(t,e=this.rowCount,i,s){var n;let{columns:r}=this,o=i?this.rowCount+1:e+1,h=Object.keys(t);if(s?.addColumns!==!1)for(let t=0,e=h.length;t<e;t++)r[n=h[t]]||(r[n]=Array(this.rowCount));(0,a.objectEach)(r,(a,s)=>{a&&(i?a=l(a,e,0,!0,[t[s]]).array:a[e]=s in t?t[s]:a[e],r[s]=a)}),this.applyRowCount(Math.max(o,this.rowCount)),s?.silent||((0,a.fireEvent)(this,"afterSetRows",{rowIndex:e}),this.versionTag=(0,a.uniqueKey)())}getModified(){return this.modified||this}},u=t.default.SeriesRegistry;var p=e.n(u);let{line:c}=p().seriesTypes,d=(t,e)=>{let a=[],i=t.pointArrayMap,s=e&&t.dataTable.getModified()||t.dataTable;if(!i)return t.getColumn("y",e);let n=i.map(a=>t.getColumn(a,e));for(let t=0;t<s.rowCount;t++){let e=i.map((e,a)=>n[a]?.[t]||0);a.push(e)}return a};class f extends c{destroy(){this.dataEventsToUnbind.forEach(function(t){t()}),super.destroy.apply(this,arguments)}getName(){let t=[],e=this.name;return e||((this.nameComponents||[]).forEach(function(e,i){t.push(this.options.params[e]+(0,a.pick)(this.nameSuffixes[i],""))},this),e=(this.nameBase||this.type.toUpperCase())+(this.nameComponents?" ("+t.join(", ")+")":"")),e}getValues(t,e){let i=e.period,s=t.xData||[],n=t.yData,r=n.length,o=[],l=[],h=[],u,p=-1,c=0,d,f=0;if(!(s.length<i)){for((0,a.isArray)(n[0])&&(p=e.index?e.index:0);c<i-1;)f+=p<0?n[c]:n[c][p],c++;for(u=c;u<r;u++)f+=p<0?n[u]:n[u][p],d=[s[u],f/i],o.push(d),l.push(d[0]),h.push(d[1]),f-=p<0?n[u-c]:n[u-c][p];return{values:o,xData:l,yData:h}}}init(t,e){let i=this;super.init.call(i,t,e);let s=(0,a.addEvent)(r(),"afterLinkSeries",function({isUpdating:e}){if(e)return;let s=!!i.dataEventsToUnbind.length;if(!i.linkedParent)return(0,a.error)("Series "+i.options.linkedTo+" not found! Check `linkedTo`.",!1,t);if(!s&&(i.dataEventsToUnbind.push((0,a.addEvent)(i.linkedParent,"updatedData",function(){i.recalculateValues()})),i.calculateOn.xAxis&&i.dataEventsToUnbind.push((0,a.addEvent)(i.linkedParent.xAxis,i.calculateOn.xAxis,function(){i.recalculateValues()}))),"init"===i.calculateOn.chart)i.closestPointRange||i.recalculateValues();else if(!s){let t=(0,a.addEvent)(i.chart,i.calculateOn.chart,function(){i.recalculateValues(),t()})}},{order:0});i.dataEventsToUnbind=[],i.eventsToUnbind.push(s)}recalculateValues(){let t=this.dataTable,e=this.dataTable.rowCount,i=!0,s,n,r=this.linkedParent.yData,o=this.linkedParent.processedYData;this.linkedParent.xData=this.linkedParent.getColumn("x"),this.linkedParent.yData=d(this.linkedParent),this.linkedParent.processedYData=d(this.linkedParent,!0);let l=this.linkedParent.options&&this.linkedParent.dataTable.rowCount&&this.getValues(this.linkedParent,this.options.params)||{values:[],xData:[],yData:[]};l.xData.length=l.values.length,delete this.linkedParent.xData,this.linkedParent.yData=r,this.linkedParent.processedYData=o;let u=this.pointArrayMap||["y"],p={};if(l.yData.forEach(t=>{u.forEach((e,i)=>{let s=p[e]||[];s.push((0,a.isArray)(t)?t[i]:t),p[e]||(p[e]=s)})}),e&&!this.hasGroupedData&&this.visible&&this.points)if(this.cropped){this.xAxis&&(s=this.xAxis.min,n=this.xAxis.max);let e=this.cropData(t,s,n);this.setData(e.modified,!1)}else(this.updateAllPoints||l.xData.length!==e-1&&l.xData.length!==e+1)&&(i=!1,this.setData(new h({columns:{x:l.xData,...p}}),!1));i&&(p.x=l.xData,l.values.reduce((t,e,a)=>(Object.keys(e).forEach(i=>{t[i]||(t[i]=[]),t[i][a]=e[i]}),t),p),t.setColumns(p),delete this.xColumn,delete this.xColumnIsNumbers),this.calculateOn.xAxis&&this.getColumn("x",!0).length&&(this.isDirty=!0,this.redraw()),this.isDirtyData=!!this.linkedSeries.length,(0,a.fireEvent)(this,"updatedData")}processData(){let t=this.options.compareToMain,e=this.linkedParent;super.processData.apply(this,arguments),this.dataModify&&e&&e.dataModify&&e.dataModify.compareValue&&t&&(this.dataModify.compareValue=e.dataModify.compareValue)}}f.defaultOptions=(0,a.merge)(c.defaultOptions,{name:void 0,tooltip:{valueDecimals:4},linkedTo:void 0,compareToMain:!1,params:{index:3,period:14}}),(0,a.extend)(f.prototype,{calculateOn:{chart:"init"},hasDerivedData:!0,nameComponents:["period"],nameSuffixes:[],useCommonDataGrouping:!0}),p().registerSeriesType("sma",f);let{sma:m}=p().seriesTypes;class y extends m{accumulatePeriodPoints(t,e,a){let i=0,s=0;for(;s<t;)i+=e<0?a[s]:a[s][e],s++;return i}calculateEma(t,e,i,s,n,r,o){let l=t[i-1],h=r<0?e[i-1]:e[i-1][r];return[l,void 0===n?o:(0,a.correctFloat)(h*s+n*(1-s))]}getValues(t,e){let i=e.period,s=t.xData,n=t.yData,r=n?n.length:0,o=2/(i+1),l=[],h=[],u=[],p,c,d,f=-1,m=0;if(!(r<i)){for((0,a.isArray)(n[0])&&(f=e.index?e.index:0),m=this.accumulatePeriodPoints(i,f,n)/i,d=i;d<r+1;d++)c=this.calculateEma(s,n,d,o,p,f,m),l.push(c),h.push(c[0]),u.push(c[1]),p=c[1];return{values:l,xData:h,yData:u}}}}y.defaultOptions=(0,a.merge)(m.defaultOptions,{params:{index:3,period:9}}),p().registerSeriesType("ema",y);let{sma:{prototype:g}}=p().seriesTypes;!function(t){let e=["bottomLine"],i=["top","bottom"],s=["top"];function n(t){return"plot"+t.charAt(0).toUpperCase()+t.slice(1)}function r(t,e){let a=[];return(t.pointArrayMap||[]).forEach(t=>{t!==e&&a.push(n(t))}),a}function o(){let t=this,e=t.pointValKey,i=t.linesApiNames,s=t.areaLinesNames,o=t.points,l=t.options,h=t.graph,u={options:{gapSize:l.gapSize}},p=[],c=r(t,e),d=o.length,f;if(c.forEach((t,e)=>{for(p[e]=[];d--;)f=o[d],p[e].push({x:f.x,plotX:f.plotX,plotY:f[t],isNull:!(0,a.defined)(f[t])});d=o.length}),t.userOptions.fillColor&&s.length){let e=p[c.indexOf(n(s[0]))],i=1===s.length?o:p[c.indexOf(n(s[1]))],r=t.color;t.points=i,t.nextPoints=e,t.color=t.userOptions.fillColor,t.options=(0,a.merge)(o,u),t.graph=t.area,t.fillGraph=!0,g.drawGraph.call(t),t.area=t.graph,delete t.nextPoints,delete t.fillGraph,t.color=r}i.forEach((e,i)=>{p[i]?(t.points=p[i],l[e]?t.options=(0,a.merge)(l[e].styles,u):(0,a.error)('Error: "There is no '+e+' in DOCS options declared. Check if linesApiNames are consistent with your DOCS line names."'),t.graph=t["graph"+e],g.drawGraph.call(t),t["graph"+e]=t.graph):(0,a.error)('Error: "'+e+" doesn't have equivalent in pointArrayMap. To many elements in linesApiNames relative to pointArrayMap.\"")}),t.points=o,t.options=l,t.graph=h,g.drawGraph.call(t)}function l(t){let e,a=[],i=[];if(t=t||this.points,this.fillGraph&&this.nextPoints){if((e=g.getGraphPath.call(this,this.nextPoints))&&e.length){e[0][0]="L",a=g.getGraphPath.call(this,t),i=e.slice(0,a.length);for(let t=i.length-1;t>=0;t--)a.push(i[t])}}else a=g.getGraphPath.apply(this,arguments);return a}function h(t){let e=[];return(this.pointArrayMap||[]).forEach(a=>{e.push(t[a])}),e}function u(){let t=this.pointArrayMap,e=[],a;e=r(this),g.translate.apply(this,arguments),this.points.forEach(i=>{t.forEach((t,s)=>{a=i[t],this.dataModify&&(a=this.dataModify.modifyValue(a)),null!==a&&(i[e[s]]=this.yAxis.toPixels(a,!0))})})}t.compose=function(t){let a=t.prototype;return a.linesApiNames=a.linesApiNames||e.slice(),a.pointArrayMap=a.pointArrayMap||i.slice(),a.pointValKey=a.pointValKey||"top",a.areaLinesNames=a.areaLinesNames||s.slice(),a.drawGraph=o,a.getGraphPath=l,a.toYData=h,a.translate=u,t}}(i||(i={}));let x=i,C=s();C.MultipleLinesComposition=C.MultipleLinesComposition||x;let D=s();export{D as default};
14
+ */import*as t from"../highcharts.js";let e={};e.n=t=>{let a=t&&t.__esModule?()=>t.default:()=>t;return e.d(a,{a:a}),a},e.d=(t,a)=>{if(Array.isArray(a))for(var i=0;i<a.length;){var s=a[i++],n=a[i++];e.o(t,s)?0===n&&i++:0===n?Object.defineProperty(t,s,{enumerable:!0,value:a[i++]}):Object.defineProperty(t,s,{enumerable:!0,get:n})}else for(var s in a)e.o(a,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:a[s]})},e.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);let a=t.default;var i,s=e.n(a);let n=t.default.Chart;var r=e.n(n);let{setLength:o,splice:l}={convertToNumber:function(t,e){switch(typeof t){case"boolean":return+!!t;case"number":return isNaN(t)&&!e?null:t;default:return isNaN(t=parseFloat(`${t??""}`))&&!e?null:t}},setLength:function(t,e,a){return Array.isArray(t)?(t.length=e,t):t[a?"subarray":"slice"](0,e)},splice:function(t,e,a,i,s=[]){if(Array.isArray(t))return Array.isArray(s)||(s=Array.from(s)),{removed:t.splice(e,a,...s),array:t};let n=Object.getPrototypeOf(t).constructor,r=t[i?"subarray":"slice"](e,e+a),o=new n(t.length-a+s.length);return o.set(t.subarray(0,e),0),o.set(s,e),o.set(t.subarray(e+a),e+s.length),{removed:r,array:o}}},h=class{constructor(t={}){this.isDataTable=!0,this.autoId=!t.id,this.columns={},this.id=t.id||(0,a.uniqueKey)(),this.rowCount=0,this.versionTag=(0,a.uniqueKey)();let e=0;(0,a.objectEach)(t.columns||{},(t,a)=>{this.columns[a]=t.slice(),e=Math.max(e,t.length)}),this.applyRowCount(e)}applyRowCount(t){this.rowCount=t,(0,a.objectEach)(this.columns,(e,a)=>{e.length!==t&&(this.columns[a]=o(e,t))})}deleteRows(t,e=1){if(e>0&&t<this.rowCount){let i=0;(0,a.objectEach)(this.columns,(a,s)=>{this.columns[s]=l(a,t,e).array,i=a.length}),this.rowCount=i}(0,a.fireEvent)(this,"afterDeleteRows",{rowIndex:t,rowCount:e}),this.versionTag=(0,a.uniqueKey)()}getColumn(t,e){return this.columns[t]}getColumns(t,e){return(t||Object.keys(this.columns)).reduce((t,e)=>(t[e]=this.columns[e],t),{})}getRowObject(t,e){let a={},i=this.columns;for(let s of(e??(e=Object.keys(this.columns)),e))a[s]=i[s]?.[t];return a}setColumn(t,e=[],a=0,i){this.setColumns({[t]:e},a,i)}setColumns(t,e,i){let s=this.rowCount;(0,a.objectEach)(t,(t,e)=>{this.columns[e]=t.slice(),s=t.length}),this.applyRowCount(s),i?.silent||((0,a.fireEvent)(this,"afterSetColumns"),this.versionTag=(0,a.uniqueKey)())}setRow(t,e=this.rowCount,i,s){var n;let{columns:r}=this,o=i?this.rowCount+1:e+1,h=Object.keys(t);if(s?.addColumns!==!1)for(let t=0,e=h.length;t<e;t++)r[n=h[t]]||(r[n]=Array(this.rowCount));(0,a.objectEach)(r,(a,s)=>{a&&(i?a=l(a,e,0,!0,[t[s]]).array:a[e]=s in t?t[s]:a[e],r[s]=a)}),this.applyRowCount(Math.max(o,this.rowCount)),s?.silent||((0,a.fireEvent)(this,"afterSetRows",{rowIndex:e}),this.versionTag=(0,a.uniqueKey)())}getModified(){return this.modified||this}},u=t.default.SeriesRegistry;var p=e.n(u);let{line:c}=p().seriesTypes,d=(t,e)=>{let a=[],i=t.pointArrayMap,s=e&&t.dataTable.getModified()||t.dataTable;if(!i)return t.getColumn("y",e);let n=i.map(a=>t.getColumn(a,e));for(let t=0;t<s.rowCount;t++){let e=i.map((e,a)=>n[a]?.[t]||0);a.push(e)}return a};class f extends c{destroy(){this.dataEventsToUnbind.forEach(function(t){t()}),super.destroy.apply(this,arguments)}getName(){let t=[],e=this.name;return e||((this.nameComponents||[]).forEach(function(e,a){t.push(this.options.params[e]+(this.nameSuffixes[a]??""))},this),e=(this.nameBase||this.type.toUpperCase())+(this.nameComponents?" ("+t.join(", ")+")":"")),e}getValues(t,e){let i=e.period,s=t.xData||[],n=t.yData,r=n.length,o=[],l=[],h=[],u,p=-1,c=0,d,f=0;if(!(s.length<i)){for((0,a.isArray)(n[0])&&(p=e.index?e.index:0);c<i-1;)f+=p<0?n[c]:n[c][p],c++;for(u=c;u<r;u++)f+=p<0?n[u]:n[u][p],d=[s[u],f/i],o.push(d),l.push(d[0]),h.push(d[1]),f-=p<0?n[u-c]:n[u-c][p];return{values:o,xData:l,yData:h}}}init(t,e){let i=this;super.init.call(i,t,e);let s=(0,a.addEvent)(r(),"afterLinkSeries",function({isUpdating:e}){if(e)return;let s=!!i.dataEventsToUnbind.length;if(!i.linkedParent)return(0,a.error)("Series "+i.options.linkedTo+" not found! Check `linkedTo`.",!1,t);if(!s&&(i.dataEventsToUnbind.push((0,a.addEvent)(i.linkedParent,"updatedData",function(){i.recalculateValues()})),i.calculateOn.xAxis&&i.dataEventsToUnbind.push((0,a.addEvent)(i.linkedParent.xAxis,i.calculateOn.xAxis,function(){i.recalculateValues()}))),"init"===i.calculateOn.chart)i.closestPointRange||i.recalculateValues();else if(!s){let t=(0,a.addEvent)(i.chart,i.calculateOn.chart,function(){i.recalculateValues(),t()})}},{order:0});i.dataEventsToUnbind=[],i.eventsToUnbind.push(s)}recalculateValues(){let t=this.dataTable,e=this.dataTable.rowCount,i=!0,s,n,r=this.linkedParent.yData,o=this.linkedParent.processedYData;this.linkedParent.xData=this.linkedParent.getColumn("x"),this.linkedParent.yData=d(this.linkedParent),this.linkedParent.processedYData=d(this.linkedParent,!0);let l=this.linkedParent.options&&this.linkedParent.dataTable.rowCount&&this.getValues(this.linkedParent,this.options.params)||{values:[],xData:[],yData:[]};l.xData.length=l.values.length,delete this.linkedParent.xData,this.linkedParent.yData=r,this.linkedParent.processedYData=o;let u=this.pointArrayMap||["y"],p={};if(l.yData.forEach(t=>{u.forEach((e,i)=>{let s=p[e]||[];s.push((0,a.isArray)(t)?t[i]:t),p[e]||(p[e]=s)})}),e&&!this.hasGroupedData&&this.visible&&this.points)if(this.cropped){this.xAxis&&(s=this.xAxis.min,n=this.xAxis.max);let e=this.cropData(t,s,n);this.setData(e.modified,!1)}else(this.updateAllPoints||l.xData.length!==e-1&&l.xData.length!==e+1)&&(i=!1,this.setData(new h({columns:{x:l.xData,...p}}),!1));i&&(p.x=l.xData,l.values.reduce((t,e,a)=>(Object.keys(e).forEach(i=>{t[i]||(t[i]=[]),t[i][a]=e[i]}),t),p),t.setColumns(p),delete this.xColumn,delete this.xColumnIsNumbers),this.calculateOn.xAxis&&this.getColumn("x",!0).length&&(this.isDirty=!0,this.redraw()),this.isDirtyData=!!this.linkedSeries.length,(0,a.fireEvent)(this,"updatedData")}processData(){let t=this.options.compareToMain,e=this.linkedParent;super.processData.apply(this,arguments),this.dataModify&&e&&e.dataModify&&e.dataModify.compareValue&&t&&(this.dataModify.compareValue=e.dataModify.compareValue)}}f.defaultOptions=(0,a.merge)(c.defaultOptions,{name:void 0,tooltip:{valueDecimals:4},linkedTo:void 0,compareToMain:!1,params:{index:3,period:14}}),(0,a.extend)(f.prototype,{calculateOn:{chart:"init"},hasDerivedData:!0,nameComponents:["period"],nameSuffixes:[],useCommonDataGrouping:!0}),p().registerSeriesType("sma",f);let{sma:m}=p().seriesTypes;class y extends m{accumulatePeriodPoints(t,e,a){let i=0,s=0;for(;s<t;)i+=e<0?a[s]:a[s][e],s++;return i}calculateEma(t,e,i,s,n,r,o){let l=t[i-1],h=r<0?e[i-1]:e[i-1][r];return[l,void 0===n?o:(0,a.correctFloat)(h*s+n*(1-s))]}getValues(t,e){let i=e.period,s=t.xData,n=t.yData,r=n?n.length:0,o=2/(i+1),l=[],h=[],u=[],p,c,d,f=-1,m=0;if(!(r<i)){for((0,a.isArray)(n[0])&&(f=e.index?e.index:0),m=this.accumulatePeriodPoints(i,f,n)/i,d=i;d<r+1;d++)c=this.calculateEma(s,n,d,o,p,f,m),l.push(c),h.push(c[0]),u.push(c[1]),p=c[1];return{values:l,xData:h,yData:u}}}}y.defaultOptions=(0,a.merge)(m.defaultOptions,{params:{index:3,period:9}}),p().registerSeriesType("ema",y);let{sma:{prototype:g}}=p().seriesTypes;!function(t){let e=["bottomLine"],i=["top","bottom"],s=["top"];function n(t){return"plot"+t.charAt(0).toUpperCase()+t.slice(1)}function r(t,e){let a=[];return(t.pointArrayMap||[]).forEach(t=>{t!==e&&a.push(n(t))}),a}function o(){let t=this,e=t.pointValKey,i=t.linesApiNames,s=t.areaLinesNames,o=t.points,l=t.options,h=t.graph,u={options:{gapSize:l.gapSize}},p=[],c=r(t,e),d=o.length,f;if(c.forEach((t,e)=>{for(p[e]=[];d--;)f=o[d],p[e].push({x:f.x,plotX:f.plotX,plotY:f[t],isNull:!(0,a.defined)(f[t])});d=o.length}),t.userOptions.fillColor&&s.length){let e=p[c.indexOf(n(s[0]))],i=1===s.length?o:p[c.indexOf(n(s[1]))],r=t.color;t.points=i,t.nextPoints=e,t.color=t.userOptions.fillColor,t.options=(0,a.merge)(o,u),t.graph=t.area,t.fillGraph=!0,g.drawGraph.call(t),t.area=t.graph,delete t.nextPoints,delete t.fillGraph,t.color=r}i.forEach((e,i)=>{p[i]?(t.points=p[i],l[e]?t.options=(0,a.merge)(l[e].styles,u):(0,a.error)('Error: "There is no '+e+' in DOCS options declared. Check if linesApiNames are consistent with your DOCS line names."'),t.graph=t["graph"+e],g.drawGraph.call(t),t["graph"+e]=t.graph):(0,a.error)('Error: "'+e+" doesn't have equivalent in pointArrayMap. To many elements in linesApiNames relative to pointArrayMap.\"")}),t.points=o,t.options=l,t.graph=h,g.drawGraph.call(t)}function l(t){let e,a=[],i=[];if(t=t||this.points,this.fillGraph&&this.nextPoints){if((e=g.getGraphPath.call(this,this.nextPoints))&&e.length){e[0][0]="L",a=g.getGraphPath.call(this,t),i=e.slice(0,a.length);for(let t=i.length-1;t>=0;t--)a.push(i[t])}}else a=g.getGraphPath.apply(this,arguments);return a}function h(t){let e=[];return(this.pointArrayMap||[]).forEach(a=>{e.push(t[a])}),e}function u(){let t=this.pointArrayMap,e=[],a;e=r(this),g.translate.apply(this,arguments),this.points.forEach(i=>{t.forEach((t,s)=>{a=i[t],this.dataModify&&(a=this.dataModify.modifyValue(a)),null!==a&&(i[e[s]]=this.yAxis.toPixels(a,!0))})})}t.compose=function(t){let a=t.prototype;return a.linesApiNames=a.linesApiNames||e.slice(),a.pointArrayMap=a.pointArrayMap||i.slice(),a.pointValKey=a.pointValKey||"top",a.areaLinesNames=a.areaLinesNames||s.slice(),a.drawGraph=o,a.getGraphPath=l,a.toYData=h,a.translate=u,t}}(i||(i={}));let x=i,C=s();C.MultipleLinesComposition=C.MultipleLinesComposition||x;let D=s();export{D as default};
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: LicenseRef-Highcharts
2
2
  /**
3
- * @license Highstock JS v13.0.1 (2026-08-17)
3
+ * @license Highstock JS v13.0.2 (2026-08-27)
4
4
  * @module highcharts/indicators/indicators
5
5
  * @requires highcharts
6
6
  * @requires highcharts/modules/stock
@@ -639,7 +639,7 @@ class SMAIndicator extends LineSeries {
639
639
  if (!name) {
640
640
  (this.nameComponents || []).forEach(function (component, index) {
641
641
  params.push(this.options.params[component] +
642
- (0,external_highcharts_src_js_default_namespaceObject.pick)(this.nameSuffixes[index], ''));
642
+ (this.nameSuffixes[index] ?? ''));
643
643
  }, this);
644
644
  name = (this.nameBase || this.type.toUpperCase()) +
645
645
  (this.nameComponents ? ' (' + params.join(', ') + ')' : '');
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Highstock JS v13.0.1 (2026-08-17)
2
+ * Highstock JS v13.0.2 (2026-08-27)
3
3
  * @module highcharts/indicators/keltner-channels
4
4
  * @requires highcharts
5
5
  * @requires highcharts/modules/stock
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: LicenseRef-Highcharts
2
2
  /**
3
- * @license Highstock JS v13.0.1 (2026-08-17)
3
+ * @license Highstock JS v13.0.2 (2026-08-27)
4
4
  * @module highcharts/indicators/keltner-channels
5
5
  * @requires highcharts
6
6
  * @requires highcharts/modules/stock
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Highcharts Stock JS v13.0.1 (2026-08-17)
2
+ * Highcharts Stock JS v13.0.2 (2026-08-27)
3
3
  * @module highcharts/indicators/klinger
4
4
  * @requires highcharts
5
5
  * @requires highcharts/modules/stock
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: LicenseRef-Highcharts
2
2
  /**
3
- * @license Highcharts Stock JS v13.0.1 (2026-08-17)
3
+ * @license Highcharts Stock JS v13.0.2 (2026-08-27)
4
4
  * @module highcharts/indicators/klinger
5
5
  * @requires highcharts
6
6
  * @requires highcharts/modules/stock
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Highstock JS v13.0.1 (2026-08-17)
2
+ * Highstock JS v13.0.2 (2026-08-27)
3
3
  * @module highcharts/indicators/macd
4
4
  * @requires highcharts
5
5
  * @requires highcharts/modules/stock
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: LicenseRef-Highcharts
2
2
  /**
3
- * @license Highstock JS v13.0.1 (2026-08-17)
3
+ * @license Highstock JS v13.0.2 (2026-08-27)
4
4
  * @module highcharts/indicators/macd
5
5
  * @requires highcharts
6
6
  * @requires highcharts/modules/stock
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Highstock JS v13.0.1 (2026-08-17)
2
+ * Highstock JS v13.0.2 (2026-08-27)
3
3
  * @module highcharts/indicators/mfi
4
4
  * @requires highcharts
5
5
  * @requires highcharts/modules/stock
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: LicenseRef-Highcharts
2
2
  /**
3
- * @license Highstock JS v13.0.1 (2026-08-17)
3
+ * @license Highstock JS v13.0.2 (2026-08-27)
4
4
  * @module highcharts/indicators/mfi
5
5
  * @requires highcharts
6
6
  * @requires highcharts/modules/stock
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Highstock JS v13.0.1 (2026-08-17)
2
+ * Highstock JS v13.0.2 (2026-08-27)
3
3
  * @module highcharts/indicators/momentum
4
4
  * @requires highcharts
5
5
  * @requires highcharts/modules/stock
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: LicenseRef-Highcharts
2
2
  /**
3
- * @license Highstock JS v13.0.1 (2026-08-17)
3
+ * @license Highstock JS v13.0.2 (2026-08-27)
4
4
  * @module highcharts/indicators/momentum
5
5
  * @requires highcharts
6
6
  * @requires highcharts/modules/stock
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Highstock JS v13.0.1 (2026-08-17)
2
+ * Highstock JS v13.0.2 (2026-08-27)
3
3
  * @module highcharts/indicators/natr
4
4
  * @requires highcharts
5
5
  * @requires highcharts/modules/stock