@ntlab/ntjs-assets 2.0.21 → 2.0.23

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 (434) hide show
  1. package/assets/js/DataTables/DataTables/js/dataTables.js +32 -15
  2. package/assets/js/DataTables/DataTables/js/dataTables.min.js +2 -2
  3. package/assets/js/DataTables/Extensions/ColReorder/js/dataTables.colReorder.js +13 -6
  4. package/assets/js/DataTables/Extensions/ColReorder/js/dataTables.colReorder.min.js +4 -4
  5. package/assets/js/DataTables/Extensions/KeyTable/js/dataTables.keyTable.js +4 -4
  6. package/assets/js/DataTables/Extensions/KeyTable/js/dataTables.keyTable.min.js +2 -2
  7. package/assets/js/DataTables/Extensions/Scroller/js/dataTables.scroller.js +7 -3
  8. package/assets/js/DataTables/Extensions/Scroller/js/dataTables.scroller.min.js +2 -2
  9. package/assets/js/DataTables/Extensions/Select/js/dataTables.select.js +22 -8
  10. package/assets/js/DataTables/Extensions/Select/js/dataTables.select.min.js +2 -2
  11. package/assets/js/cdn.json +7 -7
  12. package/assets/js/highcharts/css/highcharts.css +74 -0
  13. package/assets/js/highcharts/es-modules/Accessibility/Components/LegendComponent.js +1 -1
  14. package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +1 -1
  15. package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +9 -2
  16. package/assets/js/highcharts/es-modules/Core/Axis/Axis.js +25 -15
  17. package/assets/js/highcharts/es-modules/Core/Axis/AxisDefaults.js +3 -2
  18. package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxis.js +1 -1
  19. package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxisDefaults.js +2 -2
  20. package/assets/js/highcharts/es-modules/Core/Axis/GridAxis.js +1 -1
  21. package/assets/js/highcharts/es-modules/Core/Axis/OrdinalAxis.js +1 -1
  22. package/assets/js/highcharts/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +10 -0
  23. package/assets/js/highcharts/es-modules/Core/Axis/RadialAxis.js +19 -113
  24. package/assets/js/highcharts/es-modules/Core/Axis/RadialAxisDefaults.js +128 -0
  25. package/assets/js/highcharts/es-modules/Core/Axis/Tick.js +9 -13
  26. package/assets/js/highcharts/es-modules/Core/Chart/Chart.js +21 -17
  27. package/assets/js/highcharts/es-modules/Core/Chart/ChartDefaults.js +4 -2
  28. package/assets/js/highcharts/es-modules/Core/Chart/StockChart.js +5 -9
  29. package/assets/js/highcharts/es-modules/Core/Defaults.js +180 -91
  30. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGElement.js +50 -28
  31. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGLabel.js +6 -3
  32. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGRenderer.js +38 -80
  33. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/Symbols.js +9 -5
  34. package/assets/js/highcharts/es-modules/Core/Series/DataLabel.js +17 -10
  35. package/assets/js/highcharts/es-modules/Core/Series/Point.js +4 -3
  36. package/assets/js/highcharts/es-modules/Core/Series/Series.js +24 -15
  37. package/assets/js/highcharts/es-modules/Core/Series/SeriesDefaults.js +15 -0
  38. package/assets/js/highcharts/es-modules/Core/Templating.js +4 -1
  39. package/assets/js/highcharts/es-modules/Core/Tooltip.js +17 -55
  40. package/assets/js/highcharts/es-modules/Core/Utilities.js +16 -0
  41. package/assets/js/highcharts/es-modules/Data/Converters/CSVConverter.js +1 -1
  42. package/assets/js/highcharts/es-modules/Data/DataCursor.js +34 -16
  43. package/assets/js/highcharts/es-modules/Data/DataPool.js +1 -1
  44. package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/Controllable.js +3 -0
  45. package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +0 -3
  46. package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +0 -3
  47. package/assets/js/highcharts/es-modules/Extensions/Annotations/EventEmitter.js +6 -6
  48. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +2 -0
  49. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/CrookedLine.js +1 -0
  50. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Fibonacci.js +4 -2
  51. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +2 -1
  52. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/InfinityLine.js +2 -1
  53. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Measure.js +4 -3
  54. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Pitchfork.js +11 -5
  55. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/TimeCycles.js +2 -1
  56. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Tunnel.js +4 -2
  57. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/VerticalLine.js +2 -1
  58. package/assets/js/highcharts/es-modules/Extensions/Boost/BoostChart.js +11 -3
  59. package/assets/js/highcharts/es-modules/Extensions/Boost/BoostSeries.js +7 -4
  60. package/assets/js/highcharts/es-modules/Extensions/Boost/WGLRenderer.js +11 -2
  61. package/assets/js/highcharts/es-modules/Extensions/Data.js +3 -3
  62. package/assets/js/highcharts/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +1 -0
  63. package/assets/js/highcharts/es-modules/Extensions/DownloadURL.js +3 -0
  64. package/assets/js/highcharts/es-modules/Extensions/DragPanes/AxisResizer.js +1 -2
  65. package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DragDropProps.js +17 -0
  66. package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DraggablePoints.js +1 -0
  67. package/assets/js/highcharts/es-modules/Extensions/Drilldown/Drilldown.js +14 -14
  68. package/assets/js/highcharts/es-modules/Extensions/Exporting/Exporting.js +13 -18
  69. package/assets/js/highcharts/es-modules/Extensions/Exporting/ExportingDefaults.js +8 -6
  70. package/assets/js/highcharts/es-modules/Extensions/OfflineExporting/OfflineExporting.js +38 -30
  71. package/assets/js/highcharts/es-modules/Extensions/Pane/PaneDefaults.js +11 -0
  72. package/assets/js/highcharts/es-modules/Extensions/RegexLimits.js +1 -0
  73. package/assets/js/highcharts/es-modules/Extensions/ScrollablePlotArea.js +19 -17
  74. package/assets/js/highcharts/es-modules/Extensions/Themes/BrandDark.js +13 -1
  75. package/assets/js/highcharts/es-modules/Maps/MapNavigation.js +5 -3
  76. package/assets/js/highcharts/es-modules/Maps/MapView.js +5 -5
  77. package/assets/js/highcharts/es-modules/Maps/Projection.js +39 -20
  78. package/assets/js/highcharts/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +10 -231
  79. package/assets/js/highcharts/es-modules/Series/ArcDiagram/ArcDiagramSeriesDefaults.js +245 -0
  80. package/assets/js/highcharts/es-modules/Series/Area/AreaSeries.js +2 -222
  81. package/assets/js/highcharts/es-modules/Series/Area/AreaSeriesDefaults.js +239 -0
  82. package/assets/js/highcharts/es-modules/Series/AreaRange/AreaRangeSeries.js +0 -133
  83. package/assets/js/highcharts/es-modules/Series/AreaRange/AreaRangeSeriesDefaults.js +273 -0
  84. package/assets/js/highcharts/es-modules/Series/BoxPlot/BoxPlotSeries.js +36 -38
  85. package/assets/js/highcharts/es-modules/Series/Bubble/BubbleSeries.js +17 -6
  86. package/assets/js/highcharts/es-modules/Series/Candlestick/CandlestickSeries.js +9 -11
  87. package/assets/js/highcharts/es-modules/Series/ColorMapComposition.js +28 -4
  88. package/assets/js/highcharts/es-modules/Series/Column/ColumnDataLabel.js +1 -1
  89. package/assets/js/highcharts/es-modules/Series/Column/ColumnSeries.js +25 -30
  90. package/assets/js/highcharts/es-modules/Series/DataModifyComposition.js +26 -2
  91. package/assets/js/highcharts/es-modules/Series/DotPlot/DotPlotSeries.js +37 -27
  92. package/assets/js/highcharts/es-modules/Series/DotPlot/DotPlotSeriesDefaults.js +3 -2
  93. package/assets/js/highcharts/es-modules/Series/Dumbbell/DumbbellSeries.js +1 -39
  94. package/assets/js/highcharts/es-modules/Series/Dumbbell/DumbbellSeriesDefaults.js +29 -0
  95. package/assets/js/highcharts/es-modules/Series/Flags/FlagsSeries.js +2 -1
  96. package/assets/js/highcharts/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +3 -10
  97. package/assets/js/highcharts/es-modules/Series/HLC/HLCSeries.js +4 -5
  98. package/assets/js/highcharts/es-modules/Series/MapLine/MapLineSeriesDefaults.js +7 -6
  99. package/assets/js/highcharts/es-modules/Series/MapPoint/MapPointSeriesDefaults.js +17 -11
  100. package/assets/js/highcharts/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +1 -1
  101. package/assets/js/highcharts/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +1 -1
  102. package/assets/js/highcharts/es-modules/Series/OHLC/OHLCSeries.js +3 -5
  103. package/assets/js/highcharts/es-modules/Series/Organization/OrganizationSeries.js +17 -19
  104. package/assets/js/highcharts/es-modules/Series/Organization/OrganizationSeriesDefaults.js +1 -1
  105. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -3
  106. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleSeries.js +3 -3
  107. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleSeriesDefaults.js +0 -1
  108. package/assets/js/highcharts/es-modules/Series/Pyramid/PyramidSeriesDefaults.js +3 -3
  109. package/assets/js/highcharts/es-modules/Series/Sankey/SankeySeries.js +5 -6
  110. package/assets/js/highcharts/es-modules/Series/Sankey/SankeySeriesDefaults.js +1 -1
  111. package/assets/js/highcharts/es-modules/Series/SeriesOnPointComposition.js +2 -2
  112. package/assets/js/highcharts/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +1 -1
  113. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphLink.js +12 -7
  114. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphSeries.js +8 -9
  115. package/assets/js/highcharts/es-modules/Series/Treemap/TreemapSeries.js +8 -8
  116. package/assets/js/highcharts/es-modules/Series/Treemap/TreemapSeriesDefaults.js +1 -1
  117. package/assets/js/highcharts/es-modules/Series/Variwide/VariwideSeries.js +4 -4
  118. package/assets/js/highcharts/es-modules/Series/Venn/VennSeriesDefaults.js +2 -2
  119. package/assets/js/highcharts/es-modules/Series/Waterfall/WaterfallSeries.js +11 -12
  120. package/assets/js/highcharts/es-modules/Series/XRange/XRangeSeries.js +4 -4
  121. package/assets/js/highcharts/es-modules/Stock/Navigator/Navigator.js +2 -5
  122. package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorDefaults.js +11 -0
  123. package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorSymbols.js +9 -10
  124. package/assets/js/highcharts/es-modules/Stock/RangeSelector/RangeSelector.js +162 -187
  125. package/assets/js/highcharts/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +32 -74
  126. package/assets/js/highcharts/es-modules/Stock/Scrollbar/Scrollbar.js +6 -7
  127. package/assets/js/highcharts/es-modules/masters/highcharts-more.src.js +2 -0
  128. package/assets/js/highcharts/highcharts-3d.js +1 -1
  129. package/assets/js/highcharts/highcharts-3d.src.js +1 -1
  130. package/assets/js/highcharts/highcharts-gantt.js +3 -3
  131. package/assets/js/highcharts/highcharts-gantt.src.js +2008 -906
  132. package/assets/js/highcharts/highcharts-more.js +2 -2
  133. package/assets/js/highcharts/highcharts-more.src.js +234 -313
  134. package/assets/js/highcharts/highcharts.js +3 -3
  135. package/assets/js/highcharts/highcharts.src.js +743 -616
  136. package/assets/js/highcharts/highmaps.js +3 -3
  137. package/assets/js/highcharts/highmaps.src.js +862 -673
  138. package/assets/js/highcharts/highstock.js +3 -3
  139. package/assets/js/highcharts/highstock.src.js +1016 -935
  140. package/assets/js/highcharts/indicators/acceleration-bands.js +1 -1
  141. package/assets/js/highcharts/indicators/acceleration-bands.src.js +1 -1
  142. package/assets/js/highcharts/indicators/accumulation-distribution.js +1 -1
  143. package/assets/js/highcharts/indicators/accumulation-distribution.src.js +1 -1
  144. package/assets/js/highcharts/indicators/ao.js +1 -1
  145. package/assets/js/highcharts/indicators/ao.src.js +1 -1
  146. package/assets/js/highcharts/indicators/apo.js +1 -1
  147. package/assets/js/highcharts/indicators/apo.src.js +1 -1
  148. package/assets/js/highcharts/indicators/aroon-oscillator.js +1 -1
  149. package/assets/js/highcharts/indicators/aroon-oscillator.src.js +1 -1
  150. package/assets/js/highcharts/indicators/aroon.js +1 -1
  151. package/assets/js/highcharts/indicators/aroon.src.js +1 -1
  152. package/assets/js/highcharts/indicators/atr.js +1 -1
  153. package/assets/js/highcharts/indicators/atr.src.js +1 -1
  154. package/assets/js/highcharts/indicators/bollinger-bands.js +1 -1
  155. package/assets/js/highcharts/indicators/bollinger-bands.src.js +1 -1
  156. package/assets/js/highcharts/indicators/cci.js +1 -1
  157. package/assets/js/highcharts/indicators/cci.src.js +1 -1
  158. package/assets/js/highcharts/indicators/chaikin.js +1 -1
  159. package/assets/js/highcharts/indicators/chaikin.src.js +1 -1
  160. package/assets/js/highcharts/indicators/cmf.js +1 -1
  161. package/assets/js/highcharts/indicators/cmf.src.js +1 -1
  162. package/assets/js/highcharts/indicators/cmo.js +1 -1
  163. package/assets/js/highcharts/indicators/cmo.src.js +1 -1
  164. package/assets/js/highcharts/indicators/dema.js +1 -1
  165. package/assets/js/highcharts/indicators/dema.src.js +1 -1
  166. package/assets/js/highcharts/indicators/disparity-index.js +1 -1
  167. package/assets/js/highcharts/indicators/disparity-index.src.js +1 -1
  168. package/assets/js/highcharts/indicators/dmi.js +1 -1
  169. package/assets/js/highcharts/indicators/dmi.src.js +1 -1
  170. package/assets/js/highcharts/indicators/dpo.js +1 -1
  171. package/assets/js/highcharts/indicators/dpo.src.js +1 -1
  172. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.js +1 -1
  173. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.src.js +1 -1
  174. package/assets/js/highcharts/indicators/indicators-all.js +1 -1
  175. package/assets/js/highcharts/indicators/indicators-all.src.js +1 -1
  176. package/assets/js/highcharts/indicators/indicators.js +1 -1
  177. package/assets/js/highcharts/indicators/indicators.src.js +1 -1
  178. package/assets/js/highcharts/indicators/keltner-channels.js +1 -1
  179. package/assets/js/highcharts/indicators/keltner-channels.src.js +1 -1
  180. package/assets/js/highcharts/indicators/klinger.js +1 -1
  181. package/assets/js/highcharts/indicators/klinger.src.js +1 -1
  182. package/assets/js/highcharts/indicators/macd.js +1 -1
  183. package/assets/js/highcharts/indicators/macd.src.js +1 -1
  184. package/assets/js/highcharts/indicators/mfi.js +1 -1
  185. package/assets/js/highcharts/indicators/mfi.src.js +1 -1
  186. package/assets/js/highcharts/indicators/momentum.js +1 -1
  187. package/assets/js/highcharts/indicators/momentum.src.js +1 -1
  188. package/assets/js/highcharts/indicators/natr.js +1 -1
  189. package/assets/js/highcharts/indicators/natr.src.js +1 -1
  190. package/assets/js/highcharts/indicators/obv.js +1 -1
  191. package/assets/js/highcharts/indicators/obv.src.js +1 -1
  192. package/assets/js/highcharts/indicators/pivot-points.js +1 -1
  193. package/assets/js/highcharts/indicators/pivot-points.src.js +1 -1
  194. package/assets/js/highcharts/indicators/ppo.js +1 -1
  195. package/assets/js/highcharts/indicators/ppo.src.js +1 -1
  196. package/assets/js/highcharts/indicators/price-channel.js +1 -1
  197. package/assets/js/highcharts/indicators/price-channel.src.js +1 -1
  198. package/assets/js/highcharts/indicators/price-envelopes.js +1 -1
  199. package/assets/js/highcharts/indicators/price-envelopes.src.js +1 -1
  200. package/assets/js/highcharts/indicators/psar.js +1 -1
  201. package/assets/js/highcharts/indicators/psar.src.js +1 -1
  202. package/assets/js/highcharts/indicators/regressions.js +1 -1
  203. package/assets/js/highcharts/indicators/regressions.src.js +1 -1
  204. package/assets/js/highcharts/indicators/roc.js +1 -1
  205. package/assets/js/highcharts/indicators/roc.src.js +1 -1
  206. package/assets/js/highcharts/indicators/rsi.js +1 -1
  207. package/assets/js/highcharts/indicators/rsi.src.js +1 -1
  208. package/assets/js/highcharts/indicators/slow-stochastic.js +1 -1
  209. package/assets/js/highcharts/indicators/slow-stochastic.src.js +1 -1
  210. package/assets/js/highcharts/indicators/stochastic.js +1 -1
  211. package/assets/js/highcharts/indicators/stochastic.src.js +1 -1
  212. package/assets/js/highcharts/indicators/supertrend.js +1 -1
  213. package/assets/js/highcharts/indicators/supertrend.src.js +1 -1
  214. package/assets/js/highcharts/indicators/tema.js +1 -1
  215. package/assets/js/highcharts/indicators/tema.src.js +1 -1
  216. package/assets/js/highcharts/indicators/trendline.js +1 -1
  217. package/assets/js/highcharts/indicators/trendline.src.js +1 -1
  218. package/assets/js/highcharts/indicators/trix.js +1 -1
  219. package/assets/js/highcharts/indicators/trix.src.js +1 -1
  220. package/assets/js/highcharts/indicators/volume-by-price.js +1 -1
  221. package/assets/js/highcharts/indicators/volume-by-price.src.js +1 -1
  222. package/assets/js/highcharts/indicators/vwap.js +1 -1
  223. package/assets/js/highcharts/indicators/vwap.src.js +1 -1
  224. package/assets/js/highcharts/indicators/williams-r.js +1 -1
  225. package/assets/js/highcharts/indicators/williams-r.src.js +1 -1
  226. package/assets/js/highcharts/indicators/wma.js +1 -1
  227. package/assets/js/highcharts/indicators/wma.src.js +1 -1
  228. package/assets/js/highcharts/indicators/zigzag.js +1 -1
  229. package/assets/js/highcharts/indicators/zigzag.src.js +1 -1
  230. package/assets/js/highcharts/modules/accessibility.js +2 -2
  231. package/assets/js/highcharts/modules/accessibility.src.js +39 -28
  232. package/assets/js/highcharts/modules/annotations-advanced.js +2 -2
  233. package/assets/js/highcharts/modules/annotations-advanced.src.js +46 -31
  234. package/assets/js/highcharts/modules/annotations.js +2 -2
  235. package/assets/js/highcharts/modules/annotations.src.js +12 -15
  236. package/assets/js/highcharts/modules/arc-diagram.js +2 -2
  237. package/assets/js/highcharts/modules/arc-diagram.src.js +258 -233
  238. package/assets/js/highcharts/modules/arrow-symbols.js +1 -1
  239. package/assets/js/highcharts/modules/arrow-symbols.src.js +1 -1
  240. package/assets/js/highcharts/modules/boost-canvas.js +2 -2
  241. package/assets/js/highcharts/modules/boost-canvas.src.js +30 -10
  242. package/assets/js/highcharts/modules/boost.js +2 -2
  243. package/assets/js/highcharts/modules/boost.src.js +30 -10
  244. package/assets/js/highcharts/modules/broken-axis.js +1 -1
  245. package/assets/js/highcharts/modules/broken-axis.src.js +1 -1
  246. package/assets/js/highcharts/modules/bullet.js +1 -1
  247. package/assets/js/highcharts/modules/bullet.src.js +1 -1
  248. package/assets/js/highcharts/modules/coloraxis.js +2 -2
  249. package/assets/js/highcharts/modules/coloraxis.src.js +4 -4
  250. package/assets/js/highcharts/modules/current-date-indicator.js +1 -1
  251. package/assets/js/highcharts/modules/current-date-indicator.src.js +1 -1
  252. package/assets/js/highcharts/modules/cylinder.js +1 -1
  253. package/assets/js/highcharts/modules/cylinder.src.js +1 -1
  254. package/assets/js/highcharts/modules/data-tools.js +2 -2
  255. package/assets/js/highcharts/modules/data-tools.src.js +37 -19
  256. package/assets/js/highcharts/modules/data.js +1 -1
  257. package/assets/js/highcharts/modules/data.src.js +4 -4
  258. package/assets/js/highcharts/modules/datagrouping.js +2 -2
  259. package/assets/js/highcharts/modules/datagrouping.src.js +2 -1
  260. package/assets/js/highcharts/modules/debugger.js +1 -1
  261. package/assets/js/highcharts/modules/debugger.src.js +1 -1
  262. package/assets/js/highcharts/modules/dependency-wheel.js +1 -1
  263. package/assets/js/highcharts/modules/dependency-wheel.src.js +1 -1
  264. package/assets/js/highcharts/modules/dotplot.js +2 -2
  265. package/assets/js/highcharts/modules/dotplot.src.js +41 -30
  266. package/assets/js/highcharts/modules/drag-panes.js +2 -2
  267. package/assets/js/highcharts/modules/drag-panes.src.js +2 -3
  268. package/assets/js/highcharts/modules/draggable-points.js +2 -2
  269. package/assets/js/highcharts/modules/draggable-points.src.js +19 -1
  270. package/assets/js/highcharts/modules/drilldown.js +2 -2
  271. package/assets/js/highcharts/modules/drilldown.src.js +15 -15
  272. package/assets/js/highcharts/modules/dumbbell.js +2 -2
  273. package/assets/js/highcharts/modules/dumbbell.src.js +31 -40
  274. package/assets/js/highcharts/modules/export-data.js +2 -2
  275. package/assets/js/highcharts/modules/export-data.src.js +4 -1
  276. package/assets/js/highcharts/modules/exporting.js +2 -2
  277. package/assets/js/highcharts/modules/exporting.src.js +22 -25
  278. package/assets/js/highcharts/modules/flowmap.js +1 -1
  279. package/assets/js/highcharts/modules/flowmap.src.js +1 -1
  280. package/assets/js/highcharts/modules/full-screen.js +1 -1
  281. package/assets/js/highcharts/modules/full-screen.src.js +1 -1
  282. package/assets/js/highcharts/modules/funnel.js +2 -2
  283. package/assets/js/highcharts/modules/funnel.src.js +4 -4
  284. package/assets/js/highcharts/modules/funnel3d.js +1 -1
  285. package/assets/js/highcharts/modules/funnel3d.src.js +1 -1
  286. package/assets/js/highcharts/modules/gantt.js +2 -2
  287. package/assets/js/highcharts/modules/gantt.src.js +1266 -291
  288. package/assets/js/highcharts/modules/geoheatmap.js +1 -1
  289. package/assets/js/highcharts/modules/geoheatmap.src.js +4 -11
  290. package/assets/js/highcharts/modules/grid-axis.js +2 -2
  291. package/assets/js/highcharts/modules/grid-axis.src.js +2 -2
  292. package/assets/js/highcharts/modules/heatmap.js +2 -2
  293. package/assets/js/highcharts/modules/heatmap.src.js +32 -9
  294. package/assets/js/highcharts/modules/heikinashi.js +1 -1
  295. package/assets/js/highcharts/modules/heikinashi.src.js +1 -1
  296. package/assets/js/highcharts/modules/histogram-bellcurve.js +1 -1
  297. package/assets/js/highcharts/modules/histogram-bellcurve.src.js +1 -1
  298. package/assets/js/highcharts/modules/hollowcandlestick.js +1 -1
  299. package/assets/js/highcharts/modules/hollowcandlestick.src.js +1 -1
  300. package/assets/js/highcharts/modules/item-series.js +1 -1
  301. package/assets/js/highcharts/modules/item-series.src.js +1 -1
  302. package/assets/js/highcharts/modules/lollipop.js +1 -1
  303. package/assets/js/highcharts/modules/lollipop.src.js +1 -1
  304. package/assets/js/highcharts/modules/map.js +2 -2
  305. package/assets/js/highcharts/modules/map.src.js +120 -58
  306. package/assets/js/highcharts/modules/marker-clusters.js +1 -1
  307. package/assets/js/highcharts/modules/marker-clusters.src.js +1 -1
  308. package/assets/js/highcharts/modules/mouse-wheel-zoom.js +1 -1
  309. package/assets/js/highcharts/modules/mouse-wheel-zoom.src.js +1 -1
  310. package/assets/js/highcharts/modules/navigator.js +2 -2
  311. package/assets/js/highcharts/modules/navigator.src.js +28 -24
  312. package/assets/js/highcharts/modules/networkgraph.js +2 -2
  313. package/assets/js/highcharts/modules/networkgraph.src.js +3 -3
  314. package/assets/js/highcharts/modules/no-data-to-display.js +1 -1
  315. package/assets/js/highcharts/modules/no-data-to-display.src.js +1 -1
  316. package/assets/js/highcharts/modules/offline-exporting.js +2 -2
  317. package/assets/js/highcharts/modules/offline-exporting.src.js +43 -32
  318. package/assets/js/highcharts/modules/organization.js +2 -2
  319. package/assets/js/highcharts/modules/organization.src.js +19 -21
  320. package/assets/js/highcharts/modules/overlapping-datalabels.js +1 -1
  321. package/assets/js/highcharts/modules/overlapping-datalabels.src.js +1 -1
  322. package/assets/js/highcharts/modules/parallel-coordinates.js +1 -1
  323. package/assets/js/highcharts/modules/parallel-coordinates.src.js +1 -1
  324. package/assets/js/highcharts/modules/pareto.js +1 -1
  325. package/assets/js/highcharts/modules/pareto.src.js +1 -1
  326. package/assets/js/highcharts/modules/pathfinder.js +1 -1
  327. package/assets/js/highcharts/modules/pathfinder.src.js +1 -1
  328. package/assets/js/highcharts/modules/pattern-fill.js +1 -1
  329. package/assets/js/highcharts/modules/pattern-fill.src.js +1 -1
  330. package/assets/js/highcharts/modules/pictorial.js +1 -1
  331. package/assets/js/highcharts/modules/pictorial.src.js +1 -1
  332. package/assets/js/highcharts/modules/price-indicator.js +1 -1
  333. package/assets/js/highcharts/modules/price-indicator.src.js +1 -1
  334. package/assets/js/highcharts/modules/pyramid3d.js +1 -1
  335. package/assets/js/highcharts/modules/pyramid3d.src.js +1 -1
  336. package/assets/js/highcharts/modules/sankey.js +2 -2
  337. package/assets/js/highcharts/modules/sankey.src.js +7 -8
  338. package/assets/js/highcharts/modules/series-label.js +1 -1
  339. package/assets/js/highcharts/modules/series-label.src.js +1 -1
  340. package/assets/js/highcharts/modules/series-on-point.js +2 -2
  341. package/assets/js/highcharts/modules/series-on-point.src.js +3 -3
  342. package/assets/js/highcharts/modules/solid-gauge.js +1 -1
  343. package/assets/js/highcharts/modules/solid-gauge.src.js +1 -1
  344. package/assets/js/highcharts/modules/sonification.js +2 -2
  345. package/assets/js/highcharts/modules/sonification.src.js +4 -1
  346. package/assets/js/highcharts/modules/static-scale.js +1 -1
  347. package/assets/js/highcharts/modules/static-scale.src.js +1 -1
  348. package/assets/js/highcharts/modules/stock-tools.js +2 -2
  349. package/assets/js/highcharts/modules/stock-tools.src.js +3 -3
  350. package/assets/js/highcharts/modules/stock.js +2 -2
  351. package/assets/js/highcharts/modules/stock.src.js +274 -320
  352. package/assets/js/highcharts/modules/streamgraph.js +1 -1
  353. package/assets/js/highcharts/modules/streamgraph.src.js +1 -1
  354. package/assets/js/highcharts/modules/sunburst.js +2 -2
  355. package/assets/js/highcharts/modules/sunburst.src.js +39 -16
  356. package/assets/js/highcharts/modules/tiledwebmap.js +1 -1
  357. package/assets/js/highcharts/modules/tiledwebmap.src.js +1 -1
  358. package/assets/js/highcharts/modules/tilemap.js +1 -1
  359. package/assets/js/highcharts/modules/tilemap.src.js +1 -1
  360. package/assets/js/highcharts/modules/timeline.js +1 -1
  361. package/assets/js/highcharts/modules/timeline.src.js +1 -1
  362. package/assets/js/highcharts/modules/treegraph.js +2 -2
  363. package/assets/js/highcharts/modules/treegraph.src.js +21 -17
  364. package/assets/js/highcharts/modules/treegrid.js +2 -2
  365. package/assets/js/highcharts/modules/treegrid.src.js +2 -2
  366. package/assets/js/highcharts/modules/treemap.js +2 -2
  367. package/assets/js/highcharts/modules/treemap.src.js +38 -15
  368. package/assets/js/highcharts/modules/variable-pie.js +1 -1
  369. package/assets/js/highcharts/modules/variable-pie.src.js +1 -1
  370. package/assets/js/highcharts/modules/variwide.js +2 -2
  371. package/assets/js/highcharts/modules/variwide.src.js +5 -5
  372. package/assets/js/highcharts/modules/vector.js +1 -1
  373. package/assets/js/highcharts/modules/vector.src.js +1 -1
  374. package/assets/js/highcharts/modules/venn.js +1 -1
  375. package/assets/js/highcharts/modules/venn.src.js +3 -3
  376. package/assets/js/highcharts/modules/windbarb.js +1 -1
  377. package/assets/js/highcharts/modules/windbarb.src.js +1 -1
  378. package/assets/js/highcharts/modules/wordcloud.js +1 -1
  379. package/assets/js/highcharts/modules/wordcloud.src.js +1 -1
  380. package/assets/js/highcharts/modules/xrange.js +2 -2
  381. package/assets/js/highcharts/modules/xrange.src.js +5 -5
  382. package/assets/js/highcharts/standalone-navigator.js +2 -2
  383. package/assets/js/highcharts/standalone-navigator.src.js +769 -638
  384. package/assets/js/highcharts/themes/avocado.js +1 -1
  385. package/assets/js/highcharts/themes/avocado.src.js +1 -1
  386. package/assets/js/highcharts/themes/brand-dark.js +2 -2
  387. package/assets/js/highcharts/themes/brand-dark.src.js +14 -2
  388. package/assets/js/highcharts/themes/brand-light.js +1 -1
  389. package/assets/js/highcharts/themes/brand-light.src.js +1 -1
  390. package/assets/js/highcharts/themes/dark-blue.js +1 -1
  391. package/assets/js/highcharts/themes/dark-blue.src.js +1 -1
  392. package/assets/js/highcharts/themes/dark-green.js +1 -1
  393. package/assets/js/highcharts/themes/dark-green.src.js +1 -1
  394. package/assets/js/highcharts/themes/dark-unica.js +1 -1
  395. package/assets/js/highcharts/themes/dark-unica.src.js +1 -1
  396. package/assets/js/highcharts/themes/gray.js +1 -1
  397. package/assets/js/highcharts/themes/gray.src.js +1 -1
  398. package/assets/js/highcharts/themes/grid-light.js +1 -1
  399. package/assets/js/highcharts/themes/grid-light.src.js +1 -1
  400. package/assets/js/highcharts/themes/grid.js +1 -1
  401. package/assets/js/highcharts/themes/grid.src.js +1 -1
  402. package/assets/js/highcharts/themes/high-contrast-dark.js +1 -1
  403. package/assets/js/highcharts/themes/high-contrast-dark.src.js +1 -1
  404. package/assets/js/highcharts/themes/high-contrast-light.js +1 -1
  405. package/assets/js/highcharts/themes/high-contrast-light.src.js +1 -1
  406. package/assets/js/highcharts/themes/sand-signika.js +1 -1
  407. package/assets/js/highcharts/themes/sand-signika.src.js +1 -1
  408. package/assets/js/highcharts/themes/skies.js +1 -1
  409. package/assets/js/highcharts/themes/skies.src.js +1 -1
  410. package/assets/js/highcharts/themes/sunset.js +1 -1
  411. package/assets/js/highcharts/themes/sunset.src.js +1 -1
  412. package/assets/js/pdfjs/build/pdf.mjs +18706 -19098
  413. package/assets/js/pdfjs/build/pdf.mjs.map +1 -1
  414. package/assets/js/pdfjs/build/pdf.sandbox.mjs +3 -3
  415. package/assets/js/pdfjs/build/pdf.sandbox.mjs.map +1 -1
  416. package/assets/js/pdfjs/build/pdf.worker.mjs +292 -234
  417. package/assets/js/pdfjs/build/pdf.worker.mjs.map +1 -1
  418. package/assets/js/pdfjs/web/locale/eo/viewer.ftl +4 -6
  419. package/assets/js/pdfjs/web/locale/hy-AM/viewer.ftl +22 -1
  420. package/assets/js/pdfjs/web/locale/ia/viewer.ftl +2 -10
  421. package/assets/js/pdfjs/web/locale/it/viewer.ftl +0 -2
  422. package/assets/js/pdfjs/web/locale/ja/viewer.ftl +0 -6
  423. package/assets/js/pdfjs/web/locale/pa-IN/viewer.ftl +13 -6
  424. package/assets/js/pdfjs/web/locale/rm/viewer.ftl +4 -6
  425. package/assets/js/pdfjs/web/locale/sl/viewer.ftl +2 -2
  426. package/assets/js/pdfjs/web/locale/sq/viewer.ftl +13 -6
  427. package/assets/js/pdfjs/web/locale/tg/viewer.ftl +13 -6
  428. package/assets/js/pdfjs/web/locale/tr/viewer.ftl +3 -9
  429. package/assets/js/pdfjs/web/locale/zh-CN/viewer.ftl +0 -6
  430. package/assets/js/pdfjs/web/viewer.css +281 -270
  431. package/assets/js/pdfjs/web/viewer.html +4 -4
  432. package/assets/js/pdfjs/web/viewer.mjs +11114 -12057
  433. package/assets/js/pdfjs/web/viewer.mjs.map +1 -1
  434. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  !/**
2
- * Highcharts JS v11.4.1 (2024-04-04)
2
+ * Highcharts JS v11.4.3 (2024-05-22)
3
3
  *
4
4
  * Sonification module
5
5
  *
@@ -7,4 +7,4 @@
7
7
  * Author: Øystein Moseng
8
8
  *
9
9
  * License: www.highcharts.com/license
10
- */function(e){"object"==typeof module&&module.exports?(e.default=e,module.exports=e):"function"==typeof define&&define.amd?define("highcharts/modules/sonification",["highcharts"],function(t){return e(t),e.Highcharts=t,e}):e("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(e){"use strict";var t=e?e._modules:{};function i(e,t,i,n){e.hasOwnProperty(t)||(e[t]=n.apply(null,i),"function"==typeof CustomEvent&&window.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:t,module:e[t]}})))}i(t,"Extensions/Sonification/Options.js",[],function(){return{sonification:{enabled:!0,duration:6e3,afterSeriesWait:700,updateInterval:200,masterVolume:.7,order:"sequential",showTooltip:!0,showCrosshair:!0,pointGrouping:{enabled:!0,groupTimespan:15,algorithm:"minmax",prop:"y"},defaultInstrumentOptions:{roundToMusicalNotes:!0,instrument:"piano",mapping:{time:"x",pan:"x",noteDuration:200,pitch:{mapTo:"y",min:"c2",max:"c6",within:"yAxis"},gapBetweenNotes:100}},defaultSpeechOptions:{language:"en-US",mapping:{time:"x",rate:1.3,volume:.4},pointGrouping:{algorithm:"last"}}},exporting:{menuItemDefinitions:{downloadMIDI:{textKey:"downloadMIDI",onclick:function(){this.sonification&&this.sonification.downloadMIDI()}},playAsSound:{textKey:"playAsSound",onclick:function(){let e=this.sonification;e&&e.isPlaying()?e.cancel():this.sonify()}}}},lang:{downloadMIDI:"Download MIDI",playAsSound:"Play as sound"}}}),i(t,"Extensions/Sonification/SynthPatch.js",[t["Core/Utilities.js"]],function(e){let{clamp:t,defined:i,pick:n}=e;function s(e,t){return(.2414*e-.2414)*Math.log(t)+(3.5-1.7*e)/1.8}function o(e,t,i){e.gain.cancelScheduledValues(t),e.gain.setTargetAtTime(i,t,h.stopRampTime/4),e.gain.setValueAtTime(i,t+h.stopRampTime)}function a(e,t,i,n,s=1){let a="attack"===t,l=n.gain;if(l.cancelScheduledValues(i),!e.length){o(n,i,a?s:0);return}e[0].t>1&&e.unshift({t:0,vol:a?0:1}),e.forEach((t,n)=>{let o=e[n-1],a=o?(t.t-o.t)/1e3:0,r=i+(o?o.t/1e3+h.stopRampTime:0);l.setTargetAtTime(t.vol*s,r,Math.max(a,h.stopRampTime)/2)})}class l{constructor(e,t){this.pulseWidth=Math.min(Math.max(0,t.pulseWidth||.5));let i=()=>new OscillatorNode(e,{type:"sawtooth",detune:t.detune,frequency:Math.max(1,t.frequency||350)});this.sawOscA=i(),this.sawOscB=i(),this.phaseInverter=new GainNode(e,{gain:-1}),this.masterGain=new GainNode(e),this.delayNode=new DelayNode(e,{delayTime:this.pulseWidth/this.sawOscA.frequency.value}),this.sawOscA.connect(this.masterGain),this.sawOscB.connect(this.phaseInverter),this.phaseInverter.connect(this.delayNode),this.delayNode.connect(this.masterGain)}connect(e){this.masterGain.connect(e)}getFrequencyFacade(){let e=this;return{cancelScheduledValues:t=>(e.sawOscA.frequency.cancelScheduledValues(t),e.sawOscB.frequency.cancelScheduledValues(t),e.delayNode.delayTime.cancelScheduledValues(t),e.sawOscA.frequency),setValueAtTime(t,i){return this.cancelScheduledValues(i),e.sawOscA.frequency.setValueAtTime(t,i),e.sawOscB.frequency.setValueAtTime(t,i),e.delayNode.delayTime.setValueAtTime(Math.round(1e4*e.pulseWidth/t)/1e4,i),e.sawOscA.frequency},setTargetAtTime(t,i,n){return this.cancelScheduledValues(i),e.sawOscA.frequency.setTargetAtTime(t,i,n),e.sawOscB.frequency.setTargetAtTime(t,i,n),e.delayNode.delayTime.setTargetAtTime(Math.round(1e4*e.pulseWidth/t)/1e4,i,n),e.sawOscA.frequency}}}getPWMTarget(){return this.delayNode.delayTime}start(){this.sawOscA.start(),this.sawOscB.start()}stop(e){this.sawOscA.stop(e),this.sawOscB.stop(e)}}class r{constructor(e,t,i){this.audioContext=e,this.options=t,this.fmOscillatorIx=t.fmOscillator,this.vmOscillatorIx=t.vmOscillator,this.createSoundSource(),this.createGain(),this.createFilters(),this.createVolTracking(),i&&this.connect(i)}connect(e){[this.lowpassNode,this.highpassNode,this.volTrackingNode,this.vmNode,this.gainNode,this.whiteNoise,this.pulseNode,this.oscNode].reduce((e,t)=>t?(t.connect(e),t):e,e)}start(){this.oscNode&&this.oscNode.start(),this.whiteNoise&&this.whiteNoise.start(),this.pulseNode&&this.pulseNode.start()}stopAtTime(e){this.oscNode&&this.oscNode.stop(e),this.whiteNoise&&this.whiteNoise.stop(e),this.pulseNode&&this.pulseNode.stop(e)}setFreqAtTime(e,i,s=0){let o=this.options,a=t(n(o.fixedFrequency,i)*(o.freqMultiplier||1),0,21e3),l=this.getOscTarget(),r=s/5e3;l&&(l.cancelScheduledValues(e),s&&e-(this.lastUpdateTime||-1)>.01?(l.setTargetAtTime(a,e,r),l.setValueAtTime(a,e+r)):l.setValueAtTime(a,e)),this.scheduleVolTrackingChange(a,e,s),this.scheduleFilterTrackingChange(a,e,s),this.lastUpdateTime=e}getFMTarget(){return this.oscNode&&this.oscNode.detune||this.whiteNoise&&this.whiteNoise.detune||this.pulseNode&&this.pulseNode.getPWMTarget()}getVMTarget(){return this.vmNode&&this.vmNode.gain}runEnvelopeAtTime(e,t){this.gainNode&&a(("attack"===e?this.options.attackEnvelope:this.options.releaseEnvelope)||[],e,t,this.gainNode,this.options.volume)}cancelScheduled(){this.gainNode&&this.gainNode.gain.cancelScheduledValues(this.audioContext.currentTime);let e=this.getOscTarget();e&&e.cancelScheduledValues(0),this.lowpassNode&&this.lowpassNode.frequency.cancelScheduledValues(0),this.highpassNode&&this.highpassNode.frequency.cancelScheduledValues(0),this.volTrackingNode&&this.volTrackingNode.gain.cancelScheduledValues(0)}scheduleVolTrackingChange(e,t,i){if(this.volTrackingNode){let n=s(this.options.volumePitchTrackingMultiplier||1,e),o=i?i/1e3:h.stopRampTime;this.volTrackingNode.gain.cancelScheduledValues(t),this.volTrackingNode.gain.setTargetAtTime(n,t,o/5),this.volTrackingNode.gain.setValueAtTime(n,t+o)}}scheduleFilterTrackingChange(e,i,n){let o=this.options,a=n?n/1e3:h.stopRampTime,l=(n,o)=>{let l=s(o.frequencyPitchTrackingMultiplier||1,e),r=t((o.frequency||1e3)*l,0,21e3);n.frequency.cancelScheduledValues(i),n.frequency.setTargetAtTime(r,i,a/5),n.frequency.setValueAtTime(r,i+a)};this.lowpassNode&&o.lowpass&&l(this.lowpassNode,o.lowpass),this.highpassNode&&o.highpass&&l(this.highpassNode,o.highpass)}createGain(){let e=this.options;(i(e.volume)||e.attackEnvelope&&e.attackEnvelope.length||e.releaseEnvelope&&e.releaseEnvelope.length)&&(this.gainNode=new GainNode(this.audioContext,{gain:n(e.volume,1)})),this.vmNode=new GainNode(this.audioContext)}createSoundSource(){let e=this.options,t=this.audioContext,i=(e.fixedFrequency||0)*(e.freqMultiplier||1);if("whitenoise"===e.type){let e=2*t.sampleRate,i=t.createBuffer(1,e,t.sampleRate),n=i.getChannelData(0);for(let t=0;t<e;++t)n[t]=1.2*Math.random()-.6;let s=this.whiteNoise=t.createBufferSource();s.buffer=i,s.loop=!0}else"pulse"===e.type?this.pulseNode=new l(t,{detune:e.detune,pulseWidth:e.pulseWidth,frequency:i}):this.oscNode=new OscillatorNode(t,{type:e.type||"sine",detune:e.detune,frequency:i})}createFilters(){let e=this.options;e.lowpass&&e.lowpass.frequency&&(this.lowpassNode=new BiquadFilterNode(this.audioContext,{type:"lowpass",Q:e.lowpass.Q||1,frequency:e.lowpass.frequency})),e.highpass&&e.highpass.frequency&&(this.highpassNode=new BiquadFilterNode(this.audioContext,{type:"highpass",Q:e.highpass.Q||1,frequency:e.highpass.frequency}))}createVolTracking(){let e=this.options;e.volumePitchTrackingMultiplier&&1!==e.volumePitchTrackingMultiplier&&(this.volTrackingNode=new GainNode(this.audioContext,{gain:1}))}getOscTarget(){return this.oscNode?this.oscNode.frequency:this.pulseNode&&this.pulseNode.getFrequencyFacade()}}class h{constructor(e,t){this.audioContext=e,this.options=t,this.eqNodes=[],this.midiInstrument=t.midiInstrument||1,this.outputNode=new GainNode(e,{gain:0}),this.createEqChain(this.outputNode);let n=this.eqNodes.length?this.eqNodes[0]:this.outputNode;this.oscillators=(this.options.oscillators||[]).map(t=>new r(e,t,i(t.fmOscillator)||i(t.vmOscillator)?void 0:n)),this.oscillators.forEach(e=>{let t=(t,i)=>{if(i){let n=i[t]();n&&e.connect(n)}};i(e.fmOscillatorIx)&&t("getFMTarget",this.oscillators[e.fmOscillatorIx]),i(e.vmOscillatorIx)&&t("getVMTarget",this.oscillators[e.vmOscillatorIx])})}startSilently(){this.outputNode.gain.value=0,this.oscillators.forEach(e=>e.start())}stop(){let e=this.audioContext.currentTime,t=e+h.stopRampTime;o(this.outputNode,e,0),this.oscillators.forEach(e=>e.stopAtTime(t)),this.outputNode.disconnect()}silenceAtTime(e){if(!e&&this.outputNode.gain.value<.01){this.outputNode.gain.value=0;return}this.releaseAtTime((e||0)+this.audioContext.currentTime)}mute(){this.cancelScheduled(),o(this.outputNode,this.audioContext.currentTime,0)}playFreqAtTime(e,t,i){let n=(e||0)+this.audioContext.currentTime,s=this.options;this.oscillators.forEach(e=>{e.setFreqAtTime(n,t,s.noteGlideDuration),e.runEnvelopeAtTime("attack",n)}),a(s.masterAttackEnvelope||[],"attack",n,this.outputNode,s.masterVolume),i&&this.releaseAtTime(n+i/1e3)}cancelScheduled(){this.outputNode.gain.cancelScheduledValues(this.audioContext.currentTime),this.oscillators.forEach(e=>e.cancelScheduled())}connect(e){return this.outputNode.connect(e)}createEqChain(e){this.eqNodes=(this.options.eq||[]).map(e=>new BiquadFilterNode(this.audioContext,{type:"peaking",...e})),this.eqNodes.reduceRight((e,t)=>(t.connect(e),t),e)}releaseAtTime(e){let t=0;this.oscillators.forEach(i=>{let n=i.options.releaseEnvelope;n&&n.length&&(t=Math.max(t,n[n.length-1].t),i.runEnvelopeAtTime("release",e))});let i=this.options.masterReleaseEnvelope||[];i.length&&(a(i,"release",e,this.outputNode,this.options.masterVolume),t=Math.max(t,i[i.length-1].t)),o(this.outputNode,e+t/1e3,0)}}return h.stopRampTime=.012,h}),i(t,"Extensions/Sonification/InstrumentPresets.js",[],function(){return{piano:{masterVolume:.45,masterAttackEnvelope:[{t:1,vol:.71},{t:40,vol:.79},{t:82,vol:.64},{t:147,vol:.29},{t:260,vol:.15},{t:417,vol:.05},{t:589,vol:0}],eq:[{frequency:200,Q:.7,gain:6},{frequency:450,gain:6},{frequency:1300,gain:2},{frequency:2600,Q:.8,gain:8},{frequency:3500,Q:.8,gain:6},{frequency:6200,Q:.8,gain:10},{frequency:8e3,gain:-23},{frequency:1e4,Q:.4,gain:-12}],oscillators:[{type:"pulse",volume:.5,pulseWidth:.55,volumePitchTrackingMultiplier:.1,lowpass:{frequency:4.5,frequencyPitchTrackingMultiplier:900,Q:-2},highpass:{frequency:270},attackEnvelope:[{t:1,vol:1}],releaseEnvelope:[{t:1,vol:1},{t:282,vol:.64},{t:597,vol:0}]},{type:"whitenoise",volume:.8,lowpass:{frequency:400},highpass:{frequency:300},attackEnvelope:[{t:1,vol:1},{t:19,vol:0}]}]},plucked:{masterVolume:.5,midiInstrument:25,masterAttackEnvelope:[{t:1,vol:.71},{t:4,vol:.71},{t:31,vol:.4},{t:109,vol:.12},{t:234,vol:.04},{t:442,vol:0}],eq:[{frequency:800,gain:-8},{frequency:1400,Q:4,gain:4},{frequency:1600,gain:-14},{frequency:2200,gain:-8},{frequency:3600,gain:-2},{frequency:6400,Q:2,gain:-6}],oscillators:[{type:"sawtooth",volume:.9,volumePitchTrackingMultiplier:.6,highpass:{frequency:100},lowpass:{frequency:8e3},releaseEnvelope:[{t:1,vol:1},{t:315,vol:.56},{t:550,vol:0}]}]},flute:{masterVolume:1.1,midiInstrument:74,noteGlideDuration:30,masterAttackEnvelope:[{t:0,vol:0},{t:29,vol:1},{t:76,vol:.48},{t:600,vol:.36}],masterReleaseEnvelope:[{t:1,vol:.36},{t:24,vol:.15},{t:119,vol:0}],eq:[{frequency:150,Q:.6,gain:-10},{frequency:500,gain:4},{frequency:1100,gain:-4},{frequency:2200,gain:-14},{frequency:5e3,gain:8},{frequency:6400,gain:10},{frequency:8e3,gain:12},{frequency:10800,gain:8}],oscillators:[{type:"triangle",volume:1,volumePitchTrackingMultiplier:.4,lowpass:{frequency:12,frequencyPitchTrackingMultiplier:100},highpass:{frequency:200}},{type:"sine",fixedFrequency:5,volume:.2,vmOscillator:0,attackEnvelope:[{t:1,vol:1},{t:48,vol:0},{t:225,vol:.05},{t:600,vol:.77}]},{type:"whitenoise",volume:.13,lowpass:{frequency:9e3,Q:3},highpass:{frequency:6e3,Q:3},vmOscillator:0,attackEnvelope:[{t:0,vol:0},{t:26,vol:1},{t:93,vol:.8}]}]},lead:{masterVolume:1,midiInstrument:20,masterAttackEnvelope:[{t:1,vol:.81},{t:98,vol:.5},{t:201,vol:.18},{t:377,vol:.04},{t:586,vol:0},{t:586,vol:0}],eq:[{frequency:200,gain:-6},{frequency:400,gain:-8},{frequency:800,Q:.5,gain:-10},{frequency:1200,gain:4},{frequency:3600,gain:-4},{frequency:4200,gain:-12},{frequency:7400,gain:-14},{frequency:1e4,gain:2}],oscillators:[{type:"triangle",volume:1.1,volumePitchTrackingMultiplier:.6,lowpass:{frequency:5e3},highpass:{frequency:100}},{type:"sawtooth",volume:.4,lowpass:{frequency:7e3},highpass:{frequency:800,Q:6},releaseEnvelope:[{t:0,vol:.99},{t:200,vol:.83},{t:495,vol:0}]}]},vibraphone:{masterVolume:1,midiInstrument:12,masterAttackEnvelope:[{t:1,vol:0},{t:10,vol:.63},{t:82,vol:.64},{t:149,vol:.26},{t:600,vol:0}],eq:[{frequency:200,Q:.8,gain:-12},{frequency:400,gain:-4},{frequency:1600,Q:.5,gain:6},{frequency:2200,Q:.5,gain:6},{frequency:6400,gain:4},{frequency:12800,gain:4}],oscillators:[{type:"sine",volume:1.5,volumePitchTrackingMultiplier:1e-7,attackEnvelope:[{t:1,vol:1}],releaseEnvelope:[{t:1,vol:1},{t:146,vol:.39},{t:597,vol:0}]},{type:"whitenoise",volume:.03,volumePitchTrackingMultiplier:1e-4,lowpass:{frequency:900},highpass:{frequency:800},attackEnvelope:[{t:1,vol:1},{t:9,vol:0}]},{type:"sine",freqMultiplier:4,volume:.15,volumePitchTrackingMultiplier:1e-4},{type:"sine",fixedFrequency:3,volume:6,fmOscillator:0,releaseEnvelope:[{t:1,vol:1},{t:190,vol:.41},{t:600,vol:0}]},{type:"sine",fixedFrequency:6,volume:3,fmOscillator:2},{type:"sine",freqMultiplier:9,volume:5e-4,volumePitchTrackingMultiplier:1e-4,releaseEnvelope:[{t:1,vol:.97},{t:530,vol:0}]}]},saxophone:{masterVolume:1,midiInstrument:67,noteGlideDuration:10,masterAttackEnvelope:[{t:1,vol:.57},{t:35,vol:1},{t:87,vol:.84},{t:111,vol:.6},{t:296,vol:.49},{t:600,vol:.58}],masterReleaseEnvelope:[{t:1,vol:.58},{t:47,vol:.16},{t:119,vol:0}],eq:[{frequency:200,gain:-2},{frequency:600,gain:2},{frequency:800,gain:-10},{frequency:1100,gain:-2},{frequency:2200,gain:-2},{frequency:3500,gain:10},{frequency:12800,gain:4}],oscillators:[{type:"sawtooth",volume:.45,volumePitchTrackingMultiplier:.06,lowpass:{frequency:18,frequencyPitchTrackingMultiplier:200},highpass:{frequency:300}},{type:"whitenoise",fixedFrequency:1,volume:.4,highpass:{frequency:7e3},vmOscillator:0,attackEnvelope:[{t:1,vol:1},{t:51,vol:1},{t:86,vol:.84},{t:500,vol:.78}]},{type:"sine",fixedFrequency:4,volume:2,fmOscillator:0,attackEnvelope:[{t:0,vol:0},{t:15,vol:.94},{t:79,vol:1},{t:172,vol:.47},{t:500,vol:.26}]},{type:"sine",fixedFrequency:7,volume:6,fmOscillator:0,attackEnvelope:[{t:0,vol:0},{t:25,vol:.99},{t:85,vol:0},{t:85,vol:0},{t:387,vol:.02},{t:511,vol:.43},{t:600,vol:0}]}]},trumpet:{masterVolume:.3,midiInstrument:57,noteGlideDuration:40,masterAttackEnvelope:[{t:1,vol:0},{t:17,vol:1},{t:42,vol:.85},{t:76,vol:1},{t:202,vol:.65},{t:226,vol:.86},{t:282,vol:.63}],masterReleaseEnvelope:[{t:1,vol:.62},{t:34,vol:.14},{t:63,vol:.21},{t:96,vol:0}],eq:[{frequency:200,Q:.6,gain:10},{frequency:600,Q:.5,gain:6},{frequency:1500,Q:.7,gain:14},{frequency:3200,Q:2,gain:8},{frequency:3800,Q:.8,gain:10},{frequency:6200,gain:12},{frequency:8400,gain:-20},{frequency:12800,Q:.5,gain:-18}],oscillators:[{type:"sawtooth",volume:.15,pulseWidth:.5,volumePitchTrackingMultiplier:.5,lowpass:{frequency:1900,Q:3}},{type:"sine",fixedFrequency:6,volume:.2,vmOscillator:0,attackEnvelope:[{t:1,vol:1},{t:102,vol:.13},{t:556,vol:.24}]},{type:"whitenoise",volume:.45,highpass:{frequency:7e3,Q:9},vmOscillator:0,attackEnvelope:[{t:1,vol:1},{t:89,vol:.51},{t:577,vol:.29}]},{type:"sine",fixedFrequency:5.7,volume:20,fmOscillator:0,attackEnvelope:[{t:1,vol:1},{t:89,vol:1},{t:137,vol:.46},{t:283,vol:.15},{t:600,vol:.28}]}]},sawsynth:{masterVolume:.3,midiInstrument:51,noteGlideDuration:40,masterAttackEnvelope:[{t:0,vol:.6},{t:9,vol:1},{t:102,vol:.48}],eq:[{frequency:200,gain:-6}],oscillators:[{type:"sawtooth",volume:.4,volumePitchTrackingMultiplier:.3},{type:"sawtooth",volume:.4,detune:11,volumePitchTrackingMultiplier:.3},{type:"sawtooth",volume:.4,detune:-11,volumePitchTrackingMultiplier:.3}]},basic1:{masterVolume:1,noteGlideDuration:0,masterReleaseEnvelope:[{t:1,vol:.36},{t:24,vol:.15},{t:119,vol:0}],eq:[{frequency:150,Q:.6,gain:-12},{frequency:1100,gain:-2},{frequency:2200,gain:-16},{frequency:5e3,gain:8},{frequency:6400,gain:10},{frequency:8e3,gain:12},{frequency:10800,gain:8}],oscillators:[{type:"triangle",volume:1,volumePitchTrackingMultiplier:.05,lowpass:{frequency:17,frequencyPitchTrackingMultiplier:100},highpass:{frequency:200}},{type:"whitenoise",volume:.04,lowpass:{frequency:9e3,Q:3},highpass:{frequency:6e3,Q:3},vmOscillator:0,attackEnvelope:[{t:0,vol:0},{t:26,vol:1},{t:71,vol:.73}]}]},basic2:{masterVolume:.3,eq:[{frequency:200,Q:.7,gain:6},{frequency:450,gain:2},{frequency:1300,gain:-2},{frequency:2600,Q:.8,gain:6},{frequency:3500,Q:.8,gain:6},{frequency:6200,Q:.8,gain:10},{frequency:8e3,gain:-18},{frequency:1e4,Q:.4,gain:-12}],oscillators:[{type:"pulse",volume:.4,pulseWidth:.55,volumePitchTrackingMultiplier:.1,lowpass:{frequency:4.5,frequencyPitchTrackingMultiplier:900,Q:-2},highpass:{frequency:270}}]},chord:{masterVolume:1,masterAttackEnvelope:[{t:1,vol:.79},{t:27,vol:.86},{t:62,vol:.81},{t:150,vol:.35},{t:408,vol:.04},{t:600,vol:0}],eq:[{frequency:200,gain:-8},{frequency:600,Q:2,gain:4},{frequency:800,gain:-10},{frequency:1600,gain:-2},{frequency:2200,gain:-6},{frequency:3600,Q:.7,gain:-2},{frequency:6400,gain:6},{frequency:12800,gain:6}],oscillators:[{type:"triangle",volume:1.1,volumePitchTrackingMultiplier:.05,lowpass:{frequency:8e3},highpass:{frequency:100},releaseEnvelope:[{t:1,vol:1},{t:315,vol:.56},{t:540,vol:0}]},{type:"triangle",freqMultiplier:1.17,volume:.4,volumePitchTrackingMultiplier:.07,lowpass:{frequency:5e3},highpass:{frequency:100},releaseEnvelope:[{t:0,vol:1},{t:476,vol:0}]},{type:"triangle",freqMultiplier:1.58333,volume:.7,volumePitchTrackingMultiplier:.02,highpass:{frequency:200},releaseEnvelope:[{t:0,vol:1},{t:422,vol:.56},{t:577,vol:0}]},{type:"sine",fixedFrequency:10,volume:4,fmOscillator:0,attackEnvelope:[{t:1,vol:1},{t:157,vol:.65}]},{type:"sine",fixedFrequency:5,volume:.3,vmOscillator:2,attackEnvelope:[{t:1,vol:1},{t:155,vol:.91},{t:289,vol:.78}]}]},wobble:{masterVolume:.9,masterReleaseEnvelope:[{t:1,vol:.36},{t:24,vol:.15},{t:119,vol:0}],eq:[{frequency:150,Q:.6,gain:-12},{frequency:1100,gain:-2},{frequency:2200,gain:-16},{frequency:5e3,gain:8},{frequency:6400,gain:10},{frequency:8e3,gain:12},{frequency:10800,gain:8}],oscillators:[{type:"triangle",volume:.9,volumePitchTrackingMultiplier:.1,lowpass:{frequency:17,frequencyPitchTrackingMultiplier:100},highpass:{frequency:200}},{type:"whitenoise",volume:.04,lowpass:{frequency:9e3,Q:3},highpass:{frequency:6e3,Q:3},vmOscillator:0,attackEnvelope:[{t:0,vol:0},{t:26,vol:1},{t:71,vol:.73}]},{type:"sine",freqMultiplier:.011,volume:30,fmOscillator:0}]},sine:{masterVolume:1,oscillators:[{type:"sine",volumePitchTrackingMultiplier:.07}]},sineGlide:{masterVolume:1,noteGlideDuration:100,oscillators:[{type:"sine",volumePitchTrackingMultiplier:.07}]},triangle:{masterVolume:.5,oscillators:[{type:"triangle",volume:1,volumePitchTrackingMultiplier:.07}]},sawtooth:{masterVolume:.25,midiInstrument:82,oscillators:[{type:"sawtooth",volume:.3,volumePitchTrackingMultiplier:.07}]},square:{masterVolume:.3,midiInstrument:81,oscillators:[{type:"square",volume:.2,volumePitchTrackingMultiplier:.07}]},chop:{masterVolume:1,midiInstrument:116,masterAttackEnvelope:[{t:1,vol:1},{t:44,vol:0}],oscillators:[{type:"whitenoise",volume:1,lowpass:{frequency:600},highpass:{frequency:200}}]},shaker:{masterVolume:.4,midiInstrument:116,masterAttackEnvelope:[{t:1,vol:1},{t:44,vol:0}],oscillators:[{type:"whitenoise",volume:1,lowpass:{frequency:6500},highpass:{frequency:5e3}}]},step:{masterVolume:1,midiInstrument:116,masterAttackEnvelope:[{t:1,vol:1},{t:44,vol:0}],eq:[{frequency:200,gain:-1},{frequency:400,gain:-14},{frequency:800,gain:8},{frequency:1e3,Q:5,gain:-24},{frequency:1600,gain:8},{frequency:2200,gain:-10},{frequency:5400,gain:4},{frequency:12800,gain:-36}],oscillators:[{type:"whitenoise",volume:1.5,lowpass:{frequency:300},highpass:{frequency:100,Q:6}}]},kick:{masterVolume:.55,masterAttackEnvelope:[{t:1,vol:.8},{t:15,vol:1},{t:45,vol:.35},{t:121,vol:.11},{t:242,vol:0}],eq:[{frequency:50,gain:6},{frequency:400,gain:-18},{frequency:1600,gain:18}],oscillators:[{type:"triangle",fixedFrequency:90,volume:1,lowpass:{frequency:300},attackEnvelope:[{t:1,vol:1},{t:6,vol:1},{t:45,vol:.01}]},{type:"whitenoise",volume:.4,lowpass:{frequency:200},attackEnvelope:[{t:1,vol:1},{t:30,vol:0}]},{type:"triangle",freqMultiplier:.1,volume:1,lowpass:{frequency:200}}]},shortnote:{masterVolume:.8,midiInstrument:116,masterAttackEnvelope:[{t:1,vol:1},{t:15,vol:0}],eq:[{frequency:400,gain:-4},{frequency:800,gain:-12},{frequency:2400,gain:4},{frequency:7200,gain:-20},{frequency:1e3,Q:5,gain:-12},{frequency:5400,gain:-32},{frequency:12800,gain:-14}],oscillators:[{type:"sawtooth",volume:.6,lowpass:{frequency:1e3}},{type:"whitenoise",volume:.2,lowpass:{frequency:1e4},highpass:{frequency:7e3},attackEnvelope:[{t:1,vol:1},{t:10,vol:0}]},{type:"whitenoise",volume:1.3,lowpass:{frequency:700,Q:4},highpass:{frequency:250}}]},noise:{masterVolume:.3,midiInstrument:122,oscillators:[{type:"whitenoise"}]},filteredNoise:{masterVolume:.3,midiInstrument:122,eq:[{frequency:1600,gain:-8},{frequency:2200,gain:-4}],oscillators:[{type:"whitenoise",lowpass:{frequency:5,frequencyPitchTrackingMultiplier:1300,Q:6},highpass:{frequency:5,frequencyPitchTrackingMultiplier:300,Q:6}}]},wind:{masterVolume:.75,midiInstrument:122,noteGlideDuration:150,masterReleaseEnvelope:[{t:0,vol:1},{t:124,vol:.24},{t:281,vol:0}],oscillators:[{type:"whitenoise",volume:1,lowpass:{frequency:100,frequencyPitchTrackingMultiplier:6,Q:23},highpass:{frequency:170,frequencyPitchTrackingMultiplier:6}},{type:"sine",freqMultiplier:.016,volume:1e3,fmOscillator:0}]}}}),i(t,"Extensions/Sonification/SonificationInstrument.js",[t["Extensions/Sonification/SynthPatch.js"],t["Extensions/Sonification/InstrumentPresets.js"],t["Core/Utilities.js"]],function(e,t,i){let{defined:n,extend:s}=i;class o{constructor(i,n,o){this.audioContext=i,this.curParams={},this.midiTrackName=o.midiTrackName,this.masterVolNode=new GainNode(i),this.masterVolNode.connect(n),this.volumeNode=new GainNode(i),this.createNodesFromCapabilities(s({pan:!0},o.capabilities||{})),this.connectCapabilityNodes(this.volumeNode,this.masterVolNode),this.synthPatch=new e(i,"string"==typeof o.synthPatch?t[o.synthPatch]:o.synthPatch),this.midiInstrument=this.synthPatch.midiInstrument||1,this.synthPatch.startSilently(),this.synthPatch.connect(this.volumeNode)}setMasterVolume(e){this.masterVolNode.gain.setTargetAtTime(e,0,o.rampTime)}scheduleEventAtTime(e,t){let i=s(this.curParams,t),a=n(t.frequency)?t.frequency:n(t.note)?o.musicalNoteToFrequency(t.note):220;n(a)&&this.synthPatch.playFreqAtTime(e,a,i.noteDuration),(n(i.tremoloDepth)||n(i.tremoloSpeed))&&this.setTremoloAtTime(e,i.tremoloDepth,i.tremoloSpeed),n(i.pan)&&this.setPanAtTime(e,i.pan),n(i.volume)&&this.setVolumeAtTime(e,i.volume),(n(i.lowpassFreq)||n(i.lowpassResonance))&&this.setFilterAtTime("lowpass",e,i.lowpassFreq,i.lowpassResonance),(n(i.highpassFreq)||n(i.highpassResonance))&&this.setFilterAtTime("highpass",e,i.highpassFreq,i.highpassResonance)}silenceAtTime(e){this.synthPatch.silenceAtTime(e)}cancel(){this.synthPatch.mute(),[this.tremoloDepth&&this.tremoloDepth.gain,this.tremoloOsc&&this.tremoloOsc.frequency,this.lowpassNode&&this.lowpassNode.frequency,this.lowpassNode&&this.lowpassNode.Q,this.highpassNode&&this.highpassNode.frequency,this.highpassNode&&this.highpassNode.Q,this.panNode&&this.panNode.pan,this.volumeNode.gain].forEach(e=>e&&e.cancelScheduledValues(0))}destroy(){this.cancel(),this.synthPatch.stop(),this.tremoloOsc&&this.tremoloOsc.stop(),[this.tremoloDepth,this.tremoloOsc,this.lowpassNode,this.highpassNode,this.panNode,this.volumeNode,this.masterVolNode].forEach(e=>e&&e.disconnect())}setPanAtTime(e,t){this.panNode&&this.panNode.pan.setTargetAtTime(t,e+this.audioContext.currentTime,o.rampTime)}setFilterAtTime(e,t,i,s){let a=this[e+"Node"],l=this.audioContext.currentTime+t;a&&(n(s)&&a.Q.setTargetAtTime(s,l,o.rampTime),n(i)&&a.frequency.setTargetAtTime(i,l,o.rampTime))}setVolumeAtTime(e,t){this.volumeNode&&this.volumeNode.gain.setTargetAtTime(t,e+this.audioContext.currentTime,o.rampTime)}setTremoloAtTime(e,t,i){let s=this.audioContext.currentTime+e;this.tremoloDepth&&n(t)&&this.tremoloDepth.gain.setTargetAtTime(t,s,o.rampTime),this.tremoloOsc&&n(i)&&this.tremoloOsc.frequency.setTargetAtTime(15*i,s,o.rampTime)}createNodesFromCapabilities(e){let t=this.audioContext;e.pan&&(this.panNode=new StereoPannerNode(t)),e.tremolo&&(this.tremoloOsc=new OscillatorNode(t,{type:"sine",frequency:3}),this.tremoloDepth=new GainNode(t),this.tremoloOsc.connect(this.tremoloDepth),this.tremoloDepth.connect(this.masterVolNode.gain),this.tremoloOsc.start()),e.filters&&(this.lowpassNode=new BiquadFilterNode(t,{type:"lowpass",frequency:2e4}),this.highpassNode=new BiquadFilterNode(t,{type:"highpass",frequency:0}))}connectCapabilityNodes(e,t){[this.panNode,this.lowpassNode,this.highpassNode,e].reduce((e,t)=>t?(t.connect(e),t):e,t)}static noteStringToC0Distance(e){let t=e.match(/^([a-g][#b]?)([0-8])$/i),i=t?t[1]:"a",n=i[0].toLowerCase(),s=i[1];return(({c:0,d:2,e:4,f:5,g:7,a:9,b:11})[n]||0)+("#"===s?1:"b"===s?-1:0)+12*(t?parseInt(t[2],10):4)}static musicalNoteToFrequency(e){return 16.3516*Math.pow(2,Math.min("string"==typeof e?this.noteStringToC0Distance(e):e,107)/12)}}return o.rampTime=e.stopRampTime/4,o}),i(t,"Extensions/Sonification/SonificationSpeaker.js",[t["Core/Utilities.js"]],function(e){let{pick:t}=e;return class{constructor(e){this.options=e,this.masterVolume=1,this.synthesis=window.speechSynthesis,void 0!==speechSynthesis.onvoiceschanged&&(speechSynthesis.onvoiceschanged=this.setVoice.bind(this)),this.setVoice(),this.scheduled=[]}say(e,i){if(this.synthesis){this.synthesis.cancel();let n=new SpeechSynthesisUtterance(e);this.voice&&(n.voice=this.voice),n.rate=i&&i.rate||this.options.rate||1,n.pitch=i&&i.pitch||this.options.pitch||1,n.volume=t(i&&i.volume,this.options.volume,1)*this.masterVolume,this.synthesis.speak(n)}}sayAtTime(e,t,i){this.scheduled.push(setTimeout(this.say.bind(this,t,i),e))}cancel(){this.scheduled.forEach(clearTimeout),this.scheduled=[],this.synthesis.cancel()}destroy(){this.cancel()}setMasterVolume(e){this.masterVolume=e}setVoice(){if(this.synthesis){let e;let t=this.options.name,i=this.options.language||"en-US",n=this.synthesis.getVoices(),s=n.length;for(let o=0;o<s;++o){if(t&&n[o].name===t){this.voice=n[o];return}if(!e&&n[o].lang===i&&(e=n[o],!t))break}this.voice=e}}}}),i(t,"Extensions/Sonification/TimelineChannel.js",[],function(){return class{constructor(e,t,i=!1,n,s){this.type=e,this.engine=t,this.showPlayMarker=i,this.muted=s,this.events=n||[]}addEvent(e){let t=this.events[this.events.length-1];if(t&&e.time<t.time){let t=this.events.length;for(;t--&&this.events[t].time>e.time;);this.events.splice(t+1,0,e)}else this.events.push(e);return e}mute(){this.muted=!0}unmute(){this.muted=!1}cancel(){this.engine.cancel()}destroy(){this.engine.destroy()}}}),i(t,"Extensions/Sonification/MIDI.js",[t["Extensions/Sonification/SonificationInstrument.js"],t["Core/Utilities.js"]],function(e,t){let{pick:i}=t,n=e=>Math.round(12*Math.log(e)/Math.LN2-48.37632),s=(e,t)=>t>>>8*e&255,o=e=>[77,84,104,100,0,0,0,6,0,e>1?1:0,s(1,e),s(0,e),1,244],a=[0,255,81,3,7,161,32],l=e=>{let t=127&e,i=[];for(;e>>=7;)t<<=8,t|=127&e|128;for(;;)if(i.push(255&t),128&t)t>>=8;else break;return i},r=t=>{let s,o;let a=[],l=e=>{let t=a.length;for(;t--&&a[t].timeMS>e.timeMS;);a.splice(t+1,0,e)};return t.forEach(t=>{let a=t.instrumentEventOptions||{},r=t.time,h=o=i(a.noteDuration,o),c=h&&t.time+h,u=[{valMap:e=>64+63*e&127,data:{10:a.pan,92:a.tremoloDepth,93:a.tremoloSpeed}},{valMap:e=>127*e/2e4&127,data:{74:a.lowpassFreq,75:a.highpassFreq}},{valMap:e=>63*Math.min(18,Math.max(-18,e))/18+63&127,data:{71:a.lowpassResonance,76:a.highpassResonance}}],m=s=void 0===a.volume?i(s,127):127*a.volume&127,p=a.frequency,d=a.note||0,f=12+(p?n(p):"string"==typeof d?e.noteStringToC0Distance(d):d)&127;u.forEach(e=>Object.keys(e.data).forEach(t=>{let i=e.data[t];void 0!==i&&l({timeMS:r,type:"CTRL_CHG",data:[176,parseInt(t,10),e.valMap(i)]})})),c&&(l({timeMS:r,type:"NON",data:[144,f,m]}),l({timeMS:c,type:"NOF",data:[128,f,m]}))}),a},h=(e,t)=>{let i=[];if(t&&i.push(0,192,127&t),e){let t=[];for(let i=0;i<e.length;++i){let n=e.charCodeAt(i);n<128&&t.push(n)}return i.concat([0,255,3],l(t.length),t)}return i},c=(e,t,i,n)=>{let o=0,c=h(i,n),u=r(e).reduce((e,t)=>{let i=l(t.timeMS-o);return o=t.timeMS,e.concat(i,t.data)},[]),m=[0,255,47,0],p=(t?a.length:0)+c.length+u.length+m.length;return[77,84,114,107,s(3,p),s(2,p),s(1,p),s(0,p)].concat(t?a:[],c,u,m)};return function(e){let t=e.filter(e=>!!e.events.length),i=t.length,n=i>1;return new Uint8Array(o(n?i+1:i).concat(n?c([],!0):[],t.reduce((e,t)=>{let i=t.engine;return e.concat(c(t.events,!n,i.midiTrackName,i.midiInstrument))},[])))}}),i(t,"Extensions/DownloadURL.js",[t["Core/Globals.js"]],function(e){let{isSafari:t,win:i,win:{document:n}}=e,s=i.URL||i.webkitURL||i;function o(e){let t=e.replace(/filename=.*;/,"").match(/data:([^;]*)(;base64)?,([0-9A-Za-z+/]+)/);if(t&&t.length>3&&i.atob&&i.ArrayBuffer&&i.Uint8Array&&i.Blob&&s.createObjectURL){let e=i.atob(t[3]),n=new i.ArrayBuffer(e.length),o=new i.Uint8Array(n);for(let t=0;t<o.length;++t)o[t]=e.charCodeAt(t);return s.createObjectURL(new i.Blob([o],{type:t[1]}))}}return{dataURLtoBlob:o,downloadURL:function(e,s){let a=i.navigator,l=n.createElement("a");if("string"!=typeof e&&!(e instanceof String)&&a.msSaveOrOpenBlob){a.msSaveOrOpenBlob(e,s);return}e=""+e;let r=/Edge\/\d+/.test(a.userAgent);if((t&&"string"==typeof e&&0===e.indexOf("data:application/pdf")||r||e.length>2e6)&&!(e=o(e)||""))throw Error("Failed to convert to blob");if(void 0!==l.download)l.href=e,l.download=s,n.body.appendChild(l),l.click(),n.body.removeChild(l);else try{if(!i.open(e,"chart"))throw Error("Failed to open window")}catch{i.location.href=e}}}}),i(t,"Extensions/Sonification/SonificationTimeline.js",[t["Extensions/Sonification/TimelineChannel.js"],t["Extensions/Sonification/MIDI.js"],t["Extensions/DownloadURL.js"],t["Core/Utilities.js"]],function(e,t,i,n){let{downloadURL:s}=i,{defined:o,find:a,merge:l}=n;return class{constructor(e,t){this.chart=t,this.isPaused=!1,this.isPlaying=!1,this.channels=[],this.scheduledCallbacks=[],this.playTimestamp=0,this.resumeFromTime=0,this.options=e||{}}addChannel(t,i,n=!1,s){if("instrument"===t&&!i.scheduleEventAtTime||"speech"===t&&!i.sayAtTime)throw Error("Highcharts Sonification: Invalid channel engine.");let o=new e(t,i,n,s);return this.channels.push(o),o}play(t,i=!0,n=!0,s){this.isPlaying?this.cancel():this.clearScheduledCallbacks(),this.onEndArgument=s,this.playTimestamp=Date.now(),this.resumeFromTime=0,this.isPaused=!1,this.isPlaying=!0;let o=this.options.skipThreshold||2,r=this.options.onPlay,h=this.options.showTooltip,c=this.options.showCrosshair,u=t?function(t,i){let n=i.map(e=>(e.cancel(),{channel:e,filteredEvents:e.muted?[]:e.events.filter(t)})),s=n.reduce((e,t)=>Math.min(e,t.filteredEvents.length?t.filteredEvents[0].time:1/0),1/0);return n.map(t=>new e(t.channel.type,t.channel.engine,t.channel.showPlayMarker,t.filteredEvents.map(e=>l(e,{time:e.time-s})),t.channel.muted))}(t,this.playingChannels||this.channels):this.channels,m=e=>Object.keys(e.speechOptions||{}).concat(Object.keys(e.instrumentEventOptions||{})).join(),p=[];i&&(this.playingChannels=u),r&&r({chart:this.chart,timeline:this});let d=0;u.forEach(e=>{if(e.muted)return;let t=e.events.length,i=-1/0,n=-1/0,s="";d=Math.max(e.events[t-1]&&e.events[t-1].time||0,d);for(let l=0;l<t;++l){let r=e.events[l],u=m(r);if(u===s&&r.time-n<o)continue;s=u,n=r.time,"instrument"===e.type?e.engine.scheduleEventAtTime(r.time/1e3,r.instrumentEventOptions||{}):e.engine.sayAtTime(r.time,r.message||"",r.speechOptions||{});let d=r.relatedPoint,f=d&&d.series&&d.series.chart,y=r.callback||d&&(h||c)&&!1!==e.showPlayMarker&&(r.time-i>50||l===t-1);d&&p.push(d),y&&(this.scheduledCallbacks.push(setTimeout(()=>{if(r.callback&&r.callback(),d){if(c){let e=d.series;e&&e.xAxis&&e.xAxis.crosshair&&e.xAxis.drawCrosshair(void 0,d),e&&e.yAxis&&e.yAxis.crosshair&&e.yAxis.drawCrosshair(void 0,d)}h&&!(f&&f.hoverPoints&&f.hoverPoints.length>1&&a(f.hoverPoints,e=>e===d)&&d.onMouseOver)&&d.onMouseOver()}},r.time)),i=r.time)}});let f=this.options.onEnd,y=this.options.onStop;this.scheduledCallbacks.push(setTimeout(()=>{let e=this.chart,t={chart:e,timeline:this,pointsPlayed:p};this.isPlaying=!1,n&&this.resetPlayState(),y&&y(t),f&&f(t),s&&s(t),e&&(e.tooltip&&e.tooltip.hide(0),e.hoverSeries&&e.hoverSeries.onMouseOut(),e.axes.forEach(e=>e.hideCrosshair()))},d+250)),this.resumeFromTime=i?d:this.getLength()}pause(){return this.isPaused=!0,this.cancel(),this.resumeFromTime=Date.now()-this.playTimestamp-10,this.resumeFromTime}getCurrentTime(){return this.isPlaying?Date.now()-this.playTimestamp:this.resumeFromTime}getLength(){return this.channels.reduce((e,t)=>{let i=t.events[t.events.length-1];return i?Math.max(i.time,e):e},0)}resume(){if(this.playingChannels){let e=this.resumeFromTime-50;this.play(t=>t.time>e,!1,!1,this.onEndArgument),this.playTimestamp-=e}else this.play(void 0,!1,!1,this.onEndArgument)}anchorPlayMoment(e,t){this.isPlaying&&this.pause();let i=0;this.play((t,n,s)=>{let o=e(t,n,s);return o&&t.time>i&&(i=t.time),o},!1,!1,t),this.playingChannels=this.playingChannels||this.channels,this.isPaused=!0,this.isPlaying=!1,this.resumeFromTime=i}playAdjacent(e,t,i,n){this.isPlaying&&this.pause();let s=this.resumeFromTime,o=this.channels.reduce((t,i)=>{let o=n?i.events.filter(n):i.events,a=0,l=o.length,r=t;for(;a<l;){let t=a+l>>1,i=o[t].time,n=i-s;n>0?(e&&i<r&&(r=i),l=t):n<0?(!e&&i>r&&(r=i),a=t+1):e?a=t+1:l=t}return r},e?1/0:-1/0);if(o===1/0||o===-1/0){i&&i({chart:this.chart,timeline:this,attemptedNext:e});return}this.anchorPlayMoment((t,i,a)=>{let l=e?t.time>s&&t.time<=o+.02:t.time<s&&t.time>=o-.02;return n?l&&n(t,i,a):l},t)}playClosestToPropValue(e,t,i,n,s){let a=(e,t,i)=>!!(s?s(e,t,i)&&e.relatedPoint:e.relatedPoint),l=1/0,r=null;(this.playingChannels||this.channels).forEach(i=>{let n=i.events,s=n.length;for(;s--;){if(!a(n[s],s,n))continue;let i=n[s].relatedPoint[e],h=o(i)&&Math.abs(t-i);!1!==h&&h<l&&(l=h,r=n[s])}}),r?(this.play(e=>!!(r&&e.time<r.time+1&&e.time>r.time-1&&e.relatedPoint===r.relatedPoint),!1,!1,i),this.playingChannels=this.playingChannels||this.channels,this.isPaused=!0,this.isPlaying=!1,this.resumeFromTime=r.time):n&&n({chart:this.chart,timeline:this})}getEventsForPoint(e){return this.channels.reduce((t,i)=>{let n=i.events.filter(t=>t.relatedPoint===e);return t.concat(n)},[])}playSegment(e,t){let i={first:1/0,last:-1/0};if(this.channels.forEach(e=>{e.events.length&&(i.first=Math.min(e.events[0].time,i.first),i.last=Math.max(e.events[e.events.length-1].time,i.last))}),i.first<1/0){let n=(i.last-i.first)/100,s=i.first+e*n,o=s+n;if(!this.channels.some(e=>{let t=e.events,i=0,n=t.length;for(;i<n;){let e=i+n>>1,a=t[e].time;if(a<s)i=e+1;else{if(!(a>o))return!0;n=e}}return!1}))return;this.play(e=>e.time>=s&&e.time<=o,!1,!1,t),this.playingChannels=this.playingChannels||this.channels,this.isPaused=!0,this.isPlaying=!1,this.resumeFromTime=o}}getLastPlayedPoint(e){let t=this.getCurrentTime(),i=this.playingChannels||this.channels,n=1/0,s=null;return i.forEach(i=>{let o=i.events.filter((i,n,s)=>!!(i.relatedPoint&&i.time<=t&&(!e||e(i,n,s)))),a=o[o.length-1];if(a){let e=Math.abs(a.time-t);e<n&&(n=e,s=a.relatedPoint)}}),s}reset(){this.isPlaying&&this.cancel(),this.resetPlayState()}cancel(){let e=this.options.onStop;e&&e({chart:this.chart,timeline:this}),this.isPlaying=!1,this.channels.forEach(e=>e.cancel()),this.playingChannels&&this.playingChannels!==this.channels&&this.playingChannels.forEach(e=>e.cancel()),this.clearScheduledCallbacks(),this.resumeFromTime=0}destroy(){this.cancel(),this.playingChannels&&this.playingChannels!==this.channels&&this.playingChannels.forEach(e=>e.destroy()),this.channels.forEach(e=>e.destroy())}setMasterVolume(e){this.channels.forEach(t=>t.engine.setMasterVolume(e))}getMIDIData(){return t(this.channels.filter(e=>"instrument"===e.type))}downloadMIDI(e){let t=this.getMIDIData(),i=(e||this.chart&&this.chart.options.title&&this.chart.options.title.text||"chart")+".mid",n=new Blob([t],{type:"application/octet-stream"}),o=window.URL.createObjectURL(n);s(o,i),window.URL.revokeObjectURL(o)}resetPlayState(){delete this.playingChannels,delete this.onEndArgument,this.playTimestamp=this.resumeFromTime=0,this.isPaused=!1}clearScheduledCallbacks(){this.scheduledCallbacks.forEach(clearTimeout),this.scheduledCallbacks=[]}}}),i(t,"Extensions/Sonification/TimelineFromChart.js",[t["Extensions/Sonification/SonificationTimeline.js"],t["Extensions/Sonification/SonificationInstrument.js"],t["Extensions/Sonification/SonificationSpeaker.js"],t["Core/Utilities.js"],t["Core/Templating.js"]],function(e,t,i,n,s){let{clamp:o,defined:a,extend:l,getNestedProperty:r,merge:h,pick:c}=n,{format:u}=s,m=e=>/^([a-g][#b]?)[0-8]$/i.test(e);function p(e,t){let i;if(t){if("number"==typeof(i=e[t]))return i;i=r(t,e)}return"number"==typeof i?i:void 0}function d(e,t,i,n,s){let a=t.max-t.min;if(a<=0)return i.min;let l=i.max-i.min,r=l*(e-t.min)/a;if(s){let i=t.min>0?e=>Math.log(e)/Math.LOG10E:e=>{let t=Math.abs(e);t<10&&(t+=(10-t)/10);let i=Math.log(t)/Math.LN10;return e<0?-i:i},n=i(t.min);r=l*(i(e)-n)/(i(t.max)-n)}return o(n?i.max-r:i.min+r,i.min,i.max)}function f(e,t,i,n,s,o,h){return c(function(e,t,i,n,s,o){if("number"==typeof s)return s;if("function"==typeof s)return s(l({time:0},e));let h=s,u=n.mapFunction,m=n.min,p=n.max,f=n.within,y;if("object"==typeof s&&(h=s.mapTo,u=s.mapFunction||u,m=c(s.min,m),p=c(s.max,p),f=s.within||n.within,y=s.scale),!h)return null;let g="-"===h.charAt(0);g&&(h=h.slice(1));let v=e.value,q="value"===h&&void 0!==v&&o;if(!q){let t=s.value;if(void 0!==t)v=t;else{if(!e.point)return null;v=e.point[h]}void 0===v&&(v=r(h,e.point))}if("number"!=typeof v||null===v)return null;let T=null;if(e.point){if("xAxis"===f||"yAxis"===f){let t=e.point.series[f];t&&a(t.dataMin)&&a(t.dataMax)&&(T={min:t.dataMin,max:t.dataMax})}else("series"===f||i)&&e.point.series&&(T=t.seriesExtremes[e.point.series.index][q?o:h])}if(T||(T=t.globalExtremes[q?o:h]),y){let e=[],t=Math.floor(m/12),i=Math.ceil(p/12)+1,n=y.length;for(let s=t;s<i;++s)for(let t=0;t<n;++t){let i=12*s+y[t];i>=m&&i<=p&&e.push(i)}let s=d(v,T,{min:0,max:e.length-1},g,"logarithmic"===u);return e[Math.round(s)]}return d(v,T,{min:m,max:p},g,"logarithmic"===u)}(e,t,i,l({min:0,max:1,mapTo:"y",mapFunction:"linear",within:"chart"},o||{}),n,h),s)}function y(e,n,s,o){let a=o.mapping||{},l="speech"===o.type?new i({language:o.language,name:o.preferredVoice}):new t(n,s,{capabilities:{pan:!!a.pan,tremolo:!!a.tremolo,filters:!!(a.highpass||a.lowpass)},synthPatch:o.instrument,midiTrackName:o.midiName});return e.addChannel(o.type||"instrument",l,c(o.showPlayMarker,!0))}function g(e,i,n,s,o,a){let r=(t,i,o,l)=>f(e,s,!1,(l||n)[t],i,o,a),h=[],c={noteDuration:r("noteDuration",200,{min:40,max:1e3}),pan:r("pan",0,{min:-1,max:1}),volume:r("volume",1,{min:.1,max:1})};n.frequency&&(c.frequency=r("frequency",440,{min:50,max:6e3})),n.lowpass&&(c.lowpassFreq=r("frequency",2e4,{min:0,max:2e4},n.lowpass),c.lowpassResonance=r("resonance",0,{min:-6,max:12},n.lowpass)),n.highpass&&(c.highpassFreq=r("frequency",2e4,{min:0,max:2e4},n.highpass),c.highpassResonance=r("resonance",0,{min:-6,max:12},n.highpass)),n.tremolo&&(c.tremoloDepth=r("depth",0,{min:0,max:.8},n.tremolo),c.tremoloSpeed=r("speed",0,{min:0,max:.8},n.tremolo));let u=r("gapBetweenNotes",150,{min:50,max:1e3}),p=r("playDelay",0,{max:200}),d=(n,r=0)=>{let d=n;n.mapTo?("string"==typeof n.min&&(d.min=t.noteStringToC0Distance(n.min)),"string"==typeof n.max&&(d.max=t.noteStringToC0Distance(n.max))):"string"==typeof n&&m(n)&&(d=t.noteStringToC0Distance(n)),c.note=f(e,s,!1,d,-1,{min:0,max:107},a),c.note>-1&&(o&&(c.note=Math.round(c.note)),h.push(i.addEvent({time:e.time+p+u*r,relatedPoint:e.point,instrumentEventOptions:void 0!==r?l({},c):c})))};return n.pitch&&n.pitch.constructor===Array?n.pitch.forEach(d):n.pitch?d(n.pitch):n.frequency&&h.push(i.addEvent({time:e.time+p,relatedPoint:e.point,instrumentEventOptions:c})),h}function v(e,t,i,n,s){var o;let a=(t,o,a)=>f(e,n,!1,i[t],o,a,s),l=a("playDelay",0,{max:200}),r=a("pitch",1,{min:.3,max:2}),h=a("rate",1,{min:.4,max:4}),c=a("volume",1,{min:.1}),m=u("function"==typeof(o=i.text)?o(e):o,e,e.point&&e.point.series.chart);if(m)return t.addEvent({time:e.time+l,relatedPoint:e.point,speechOptions:{pitch:r,rate:h,volume:c},message:m})}function q(e,t,i){if("function"==typeof t)return t(e);if("object"==typeof t){let n=t.prop,s=c(e.value,e.point&&p(e.point,n));if("number"!=typeof s)return!1;let o=!0,a=t.crossingUp,l=t.crossingDown,r="number"==typeof i;o=a&&l?r&&(i<a&&s>=a||i>l&&s<=l):(void 0===a||r&&i<a&&s>=a)&&(void 0===l||r&&i>l&&s<=l);let h=c(t.max,1/0),u=c(t.min,-1/0);return s<=h&&s>=u&&o}return!0}return function(t,i,n){let s=n.options.sonification||{},o=s.defaultInstrumentOptions,a=s.defaultSpeechOptions,u=h({enabled:!0,groupTimespan:15,algorithm:"minmax",prop:"y"},s.pointGrouping),T=s.globalTracks||[],w=s.globalContextTracks||[],x="sequential"===s.order,E=Math.max(50,s.duration-300),N=s.afterSeriesWait,S=s.events||{},k=function(e){let t=e.options.sonification||{},i=(t.defaultInstrumentOptions||{}).mapping||{time:"x",pitch:"y"},n=t.defaultSpeechOptions&&t.defaultSpeechOptions.mapping||{},s=[],o={},a=(e,t)=>{null!==t?(s[t]=s[t]||{},s[t][e]=!0):o[e]=!0},l={},c={},u=(e,t,i)=>{let n=e=>"-"===e.charAt(0)?e.slice(1):e;if("string"==typeof t&&"text"!==e){if("pitch"===e&&m(t))return;"time"===e&&(c[t]=!0,a(t,i)),l[n(t)]=!0;return}if(t&&t.mapTo&&"string"==typeof t.mapTo){let s=n(t.mapTo);"time"===e&&a(s,i),("time"===e||"series"===t.within)&&(c[s]=!0),l[s]=!0;return}["tremolo","lowpass","highpass"].indexOf(e)>-1&&"object"==typeof t&&Object.keys(t).forEach(e=>u(e,t[e],i))},p=(e,t)=>{Object.keys(e).forEach(i=>u(i,e[i],t))},d=e=>e.forEach(e=>{l[e.valueProp||"x"]=c[e.valueProp||"x"]=!0});p(i,null),p(n,null),d(t.globalContextTracks||[]);let f=Object.keys(o).length;return e.series.forEach(e=>{let t=e.options.sonification;if(e.visible&&!(t&&!1===t.enabled)&&(f&&(s[e.index]=h(o)),t)){let i=(t.defaultInstrumentOptions||{}).mapping,n=(t.defaultSpeechOptions||{}).mapping;i&&p(i,e.index),n&&p(n,e.index),d(t.contextTracks||[]),(t.tracks||[]).concat(t.contextTracks||[]).forEach(t=>{t.mapping&&p(t.mapping,e.index)})}}),{seriesTimeProps:s,...function(e,t,i){let n=e.series,s=t.length,o=i.length,a=e=>e.reduce((e,t)=>(e[t]={min:1/0,max:-1/0},e),{}),l=(e,t,i)=>{let n=t[i];void 0===n&&(n=r(i,t)),"number"==typeof n&&(e[i].min=Math.min(e[i].min,n),e[i].max=Math.max(e[i].max,n))},h=a(t),c=n.length,u=Array(c);for(;c--;){let e=a(i),r=n[c].options;if(!n[c].visible||r&&r.sonification&&!1===r.sonification.enabled)continue;let m=n[c].points||[],p=m.length;for(;p--;){let n=s;for(;n--;)l(h,m[p],t[n]);for(n=o;n--;)l(e,m[p],i[n])}u[c]=e}return{globalExtremes:h,seriesExtremes:u}}(e,Object.keys(l),Object.keys(c))}}(n),P=new e({onPlay:S.onPlay,onEnd:S.onEnd,onStop:S.onStop,showCrosshair:s.showCrosshair,showTooltip:s.showTooltip},n);n.sonification&&(n.sonification.propMetrics=k);let M=0;return n.series.forEach((e,n)=>{let s=e.options.sonification||{};if(e.visible&&!1!==s.enabled){let r;let m=x?function(e,t,i,n){let s,o;let a=t-(e.chart.series.length-1)*n;if(i.seriesTimeProps.every(e=>{let t=Object.keys(e);return!(t.length>1)&&(s||(s=t[0]),s===t[0])})){let t=i.seriesExtremes[e.index][s];o=Math.round((t.max-t.min)/i.seriesExtremes.reduce((e,t)=>t[s]?e+t[s].max-t[s].min:e,0)*a)}else{let t=e.chart.series.reduce((e,t)=>e+t.points.length,0);o=Math.round((e.points||[]).length/t*a)}return Math.max(50,o)}(e,E,k,N):E,C=h(o,s.defaultInstrumentOptions),b=h(a,s.defaultSpeechOptions),A=h(u,s.pointGrouping),O=(s.tracks||[C]).concat(T),I=P.channels.length&&!x?s.contextTracks||[]:(s.contextTracks||[]).concat(w),V=[];O.forEach(n=>{let s=h({pointGrouping:A,midiName:n.midiName||e.name},"speech"===n.type?b:C,n),o=s.pointGrouping,a=s.activeWhen,l=e=>{"object"==typeof a&&a.prop&&(r=p(e,a.prop))},u=y(P,t,i,s),d=e=>V.push(...function(e,t,i,n){let s=[];if("speech"===i.type&&i.mapping){let o=v(e,t,i.mapping,n);o&&(s=[o])}else i.mapping&&(s=g(e,t,i.mapping,n,c(i.roundToMusicalNotes,!0)));return s}(e,u,s,k)),T=[],w=0,E=e=>{if(1===T.length)d({point:T[0].point,time:w+e/2});else{let t=function(e,t){let i=e.algorithm||"minmax",n=e=>t[e]?[t[e].point]:[];if("first"===i)return n(0);if("last"===i)return n(t.length-1);if("middle"===i)return n(t.length>>1);if("firstlast"===i)return n(0).concat(n(t.length-1));if("minmax"===i){let i,n,s,o;let a=e.prop||"y";if(t.forEach(e=>{let t=p(e.point,a);void 0!==t&&((!i||t<s)&&(i=e,s=t),(!n||t>o)&&(n=e,o=t))}),i&&n)return i.point===n.point?[i.point]:i.time>n.time?[n.point,i.point]:[i.point,n.point]}return[]}(o,T),i=e/t.length;t.forEach((e,t)=>d({point:e,time:w+i/2+i*t}))}T=[]};(e.points||[]).forEach((t,i)=>{var n;let h=i===e.points.length-1,c=(n=M,f({point:t,time:0},k,x,s.mapping&&s.mapping.time||0,0,{min:0,max:m,mapTo:"x"})+n),u={point:t,time:c};if(!s.mapping||!q(u,a,r)){l(t),h&&T.length&&E(T[T.length-1].time-T[0].time);return}if(l(t),o.enabled){let e=c-w,t=o.groupTimespan,i=h&&e<=t?e:t;h||e>t?(e<=t&&T.push(u),E(i),w=Math.floor(c/t)*t,h&&e>t?d({point:u.point,time:w+i/2}):T=[u]):T.push(u)}else d(u)})});let j=V.reduce((e,t)=>t.time<e.time?t:e,{time:1/0}),F=V.reduce((e,t)=>t.time>e.time?t:e,{time:-1/0});j.callback=S.onSeriesStart?S.onSeriesStart.bind(null,{series:e,timeline:P}):void 0,F.callback=S.onSeriesEnd?S.onSeriesEnd.bind(null,{series:e,timeline:P}):void 0,I.forEach(e=>{let s="speech"===e.type?h(a,e):h(o,{mapping:{pitch:{mapTo:"value"}}},e),u=y(P,t,i,s);r=void 0;let{timeInterval:p,valueInterval:f}=s,T=s.valueProp||"x",w=s.activeWhen,x=k.seriesExtremes[n][T],E=(e,t)=>{if(!s.mapping||!q({time:e,value:t},"object"==typeof w?l({prop:T},w):w,r)){r=t;return}r=t,"speech"===s.type?v({time:e,value:t},u,s.mapping,k,T):g({time:e,value:t},u,s.mapping,k,c(s.roundToMusicalNotes,!0),T)};if(p){let e=0;for(;e<=m;){let t=d(e,{min:0,max:m},x);E(e+M,t),e+=p}}if(f){let e=x.min;for(;e<=x.max;)E(d(e,x,{min:0,max:m},!1,"logarithmic"===s.valueMapFunction)+M,e),e+=f}}),x&&(M+=m+N)}}),P}}),i(t,"Extensions/Sonification/Sonification.js",[t["Core/Defaults.js"],t["Core/Utilities.js"],t["Core/Globals.js"],t["Extensions/Sonification/Options.js"],t["Extensions/Sonification/SonificationInstrument.js"],t["Extensions/Sonification/SonificationSpeaker.js"],t["Extensions/Sonification/SynthPatch.js"],t["Extensions/Sonification/InstrumentPresets.js"],t["Extensions/Sonification/TimelineFromChart.js"]],function(e,t,i,n,s,o,a,l,r){let{defaultOptions:h,getOptions:c}=e,{addEvent:u,extend:m,fireEvent:p,merge:d,pick:f}=t,{doc:y,win:g}=i;class v{constructor(e){this.chart=e,this.retryContextCounter=0,this.lastUpdate=0,this.unbindKeydown=u(y,"keydown",function(t){e&&e.sonification&&("Esc"===t.key||"Escape"===t.key)&&e.sonification.cancel()});try{this.audioContext=new g.AudioContext,this.audioContext.suspend(),this.audioDestination=this.audioContext.destination}catch(e){}}setAudioDestination(e){this.audioDestination=e,this.update()}isPlaying(){return!!this.timeline&&this.timeline.isPlaying}playSegment(e,t){this.ready(this.playSegment.bind(this,e,t))&&this.timeline&&this.timeline.playSegment(e,t)}playAdjacent(e,t,i){if(this.ready(this.playAdjacent.bind(this,e,t,i))&&this.timeline){let n=this.chart.options.sonification,s=n&&n.events&&n.events.onBoundaryHit;s||this.initBoundaryInstrument(),this.timeline.playAdjacent(e,t,s||(()=>{this.defaultBoundaryHit()}),i)}}playAdjacentSeries(e,t="x",i){let n=this.getLastPlayedPoint();if(n){let s=n.series.index+(e?1:-1);return this.playClosestToProp(t,n[t],e=>!!e.relatedPoint&&e.relatedPoint.series.index===s,i),this.chart.series[s]||null}return null}playClosestToProp(e,t,i,n){if(this.ready(this.playClosestToProp.bind(this,e,t,i,n))&&this.timeline){let s=this.chart.options.sonification,o=s&&s.events&&s.events.onBoundaryHit;o||this.initBoundaryInstrument(),this.timeline.playClosestToPropValue(e,t,n,o||(()=>this.defaultBoundaryHit()),i)}}getLastPlayedPoint(){return this.timeline?this.timeline.getLastPlayedPoint():null}playNote(e,t,i=0){if(!this.ready(this.playNote.bind(this,e,t)))return;let n=t.noteDuration=t.noteDuration||500,o=new s(this.audioContext,this.audioDestination,{synthPatch:e,capabilities:{filters:!0,tremolo:!0,pan:!0}});o.scheduleEventAtTime(i/1e3,t),setTimeout(()=>o&&o.destroy(),i+n+500)}speak(e,t,i=0){new o(d({language:"en-US",rate:1.5,volume:.4},t||{})).sayAtTime(i,e)}cancel(){this.timeline&&this.timeline.cancel(),p(this,"cancel")}downloadMIDI(){this.ready(this.downloadMIDI.bind(this))&&this.timeline&&(this.timeline.reset(),this.timeline.downloadMIDI())}sonifyChart(e,t){this.ready(this.sonifyChart.bind(this,e,t))&&this.timeline&&(this.timeline.reset(),this.beforePlay(),this.timeline.play(void 0,void 0,e,t))}sonifySeries(e,t,i){this.ready(this.sonifySeries.bind(this,e,t,i))&&this.timeline&&(this.timeline.reset(),this.beforePlay(),this.timeline.play(t=>!!t.relatedPoint&&t.relatedPoint.series===e,void 0,t,i))}sonifyPoint(e,t){this.ready(this.sonifyPoint.bind(this,e,t))&&this.timeline&&(this.timeline.reset(),this.beforePlay(),this.timeline.anchorPlayMoment(t=>t.relatedPoint===e,t))}setMasterVolume(e){this.timeline&&this.timeline.setMasterVolume(e)}destroy(){this.unbindKeydown(),this.timeline&&(this.timeline.destroy(),delete this.timeline),this.boundaryInstrument&&this.boundaryInstrument.stop(),this.audioContext&&(this.audioContext.close(),delete this.audioContext)}update(){let e=this.chart.options&&this.chart.options.sonification;if(!this.ready(this.update.bind(this))||!e)return;let t=Date.now(),i=e.updateInterval;if(t-this.lastUpdate<i&&!this.forceReady){clearTimeout(this.scheduledUpdate),this.scheduledUpdate=setTimeout(this.update.bind(this),i/2);return}let n=e.events||{};if(n.beforeUpdate&&n.beforeUpdate({chart:this.chart,timeline:this.timeline}),this.lastUpdate=t,this.timeline&&this.timeline.destroy(),this.audioContext&&this.audioDestination){this.timeline=r(this.audioContext,this.audioDestination,this.chart);let e=this.chart.options.sonification;this.timeline.setMasterVolume(f(e&&e.masterVolume,1))}n.afterUpdate&&n.afterUpdate({chart:this.chart,timeline:this.timeline})}ready(e){return!!this.audioContext&&!!this.audioDestination&&!!this.chart.options&&(!this.chart.options.sonification||!1!==this.chart.options.sonification.enabled)&&("suspended"!==this.audioContext.state||this.forceReady?(this.retryContextCounter=0,!0):(this.retryContextCounter++<20&&setTimeout(()=>{this.audioContext&&"suspended"===this.audioContext.state?this.audioContext.resume().then(e):e()},5),!1))}beforePlay(){let e=this.chart.options.sonification,t=e&&e.events&&e.events.beforePlay;t&&t({chart:this.chart,timeline:this.timeline})}initBoundaryInstrument(){this.boundaryInstrument||(this.boundaryInstrument=new a(this.audioContext,d(l.chop,{masterVolume:.3})),this.boundaryInstrument.startSilently(),this.boundaryInstrument.connect(this.audioDestination))}defaultBoundaryHit(){this.boundaryInstrument&&(this.boundaryInstrument.playFreqAtTime(.1,1,200),this.boundaryInstrument.playFreqAtTime(.2,1,200))}}return function(e){let t=[];function i(){let t=this.sonification,i=this.options&&this.options.sonification;i&&i.enabled?t?t.update():(this.sonification=new e(this),this.sonification.update()):t&&(t.destroy(),delete this.sonification)}function n(){this&&this.sonification&&this.sonification.destroy()}function s(){this.updateSonificationEnabled&&this.updateSonificationEnabled()}function o(e){let t=e.options.sonification;t&&(d(!0,this.options.sonification,t),s.call(this))}e.compose=function(e,a,l){-1===t.indexOf(e)&&(t.push(e),m(e.prototype,{updateSonificationEnabled:i,sonify:function(e){this.sonification&&this.sonification.sonifyChart(!1,e)},toggleSonify:function(e=!0,t){if(!this.sonification)return;let i=this.sonification.timeline;g.speechSynthesis&&g.speechSynthesis.cancel(),i&&this.sonification.isPlaying()?e?this.sonification.cancel():i.pause():i&&i.isPaused?i.resume():this.sonification.sonifyChart(e,t)}}),u(e,"destroy",n),u(e,"render",s),u(e,"update",o)),-1===t.indexOf(a)&&(t.push(a),a.prototype.sonify=function(e){this.chart.sonification&&this.chart.sonification.sonifySeries(this,!1,e)}),-1===t.indexOf(l)&&(t.push(l),l.prototype.sonify=function(e){this.series.chart.sonification&&this.series.chart.sonification.sonifyPoint(this,e)});let r=c().exporting;r&&r.buttons&&r.buttons.contextButton.menuItems&&r.buttons.contextButton.menuItems.push("separator","downloadMIDI","playAsSound")}}(v||(v={})),d(!0,h,n),v}),i(t,"Extensions/Sonification/Scales.js",[],function(){return{minor:[0,2,3,5,7,8,10],dorian:[0,2,3,5,7,9,10],harmonicMinor:[0,2,3,5,7,8,11],phrygian:[0,1,3,5,7,8,11],major:[0,2,4,5,7,9,11],lydian:[0,2,4,6,7,9,11],mixolydian:[0,2,4,5,7,9,10],majorPentatonic:[0,2,4,7,9],minorPentatonic:[0,3,5,7,10]}}),i(t,"masters/modules/sonification.src.js",[t["Core/Globals.js"],t["Extensions/Sonification/Sonification.js"],t["Extensions/Sonification/SynthPatch.js"],t["Extensions/Sonification/InstrumentPresets.js"],t["Extensions/Sonification/Scales.js"],t["Extensions/Sonification/SonificationInstrument.js"],t["Extensions/Sonification/SonificationSpeaker.js"],t["Extensions/Sonification/SonificationTimeline.js"]],function(e,t,i,n,s,o,a,l){return e.sonification={InstrumentPresets:n,Scales:s,SynthPatch:i,SonificationInstrument:o,SonificationSpeaker:a,SonificationTimeline:l,Sonification:t},t.compose(e.Chart,e.Series,e.Point),e})});
10
+ */function(e){"object"==typeof module&&module.exports?(e.default=e,module.exports=e):"function"==typeof define&&define.amd?define("highcharts/modules/sonification",["highcharts"],function(t){return e(t),e.Highcharts=t,e}):e("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(e){"use strict";var t=e?e._modules:{};function i(e,t,i,n){e.hasOwnProperty(t)||(e[t]=n.apply(null,i),"function"==typeof CustomEvent&&window.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:t,module:e[t]}})))}i(t,"Extensions/Sonification/Options.js",[],function(){return{sonification:{enabled:!0,duration:6e3,afterSeriesWait:700,updateInterval:200,masterVolume:.7,order:"sequential",showTooltip:!0,showCrosshair:!0,pointGrouping:{enabled:!0,groupTimespan:15,algorithm:"minmax",prop:"y"},defaultInstrumentOptions:{roundToMusicalNotes:!0,instrument:"piano",mapping:{time:"x",pan:"x",noteDuration:200,pitch:{mapTo:"y",min:"c2",max:"c6",within:"yAxis"},gapBetweenNotes:100}},defaultSpeechOptions:{language:"en-US",mapping:{time:"x",rate:1.3,volume:.4},pointGrouping:{algorithm:"last"}}},exporting:{menuItemDefinitions:{downloadMIDI:{textKey:"downloadMIDI",onclick:function(){this.sonification&&this.sonification.downloadMIDI()}},playAsSound:{textKey:"playAsSound",onclick:function(){let e=this.sonification;e&&e.isPlaying()?e.cancel():this.sonify()}}}},lang:{downloadMIDI:"Download MIDI",playAsSound:"Play as sound"}}}),i(t,"Extensions/Sonification/SynthPatch.js",[t["Core/Utilities.js"]],function(e){let{clamp:t,defined:i,pick:n}=e;function s(e,t){return(.2414*e-.2414)*Math.log(t)+(3.5-1.7*e)/1.8}function o(e,t,i){e.gain.cancelScheduledValues(t),e.gain.setTargetAtTime(i,t,h.stopRampTime/4),e.gain.setValueAtTime(i,t+h.stopRampTime)}function a(e,t,i,n,s=1){let a="attack"===t,l=n.gain;if(l.cancelScheduledValues(i),!e.length){o(n,i,a?s:0);return}e[0].t>1&&e.unshift({t:0,vol:a?0:1}),e.forEach((t,n)=>{let o=e[n-1],a=o?(t.t-o.t)/1e3:0,r=i+(o?o.t/1e3+h.stopRampTime:0);l.setTargetAtTime(t.vol*s,r,Math.max(a,h.stopRampTime)/2)})}class l{constructor(e,t){this.pulseWidth=Math.min(Math.max(0,t.pulseWidth||.5));let i=()=>new OscillatorNode(e,{type:"sawtooth",detune:t.detune,frequency:Math.max(1,t.frequency||350)});this.sawOscA=i(),this.sawOscB=i(),this.phaseInverter=new GainNode(e,{gain:-1}),this.masterGain=new GainNode(e),this.delayNode=new DelayNode(e,{delayTime:this.pulseWidth/this.sawOscA.frequency.value}),this.sawOscA.connect(this.masterGain),this.sawOscB.connect(this.phaseInverter),this.phaseInverter.connect(this.delayNode),this.delayNode.connect(this.masterGain)}connect(e){this.masterGain.connect(e)}getFrequencyFacade(){let e=this;return{cancelScheduledValues:t=>(e.sawOscA.frequency.cancelScheduledValues(t),e.sawOscB.frequency.cancelScheduledValues(t),e.delayNode.delayTime.cancelScheduledValues(t),e.sawOscA.frequency),setValueAtTime(t,i){return this.cancelScheduledValues(i),e.sawOscA.frequency.setValueAtTime(t,i),e.sawOscB.frequency.setValueAtTime(t,i),e.delayNode.delayTime.setValueAtTime(Math.round(1e4*e.pulseWidth/t)/1e4,i),e.sawOscA.frequency},setTargetAtTime(t,i,n){return this.cancelScheduledValues(i),e.sawOscA.frequency.setTargetAtTime(t,i,n),e.sawOscB.frequency.setTargetAtTime(t,i,n),e.delayNode.delayTime.setTargetAtTime(Math.round(1e4*e.pulseWidth/t)/1e4,i,n),e.sawOscA.frequency}}}getPWMTarget(){return this.delayNode.delayTime}start(){this.sawOscA.start(),this.sawOscB.start()}stop(e){this.sawOscA.stop(e),this.sawOscB.stop(e)}}class r{constructor(e,t,i){this.audioContext=e,this.options=t,this.fmOscillatorIx=t.fmOscillator,this.vmOscillatorIx=t.vmOscillator,this.createSoundSource(),this.createGain(),this.createFilters(),this.createVolTracking(),i&&this.connect(i)}connect(e){[this.lowpassNode,this.highpassNode,this.volTrackingNode,this.vmNode,this.gainNode,this.whiteNoise,this.pulseNode,this.oscNode].reduce((e,t)=>t?(t.connect(e),t):e,e)}start(){this.oscNode&&this.oscNode.start(),this.whiteNoise&&this.whiteNoise.start(),this.pulseNode&&this.pulseNode.start()}stopAtTime(e){this.oscNode&&this.oscNode.stop(e),this.whiteNoise&&this.whiteNoise.stop(e),this.pulseNode&&this.pulseNode.stop(e)}setFreqAtTime(e,i,s=0){let o=this.options,a=t(n(o.fixedFrequency,i)*(o.freqMultiplier||1),0,21e3),l=this.getOscTarget(),r=s/5e3;l&&(l.cancelScheduledValues(e),s&&e-(this.lastUpdateTime||-1)>.01?(l.setTargetAtTime(a,e,r),l.setValueAtTime(a,e+r)):l.setValueAtTime(a,e)),this.scheduleVolTrackingChange(a,e,s),this.scheduleFilterTrackingChange(a,e,s),this.lastUpdateTime=e}getFMTarget(){return this.oscNode&&this.oscNode.detune||this.whiteNoise&&this.whiteNoise.detune||this.pulseNode&&this.pulseNode.getPWMTarget()}getVMTarget(){return this.vmNode&&this.vmNode.gain}runEnvelopeAtTime(e,t){this.gainNode&&a(("attack"===e?this.options.attackEnvelope:this.options.releaseEnvelope)||[],e,t,this.gainNode,this.options.volume)}cancelScheduled(){this.gainNode&&this.gainNode.gain.cancelScheduledValues(this.audioContext.currentTime);let e=this.getOscTarget();e&&e.cancelScheduledValues(0),this.lowpassNode&&this.lowpassNode.frequency.cancelScheduledValues(0),this.highpassNode&&this.highpassNode.frequency.cancelScheduledValues(0),this.volTrackingNode&&this.volTrackingNode.gain.cancelScheduledValues(0)}scheduleVolTrackingChange(e,t,i){if(this.volTrackingNode){let n=s(this.options.volumePitchTrackingMultiplier||1,e),o=i?i/1e3:h.stopRampTime;this.volTrackingNode.gain.cancelScheduledValues(t),this.volTrackingNode.gain.setTargetAtTime(n,t,o/5),this.volTrackingNode.gain.setValueAtTime(n,t+o)}}scheduleFilterTrackingChange(e,i,n){let o=this.options,a=n?n/1e3:h.stopRampTime,l=(n,o)=>{let l=s(o.frequencyPitchTrackingMultiplier||1,e),r=t((o.frequency||1e3)*l,0,21e3);n.frequency.cancelScheduledValues(i),n.frequency.setTargetAtTime(r,i,a/5),n.frequency.setValueAtTime(r,i+a)};this.lowpassNode&&o.lowpass&&l(this.lowpassNode,o.lowpass),this.highpassNode&&o.highpass&&l(this.highpassNode,o.highpass)}createGain(){let e=this.options;(i(e.volume)||e.attackEnvelope&&e.attackEnvelope.length||e.releaseEnvelope&&e.releaseEnvelope.length)&&(this.gainNode=new GainNode(this.audioContext,{gain:n(e.volume,1)})),this.vmNode=new GainNode(this.audioContext)}createSoundSource(){let e=this.options,t=this.audioContext,i=(e.fixedFrequency||0)*(e.freqMultiplier||1);if("whitenoise"===e.type){let e=2*t.sampleRate,i=t.createBuffer(1,e,t.sampleRate),n=i.getChannelData(0);for(let t=0;t<e;++t)n[t]=1.2*Math.random()-.6;let s=this.whiteNoise=t.createBufferSource();s.buffer=i,s.loop=!0}else"pulse"===e.type?this.pulseNode=new l(t,{detune:e.detune,pulseWidth:e.pulseWidth,frequency:i}):this.oscNode=new OscillatorNode(t,{type:e.type||"sine",detune:e.detune,frequency:i})}createFilters(){let e=this.options;e.lowpass&&e.lowpass.frequency&&(this.lowpassNode=new BiquadFilterNode(this.audioContext,{type:"lowpass",Q:e.lowpass.Q||1,frequency:e.lowpass.frequency})),e.highpass&&e.highpass.frequency&&(this.highpassNode=new BiquadFilterNode(this.audioContext,{type:"highpass",Q:e.highpass.Q||1,frequency:e.highpass.frequency}))}createVolTracking(){let e=this.options;e.volumePitchTrackingMultiplier&&1!==e.volumePitchTrackingMultiplier&&(this.volTrackingNode=new GainNode(this.audioContext,{gain:1}))}getOscTarget(){return this.oscNode?this.oscNode.frequency:this.pulseNode&&this.pulseNode.getFrequencyFacade()}}class h{constructor(e,t){this.audioContext=e,this.options=t,this.eqNodes=[],this.midiInstrument=t.midiInstrument||1,this.outputNode=new GainNode(e,{gain:0}),this.createEqChain(this.outputNode);let n=this.eqNodes.length?this.eqNodes[0]:this.outputNode;this.oscillators=(this.options.oscillators||[]).map(t=>new r(e,t,i(t.fmOscillator)||i(t.vmOscillator)?void 0:n)),this.oscillators.forEach(e=>{let t=(t,i)=>{if(i){let n=i[t]();n&&e.connect(n)}};i(e.fmOscillatorIx)&&t("getFMTarget",this.oscillators[e.fmOscillatorIx]),i(e.vmOscillatorIx)&&t("getVMTarget",this.oscillators[e.vmOscillatorIx])})}startSilently(){this.outputNode.gain.value=0,this.oscillators.forEach(e=>e.start())}stop(){let e=this.audioContext.currentTime,t=e+h.stopRampTime;o(this.outputNode,e,0),this.oscillators.forEach(e=>e.stopAtTime(t)),this.outputNode.disconnect()}silenceAtTime(e){if(!e&&this.outputNode.gain.value<.01){this.outputNode.gain.value=0;return}this.releaseAtTime((e||0)+this.audioContext.currentTime)}mute(){this.cancelScheduled(),o(this.outputNode,this.audioContext.currentTime,0)}playFreqAtTime(e,t,i){let n=(e||0)+this.audioContext.currentTime,s=this.options;this.oscillators.forEach(e=>{e.setFreqAtTime(n,t,s.noteGlideDuration),e.runEnvelopeAtTime("attack",n)}),a(s.masterAttackEnvelope||[],"attack",n,this.outputNode,s.masterVolume),i&&this.releaseAtTime(n+i/1e3)}cancelScheduled(){this.outputNode.gain.cancelScheduledValues(this.audioContext.currentTime),this.oscillators.forEach(e=>e.cancelScheduled())}connect(e){return this.outputNode.connect(e)}createEqChain(e){this.eqNodes=(this.options.eq||[]).map(e=>new BiquadFilterNode(this.audioContext,{type:"peaking",...e})),this.eqNodes.reduceRight((e,t)=>(t.connect(e),t),e)}releaseAtTime(e){let t=0;this.oscillators.forEach(i=>{let n=i.options.releaseEnvelope;n&&n.length&&(t=Math.max(t,n[n.length-1].t),i.runEnvelopeAtTime("release",e))});let i=this.options.masterReleaseEnvelope||[];i.length&&(a(i,"release",e,this.outputNode,this.options.masterVolume),t=Math.max(t,i[i.length-1].t)),o(this.outputNode,e+t/1e3,0)}}return h.stopRampTime=.012,h}),i(t,"Extensions/Sonification/InstrumentPresets.js",[],function(){return{piano:{masterVolume:.45,masterAttackEnvelope:[{t:1,vol:.71},{t:40,vol:.79},{t:82,vol:.64},{t:147,vol:.29},{t:260,vol:.15},{t:417,vol:.05},{t:589,vol:0}],eq:[{frequency:200,Q:.7,gain:6},{frequency:450,gain:6},{frequency:1300,gain:2},{frequency:2600,Q:.8,gain:8},{frequency:3500,Q:.8,gain:6},{frequency:6200,Q:.8,gain:10},{frequency:8e3,gain:-23},{frequency:1e4,Q:.4,gain:-12}],oscillators:[{type:"pulse",volume:.5,pulseWidth:.55,volumePitchTrackingMultiplier:.1,lowpass:{frequency:4.5,frequencyPitchTrackingMultiplier:900,Q:-2},highpass:{frequency:270},attackEnvelope:[{t:1,vol:1}],releaseEnvelope:[{t:1,vol:1},{t:282,vol:.64},{t:597,vol:0}]},{type:"whitenoise",volume:.8,lowpass:{frequency:400},highpass:{frequency:300},attackEnvelope:[{t:1,vol:1},{t:19,vol:0}]}]},plucked:{masterVolume:.5,midiInstrument:25,masterAttackEnvelope:[{t:1,vol:.71},{t:4,vol:.71},{t:31,vol:.4},{t:109,vol:.12},{t:234,vol:.04},{t:442,vol:0}],eq:[{frequency:800,gain:-8},{frequency:1400,Q:4,gain:4},{frequency:1600,gain:-14},{frequency:2200,gain:-8},{frequency:3600,gain:-2},{frequency:6400,Q:2,gain:-6}],oscillators:[{type:"sawtooth",volume:.9,volumePitchTrackingMultiplier:.6,highpass:{frequency:100},lowpass:{frequency:8e3},releaseEnvelope:[{t:1,vol:1},{t:315,vol:.56},{t:550,vol:0}]}]},flute:{masterVolume:1.1,midiInstrument:74,noteGlideDuration:30,masterAttackEnvelope:[{t:0,vol:0},{t:29,vol:1},{t:76,vol:.48},{t:600,vol:.36}],masterReleaseEnvelope:[{t:1,vol:.36},{t:24,vol:.15},{t:119,vol:0}],eq:[{frequency:150,Q:.6,gain:-10},{frequency:500,gain:4},{frequency:1100,gain:-4},{frequency:2200,gain:-14},{frequency:5e3,gain:8},{frequency:6400,gain:10},{frequency:8e3,gain:12},{frequency:10800,gain:8}],oscillators:[{type:"triangle",volume:1,volumePitchTrackingMultiplier:.4,lowpass:{frequency:12,frequencyPitchTrackingMultiplier:100},highpass:{frequency:200}},{type:"sine",fixedFrequency:5,volume:.2,vmOscillator:0,attackEnvelope:[{t:1,vol:1},{t:48,vol:0},{t:225,vol:.05},{t:600,vol:.77}]},{type:"whitenoise",volume:.13,lowpass:{frequency:9e3,Q:3},highpass:{frequency:6e3,Q:3},vmOscillator:0,attackEnvelope:[{t:0,vol:0},{t:26,vol:1},{t:93,vol:.8}]}]},lead:{masterVolume:1,midiInstrument:20,masterAttackEnvelope:[{t:1,vol:.81},{t:98,vol:.5},{t:201,vol:.18},{t:377,vol:.04},{t:586,vol:0},{t:586,vol:0}],eq:[{frequency:200,gain:-6},{frequency:400,gain:-8},{frequency:800,Q:.5,gain:-10},{frequency:1200,gain:4},{frequency:3600,gain:-4},{frequency:4200,gain:-12},{frequency:7400,gain:-14},{frequency:1e4,gain:2}],oscillators:[{type:"triangle",volume:1.1,volumePitchTrackingMultiplier:.6,lowpass:{frequency:5e3},highpass:{frequency:100}},{type:"sawtooth",volume:.4,lowpass:{frequency:7e3},highpass:{frequency:800,Q:6},releaseEnvelope:[{t:0,vol:.99},{t:200,vol:.83},{t:495,vol:0}]}]},vibraphone:{masterVolume:1,midiInstrument:12,masterAttackEnvelope:[{t:1,vol:0},{t:10,vol:.63},{t:82,vol:.64},{t:149,vol:.26},{t:600,vol:0}],eq:[{frequency:200,Q:.8,gain:-12},{frequency:400,gain:-4},{frequency:1600,Q:.5,gain:6},{frequency:2200,Q:.5,gain:6},{frequency:6400,gain:4},{frequency:12800,gain:4}],oscillators:[{type:"sine",volume:1.5,volumePitchTrackingMultiplier:1e-7,attackEnvelope:[{t:1,vol:1}],releaseEnvelope:[{t:1,vol:1},{t:146,vol:.39},{t:597,vol:0}]},{type:"whitenoise",volume:.03,volumePitchTrackingMultiplier:1e-4,lowpass:{frequency:900},highpass:{frequency:800},attackEnvelope:[{t:1,vol:1},{t:9,vol:0}]},{type:"sine",freqMultiplier:4,volume:.15,volumePitchTrackingMultiplier:1e-4},{type:"sine",fixedFrequency:3,volume:6,fmOscillator:0,releaseEnvelope:[{t:1,vol:1},{t:190,vol:.41},{t:600,vol:0}]},{type:"sine",fixedFrequency:6,volume:3,fmOscillator:2},{type:"sine",freqMultiplier:9,volume:5e-4,volumePitchTrackingMultiplier:1e-4,releaseEnvelope:[{t:1,vol:.97},{t:530,vol:0}]}]},saxophone:{masterVolume:1,midiInstrument:67,noteGlideDuration:10,masterAttackEnvelope:[{t:1,vol:.57},{t:35,vol:1},{t:87,vol:.84},{t:111,vol:.6},{t:296,vol:.49},{t:600,vol:.58}],masterReleaseEnvelope:[{t:1,vol:.58},{t:47,vol:.16},{t:119,vol:0}],eq:[{frequency:200,gain:-2},{frequency:600,gain:2},{frequency:800,gain:-10},{frequency:1100,gain:-2},{frequency:2200,gain:-2},{frequency:3500,gain:10},{frequency:12800,gain:4}],oscillators:[{type:"sawtooth",volume:.45,volumePitchTrackingMultiplier:.06,lowpass:{frequency:18,frequencyPitchTrackingMultiplier:200},highpass:{frequency:300}},{type:"whitenoise",fixedFrequency:1,volume:.4,highpass:{frequency:7e3},vmOscillator:0,attackEnvelope:[{t:1,vol:1},{t:51,vol:1},{t:86,vol:.84},{t:500,vol:.78}]},{type:"sine",fixedFrequency:4,volume:2,fmOscillator:0,attackEnvelope:[{t:0,vol:0},{t:15,vol:.94},{t:79,vol:1},{t:172,vol:.47},{t:500,vol:.26}]},{type:"sine",fixedFrequency:7,volume:6,fmOscillator:0,attackEnvelope:[{t:0,vol:0},{t:25,vol:.99},{t:85,vol:0},{t:85,vol:0},{t:387,vol:.02},{t:511,vol:.43},{t:600,vol:0}]}]},trumpet:{masterVolume:.3,midiInstrument:57,noteGlideDuration:40,masterAttackEnvelope:[{t:1,vol:0},{t:17,vol:1},{t:42,vol:.85},{t:76,vol:1},{t:202,vol:.65},{t:226,vol:.86},{t:282,vol:.63}],masterReleaseEnvelope:[{t:1,vol:.62},{t:34,vol:.14},{t:63,vol:.21},{t:96,vol:0}],eq:[{frequency:200,Q:.6,gain:10},{frequency:600,Q:.5,gain:6},{frequency:1500,Q:.7,gain:14},{frequency:3200,Q:2,gain:8},{frequency:3800,Q:.8,gain:10},{frequency:6200,gain:12},{frequency:8400,gain:-20},{frequency:12800,Q:.5,gain:-18}],oscillators:[{type:"sawtooth",volume:.15,pulseWidth:.5,volumePitchTrackingMultiplier:.5,lowpass:{frequency:1900,Q:3}},{type:"sine",fixedFrequency:6,volume:.2,vmOscillator:0,attackEnvelope:[{t:1,vol:1},{t:102,vol:.13},{t:556,vol:.24}]},{type:"whitenoise",volume:.45,highpass:{frequency:7e3,Q:9},vmOscillator:0,attackEnvelope:[{t:1,vol:1},{t:89,vol:.51},{t:577,vol:.29}]},{type:"sine",fixedFrequency:5.7,volume:20,fmOscillator:0,attackEnvelope:[{t:1,vol:1},{t:89,vol:1},{t:137,vol:.46},{t:283,vol:.15},{t:600,vol:.28}]}]},sawsynth:{masterVolume:.3,midiInstrument:51,noteGlideDuration:40,masterAttackEnvelope:[{t:0,vol:.6},{t:9,vol:1},{t:102,vol:.48}],eq:[{frequency:200,gain:-6}],oscillators:[{type:"sawtooth",volume:.4,volumePitchTrackingMultiplier:.3},{type:"sawtooth",volume:.4,detune:11,volumePitchTrackingMultiplier:.3},{type:"sawtooth",volume:.4,detune:-11,volumePitchTrackingMultiplier:.3}]},basic1:{masterVolume:1,noteGlideDuration:0,masterReleaseEnvelope:[{t:1,vol:.36},{t:24,vol:.15},{t:119,vol:0}],eq:[{frequency:150,Q:.6,gain:-12},{frequency:1100,gain:-2},{frequency:2200,gain:-16},{frequency:5e3,gain:8},{frequency:6400,gain:10},{frequency:8e3,gain:12},{frequency:10800,gain:8}],oscillators:[{type:"triangle",volume:1,volumePitchTrackingMultiplier:.05,lowpass:{frequency:17,frequencyPitchTrackingMultiplier:100},highpass:{frequency:200}},{type:"whitenoise",volume:.04,lowpass:{frequency:9e3,Q:3},highpass:{frequency:6e3,Q:3},vmOscillator:0,attackEnvelope:[{t:0,vol:0},{t:26,vol:1},{t:71,vol:.73}]}]},basic2:{masterVolume:.3,eq:[{frequency:200,Q:.7,gain:6},{frequency:450,gain:2},{frequency:1300,gain:-2},{frequency:2600,Q:.8,gain:6},{frequency:3500,Q:.8,gain:6},{frequency:6200,Q:.8,gain:10},{frequency:8e3,gain:-18},{frequency:1e4,Q:.4,gain:-12}],oscillators:[{type:"pulse",volume:.4,pulseWidth:.55,volumePitchTrackingMultiplier:.1,lowpass:{frequency:4.5,frequencyPitchTrackingMultiplier:900,Q:-2},highpass:{frequency:270}}]},chord:{masterVolume:1,masterAttackEnvelope:[{t:1,vol:.79},{t:27,vol:.86},{t:62,vol:.81},{t:150,vol:.35},{t:408,vol:.04},{t:600,vol:0}],eq:[{frequency:200,gain:-8},{frequency:600,Q:2,gain:4},{frequency:800,gain:-10},{frequency:1600,gain:-2},{frequency:2200,gain:-6},{frequency:3600,Q:.7,gain:-2},{frequency:6400,gain:6},{frequency:12800,gain:6}],oscillators:[{type:"triangle",volume:1.1,volumePitchTrackingMultiplier:.05,lowpass:{frequency:8e3},highpass:{frequency:100},releaseEnvelope:[{t:1,vol:1},{t:315,vol:.56},{t:540,vol:0}]},{type:"triangle",freqMultiplier:1.17,volume:.4,volumePitchTrackingMultiplier:.07,lowpass:{frequency:5e3},highpass:{frequency:100},releaseEnvelope:[{t:0,vol:1},{t:476,vol:0}]},{type:"triangle",freqMultiplier:1.58333,volume:.7,volumePitchTrackingMultiplier:.02,highpass:{frequency:200},releaseEnvelope:[{t:0,vol:1},{t:422,vol:.56},{t:577,vol:0}]},{type:"sine",fixedFrequency:10,volume:4,fmOscillator:0,attackEnvelope:[{t:1,vol:1},{t:157,vol:.65}]},{type:"sine",fixedFrequency:5,volume:.3,vmOscillator:2,attackEnvelope:[{t:1,vol:1},{t:155,vol:.91},{t:289,vol:.78}]}]},wobble:{masterVolume:.9,masterReleaseEnvelope:[{t:1,vol:.36},{t:24,vol:.15},{t:119,vol:0}],eq:[{frequency:150,Q:.6,gain:-12},{frequency:1100,gain:-2},{frequency:2200,gain:-16},{frequency:5e3,gain:8},{frequency:6400,gain:10},{frequency:8e3,gain:12},{frequency:10800,gain:8}],oscillators:[{type:"triangle",volume:.9,volumePitchTrackingMultiplier:.1,lowpass:{frequency:17,frequencyPitchTrackingMultiplier:100},highpass:{frequency:200}},{type:"whitenoise",volume:.04,lowpass:{frequency:9e3,Q:3},highpass:{frequency:6e3,Q:3},vmOscillator:0,attackEnvelope:[{t:0,vol:0},{t:26,vol:1},{t:71,vol:.73}]},{type:"sine",freqMultiplier:.011,volume:30,fmOscillator:0}]},sine:{masterVolume:1,oscillators:[{type:"sine",volumePitchTrackingMultiplier:.07}]},sineGlide:{masterVolume:1,noteGlideDuration:100,oscillators:[{type:"sine",volumePitchTrackingMultiplier:.07}]},triangle:{masterVolume:.5,oscillators:[{type:"triangle",volume:1,volumePitchTrackingMultiplier:.07}]},sawtooth:{masterVolume:.25,midiInstrument:82,oscillators:[{type:"sawtooth",volume:.3,volumePitchTrackingMultiplier:.07}]},square:{masterVolume:.3,midiInstrument:81,oscillators:[{type:"square",volume:.2,volumePitchTrackingMultiplier:.07}]},chop:{masterVolume:1,midiInstrument:116,masterAttackEnvelope:[{t:1,vol:1},{t:44,vol:0}],oscillators:[{type:"whitenoise",volume:1,lowpass:{frequency:600},highpass:{frequency:200}}]},shaker:{masterVolume:.4,midiInstrument:116,masterAttackEnvelope:[{t:1,vol:1},{t:44,vol:0}],oscillators:[{type:"whitenoise",volume:1,lowpass:{frequency:6500},highpass:{frequency:5e3}}]},step:{masterVolume:1,midiInstrument:116,masterAttackEnvelope:[{t:1,vol:1},{t:44,vol:0}],eq:[{frequency:200,gain:-1},{frequency:400,gain:-14},{frequency:800,gain:8},{frequency:1e3,Q:5,gain:-24},{frequency:1600,gain:8},{frequency:2200,gain:-10},{frequency:5400,gain:4},{frequency:12800,gain:-36}],oscillators:[{type:"whitenoise",volume:1.5,lowpass:{frequency:300},highpass:{frequency:100,Q:6}}]},kick:{masterVolume:.55,masterAttackEnvelope:[{t:1,vol:.8},{t:15,vol:1},{t:45,vol:.35},{t:121,vol:.11},{t:242,vol:0}],eq:[{frequency:50,gain:6},{frequency:400,gain:-18},{frequency:1600,gain:18}],oscillators:[{type:"triangle",fixedFrequency:90,volume:1,lowpass:{frequency:300},attackEnvelope:[{t:1,vol:1},{t:6,vol:1},{t:45,vol:.01}]},{type:"whitenoise",volume:.4,lowpass:{frequency:200},attackEnvelope:[{t:1,vol:1},{t:30,vol:0}]},{type:"triangle",freqMultiplier:.1,volume:1,lowpass:{frequency:200}}]},shortnote:{masterVolume:.8,midiInstrument:116,masterAttackEnvelope:[{t:1,vol:1},{t:15,vol:0}],eq:[{frequency:400,gain:-4},{frequency:800,gain:-12},{frequency:2400,gain:4},{frequency:7200,gain:-20},{frequency:1e3,Q:5,gain:-12},{frequency:5400,gain:-32},{frequency:12800,gain:-14}],oscillators:[{type:"sawtooth",volume:.6,lowpass:{frequency:1e3}},{type:"whitenoise",volume:.2,lowpass:{frequency:1e4},highpass:{frequency:7e3},attackEnvelope:[{t:1,vol:1},{t:10,vol:0}]},{type:"whitenoise",volume:1.3,lowpass:{frequency:700,Q:4},highpass:{frequency:250}}]},noise:{masterVolume:.3,midiInstrument:122,oscillators:[{type:"whitenoise"}]},filteredNoise:{masterVolume:.3,midiInstrument:122,eq:[{frequency:1600,gain:-8},{frequency:2200,gain:-4}],oscillators:[{type:"whitenoise",lowpass:{frequency:5,frequencyPitchTrackingMultiplier:1300,Q:6},highpass:{frequency:5,frequencyPitchTrackingMultiplier:300,Q:6}}]},wind:{masterVolume:.75,midiInstrument:122,noteGlideDuration:150,masterReleaseEnvelope:[{t:0,vol:1},{t:124,vol:.24},{t:281,vol:0}],oscillators:[{type:"whitenoise",volume:1,lowpass:{frequency:100,frequencyPitchTrackingMultiplier:6,Q:23},highpass:{frequency:170,frequencyPitchTrackingMultiplier:6}},{type:"sine",freqMultiplier:.016,volume:1e3,fmOscillator:0}]}}}),i(t,"Extensions/Sonification/SonificationInstrument.js",[t["Extensions/Sonification/SynthPatch.js"],t["Extensions/Sonification/InstrumentPresets.js"],t["Core/Utilities.js"]],function(e,t,i){let{defined:n,extend:s}=i;class o{constructor(i,n,o){this.audioContext=i,this.curParams={},this.midiTrackName=o.midiTrackName,this.masterVolNode=new GainNode(i),this.masterVolNode.connect(n),this.volumeNode=new GainNode(i),this.createNodesFromCapabilities(s({pan:!0},o.capabilities||{})),this.connectCapabilityNodes(this.volumeNode,this.masterVolNode),this.synthPatch=new e(i,"string"==typeof o.synthPatch?t[o.synthPatch]:o.synthPatch),this.midiInstrument=this.synthPatch.midiInstrument||1,this.synthPatch.startSilently(),this.synthPatch.connect(this.volumeNode)}setMasterVolume(e){this.masterVolNode.gain.setTargetAtTime(e,0,o.rampTime)}scheduleEventAtTime(e,t){let i=s(this.curParams,t),a=n(t.frequency)?t.frequency:n(t.note)?o.musicalNoteToFrequency(t.note):220;n(a)&&this.synthPatch.playFreqAtTime(e,a,i.noteDuration),(n(i.tremoloDepth)||n(i.tremoloSpeed))&&this.setTremoloAtTime(e,i.tremoloDepth,i.tremoloSpeed),n(i.pan)&&this.setPanAtTime(e,i.pan),n(i.volume)&&this.setVolumeAtTime(e,i.volume),(n(i.lowpassFreq)||n(i.lowpassResonance))&&this.setFilterAtTime("lowpass",e,i.lowpassFreq,i.lowpassResonance),(n(i.highpassFreq)||n(i.highpassResonance))&&this.setFilterAtTime("highpass",e,i.highpassFreq,i.highpassResonance)}silenceAtTime(e){this.synthPatch.silenceAtTime(e)}cancel(){this.synthPatch.mute(),[this.tremoloDepth&&this.tremoloDepth.gain,this.tremoloOsc&&this.tremoloOsc.frequency,this.lowpassNode&&this.lowpassNode.frequency,this.lowpassNode&&this.lowpassNode.Q,this.highpassNode&&this.highpassNode.frequency,this.highpassNode&&this.highpassNode.Q,this.panNode&&this.panNode.pan,this.volumeNode.gain].forEach(e=>e&&e.cancelScheduledValues(0))}destroy(){this.cancel(),this.synthPatch.stop(),this.tremoloOsc&&this.tremoloOsc.stop(),[this.tremoloDepth,this.tremoloOsc,this.lowpassNode,this.highpassNode,this.panNode,this.volumeNode,this.masterVolNode].forEach(e=>e&&e.disconnect())}setPanAtTime(e,t){this.panNode&&this.panNode.pan.setTargetAtTime(t,e+this.audioContext.currentTime,o.rampTime)}setFilterAtTime(e,t,i,s){let a=this[e+"Node"],l=this.audioContext.currentTime+t;a&&(n(s)&&a.Q.setTargetAtTime(s,l,o.rampTime),n(i)&&a.frequency.setTargetAtTime(i,l,o.rampTime))}setVolumeAtTime(e,t){this.volumeNode&&this.volumeNode.gain.setTargetAtTime(t,e+this.audioContext.currentTime,o.rampTime)}setTremoloAtTime(e,t,i){let s=this.audioContext.currentTime+e;this.tremoloDepth&&n(t)&&this.tremoloDepth.gain.setTargetAtTime(t,s,o.rampTime),this.tremoloOsc&&n(i)&&this.tremoloOsc.frequency.setTargetAtTime(15*i,s,o.rampTime)}createNodesFromCapabilities(e){let t=this.audioContext;e.pan&&(this.panNode=new StereoPannerNode(t)),e.tremolo&&(this.tremoloOsc=new OscillatorNode(t,{type:"sine",frequency:3}),this.tremoloDepth=new GainNode(t),this.tremoloOsc.connect(this.tremoloDepth),this.tremoloDepth.connect(this.masterVolNode.gain),this.tremoloOsc.start()),e.filters&&(this.lowpassNode=new BiquadFilterNode(t,{type:"lowpass",frequency:2e4}),this.highpassNode=new BiquadFilterNode(t,{type:"highpass",frequency:0}))}connectCapabilityNodes(e,t){[this.panNode,this.lowpassNode,this.highpassNode,e].reduce((e,t)=>t?(t.connect(e),t):e,t)}static noteStringToC0Distance(e){let t=e.match(/^([a-g][#b]?)([0-8])$/i),i=t?t[1]:"a",n=i[0].toLowerCase(),s=i[1];return(({c:0,d:2,e:4,f:5,g:7,a:9,b:11})[n]||0)+("#"===s?1:"b"===s?-1:0)+12*(t?parseInt(t[2],10):4)}static musicalNoteToFrequency(e){return 16.3516*Math.pow(2,Math.min("string"==typeof e?this.noteStringToC0Distance(e):e,107)/12)}}return o.rampTime=e.stopRampTime/4,o}),i(t,"Extensions/Sonification/SonificationSpeaker.js",[t["Core/Utilities.js"]],function(e){let{pick:t}=e;return class{constructor(e){this.options=e,this.masterVolume=1,this.synthesis=window.speechSynthesis,void 0!==speechSynthesis.onvoiceschanged&&(speechSynthesis.onvoiceschanged=this.setVoice.bind(this)),this.setVoice(),this.scheduled=[]}say(e,i){if(this.synthesis){this.synthesis.cancel();let n=new SpeechSynthesisUtterance(e);this.voice&&(n.voice=this.voice),n.rate=i&&i.rate||this.options.rate||1,n.pitch=i&&i.pitch||this.options.pitch||1,n.volume=t(i&&i.volume,this.options.volume,1)*this.masterVolume,this.synthesis.speak(n)}}sayAtTime(e,t,i){this.scheduled.push(setTimeout(this.say.bind(this,t,i),e))}cancel(){this.scheduled.forEach(clearTimeout),this.scheduled=[],this.synthesis.cancel()}destroy(){this.cancel()}setMasterVolume(e){this.masterVolume=e}setVoice(){if(this.synthesis){let e;let t=this.options.name,i=this.options.language||"en-US",n=this.synthesis.getVoices(),s=n.length;for(let o=0;o<s;++o){if(t&&n[o].name===t){this.voice=n[o];return}if(!e&&n[o].lang===i&&(e=n[o],!t))break}this.voice=e}}}}),i(t,"Extensions/Sonification/TimelineChannel.js",[],function(){return class{constructor(e,t,i=!1,n,s){this.type=e,this.engine=t,this.showPlayMarker=i,this.muted=s,this.events=n||[]}addEvent(e){let t=this.events[this.events.length-1];if(t&&e.time<t.time){let t=this.events.length;for(;t--&&this.events[t].time>e.time;);this.events.splice(t+1,0,e)}else this.events.push(e);return e}mute(){this.muted=!0}unmute(){this.muted=!1}cancel(){this.engine.cancel()}destroy(){this.engine.destroy()}}}),i(t,"Extensions/Sonification/MIDI.js",[t["Extensions/Sonification/SonificationInstrument.js"],t["Core/Utilities.js"]],function(e,t){let{pick:i}=t,n=e=>Math.round(12*Math.log(e)/Math.LN2-48.37632),s=(e,t)=>t>>>8*e&255,o=e=>[77,84,104,100,0,0,0,6,0,e>1?1:0,s(1,e),s(0,e),1,244],a=[0,255,81,3,7,161,32],l=e=>{let t=127&e,i=[];for(;e>>=7;)t<<=8,t|=127&e|128;for(;;)if(i.push(255&t),128&t)t>>=8;else break;return i},r=t=>{let s,o;let a=[],l=e=>{let t=a.length;for(;t--&&a[t].timeMS>e.timeMS;);a.splice(t+1,0,e)};return t.forEach(t=>{let a=t.instrumentEventOptions||{},r=t.time,h=o=i(a.noteDuration,o),c=h&&t.time+h,u=[{valMap:e=>64+63*e&127,data:{10:a.pan,92:a.tremoloDepth,93:a.tremoloSpeed}},{valMap:e=>127*e/2e4&127,data:{74:a.lowpassFreq,75:a.highpassFreq}},{valMap:e=>63*Math.min(18,Math.max(-18,e))/18+63&127,data:{71:a.lowpassResonance,76:a.highpassResonance}}],m=s=void 0===a.volume?i(s,127):127*a.volume&127,p=a.frequency,d=a.note||0,f=12+(p?n(p):"string"==typeof d?e.noteStringToC0Distance(d):d)&127;u.forEach(e=>Object.keys(e.data).forEach(t=>{let i=e.data[t];void 0!==i&&l({timeMS:r,type:"CTRL_CHG",data:[176,parseInt(t,10),e.valMap(i)]})})),c&&(l({timeMS:r,type:"NON",data:[144,f,m]}),l({timeMS:c,type:"NOF",data:[128,f,m]}))}),a},h=(e,t)=>{let i=[];if(t&&i.push(0,192,127&t),e){let t=[];for(let i=0;i<e.length;++i){let n=e.charCodeAt(i);n<128&&t.push(n)}return i.concat([0,255,3],l(t.length),t)}return i},c=(e,t,i,n)=>{let o=0,c=h(i,n),u=r(e).reduce((e,t)=>{let i=l(t.timeMS-o);return o=t.timeMS,e.concat(i,t.data)},[]),m=[0,255,47,0],p=(t?a.length:0)+c.length+u.length+m.length;return[77,84,114,107,s(3,p),s(2,p),s(1,p),s(0,p)].concat(t?a:[],c,u,m)};return function(e){let t=e.filter(e=>!!e.events.length),i=t.length,n=i>1;return new Uint8Array(o(n?i+1:i).concat(n?c([],!0):[],t.reduce((e,t)=>{let i=t.engine;return e.concat(c(t.events,!n,i.midiTrackName,i.midiInstrument))},[])))}}),i(t,"Extensions/DownloadURL.js",[t["Core/Globals.js"]],function(e){let{isSafari:t,win:i,win:{document:n}}=e,s=i.URL||i.webkitURL||i;function o(e){let t=e.replace(/filename=.*;/,"").match(/data:([^;]*)(;base64)?,([0-9A-Za-z+/]+)/);if(t&&t.length>3&&i.atob&&i.ArrayBuffer&&i.Uint8Array&&i.Blob&&s.createObjectURL){let e=i.atob(t[3]),n=new i.ArrayBuffer(e.length),o=new i.Uint8Array(n);for(let t=0;t<o.length;++t)o[t]=e.charCodeAt(t);return s.createObjectURL(new i.Blob([o],{type:t[1]}))}}return{dataURLtoBlob:o,downloadURL:function(e,s){let a=i.navigator,l=n.createElement("a");if("string"!=typeof e&&!(e instanceof String)&&a.msSaveOrOpenBlob){a.msSaveOrOpenBlob(e,s);return}if(e=""+e,a.userAgent.length>1e3)throw Error("Input too long");let r=/Edge\/\d+/.test(a.userAgent);if((t&&"string"==typeof e&&0===e.indexOf("data:application/pdf")||r||e.length>2e6)&&!(e=o(e)||""))throw Error("Failed to convert to blob");if(void 0!==l.download)l.href=e,l.download=s,n.body.appendChild(l),l.click(),n.body.removeChild(l);else try{if(!i.open(e,"chart"))throw Error("Failed to open window")}catch{i.location.href=e}}}}),i(t,"Extensions/Sonification/SonificationTimeline.js",[t["Extensions/Sonification/TimelineChannel.js"],t["Extensions/Sonification/MIDI.js"],t["Extensions/DownloadURL.js"],t["Core/Utilities.js"]],function(e,t,i,n){let{downloadURL:s}=i,{defined:o,find:a,merge:l}=n;return class{constructor(e,t){this.chart=t,this.isPaused=!1,this.isPlaying=!1,this.channels=[],this.scheduledCallbacks=[],this.playTimestamp=0,this.resumeFromTime=0,this.options=e||{}}addChannel(t,i,n=!1,s){if("instrument"===t&&!i.scheduleEventAtTime||"speech"===t&&!i.sayAtTime)throw Error("Highcharts Sonification: Invalid channel engine.");let o=new e(t,i,n,s);return this.channels.push(o),o}play(t,i=!0,n=!0,s){this.isPlaying?this.cancel():this.clearScheduledCallbacks(),this.onEndArgument=s,this.playTimestamp=Date.now(),this.resumeFromTime=0,this.isPaused=!1,this.isPlaying=!0;let o=this.options.skipThreshold||2,r=this.options.onPlay,h=this.options.showTooltip,c=this.options.showCrosshair,u=t?function(t,i){let n=i.map(e=>(e.cancel(),{channel:e,filteredEvents:e.muted?[]:e.events.filter(t)})),s=n.reduce((e,t)=>Math.min(e,t.filteredEvents.length?t.filteredEvents[0].time:1/0),1/0);return n.map(t=>new e(t.channel.type,t.channel.engine,t.channel.showPlayMarker,t.filteredEvents.map(e=>l(e,{time:e.time-s})),t.channel.muted))}(t,this.playingChannels||this.channels):this.channels,m=e=>Object.keys(e.speechOptions||{}).concat(Object.keys(e.instrumentEventOptions||{})).join(),p=[];i&&(this.playingChannels=u),r&&r({chart:this.chart,timeline:this});let d=0;u.forEach(e=>{if(e.muted)return;let t=e.events.length,i=-1/0,n=-1/0,s="";d=Math.max(e.events[t-1]&&e.events[t-1].time||0,d);for(let l=0;l<t;++l){let r=e.events[l],u=m(r);if(u===s&&r.time-n<o)continue;s=u,n=r.time,"instrument"===e.type?e.engine.scheduleEventAtTime(r.time/1e3,r.instrumentEventOptions||{}):e.engine.sayAtTime(r.time,r.message||"",r.speechOptions||{});let d=r.relatedPoint,f=d&&d.series&&d.series.chart,y=r.callback||d&&(h||c)&&!1!==e.showPlayMarker&&(r.time-i>50||l===t-1);d&&p.push(d),y&&(this.scheduledCallbacks.push(setTimeout(()=>{if(r.callback&&r.callback(),d){if(c){let e=d.series;e&&e.xAxis&&e.xAxis.crosshair&&e.xAxis.drawCrosshair(void 0,d),e&&e.yAxis&&e.yAxis.crosshair&&e.yAxis.drawCrosshair(void 0,d)}h&&!(f&&f.hoverPoints&&f.hoverPoints.length>1&&a(f.hoverPoints,e=>e===d)&&d.onMouseOver)&&d.onMouseOver()}},r.time)),i=r.time)}});let f=this.options.onEnd,y=this.options.onStop;this.scheduledCallbacks.push(setTimeout(()=>{let e=this.chart,t={chart:e,timeline:this,pointsPlayed:p};this.isPlaying=!1,n&&this.resetPlayState(),y&&y(t),f&&f(t),s&&s(t),e&&(e.tooltip&&e.tooltip.hide(0),e.hoverSeries&&e.hoverSeries.onMouseOut(),e.axes.forEach(e=>e.hideCrosshair()))},d+250)),this.resumeFromTime=i?d:this.getLength()}pause(){return this.isPaused=!0,this.cancel(),this.resumeFromTime=Date.now()-this.playTimestamp-10,this.resumeFromTime}getCurrentTime(){return this.isPlaying?Date.now()-this.playTimestamp:this.resumeFromTime}getLength(){return this.channels.reduce((e,t)=>{let i=t.events[t.events.length-1];return i?Math.max(i.time,e):e},0)}resume(){if(this.playingChannels){let e=this.resumeFromTime-50;this.play(t=>t.time>e,!1,!1,this.onEndArgument),this.playTimestamp-=e}else this.play(void 0,!1,!1,this.onEndArgument)}anchorPlayMoment(e,t){this.isPlaying&&this.pause();let i=0;this.play((t,n,s)=>{let o=e(t,n,s);return o&&t.time>i&&(i=t.time),o},!1,!1,t),this.playingChannels=this.playingChannels||this.channels,this.isPaused=!0,this.isPlaying=!1,this.resumeFromTime=i}playAdjacent(e,t,i,n){this.isPlaying&&this.pause();let s=this.resumeFromTime,o=this.channels.reduce((t,i)=>{let o=n?i.events.filter(n):i.events,a=0,l=o.length,r=t;for(;a<l;){let t=a+l>>1,i=o[t].time,n=i-s;n>0?(e&&i<r&&(r=i),l=t):n<0?(!e&&i>r&&(r=i),a=t+1):e?a=t+1:l=t}return r},e?1/0:-1/0);if(o===1/0||o===-1/0){i&&i({chart:this.chart,timeline:this,attemptedNext:e});return}this.anchorPlayMoment((t,i,a)=>{let l=e?t.time>s&&t.time<=o+.02:t.time<s&&t.time>=o-.02;return n?l&&n(t,i,a):l},t)}playClosestToPropValue(e,t,i,n,s){let a=(e,t,i)=>!!(s?s(e,t,i)&&e.relatedPoint:e.relatedPoint),l=1/0,r=null;(this.playingChannels||this.channels).forEach(i=>{let n=i.events,s=n.length;for(;s--;){if(!a(n[s],s,n))continue;let i=n[s].relatedPoint[e],h=o(i)&&Math.abs(t-i);!1!==h&&h<l&&(l=h,r=n[s])}}),r?(this.play(e=>!!(r&&e.time<r.time+1&&e.time>r.time-1&&e.relatedPoint===r.relatedPoint),!1,!1,i),this.playingChannels=this.playingChannels||this.channels,this.isPaused=!0,this.isPlaying=!1,this.resumeFromTime=r.time):n&&n({chart:this.chart,timeline:this})}getEventsForPoint(e){return this.channels.reduce((t,i)=>{let n=i.events.filter(t=>t.relatedPoint===e);return t.concat(n)},[])}playSegment(e,t){let i={first:1/0,last:-1/0};if(this.channels.forEach(e=>{e.events.length&&(i.first=Math.min(e.events[0].time,i.first),i.last=Math.max(e.events[e.events.length-1].time,i.last))}),i.first<1/0){let n=(i.last-i.first)/100,s=i.first+e*n,o=s+n;if(!this.channels.some(e=>{let t=e.events,i=0,n=t.length;for(;i<n;){let e=i+n>>1,a=t[e].time;if(a<s)i=e+1;else{if(!(a>o))return!0;n=e}}return!1}))return;this.play(e=>e.time>=s&&e.time<=o,!1,!1,t),this.playingChannels=this.playingChannels||this.channels,this.isPaused=!0,this.isPlaying=!1,this.resumeFromTime=o}}getLastPlayedPoint(e){let t=this.getCurrentTime(),i=this.playingChannels||this.channels,n=1/0,s=null;return i.forEach(i=>{let o=i.events.filter((i,n,s)=>!!(i.relatedPoint&&i.time<=t&&(!e||e(i,n,s)))),a=o[o.length-1];if(a){let e=Math.abs(a.time-t);e<n&&(n=e,s=a.relatedPoint)}}),s}reset(){this.isPlaying&&this.cancel(),this.resetPlayState()}cancel(){let e=this.options.onStop;e&&e({chart:this.chart,timeline:this}),this.isPlaying=!1,this.channels.forEach(e=>e.cancel()),this.playingChannels&&this.playingChannels!==this.channels&&this.playingChannels.forEach(e=>e.cancel()),this.clearScheduledCallbacks(),this.resumeFromTime=0}destroy(){this.cancel(),this.playingChannels&&this.playingChannels!==this.channels&&this.playingChannels.forEach(e=>e.destroy()),this.channels.forEach(e=>e.destroy())}setMasterVolume(e){this.channels.forEach(t=>t.engine.setMasterVolume(e))}getMIDIData(){return t(this.channels.filter(e=>"instrument"===e.type))}downloadMIDI(e){let t=this.getMIDIData(),i=(e||this.chart&&this.chart.options.title&&this.chart.options.title.text||"chart")+".mid",n=new Blob([t],{type:"application/octet-stream"}),o=window.URL.createObjectURL(n);s(o,i),window.URL.revokeObjectURL(o)}resetPlayState(){delete this.playingChannels,delete this.onEndArgument,this.playTimestamp=this.resumeFromTime=0,this.isPaused=!1}clearScheduledCallbacks(){this.scheduledCallbacks.forEach(clearTimeout),this.scheduledCallbacks=[]}}}),i(t,"Extensions/Sonification/TimelineFromChart.js",[t["Extensions/Sonification/SonificationTimeline.js"],t["Extensions/Sonification/SonificationInstrument.js"],t["Extensions/Sonification/SonificationSpeaker.js"],t["Core/Utilities.js"],t["Core/Templating.js"]],function(e,t,i,n,s){let{clamp:o,defined:a,extend:l,getNestedProperty:r,merge:h,pick:c}=n,{format:u}=s,m=e=>/^([a-g][#b]?)[0-8]$/i.test(e);function p(e,t){let i;if(t){if("number"==typeof(i=e[t]))return i;i=r(t,e)}return"number"==typeof i?i:void 0}function d(e,t,i,n,s){let a=t.max-t.min;if(a<=0)return i.min;let l=i.max-i.min,r=l*(e-t.min)/a;if(s){let i=t.min>0?e=>Math.log(e)/Math.LOG10E:e=>{let t=Math.abs(e);t<10&&(t+=(10-t)/10);let i=Math.log(t)/Math.LN10;return e<0?-i:i},n=i(t.min);r=l*(i(e)-n)/(i(t.max)-n)}return o(n?i.max-r:i.min+r,i.min,i.max)}function f(e,t,i,n,s,o,h){return c(function(e,t,i,n,s,o){if("number"==typeof s)return s;if("function"==typeof s)return s(l({time:0},e));let h=s,u=n.mapFunction,m=n.min,p=n.max,f=n.within,y;if("object"==typeof s&&(h=s.mapTo,u=s.mapFunction||u,m=c(s.min,m),p=c(s.max,p),f=s.within||n.within,y=s.scale),!h)return null;let g="-"===h.charAt(0);g&&(h=h.slice(1));let v=e.value,q="value"===h&&void 0!==v&&o;if(!q){let t=s.value;if(void 0!==t)v=t;else{if(!e.point)return null;v=e.point[h]}void 0===v&&(v=r(h,e.point))}if("number"!=typeof v||null===v)return null;let T=null;if(e.point){if("xAxis"===f||"yAxis"===f){let t=e.point.series[f];t&&a(t.dataMin)&&a(t.dataMax)&&(T={min:t.dataMin,max:t.dataMax})}else("series"===f||i)&&e.point.series&&(T=t.seriesExtremes[e.point.series.index][q?o:h])}if(T||(T=t.globalExtremes[q?o:h]),y){let e=[],t=Math.floor(m/12),i=Math.ceil(p/12)+1,n=y.length;for(let s=t;s<i;++s)for(let t=0;t<n;++t){let i=12*s+y[t];i>=m&&i<=p&&e.push(i)}let s=d(v,T,{min:0,max:e.length-1},g,"logarithmic"===u);return e[Math.round(s)]}return d(v,T,{min:m,max:p},g,"logarithmic"===u)}(e,t,i,l({min:0,max:1,mapTo:"y",mapFunction:"linear",within:"chart"},o||{}),n,h),s)}function y(e,n,s,o){let a=o.mapping||{},l="speech"===o.type?new i({language:o.language,name:o.preferredVoice}):new t(n,s,{capabilities:{pan:!!a.pan,tremolo:!!a.tremolo,filters:!!(a.highpass||a.lowpass)},synthPatch:o.instrument,midiTrackName:o.midiName});return e.addChannel(o.type||"instrument",l,c(o.showPlayMarker,!0))}function g(e,i,n,s,o,a){let r=(t,i,o,l)=>f(e,s,!1,(l||n)[t],i,o,a),h=[],c={noteDuration:r("noteDuration",200,{min:40,max:1e3}),pan:r("pan",0,{min:-1,max:1}),volume:r("volume",1,{min:.1,max:1})};n.frequency&&(c.frequency=r("frequency",440,{min:50,max:6e3})),n.lowpass&&(c.lowpassFreq=r("frequency",2e4,{min:0,max:2e4},n.lowpass),c.lowpassResonance=r("resonance",0,{min:-6,max:12},n.lowpass)),n.highpass&&(c.highpassFreq=r("frequency",2e4,{min:0,max:2e4},n.highpass),c.highpassResonance=r("resonance",0,{min:-6,max:12},n.highpass)),n.tremolo&&(c.tremoloDepth=r("depth",0,{min:0,max:.8},n.tremolo),c.tremoloSpeed=r("speed",0,{min:0,max:.8},n.tremolo));let u=r("gapBetweenNotes",150,{min:50,max:1e3}),p=r("playDelay",0,{max:200}),d=(n,r=0)=>{let d=n;n.mapTo?("string"==typeof n.min&&(d.min=t.noteStringToC0Distance(n.min)),"string"==typeof n.max&&(d.max=t.noteStringToC0Distance(n.max))):"string"==typeof n&&m(n)&&(d=t.noteStringToC0Distance(n)),c.note=f(e,s,!1,d,-1,{min:0,max:107},a),c.note>-1&&(o&&(c.note=Math.round(c.note)),h.push(i.addEvent({time:e.time+p+u*r,relatedPoint:e.point,instrumentEventOptions:void 0!==r?l({},c):c})))};return n.pitch&&n.pitch.constructor===Array?n.pitch.forEach(d):n.pitch?d(n.pitch):n.frequency&&h.push(i.addEvent({time:e.time+p,relatedPoint:e.point,instrumentEventOptions:c})),h}function v(e,t,i,n,s){var o;let a=(t,o,a)=>f(e,n,!1,i[t],o,a,s),l=a("playDelay",0,{max:200}),r=a("pitch",1,{min:.3,max:2}),h=a("rate",1,{min:.4,max:4}),c=a("volume",1,{min:.1}),m=u("function"==typeof(o=i.text)?o(e):o,e,e.point&&e.point.series.chart);if(m)return t.addEvent({time:e.time+l,relatedPoint:e.point,speechOptions:{pitch:r,rate:h,volume:c},message:m})}function q(e,t,i){if("function"==typeof t)return t(e);if("object"==typeof t){let n=t.prop,s=c(e.value,e.point&&p(e.point,n));if("number"!=typeof s)return!1;let o=!0,a=t.crossingUp,l=t.crossingDown,r="number"==typeof i;o=a&&l?r&&(i<a&&s>=a||i>l&&s<=l):(void 0===a||r&&i<a&&s>=a)&&(void 0===l||r&&i>l&&s<=l);let h=c(t.max,1/0),u=c(t.min,-1/0);return s<=h&&s>=u&&o}return!0}return function(t,i,n){let s=n.options.sonification||{},o=s.defaultInstrumentOptions,a=s.defaultSpeechOptions,u=h({enabled:!0,groupTimespan:15,algorithm:"minmax",prop:"y"},s.pointGrouping),T=s.globalTracks||[],w=s.globalContextTracks||[],x="sequential"===s.order,E=Math.max(50,s.duration-300),N=s.afterSeriesWait,S=s.events||{},k=function(e){let t=e.options.sonification||{},i=(t.defaultInstrumentOptions||{}).mapping||{time:"x",pitch:"y"},n=t.defaultSpeechOptions&&t.defaultSpeechOptions.mapping||{},s=[],o={},a=(e,t)=>{null!==t?(s[t]=s[t]||{},s[t][e]=!0):o[e]=!0},l={},c={},u=(e,t,i)=>{let n=e=>"-"===e.charAt(0)?e.slice(1):e;if("string"==typeof t&&"text"!==e){if("pitch"===e&&m(t))return;"time"===e&&(c[t]=!0,a(t,i)),l[n(t)]=!0;return}if(t&&t.mapTo&&"string"==typeof t.mapTo){let s=n(t.mapTo);"time"===e&&a(s,i),("time"===e||"series"===t.within)&&(c[s]=!0),l[s]=!0;return}["tremolo","lowpass","highpass"].indexOf(e)>-1&&"object"==typeof t&&Object.keys(t).forEach(e=>u(e,t[e],i))},p=(e,t)=>{Object.keys(e).forEach(i=>u(i,e[i],t))},d=e=>e.forEach(e=>{l[e.valueProp||"x"]=c[e.valueProp||"x"]=!0});p(i,null),p(n,null),d(t.globalContextTracks||[]);let f=Object.keys(o).length;return e.series.forEach(e=>{let t=e.options.sonification;if(e.visible&&!(t&&!1===t.enabled)&&(f&&(s[e.index]=h(o)),t)){let i=(t.defaultInstrumentOptions||{}).mapping,n=(t.defaultSpeechOptions||{}).mapping;i&&p(i,e.index),n&&p(n,e.index),d(t.contextTracks||[]),(t.tracks||[]).concat(t.contextTracks||[]).forEach(t=>{t.mapping&&p(t.mapping,e.index)})}}),{seriesTimeProps:s,...function(e,t,i){let n=e.series,s=t.length,o=i.length,a=e=>e.reduce((e,t)=>(e[t]={min:1/0,max:-1/0},e),{}),l=(e,t,i)=>{let n=t[i];void 0===n&&(n=r(i,t)),"number"==typeof n&&(e[i].min=Math.min(e[i].min,n),e[i].max=Math.max(e[i].max,n))},h=a(t),c=n.length,u=Array(c);for(;c--;){let e=a(i),r=n[c].options;if(!n[c].visible||r&&r.sonification&&!1===r.sonification.enabled)continue;let m=n[c].points||[],p=m.length;for(;p--;){let n=s;for(;n--;)l(h,m[p],t[n]);for(n=o;n--;)l(e,m[p],i[n])}u[c]=e}return{globalExtremes:h,seriesExtremes:u}}(e,Object.keys(l),Object.keys(c))}}(n),P=new e({onPlay:S.onPlay,onEnd:S.onEnd,onStop:S.onStop,showCrosshair:s.showCrosshair,showTooltip:s.showTooltip},n);n.sonification&&(n.sonification.propMetrics=k);let M=0;return n.series.forEach((e,n)=>{let s=e.options.sonification||{};if(e.visible&&!1!==s.enabled){let r;let m=x?function(e,t,i,n){let s,o;let a=t-(e.chart.series.length-1)*n;if(i.seriesTimeProps.every(e=>{let t=Object.keys(e);return!(t.length>1)&&(s||(s=t[0]),s===t[0])})){let t=i.seriesExtremes[e.index][s];o=Math.round((t.max-t.min)/i.seriesExtremes.reduce((e,t)=>t[s]?e+t[s].max-t[s].min:e,0)*a)}else{let t=e.chart.series.reduce((e,t)=>e+t.points.length,0);o=Math.round((e.points||[]).length/t*a)}return Math.max(50,o)}(e,E,k,N):E,C=h(o,s.defaultInstrumentOptions),b=h(a,s.defaultSpeechOptions),A=h(u,s.pointGrouping),O=(s.tracks||[C]).concat(T),I=P.channels.length&&!x?s.contextTracks||[]:(s.contextTracks||[]).concat(w),V=[];O.forEach(n=>{let s=h({pointGrouping:A,midiName:n.midiName||e.name},"speech"===n.type?b:C,n),o=s.pointGrouping,a=s.activeWhen,l=e=>{"object"==typeof a&&a.prop&&(r=p(e,a.prop))},u=y(P,t,i,s),d=e=>V.push(...function(e,t,i,n){let s=[];if("speech"===i.type&&i.mapping){let o=v(e,t,i.mapping,n);o&&(s=[o])}else i.mapping&&(s=g(e,t,i.mapping,n,c(i.roundToMusicalNotes,!0)));return s}(e,u,s,k)),T=[],w=0,E=e=>{if(1===T.length)d({point:T[0].point,time:w+e/2});else{let t=function(e,t){let i=e.algorithm||"minmax",n=e=>t[e]?[t[e].point]:[];if("first"===i)return n(0);if("last"===i)return n(t.length-1);if("middle"===i)return n(t.length>>1);if("firstlast"===i)return n(0).concat(n(t.length-1));if("minmax"===i){let i,n,s,o;let a=e.prop||"y";if(t.forEach(e=>{let t=p(e.point,a);void 0!==t&&((!i||t<s)&&(i=e,s=t),(!n||t>o)&&(n=e,o=t))}),i&&n)return i.point===n.point?[i.point]:i.time>n.time?[n.point,i.point]:[i.point,n.point]}return[]}(o,T),i=e/t.length;t.forEach((e,t)=>d({point:e,time:w+i/2+i*t}))}T=[]};(e.points||[]).forEach((t,i)=>{var n;let h=i===e.points.length-1,c=(n=M,f({point:t,time:0},k,x,s.mapping&&s.mapping.time||0,0,{min:0,max:m,mapTo:"x"})+n),u={point:t,time:c};if(!s.mapping||!q(u,a,r)){l(t),h&&T.length&&E(T[T.length-1].time-T[0].time);return}if(l(t),o.enabled){let e=c-w,t=o.groupTimespan,i=h&&e<=t?e:t;h||e>t?(e<=t&&T.push(u),E(i),w=Math.floor(c/t)*t,h&&e>t?d({point:u.point,time:w+i/2}):T=[u]):T.push(u)}else d(u)})});let j=V.reduce((e,t)=>t.time<e.time?t:e,{time:1/0}),F=V.reduce((e,t)=>t.time>e.time?t:e,{time:-1/0});j.callback=S.onSeriesStart?S.onSeriesStart.bind(null,{series:e,timeline:P}):void 0,F.callback=S.onSeriesEnd?S.onSeriesEnd.bind(null,{series:e,timeline:P}):void 0,I.forEach(e=>{let s="speech"===e.type?h(a,e):h(o,{mapping:{pitch:{mapTo:"value"}}},e),u=y(P,t,i,s);r=void 0;let{timeInterval:p,valueInterval:f}=s,T=s.valueProp||"x",w=s.activeWhen,x=k.seriesExtremes[n][T],E=(e,t)=>{if(!s.mapping||!q({time:e,value:t},"object"==typeof w?l({prop:T},w):w,r)){r=t;return}r=t,"speech"===s.type?v({time:e,value:t},u,s.mapping,k,T):g({time:e,value:t},u,s.mapping,k,c(s.roundToMusicalNotes,!0),T)};if(p){let e=0;for(;e<=m;){let t=d(e,{min:0,max:m},x);E(e+M,t),e+=p}}if(f){let e=x.min;for(;e<=x.max;)E(d(e,x,{min:0,max:m},!1,"logarithmic"===s.valueMapFunction)+M,e),e+=f}}),x&&(M+=m+N)}}),P}}),i(t,"Extensions/Sonification/Sonification.js",[t["Core/Defaults.js"],t["Core/Utilities.js"],t["Core/Globals.js"],t["Extensions/Sonification/Options.js"],t["Extensions/Sonification/SonificationInstrument.js"],t["Extensions/Sonification/SonificationSpeaker.js"],t["Extensions/Sonification/SynthPatch.js"],t["Extensions/Sonification/InstrumentPresets.js"],t["Extensions/Sonification/TimelineFromChart.js"]],function(e,t,i,n,s,o,a,l,r){let{defaultOptions:h,getOptions:c}=e,{addEvent:u,extend:m,fireEvent:p,merge:d,pick:f}=t,{doc:y,win:g}=i;class v{constructor(e){this.chart=e,this.retryContextCounter=0,this.lastUpdate=0,this.unbindKeydown=u(y,"keydown",function(t){e&&e.sonification&&("Esc"===t.key||"Escape"===t.key)&&e.sonification.cancel()});try{this.audioContext=new g.AudioContext,this.audioContext.suspend(),this.audioDestination=this.audioContext.destination}catch(e){}}setAudioDestination(e){this.audioDestination=e,this.update()}isPlaying(){return!!this.timeline&&this.timeline.isPlaying}playSegment(e,t){this.ready(this.playSegment.bind(this,e,t))&&this.timeline&&this.timeline.playSegment(e,t)}playAdjacent(e,t,i){if(this.ready(this.playAdjacent.bind(this,e,t,i))&&this.timeline){let n=this.chart.options.sonification,s=n&&n.events&&n.events.onBoundaryHit;s||this.initBoundaryInstrument(),this.timeline.playAdjacent(e,t,s||(()=>{this.defaultBoundaryHit()}),i)}}playAdjacentSeries(e,t="x",i){let n=this.getLastPlayedPoint();if(n){let s=n.series.index+(e?1:-1);return this.playClosestToProp(t,n[t],e=>!!e.relatedPoint&&e.relatedPoint.series.index===s,i),this.chart.series[s]||null}return null}playClosestToProp(e,t,i,n){if(this.ready(this.playClosestToProp.bind(this,e,t,i,n))&&this.timeline){let s=this.chart.options.sonification,o=s&&s.events&&s.events.onBoundaryHit;o||this.initBoundaryInstrument(),this.timeline.playClosestToPropValue(e,t,n,o||(()=>this.defaultBoundaryHit()),i)}}getLastPlayedPoint(){return this.timeline?this.timeline.getLastPlayedPoint():null}playNote(e,t,i=0){if(!this.ready(this.playNote.bind(this,e,t)))return;let n=t.noteDuration=t.noteDuration||500,o=new s(this.audioContext,this.audioDestination,{synthPatch:e,capabilities:{filters:!0,tremolo:!0,pan:!0}});o.scheduleEventAtTime(i/1e3,t),setTimeout(()=>o&&o.destroy(),i+n+500)}speak(e,t,i=0){new o(d({language:"en-US",rate:1.5,volume:.4},t||{})).sayAtTime(i,e)}cancel(){this.timeline&&this.timeline.cancel(),p(this,"cancel")}downloadMIDI(){this.ready(this.downloadMIDI.bind(this))&&this.timeline&&(this.timeline.reset(),this.timeline.downloadMIDI())}sonifyChart(e,t){this.ready(this.sonifyChart.bind(this,e,t))&&this.timeline&&(this.timeline.reset(),this.beforePlay(),this.timeline.play(void 0,void 0,e,t))}sonifySeries(e,t,i){this.ready(this.sonifySeries.bind(this,e,t,i))&&this.timeline&&(this.timeline.reset(),this.beforePlay(),this.timeline.play(t=>!!t.relatedPoint&&t.relatedPoint.series===e,void 0,t,i))}sonifyPoint(e,t){this.ready(this.sonifyPoint.bind(this,e,t))&&this.timeline&&(this.timeline.reset(),this.beforePlay(),this.timeline.anchorPlayMoment(t=>t.relatedPoint===e,t))}setMasterVolume(e){this.timeline&&this.timeline.setMasterVolume(e)}destroy(){this.unbindKeydown(),this.timeline&&(this.timeline.destroy(),delete this.timeline),this.boundaryInstrument&&this.boundaryInstrument.stop(),this.audioContext&&(this.audioContext.close(),delete this.audioContext)}update(){let e=this.chart.options&&this.chart.options.sonification;if(!this.ready(this.update.bind(this))||!e)return;let t=Date.now(),i=e.updateInterval;if(t-this.lastUpdate<i&&!this.forceReady){clearTimeout(this.scheduledUpdate),this.scheduledUpdate=setTimeout(this.update.bind(this),i/2);return}let n=e.events||{};if(n.beforeUpdate&&n.beforeUpdate({chart:this.chart,timeline:this.timeline}),this.lastUpdate=t,this.timeline&&this.timeline.destroy(),this.audioContext&&this.audioDestination){this.timeline=r(this.audioContext,this.audioDestination,this.chart);let e=this.chart.options.sonification;this.timeline.setMasterVolume(f(e&&e.masterVolume,1))}n.afterUpdate&&n.afterUpdate({chart:this.chart,timeline:this.timeline})}ready(e){return!!this.audioContext&&!!this.audioDestination&&!!this.chart.options&&(!this.chart.options.sonification||!1!==this.chart.options.sonification.enabled)&&("suspended"!==this.audioContext.state||this.forceReady?(this.retryContextCounter=0,!0):(this.retryContextCounter++<20&&setTimeout(()=>{this.audioContext&&"suspended"===this.audioContext.state?this.audioContext.resume().then(e):e()},5),!1))}beforePlay(){let e=this.chart.options.sonification,t=e&&e.events&&e.events.beforePlay;t&&t({chart:this.chart,timeline:this.timeline})}initBoundaryInstrument(){this.boundaryInstrument||(this.boundaryInstrument=new a(this.audioContext,d(l.chop,{masterVolume:.3})),this.boundaryInstrument.startSilently(),this.boundaryInstrument.connect(this.audioDestination))}defaultBoundaryHit(){this.boundaryInstrument&&(this.boundaryInstrument.playFreqAtTime(.1,1,200),this.boundaryInstrument.playFreqAtTime(.2,1,200))}}return function(e){let t=[];function i(){let t=this.sonification,i=this.options&&this.options.sonification;i&&i.enabled?t?t.update():(this.sonification=new e(this),this.sonification.update()):t&&(t.destroy(),delete this.sonification)}function n(){this&&this.sonification&&this.sonification.destroy()}function s(){this.updateSonificationEnabled&&this.updateSonificationEnabled()}function o(e){let t=e.options.sonification;t&&(d(!0,this.options.sonification,t),s.call(this))}e.compose=function(e,a,l){-1===t.indexOf(e)&&(t.push(e),m(e.prototype,{updateSonificationEnabled:i,sonify:function(e){this.sonification&&this.sonification.sonifyChart(!1,e)},toggleSonify:function(e=!0,t){if(!this.sonification)return;let i=this.sonification.timeline;g.speechSynthesis&&g.speechSynthesis.cancel(),i&&this.sonification.isPlaying()?e?this.sonification.cancel():i.pause():i&&i.isPaused?i.resume():this.sonification.sonifyChart(e,t)}}),u(e,"destroy",n),u(e,"render",s),u(e,"update",o)),-1===t.indexOf(a)&&(t.push(a),a.prototype.sonify=function(e){this.chart.sonification&&this.chart.sonification.sonifySeries(this,!1,e)}),-1===t.indexOf(l)&&(t.push(l),l.prototype.sonify=function(e){this.series.chart.sonification&&this.series.chart.sonification.sonifyPoint(this,e)});let r=c().exporting;r&&r.buttons&&r.buttons.contextButton.menuItems&&r.buttons.contextButton.menuItems.push("separator","downloadMIDI","playAsSound")}}(v||(v={})),d(!0,h,n),v}),i(t,"Extensions/Sonification/Scales.js",[],function(){return{minor:[0,2,3,5,7,8,10],dorian:[0,2,3,5,7,9,10],harmonicMinor:[0,2,3,5,7,8,11],phrygian:[0,1,3,5,7,8,11],major:[0,2,4,5,7,9,11],lydian:[0,2,4,6,7,9,11],mixolydian:[0,2,4,5,7,9,10],majorPentatonic:[0,2,4,7,9],minorPentatonic:[0,3,5,7,10]}}),i(t,"masters/modules/sonification.src.js",[t["Core/Globals.js"],t["Extensions/Sonification/Sonification.js"],t["Extensions/Sonification/SynthPatch.js"],t["Extensions/Sonification/InstrumentPresets.js"],t["Extensions/Sonification/Scales.js"],t["Extensions/Sonification/SonificationInstrument.js"],t["Extensions/Sonification/SonificationSpeaker.js"],t["Extensions/Sonification/SonificationTimeline.js"]],function(e,t,i,n,s,o,a,l){return e.sonification={InstrumentPresets:n,Scales:s,SynthPatch:i,SonificationInstrument:o,SonificationSpeaker:a,SonificationTimeline:l,Sonification:t},t.compose(e.Chart,e.Series,e.Point),e})});
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v11.4.1 (2024-04-04)
2
+ * @license Highcharts JS v11.4.3 (2024-05-22)
3
3
  *
4
4
  * Sonification module
5
5
  *
@@ -3509,6 +3509,9 @@
3509
3509
  return;
3510
3510
  }
3511
3511
  dataURL = '' + dataURL;
3512
+ if (nav.userAgent.length > 1000 /* RegexLimits.shortLimit */) {
3513
+ throw new Error('Input too long');
3514
+ }
3512
3515
  const // Some browsers have limitations for data URL lengths. Try to convert
3513
3516
  // to Blob or fall back. Edge always needs that blob.
3514
3517
  isOldEdgeBrowser = /Edge\/\d+/.test(nav.userAgent),
@@ -1,5 +1,5 @@
1
1
  !/**
2
- * Highcharts Gantt JS v11.4.1 (2024-04-04)
2
+ * Highcharts Gantt JS v11.4.3 (2024-05-22)
3
3
  *
4
4
  * StaticScale
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts Gantt JS v11.4.1 (2024-04-04)
2
+ * @license Highcharts Gantt JS v11.4.3 (2024-05-22)
3
3
  *
4
4
  * StaticScale
5
5
  *