Search
We found 1 example(s) We found example(s) We couldn't find
Tag results Tag results for tag:
[{"id":"lcjs-example-0000-lineSeries","title":"JavaScript Line Chart","tags":["xy","line","legendbox"],"description":"Example showcasing the use of Line Series. Also known as Line Graph and Line Chart.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example that showcases a simple XY line series.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, Themes } = lcjs\n\n// Decide on an origin for DateTime axis.\nconst dateOrigin = new Date(2018, 8, 1)\n\n// Create a XY Chart.\nconst chart = lightningChart().ChartXY({\n // theme: Themes.darkGold\n})\n// Modify the default X Axis to use DateTime TickStrategy, and set the origin for the DateTime Axis.\nchart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\n\nchart\n .setPadding({\n right: 50,\n })\n .setTitle('Diesel and Gasoline Price Comparison')\n\nconst diesel = [\n { x: 0, y: 1.52 },\n { x: 1, y: 1.52 },\n { x: 2, y: 1.52 },\n { x: 3, y: 1.58 },\n { x: 4, y: 2.0 },\n { x: 5, y: 2.0 },\n { x: 6, y: 2.0 },\n { x: 7, y: 2.0 },\n { x: 8, y: 2.26 },\n { x: 9, y: 1.9 },\n { x: 10, y: 1.9 },\n { x: 11, y: 1.9 },\n { x: 12, y: 1.9 },\n { x: 13, y: 1.6 },\n { x: 14, y: 1.6 },\n { x: 15, y: 1.6 },\n { x: 16, y: 1.0 },\n { x: 17, y: 1.0 },\n { x: 18, y: 1.0 },\n { x: 19, y: 1.74 },\n { x: 20, y: 1.47 },\n { x: 21, y: 1.47 },\n { x: 22, y: 1.47 },\n { x: 23, y: 1.74 },\n { x: 24, y: 1.74 },\n { x: 25, y: 1.74 },\n { x: 27, y: 1.5 },\n { x: 28, y: 1.5 },\n { x: 29, y: 1.5 },\n]\n\nconst gasoline = [\n { x: 0, y: 1.35 },\n { x: 1, y: 1.35 },\n { x: 2, y: 1.35 },\n { x: 3, y: 1.35 },\n { x: 4, y: 1.9 },\n { x: 5, y: 1.9 },\n { x: 6, y: 1.9 },\n { x: 7, y: 1.92 },\n { x: 8, y: 1.5 },\n { x: 9, y: 1.5 },\n { x: 10, y: 1.3 },\n { x: 11, y: 1.3 },\n { x: 12, y: 1.3 },\n { x: 13, y: 1.3 },\n { x: 14, y: 1.3 },\n { x: 15, y: 1.32 },\n { x: 16, y: 1.4 },\n { x: 17, y: 1.44 },\n { x: 18, y: 1.02 },\n { x: 19, y: 1.02 },\n { x: 20, y: 1.02 },\n { x: 21, y: 1.02 },\n { x: 22, y: 1.02 },\n { x: 23, y: 1.02 },\n { x: 24, y: 1.02 },\n { x: 25, y: 1.02 },\n { x: 27, y: 1.3 },\n { x: 28, y: 1.3 },\n { x: 29, y: 1.3 },\n]\n\n// Add two line series.\nconst lineSeries = chart.addLineSeries().setName('Diesel')\n\nconst lineSeries2 = chart.addLineSeries().setName('Gasoline')\n\n// Set the correct value to use for the data frequency.\n// 1000ms * 60s * 60min * 24h\nconst dataFrequency = 1000 * 60 * 60 * 24\n\n// Add the points to each Series - the X values are multiplied by dataFrequency to set the values properly on the X Axis.\nlineSeries2.add(diesel.map((point) => ({ x: point.x * dataFrequency, y: point.y })))\nlineSeries.add(gasoline.map((point) => ({ x: point.x * dataFrequency, y: point.y })))\n\n// Setup view nicely.\nchart.getDefaultAxisY().setTitle('$/litre').setInterval({ start: 0, end: 3, stopAxisAfter: true })\n\n// Enable AutoCursor auto-fill.\nchart.setAutoCursor((cursor) => cursor.setResultTableAutoTextStyle(true).setTickMarkerXVisible(false).setTickMarkerYAutoTextStyle(true))\nconst legend = chart\n .addLegendBox()\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.3,\n })\n\n// Add Chart to LegendBox.\nlegend.add(chart)\n","url":null,"readme":"_Also known as a Line Graph or Line Chart_\n\nThis example shows the basic usage of a line series. The line series is drawn on a Cartesian coordinate system and represents the relationship between two variables. Line series display information as a series of data points connected by straight line segments. They are most often used to visualize the changes in data or reveal trends in a dataset.\n\nThis type of series does not contain the visual representation of 'markers' for the data points but only continuously connected line between all of them. Additionally, it allows drawing lines in any direction.\n\nThe chart can be created with few simple lines of code:\n\n```javascript\n// Create a new ChartXY.\nconst chart = lightningChart().ChartXY()\n\n// Add a line series using default X and Y axes.\nconst series = chart.addLineSeries()\n```\n\nThe series accepts points in format `{ x: number, y: number }`. Any number of points can be added with a single call.\n\n```javascript\n// Single point.\nseries.add({ x: 50, y: 60 })\n\n// Multiple points at once.\nseries.add([\n { x: 55, y: 60 },\n { x: 60, y: 62 },\n { x: 65, y: 65 },\n])\n```\n","image":"lineSeries"},{"id":"lcjs-example-0001-simpleScatter","title":"JavaScript Scatter Chart","tags":["scatter","point","xy","legendbox"],"description":"Using a point series to display a Point Graph. Also known as a Scatter Graph, Scatter Series, Point Graph, Scatter diagram or Scattergram.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Multiple chart examples, dynamic point coloring, Scatter Charts, Point Cluster Charts, 3D charts for JS.","src":"/*\n * LightningChartJS example that showcases a simple scatter series.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst {\n lightningChart,\n AxisTickStrategies,\n emptyLine,\n PointShape,\n SolidFill,\n ColorRGBA,\n UIElementBuilders,\n UIButtonPictures,\n LegendBoxBuilders,\n Themes,\n} = lcjs\n\n// Decide on an origin for DateTime axis.\nconst dateOrigin = new Date(2018, 6, 1)\n// Create a XY Chart.\nconst chart = lightningChart().ChartXY({\n // theme: Themes.darkGold\n})\n\n// Modify the default X Axis to use DateTime TickStrategy, and set the origin for the DateTime Axis.\nchart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\n\nchart.setTitle('Product Sales').setAutoCursor((cursor) => {\n cursor.setTickMarkerYVisible(false)\n cursor.setGridStrokeYStyle(emptyLine)\n})\n\n// Create a LegendBox as part of the chart.\nconst legend = chart\n .addLegendBox(LegendBoxBuilders.HorizontalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.8,\n })\n\n// Create series.\nconst smartPhonesSeries = chart.addPointSeries({ pointShape: PointShape.Circle }).setName('Smart Phones').setPointSize(10)\n\nconst laptopsSeries = chart.addPointSeries({ pointShape: PointShape.Square }).setName('Laptops').setPointSize(10)\n\nconst smartTvSeries = chart.addPointSeries({ pointShape: PointShape.Triangle }).setName('Smart TV').setPointSize(10)\n\n// Generate some points using for each day of 3 months\nconst dataFrequency = 1000 * 60 * 60 * 24\n\n// Setup view nicely.\nchart.getDefaultAxisX().setInterval({ start: 0, end: 92 * dataFrequency, stopAxisAfter: false })\n\nchart.getDefaultAxisY().setScrollStrategy(undefined).setTitle('Units Sold').setInterval({ start: 0, end: 2000, stopAxisAfter: false })\n\n// Data for the plotting\nconst smartPhoneData = [\n { x: 0, y: 200 },\n { x: 1, y: 220 },\n { x: 2, y: 260 },\n { x: 3, y: 264 },\n { x: 4, y: 280 },\n { x: 5, y: 288 },\n { x: 6, y: 280 },\n { x: 7, y: 248 },\n { x: 8, y: 292 },\n { x: 9, y: 308 },\n { x: 10, y: 316 },\n { x: 11, y: 328 },\n { x: 12, y: 344 },\n { x: 13, y: 360 },\n { x: 14, y: 388 },\n { x: 15, y: 404 },\n { x: 16, y: 432 },\n { x: 17, y: 444 },\n { x: 18, y: 432 },\n { x: 19, y: 444 },\n { x: 20, y: 452 },\n { x: 21, y: 460 },\n { x: 22, y: 464 },\n { x: 23, y: 492 },\n { x: 24, y: 508 },\n { x: 25, y: 492 },\n { x: 26, y: 520 },\n { x: 27, y: 532 },\n { x: 28, y: 548 },\n { x: 29, y: 576 },\n { x: 30, y: 600 },\n { x: 31, y: 608 },\n { x: 32, y: 628 },\n { x: 33, y: 624 },\n { x: 34, y: 640 },\n { x: 35, y: 672 },\n { x: 36, y: 692 },\n { x: 37, y: 716 },\n { x: 38, y: 732 },\n { x: 39, y: 744 },\n { x: 40, y: 760 },\n { x: 41, y: 792 },\n { x: 42, y: 840 },\n { x: 43, y: 884 },\n { x: 44, y: 880 },\n { x: 45, y: 900 },\n { x: 46, y: 928 },\n { x: 47, y: 992 },\n { x: 48, y: 980 },\n { x: 49, y: 1004 },\n { x: 50, y: 1032 },\n { x: 51, y: 1056 },\n { x: 52, y: 1072 },\n { x: 53, y: 1080 },\n { x: 54, y: 1108 },\n { x: 55, y: 1136 },\n { x: 56, y: 1160 },\n { x: 57, y: 1188 },\n { x: 58, y: 1200 },\n { x: 59, y: 1204 },\n { x: 60, y: 1220 },\n { x: 61, y: 1244 },\n { x: 62, y: 1272 },\n { x: 63, y: 1308 },\n { x: 64, y: 1340 },\n { x: 65, y: 1364 },\n { x: 66, y: 1388 },\n { x: 67, y: 1400 },\n { x: 68, y: 1420 },\n { x: 69, y: 1480 },\n { x: 70, y: 1460 },\n { x: 71, y: 1484 },\n { x: 72, y: 1520 },\n { x: 73, y: 1552 },\n { x: 74, y: 1568 },\n { x: 75, y: 1600 },\n { x: 76, y: 1620 },\n { x: 77, y: 1632 },\n { x: 78, y: 1660 },\n { x: 79, y: 1680 },\n { x: 80, y: 1740 },\n { x: 81, y: 1728 },\n { x: 82, y: 1772 },\n { x: 83, y: 1792 },\n { x: 84, y: 1788 },\n { x: 85, y: 1800 },\n { x: 86, y: 1808 },\n { x: 87, y: 1840 },\n { x: 88, y: 1872 },\n { x: 89, y: 1900 },\n { x: 90, y: 1932 },\n]\nconst laptopsData = [\n { x: 0, y: 70 },\n { x: 1, y: 57.2 },\n { x: 2, y: 88.4 },\n { x: 3, y: 83.6 },\n { x: 4, y: 80.8 },\n { x: 5, y: 106 },\n { x: 6, y: 117.2 },\n { x: 7, y: 108.4 },\n { x: 8, y: 95.6 },\n { x: 9, y: 108.8 },\n { x: 10, y: 118 },\n { x: 11, y: 127.2 },\n { x: 12, y: 138.4 },\n { x: 13, y: 131.6 },\n { x: 14, y: 128.8 },\n { x: 15, y: 142 },\n { x: 16, y: 157.2 },\n { x: 17, y: 164.4 },\n { x: 18, y: 163.6 },\n { x: 19, y: 182.8 },\n { x: 20, y: 192 },\n { x: 21, y: 199.2 },\n { x: 22, y: 204.4 },\n { x: 23, y: 213.6 },\n { x: 24, y: 226.8 },\n { x: 25, y: 218 },\n { x: 26, y: 229.2 },\n { x: 27, y: 228.4 },\n { x: 28, y: 243.6 },\n { x: 29, y: 254.8 },\n { x: 30, y: 264 },\n { x: 31, y: 287.2 },\n { x: 32, y: 266.4 },\n { x: 33, y: 277.6 },\n { x: 34, y: 278.8 },\n { x: 35, y: 306 },\n { x: 36, y: 311.2 },\n { x: 37, y: 320.4 },\n { x: 38, y: 333.6 },\n { x: 39, y: 324.8 },\n { x: 40, y: 330 },\n { x: 41, y: 353.2 },\n { x: 42, y: 378.4 },\n { x: 43, y: 401.6 },\n { x: 44, y: 396.8 },\n { x: 45, y: 396 },\n { x: 46, y: 413.2 },\n { x: 47, y: 452.4 },\n { x: 48, y: 441.6 },\n { x: 49, y: 444.8 },\n { x: 50, y: 462 },\n { x: 51, y: 485.2 },\n { x: 52, y: 492.4 },\n { x: 53, y: 483.6 },\n { x: 54, y: 494.8 },\n { x: 55, y: 514 },\n { x: 56, y: 531.2 },\n { x: 57, y: 536.4 },\n { x: 58, y: 535.6 },\n { x: 59, y: 544.8 },\n { x: 60, y: 556 },\n { x: 61, y: 557.2 },\n { x: 62, y: 566.4 },\n { x: 63, y: 587.6 },\n { x: 64, y: 602.8 },\n { x: 65, y: 624 },\n { x: 66, y: 639.2 },\n { x: 67, y: 640.4 },\n { x: 68, y: 645.6 },\n { x: 69, y: 678.8 },\n { x: 70, y: 660 },\n { x: 71, y: 683.2 },\n { x: 72, y: 694.4 },\n { x: 73, y: 709.6 },\n { x: 74, y: 712.8 },\n { x: 75, y: 722 },\n { x: 76, y: 745.2 },\n { x: 77, y: 744.4 },\n { x: 78, y: 755.6 },\n { x: 79, y: 768.8 },\n { x: 80, y: 792 },\n { x: 81, y: 793.2 },\n { x: 82, y: 820.4 },\n { x: 83, y: 817.6 },\n { x: 84, y: 820.8 },\n { x: 85, y: 816 },\n { x: 86, y: 831.2 },\n { x: 87, y: 844.4 },\n { x: 88, y: 853.6 },\n { x: 89, y: 870.8 },\n { x: 90, y: 886 },\n]\nconst smartTvData = [\n { x: 0, y: 10 },\n { x: 1, y: 15.5 },\n { x: 2, y: 21.1 },\n { x: 3, y: 27 },\n { x: 4, y: 30.8 },\n { x: 5, y: 38 },\n { x: 6, y: 40 },\n { x: 7, y: 44.4 },\n { x: 8, y: 47.6 },\n { x: 9, y: 50.8 },\n { x: 10, y: 52 },\n { x: 11, y: 54.2 },\n { x: 12, y: 59.4 },\n { x: 13, y: 65.6 },\n { x: 14, y: 57.8 },\n { x: 15, y: 62 },\n { x: 16, y: 74.2 },\n { x: 17, y: 70.4 },\n { x: 18, y: 82.6 },\n { x: 19, y: 74.8 },\n { x: 20, y: 84 },\n { x: 21, y: 87.2 },\n { x: 22, y: 98.4 },\n { x: 23, y: 99.6 },\n { x: 24, y: 98.8 },\n { x: 25, y: 98 },\n { x: 26, y: 102.2 },\n { x: 27, y: 99.4 },\n { x: 28, y: 111.6 },\n { x: 29, y: 121.8 },\n { x: 30, y: 117 },\n { x: 31, y: 127.2 },\n { x: 32, y: 117.4 },\n { x: 33, y: 125.6 },\n { x: 34, y: 131.8 },\n { x: 35, y: 136 },\n { x: 36, y: 138.2 },\n { x: 37, y: 142.4 },\n { x: 38, y: 148.6 },\n { x: 39, y: 146.8 },\n { x: 40, y: 157 },\n { x: 41, y: 159.2 },\n { x: 42, y: 168.4 },\n { x: 43, y: 184.6 },\n { x: 44, y: 181.8 },\n { x: 45, y: 189 },\n { x: 46, y: 195.2 },\n { x: 47, y: 202.4 },\n { x: 48, y: 197.6 },\n { x: 49, y: 207.8 },\n { x: 50, y: 218 },\n { x: 51, y: 216.2 },\n { x: 52, y: 221.4 },\n { x: 53, y: 226.6 },\n { x: 54, y: 231.8 },\n { x: 55, y: 233 },\n { x: 56, y: 241.2 },\n { x: 57, y: 250.4 },\n { x: 58, y: 246.6 },\n { x: 59, y: 248.8 },\n { x: 60, y: 251 },\n { x: 61, y: 254.2 },\n { x: 62, y: 267.4 },\n { x: 63, y: 275.6 },\n { x: 64, y: 282.8 },\n { x: 65, y: 285 },\n { x: 66, y: 291.2 },\n { x: 67, y: 292.4 },\n { x: 68, y: 292.6 },\n { x: 69, y: 304.8 },\n { x: 70, y: 307 },\n { x: 71, y: 313.2 },\n { x: 72, y: 317.4 },\n { x: 73, y: 326.6 },\n { x: 74, y: 327.8 },\n { x: 75, y: 338 },\n { x: 76, y: 342.2 },\n { x: 77, y: 345.4 },\n { x: 78, y: 350.6 },\n { x: 79, y: 347.8 },\n { x: 80, y: 371 },\n { x: 81, y: 362.2 },\n { x: 82, y: 376.4 },\n { x: 83, y: 378.6 },\n { x: 84, y: 378.8 },\n { x: 85, y: 372 },\n { x: 86, y: 375.2 },\n { x: 87, y: 385.4 },\n { x: 88, y: 390.6 },\n { x: 89, y: 396.8 },\n { x: 90, y: 406 },\n]\n\n// Adding points to the series\nsmartPhonesSeries.add(smartPhoneData.map((point) => ({ x: point.x * dataFrequency, y: point.y })))\nlaptopsSeries.add(laptopsData.map((point) => ({ x: point.x * dataFrequency, y: point.y })))\nsmartTvSeries.add(smartTvData.map((point) => ({ x: point.x * dataFrequency, y: point.y })))\n\n// Add series to LegendBox and style entries.\nlegend.add(smartPhonesSeries, {\n builder: UIElementBuilders.CheckBox.setPictureOff(UIButtonPictures.Circle).setPictureOn(UIButtonPictures.Circle),\n})\nlegend.add(laptopsSeries, {\n builder: UIElementBuilders.CheckBox.setPictureOff(UIButtonPictures.Rectangle).setPictureOn(UIButtonPictures.Rectangle),\n})\nlegend.add(smartTvSeries, {\n builder: UIElementBuilders.CheckBox.setPictureOff(UIButtonPictures.Diamond).setPictureOn(UIButtonPictures.Diamond),\n})\n\n// Enable AutoCursor auto-fill.\nchart.setAutoCursor((cursor) => {\n cursor\n .setResultTableAutoTextStyle(true)\n .setTickMarkerXVisible(false)\n .setTickMarkerXAutoTextStyle(false)\n .setTickMarkerYAutoTextStyle(false)\n})\n","url":null,"readme":"_Also known as a Scatter Graph, Scatter Series, Point Graph, Scatter diagram or Scattergram_\n\nThis example shows a simple Point Graph with points drawn using PointSeries for a visual representation of the data points 'markers'. The point graph is a type of chart or mathematical diagram drawn on a Cartesian coordinate system and represents the relationship between two variables.\n\nThis type of series does not contain the visual representation of lines for the connection of data points but only data 'markers'.\n\nThe chart can be created with few simple lines of code:\n\n```javascript\n// Add a scatter series with markers using default X and Y axes.\nconst pointSeries = chart.addPointSeries()\n```\n\nThe PointSeries API allows configuring the visual representation of data markers.\n\n- PointShape: _enum_\n\n | PointShape | Description |\n | :--------: | :-------------------------------------: |\n | Rectangle | The series with rectangle-shaped points |\n | Triangle | The series with triangle-shaped points. |\n | Square | The series with square-shaped points. |\n\n PointShape must be specified upon creation of Series!\n\n ```javascript\n // Add a scatter series with markers using default X and Y axes. Select Circle PointShape.\n const pointSeries = chart.addPointSeries({ pointShape: PointShape.Circle })\n ```\n\n- PointSize: _number_\n\n ```javascript\n pointSeries.setPointSize(5.0)\n ```\n\n- FillStyle\n Scatter Series with markers provides an ability to specify a fill style of data markers as well as individual point fill style (explained further).\n\n ```javascript\n pointSeries.setPointFillStyle(fillStyleObject)\n ```\n\n- IndividualPointFill: _FillStyle_\n\n The style indicates individual per point coloring. The style enables the usage of individual fill taken from the input.\n The series can accept points in format `{ x: number, y: number, color: Color }`\n If the color is not provided during the input of data points ( e.g. in format `{ x: number, y: number }` ), the configurable fallback color is used.\n\n ```javascript\n // Create the instance of IndividualPointFill fill style.\n const individualStyle = new IndividualPointFill()\n // Set red color as a fallback color\n individualStyle.setFallbackColor(ColorRGBA(255, 0, 0))\n ```\n\nAs it was mentioned before, the series accepts points in format `{ x: number, y: number: color: Color }` with specified IndividualPointFill to enable individual point coloring or `{ x: number, y: number }` for other fill styles. Any number of points can be added with a single call similarly to line series with point markers.\n\n- Dataset without colors. If IndividualPointFill is specified, the fallback color is used. Otherwise, the specified fill style is used.\n\n ```javascript\n // Dataset of Vec2 data points without color.\n pointSeries.add([\n { x: 5, y: 10 },\n { x: 7.5, y: 20 },\n { x: 10, y: 30 },\n ])\n ```\n\n- Dataset with individual colors. If IndividualPointFill is specified, the color from data point or fallback color is used. Otherwise, the specified fill style is used.\n\n ```javascript\n // Dataset of Vec2Color data points with individual color.\n pointSeries.add([\n // use red color if IndividualPointFill is specified\n { x: 2.5, y: 0, color: ColorRGBA(255, 0, 0) },\n // use fallback color if IndividualPointFill is specified\n { x: 5, y: 10 },\n // use green color if IndividualPointFill is specified\n { x: 7.5, y: 20, color: ColorRGBA(0, 255, 0) },\n // use blue color if IndividualPointFill is specified\n { x: 10, y: 30, color: ColorRGBA(0, 0, 255) },\n ])\n ```\n","image":"simpleScatter"},{"id":"lcjs-example-0002-styledSplines","title":"JavaScript Spline Line Chart","tags":["spline","xy"],"description":"Example showing how to draw and style Spline Series.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example that showcases creation and styling of spline-series.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, AxisScrollStrategies, PointShape, SolidFill, ColorHEX, Themes } = lcjs\n\nconst { createProgressiveRandomGenerator } = xydata\n// Decide on an origin for DateTime axis.\nconst dateOrigin = new Date()\nconst dataFrequency = 1000\nconst chart = lightningChart().ChartXY({\n // theme: Themes.darkGold\n})\n\nchart\n .setTitle('Live power consumption')\n // Modify the default X Axis to use DateTime TickStrategy, and set the origin for the DateTime Axis.\n .getDefaultAxisX()\n .setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\n // Progressive DateTime view of 61 seconds.\n .setInterval({ start: -61 * 1000, end: 0, stopAxisAfter: false })\n .setScrollStrategy(AxisScrollStrategies.progressive)\n\nchart\n .getDefaultAxisY()\n .setTitle('Power consumption (kW)')\n .setInterval({ start: 0, end: 500, stopAxisAfter: false })\n .setScrollStrategy(AxisScrollStrategies.expansion)\n\nconst series = chart\n .addSplineSeries({ pointShape: PointShape.Circle })\n .setName('Power consumption')\n .setCursorInterpolationEnabled(false)\n .setCursorResultTableFormatter((tableBuilder, series, x, y) =>\n tableBuilder\n .addRow(series.getName())\n .addRow(series.axisX.formatValue(x))\n .addRow(series.axisY.formatValue(y) + ' kW'),\n )\n\n// Stream some random data.\ncreateProgressiveRandomGenerator()\n .setNumberOfPoints(10000)\n .generate()\n .setStreamBatchSize(1)\n .setStreamInterval(1000)\n .setStreamRepeat(true)\n .toStream()\n .forEach((point) => {\n point.x = point.x * dataFrequency\n point.y = point.y * 2000\n series.add(point)\n })\n","url":null,"readme":"This example shows how to draw and style spline-series.\n\nFirst create the series using chart method.\n\n```javascript\n// Add a spline series using default X and Y axes.\nconst splineSeries = chart.addSplineSeries()\n```\n\n## Option 1: Styling using a style object.\n\nThe first option for styling of series is to create a new object that contains the necessary information about visual settings. In the case of line-series, the object must be type of _SolidLine_ to be visible.\n\n```javascript\n// Create a new instance of visible solid line-style.\nconst strokeStyle = new SolidLine()\n // Set desired fill style of the stroke.\n .setFillStyle(\n // SolidLine can have only SolidFill fill-style.\n new SolidFill().setColor(ColorRGBA(96, 204, 232)),\n )\n // Set thickness of the stroke.\n .setThickness(5.0)\n\n// Apply styling settings to the series.\nsplineSeries.setStrokeStyle(strokeStyle)\n```\n\n## Option 2: Styling using a mutator function.\n\nUsually, it can be even more easy to simply modify the existing _Style_ of a component, rather than constructing a new one. This is done using so-called _mutator-functions_. Here's an example:\n\n```javascript\n// Modify the previous Stroke style of a SplineSeries, by overriding its previous thickness.\nsplineSeries.setStrokeStyle((strokeStyle) => strokeStyle.setThickness(1.0))\n```\n\nOur coding practices include fluent, self-returning API, which allows us to easily call multiple setters in one statement.\n\n```javascript\nsplineSeries\n .setStrokeStyle(strokeStyle)\n // 'transparentFill' is a static constant\n // that needs to be imported from the library in order to be used.\n // It is used to draw things with transparent fill that aren't disposable\n // - like the points of a PointLineSeries.\n .setPointFillStyle(transparentFill)\n```\n","image":"styledSplines"},{"id":"lcjs-example-0003-pointLinePlot","title":"JavaScript Point Line Chart","tags":["point-line","xy","point","line"],"description":"Basic use of Point Line Series. Also known as a Line Series, Line Graph, Line Chart, and Line with Markers.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example that showcases point & line -series with different point types.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, PointShape, Themes } = lcjs\n\nconst pointSize = 10\n\n// Create a XY Chart.\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Car Mileage Comparison')\n\n// Add point line series with different point styles with a few static points.\n// Combine different LineStyles, FillStyles and PointShapes.\n\n// Add line series with rectangle-shaped points.\nchart\n .addPointLineSeries()\n .setName('Sports Car')\n .setPointSize(pointSize)\n .add([\n { x: 0, y: 0 },\n { x: 50, y: 10 },\n { x: 80, y: 20 },\n { x: 100, y: 30 },\n { x: 150, y: 40 },\n { x: 180, y: 50 },\n { x: 230, y: 60 },\n { x: 290, y: 70 },\n ])\n\n// Add line series with circle-shaped points.\nchart\n .addPointLineSeries({ pointShape: PointShape.Circle })\n .setName('Family Car')\n .setPointSize(pointSize)\n .add([\n { x: 0, y: 0 },\n { x: 100, y: 10 },\n { x: 230, y: 20 },\n { x: 390, y: 30 },\n { x: 470, y: 40 },\n { x: 540, y: 50 },\n { x: 600, y: 60 },\n { x: 800, y: 70 },\n ])\n\n// Add line series with triangle-shaped points.\nchart\n .addPointLineSeries({ pointShape: PointShape.Triangle })\n .setName('Pick-up Car')\n .setPointSize(pointSize)\n .add([\n { x: 0, y: 0 },\n { x: 80, y: 10 },\n { x: 100, y: 20 },\n { x: 150, y: 30 },\n { x: 230, y: 40 },\n { x: 380, y: 50 },\n { x: 450, y: 60 },\n { x: 580, y: 70 },\n ])\n\n// Setup view nicely.\nchart.getDefaultAxisX().setInterval({ start: 0, end: 1000 }).setTitle('Km')\nchart.getDefaultAxisY().setInterval({ start: 0, end: 100 }).setTitle('Litre')\nchart.setAutoCursor((cursor) =>\n cursor.setResultTableAutoTextStyle(true).setTickMarkerXAutoTextStyle(true).setTickMarkerYAutoTextStyle(true),\n)\n\n// Add Legend Box.\nconst legend = chart.addLegendBox().add(chart)\n","url":null,"readme":"_Also known as a Line Series, Line Graph, Line Chart, and Line with Markers_\n\nThis example shows the basic usage of a line series with 'markers' for visual representation of the data points. Similarly to line series, it is drawn on a Cartesian coordinate system and represents the relationship between two variables. Line series display information as a series of data points connected by straight line segments in any direction. This type of series additionally draws data markers on top of the line at the location specified in a dataset.\n\nThe chart can be created with few simple lines of code:\n\n```javascript\n// Add a line series with markers using default X and Y axes.\nconst lineSeries = chart.addPointLineSeries()\n```\n\nLine Series with markers provides an ability to specify styles for both markers and lines individually.\n\n```javascript\nlineSeries.setStrokeStyle(lineStyleObject).setPointFillStyle(fillStyleObject)\n```\n\nIt shares the same API with the PointSeries, which allows configuring the visual representation of data markers.\n\n- PointShape: _enum_\n\n | PointShape | Description |\n | :--------: | :-------------------------------------: |\n | Rectangle | The series with rectangle-shaped points |\n | Triangle | The series with triangle-shaped points. |\n | Square | The series with square-shaped points. |\n\n PointShape must be specified upon creation of Series!\n\n ```javascript\n // Add a line series with markers using default X and Y axes. Select Circle PointShape.\n const lineSeries = chart.addPointLineSeries({\n pointShape: PointShape.Circle,\n })\n ```\n\n- PointSize: _number_\n\n ```javascript\n lineSeries.setPointSize(5.0)\n ```\n\n- IndividualPointFill: _FillStyle_\n\n The style indicates individual per point coloring. The style enables the usage of individual fill taken from the input.\n The series can accept points in format `{ x: number, y: number, color: Color }`\n If the color is not provided during the input of data points ( e.g. in format `{ x: number, y: number }` ), the configurable fallback color is used.\n\n ```javascript\n // Create the instance of IndividualPointFill fill style.\n const individualStyle = new IndividualPointFill()\n // Set red color as a fallback color\n individualStyle.setFallbackColor(ColorRGBA(255, 0, 0))\n ```\n\nAs it was mentioned before, the series accepts points in format `{ x: number, y: number: color: Color }` with specified IndividualPointFill to enable individual point coloring or `{ x: number, y: number }` for other fill styles. Any number of points can be added with a single call similarly to line series with point markers.\n\n- Dataset without colors.\n\n - If IndividualPointFill is specified, the fallback color is used. Otherwise, the specified fill style is used.\n\n ```javascript\n // Dataset of Vec2 data points without color.\n lineSeries.add([\n { x: 5, y: 10 },\n { x: 7.5, y: 20 },\n { x: 10, y: 30 },\n ])\n ```\n\n- Dataset with individual colors.\n\n - If IndividualPointFill is specified, the color from data point or fallback color is used. Otherwise, the specified fill style is used.\n\n ```javascript\n // Dataset of Vec2Color data points with individual color.\n lineSeries.add([\n // use red color if IndividualPointFill is specified\n { x: 2.5, y: 0, color: ColorRGBA(255, 0, 0) },\n // use fallback color if IndividualPointFill is specified\n { x: 5, y: 10 },\n // use green color if IndividualPointFill is specified\n { x: 7.5, y: 20, color: ColorRGBA(0, 255, 0) },\n // use blue color if IndividualPointFill is specified\n { x: 10, y: 30, color: ColorRGBA(0, 0, 255) },\n ])\n ```\n","image":"pointLinePlot"},{"id":"lcjs-example-0004-1MillionPointsLineTrace","title":"1 Million Points JavaScript Line Chart","tags":["line","xy","datapattern"],"description":"Example plotting a million data points using progressive Line Series.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example that showcases a line series with 1 Million streamed points with animated transitions.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, Themes } = lcjs\n\n// Import data-generator from 'xydata'-library.\nconst { createProgressiveTraceGenerator } = xydata\n\n// Create a XY Chart.\nconst chart = lightningChart().ChartXY({\n // theme: Themes.darkGold\n})\n\n// Create line series optimized for regular progressive X data.\nconst series = chart.addLineSeries({\n dataPattern: {\n // pattern: 'ProgressiveX' => Each consecutive data point has increased X coordinate.\n pattern: 'ProgressiveX',\n // regularProgressiveStep: true => The X step between each consecutive data point is regular (for example, always `1.0`).\n regularProgressiveStep: true,\n },\n})\n\n// Generate traced points stream using 'xydata'-library.\nchart.setTitle('Generating test data...')\ncreateProgressiveTraceGenerator()\n .setNumberOfPoints(1 * 1000 * 1000)\n .generate()\n .toPromise()\n .then((data) => {\n chart.setTitle('1 Million Points Line Trace')\n const dataLen = data.length\n let dataPointsCount = 0\n const addPoints = () => {\n const addDataPointsCount = 20000\n const newDataPoints = data.slice(dataPointsCount, dataPointsCount + addDataPointsCount)\n series.add(newDataPoints)\n dataPointsCount += addDataPointsCount\n if (dataPointsCount < dataLen) {\n requestAnimationFrame(addPoints)\n }\n }\n addPoints()\n })\n","url":null,"readme":"This example plots a million data points in an instant using line series.\n\n## Progressive data optimizations\n\nBy default, `LineSeries` can take list of XY coordinates in any order, connecting them with a line stroke.\nHowever, in a lot of applications, the input data comes in a distinct order, for example, X coordinates describe a timestamp which increases between each consecutive data point. We refer to this as a _progressive data pattern_.\n\n`LineSeries` is coupled together with highly sophisticated optimizations that can be enabled in applications where input data follows a _data pattern_. This example showcases the `'ProgressiveX'` _pattern_.\n\n### Enabling data pattern optimizations\n\n_Data pattern_ must be specified when the _series_ is created:\n\n```typescript\n// Create LineSeries with 'ProgressiveX' data pattern.\nconst series = ChartXY.addLineSeries({\n dataPattern: {\n // pattern: 'ProgressiveX' => Each consecutive data point has increased X coordinate.\n pattern: 'ProgressiveX',\n // regularProgressiveStep: true => The X step between each consecutive data point is regular (for example, always `1.0`).\n regularProgressiveStep: true,\n },\n})\n```\n\nAvailable _data patterns_ are:\n\n- `'ProgressiveX'`: Each consecutive data point has increased X coordinate.\n- `'ProgressiveY'`: Each consecutive data point has increased Y coordinate.\n- `'RegressiveX'`: Each consecutive data point has decreased X coordinate.\n- `'RegressiveX'`: Each consecutive data point has decreased Y coordinate.\n\nThe pattern of data can be identified even further with the optional `regularProgressiveStep` property.\nThis can be enabled when the _progressive step_ (for example, `'ProgressiveX'` -> X step) between each data point is regular, leading to even more significant optimizations.\n\n### Side-effects and good to know\n\nWhen a series is configured with a _data pattern_, the rendering process makes logical deductions and ssumptions on the user input data, according to the _data pattern_ specification. **If the supplied input data does not follow the specification, rendering errors or even crashes can occur.** If you run into strange issues, first see if disabling the _data pattern_ helps, or if your input data is somehow invalid.\n\n## Automatic Axis scrolling\n\nThe scrolling of data in progressive series can also be automated and optimized by specifying **_ScrollStrategy_** for both x-axis & y-axis to perform the scrolling efficiently.\n\n- Select **_AxisScrollStrategies.expansion_**. Automatically increases a scale if some points are out of scale. Retains progressivity/regressivity of used scale.\n- Select **_AxisScrollStrategies.fitting_**. Automatically increases a scale if some points are out of scale and reduces it if there is too much empty space. Retains progressivity/regressivity of used scale.\n- Select **_AxisScrollStrategies.progressive_**. Automatically scrolls a scale in a positive direction.\n- Select **_AxisScrollStrategies.regressive_**. Automatically scrolls a scale to a negative direction.\n- Pass **_undefined_** to disable automatic scrolling. Scale can then be manually set using _setInterval_ method of **_Axis_**\n","image":"1mPointsLineTrace"},{"id":"lcjs-example-0005-stepPlot","title":"JavaScript Step Series","tags":["step","xy","legendbox"],"description":"Example showing the use of a Step Series with different preprocessing modes. Also known as a Step Graph or Step Chart.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example that showcases step-series with dynamically changeable stepping-options.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, StepOptions, UILayoutBuilders, UIElementBuilders, UIButtonPictures, UIOrigins, AxisTickStrategies, Themes } = lcjs\n\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Survey Report')\n\nconst reportTableXlabel = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n]\n\n// Create step series for each available step-option.\n// The step-function can not be changed during runtime!\nconst stepSeries = []\nconst addSeries = (stepOption) =>\n stepSeries.push(\n chart\n .addStepSeries({ mode: stepOption })\n // Show identifier of stepping option as the name of the Series.\n .setName(StepOptions[stepOption])\n .setVisible(false)\n .setCursorResultTableFormatter((builder, _, xValue, yValue) =>\n builder\n .addRow('Survey Report')\n .addRow('Month: ' + reportTableXlabel[Math.trunc(xValue)])\n .addRow('Amount: ' + yValue.toFixed(2)),\n ),\n )\naddSeries(StepOptions.before)\naddSeries(StepOptions.middle)\naddSeries(StepOptions.after)\n\n// X-axis of the series\nconst axisX = chart\n .getDefaultAxisX()\n .setMouseInteractions(false)\n // Disable default ticks.\n .setTickStrategy(AxisTickStrategies.Empty)\n .setMouseInteractions(false)\n\n// Enable AutoCursor auto-fill.\nchart.setAutoCursor((cursor) => {\n cursor.setResultTableAutoTextStyle(true).setTickMarkerXVisible(false).setTickMarkerYAutoTextStyle(true)\n})\n\n// Generate progressive points and add it to every series.\nconst data = [\n {\n x: 'Jan',\n y: 1,\n },\n {\n x: 'Feb',\n y: 11,\n },\n {\n x: 'Mar',\n y: 21,\n },\n {\n x: 'Apr',\n y: 15,\n },\n {\n x: 'May',\n y: 57,\n },\n {\n x: 'Jun',\n y: 77,\n },\n {\n x: 'Jul',\n y: 47,\n },\n {\n x: 'Aug',\n y: 24,\n },\n {\n x: 'Sep',\n y: 76,\n },\n {\n x: 'Oct',\n y: 88,\n },\n {\n x: 'Nov',\n y: 99,\n },\n {\n x: 'Dec',\n y: 3,\n },\n]\nlet x = 0\nlet changedData = []\n\nstepSeries.forEach((values, i) => {\n changedData = data.map((changex, index) => ({ x: index, y: changex.y }))\n values.add(changedData)\n})\n\nchangedData.forEach((_, index) => {\n // Add custom tick, more like categorical axis.\n axisX\n .addCustomTick()\n .setValue(index)\n .setGridStrokeLength(0)\n .setTextFormatter((_) => data[index].x)\n x += 1\n})\nchart.getDefaultAxisY().setTitle('Amount / Month').setInterval({ start: 0, end: 100, stopAxisAfter: false })\n\n// Add UI controls for switching between step-mode-options.\n// NOTE: This is not the focus of the example, and will be better covered elsewhere.\nconst stepControls = chart.addUIElement(UILayoutBuilders.Column)\nstepControls.addElement(UIElementBuilders.TextBox).setText('Step options')\nconst buttonLayout = stepControls.addElement(UILayoutBuilders.Row)\nconst radioButtons = []\nlet switching = false\nconst radioButtonBuilder = UIElementBuilders.CheckBox.setPictureOff(UIButtonPictures.Rectangle)\n .setPictureOn(UIButtonPictures.Diamond)\n .addStyler((checkBox) => {\n radioButtons.push(checkBox)\n checkBox.setOn(false).setPadding({ left: 10, bottom: 5 })\n // Add radio button logic immediately afterwards so that it is applied after plot.\n // Attach logic (otherwise plot logic will override this)\n setTimeout(() => {\n checkBox.onSwitch((activatedButton, state) => {\n if (switching) {\n return\n }\n switching = true\n if (state) {\n // Deactivate other buttons\n for (const button of radioButtons) if (button !== activatedButton) button.setOn(false)\n } else {\n // Prevent turning of the selected option\n activatedButton.setOn(true)\n }\n switching = false\n })\n }, 100)\n })\nstepSeries[0].attach(buttonLayout.addElement(radioButtonBuilder))\nstepSeries[1].attach(buttonLayout.addElement(radioButtonBuilder))\nstepSeries[2].attach(buttonLayout.addElement(radioButtonBuilder))\nconst margin = 10\nstepControls.setPosition({ x: 30, y: 80 }).setOrigin(UIOrigins.CenterBottom).setMargin(margin)\n\n// Apply initial selection\nstepSeries[1].setVisible(true)\n","url":null,"readme":"_Also known as a Step Graph or Step Chart_\n\nThis example shows the basic usage of a step series with different preprocessing modes. Similarly to line series, it is drawn on a Cartesian coordinate system and represents the relationship between two variables. However, it is used to visualize the changing variables that have irregular fluctuation forming a step-like progression.\n\nThe data that changes at irregular intervals remains constant between the changes. The vertical risers of a chart denote changes in the data and their magnitude, the horizontal - the constancy of the data within the interval.\n\n\n\nCreation of a step series is equal to any basic line series, with the exception of an additional optional parameter, which specifies the 'step option' of the series.\n\n```javascript\nconst stepSeries = chart.addStepSeries({ mode: stepOption })\n```\n\nThere is no need in data preparation, step chart will be generated automatically from the provided curve based on selected step mode.\n\n| Step Options | Description |\n| :----------: | :----------------------------------------------------: |\n| before | The magnitude changes before the next interval start. |\n| middle | The magnitude changes at the midpoint of the interval. |\n| after | The magnitude changes after the previous interval end. |\n\nThe series accepts points in format `{ x: number, y: number: color: Color }` with specified IndividualPointFill to enable individual point coloring or `{ x: number, y: number }` for other fill styles. Any number of points can be added with a single call similarly to line series with point markers.\n","image":"stepPlot"},{"id":"lcjs-example-0006-pointClusters","title":"JavaScript Point Clusters Chart","tags":["point-cluster","point","xy","rectangle"],"description":"Example showing how to create clusters of differently colored points. Using Point Series.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Multiple chart examples, dynamic point coloring, Scatter Charts, Point Cluster Charts, 3D charts for JS.","src":"/*\n * LightningChartJS example that showcases clusters of points.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, SolidFill, SolidLine, ColorPalettes, emptyFill, AxisTickStrategies, PointShape, Themes } = lcjs\n\nconst pointSize = 10\n// Decide on an origin for DateTime axis.\nconst dateOrigin = new Date(2018, 8, 1)\n\n// Create a XY Chart.\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Salary differences between Kuopio and Helsinki')\n .setPadding({\n right: 50,\n })\n\n// Modify the default X Axis to use DateTime TickStrategy, and set the origin for the DateTime Axis.\nchart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\n\n// Add a series for each cluster of points\nconst fstClusterSeries = chart.addPointSeries({ pointShape: PointShape.Circle }).setName('Kuopio').setPointSize(pointSize)\nconst sndClusterSeries = chart.addPointSeries({ pointShape: PointShape.Triangle }).setName('Helsinki').setPointSize(pointSize)\n\n// The point supplied to series will have their X values multiplied by this value (for easier addition of DateTime-values).\nconst dataFrequency = 1000 * 60 * 60 * 24\nconst kuopioPoints = [\n { x: 12.152641878669275, y: 5335.336538461539 },\n { x: 11.62426614481409, y: 5259.615384615385 },\n { x: 10.919765166340508, y: 5082.932692307692 },\n { x: 10.156555772994128, y: 4923.076923076923 },\n { x: 9.334637964774949, y: 4796.875 },\n { x: 8.101761252446183, y: 4704.326923076923 },\n { x: 6.634050880626223, y: 4620.192307692308 },\n { x: 3.933463796477495, y: 4418.2692307692305 },\n { x: 3.111545988258317, y: 4342.548076923077 },\n { x: 2.8180039138943247, y: 4199.5192307692305 },\n { x: 2.8180039138943247, y: 4014.423076923077 },\n { x: 2.4657534246575334, y: 3930.2884615384614 },\n { x: 2.407045009784736, y: 3745.1923076923076 },\n { x: 2.935420743639921, y: 3408.653846153846 },\n { x: 3.6399217221135025, y: 3307.6923076923076 },\n { x: 5.107632093933463, y: 3181.4903846153848 },\n { x: 6.868884540117416, y: 3181.4903846153848 },\n { x: 7.749510763209393, y: 3198.3173076923076 },\n { x: 9.217221135029353, y: 3316.1057692307695 },\n { x: 10.215264187866929, y: 3475.9615384615386 },\n { x: 11.037181996086105, y: 3585.3365384615386 },\n { x: 12.035225048923678, y: 3719.951923076923 },\n { x: 12.798434442270057, y: 3778.846153846154 },\n { x: 16.027397260273972, y: 3820.9134615384614 },\n { x: 22.544031311154598, y: 3896.6346153846152 },\n { x: 24.187866927592953, y: 3963.9423076923076 },\n { x: 24.83365949119374, y: 4325.721153846154 },\n { x: 24.65753424657534, y: 4435.096153846154 },\n { x: 24.422700587084147, y: 4603.365384615385 },\n { x: 24.129158512720156, y: 4754.807692307692 },\n { x: 22.4853228962818, y: 5082.932692307692 },\n { x: 21.78082191780822, y: 5167.067307692308 },\n { x: 19.080234833659492, y: 5562.5 },\n { x: 17.31898238747554, y: 5722.3557692307695 },\n { x: 16.262230919765166, y: 5865.384615384615 },\n { x: 15.264187866927593, y: 5924.278846153846 },\n { x: 14.324853228962818, y: 5966.346153846154 },\n { x: 11.859099804305282, y: 5915.865384615385 },\n { x: 10.919765166340508, y: 5865.384615384615 },\n { x: 7.749510763209393, y: 5579.326923076923 },\n { x: 6.164383561643835, y: 5419.471153846154 },\n { x: 5.048923679060665, y: 5108.173076923077 },\n { x: 3.5812133072407044, y: 4460.336538461539 },\n { x: 2.8767123287671232, y: 4174.278846153846 },\n { x: 0.3522504892367906, y: 4342.548076923077 },\n { x: 0.3522504892367906, y: 4056.4903846153848 },\n { x: 0.23483365949119372, y: 3551.6826923076924 },\n { x: 0.410958904109589, y: 3282.4519230769233 },\n { x: 0.23483365949119372, y: 3046.875 },\n { x: 0.410958904109589, y: 2887.019230769231 },\n { x: 0.6457925636007827, y: 2693.5096153846152 },\n { x: 2.759295499021526, y: 2643.028846153846 },\n { x: 3.7573385518590996, y: 2643.028846153846 },\n { x: 5.98825831702544, y: 2668.269230769231 },\n { x: 9.510763209393346, y: 2693.5096153846152 },\n { x: 10.391389432485322, y: 2802.8846153846157 },\n { x: 11.037181996086105, y: 3030.048076923077 },\n { x: 11.741682974559687, y: 3274.038461538462 },\n { x: 12.857142857142856, y: 3475.9615384615386 },\n { x: 14.383561643835616, y: 3602.1634615384614 },\n { x: 15.205479452054796, y: 3652.6442307692305 },\n { x: 16.43835616438356, y: 3711.5384615384614 },\n { x: 17.96477495107632, y: 3804.0865384615386 },\n { x: 19.256360078277883, y: 4090.1442307692305 },\n { x: 19.021526418786692, y: 4233.173076923077 },\n { x: 17.201565557729943, y: 4384.615384615385 },\n { x: 15.088062622309199, y: 4435.096153846154 },\n { x: 12.270058708414872, y: 4376.201923076923 },\n { x: 10.626223091976517, y: 4207.932692307692 },\n { x: 8.336594911937379, y: 3862.9807692307695 },\n { x: 7.808219178082191, y: 3770.4326923076924 },\n { x: 5.283757338551859, y: 4485.576923076923 },\n { x: 4.87279843444227, y: 3896.6346153846152 },\n { x: 4.285714285714286, y: 3669.471153846154 },\n { x: 2.172211350293542, y: 4578.125 },\n { x: 3.933463796477495, y: 4981.971153846154 },\n { x: 5.518590998043054, y: 5335.336538461539 },\n { x: 7.749510763209393, y: 5798.076923076923 },\n { x: 10.09784735812133, y: 5688.701923076923 },\n { x: 9.628180039138943, y: 5352.163461538461 },\n { x: 13.209393346379647, y: 5570.913461538461 },\n { x: 12.68101761252446, y: 5772.836538461539 },\n { x: 14.794520547945204, y: 5688.701923076923 },\n { x: 16.203522504892366, y: 5461.538461538461 },\n { x: 18.493150684931507, y: 5183.8942307692305 },\n { x: 20.19569471624266, y: 4998.798076923077 },\n { x: 21.42857142857143, y: 4788.461538461539 },\n { x: 22.07436399217221, y: 4443.509615384615 },\n { x: 22.720156555772995, y: 4123.798076923077 },\n { x: 21.722113502935418, y: 4039.6634615384614 },\n { x: 19.608610567514678, y: 4443.509615384615 },\n { x: 18.786692759295498, y: 4586.538461538461 },\n { x: 16.731898238747554, y: 4822.115384615385 },\n { x: 14.500978473581215, y: 5032.451923076923 },\n { x: 13.972602739726026, y: 5099.759615384615 },\n { x: 12.38747553816047, y: 4754.807692307692 },\n { x: 14.911937377690801, y: 4687.5 },\n { x: 14.500978473581215, y: 4822.115384615385 },\n { x: 16.027397260273972, y: 5125 },\n { x: 15.029354207436398, y: 5394.2307692307695 },\n { x: 13.737769080234832, y: 5436.298076923077 },\n { x: 15.322896281800393, y: 5242.788461538461 },\n { x: 17.495107632093934, y: 5183.8942307692305 },\n { x: 18.904109589041095, y: 4838.942307692308 },\n { x: 20.900195694716242, y: 4603.365384615385 },\n { x: 22.133072407045006, y: 4620.192307692308 },\n { x: 22.367906066536204, y: 4737.9807692307695 },\n { x: 21.78082191780822, y: 4889.423076923077 },\n { x: 20.54794520547945, y: 5116.586538461539 },\n { x: 19.49119373776908, y: 5259.615384615385 },\n { x: 18.258317025440316, y: 5411.057692307692 },\n { x: 17.436399217221137, y: 5478.365384615385 },\n { x: 16.497064579256357, y: 5621.3942307692305 },\n { x: 14.383561643835616, y: 5814.903846153846 },\n { x: 13.561643835616438, y: 5840.1442307692305 },\n { x: 12.093933463796477, y: 5646.634615384615 },\n { x: 11.037181996086105, y: 5411.057692307692 },\n { x: 10.861056751467709, y: 5293.2692307692305 },\n { x: 9.921722113502934, y: 5150.240384615385 },\n { x: 8.336594911937379, y: 5301.682692307692 },\n { x: 6.927592954990215, y: 5217.548076923077 },\n { x: 6.34050880626223, y: 5015.625 },\n { x: 5.518590998043054, y: 4889.423076923077 },\n { x: 2.5244618395303324, y: 4679.086538461539 },\n { x: 4.1682974559686885, y: 4780.048076923077 },\n { x: 3.170254403131115, y: 4805.288461538461 },\n { x: 2.407045009784736, y: 4527.6442307692305 },\n { x: 1.8199608610567513, y: 4334.134615384615 },\n { x: 1.467710371819961, y: 4048.076923076923 },\n { x: 1.467710371819961, y: 3888.221153846154 },\n { x: 1.2915851272015655, y: 3711.5384615384614 },\n { x: 1.11545988258317, y: 3484.375 },\n { x: 1.3502935420743638, y: 3223.5576923076924 },\n { x: 1.4090019569471623, y: 3080.528846153846 },\n { x: 1.9960861056751458, y: 3030.048076923077 },\n { x: 4.10958904109589, y: 2929.0865384615386 },\n { x: 5.401174168297455, y: 2903.846153846154 },\n { x: 6.046966731898238, y: 2887.019230769231 },\n { x: 6.75146771037182, y: 2920.673076923077 },\n { x: 8.101761252446183, y: 2929.0865384615386 },\n { x: 9.217221135029353, y: 2996.394230769231 },\n { x: 10.09784735812133, y: 3189.903846153846 },\n { x: 6.34050880626223, y: 3097.3557692307695 },\n { x: 4.050880626223091, y: 3147.8365384615386 },\n { x: 2.8767123287671232, y: 3206.7307692307695 },\n { x: 2.1135029354207435, y: 2811.298076923077 },\n { x: 3.2289628180039136, y: 2929.0865384615386 },\n { x: 2.8180039138943247, y: 3055.288461538462 },\n { x: 4.931506849315069, y: 3265.625 },\n { x: 5.518590998043054, y: 3467.548076923077 },\n { x: 4.637964774951076, y: 3518.028846153846 },\n { x: 3.874755381604696, y: 3534.8557692307695 },\n { x: 2.8180039138943247, y: 3602.1634615384614 },\n { x: 2.23091976516634, y: 3644.2307692307695 },\n { x: 3.7573385518590996, y: 3879.8076923076924 },\n { x: 4.1682974559686885, y: 4098.557692307692 },\n { x: 4.6966731898238745, y: 4191.1057692307695 },\n { x: 5.694716242661448, y: 4258.413461538461 },\n { x: 6.986301369863013, y: 4350.961538461539 },\n { x: 7.86692759295499, y: 4409.8557692307695 },\n { x: 8.864970645792564, y: 4527.6442307692305 },\n { x: 9.217221135029353, y: 4586.538461538461 },\n { x: 9.041095890410958, y: 5141.826923076923 },\n { x: 8.512720156555773, y: 5074.5192307692305 },\n { x: 7.984344422700587, y: 4965.1442307692305 },\n { x: 7.455968688845399, y: 4838.942307692308 },\n { x: 6.457925636007829, y: 4754.807692307692 },\n { x: 5.577299412915851, y: 4679.086538461539 },\n { x: 6.986301369863013, y: 5343.75 },\n { x: 8.63013698630137, y: 5469.951923076923 },\n { x: 10.215264187866929, y: 5503.6057692307695 },\n { x: 11.154598825831703, y: 5537.259615384615 },\n { x: 13.033268101761252, y: 5427.884615384615 },\n { x: 13.09197651663405, y: 5192.307692307692 },\n { x: 12.152641878669275, y: 4990.384615384615 },\n { x: 10.919765166340508, y: 4695.913461538461 },\n { x: 10.450097847358121, y: 4611.778846153846 },\n { x: 9.804305283757339, y: 4477.163461538461 },\n { x: 8.806262230919765, y: 4359.375 },\n { x: 8.043052837573384, y: 4275.240384615385 },\n { x: 7.10371819960861, y: 4174.278846153846 },\n { x: 6.105675146771037, y: 3921.875 },\n { x: 5.636007827788649, y: 3719.951923076923 },\n { x: 6.223091976516634, y: 3568.5096153846152 },\n { x: 6.34050880626223, y: 3375 },\n { x: 6.986301369863013, y: 3324.519230769231 },\n { x: 7.632093933463796, y: 3425.4807692307695 },\n { x: 8.160469667318981, y: 3518.028846153846 },\n { x: 9.217221135029353, y: 3610.576923076923 },\n { x: 10.09784735812133, y: 3694.7115384615386 },\n { x: 11.037181996086105, y: 3787.2596153846152 },\n { x: 11.97651663405088, y: 3862.9807692307695 },\n { x: 12.915851272015654, y: 3947.1153846153848 },\n { x: 13.385518590998043, y: 4073.3173076923076 },\n { x: 14.442270058708415, y: 4115.384615384615 },\n { x: 15.616438356164382, y: 4123.798076923077 },\n { x: 17.201565557729943, y: 4115.384615384615 },\n { x: 18.375733855185906, y: 4048.076923076923 },\n { x: 19.608610567514678, y: 3947.1153846153848 },\n { x: 19.608610567514678, y: 3879.8076923076924 },\n { x: 21.42857142857143, y: 4182.692307692308 },\n { x: 20.958904109589042, y: 4308.894230769231 },\n { x: 23.01369863013699, y: 4275.240384615385 },\n { x: 19.021526418786692, y: 4426.682692307692 },\n { x: 17.377690802348333, y: 4645.432692307692 },\n { x: 17.553816046966734, y: 4931.490384615385 },\n { x: 16.262230919765166, y: 4990.384615384615 },\n { x: 16.203522504892366, y: 4679.086538461539 },\n { x: 14.853228962818003, y: 4468.75 },\n { x: 13.09197651663405, y: 4628.6057692307695 },\n { x: 13.913894324853228, y: 4805.288461538461 },\n { x: 12.622309197651663, y: 4906.25 },\n { x: 11.330724070450097, y: 4847.3557692307695 },\n { x: 11.037181996086105, y: 4199.5192307692305 },\n { x: 9.628180039138943, y: 3989.1826923076924 },\n { x: 9.217221135029353, y: 3930.2884615384614 },\n { x: 13.561643835616438, y: 4157.451923076923 },\n { x: 14.20743639921722, y: 4199.5192307692305 },\n { x: 18.904109589041095, y: 5823.317307692308 },\n { x: 19.608610567514678, y: 5739.182692307692 },\n { x: 20.900195694716242, y: 5713.942307692308 },\n { x: 21.722113502935418, y: 5865.384615384615 },\n { x: 22.720156555772995, y: 5655.048076923077 },\n { x: 23.95303326810176, y: 5528.846153846154 },\n { x: 23.894324853228966, y: 5394.2307692307695 },\n { x: 23.835616438356162, y: 5326.923076923077 },\n { x: 23.835616438356162, y: 5183.8942307692305 },\n { x: 23.894324853228966, y: 5024.038461538461 },\n { x: 24.481409001956948, y: 4872.596153846154 },\n { x: 21.487279843444227, y: 5394.2307692307695 },\n { x: 21.956947162426612, y: 5562.5 },\n { x: 22.367906066536204, y: 5512.0192307692305 },\n { x: 22.89628180039139, y: 5352.163461538461 },\n { x: 20.841487279843445, y: 5444.711538461539 },\n { x: 14.031311154598825, y: 3862.9807692307695 },\n { x: 15.557729941291585, y: 3854.5673076923076 },\n { x: 12.32876712328767, y: 4174.278846153846 },\n { x: 11.859099804305282, y: 4115.384615384615 },\n { x: 11.330724070450097, y: 3921.875 },\n]\n\nconst helsinkiPoints = [\n { x: 6.164383561643835, y: 2314.6634615384614 },\n { x: 6.516634050880624, y: 2351.2019230769233 },\n { x: 7.045009784735812, y: 2479.0865384615386 },\n { x: 7.279843444227005, y: 2543.028846153846 },\n { x: 7.514677103718199, y: 2638.9423076923076 },\n { x: 8.277886497064578, y: 2794.230769230769 },\n { x: 8.63013698630137, y: 2853.605769230769 },\n { x: 10.156555772994128, y: 2972.355769230769 },\n { x: 10.919765166340508, y: 3018.028846153846 },\n { x: 11.800391389432484, y: 3063.7019230769233 },\n { x: 12.798434442270057, y: 3109.375 },\n { x: 14.442270058708415, y: 3155.0480769230767 },\n { x: 16.555772994129157, y: 3228.125 },\n { x: 17.025440313111545, y: 3292.0673076923076 },\n { x: 17.729941291585128, y: 3419.951923076923 },\n { x: 18.610567514677104, y: 3904.086538461538 },\n { x: 18.6692759295499, y: 3753.3653846153848 },\n { x: 18.31702544031311, y: 3616.346153846154 },\n { x: 18.082191780821915, y: 3534.1346153846152 },\n { x: 19.667318982387478, y: 3922.355769230769 },\n { x: 20.782778864970645, y: 3894.951923076923 },\n { x: 22.07436399217221, y: 3858.413461538461 },\n { x: 23.131115459882583, y: 3799.0384615384614 },\n { x: 24.951076320939336, y: 3739.6634615384614 },\n { x: 26.301369863013697, y: 3639.1826923076924 },\n { x: 26.59491193737769, y: 3424.5192307692305 },\n { x: 26.771037181996086, y: 3200.721153846154 },\n { x: 27.76908023483366, y: 2949.5192307692305 },\n { x: 28.12133072407045, y: 2712.0192307692305 },\n { x: 26.53620352250489, y: 2638.9423076923076 },\n { x: 25.655577299412915, y: 2437.980769230769 },\n { x: 15.616438356164382, y: 2150.2403846153848 },\n { x: 19.138943248532293, y: 2227.8846153846152 },\n { x: 20.782778864970645, y: 2300.9615384615386 },\n { x: 23.776908023483365, y: 2469.951923076923 },\n { x: 25.71428571428571, y: 2757.6923076923076 },\n { x: 26.301369863013697, y: 2849.0384615384614 },\n { x: 26.947162426614483, y: 2954.086538461538 },\n { x: 24.951076320939336, y: 3050 },\n { x: 24.83365949119374, y: 3324.0384615384614 },\n { x: 25.949119373776906, y: 3547.836538461538 },\n { x: 27.06457925636008, y: 3598.076923076923 },\n { x: 27.886497064579256, y: 3630.0480769230767 },\n { x: 28.003913894324853, y: 3767.0673076923076 },\n { x: 27.59295499021526, y: 3780.7692307692305 },\n { x: 26.066536203522503, y: 3744.230769230769 },\n { x: 24.36399217221135, y: 3853.8461538461534 },\n { x: 19.080234833659492, y: 3218.9903846153848 },\n { x: 14.442270058708415, y: 2944.951923076923 },\n { x: 10.626223091976517, y: 2821.6346153846152 },\n { x: 9.628180039138943, y: 2670.9134615384614 },\n { x: 8.454011741682974, y: 2492.7884615384614 },\n { x: 9.393346379647749, y: 2469.951923076923 },\n { x: 10.743639921722114, y: 2465.3846153846152 },\n { x: 13.033268101761252, y: 2488.221153846154 },\n { x: 8.21917808219178, y: 2323.798076923077 },\n { x: 7.10371819960861, y: 2273.5576923076924 },\n { x: 6.2818003913894325, y: 2264.423076923077 },\n { x: 6.223091976516634, y: 2186.778846153846 },\n { x: 6.457925636007829, y: 2168.5096153846152 },\n { x: 8.101761252446183, y: 2145.673076923077 },\n { x: 10.567514677103718, y: 2232.4519230769233 },\n { x: 11.448140900195694, y: 2442.548076923077 },\n { x: 12.270058708414872, y: 2661.778846153846 },\n { x: 14.031311154598825, y: 2967.7884615384614 },\n { x: 15.73385518590998, y: 3282.9326923076924 },\n { x: 16.908023483365948, y: 3438.221153846154 },\n { x: 17.61252446183953, y: 3570.6730769230767 },\n { x: 13.50293542074364, y: 3328.605769230769 },\n { x: 11.97651663405088, y: 3155.0480769230767 },\n { x: 10.332681017612524, y: 2958.653846153846 },\n { x: 8.864970645792564, y: 2826.201923076923 },\n { x: 7.162426614481409, y: 2652.644230769231 },\n { x: 10.450097847358121, y: 2702.8846153846152 },\n { x: 13.033268101761252, y: 2903.846153846154 },\n { x: 18.610567514677104, y: 3342.3076923076924 },\n { x: 19.608610567514678, y: 3575.2403846153848 },\n { x: 20.19569471624266, y: 3652.8846153846152 },\n { x: 19.960861056751465, y: 3739.6634615384614 },\n { x: 22.015655577299416, y: 3693.9903846153848 },\n { x: 23.24853228962818, y: 3333.1730769230767 },\n { x: 21.07632093933464, y: 3191.586538461538 },\n { x: 19.726027397260275, y: 3109.375 },\n { x: 18.31702544031311, y: 3086.5384615384614 },\n { x: 15.499021526418783, y: 3013.461538461538 },\n { x: 15.264187866927593, y: 2684.6153846153848 },\n { x: 14.031311154598825, y: 2529.326923076923 },\n { x: 13.561643835616438, y: 2680.048076923077 },\n { x: 16.908023483365948, y: 2775.961538461538 },\n { x: 18.02348336594912, y: 2830.7692307692305 },\n { x: 22.89628180039139, y: 2817.0673076923076 },\n { x: 21.78082191780822, y: 2437.980769230769 },\n { x: 20.724070450097848, y: 2433.4134615384614 },\n { x: 16.908023483365948, y: 2433.4134615384614 },\n { x: 12.915851272015654, y: 2218.75 },\n { x: 11.62426614481409, y: 2223.3173076923076 },\n { x: 13.85518590998043, y: 2364.903846153846 },\n { x: 16.08610567514677, y: 2278.125 },\n { x: 17.260273972602743, y: 2310.096153846154 },\n { x: 18.7279843444227, y: 2406.0096153846152 },\n { x: 19.021526418786692, y: 2465.3846153846152 },\n { x: 18.610567514677104, y: 2575 },\n { x: 17.201565557729943, y: 2588.701923076923 },\n { x: 15.675146771037182, y: 2451.6826923076924 },\n { x: 15.264187866927593, y: 2424.278846153846 },\n { x: 15.557729941291585, y: 2620.673076923077 },\n { x: 18.140900195694716, y: 2725.721153846154 },\n { x: 18.6692759295499, y: 2739.423076923077 },\n { x: 20.900195694716242, y: 2625.2403846153848 },\n { x: 22.309197651663403, y: 2620.673076923077 },\n { x: 23.95303326810176, y: 2570.4326923076924 },\n { x: 25.303326810176124, y: 2538.4615384615386 },\n { x: 25.655577299412915, y: 2538.4615384615386 },\n { x: 25.00978473581213, y: 2652.644230769231 },\n { x: 24.77495107632094, y: 2890.1442307692305 },\n { x: 23.424657534246577, y: 2986.0576923076924 },\n { x: 21.545988258317024, y: 2903.846153846154 },\n { x: 21.135029354207433, y: 2785.096153846154 },\n { x: 20.313111545988257, y: 2849.0384615384614 },\n { x: 19.726027397260275, y: 2972.355769230769 },\n { x: 17.96477495107632, y: 2958.653846153846 },\n { x: 17.553816046966734, y: 2940.3846153846152 },\n { x: 15.557729941291585, y: 2821.6346153846152 },\n { x: 13.620352250489233, y: 2803.3653846153848 },\n { x: 13.50293542074364, y: 2862.7403846153848 },\n { x: 12.38747553816047, y: 3008.8942307692305 },\n { x: 16.731898238747554, y: 3132.211538461538 },\n { x: 19.080234833659492, y: 3465.625 },\n { x: 20.430528375733854, y: 3511.2980769230767 },\n { x: 21.898238747553815, y: 3561.5384615384614 },\n { x: 22.95499021526419, y: 3602.6442307692305 },\n { x: 23.424657534246577, y: 3648.3173076923076 },\n { x: 23.718199608610565, y: 3675.721153846154 },\n { x: 24.77495107632094, y: 3520.4326923076924 },\n { x: 22.544031311154598, y: 3433.6538461538457 },\n { x: 20.078277886497062, y: 3342.3076923076924 },\n { x: 22.95499021526419, y: 3241.826923076923 },\n { x: 24.246575342465754, y: 3187.0192307692305 },\n { x: 22.661448140900195, y: 3109.375 },\n { x: 21.545988258317024, y: 3063.7019230769233 },\n { x: 26.360078277886497, y: 3118.5096153846152 },\n { x: 26.53620352250489, y: 3301.201923076923 },\n { x: 25.655577299412915, y: 3387.980769230769 },\n { x: 24.89236790606654, y: 3429.086538461538 },\n { x: 24.070450097847356, y: 3502.1634615384614 },\n { x: 25.244618395303327, y: 3643.75 },\n { x: 22.837573385518592, y: 3721.3942307692305 },\n { x: 21.135029354207433, y: 3776.201923076923 },\n { x: 19.608610567514678, y: 3821.875 },\n { x: 18.8454011741683, y: 3643.75 },\n { x: 20.665362035225048, y: 3419.951923076923 },\n { x: 21.252446183953033, y: 3319.471153846154 },\n { x: 16.379647749510767, y: 2986.0576923076924 },\n { x: 16.84931506849315, y: 3031.730769230769 },\n { x: 14.677103718199607, y: 3072.836538461538 },\n { x: 12.152641878669275, y: 2807.9326923076924 },\n { x: 11.682974559686889, y: 2593.269230769231 },\n { x: 10.626223091976517, y: 2561.298076923077 },\n { x: 9.686888454011742, y: 2570.4326923076924 },\n { x: 8.63013698630137, y: 2716.586538461538 },\n { x: 11.62426614481409, y: 2332.9326923076924 },\n { x: 6.986301369863013, y: 2369.471153846154 },\n { x: 8.63013698630137, y: 2383.173076923077 },\n { x: 9.334637964774949, y: 2364.903846153846 },\n { x: 9.804305283757339, y: 2328.3653846153848 },\n { x: 9.393346379647749, y: 2287.2596153846152 },\n { x: 9.393346379647749, y: 2246.153846153846 },\n { x: 10.450097847358121, y: 2214.1826923076924 },\n { x: 12.093933463796477, y: 2182.2115384615386 },\n { x: 13.561643835616438, y: 2191.346153846154 },\n { x: 14.383561643835616, y: 2273.5576923076924 },\n { x: 15.264187866927593, y: 2314.6634615384614 },\n { x: 17.201565557729943, y: 2332.9326923076924 },\n { x: 18.7279843444227, y: 2319.2307692307695 },\n { x: 19.78473581213307, y: 2364.903846153846 },\n { x: 19.960861056751465, y: 2606.971153846154 },\n { x: 20.371819960861057, y: 2611.5384615384614 },\n { x: 20.900195694716242, y: 2712.0192307692305 },\n { x: 22.77886497064579, y: 2739.423076923077 },\n { x: 23.894324853228966, y: 2775.961538461538 },\n { x: 21.956947162426612, y: 2976.9230769230767 },\n { x: 18.02348336594912, y: 3209.855769230769 },\n { x: 21.66340508806262, y: 3310.336538461538 },\n { x: 21.36986301369863, y: 3260.096153846154 },\n { x: 22.07436399217221, y: 3205.2884615384614 },\n { x: 23.659491193737768, y: 3100.2403846153843 },\n { x: 25.479452054794518, y: 3205.2884615384614 },\n { x: 26.65362035225049, y: 3036.2980769230767 },\n { x: 25.538160469667318, y: 2995.1923076923076 },\n { x: 25.244618395303327, y: 2954.086538461538 },\n { x: 27.945205479452053, y: 3159.6153846153848 },\n { x: 27.651663405088062, y: 3081.971153846154 },\n { x: 27.651663405088062, y: 3264.6634615384614 },\n { x: 27.945205479452053, y: 3547.836538461538 },\n { x: 27.475538160469664, y: 3511.2980769230767 },\n { x: 28.356164383561644, y: 3456.4903846153848 },\n { x: 28.767123287671232, y: 3438.221153846154 },\n { x: 16.379647749510767, y: 3442.7884615384614 },\n { x: 15.499021526418783, y: 3374.2788461538457 },\n { x: 14.500978473581215, y: 3269.230769230769 },\n { x: 13.268101761252446, y: 3214.4230769230767 },\n { x: 15.968688845401173, y: 3141.346153846154 },\n { x: 15.381604696673193, y: 3200.721153846154 },\n { x: 15.029354207436398, y: 3104.8076923076924 },\n { x: 11.682974559686889, y: 2922.1153846153848 },\n { x: 10.626223091976517, y: 2894.711538461538 },\n { x: 9.628180039138943, y: 2839.903846153846 },\n { x: 9.686888454011742, y: 2762.2596153846152 },\n { x: 11.859099804305282, y: 2734.855769230769 },\n { x: 9.217221135029353, y: 2912.980769230769 },\n { x: 8.277886497064578, y: 2584.1346153846152 },\n { x: 11.272015655577299, y: 2661.778846153846 },\n { x: 14.324853228962818, y: 2780.528846153846 },\n { x: 15.616438356164382, y: 2762.2596153846152 },\n { x: 16.614481409001957, y: 2712.0192307692305 },\n { x: 17.436399217221137, y: 2675.480769230769 },\n { x: 13.79647749510763, y: 2602.403846153846 },\n { x: 16.320939334637963, y: 2538.4615384615386 },\n { x: 17.729941291585128, y: 2511.0576923076924 },\n { x: 14.442270058708415, y: 2465.3846153846152 },\n { x: 12.093933463796477, y: 2529.326923076923 },\n { x: 12.857142857142856, y: 2597.8365384615386 },\n { x: 12.563600782778865, y: 2419.7115384615386 },\n { x: 12.798434442270057, y: 2342.0673076923076 },\n { x: 13.79647749510763, y: 2296.394230769231 },\n { x: 13.033268101761252, y: 2282.6923076923076 },\n { x: 10.567514677103718, y: 2369.471153846154 },\n { x: 9.041095890410958, y: 2433.4134615384614 },\n { x: 7.749510763209393, y: 2442.548076923077 },\n { x: 8.688845401174168, y: 2648.076923076923 },\n { x: 7.690802348336595, y: 2730.2884615384614 },\n { x: 23.01369863013699, y: 2931.25 },\n { x: 29, y: 2931.25 },\n { x: 29, y: 2931.25 },\n { x: 29, y: 2931.25 },\n]\n\n// Create collection of rectangles which are going to be used as frame for clusters\nconst rects = chart.addRectangleSeries().setCursorEnabled(false)\n\n// Base style for strokes of frames. Line-FillStyle will be overridden per each cluster.\nconst strokeStyle = new SolidLine().setThickness(2)\n\n// Setup view nicely.\nchart.getDefaultAxisX().setInterval({ start: 0 * dataFrequency, end: 30 * dataFrequency, animate: true })\n\nchart.getDefaultAxisY().setTitle('Salary ($)').setInterval({ start: 1500, end: 6500, animate: true })\n/**\n * Adds clusters of points to specified series and creates frames for them\n * @param {PointSeries} series Series which should hold the cluster\n * @return Function which receives a cluster of points\n */\nconst drawCluster = (series, points) => {\n // Add points to specified series\n series.add(points.map((point) => ({ x: point.x * dataFrequency, y: point.y })))\n // Cache top left corner of cluster area\n series.setCursorResultTableFormatter((builder, series, Xvalue, Yvalue) => {\n return builder\n .addRow(`${series.getName()}`)\n .addRow('Date : ' + series.axisX.formatValue(Xvalue))\n .addRow('Salary : $' + Yvalue.toFixed(0))\n })\n const topLeftCorner = {\n x: series.getXMin(),\n y: series.getYMin(),\n }\n // Create frame around cluster\n rects\n .add({\n x: topLeftCorner.x,\n y: topLeftCorner.y,\n width: series.getXMax() - topLeftCorner.x,\n height: series.getYMax() - topLeftCorner.y,\n })\n // Disable filling of frame\n .setFillStyle(emptyFill)\n // Configure thickness and color of stroke via strokeStyle\n .setStrokeStyle(strokeStyle.setFillStyle(series.getPointFillStyle()))\n}\n\ndrawCluster(fstClusterSeries, kuopioPoints)\ndrawCluster(sndClusterSeries, helsinkiPoints)\n\n// Enable AutoCursor auto-fill.\nchart.setAutoCursor((cursor) =>\n cursor.setResultTableAutoTextStyle(true).setTickMarkerXAutoTextStyle(true).setTickMarkerYAutoTextStyle(true),\n)\n\n// Finally, add LegendBox to chart.\nchart\n .addLegendBox()\n .add(fstClusterSeries)\n .add(sndClusterSeries)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.3,\n })\n","url":null,"readme":"This example shows how to create clusters of differently colored points, how to get the boundaries of a series and use them to draw frames around each cluster.\n\nThe most efficient way to draw point cloud clusters is utilizing **_PointSeries_**. The description of how to configure the visual appearance of points can be found in previous tutorials and more information can be found in API documentation.\n\n```javascript\n// Create point series which represents a single cluster.\nconst cluster = chart.addPointSeries()\n```\n\n## Boundaries\n\nEach series automatically computes its boundaries based on the data input and configuration of a series. Get the boundaries in axis values using the following methods:\n\n```javascript\n// Cache min corner of a series (this would be bottom left on progressive axes).\nconst minCorner = {\n x: series.getXMin(),\n y: series.getYMin(),\n}\n\n// Cache max corner of a series (this would be top right on progressive axes).\nconst maxCorner = {\n x: series.getXMax(),\n y: series.getYMax(),\n}\n```\n\nThe boundary rectangle is defined by two points in 2D space. The same methods are applicable to all the series as well as **_progressive series_** in any directions.\n","image":"pointClusters"},{"id":"lcjs-example-0007-sharedAxis","title":"Shared Axis","tags":["spline","axis","xy","legendbox"],"description":"Shows how to combine multiple series in to one chart.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example that showcases sharing an Axis between two series.\n * Also, styling of chart zooming rectangle & axes.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst {\n lightningChart,\n ColorPalettes,\n ColorRGBA,\n SolidFill,\n SolidLine,\n emptyLine,\n AxisTickStrategies,\n LegendBoxBuilders,\n UIOrigins,\n Themes,\n} = lcjs\n\n// ----- Cache used styles -----\nconst palette = ColorPalettes.arction(10)\nconst colors = [6, 9, 0].map(palette)\nconst axisYColors = [colors[0], colors[1]]\nconst axisYStyles = axisYColors.map((color) => new SolidFill({ color }))\nconst axisYStrokeStyles = axisYStyles.map((fillStyle) => new SolidLine({ fillStyle, thickness: 2 }))\nconst axisYStylesHighlight = axisYStyles.map((fillStyle) => fillStyle.setA(100))\nconst axisXStyleHighlight = new SolidFill({ color: colors[2].setA(100) })\nconst seriesStrokeStyles = axisYStrokeStyles\nconst fittingRectangleStrokeStyle = new SolidLine({ fillStyle: new SolidFill({ color: ColorRGBA(255, 255, 255, 100) }), thickness: 2 })\nconst zoomingRectangleFillStyle = new SolidFill({ color: colors[2].setA(100) })\n\n// Decide on an origin for DateTime axis.\nconst dateOrigin = new Date(2018, 1, 5)\n// Create a XY Chart.\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setPadding({\n right: 50,\n })\n .setTitle('Unit production comparison')\n // Style chart zooming rectangle.\n .setFittingRectangleStrokeStyle(fittingRectangleStrokeStyle)\n .setZoomingRectangleFillStyle(zoomingRectangleFillStyle)\n\n// Cache reference to default axes and style them.\nconst axisX = chart\n .getDefaultAxisX()\n .setOverlayStyle(axisXStyleHighlight)\n .setNibOverlayStyle(axisXStyleHighlight)\n // Set the X Axis to use DateTime TickStrategy\n .setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\n\n// Style the default Y Axis.\nconst axisY1 = chart\n .getDefaultAxisY()\n .setStrokeStyle(axisYStrokeStyles[0])\n .setOverlayStyle(axisYStylesHighlight[0])\n .setNibOverlayStyle(axisYStylesHighlight[0])\n // Modify the TickStrategy to remove gridLines from this Y Axis.\n .setTickStrategy(\n // Use Numeric TickStrategy as base.\n AxisTickStrategies.Numeric,\n // Use mutator to modify the TickStrategy.\n (tickStrategy) =>\n tickStrategy\n // Modify Major Tick Style by using a mutator.\n .setMajorTickStyle((tickStyle) => tickStyle.setGridStrokeStyle(emptyLine))\n // Modify Minor Tick Style by using a mutator.\n .setMinorTickStyle((tickStyle) => tickStyle.setGridStrokeStyle(emptyLine)),\n )\n\n// Create additional styled Y axis on left side.\nconst axisY2 = chart\n .addAxisY(false)\n .setTitle('No of units produced')\n .setStrokeStyle(axisYStrokeStyles[1])\n .setOverlayStyle(axisYStylesHighlight[1])\n .setNibOverlayStyle(axisYStylesHighlight[1])\n // Modify the TickStrategy to remove gridLines from this Y Axis.\n .setTickStrategy(\n // Use Numeric TickStrategy as base.\n AxisTickStrategies.Numeric,\n // Use mutator to modify the TickStrategy.\n (tickStrategy) =>\n tickStrategy\n // Modify Major Tick Style by using a mutator.\n .setMajorTickStyle((tickStyle) => tickStyle.setGridStrokeStyle(emptyLine))\n // Modify Minor Tick Style by using a mutator.\n .setMinorTickStyle((tickStyle) => tickStyle.setGridStrokeStyle(emptyLine)),\n )\n\n// Create series with explicit axes.\nconst splineSeries1 = chart\n .addSplineSeries({\n xAxis: axisX,\n yAxis: axisY1,\n })\n .setName('TechComp')\n .setStrokeStyle(seriesStrokeStyles[0])\n .setPointFillStyle(() => seriesStrokeStyles[0].getFillStyle())\n\nconst splineSeries2 = chart\n .addSplineSeries({\n xAxis: axisX,\n yAxis: axisY2,\n })\n .setName('UniTek')\n .setStrokeStyle(seriesStrokeStyles[1])\n .setPointFillStyle(() => seriesStrokeStyles[1].getFillStyle())\n\nconst techcomp = [\n { x: 0, y: 352 },\n { x: 1, y: 352 },\n { x: 2, y: 352 },\n { x: 3, y: 358 },\n { x: 4, y: 400 },\n { x: 5, y: 400 },\n { x: 6, y: 400 },\n { x: 7, y: 400 },\n { x: 8, y: 426 },\n { x: 9, y: 390 },\n { x: 10, y: 390 },\n { x: 11, y: 390 },\n { x: 12, y: 390 },\n { x: 13, y: 360 },\n { x: 14, y: 360 },\n { x: 15, y: 360 },\n { x: 16, y: 500 },\n { x: 17, y: 500 },\n { x: 18, y: 500 },\n { x: 19, y: 600 },\n]\n\nconst unitek = [\n { x: 0, y: 235 },\n { x: 1, y: 235 },\n { x: 2, y: 335 },\n { x: 3, y: 335 },\n { x: 4, y: 490 },\n { x: 5, y: 490 },\n { x: 6, y: 490 },\n { x: 7, y: 492 },\n { x: 8, y: 550 },\n { x: 9, y: 550 },\n { x: 10, y: 600 },\n { x: 11, y: 600 },\n { x: 12, y: 900 },\n { x: 13, y: 900 },\n { x: 14, y: 900 },\n { x: 15, y: 850 },\n { x: 16, y: 1000 },\n { x: 17, y: 1200 },\n { x: 18, y: 1200 },\n { x: 19, y: 1300 },\n]\nconst dataFrequency = 1000 * 60 * 60 * 24\nsplineSeries1.add(techcomp.map((point) => ({ x: point.x * dataFrequency * 7, y: point.y })))\nsplineSeries2.add(unitek.map((point) => ({ x: point.x * dataFrequency * 7, y: point.y })))\n\n// Setup Y views manually (for some extra margins).\naxisY1.setInterval({ start: splineSeries1.getYMin() - 10, end: splineSeries1.getYMax() + 10, animate: true })\naxisY2.setInterval({ start: splineSeries2.getYMin() - 10, end: splineSeries2.getYMax() + 10, animate: true })\n\n// Enable AutoCursor auto-fill.\nchart.setAutoCursor((cursor) => {\n cursor.setResultTableAutoTextStyle(true).setTickMarkerXAutoTextStyle(true).setTickMarkerYAutoTextStyle(true)\n})\nconst legend = chart\n .addLegendBox(LegendBoxBuilders.HorizontalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.8,\n })\n\n// Add Chart to LegendBox\nlegend.add(chart)\n\nconst parser = (builder, series, Xvalue, Yvalue) => {\n return builder\n .addRow(series.getName())\n .addRow(axisX.formatValue(Xvalue))\n .addRow('Units: ' + Math.floor(Yvalue))\n}\nsplineSeries1.setCursorResultTableFormatter(parser)\nsplineSeries2.setCursorResultTableFormatter(parser)\n","url":null,"readme":"Best practice of data visualization within Data Analysis in different fields and industries is combining multiple series in one chart to examine and get richer insight about collected data. Moreover, it allows researchers to make conclusions about the researching phenomena out of each data set, to search patterns and relationships both within a collection and across collections\n\nThis example shows how to:\n\n- configure the axis styling;\n- create additional axes;\n- assign series to explicit axes;\n- styling of ChartXY zooming rectangle.\n\n## Request default axes.\n\nCartesian XY charts contains default X and Y axes by default. To request the default axes of a chart, you can simply use:\n\n```javascript\n// Cache reference to default X-axis for further usage.\nconst axisXDefault = chart.getDefaultAxisX()\n\n// Cache reference to default Y-axis for further usage.\nconst axisYDefault = chart.getDefaultAxisY()\n```\n\nDuring the creation of any XY series, you can attach series to default axes by not specifying the xAxis or yAxis options.\n\n## Create new axis and attach series.\n\n```javascript\n// Create additional X-axis\nconst axisYNew = chart.addAxisX()\n\n// Create additional Y-axis\nconst axisYNew = chart.addAxisY()\n```\n\nDuring the creation of any XY series, you can attach series to any axes via the cached references as the arguments.\n\n```javascript\n// Create series with explicit axes, share the same x-axis between two series.\nconst allSeries = [\n chart.addSplineSeries({\n xAxis: axisXDefault,\n yAxis: AxisYDefault\n }),\n chart.addSplineSeries({\n xAxis: axisXDefault,\n yAxis: axisYNew\n }),\n ...\n]\n```\n\n## Axis styling.\n\nBoth X and Y axes share the same flexible and fully customizable API, meaning the same setters and getters. The full list of methods of the class **_Axis_** you can find in LightningChart JS API reference.\n\n```javascript\n// Add additional styling for the axis.\naxis\n .setTitle( 'My axis' )\n // Configure axis line style.\n .setStrokeStyle( axisStrokeStyle )\n // Configure axis tick style by modifying the Axis TickStrategy.\n .setTickStrategy(\n // Use Numeric TickStrategy as Base.\n AxisTickStrategies.Numeric,\n // Use a mutator to modify the TickStrategy.\n ( tickStrategy ) => tickStrategy\n // Modify the Major Ticks for the TickStrategy.\n // Minor and Extreme TickStyles must be set separately.\n .setMajorTickStyle( visibleTicks => visibleTicks\n // Label fill Style.\n .setLabelFillStyle( axisLabelFillStyle )\n // Font.\n .setLabelFont( font => font\n // Configure the font.\n ...\n )\n // Grid stroke style\n .setGridStrokeStyle( gridStrokeStyle )\n )\n )\n // Configure axis overlay style (interactive axis area).\n .setOverlayStyle( axisFillStyleHighlight )\n // Configure axis nibs overlay style (interactive axis nibs area).\n .setNibOverlayStyle( axisFillStyleHighlight )\n```\n","image":"sharedAxis"},{"id":"lcjs-example-0008-lineSeriesMicroseconds","title":"JavaScript Microseconds Line Chart","tags":["xy","line","legendbox"],"description":"Example on how to deal with high-resolution data - for example, measurements in microseconds precision.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example that showcases an Axis interval that is depicted as microseconds.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, Themes } = lcjs\n\n// Create a XY Chart.\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setPadding({\n right: 50,\n })\n .setTitle('High resolution voltage measurement')\n\n// Create line series optimized for regular progressive X data.\nconst lineSeries = chart\n .addLineSeries({\n dataPattern: {\n // pattern: 'ProgressiveX' => Each consecutive data point has increased X coordinate.\n pattern: 'ProgressiveX',\n // regularProgressiveStep: true => The X step between each consecutive data point is regular (for example, always `1.0`).\n regularProgressiveStep: true,\n },\n })\n .setName('Voltage')\n\n// Axes can't properly scroll data with microseconds precision - define a factor to scale all X values with.\nconst dataScaleX = 1 * Math.pow(1000, 3) // 1 us\n\n// Style Axes.\nchart\n .getDefaultAxisX()\n .setTitle('Time')\n .setTickStrategy(AxisTickStrategies.Numeric, (strategy) =>\n strategy\n // Format ticks with units.\n .setFormattingFunction((timeScaled) => Math.round(timeScaled) + ' μs'),\n )\n\nchart\n .getDefaultAxisY()\n .setTitle('Voltage')\n .setTickStrategy(AxisTickStrategies.Numeric, (strategy) =>\n strategy\n // Format ticks with units.\n .setFormattingFunction((voltage) => voltage.toFixed(2) + ' V'),\n )\n\nconst renderData = (data) => {\n // Add data.\n lineSeries.add(data.map((p) => ({ x: p.x * dataScaleX, y: p.y })))\n}\n\n// Data where 'x' = time in seconds and 'y' = voltage (V).\nrenderData([\n { x: -0.0000020000000000000003, y: 0.027443997800008942 },\n { x: -0.0000019990000000000003, y: -0.011040000894077058 },\n { x: -0.000001998, y: 0.03220101591561531 },\n { x: -0.000001997, y: 0.0032277195700614984 },\n { x: -0.000001996, y: -0.016034820491464274 },\n { x: -0.000001995, y: -0.008368059183426731 },\n { x: -0.000001994, y: -0.02177862894781828 },\n { x: -0.000001993, y: 0.001636039091765307 },\n { x: -0.0000019919999999999997, y: -0.03158798144826885 },\n { x: -0.0000019909999999999997, y: -0.013230578513313334 },\n { x: -0.0000019899999999999996, y: -0.012694187571129261 },\n { x: -0.0000019889999999999995, y: -0.0027350699497441875 },\n { x: -0.0000019879999999999994, y: 0.03298847629763905 },\n { x: -0.0000019869999999999994, y: -0.03717782287193666 },\n { x: -0.0000019859999999999993, y: 0.028062788701891394 },\n { x: -0.000001984999999999999, y: -0.016266999601182712 },\n { x: -0.000001983999999999999, y: -0.008046589284136109 },\n { x: -0.000001982999999999999, y: -0.003740378143367308 },\n { x: -0.000001981999999999999, y: 0.019358216986926403 },\n { x: -0.000001980999999999999, y: 0.02805533324925918 },\n { x: -0.000001979999999999999, y: 0.031225670024134983 },\n { x: -0.0000019789999999999988, y: 0.020582142130848646 },\n { x: -0.0000019779999999999987, y: -0.007463655137510183 },\n { x: -0.0000019769999999999986, y: -0.012432948528416126 },\n { x: -0.0000019759999999999985, y: -0.008897767785342523 },\n { x: -0.0000019749999999999985, y: 0.009059768800837458 },\n { x: -0.0000019739999999999984, y: -0.01802759024130608 },\n { x: -0.0000019729999999999983, y: -0.02600377226442229 },\n { x: -0.0000019719999999999982, y: 0.028207624634314542 },\n { x: -0.000001970999999999998, y: -0.012739022918053046 },\n { x: -0.000001969999999999998, y: -0.029461215330813854 },\n { x: -0.000001968999999999998, y: 0.03805686913709322 },\n { x: -0.000001967999999999998, y: 0.00863873273448897 },\n { x: -0.000001966999999999998, y: -0.023022703625994633 },\n { x: -0.0000019659999999999978, y: -0.0373599679488816 },\n { x: -0.0000019649999999999977, y: -0.035682458658072 },\n { x: -0.0000019639999999999976, y: 0.01684443788295703 },\n { x: -0.0000019629999999999976, y: 0.0328927810844329 },\n { x: -0.0000019619999999999975, y: -0.007839367701313547 },\n { x: -0.0000019609999999999974, y: 0.010748498921052238 },\n { x: -0.0000019599999999999973, y: -0.014900326268457866 },\n { x: -0.0000019589999999999973, y: 0.03595859412516749 },\n { x: -0.000001957999999999997, y: -0.02923854638665586 },\n { x: -0.000001956999999999997, y: -0.02341062868016332 },\n { x: -0.000001955999999999997, y: 0.007523826280203083 },\n { x: -0.000001954999999999997, y: -0.003733821934002091 },\n { x: -0.000001953999999999997, y: -0.021005461742955544 },\n { x: -0.000001952999999999997, y: -0.03151378617897506 },\n { x: -0.0000019519999999999967, y: 0.02774790358861265 },\n { x: -0.0000019509999999999967, y: 0.03795208393331581 },\n { x: -0.0000019499999999999966, y: 0.026283318084466992 },\n { x: -0.0000019489999999999965, y: 0.0039971746651379 },\n { x: -0.0000019479999999999964, y: -0.010837607472969751 },\n { x: -0.0000019469999999999964, y: 0.0045505495440374515 },\n { x: -0.0000019459999999999963, y: 0.02760932266323016 },\n { x: -0.000001944999999999996, y: -0.012932797683883203 },\n { x: -0.000001943999999999996, y: 0.026313178254021314 },\n { x: -0.000001942999999999996, y: -0.006753080306960189 },\n { x: -0.000001941999999999996, y: -0.005829791514477386 },\n { x: -0.000001940999999999996, y: 0.030479168110012805 },\n { x: -0.000001939999999999996, y: 0.019178344607547356 },\n { x: -0.0000019389999999999958, y: 0.025456333122878295 },\n { x: -0.0000019379999999999957, y: 0.035631691174438956 },\n { x: -0.0000019369999999999956, y: 0.00859127099361588 },\n { x: -0.0000019359999999999955, y: 0.031193035102678842 },\n { x: -0.0000019349999999999954, y: -0.007024064866093383 },\n { x: -0.0000019339999999999954, y: -0.02066494292075876 },\n { x: -0.0000019329999999999953, y: 0.03336475598292969 },\n { x: -0.0000019319999999999952, y: -0.00035095400945603806 },\n { x: -0.000001930999999999995, y: -0.034745500954158105 },\n { x: -0.000001929999999999995, y: 0.005364859917507523 },\n { x: -0.000001928999999999995, y: -0.02445169288471954 },\n { x: -0.000001927999999999995, y: -0.02441816045956086 },\n { x: -0.000001926999999999995, y: 0.027959876909385544 },\n { x: -0.0000019259999999999948, y: -0.007642897144741695 },\n { x: -0.0000019249999999999947, y: 0.032599275065726394 },\n { x: -0.0000019239999999999946, y: 0.01897552794893236 },\n { x: -0.0000019229999999999945, y: -0.0363220820132121 },\n { x: -0.0000019219999999999945, y: 0.03505807770706757 },\n { x: -0.0000019209999999999944, y: 0.009264323825879552 },\n { x: -0.0000019199999999999943, y: -0.02143546262960617 },\n { x: -0.0000019189999999999942, y: 0.028527256171897965 },\n { x: -0.000001917999999999994, y: -0.0067127373419447805 },\n { x: -0.000001916999999999994, y: -0.020852541725547107 },\n { x: -0.000001915999999999994, y: -0.021657662150244002 },\n { x: -0.000001914999999999994, y: -0.03396864467141348 },\n { x: -0.000001913999999999994, y: 0.025170812430718562 },\n { x: -0.000001912999999999994, y: -0.034041062837669465 },\n { x: -0.0000019119999999999937, y: 0.02651841202431338 },\n { x: -0.0000019109999999999936, y: -0.006762134246684295 },\n { x: -0.0000019099999999999936, y: -0.03227858249048464 },\n { x: -0.0000019089999999999935, y: 0.010328213861666406 },\n { x: -0.0000019079999999999934, y: -0.035234975360768035 },\n { x: -0.0000019069999999999933, y: 0.008202285542611463 },\n { x: -0.0000019059999999999933, y: 0.03663418613211281 },\n { x: -0.0000019049999999999932, y: 0.028359697089407786 },\n { x: -0.0000019039999999999931, y: -0.0011449575670857686 },\n { x: -0.000001902999999999993, y: -0.03469593477268927 },\n { x: -0.000001901999999999993, y: -0.008822618293776422 },\n { x: -0.000001900999999999993, y: -0.015392005406952342 },\n { x: -0.0000018999999999999928, y: -0.04518360794385557 },\n { x: -0.0000018989999999999927, y: 0.02910126189319455 },\n { x: -0.0000018979999999999927, y: -0.01300708363967233 },\n { x: -0.0000018969999999999926, y: 0.03130258988661914 },\n { x: -0.0000018959999999999925, y: -0.014506761541320573 },\n { x: -0.0000018949999999999924, y: 0.03218783959641612 },\n { x: -0.0000018939999999999924, y: 0.029112212730334326 },\n { x: -0.0000018929999999999923, y: 0.017927598690127274 },\n { x: -0.0000018919999999999922, y: -0.004076533400195019 },\n { x: -0.0000018909999999999921, y: -0.021586538692518108 },\n { x: -0.000001889999999999992, y: 0.024316189169899333 },\n { x: -0.000001888999999999992, y: -0.0009595592660485554 },\n { x: -0.000001887999999999992, y: 0.022661409690115604 },\n { x: -0.0000018869999999999918, y: -0.008687166080617334 },\n { x: -0.0000018859999999999918, y: -0.023019856894362905 },\n { x: -0.0000018849999999999917, y: -0.036456061302591346 },\n { x: -0.0000018839999999999916, y: -0.029041951272953746 },\n { x: -0.0000018829999999999915, y: 0.00028304357792953736 },\n { x: -0.0000018819999999999915, y: -0.005840458277975979 },\n { x: -0.0000018809999999999914, y: -0.03132213845755484 },\n { x: -0.0000018799999999999913, y: -0.036268599852988324 },\n { x: -0.0000018789999999999912, y: 0.002205837610027757 },\n { x: -0.0000018779999999999912, y: 0.013031057600248145 },\n { x: -0.000001876999999999991, y: -0.03455574905322708 },\n { x: -0.000001875999999999991, y: -0.029743157999385265 },\n { x: -0.000001874999999999991, y: -0.010761312798439556 },\n { x: -0.0000018739999999999909, y: 0.013523124350955592 },\n { x: -0.0000018729999999999908, y: 0.03568361714025206 },\n { x: -0.0000018719999999999907, y: -0.016715409638851157 },\n { x: -0.0000018709999999999906, y: -0.00206357013860716 },\n { x: -0.0000018699999999999906, y: 0.03411670680972927 },\n { x: -0.0000018689999999999905, y: -0.02059153285669426 },\n { x: -0.0000018679999999999904, y: -0.03633104201502672 },\n { x: -0.0000018669999999999903, y: -0.006489791618759054 },\n { x: -0.0000018659999999999903, y: 0.01045866733469699 },\n { x: -0.0000018649999999999902, y: -0.0027697467676163503 },\n { x: -0.0000018639999999999901, y: -0.029697004907042607 },\n { x: -0.00000186299999999999, y: 0.005723695241045038 },\n { x: -0.00000186199999999999, y: -0.023432819432466293 },\n { x: -0.0000018609999999999899, y: 0.018208640624164177 },\n { x: -0.0000018599999999999898, y: 0.03397687566261656 },\n { x: -0.0000018589999999999897, y: 0.001044150533833599 },\n { x: -0.0000018579999999999897, y: 0.016601315132935505 },\n { x: -0.0000018569999999999896, y: 0.03443461371113354 },\n { x: -0.0000018559999999999895, y: 0.030551410069500705 },\n { x: -0.0000018549999999999894, y: 0.023762302714107127 },\n { x: -0.0000018539999999999894, y: 0.0013342846525567543 },\n { x: -0.0000018529999999999893, y: -0.0037704642983602326 },\n { x: -0.0000018519999999999892, y: 0.02075692057102816 },\n { x: -0.0000018509999999999891, y: 0.023435128809193326 },\n { x: -0.000001849999999999989, y: -0.016480263785375045 },\n { x: -0.000001848999999999989, y: 0.008988784831886632 },\n { x: -0.000001847999999999989, y: 0.02373799637260906 },\n { x: -0.0000018469999999999888, y: -0.029384486124532948 },\n { x: -0.0000018459999999999888, y: 0.035290195796315094 },\n { x: -0.0000018449999999999887, y: 0.0020322517599329587 },\n { x: -0.0000018439999999999886, y: 0.013459324289630826 },\n { x: -0.0000018429999999999885, y: -0.03349981225685477 },\n { x: -0.0000018419999999999885, y: 0.0004503222444585232 },\n { x: -0.0000018409999999999884, y: -0.025282688802514657 },\n { x: -0.0000018399999999999883, y: -0.008140477762443664 },\n { x: -0.0000018389999999999882, y: 0.038161874411562505 },\n { x: -0.0000018379999999999882, y: -0.009017410538765064 },\n { x: -0.000001836999999999988, y: 0.00739591383229465 },\n { x: -0.000001835999999999988, y: 0.020793198627238142 },\n { x: -0.000001834999999999988, y: 0.03600691188395843 },\n { x: -0.0000018339999999999879, y: -0.014613405824333863 },\n { x: -0.0000018329999999999878, y: -0.03556249668928594 },\n { x: -0.0000018319999999999877, y: -0.006977721579423031 },\n { x: -0.0000018309999999999876, y: 0.00218877764318305 },\n { x: -0.0000018299999999999876, y: 0.03145750642434614 },\n { x: -0.0000018289999999999875, y: 0.025384659279849106 },\n { x: -0.0000018279999999999874, y: -0.001949637967593855 },\n { x: -0.0000018269999999999873, y: -0.017396974557809246 },\n { x: -0.0000018259999999999873, y: 0.032611469706830126 },\n { x: -0.0000018249999999999872, y: -0.002817649514673136 },\n { x: -0.0000018239999999999871, y: 0.027260544960630944 },\n { x: -0.000001822999999999987, y: 0.00033326240856916046 },\n { x: -0.000001821999999999987, y: 0.03486195512822336 },\n { x: -0.0000018209999999999869, y: 0.03690884703117051 },\n { x: -0.0000018199999999999868, y: 0.03489597947977195 },\n { x: -0.0000018189999999999867, y: -0.030348952949814937 },\n { x: -0.0000018179999999999867, y: 0.026688499136513034 },\n { x: -0.0000018169999999999866, y: 0.006863276108334038 },\n { x: -0.0000018159999999999865, y: -0.026016793825958878 },\n { x: -0.0000018149999999999864, y: 0.014008012573715482 },\n { x: -0.0000018139999999999864, y: 0.009940815646185914 },\n { x: -0.0000018129999999999863, y: -0.037945867585199876 },\n { x: -0.0000018119999999999862, y: -0.001443902586843467 },\n { x: -0.0000018109999999999861, y: 0.01991400228379446 },\n { x: -0.000001809999999999986, y: 0.01020360634032546 },\n { x: -0.000001808999999999986, y: 0.027383171571702034 },\n { x: -0.000001807999999999986, y: -0.011592117108027615 },\n { x: -0.0000018069999999999858, y: 0.03810667828556246 },\n { x: -0.0000018059999999999858, y: 0.009892743158172968 },\n { x: -0.0000018049999999999857, y: 0.02332286861861942 },\n { x: -0.0000018039999999999856, y: -0.029160930928847445 },\n { x: -0.0000018029999999999855, y: 0.03083595102606925 },\n { x: -0.0000018019999999999855, y: 0.03185933705766087 },\n { x: -0.0000018009999999999854, y: -0.016322833672328733 },\n { x: -0.0000017999999999999853, y: -0.037541498780036035 },\n { x: -0.0000017989999999999852, y: 0.03756493189487169 },\n { x: -0.0000017979999999999852, y: 0.00855067935575207 },\n { x: -0.000001796999999999985, y: 0.01762873682077035 },\n { x: -0.000001795999999999985, y: -0.031271530406916194 },\n { x: -0.000001794999999999985, y: -0.007511235404087135 },\n { x: -0.0000017939999999999849, y: 0.008675065759418225 },\n { x: -0.0000017929999999999848, y: 0.003963060404253502 },\n { x: -0.0000017919999999999847, y: 0.00029004691820512697 },\n { x: -0.0000017909999999999846, y: -0.0062925581838445335 },\n { x: -0.0000017899999999999846, y: -0.019073943132143625 },\n { x: -0.0000017889999999999845, y: 0.021782356217131624 },\n { x: -0.0000017879999999999844, y: 0.014551121055763026 },\n { x: -0.0000017869999999999843, y: -0.0037712770378505334 },\n { x: -0.0000017859999999999843, y: 0.003196404071630132 },\n { x: -0.0000017849999999999842, y: 0.004097601482372611 },\n { x: -0.000001783999999999984, y: -0.02760739005761792 },\n { x: -0.000001782999999999984, y: 0.02346455705246093 },\n { x: -0.000001781999999999984, y: 0.028157954639258607 },\n { x: -0.0000017809999999999839, y: -0.0281663646584906 },\n { x: -0.0000017799999999999838, y: -0.020050321492854864 },\n { x: -0.0000017789999999999837, y: -0.03450758648650922 },\n { x: -0.0000017779999999999837, y: -0.004711109700737442 },\n { x: -0.0000017769999999999836, y: -0.02153624154001886 },\n { x: -0.0000017759999999999835, y: 0.0024897326824874764 },\n { x: -0.0000017749999999999834, y: -0.02929082189178312 },\n { x: -0.0000017739999999999834, y: -0.021160404534973545 },\n { x: -0.0000017729999999999833, y: 0.002926598875496956 },\n { x: -0.0000017719999999999832, y: 0.02210674047685129 },\n { x: -0.0000017709999999999831, y: -0.026253693966361482 },\n { x: -0.000001769999999999983, y: 0.05359998036268774 },\n { x: -0.000001768999999999983, y: 0.03806738529198046 },\n { x: -0.000001767999999999983, y: 0.026994016056222522 },\n { x: -0.0000017669999999999828, y: 0.02625644997491527 },\n { x: -0.0000017659999999999828, y: 0.01665819435009591 },\n { x: -0.0000017649999999999827, y: 0.023990832366654127 },\n { x: -0.0000017639999999999826, y: 0.03265737148275018 },\n { x: -0.0000017629999999999825, y: -0.018629533687752838 },\n { x: -0.0000017619999999999825, y: -0.019302626236293367 },\n { x: -0.0000017609999999999824, y: 0.02876098449524871 },\n { x: -0.0000017599999999999823, y: 0.02063751975883102 },\n { x: -0.0000017589999999999822, y: 0.003113301195771266 },\n { x: -0.0000017579999999999822, y: 0.024922292320332523 },\n { x: -0.000001756999999999982, y: -0.0025514888923617663 },\n { x: -0.000001755999999999982, y: -0.028108413760713165 },\n { x: -0.000001754999999999982, y: 0.03770333639507348 },\n { x: -0.0000017539999999999819, y: -0.03317018103662581 },\n { x: -0.0000017529999999999818, y: 0.02577908324360529 },\n { x: -0.0000017519999999999817, y: -0.004217730571231011 },\n { x: -0.0000017509999999999816, y: -0.010211916917125268 },\n { x: -0.0000017499999999999816, y: 0.0002387325693502609 },\n { x: -0.0000017489999999999815, y: 0.01730955555392116 },\n { x: -0.0000017479999999999814, y: -0.003231023023180327 },\n { x: -0.0000017469999999999813, y: 0.015104797909205239 },\n { x: -0.0000017459999999999813, y: -0.01581055133778467 },\n { x: -0.0000017449999999999812, y: -0.014337983194033614 },\n { x: -0.000001743999999999981, y: -0.03189010354523514 },\n { x: -0.000001742999999999981, y: -0.005811701639256257 },\n { x: -0.000001741999999999981, y: 0.02131138341707936 },\n { x: -0.0000017409999999999809, y: 0.033494505712979725 },\n { x: -0.0000017399999999999808, y: -0.011268725478945517 },\n { x: -0.0000017389999999999807, y: -0.00732929990942941 },\n { x: -0.0000017379999999999806, y: 0.0208494277293929 },\n { x: -0.0000017369999999999806, y: -0.004183691156097971 },\n { x: -0.0000017359999999999805, y: 0.002863262513397182 },\n { x: -0.0000017349999999999804, y: 0.011653655449059285 },\n { x: -0.0000017339999999999803, y: 0.004248393677670983 },\n { x: -0.0000017329999999999803, y: 0.03482355223939272 },\n { x: -0.0000017319999999999802, y: -0.03701881013794184 },\n { x: -0.0000017309999999999801, y: -0.004771932178194324 },\n { x: -0.00000172999999999998, y: 0.005817386986338741 },\n { x: -0.00000172899999999998, y: 0.014114083473255634 },\n { x: -0.00000172799999999998, y: -0.005084168187920563 },\n { x: -0.0000017269999999999798, y: -0.028948148966163323 },\n { x: -0.0000017259999999999797, y: 0.026854936956580734 },\n { x: -0.0000017249999999999797, y: -0.014406758716746666 },\n { x: -0.0000017239999999999796, y: 0.0014100396411234517 },\n { x: -0.0000017229999999999795, y: -0.0242366217939274 },\n { x: -0.0000017219999999999794, y: -0.021505584137149807 },\n { x: -0.0000017209999999999794, y: -0.0015774938453259181 },\n { x: -0.0000017199999999999793, y: -0.011577040773153862 },\n { x: -0.0000017189999999999792, y: -0.01651527046796279 },\n { x: -0.0000017179999999999791, y: 0.01351805827157814 },\n { x: -0.000001716999999999979, y: -0.02532953126946272 },\n { x: -0.000001715999999999979, y: -0.00785046991469629 },\n { x: -0.000001714999999999979, y: 0.024158535288603317 },\n { x: -0.0000017139999999999788, y: 0.02136620501046216 },\n { x: -0.0000017129999999999788, y: -0.030617441000178443 },\n { x: -0.0000017119999999999787, y: -0.010374656275300837 },\n { x: -0.0000017109999999999786, y: 0.03092700293256923 },\n { x: -0.0000017099999999999785, y: -0.018237460571863425 },\n { x: -0.0000017089999999999785, y: 0.017185053715860495 },\n { x: -0.0000017079999999999784, y: -0.013665421833832443 },\n { x: -0.0000017069999999999783, y: 0.007695845787504048 },\n { x: -0.0000017059999999999782, y: -0.01826986965854103 },\n { x: -0.0000017049999999999782, y: -0.03568570786873319 },\n { x: -0.000001703999999999978, y: 0.017205170628042856 },\n { x: -0.000001702999999999978, y: -0.02766296350511127 },\n { x: -0.000001701999999999978, y: 0.006249663368645423 },\n { x: -0.0000017009999999999779, y: 0.026237862328107483 },\n { x: -0.0000016999999999999778, y: -0.0006922538726388271 },\n { x: -0.0000016989999999999777, y: -0.01157977691779717 },\n { x: -0.0000016979999999999776, y: -0.006116621163963813 },\n { x: -0.0000016969999999999776, y: -0.01826167999463326 },\n { x: -0.0000016959999999999775, y: -0.0202664714611218 },\n { x: -0.0000016949999999999774, y: 0.019580936889153466 },\n { x: -0.0000016939999999999773, y: 0.036516020922498144 },\n { x: -0.0000016929999999999773, y: 0.006726740477367732 },\n { x: -0.0000016919999999999772, y: 0.037557247726196515 },\n { x: -0.0000016909999999999771, y: 0.002067814002438272 },\n { x: -0.000001689999999999977, y: 0.037599406847097165 },\n { x: -0.000001688999999999977, y: -0.0017070734718797657 },\n { x: -0.0000016879999999999769, y: -0.023570591476728377 },\n { x: -0.0000016869999999999768, y: -0.0077551906537367205 },\n { x: -0.0000016859999999999767, y: -0.029287936482090843 },\n { x: -0.0000016849999999999767, y: 0.006663992282813844 },\n { x: -0.0000016839999999999766, y: -0.005548332476572741 },\n { x: -0.0000016829999999999765, y: -0.023951053384545097 },\n { x: -0.0000016819999999999764, y: -0.03291321066508165 },\n { x: -0.0000016809999999999764, y: -0.019960586070344042 },\n { x: -0.0000016799999999999763, y: -0.007054054584606562 },\n { x: -0.0000016789999999999762, y: 0.0028747173734658613 },\n { x: -0.0000016779999999999761, y: -0.00045323748266656204 },\n { x: -0.000001676999999999976, y: 0.02470966737147559 },\n { x: -0.000001675999999999976, y: 0.02555662047756956 },\n { x: -0.000001674999999999976, y: 0.001403952338910754 },\n { x: -0.0000016739999999999758, y: 0.010690444473446312 },\n { x: -0.0000016729999999999758, y: -0.03754330222745358 },\n { x: -0.0000016719999999999757, y: 0.024041042260192626 },\n { x: -0.0000016709999999999756, y: 0.01822540019455112 },\n { x: -0.0000016699999999999755, y: -0.0353528108635974 },\n { x: -0.0000016689999999999755, y: 0.022709725473962775 },\n { x: -0.0000016679999999999754, y: 0.013263211725082578 },\n { x: -0.0000016669999999999753, y: -0.036001865944095844 },\n { x: -0.0000016659999999999752, y: -0.021589626479641633 },\n { x: -0.0000016649999999999752, y: -0.0009457269156792226 },\n { x: -0.000001663999999999975, y: -0.03526730551618745 },\n { x: -0.000001662999999999975, y: -0.031139949355087664 },\n { x: -0.000001661999999999975, y: 0.004528737376877672 },\n { x: -0.0000016609999999999749, y: -0.03827465514571537 },\n { x: -0.0000016599999999999748, y: -0.02503998889103173 },\n { x: -0.0000016589999999999747, y: -0.010169102639365898 },\n { x: -0.0000016579999999999746, y: -0.01001446525404002 },\n { x: -0.0000016569999999999746, y: 0.016680736485168293 },\n { x: -0.0000016559999999999745, y: -0.013732467310046926 },\n { x: -0.0000016549999999999744, y: -0.017721649992474872 },\n { x: -0.0000016539999999999743, y: -0.0019302643202449875 },\n { x: -0.0000016529999999999743, y: -0.0081300397611309 },\n { x: -0.0000016519999999999742, y: 0.011309441104275324 },\n { x: -0.0000016509999999999741, y: -0.0069967222102437845 },\n { x: -0.000001649999999999974, y: 0.027687391042178315 },\n { x: -0.000001648999999999974, y: 0.038273352069532154 },\n { x: -0.0000016479999999999739, y: -0.02129943201691494 },\n { x: -0.0000016469999999999738, y: 0.02732918341023124 },\n { x: -0.0000016459999999999737, y: 0.03498099852687302 },\n { x: -0.0000016449999999999737, y: 0.032307917109769727 },\n { x: -0.0000016439999999999736, y: 0.005823496283235522 },\n { x: -0.0000016429999999999735, y: 0.010325729735277123 },\n { x: -0.0000016419999999999734, y: -0.017081451782887343 },\n { x: -0.0000016409999999999734, y: -0.016511195560129546 },\n { x: -0.0000016399999999999733, y: 0.028076988497025952 },\n { x: -0.0000016389999999999732, y: 0.025124124947821923 },\n { x: -0.0000016379999999999731, y: 0.003913201123204757 },\n { x: -0.000001636999999999973, y: 0.016040005116074802 },\n { x: -0.000001635999999999973, y: -0.0058825529035995035 },\n { x: -0.000001634999999999973, y: 0.027711083464403975 },\n { x: -0.0000016339999999999728, y: -0.03637297933871895 },\n { x: -0.0000016329999999999728, y: 0.02417521122398841 },\n { x: -0.0000016319999999999727, y: -0.025972328826643874 },\n { x: -0.0000016309999999999726, y: 0.026150542055262474 },\n { x: -0.0000016299999999999725, y: 0.010180716162685193 },\n { x: -0.0000016289999999999725, y: -0.03420629545303245 },\n { x: -0.0000016279999999999724, y: 0.009302769603414154 },\n { x: -0.0000016269999999999723, y: -0.03513708423837472 },\n { x: -0.0000016259999999999722, y: 0.001002193988481779 },\n { x: -0.0000016249999999999722, y: -0.02176335991314274 },\n { x: -0.000001623999999999972, y: -0.007806508307155519 },\n { x: -0.000001622999999999972, y: -0.030911213821737196 },\n { x: -0.000001621999999999972, y: -0.027088600574083705 },\n { x: -0.0000016209999999999719, y: 0.03267522902742575 },\n { x: -0.0000016199999999999718, y: -0.0011230303124528781 },\n { x: -0.0000016189999999999717, y: 0.02264220548172921 },\n { x: -0.0000016179999999999716, y: 0.019222764186777923 },\n { x: -0.0000016169999999999716, y: 0.014582739267587812 },\n { x: -0.0000016159999999999715, y: 0.023712052179536054 },\n { x: -0.0000016149999999999714, y: 0.03793832988011892 },\n { x: -0.0000016139999999999713, y: 0.029776525394076048 },\n { x: -0.0000016129999999999713, y: -0.02656036550095476 },\n { x: -0.0000016119999999999712, y: -0.03710389085820699 },\n { x: -0.0000016109999999999711, y: 0.003956991603219941 },\n { x: -0.000001609999999999971, y: -0.015159294164777766 },\n { x: -0.000001608999999999971, y: 0.02878750291330663 },\n { x: -0.0000016079999999999709, y: 0.0306487879720793 },\n { x: -0.0000016069999999999708, y: 0.006111693429665233 },\n { x: -0.0000016059999999999707, y: -0.018419938506552807 },\n { x: -0.0000016049999999999707, y: 0.022337135627419805 },\n { x: -0.0000016039999999999706, y: 0.0038467144798397346 },\n { x: -0.0000016029999999999705, y: 0.02397815606698168 },\n { x: -0.0000016019999999999704, y: -0.018691207063099256 },\n { x: -0.0000016009999999999704, y: -0.004247287342880034 },\n { x: -0.0000015999999999999703, y: -0.013588836507485508 },\n { x: -0.0000015989999999999702, y: -0.02234393890864792 },\n { x: -0.0000015979999999999701, y: 0.02763686603284322 },\n { x: -0.00000159699999999997, y: 0.01830383168190865 },\n { x: -0.00000159599999999997, y: 0.030411638585228492 },\n { x: -0.00000159499999999997, y: 0.028976314214250697 },\n { x: -0.0000015939999999999698, y: 0.032471366429675075 },\n { x: -0.0000015929999999999698, y: 0.005275984619956652 },\n { x: -0.0000015919999999999697, y: 0.01202838566774187 },\n { x: -0.0000015909999999999696, y: -0.030463302243678353 },\n { x: -0.0000015899999999999695, y: -0.027903637871968798 },\n { x: -0.0000015889999999999695, y: -0.01564286546158084 },\n { x: -0.0000015879999999999694, y: -0.026594371449461626 },\n { x: -0.0000015869999999999693, y: -0.004368804744709417 },\n { x: -0.0000015859999999999692, y: -0.029326479185961565 },\n { x: -0.0000015849999999999692, y: -0.03692357810548272 },\n { x: -0.000001583999999999969, y: -0.009035109854370968 },\n { x: -0.000001582999999999969, y: 0.027295175150539256 },\n { x: -0.000001581999999999969, y: -0.016117249239187812 },\n { x: -0.0000015809999999999689, y: -0.024946630431160816 },\n { x: -0.0000015799999999999688, y: -0.022865028495272093 },\n { x: -0.0000015789999999999687, y: 0.028965465589157326 },\n { x: -0.0000015779999999999686, y: -0.004570467627980707 },\n { x: -0.0000015769999999999686, y: 0.03629402789384118 },\n { x: -0.0000015759999999999685, y: 0.01682744387323598 },\n { x: -0.0000015749999999999684, y: 0.007814712769640611 },\n { x: -0.0000015739999999999683, y: 0.0019249147715995946 },\n { x: -0.0000015729999999999683, y: -0.021704365266979865 },\n { x: -0.0000015719999999999682, y: -0.023673888940024205 },\n { x: -0.000001570999999999968, y: -0.004677381551044262 },\n { x: -0.000001569999999999968, y: -0.006068617237826557 },\n { x: -0.000001568999999999968, y: -0.017918076789667885 },\n { x: -0.0000015679999999999679, y: 0.026551550390859543 },\n { x: -0.0000015669999999999678, y: 0.014500599778608384 },\n { x: -0.0000015659999999999677, y: -0.03642499249327356 },\n { x: -0.0000015649999999999677, y: -0.0037760651011045864 },\n { x: -0.0000015639999999999676, y: 0.023517454573185794 },\n { x: -0.0000015629999999999675, y: 0.016814922373429277 },\n { x: -0.0000015619999999999674, y: -0.014137761182278887 },\n { x: -0.0000015609999999999674, y: -0.01732752047890942 },\n { x: -0.0000015599999999999673, y: 0.03369900701162833 },\n { x: -0.0000015589999999999672, y: 0.025786809907088922 },\n { x: -0.0000015579999999999671, y: 0.03494285565327627 },\n { x: -0.000001556999999999967, y: -0.020796040081896092 },\n { x: -0.000001555999999999967, y: -0.0358237436655389 },\n { x: -0.000001554999999999967, y: -0.022319507433199957 },\n { x: -0.0000015539999999999668, y: 0.004650034718501579 },\n { x: -0.0000015529999999999668, y: -0.007666410808605413 },\n { x: -0.0000015519999999999667, y: 0.009137852540213638 },\n { x: -0.0000015509999999999666, y: -0.010767696400769713 },\n { x: -0.0000015499999999999665, y: -0.005587811745368615 },\n { x: -0.0000015489999999999664, y: 0.008415642214975446 },\n { x: -0.0000015479999999999664, y: -0.01081446284084006 },\n { x: -0.0000015469999999999663, y: 0.015314461815086179 },\n { x: -0.0000015459999999999662, y: 0.008450995041305025 },\n { x: -0.0000015449999999999661, y: 0.004444324412883591 },\n { x: -0.000001543999999999966, y: -0.018955883210844692 },\n { x: -0.000001542999999999966, y: 0.037255692656265195 },\n { x: -0.000001541999999999966, y: 0.03688475931060501 },\n { x: -0.0000015409999999999658, y: 0.050730434673620324 },\n { x: -0.0000015399999999999658, y: -0.01758099399889343 },\n { x: -0.0000015389999999999657, y: 0.001879036494873778 },\n { x: -0.0000015379999999999656, y: 0.025673340786925784 },\n { x: -0.0000015369999999999655, y: -0.007330310913538365 },\n { x: -0.0000015359999999999655, y: 0.022629615096798922 },\n { x: -0.0000015349999999999654, y: 0.015213991925625812 },\n { x: -0.0000015339999999999653, y: -0.009524043428847741 },\n { x: -0.0000015329999999999652, y: 0.02007465671903068 },\n { x: -0.0000015319999999999652, y: 0.004227700939355161 },\n { x: -0.000001530999999999965, y: -0.004024839587506067 },\n { x: -0.000001529999999999965, y: 0.01047966241120587 },\n { x: -0.000001528999999999965, y: -0.030366590788430216 },\n { x: -0.0000015279999999999649, y: -0.008926299594305263 },\n { x: -0.0000015269999999999648, y: -0.020224092451015124 },\n { x: -0.0000015259999999999647, y: 0.006585604801753251 },\n { x: -0.0000015249999999999646, y: 0.010846671749648913 },\n { x: -0.0000015239999999999646, y: 0.016093650543890038 },\n { x: -0.0000015229999999999645, y: 0.0018563985150977886 },\n { x: -0.0000015219999999999644, y: 0.033758821423495164 },\n { x: -0.0000015209999999999643, y: -0.003168435574904403 },\n { x: -0.0000015199999999999643, y: -0.01132088989622624 },\n { x: -0.0000015189999999999642, y: 0.0007549758022283582 },\n { x: -0.0000015179999999999641, y: -0.030825787058457187 },\n { x: -0.000001516999999999964, y: -0.006838645511243576 },\n { x: -0.000001515999999999964, y: 0.02906803026576124 },\n { x: -0.000001514999999999964, y: 0.02742744909956504 },\n { x: -0.0000015139999999999638, y: 0.00665307937926437 },\n { x: -0.0000015129999999999637, y: 0.03316412891553206 },\n { x: -0.0000015119999999999637, y: 0.017803996184510625 },\n { x: -0.0000015109999999999636, y: -0.06589171996638397 },\n { x: -0.0000015099999999999635, y: -0.027603144614221763 },\n { x: -0.0000015089999999999634, y: 0.019489043192729257 },\n { x: -0.0000015079999999999634, y: -0.015630527648990342 },\n { x: -0.0000015069999999999633, y: 0.016025860611987738 },\n { x: -0.0000015059999999999632, y: -0.025830766306315766 },\n { x: -0.0000015049999999999631, y: 0.02135637176769207 },\n { x: -0.000001503999999999963, y: 0.005467210366994031 },\n { x: -0.000001502999999999963, y: 0.02870958963462975 },\n { x: -0.000001501999999999963, y: 0.0197343222335618 },\n { x: -0.0000015009999999999628, y: 0.0215108445606027 },\n { x: -0.0000014999999999999628, y: -0.024554000625190378 },\n { x: -0.0000014989999999999627, y: 0.009766405377519948 },\n { x: -0.0000014979999999999626, y: 0.016604303734639708 },\n { x: -0.0000014969999999999625, y: 0.02614364488390815 },\n { x: -0.0000014959999999999625, y: 0.026593595972571396 },\n { x: -0.0000014949999999999624, y: -0.02508773158101463 },\n { x: -0.0000014939999999999623, y: 0.0004217851630237949 },\n { x: -0.0000014929999999999622, y: 0.00038824184760433394 },\n { x: -0.0000014919999999999622, y: 0.036018010076732346 },\n { x: -0.000001490999999999962, y: -0.001845705278515307 },\n { x: -0.000001489999999999962, y: 0.014418936547289547 },\n { x: -0.000001488999999999962, y: -0.006413652163800691 },\n { x: -0.0000014879999999999619, y: 0.013614132507233676 },\n { x: -0.0000014869999999999618, y: 0.022888423992930774 },\n { x: -0.0000014859999999999617, y: 0.02630156526696778 },\n { x: -0.0000014849999999999616, y: -0.014683265916556519 },\n { x: -0.0000014839999999999616, y: 0.0172981856994561 },\n { x: -0.0000014829999999999615, y: -0.03130213155004245 },\n { x: -0.0000014819999999999614, y: -0.025848845474759317 },\n { x: -0.0000014809999999999613, y: -0.02689770555208866 },\n { x: -0.0000014799999999999613, y: -0.03250423235521302 },\n { x: -0.0000014789999999999612, y: -0.02961638681474093 },\n { x: -0.0000014779999999999611, y: 0.0035325217924576874 },\n { x: -0.000001476999999999961, y: -0.013338067664116765 },\n { x: -0.000001475999999999961, y: 0.014103781002583669 },\n { x: -0.0000014749999999999609, y: 0.028160161100842664 },\n { x: -0.0000014739999999999608, y: -0.02072358885035968 },\n { x: -0.0000014729999999999607, y: -0.012258872740382778 },\n { x: -0.0000014719999999999607, y: 0.014327771077939696 },\n { x: -0.0000014709999999999606, y: -0.027036068482999054 },\n { x: -0.0000014699999999999605, y: 0.0009617176485291096 },\n { x: -0.0000014689999999999604, y: -0.023944562341732315 },\n { x: -0.0000014679999999999604, y: 0.03647736441639213 },\n { x: -0.0000014669999999999603, y: -0.014188368551879518 },\n { x: -0.0000014659999999999602, y: -0.03425407275374076 },\n { x: -0.0000014649999999999601, y: 0.025517563902703894 },\n { x: -0.00000146399999999996, y: -0.0190038712386199 },\n { x: -0.00000146299999999996, y: -0.024506638363246853 },\n { x: -0.00000146199999999996, y: 0.017470478791539557 },\n { x: -0.0000014609999999999598, y: -0.006897958537798765 },\n { x: -0.0000014599999999999598, y: -0.01669165739633163 },\n { x: -0.0000014589999999999597, y: 0.027771923211038208 },\n { x: -0.0000014579999999999596, y: -0.020640591294015694 },\n { x: -0.0000014569999999999595, y: -0.03354556150560368 },\n { x: -0.0000014559999999999595, y: -0.008066856315532563 },\n { x: -0.0000014549999999999594, y: -0.011634281946335177 },\n { x: -0.0000014539999999999593, y: -0.016139012079545993 },\n { x: -0.0000014529999999999592, y: 0.02079255450068453 },\n { x: -0.0000014519999999999592, y: -0.03102102969393635 },\n { x: -0.000001450999999999959, y: 0.03298856541824959 },\n { x: -0.000001449999999999959, y: -0.033427019696285185 },\n { x: -0.000001448999999999959, y: 0.00873626851594936 },\n { x: -0.0000014479999999999589, y: 0.02217444921260821 },\n { x: -0.0000014469999999999588, y: -0.004222592004454241 },\n { x: -0.0000014459999999999587, y: 0.03730086149836957 },\n { x: -0.0000014449999999999586, y: 0.027257368075554504 },\n { x: -0.0000014439999999999586, y: -0.021994380891192402 },\n { x: -0.0000014429999999999585, y: -0.03126856116532146 },\n { x: -0.0000014419999999999584, y: 0.02099266098659368 },\n { x: -0.0000014409999999999583, y: 0.025370337615773637 },\n { x: -0.0000014399999999999583, y: 0.016631860054068946 },\n { x: -0.0000014389999999999582, y: 0.006766847350362779 },\n { x: -0.0000014379999999999581, y: -0.02368053448071696 },\n { x: -0.000001436999999999958, y: -0.017758267849415872 },\n { x: -0.000001435999999999958, y: -0.019362471611339353 },\n { x: -0.0000014349999999999579, y: -0.0048261114143355755 },\n { x: -0.0000014339999999999578, y: -0.02102853079381428 },\n { x: -0.0000014329999999999577, y: 0.008041901856350753 },\n { x: -0.0000014319999999999577, y: -0.024787299935330426 },\n { x: -0.0000014309999999999576, y: -0.02423241432973991 },\n { x: -0.0000014299999999999575, y: 0.023303220028534934 },\n { x: -0.0000014289999999999574, y: 0.037840472733514756 },\n { x: -0.0000014279999999999574, y: -0.007968713344726411 },\n { x: -0.0000014269999999999573, y: -0.008809174412449917 },\n { x: -0.0000014259999999999572, y: -0.03195646202096297 },\n { x: -0.0000014249999999999571, y: -0.01473277825690707 },\n { x: -0.000001423999999999957, y: -0.02206267118100727 },\n { x: -0.000001422999999999957, y: -0.018795395858838607 },\n { x: -0.000001421999999999957, y: -0.027940301585861842 },\n { x: -0.0000014209999999999568, y: -0.031309593314700845 },\n { x: -0.0000014199999999999568, y: 0.01862387801971263 },\n { x: -0.0000014189999999999567, y: -0.03542090674731725 },\n { x: -0.0000014179999999999566, y: 0.02058439907191344 },\n { x: -0.0000014169999999999565, y: -0.01633204340256826 },\n { x: -0.0000014159999999999565, y: -0.031036347474314906 },\n { x: -0.0000014149999999999564, y: 0.01928568032215615 },\n { x: -0.0000014139999999999563, y: -0.02714607627138527 },\n { x: -0.0000014129999999999562, y: -0.005910351368508948 },\n { x: -0.0000014119999999999562, y: -0.02774298660313753 },\n { x: -0.000001410999999999956, y: 0.0009198631014646014 },\n { x: -0.000001409999999999956, y: 0.029804040231150082 },\n { x: -0.000001408999999999956, y: 0.011243413063037647 },\n { x: -0.0000014079999999999559, y: 0.027073847634409037 },\n { x: -0.0000014069999999999558, y: -0.01757282472291928 },\n { x: -0.0000014059999999999557, y: 0.03584189654124867 },\n { x: -0.0000014049999999999556, y: 0.01656371343174638 },\n { x: -0.0000014039999999999556, y: 0.03401034753412705 },\n { x: -0.0000014029999999999555, y: 0.0364293610113262 },\n { x: -0.0000014019999999999554, y: -0.02968634132781467 },\n { x: -0.0000014009999999999553, y: 0.027729709084621565 },\n { x: -0.0000013999999999999553, y: -0.02027414339986988 },\n { x: -0.0000013989999999999552, y: -0.00220875464444255 },\n { x: -0.000001397999999999955, y: 0.036945016665614956 },\n { x: -0.000001396999999999955, y: -0.008306285425409227 },\n { x: -0.000001395999999999955, y: -0.016219089825118223 },\n { x: -0.0000013949999999999549, y: -0.020878229946553497 },\n { x: -0.0000013939999999999548, y: -0.025520979896904446 },\n { x: -0.0000013929999999999547, y: 0.027965267967334048 },\n { x: -0.0000013919999999999547, y: -0.028858358680431264 },\n { x: -0.0000013909999999999546, y: 0.007782789129562599 },\n { x: -0.0000013899999999999545, y: 0.015960109216097515 },\n { x: -0.0000013889999999999544, y: -0.002155913809696033 },\n { x: -0.0000013879999999999544, y: 0.030975181037093333 },\n { x: -0.0000013869999999999543, y: -0.018141006674456533 },\n { x: -0.0000013859999999999542, y: 0.03562673423170332 },\n { x: -0.0000013849999999999541, y: -0.037739831727478385 },\n { x: -0.000001383999999999954, y: -0.0013266178060266228 },\n { x: -0.000001382999999999954, y: 0.01874756023284197 },\n { x: -0.000001381999999999954, y: -0.02081164189724986 },\n { x: -0.0000013809999999999538, y: 0.0025335327434042737 },\n { x: -0.0000013799999999999538, y: 0.005810873518892579 },\n { x: -0.0000013789999999999537, y: -0.01844005482900577 },\n { x: -0.0000013779999999999536, y: 0.037123125325068465 },\n { x: -0.0000013769999999999535, y: 0.02899341595126094 },\n { x: -0.0000013759999999999535, y: 0.02616715237173488 },\n { x: -0.0000013749999999999534, y: -0.007589744321646553 },\n { x: -0.0000013739999999999533, y: -0.005437628901102876 },\n { x: -0.0000013729999999999532, y: -0.03662846529186486 },\n { x: -0.0000013719999999999532, y: -0.011762585503595716 },\n { x: -0.000001370999999999953, y: 0.06286309776804452 },\n { x: -0.000001369999999999953, y: 0.017374807844783857 },\n { x: -0.000001368999999999953, y: 0.030432815929757783 },\n { x: -0.0000013679999999999529, y: -0.008555864397219106 },\n { x: -0.0000013669999999999528, y: 0.017639338599923494 },\n { x: -0.0000013659999999999527, y: 0.004460666964426813 },\n { x: -0.0000013649999999999526, y: -0.02777409992300708 },\n { x: -0.0000013639999999999526, y: 0.019314864238587408 },\n { x: -0.0000013629999999999525, y: 0.034423155361312796 },\n { x: -0.0000013619999999999524, y: 0.013670550074769848 },\n { x: -0.0000013609999999999523, y: 0.01286211671995814 },\n { x: -0.0000013599999999999523, y: 0.025982457056539607 },\n { x: -0.0000013589999999999522, y: -0.0006805076262024958 },\n { x: -0.000001357999999999952, y: -0.014287006133468717 },\n { x: -0.000001356999999999952, y: -0.023866647688169883 },\n { x: -0.000001355999999999952, y: -0.025408245960811048 },\n { x: -0.0000013549999999999519, y: 0.03648168320753453 },\n { x: -0.0000013539999999999518, y: -0.018586982139929514 },\n { x: -0.0000013529999999999517, y: -0.03780791096963317 },\n { x: -0.0000013519999999999516, y: -0.01992709429516638 },\n { x: -0.0000013509999999999516, y: 0.03044672460535575 },\n { x: -0.0000013499999999999515, y: 0.028312860988091743 },\n { x: -0.0000013489999999999514, y: -0.02360258441424135 },\n { x: -0.0000013479999999999513, y: 0.005104407322331412 },\n { x: -0.0000013469999999999513, y: -0.0013732143304002328 },\n { x: -0.0000013459999999999512, y: -0.03616337965323662 },\n { x: -0.0000013449999999999511, y: 0.028618774148557295 },\n { x: -0.000001343999999999951, y: 0.026626077203680727 },\n { x: -0.000001342999999999951, y: -0.005746513963225127 },\n { x: -0.000001341999999999951, y: 0.024456610884775846 },\n { x: -0.0000013409999999999508, y: 0.019485149141960104 },\n { x: -0.0000013399999999999507, y: 0.014656760221359241 },\n { x: -0.0000013389999999999507, y: -0.01997743551050904 },\n { x: -0.0000013379999999999506, y: -0.013548665746939657 },\n { x: -0.0000013369999999999505, y: -0.0036552052674584633 },\n { x: -0.0000013359999999999504, y: -0.018932411367259486 },\n { x: -0.0000013349999999999504, y: -0.03741410646605812 },\n { x: -0.0000013339999999999503, y: 0.032019779185694985 },\n { x: -0.0000013329999999999502, y: -0.0028150237733198503 },\n { x: -0.0000013319999999999501, y: 0.009477877439243262 },\n { x: -0.00000133099999999995, y: 0.005887737824228874 },\n { x: -0.00000132999999999995, y: 0.019774612076245292 },\n { x: -0.00000132899999999995, y: -0.035933311534152815 },\n { x: -0.0000013279999999999498, y: 0.034815576349307376 },\n { x: -0.0000013269999999999498, y: 0.03655103430116427 },\n { x: -0.0000013259999999999497, y: -0.036044950277673 },\n { x: -0.0000013249999999999496, y: -0.009356938082272528 },\n { x: -0.0000013239999999999495, y: 0.02442691225993598 },\n { x: -0.0000013229999999999495, y: 0.008282935748187056 },\n { x: -0.0000013219999999999494, y: 0.005064254039896118 },\n { x: -0.0000013209999999999493, y: 0.0235699108346049 },\n { x: -0.0000013199999999999492, y: -0.04617893873673727 },\n { x: -0.0000013189999999999492, y: -0.011162166306264498 },\n { x: -0.000001317999999999949, y: -0.009361849936235084 },\n { x: -0.000001316999999999949, y: 0.022795588980644012 },\n { x: -0.000001315999999999949, y: -0.0014943328086852324 },\n { x: -0.0000013149999999999489, y: -0.033120288884205956 },\n { x: -0.0000013139999999999488, y: 0.01859106848316777 },\n { x: -0.0000013129999999999487, y: -0.0024396261992518605 },\n { x: -0.0000013119999999999486, y: -0.027445842851692256 },\n { x: -0.0000013109999999999486, y: 0.03404726174315386 },\n { x: -0.0000013099999999999485, y: 0.010251967963258278 },\n { x: -0.0000013089999999999484, y: 0.03284361874163441 },\n { x: -0.0000013079999999999483, y: 0.03134195974897309 },\n { x: -0.0000013069999999999483, y: 0.010239920041759318 },\n { x: -0.0000013059999999999482, y: 0.028121737219261846 },\n { x: -0.0000013049999999999481, y: 0.0014161994123639496 },\n { x: -0.000001303999999999948, y: 0.03637248741087605 },\n { x: -0.000001302999999999948, y: -0.006204972979383949 },\n { x: -0.0000013019999999999479, y: -0.00881814563619294 },\n { x: -0.0000013009999999999478, y: 0.018521032100143175 },\n { x: -0.0000012999999999999477, y: -0.0047163464225027235 },\n { x: -0.0000012989999999999477, y: 0.03363485059648552 },\n { x: -0.0000012979999999999476, y: -0.024161607685016687 },\n { x: -0.0000012969999999999475, y: 0.029114929725366882 },\n { x: -0.0000012959999999999474, y: -0.025863237617867726 },\n { x: -0.0000012949999999999474, y: -0.017998947531199096 },\n { x: -0.0000012939999999999473, y: 0.03730941296377263 },\n { x: -0.0000012929999999999472, y: 0.03223350002485523 },\n { x: -0.0000012919999999999471, y: 0.005801365357315892 },\n { x: -0.000001290999999999947, y: 0.03118217852562385 },\n { x: -0.000001289999999999947, y: -0.007603797320247494 },\n { x: -0.000001288999999999947, y: 0.03205654683499334 },\n { x: -0.0000012879999999999468, y: -0.010087561332330443 },\n { x: -0.0000012869999999999468, y: 0.03711386191878725 },\n { x: -0.0000012859999999999467, y: -0.007799062638556878 },\n { x: -0.0000012849999999999466, y: 0.005915187077683867 },\n { x: -0.0000012839999999999465, y: 0.004579354099010703 },\n { x: -0.0000012829999999999465, y: -0.013683392856120895 },\n { x: -0.0000012819999999999464, y: 0.03306877387370842 },\n { x: -0.0000012809999999999463, y: 0.011685586104961562 },\n { x: -0.0000012799999999999462, y: -0.020144757712756374 },\n { x: -0.0000012789999999999462, y: -0.01358075540878098 },\n { x: -0.000001277999999999946, y: 0.0068746744586625 },\n { x: -0.000001276999999999946, y: 0.007024254864453059 },\n { x: -0.000001275999999999946, y: 0.02951019196221618 },\n { x: -0.0000012749999999999459, y: 0.015535352894516028 },\n { x: -0.0000012739999999999458, y: -0.029617879810418878 },\n { x: -0.0000012729999999999457, y: -0.00425323946021398 },\n { x: -0.0000012719999999999456, y: 0.025894830440814948 },\n { x: -0.0000012709999999999456, y: 0.028364549700151526 },\n { x: -0.0000012699999999999455, y: -0.028199789147076767 },\n { x: -0.0000012689999999999454, y: -0.013671232673688924 },\n { x: -0.0000012679999999999453, y: 0.007897044966350478 },\n { x: -0.0000012669999999999453, y: 0.019850639022674994 },\n { x: -0.0000012659999999999452, y: 0.029443024368187375 },\n { x: -0.0000012649999999999451, y: -0.00937584901174294 },\n { x: -0.000001263999999999945, y: 0.02179092381177665 },\n { x: -0.000001262999999999945, y: 0.01774416205007989 },\n { x: -0.0000012619999999999449, y: -0.0021933726320993063 },\n { x: -0.0000012609999999999448, y: -0.01834146257690179 },\n { x: -0.0000012599999999999447, y: 0.019439364222801892 },\n { x: -0.0000012589999999999447, y: 0.008017386099868653 },\n { x: -0.0000012579999999999446, y: -0.03586449881813231 },\n { x: -0.0000012569999999999445, y: 0.007185050135984963 },\n { x: -0.0000012559999999999444, y: -0.030730811413055156 },\n { x: -0.0000012549999999999444, y: 0.008644592364709804 },\n { x: -0.0000012539999999999443, y: 0.0102304563720502 },\n { x: -0.0000012529999999999442, y: 0.028884913512254543 },\n { x: -0.0000012519999999999441, y: 0.015338485402996616 },\n { x: -0.000001250999999999944, y: -0.0104235832161865 },\n { x: -0.000001249999999999944, y: -0.020514628153497923 },\n { x: -0.000001248999999999944, y: -0.012156381546816692 },\n { x: -0.0000012479999999999438, y: -0.016113308749681667 },\n { x: -0.0000012469999999999438, y: 0.0017151575253081595 },\n { x: -0.0000012459999999999437, y: -0.007157636286032977 },\n { x: -0.0000012449999999999436, y: -0.001641976471777978 },\n { x: -0.0000012439999999999435, y: 0.018566303676046263 },\n { x: -0.0000012429999999999435, y: 0.03082408999166559 },\n { x: -0.0000012419999999999434, y: -0.01493515644534032 },\n { x: -0.0000012409999999999433, y: -0.015812006269594517 },\n { x: -0.0000012399999999999432, y: -0.022805096447225483 },\n { x: -0.0000012389999999999432, y: -0.027537114808600598 },\n { x: -0.000001237999999999943, y: -0.034518255251211744 },\n { x: -0.000001236999999999943, y: 0.03174907307353538 },\n { x: -0.000001235999999999943, y: 0.021058651306083913 },\n { x: -0.0000012349999999999429, y: -0.004635419679502099 },\n { x: -0.0000012339999999999428, y: -0.026757517061456695 },\n { x: -0.0000012329999999999427, y: -0.002293382377237708 },\n { x: -0.0000012319999999999426, y: 0.019623032089150106 },\n { x: -0.0000012309999999999426, y: -0.012288924464331864 },\n { x: -0.0000012299999999999425, y: 0.030772999410255755 },\n { x: -0.0000012289999999999424, y: -0.009273576569640733 },\n { x: -0.0000012279999999999423, y: -0.030587757774173056 },\n { x: -0.0000012269999999999423, y: -0.03215111515224133 },\n { x: -0.0000012259999999999422, y: -0.03320947717726895 },\n { x: -0.0000012249999999999421, y: -0.011155697785155561 },\n { x: -0.000001223999999999942, y: -0.026845066426036037 },\n { x: -0.000001222999999999942, y: -0.03689477791929767 },\n { x: -0.0000012219999999999419, y: -0.024216088196057476 },\n { x: -0.0000012209999999999418, y: 0.017544737255589533 },\n { x: -0.0000012199999999999417, y: -0.020802088219794256 },\n { x: -0.0000012189999999999417, y: 0.008822600155463755 },\n { x: -0.0000012179999999999416, y: 0.026247273956979372 },\n { x: -0.0000012169999999999415, y: -0.008371982878929776 },\n { x: -0.0000012159999999999414, y: -0.0348727238259723 },\n { x: -0.0000012149999999999414, y: 0.012299691201663781 },\n { x: -0.0000012139999999999413, y: 0.014552503889707434 },\n { x: -0.0000012129999999999412, y: -0.00823722377047333 },\n { x: -0.0000012119999999999411, y: 0.01788099085164421 },\n { x: -0.000001210999999999941, y: -0.008074005131419797 },\n { x: -0.000001209999999999941, y: -0.03488463040546863 },\n { x: -0.000001208999999999941, y: 0.034636102940360444 },\n { x: -0.0000012079999999999408, y: 0.030681428735635348 },\n { x: -0.0000012069999999999408, y: -0.014932768446193855 },\n { x: -0.0000012059999999999407, y: 0.012736113577859752 },\n { x: -0.0000012049999999999406, y: 0.0075820715681490765 },\n { x: -0.0000012039999999999405, y: -0.016605500190554016 },\n { x: -0.0000012029999999999405, y: 0.03313652856750357 },\n { x: -0.0000012019999999999404, y: -0.007737942808828586 },\n { x: -0.0000012009999999999403, y: 0.029052595418595353 },\n { x: -0.0000011999999999999402, y: -0.005073178892875431 },\n { x: -0.0000011989999999999402, y: -0.007235926980898817 },\n { x: -0.00000119799999999994, y: 0.01872074038773509 },\n { x: -0.00000119699999999994, y: -0.01916236301447569 },\n { x: -0.00000119599999999994, y: -0.008216718930977264 },\n { x: -0.0000011949999999999399, y: 0.03268756095182446 },\n { x: -0.0000011939999999999398, y: 0.025861855378969848 },\n { x: -0.0000011929999999999397, y: 0.0066621093639115695 },\n { x: -0.0000011919999999999396, y: 0.006482817862923509 },\n { x: -0.0000011909999999999396, y: -0.03378980010517232 },\n { x: -0.0000011899999999999395, y: 0.021504581809908704 },\n { x: -0.0000011889999999999394, y: -0.030769314102892447 },\n { x: -0.0000011879999999999393, y: 0.018917972511959865 },\n { x: -0.0000011869999999999393, y: -0.018172063914816412 },\n { x: -0.0000011859999999999392, y: -0.03643418211886705 },\n { x: -0.000001184999999999939, y: -0.013731021747616598 },\n { x: -0.000001183999999999939, y: -0.024402609716972348 },\n { x: -0.000001182999999999939, y: 0.014289190277567811 },\n { x: -0.0000011819999999999389, y: 0.023712522014093095 },\n { x: -0.0000011809999999999388, y: 0.010132832023869852 },\n { x: -0.0000011799999999999387, y: -0.034396425459355014 },\n { x: -0.0000011789999999999387, y: -0.007143348111840217 },\n { x: -0.0000011779999999999386, y: -0.00222291755992494 },\n { x: -0.0000011769999999999385, y: 0.030700736756949655 },\n { x: -0.0000011759999999999384, y: 0.014428658644920446 },\n { x: -0.0000011749999999999384, y: 0.019863924063457356 },\n { x: -0.0000011739999999999383, y: -0.001136499481345822 },\n { x: -0.0000011729999999999382, y: 0.00810338383197685 },\n { x: -0.0000011719999999999381, y: 0.034890309761107956 },\n { x: -0.000001170999999999938, y: -0.027952431251810975 },\n { x: -0.000001169999999999938, y: -0.0014555206594062775 },\n { x: -0.000001168999999999938, y: -0.027500093515103533 },\n { x: -0.0000011679999999999378, y: 0.005500823812076657 },\n { x: -0.0000011669999999999378, y: 0.029184779830460816 },\n { x: -0.0000011659999999999377, y: -0.014165107011783012 },\n { x: -0.0000011649999999999376, y: 0.035402758809883736 },\n { x: -0.0000011639999999999375, y: 0.016363496671050266 },\n { x: -0.0000011629999999999375, y: -0.031025846704796516 },\n { x: -0.0000011619999999999374, y: -0.03747833024534651 },\n { x: -0.0000011609999999999373, y: -0.005035256521069069 },\n { x: -0.0000011599999999999372, y: 0.02413880708042607 },\n { x: -0.0000011589999999999371, y: 0.004719068383673508 },\n { x: -0.000001157999999999937, y: -0.0025649311128587626 },\n { x: -0.000001156999999999937, y: -0.019335144661670807 },\n { x: -0.000001155999999999937, y: -0.001634621142771009 },\n { x: -0.0000011549999999999368, y: 0.012206046410135455 },\n { x: -0.0000011539999999999368, y: -0.004380262713739856 },\n { x: -0.0000011529999999999367, y: -0.01245147030213906 },\n { x: -0.0000011519999999999366, y: -0.02771703108888614 },\n { x: -0.0000011509999999999365, y: 0.012324873689169817 },\n { x: -0.0000011499999999999365, y: 0.01574336709266946 },\n { x: -0.0000011489999999999364, y: -0.01944584047564326 },\n { x: -0.0000011479999999999363, y: -0.02678272920210347 },\n { x: -0.0000011469999999999362, y: 0.012685345922256688 },\n { x: -0.0000011459999999999362, y: -0.02428445810144817 },\n { x: -0.000001144999999999936, y: 0.02122352192123725 },\n { x: -0.000001143999999999936, y: 0.0017545082389184192 },\n { x: -0.000001142999999999936, y: -0.021247768259625866 },\n { x: -0.0000011419999999999359, y: 0.03736356225080036 },\n { x: -0.0000011409999999999358, y: 0.030465802167615554 },\n { x: -0.0000011399999999999357, y: -0.031203956066424173 },\n { x: -0.0000011389999999999356, y: 0.0038869599827814224 },\n { x: -0.0000011379999999999356, y: -0.03348223608578976 },\n { x: -0.0000011369999999999355, y: 0.021964493943004156 },\n { x: -0.0000011359999999999354, y: 0.012798542237557615 },\n { x: -0.0000011349999999999353, y: 0.018715784823801925 },\n { x: -0.0000011339999999999353, y: 0.02911308278467085 },\n { x: -0.0000011329999999999352, y: 0.0002547274517661491 },\n { x: -0.0000011319999999999351, y: -0.025504043656042204 },\n { x: -0.000001130999999999935, y: 0.020439604106804486 },\n { x: -0.000001129999999999935, y: 0.02636843840864873 },\n { x: -0.000001128999999999935, y: -0.026980297555334716 },\n { x: -0.0000011279999999999348, y: 0.008654209126966602 },\n { x: -0.0000011269999999999347, y: 0.031538000694273774 },\n { x: -0.0000011259999999999347, y: 0.00400299781692588 },\n { x: -0.0000011249999999999346, y: -0.008943049648801386 },\n { x: -0.0000011239999999999345, y: 0.019178196468100817 },\n { x: -0.0000011229999999999344, y: -0.005747326204190344 },\n { x: -0.0000011219999999999344, y: -0.010263411797626174 },\n { x: -0.0000011209999999999343, y: 0.02867837017720057 },\n { x: -0.0000011199999999999342, y: 0.0027619235635548737 },\n { x: -0.0000011189999999999341, y: -0.015116003010013963 },\n { x: -0.000001117999999999934, y: -0.00771187159990163 },\n { x: -0.000001116999999999934, y: 0.02309551474744334 },\n { x: -0.000001115999999999934, y: -0.0259479902773751 },\n { x: -0.0000011149999999999338, y: -0.004191424901319933 },\n { x: -0.0000011139999999999338, y: 0.027423036206542795 },\n { x: -0.0000011129999999999337, y: -0.024195477079481435 },\n { x: -0.0000011119999999999336, y: 0.022663346268164693 },\n { x: -0.0000011109999999999335, y: -0.031191669723367565 },\n { x: -0.0000011099999999999335, y: 0.0043902313725442945 },\n { x: -0.0000011089999999999334, y: 0.02454228906199415 },\n { x: -0.0000011079999999999333, y: 0.03594899636322201 },\n { x: -0.0000011069999999999332, y: -0.03334823887604813 },\n { x: -0.0000011059999999999332, y: -0.01192216245943053 },\n { x: -0.000001104999999999933, y: -0.024783298620515634 },\n { x: -0.000001103999999999933, y: -0.010266033052852314 },\n { x: -0.000001102999999999933, y: 0.023674140547620636 },\n { x: -0.0000011019999999999329, y: 0.01827937875802166 },\n { x: -0.0000011009999999999328, y: -0.026909958677049588 },\n { x: -0.0000010999999999999327, y: 0.035732974549398916 },\n { x: -0.0000010989999999999326, y: 0.0010450278744009746 },\n { x: -0.0000010979999999999326, y: 0.003638863189738167 },\n { x: -0.0000010969999999999325, y: 0.0027361635177537763 },\n { x: -0.0000010959999999999324, y: -0.027114865369770574 },\n { x: -0.0000010949999999999323, y: 0.02913405318551783 },\n { x: -0.0000010939999999999323, y: 0.007090545628145007 },\n { x: -0.0000010929999999999322, y: 0.027538877894034114 },\n { x: -0.0000010919999999999321, y: -0.01575434959194481 },\n { x: -0.000001090999999999932, y: 0.032863695659606305 },\n { x: -0.000001089999999999932, y: -0.020261719076848456 },\n { x: -0.0000010889999999999319, y: 0.008469352679284621 },\n { x: -0.0000010879999999999318, y: 0.010466286310564185 },\n { x: -0.0000010869999999999317, y: -0.03459042154622281 },\n { x: -0.0000010859999999999317, y: -0.002810323145193646 },\n { x: -0.0000010849999999999316, y: -0.029217576094209104 },\n { x: -0.0000010839999999999315, y: 0.021369005236969527 },\n { x: -0.0000010829999999999314, y: 0.020813655397698836 },\n { x: -0.0000010819999999999314, y: -0.016423285385148347 },\n { x: -0.0000010809999999999313, y: -0.03386282677843306 },\n { x: -0.0000010799999999999312, y: -0.025608240521285474 },\n { x: -0.0000010789999999999311, y: 0.021248693139306617 },\n { x: -0.000001077999999999931, y: 0.03587467773171921 },\n { x: -0.000001076999999999931, y: 0.021280586346494452 },\n { x: -0.000001075999999999931, y: 0.018332354420720676 },\n { x: -0.0000010749999999999308, y: 0.036953034432805454 },\n { x: -0.0000010739999999999308, y: -0.03175288541158352 },\n { x: -0.0000010729999999999307, y: -0.024115902675706843 },\n { x: -0.0000010719999999999306, y: 0.02241743611713118 },\n { x: -0.0000010709999999999305, y: 0.015558634002765784 },\n { x: -0.0000010699999999999305, y: 0.01939475490196981 },\n { x: -0.0000010689999999999304, y: 0.02754116596456491 },\n { x: -0.0000010679999999999303, y: 0.03254483574621475 },\n { x: -0.0000010669999999999302, y: 0.00893452209558641 },\n { x: -0.0000010659999999999302, y: 0.021550111633410727 },\n { x: -0.00000106499999999993, y: -0.031364612833633836 },\n { x: -0.00000106399999999993, y: 0.013283452263456794 },\n { x: -0.00000106299999999993, y: -0.00846544250977491 },\n { x: -0.0000010619999999999299, y: 0.0017269260942929937 },\n { x: -0.0000010609999999999298, y: -0.03240923250750345 },\n { x: -0.0000010599999999999297, y: 0.041192342820768335 },\n { x: -0.0000010589999999999296, y: -0.018813376825745184 },\n { x: -0.0000010579999999999296, y: 0.003531927496042505 },\n { x: -0.0000010569999999999295, y: -0.002288720072742805 },\n { x: -0.0000010559999999999294, y: -0.028137635527813357 },\n { x: -0.0000010549999999999293, y: -0.02881793611498535 },\n { x: -0.0000010539999999999293, y: 0.025259562537388088 },\n { x: -0.0000010529999999999292, y: -0.025572479807885126 },\n { x: -0.0000010519999999999291, y: -0.0014499665297990482 },\n { x: -0.000001050999999999929, y: -0.0115115976979226 },\n { x: -0.000001049999999999929, y: 0.006651690670723217 },\n { x: -0.0000010489999999999289, y: 0.03037450323603628 },\n { x: -0.0000010479999999999288, y: 0.024677442332279864 },\n { x: -0.0000010469999999999287, y: -0.009369965111682128 },\n { x: -0.0000010459999999999287, y: 0.004209415111918935 },\n { x: -0.0000010449999999999286, y: -0.025816695328456124 },\n { x: -0.0000010439999999999285, y: 0.008866012270379968 },\n { x: -0.0000010429999999999284, y: 0.02761903092956218 },\n { x: -0.0000010419999999999284, y: 0.013762888673287118 },\n { x: -0.0000010409999999999283, y: -0.015251553265029747 },\n { x: -0.0000010399999999999282, y: 0.019570828173988548 },\n { x: -0.0000010389999999999281, y: 0.061684518220025124 },\n { x: -0.000001037999999999928, y: -0.033167859404168776 },\n { x: -0.000001036999999999928, y: 0.004124457998327737 },\n { x: -0.000001035999999999928, y: 0.022013215600257412 },\n { x: -0.0000010349999999999278, y: 0.03402128738709914 },\n { x: -0.0000010339999999999278, y: 0.01046723658597477 },\n { x: -0.0000010329999999999277, y: 0.021283802624609043 },\n { x: -0.0000010319999999999276, y: 0.0016237554482543739 },\n { x: -0.0000010309999999999275, y: -0.034329811073198775 },\n { x: -0.0000010299999999999275, y: -0.034747120232068246 },\n { x: -0.0000010289999999999274, y: 0.03423877024130284 },\n { x: -0.0000010279999999999273, y: -0.026951904313977565 },\n { x: -0.0000010269999999999272, y: 0.0038978301759391727 },\n { x: -0.0000010259999999999272, y: -0.02396276827687291 },\n { x: -0.000001024999999999927, y: -0.025638382162598967 },\n { x: -0.000001023999999999927, y: 0.036710342459218066 },\n { x: -0.000001022999999999927, y: 0.009563173632159055 },\n { x: -0.0000010219999999999269, y: 0.010339560805856218 },\n { x: -0.0000010209999999999268, y: 0.031520575280031556 },\n { x: -0.0000010199999999999267, y: 0.03110916196871425 },\n { x: -0.0000010189999999999266, y: -0.037235307915742165 },\n { x: -0.0000010179999999999266, y: 0.00943802691845677 },\n { x: -0.0000010169999999999265, y: 0.007666987916140973 },\n { x: -0.0000010159999999999264, y: -0.0305969910471173 },\n { x: -0.0000010149999999999263, y: 0.012445863137599555 },\n { x: -0.0000010139999999999263, y: 0.005710821204960515 },\n { x: -0.0000010129999999999262, y: -0.02326312736145247 },\n { x: -0.000001011999999999926, y: 0.03382934309132999 },\n { x: -0.000001010999999999926, y: -0.028883360855502322 },\n { x: -0.000001009999999999926, y: -0.005793566845652853 },\n { x: -0.0000010089999999999259, y: -0.028267929755766138 },\n { x: -0.0000010079999999999258, y: -0.032621688283622705 },\n { x: -0.0000010069999999999257, y: 0.009374042237734392 },\n { x: -0.0000010059999999999257, y: 0.001868892436261659 },\n { x: -0.0000010049999999999256, y: -0.009269096605986411 },\n { x: -0.0000010039999999999255, y: -0.018993851685004056 },\n { x: -0.0000010029999999999254, y: -0.031847186921473786 },\n { x: -0.0000010019999999999254, y: -0.008046662113942058 },\n { x: -0.0000010009999999999253, y: -0.0023422432857707442 },\n { x: -9.999999999999252e-7, y: 0.010840177491379973 },\n { x: -9.989999999999251e-7, y: 0.01776890612243266 },\n { x: -9.97999999999925e-7, y: 0.01032583214398838 },\n { x: -9.96999999999925e-7, y: -0.01982299283221205 },\n { x: -9.95999999999925e-7, y: -0.019103894919064782 },\n { x: -9.949999999999248e-7, y: -0.0032049332452009963 },\n { x: -9.939999999999248e-7, y: 0.026076522829219777 },\n { x: -9.929999999999247e-7, y: 0.024496783405623928 },\n { x: -9.919999999999246e-7, y: 0.016499846534152162 },\n { x: -9.909999999999245e-7, y: 0.017914212922616624 },\n { x: -9.899999999999245e-7, y: -0.019726952265923206 },\n { x: -9.889999999999244e-7, y: 0.01626033562506649 },\n { x: -9.879999999999243e-7, y: -0.008220705259891027 },\n { x: -9.869999999999242e-7, y: -0.025279691047465153 },\n { x: -9.859999999999242e-7, y: -0.025676415690392144 },\n { x: -9.84999999999924e-7, y: -0.011696763660427259 },\n { x: -9.83999999999924e-7, y: -0.017438070915119865 },\n { x: -9.82999999999924e-7, y: 0.03720750652934234 },\n { x: -9.819999999999239e-7, y: -0.016835484579148588 },\n { x: -9.809999999999238e-7, y: 0.01815980303573615 },\n { x: -9.799999999999237e-7, y: 0.020463557693487008 },\n { x: -9.789999999999236e-7, y: -0.0011654171902938863 },\n { x: -9.779999999999236e-7, y: 0.00606826267542394 },\n { x: -9.769999999999235e-7, y: -0.034513818005990786 },\n { x: -9.759999999999234e-7, y: -0.01991109534464455 },\n { x: -9.749999999999233e-7, y: 0.034712304696758005 },\n { x: -9.739999999999233e-7, y: 0.007774178902658733 },\n { x: -9.729999999999232e-7, y: -0.011368318633134067 },\n { x: -9.71999999999923e-7, y: -0.006061573388917357 },\n { x: -9.70999999999923e-7, y: 0.018126978921157475 },\n { x: -9.69999999999923e-7, y: 0.02726576056209315 },\n { x: -9.689999999999229e-7, y: 0.0003232067519156386 },\n { x: -9.679999999999228e-7, y: 0.01608865369829126 },\n { x: -9.669999999999227e-7, y: 0.0014128747967245428 },\n { x: -9.659999999999226e-7, y: -0.011696456066122221 },\n { x: -9.649999999999226e-7, y: -0.021704958095040052 },\n { x: -9.639999999999225e-7, y: 0.030275711156899327 },\n { x: -9.629999999999224e-7, y: -0.02292842572541188 },\n { x: -9.619999999999223e-7, y: -0.02399627756791023 },\n { x: -9.609999999999223e-7, y: -0.012030959177578095 },\n { x: -9.599999999999222e-7, y: -0.024437055201715352 },\n { x: -9.589999999999221e-7, y: -0.03108969507226391 },\n { x: -9.57999999999922e-7, y: -0.017568398400468543 },\n { x: -9.56999999999922e-7, y: -0.01745744248197696 },\n { x: -9.55999999999922e-7, y: 0.004451029610863574 },\n { x: -9.549999999999218e-7, y: -0.016267207476140206 },\n { x: -9.539999999999217e-7, y: 0.00972251185358209 },\n { x: -9.529999999999218e-7, y: 0.03293065025421619 },\n { x: -9.519999999999218e-7, y: -0.02086997208853251 },\n { x: -9.509999999999218e-7, y: 0.004639619025641843 },\n { x: -9.499999999999219e-7, y: 0.015618224567289337 },\n { x: -9.489999999999219e-7, y: 0.007112025027805449 },\n { x: -9.479999999999219e-7, y: -0.022636518950092655 },\n { x: -9.46999999999922e-7, y: -0.000761372920605377 },\n { x: -9.45999999999922e-7, y: -0.030646906336262093 },\n { x: -9.44999999999922e-7, y: -0.027083786628553968 },\n { x: -9.439999999999221e-7, y: -0.023501480527126164 },\n { x: -9.429999999999221e-7, y: -0.006513222852341783 },\n { x: -9.419999999999221e-7, y: 0.010237058491952876 },\n { x: -9.409999999999221e-7, y: 0.01575903531229099 },\n { x: -9.399999999999222e-7, y: 0.031951775070964465 },\n { x: -9.389999999999222e-7, y: -0.016383227145744337 },\n { x: -9.379999999999222e-7, y: 0.018446823915629015 },\n { x: -9.369999999999223e-7, y: 0.018553872617230658 },\n { x: -9.359999999999223e-7, y: 0.0005302119633774194 },\n { x: -9.349999999999223e-7, y: 0.015342896360415465 },\n { x: -9.339999999999224e-7, y: -0.0013742958150124026 },\n { x: -9.329999999999224e-7, y: 0.024571183233800593 },\n { x: -9.319999999999224e-7, y: -0.02605755800136759 },\n { x: -9.309999999999225e-7, y: 0.022409530383174267 },\n { x: -9.299999999999225e-7, y: -0.012515358070418951 },\n { x: -9.289999999999225e-7, y: 0.021047540449883086 },\n { x: -9.279999999999225e-7, y: 0.02479222693293069 },\n { x: -9.269999999999226e-7, y: 0.03653090770216841 },\n { x: -9.259999999999226e-7, y: -0.017107653369539816 },\n { x: -9.249999999999226e-7, y: -0.011020852861469248 },\n { x: -9.239999999999227e-7, y: -0.025709429149308512 },\n { x: -9.229999999999227e-7, y: -0.015079420700132181 },\n { x: -9.219999999999227e-7, y: 0.03168000868920515 },\n { x: -9.209999999999228e-7, y: -0.00210274362938009 },\n { x: -9.199999999999228e-7, y: -0.025200653167084697 },\n { x: -9.189999999999228e-7, y: -0.01060610960450694 },\n { x: -9.179999999999229e-7, y: -0.02973874410019535 },\n { x: -9.169999999999229e-7, y: -0.030965299051822385 },\n { x: -9.159999999999229e-7, y: 0.0038148260825874476 },\n { x: -9.14999999999923e-7, y: -0.033241250227991105 },\n { x: -9.13999999999923e-7, y: 0.00604867636928691 },\n { x: -9.12999999999923e-7, y: -0.008588997593963985 },\n { x: -9.11999999999923e-7, y: 0.015923611463657814 },\n { x: -9.109999999999231e-7, y: -0.008414811523850744 },\n { x: -9.099999999999231e-7, y: -0.019673634057138158 },\n { x: -9.089999999999231e-7, y: -0.03753147139612505 },\n { x: -9.079999999999232e-7, y: 0.026749614364787684 },\n { x: -9.069999999999232e-7, y: 0.009179864277816011 },\n { x: -9.059999999999232e-7, y: 0.009232479754932152 },\n { x: -9.049999999999233e-7, y: -0.022850441249536425 },\n { x: -9.039999999999233e-7, y: 0.022761860920378196 },\n { x: -9.029999999999233e-7, y: 0.032577228843712 },\n { x: -9.019999999999233e-7, y: -0.009230010340456217 },\n { x: -9.009999999999234e-7, y: 0.014381541869451474 },\n { x: -8.999999999999234e-7, y: 0.007362602069615492 },\n { x: -8.989999999999234e-7, y: 0.019415573503208126 },\n { x: -8.979999999999235e-7, y: -0.038299510323579214 },\n { x: -8.969999999999235e-7, y: 0.0011299450978933597 },\n { x: -8.959999999999235e-7, y: -0.023952376639287416 },\n { x: -8.949999999999236e-7, y: -0.01610169256085411 },\n { x: -8.939999999999236e-7, y: 0.026222417450439836 },\n { x: -8.929999999999236e-7, y: -0.03190218689902641 },\n { x: -8.919999999999237e-7, y: -0.03432020352969162 },\n { x: -8.909999999999237e-7, y: 0.019366613973656507 },\n { x: -8.899999999999237e-7, y: -0.031391386639058196 },\n { x: -8.889999999999237e-7, y: 0.00837424583650163 },\n { x: -8.879999999999238e-7, y: 0.03186906605800279 },\n { x: -8.869999999999238e-7, y: -0.010212834431228921 },\n { x: -8.859999999999238e-7, y: 0.03704848495388489 },\n { x: -8.849999999999239e-7, y: -0.0115572101672419 },\n { x: -8.839999999999239e-7, y: 0.025468208071106894 },\n { x: -8.829999999999239e-7, y: -0.008762272659908157 },\n { x: -8.81999999999924e-7, y: 0.02277877149048695 },\n { x: -8.80999999999924e-7, y: 0.005213360801620121 },\n { x: -8.79999999999924e-7, y: 0.006916896105190616 },\n { x: -8.789999999999241e-7, y: 0.025234732726755055 },\n { x: -8.779999999999241e-7, y: -0.025004339226081897 },\n { x: -8.769999999999241e-7, y: -0.016738614383466303 },\n { x: -8.759999999999241e-7, y: 0.02612479041190105 },\n { x: -8.749999999999242e-7, y: 0.036423903004606774 },\n { x: -8.739999999999242e-7, y: -0.012611155929767593 },\n { x: -8.729999999999242e-7, y: 0.01401632460396602 },\n { x: -8.719999999999243e-7, y: 0.015372814707230552 },\n { x: -8.709999999999243e-7, y: 0.017538893864949563 },\n { x: -8.699999999999243e-7, y: 0.0008130989563025555 },\n { x: -8.689999999999244e-7, y: 0.025128427465391335 },\n { x: -8.679999999999244e-7, y: -0.004526735353483471 },\n { x: -8.669999999999244e-7, y: 0.01800688399974372 },\n { x: -8.659999999999245e-7, y: 0.007805066435189868 },\n { x: -8.649999999999245e-7, y: -0.014885647013308584 },\n { x: -8.639999999999245e-7, y: 0.002873344691174549 },\n { x: -8.629999999999245e-7, y: -0.03127102117251237 },\n { x: -8.619999999999246e-7, y: 0.0034664535817309017 },\n { x: -8.609999999999246e-7, y: -0.030146099359308627 },\n { x: -8.599999999999246e-7, y: 0.0004909610998169021 },\n { x: -8.589999999999247e-7, y: -0.029732361714219932 },\n { x: -8.579999999999247e-7, y: 0.056371423662391125 },\n { x: -8.569999999999247e-7, y: 0.019675474866204128 },\n { x: -8.559999999999248e-7, y: 0.0037055367390445154 },\n { x: -8.549999999999248e-7, y: 0.007958642944636343 },\n { x: -8.539999999999248e-7, y: 0.031170667440981757 },\n { x: -8.529999999999249e-7, y: 0.027922335680716087 },\n { x: -8.519999999999249e-7, y: -0.001310272524085223 },\n { x: -8.509999999999249e-7, y: 0.012618017037633572 },\n { x: -8.499999999999249e-7, y: 0.03093013741614123 },\n { x: -8.48999999999925e-7, y: 0.020968705025750354 },\n { x: -8.47999999999925e-7, y: 0.027369280124057586 },\n { x: -8.46999999999925e-7, y: -0.004806688605153115 },\n { x: -8.459999999999251e-7, y: -0.016249759172511084 },\n { x: -8.449999999999251e-7, y: -0.0006271442121735175 },\n { x: -8.439999999999251e-7, y: -0.019353815379646647 },\n { x: -8.429999999999252e-7, y: -0.017163157879402955 },\n { x: -8.419999999999252e-7, y: -0.03548059904646963 },\n { x: -8.409999999999252e-7, y: 0.02313611703472965 },\n { x: -8.399999999999253e-7, y: -0.014865699271734622 },\n { x: -8.389999999999253e-7, y: 0.01101855729171213 },\n { x: -8.379999999999253e-7, y: -0.005466523368602546 },\n { x: -8.369999999999253e-7, y: -0.03115650717574829 },\n { x: -8.359999999999254e-7, y: -0.01172148758910005 },\n { x: -8.349999999999254e-7, y: 0.027530258103700123 },\n { x: -8.339999999999254e-7, y: -0.013361953130406124 },\n { x: -8.329999999999255e-7, y: -0.02933385697333347 },\n { x: -8.319999999999255e-7, y: 0.02103474064153297 },\n { x: -8.309999999999255e-7, y: 0.02176334224505846 },\n { x: -8.299999999999256e-7, y: 0.018757817803187415 },\n { x: -8.289999999999256e-7, y: -0.03742232055682836 },\n { x: -8.279999999999256e-7, y: -0.013942852796325267 },\n { x: -8.269999999999257e-7, y: 0.0075531746020012416 },\n { x: -8.259999999999257e-7, y: -0.005235030960910617 },\n { x: -8.249999999999257e-7, y: -0.013455942474942653 },\n { x: -8.239999999999257e-7, y: -0.009079405981755651 },\n { x: -8.229999999999258e-7, y: 0.02687889796141142 },\n { x: -8.219999999999258e-7, y: -0.015451987514716829 },\n { x: -8.209999999999258e-7, y: 0.008853814081119179 },\n { x: -8.199999999999259e-7, y: -0.031614768404355904 },\n { x: -8.189999999999259e-7, y: -0.020684353901576812 },\n { x: -8.179999999999259e-7, y: -0.004349344659097599 },\n { x: -8.16999999999926e-7, y: -0.032351128450080244 },\n { x: -8.15999999999926e-7, y: 0.027413184736922346 },\n { x: -8.14999999999926e-7, y: -0.022718398124329027 },\n { x: -8.139999999999261e-7, y: -0.028341448868181796 },\n { x: -8.129999999999261e-7, y: 0.02876741543842008 },\n { x: -8.119999999999261e-7, y: -0.018289808674868468 },\n { x: -8.109999999999261e-7, y: -0.004398059592769029 },\n { x: -8.099999999999262e-7, y: -0.01074398307502024 },\n { x: -8.089999999999262e-7, y: -0.0020476478124832388 },\n { x: -8.079999999999262e-7, y: 0.025789086878987757 },\n { x: -8.069999999999263e-7, y: 0.024251322047085938 },\n { x: -8.059999999999263e-7, y: 0.03721585312378391 },\n { x: -8.049999999999263e-7, y: -0.03155777317318277 },\n { x: -8.039999999999264e-7, y: 0.01957189033880305 },\n { x: -8.029999999999264e-7, y: 0.03195250359530248 },\n { x: -8.019999999999264e-7, y: -0.012501327258465434 },\n { x: -8.009999999999265e-7, y: 0.016875009596899037 },\n { x: -7.999999999999265e-7, y: 0.011342440420052615 },\n { x: -7.989999999999265e-7, y: 0.008386090664766642 },\n { x: -7.979999999999265e-7, y: -0.024106276452187894 },\n { x: -7.969999999999266e-7, y: 0.012117934964467303 },\n { x: -7.959999999999266e-7, y: -0.0007889897266229575 },\n { x: -7.949999999999266e-7, y: 0.02466338985768519 },\n { x: -7.939999999999267e-7, y: 0.03741483224157911 },\n { x: -7.929999999999267e-7, y: -0.008963205404156115 },\n { x: -7.919999999999267e-7, y: 0.015379366724403962 },\n { x: -7.909999999999268e-7, y: 0.018422982108190922 },\n { x: -7.899999999999268e-7, y: 0.00010225846965020577 },\n { x: -7.889999999999268e-7, y: 0.026282972640043624 },\n { x: -7.879999999999269e-7, y: -0.021756984097635636 },\n { x: -7.869999999999269e-7, y: 0.00573016684523125 },\n { x: -7.859999999999269e-7, y: 0.02082208391069466 },\n { x: -7.849999999999269e-7, y: 0.002389662031938346 },\n { x: -7.83999999999927e-7, y: 0.02792645443235875 },\n { x: -7.82999999999927e-7, y: -0.02041865694859452 },\n { x: -7.81999999999927e-7, y: -0.01552050734037055 },\n { x: -7.809999999999271e-7, y: 0.023244930983702793 },\n { x: -7.799999999999271e-7, y: -0.022546177670539725 },\n { x: -7.789999999999271e-7, y: -0.03592121624714324 },\n { x: -7.779999999999272e-7, y: 0.013371666999888565 },\n { x: -7.769999999999272e-7, y: -0.012284709451055982 },\n { x: -7.759999999999272e-7, y: -0.01561671470706963 },\n { x: -7.749999999999273e-7, y: -0.018682672226740367 },\n { x: -7.739999999999273e-7, y: -0.01793498292829704 },\n { x: -7.729999999999273e-7, y: 0.006400554041425754 },\n { x: -7.719999999999273e-7, y: 0.01780707558471629 },\n { x: -7.709999999999274e-7, y: -0.01837198272349219 },\n { x: -7.699999999999274e-7, y: -0.034309745822137847 },\n { x: -7.689999999999274e-7, y: 0.020360037092311094 },\n { x: -7.679999999999275e-7, y: -0.007870483107975617 },\n { x: -7.669999999999275e-7, y: -0.021094785205537498 },\n { x: -7.659999999999275e-7, y: -0.00017115015938054512 },\n { x: -7.649999999999276e-7, y: 0.00720112255388403 },\n { x: -7.639999999999276e-7, y: 0.06171488126204357 },\n { x: -7.629999999999276e-7, y: 0.01897792763743236 },\n { x: -7.619999999999277e-7, y: -0.03500035295518957 },\n { x: -7.609999999999277e-7, y: 0.01792267857458254 },\n { x: -7.599999999999277e-7, y: -0.016264377661825903 },\n { x: -7.589999999999277e-7, y: -0.0021172887541361708 },\n { x: -7.579999999999278e-7, y: 0.028350062222667744 },\n { x: -7.569999999999278e-7, y: 0.00026353928096412764 },\n { x: -7.559999999999278e-7, y: 0.023161104680252013 },\n { x: -7.549999999999279e-7, y: -0.0147413738368382 },\n { x: -7.539999999999279e-7, y: 0.030660190800139427 },\n { x: -7.529999999999279e-7, y: 0.00831821668538952 },\n { x: -7.51999999999928e-7, y: 0.014295025150173776 },\n { x: -7.50999999999928e-7, y: 0.03738171839841807 },\n { x: -7.49999999999928e-7, y: -0.002281660602468275 },\n { x: -7.48999999999928e-7, y: 0.011471266269029789 },\n { x: -7.479999999999281e-7, y: 0.0216577255196688 },\n { x: -7.469999999999281e-7, y: 0.005750570569288274 },\n { x: -7.459999999999281e-7, y: -0.032587461927133576 },\n { x: -7.449999999999282e-7, y: -0.01681796218369945 },\n { x: -7.439999999999282e-7, y: 0.03304170188676783 },\n { x: -7.429999999999282e-7, y: -0.003692451658323054 },\n { x: -7.419999999999283e-7, y: -0.0030563850883970054 },\n { x: -7.409999999999283e-7, y: 0.0016895485700962553 },\n { x: -7.399999999999283e-7, y: -0.018213769450676563 },\n { x: -7.389999999999284e-7, y: 0.0251583969150544 },\n { x: -7.379999999999284e-7, y: 0.03721906823525033 },\n { x: -7.369999999999284e-7, y: 0.014332750958438532 },\n { x: -7.359999999999285e-7, y: 0.004018506071974108 },\n { x: -7.349999999999285e-7, y: -0.009328895241614005 },\n { x: -7.339999999999285e-7, y: -0.017935786289793258 },\n { x: -7.329999999999285e-7, y: 0.03735106821200738 },\n { x: -7.319999999999286e-7, y: -0.010786065959145113 },\n { x: -7.309999999999286e-7, y: -0.02883254651910972 },\n { x: -7.299999999999286e-7, y: 0.00428667254889503 },\n { x: -7.289999999999287e-7, y: -0.03773908537930853 },\n { x: -7.279999999999287e-7, y: -0.0002931725709218301 },\n { x: -7.269999999999287e-7, y: 0.036716197921170875 },\n { x: -7.259999999999288e-7, y: -0.026457202804986164 },\n { x: -7.249999999999288e-7, y: 0.02423487257642817 },\n { x: -7.239999999999288e-7, y: -0.02343398583763106 },\n { x: -7.229999999999289e-7, y: -0.013925319635537338 },\n { x: -7.219999999999289e-7, y: 0.03538221489266571 },\n { x: -7.209999999999289e-7, y: -0.0008697835998210185 },\n { x: -7.199999999999289e-7, y: -0.022260767783963985 },\n { x: -7.18999999999929e-7, y: 0.012419595388602241 },\n { x: -7.17999999999929e-7, y: -0.03196548593981394 },\n { x: -7.16999999999929e-7, y: 0.024714985836480807 },\n { x: -7.159999999999291e-7, y: -0.018956228122529246 },\n { x: -7.149999999999291e-7, y: -0.031300745054078455 },\n { x: -7.139999999999291e-7, y: -0.0348782747532691 },\n { x: -7.129999999999292e-7, y: -0.013674107136283187 },\n { x: -7.119999999999292e-7, y: 0.005432015098493471 },\n { x: -7.109999999999292e-7, y: -0.00887826641364437 },\n { x: -7.099999999999293e-7, y: 0.02747122902020626 },\n { x: -7.089999999999293e-7, y: 0.005285957009757245 },\n { x: -7.079999999999293e-7, y: -0.0304346099279643 },\n { x: -7.069999999999293e-7, y: -0.033989737617403454 },\n { x: -7.059999999999294e-7, y: 0.02928696213333436 },\n { x: -7.049999999999294e-7, y: 0.03092709313677574 },\n { x: -7.039999999999294e-7, y: 0.0220907100004837 },\n { x: -7.029999999999295e-7, y: 0.002097081022607098 },\n { x: -7.019999999999295e-7, y: 0.02927584963188477 },\n { x: -7.009999999999295e-7, y: -0.026563025053022403 },\n { x: -6.999999999999296e-7, y: 0.027955356506882835 },\n { x: -6.989999999999296e-7, y: 0.011717749159196785 },\n { x: -6.979999999999296e-7, y: -0.01844583797651137 },\n { x: -6.969999999999297e-7, y: -0.03279512571645914 },\n { x: -6.959999999999297e-7, y: 0.030106953551930746 },\n { x: -6.949999999999297e-7, y: -0.020434368749354236 },\n { x: -6.939999999999297e-7, y: 0.027718405028198636 },\n { x: -6.929999999999298e-7, y: -0.023812127065734236 },\n { x: -6.919999999999298e-7, y: -0.016961517011275684 },\n { x: -6.909999999999298e-7, y: 0.007860640128169193 },\n { x: -6.899999999999299e-7, y: 0.0072246231204643584 },\n { x: -6.889999999999299e-7, y: -0.026809990666068734 },\n { x: -6.879999999999299e-7, y: 0.019094685110403936 },\n { x: -6.8699999999993e-7, y: 0.01910260361407817 },\n { x: -6.8599999999993e-7, y: -0.021892264193136907 },\n { x: -6.8499999999993e-7, y: -0.0015051666720148052 },\n { x: -6.8399999999993e-7, y: 0.001677891907363871 },\n { x: -6.829999999999301e-7, y: 0.006121967768864928 },\n { x: -6.819999999999301e-7, y: -0.01641753794052324 },\n { x: -6.809999999999301e-7, y: -0.026200855304732047 },\n { x: -6.799999999999302e-7, y: 0.014921284988103039 },\n { x: -6.789999999999302e-7, y: -0.02802718187016387 },\n { x: -6.779999999999302e-7, y: 0.0270094861069588 },\n { x: -6.769999999999303e-7, y: -0.03280403880906488 },\n { x: -6.759999999999303e-7, y: -0.006654548789746699 },\n { x: -6.749999999999303e-7, y: 0.01059287602364014 },\n { x: -6.739999999999304e-7, y: 0.00459015733253834 },\n { x: -6.729999999999304e-7, y: 0.03210706378427855 },\n { x: -6.719999999999304e-7, y: -0.027332589509352783 },\n { x: -6.709999999999305e-7, y: -0.03638117773089946 },\n { x: -6.699999999999305e-7, y: -0.0313984494673226 },\n { x: -6.689999999999305e-7, y: 0.022509852690589686 },\n { x: -6.679999999999305e-7, y: -0.011222849987818764 },\n { x: -6.669999999999306e-7, y: 0.0354456902138389 },\n { x: -6.659999999999306e-7, y: -0.035355338381689735 },\n { x: -6.649999999999306e-7, y: -0.03273456372042448 },\n { x: -6.639999999999307e-7, y: 0.037632377993272195 },\n { x: -6.629999999999307e-7, y: -0.0032497165509312045 },\n { x: -6.619999999999307e-7, y: -0.00525812192844277 },\n { x: -6.609999999999308e-7, y: 0.026082411463927743 },\n { x: -6.599999999999308e-7, y: 0.0005371650287673598 },\n { x: -6.589999999999308e-7, y: -0.005402311725754774 },\n { x: -6.579999999999309e-7, y: 0.029669042177349808 },\n { x: -6.569999999999309e-7, y: -0.0165022373391947 },\n { x: -6.559999999999309e-7, y: 0.03393076455731495 },\n { x: -6.549999999999309e-7, y: 0.007333906715309948 },\n { x: -6.53999999999931e-7, y: -0.028745892897458113 },\n { x: -6.52999999999931e-7, y: 0.02323790254517157 },\n { x: -6.51999999999931e-7, y: 0.0023720779857305777 },\n { x: -6.509999999999311e-7, y: 0.013015333281979458 },\n { x: -6.499999999999311e-7, y: 0.026857012226457568 },\n { x: -6.489999999999311e-7, y: -0.01897999950646951 },\n { x: -6.479999999999312e-7, y: 0.027275525359059215 },\n { x: -6.469999999999312e-7, y: -0.006744561827243408 },\n { x: -6.459999999999312e-7, y: -0.02128910714976712 },\n { x: -6.449999999999312e-7, y: 0.036536987158046264 },\n { x: -6.439999999999313e-7, y: -0.03262356204871867 },\n { x: -6.429999999999313e-7, y: -0.02302919180005553 },\n { x: -6.419999999999313e-7, y: -0.02513408612064682 },\n { x: -6.409999999999314e-7, y: -0.03649315076213799 },\n { x: -6.399999999999314e-7, y: 0.004837253568413848 },\n { x: -6.389999999999314e-7, y: -0.01987630083704264 },\n { x: -6.379999999999315e-7, y: 0.0182994090764373 },\n { x: -6.369999999999315e-7, y: 0.0037682857458279867 },\n { x: -6.359999999999315e-7, y: -0.025857645157095616 },\n { x: -6.349999999999316e-7, y: -0.002547405148933613 },\n { x: -6.339999999999316e-7, y: 0.0012864483880417716 },\n { x: -6.329999999999316e-7, y: 0.01656586953278925 },\n { x: -6.319999999999316e-7, y: 0.005633296789070536 },\n { x: -6.309999999999317e-7, y: -0.02692909228518187 },\n { x: -6.299999999999317e-7, y: 0.033034091430707326 },\n { x: -6.289999999999317e-7, y: 0.000841324146058516 },\n { x: -6.279999999999318e-7, y: 0.02117952105833375 },\n { x: -6.269999999999318e-7, y: -0.021910890070447463 },\n { x: -6.259999999999318e-7, y: -0.0012603429754274448 },\n { x: -6.249999999999319e-7, y: -0.000029963623049062668 },\n { x: -6.239999999999319e-7, y: 0.011504326854161978 },\n { x: -6.229999999999319e-7, y: 0.013443213956065443 },\n { x: -6.21999999999932e-7, y: 0.03423905325494616 },\n { x: -6.20999999999932e-7, y: -0.0012014379203648814 },\n { x: -6.19999999999932e-7, y: -0.03681681489040827 },\n { x: -6.18999999999932e-7, y: -0.011696922483330499 },\n { x: -6.179999999999321e-7, y: 0.004064106555042659 },\n { x: -6.169999999999321e-7, y: 0.026522292233923304 },\n { x: -6.159999999999321e-7, y: 0.026303978180255268 },\n { x: -6.149999999999322e-7, y: -0.012059156570144934 },\n { x: -6.139999999999322e-7, y: 0.021788653083909853 },\n { x: -6.129999999999322e-7, y: -0.022208000100723588 },\n { x: -6.119999999999323e-7, y: 0.013426097878221969 },\n { x: -6.109999999999323e-7, y: -0.019190120926348413 },\n { x: -6.099999999999323e-7, y: 0.029542252697688398 },\n { x: -6.089999999999324e-7, y: -0.021229043465104694 },\n { x: -6.079999999999324e-7, y: -0.02678096061500068 },\n { x: -6.069999999999324e-7, y: 0.018500261386440443 },\n { x: -6.059999999999324e-7, y: -0.03259508777224578 },\n { x: -6.049999999999325e-7, y: 0.021742044288600153 },\n { x: -6.039999999999325e-7, y: 0.02200122800120708 },\n { x: -6.029999999999325e-7, y: -0.00714686327800051 },\n { x: -6.019999999999326e-7, y: -0.01693199206884209 },\n { x: -6.009999999999326e-7, y: -0.024062566092241555 },\n { x: -5.999999999999326e-7, y: -0.0012649725384623466 },\n { x: -5.989999999999327e-7, y: 0.006787035066740783 },\n { x: -5.979999999999327e-7, y: -0.028662918760442524 },\n { x: -5.969999999999327e-7, y: 0.03292025923605793 },\n { x: -5.959999999999328e-7, y: -0.028248750005335662 },\n { x: -5.949999999999328e-7, y: 0.005911788375894198 },\n { x: -5.939999999999328e-7, y: 0.013617901199125624 },\n { x: -5.929999999999328e-7, y: -0.009851667093976588 },\n { x: -5.919999999999329e-7, y: 0.006991583991121393 },\n { x: -5.909999999999329e-7, y: 0.037391102216933494 },\n { x: -5.899999999999329e-7, y: -0.00425707469207949 },\n { x: -5.88999999999933e-7, y: -0.016339341319091674 },\n { x: -5.87999999999933e-7, y: 0.038167253730834946 },\n { x: -5.86999999999933e-7, y: 0.020894697876456935 },\n { x: -5.859999999999331e-7, y: -0.01918880894873754 },\n { x: -5.849999999999331e-7, y: -0.023041720730246493 },\n { x: -5.839999999999331e-7, y: -0.030218680197106256 },\n { x: -5.829999999999332e-7, y: 0.027228109860258032 },\n { x: -5.819999999999332e-7, y: -0.02895668994770278 },\n { x: -5.809999999999332e-7, y: -0.020615890258674288 },\n { x: -5.799999999999332e-7, y: -0.03677379199836666 },\n { x: -5.789999999999333e-7, y: 0.03065222249411227 },\n { x: -5.779999999999333e-7, y: -0.02692351686015201 },\n { x: -5.769999999999333e-7, y: -0.03347121552609948 },\n { x: -5.759999999999334e-7, y: -0.018436815949925033 },\n { x: -5.749999999999334e-7, y: -0.020711923304145244 },\n { x: -5.739999999999334e-7, y: 0.015515264813902845 },\n { x: -5.729999999999335e-7, y: 0.020797217592234296 },\n { x: -5.719999999999335e-7, y: 0.03688947463017097 },\n { x: -5.709999999999335e-7, y: 0.004346529244960781 },\n { x: -5.699999999999336e-7, y: -0.02980132424030097 },\n { x: -5.689999999999336e-7, y: -0.0208207401988313 },\n { x: -5.679999999999336e-7, y: -0.0153339790885583 },\n { x: -5.669999999999336e-7, y: 0.037197042598921974 },\n { x: -5.659999999999337e-7, y: -0.020771203342421902 },\n { x: -5.649999999999337e-7, y: 0.038048546092983825 },\n { x: -5.639999999999337e-7, y: 0.021681075659839816 },\n { x: -5.629999999999338e-7, y: 0.038013314656745845 },\n { x: -5.619999999999338e-7, y: 0.007790282935868771 },\n { x: -5.609999999999338e-7, y: 0.0319063573956932 },\n { x: -5.599999999999339e-7, y: 0.010494676054734347 },\n { x: -5.589999999999339e-7, y: -0.03301383949974486 },\n { x: -5.579999999999339e-7, y: -0.003371837164825826 },\n { x: -5.56999999999934e-7, y: 0.037796564074388445 },\n { x: -5.55999999999934e-7, y: -0.0068843456160199165 },\n { x: -5.54999999999934e-7, y: -0.0016397799921726867 },\n { x: -5.53999999999934e-7, y: -0.027033925958003562 },\n { x: -5.529999999999341e-7, y: 0.030837625712965895 },\n { x: -5.519999999999341e-7, y: 0.02402482696409352 },\n { x: -5.509999999999341e-7, y: 0.005365150378940554 },\n { x: -5.499999999999342e-7, y: -0.002699016971069865 },\n { x: -5.489999999999342e-7, y: -0.01689677285149041 },\n { x: -5.479999999999342e-7, y: 0.034945223123161194 },\n { x: -5.469999999999343e-7, y: -0.02477631221755628 },\n { x: -5.459999999999343e-7, y: 0.002752120716507772 },\n { x: -5.449999999999343e-7, y: -0.01280693354681033 },\n { x: -5.439999999999344e-7, y: -0.018987931888737316 },\n { x: -5.429999999999344e-7, y: 0.03623666664093101 },\n { x: -5.419999999999344e-7, y: -0.02048956128127825 },\n { x: -5.409999999999344e-7, y: -0.013620046993659209 },\n { x: -5.399999999999345e-7, y: 0.0323835954094382 },\n { x: -5.389999999999345e-7, y: -0.009018041646379121 },\n { x: -5.379999999999345e-7, y: -0.010114627595053187 },\n { x: -5.369999999999346e-7, y: -0.038318943615224664 },\n { x: -5.359999999999346e-7, y: 0.015759376601194613 },\n { x: -5.349999999999346e-7, y: -0.0215600233422073 },\n { x: -5.339999999999347e-7, y: -0.015502455862315223 },\n { x: -5.329999999999347e-7, y: -0.01637689200293658 },\n { x: -5.319999999999347e-7, y: 0.037296678672567016 },\n { x: -5.309999999999348e-7, y: 0.00016984160083190658 },\n { x: -5.299999999999348e-7, y: 0.020208980877136348 },\n { x: -5.289999999999348e-7, y: 0.02106492574351752 },\n { x: -5.279999999999348e-7, y: 0.010140411074034801 },\n { x: -5.269999999999349e-7, y: 0.012030641892448275 },\n { x: -5.259999999999349e-7, y: -0.0160382673405169 },\n { x: -5.249999999999349e-7, y: -0.008389576091561253 },\n { x: -5.23999999999935e-7, y: -0.024672980475083036 },\n { x: -5.22999999999935e-7, y: 0.019835518594130918 },\n { x: -5.21999999999935e-7, y: 0.01894037634659523 },\n { x: -5.209999999999351e-7, y: -0.0037410433972414328 },\n { x: -5.199999999999351e-7, y: 0.030193826581296927 },\n { x: -5.189999999999351e-7, y: -0.030511069499683647 },\n { x: -5.179999999999352e-7, y: 0.004402151027481887 },\n { x: -5.169999999999352e-7, y: 0.013669149116530884 },\n { x: -5.159999999999352e-7, y: -0.008998797248273235 },\n { x: -5.149999999999352e-7, y: -0.0075357382227624415 },\n { x: -5.139999999999353e-7, y: 0.027307552666633022 },\n { x: -5.129999999999353e-7, y: -0.008714039875602212 },\n { x: -5.119999999999353e-7, y: -0.010654556595364151 },\n { x: -5.109999999999354e-7, y: -0.014094754058061374 },\n { x: -5.099999999999354e-7, y: -0.005923052582552714 },\n { x: -5.089999999999354e-7, y: 0.037126934365119164 },\n { x: -5.079999999999355e-7, y: 0.024855077671973914 },\n { x: -5.069999999999355e-7, y: -0.00899826193442723 },\n { x: -5.059999999999355e-7, y: -0.020175311969571518 },\n { x: -5.049999999999356e-7, y: -0.009670224239580071 },\n { x: -5.039999999999356e-7, y: -0.02449927600855842 },\n { x: -5.029999999999356e-7, y: 0.016877202567956405 },\n { x: -5.019999999999356e-7, y: 0.024015249183921394 },\n { x: -5.009999999999357e-7, y: 0.016692677709990222 },\n { x: -4.999999999999357e-7, y: -0.03061607807128818 },\n { x: -4.989999999999357e-7, y: 0.0328830465502613 },\n { x: -4.979999999999358e-7, y: -0.02536460955878092 },\n { x: -4.969999999999358e-7, y: -0.00701673329043003 },\n { x: -4.959999999999358e-7, y: -0.00009851986595585799 },\n { x: -4.949999999999359e-7, y: 0.00045193160896987353 },\n { x: -4.939999999999359e-7, y: -0.02821931782806969 },\n { x: -4.929999999999359e-7, y: -0.008911267882016611 },\n { x: -4.91999999999936e-7, y: 0.025025915132938267 },\n { x: -4.90999999999936e-7, y: 0.008696595962662378 },\n { x: -4.89999999999936e-7, y: -0.03148170988750545 },\n { x: -4.88999999999936e-7, y: 0.02601655824539923 },\n { x: -4.879999999999361e-7, y: 0.03716094133856492 },\n { x: -4.869999999999361e-7, y: -0.026329335413725733 },\n { x: -4.859999999999361e-7, y: -0.019010987890180363 },\n { x: -4.849999999999362e-7, y: -0.03696500330457485 },\n { x: -4.839999999999362e-7, y: 0.03722147274506833 },\n { x: -4.829999999999362e-7, y: -0.005944847278957255 },\n { x: -4.819999999999363e-7, y: 0.02273284393958523 },\n { x: -4.809999999999363e-7, y: -0.026743775014016584 },\n { x: -4.799999999999363e-7, y: 0.003374896427794901 },\n { x: -4.789999999999364e-7, y: -0.021645314139998945 },\n { x: -4.779999999999364e-7, y: -0.03740958138926493 },\n { x: -4.769999999999364e-7, y: 0.009461506309069632 },\n { x: -4.759999999999364e-7, y: 0.0013674561444570773 },\n { x: -4.7499999999993637e-7, y: 0.016354953110585334 },\n { x: -4.7399999999993635e-7, y: -0.02324457265267391 },\n { x: -4.7299999999993633e-7, y: -0.01673664805640501 },\n { x: -4.719999999999363e-7, y: -0.00015193183769306276 },\n { x: -4.709999999999363e-7, y: 0.0008039217090670105 },\n { x: -4.6999999999993626e-7, y: 0.01597715371487733 },\n { x: -4.6899999999993624e-7, y: 0.0019769652104212818 },\n { x: -4.679999999999362e-7, y: -0.032851011423476704 },\n { x: -4.669999999999362e-7, y: 0.06932641920808683 },\n { x: -4.6599999999993617e-7, y: 0.02656540293626496 },\n { x: -4.6499999999993615e-7, y: 0.007897039000335783 },\n { x: -4.6399999999993613e-7, y: -0.027103847662122805 },\n { x: -4.629999999999361e-7, y: 0.029694558179882837 },\n { x: -4.619999999999361e-7, y: 0.0018248423122610568 },\n { x: -4.6099999999993606e-7, y: 0.009758548707735707 },\n { x: -4.5999999999993604e-7, y: -0.009428239581410956 },\n { x: -4.58999999999936e-7, y: -0.0356313429142074 },\n { x: -4.57999999999936e-7, y: 0.03593672717025784 },\n { x: -4.5699999999993597e-7, y: 0.018531571981076727 },\n { x: -4.5599999999993595e-7, y: 0.016552444396710556 },\n { x: -4.5499999999993593e-7, y: -0.002337247496148302 },\n { x: -4.539999999999359e-7, y: 0.0007785083458110871 },\n { x: -4.529999999999359e-7, y: -0.02905886063018612 },\n { x: -4.5199999999993586e-7, y: 0.036852363387532006 },\n { x: -4.5099999999993584e-7, y: 0.0022927258407498263 },\n { x: -4.499999999999358e-7, y: 0.032606694860042994 },\n { x: -4.489999999999358e-7, y: -0.034456756692891444 },\n { x: -4.4799999999993577e-7, y: -0.01984547778443541 },\n { x: -4.4699999999993575e-7, y: 0.013405428432036856 },\n { x: -4.4599999999993573e-7, y: 0.026208836494072685 },\n { x: -4.449999999999357e-7, y: 0.014176530718128064 },\n { x: -4.439999999999357e-7, y: -0.03456288120110022 },\n { x: -4.4299999999993566e-7, y: 0.016830473615826024 },\n { x: -4.4199999999993564e-7, y: 0.023872773074407688 },\n { x: -4.409999999999356e-7, y: 0.027047005024774126 },\n { x: -4.399999999999356e-7, y: -0.01678895619778788 },\n { x: -4.3899999999993557e-7, y: -0.005711371228984338 },\n { x: -4.3799999999993555e-7, y: 0.03022710868431257 },\n { x: -4.3699999999993553e-7, y: 0.02409226383776998 },\n { x: -4.359999999999355e-7, y: 0.016454030380970534 },\n { x: -4.349999999999355e-7, y: -0.016608148401473802 },\n { x: -4.3399999999993546e-7, y: 0.004617163937858662 },\n { x: -4.3299999999993544e-7, y: 0.03498457738044681 },\n { x: -4.319999999999354e-7, y: 0.006581533175657876 },\n { x: -4.309999999999354e-7, y: 0.01352623392192395 },\n { x: -4.2999999999993537e-7, y: 0.030714274070325457 },\n { x: -4.2899999999993535e-7, y: 0.036538763878164994 },\n { x: -4.2799999999993533e-7, y: 0.03769958720522041 },\n { x: -4.269999999999353e-7, y: -0.0024929375955899074 },\n { x: -4.259999999999353e-7, y: -0.024323310595140344 },\n { x: -4.2499999999993526e-7, y: 0.013076787058204128 },\n { x: -4.2399999999993524e-7, y: -0.013467613220872292 },\n { x: -4.229999999999352e-7, y: -0.027774140084367967 },\n { x: -4.219999999999352e-7, y: 0.004517907339911999 },\n { x: -4.2099999999993517e-7, y: 0.03749945939631262 },\n { x: -4.1999999999993515e-7, y: 0.004443943512421321 },\n { x: -4.1899999999993513e-7, y: 0.004115654475036444 },\n { x: -4.179999999999351e-7, y: -0.014654039306239115 },\n { x: -4.169999999999351e-7, y: 0.038109915541014415 },\n { x: -4.1599999999993506e-7, y: 0.03746261698864426 },\n { x: -4.1499999999993504e-7, y: -0.0008754086945264309 },\n { x: -4.13999999999935e-7, y: -0.028624933767044402 },\n { x: -4.12999999999935e-7, y: -0.016959004475366465 },\n { x: -4.11999999999935e-7, y: 0.0012284875710190423 },\n { x: -4.1099999999993495e-7, y: -0.008583333568278161 },\n { x: -4.0999999999993493e-7, y: 0.029831692307815773 },\n { x: -4.089999999999349e-7, y: -0.00960009174369107 },\n { x: -4.079999999999349e-7, y: -0.023298294635352924 },\n { x: -4.0699999999993486e-7, y: 0.014722499395278248 },\n { x: -4.0599999999993484e-7, y: -0.009409509873052066 },\n { x: -4.049999999999348e-7, y: -0.01877895297827343 },\n { x: -4.039999999999348e-7, y: 0.035607385872300674 },\n { x: -4.029999999999348e-7, y: 0.027544753079410875 },\n { x: -4.0199999999993475e-7, y: -0.02656906620890856 },\n { x: -4.0099999999993473e-7, y: 0.015627276790128958 },\n { x: -3.999999999999347e-7, y: 0.02218681102676791 },\n { x: -3.989999999999347e-7, y: -0.005376876812212225 },\n { x: -3.9799999999993466e-7, y: -0.007886995843671056 },\n { x: -3.9699999999993464e-7, y: 0.02142751399413668 },\n { x: -3.959999999999346e-7, y: -0.016887140215574064 },\n { x: -3.949999999999346e-7, y: 0.03624855923128197 },\n { x: -3.939999999999346e-7, y: 0.008104464425445997 },\n { x: -3.9299999999993455e-7, y: -0.0032750014970892396 },\n { x: -3.9199999999993453e-7, y: -0.030805592590375037 },\n { x: -3.909999999999345e-7, y: -0.014122601108262673 },\n { x: -3.899999999999345e-7, y: 0.021798765767953858 },\n { x: -3.8899999999993446e-7, y: 0.03829533478050582 },\n { x: -3.8799999999993444e-7, y: 0.02837964532950979 },\n { x: -3.869999999999344e-7, y: -0.027123323515050545 },\n { x: -3.859999999999344e-7, y: -0.019015802863131825 },\n { x: -3.849999999999344e-7, y: -0.033897898380783 },\n { x: -3.8399999999993435e-7, y: -0.02608445807495351 },\n { x: -3.8299999999993433e-7, y: -0.02037540262438684 },\n { x: -3.819999999999343e-7, y: 0.0131079444841664 },\n { x: -3.809999999999343e-7, y: 0.011345953738193281 },\n { x: -3.7999999999993426e-7, y: 0.023746785693104424 },\n { x: -3.7899999999993424e-7, y: -0.0012674335369404627 },\n { x: -3.779999999999342e-7, y: -0.016961371118575243 },\n { x: -3.769999999999342e-7, y: -0.01947993499109862 },\n { x: -3.759999999999342e-7, y: 0.029100593786119774 },\n { x: -3.7499999999993415e-7, y: 0.005747579368175604 },\n { x: -3.7399999999993413e-7, y: -0.023783933782955895 },\n { x: -3.729999999999341e-7, y: -0.016567949412315493 },\n { x: -3.719999999999341e-7, y: 0.00915024742486819 },\n { x: -3.7099999999993406e-7, y: 0.029849594553970314 },\n { x: -3.6999999999993404e-7, y: 0.0045325909916444935 },\n { x: -3.68999999999934e-7, y: -0.0015042669569214448 },\n { x: -3.67999999999934e-7, y: -0.025004458755548447 },\n { x: -3.66999999999934e-7, y: -0.010508426559348936 },\n { x: -3.6599999999993395e-7, y: -0.02697610737889414 },\n { x: -3.6499999999993393e-7, y: -0.011352360485399827 },\n { x: -3.639999999999339e-7, y: -0.038020789012463425 },\n { x: -3.629999999999339e-7, y: -0.0205532335505078 },\n { x: -3.6199999999993386e-7, y: 0.012163200088658266 },\n { x: -3.6099999999993384e-7, y: 0.015273909929938252 },\n { x: -3.599999999999338e-7, y: -0.02235492756287762 },\n { x: -3.589999999999338e-7, y: -0.01866605465802742 },\n { x: -3.579999999999338e-7, y: 0.0014292383924288492 },\n { x: -3.5699999999993375e-7, y: 0.035948995274460625 },\n { x: -3.5599999999993373e-7, y: -0.03370134007133872 },\n { x: -3.549999999999337e-7, y: 0.03023431426334664 },\n { x: -3.539999999999337e-7, y: -0.034331327176150415 },\n { x: -3.5299999999993366e-7, y: -0.03444831481803883 },\n { x: -3.5199999999993364e-7, y: 0.01063462228947142 },\n { x: -3.509999999999336e-7, y: -0.01489766898439868 },\n { x: -3.499999999999336e-7, y: 0.03586754690355203 },\n { x: -3.489999999999336e-7, y: 0.016184357479110553 },\n { x: -3.4799999999993355e-7, y: 0.010408493799289202 },\n { x: -3.4699999999993353e-7, y: 0.016522189266849552 },\n { x: -3.459999999999335e-7, y: -0.023448213183515292 },\n { x: -3.449999999999335e-7, y: 0.0033972943416049907 },\n { x: -3.4399999999993346e-7, y: -0.01972712801423758 },\n { x: -3.4299999999993344e-7, y: -0.016491964007021458 },\n { x: -3.419999999999334e-7, y: -0.007382138015212052 },\n { x: -3.409999999999334e-7, y: -0.035121234567728046 },\n { x: -3.399999999999334e-7, y: 0.03821428153002842 },\n { x: -3.3899999999993335e-7, y: -0.011472240052964676 },\n { x: -3.3799999999993333e-7, y: 0.0183845167764827 },\n { x: -3.369999999999333e-7, y: 0.005725350498037771 },\n { x: -3.359999999999333e-7, y: -0.03470912388654533 },\n { x: -3.3499999999993327e-7, y: -0.00705656191395721 },\n { x: -3.3399999999993324e-7, y: 0.027291201799425978 },\n { x: -3.329999999999332e-7, y: -0.021202866600286814 },\n { x: -3.319999999999332e-7, y: -0.011889542799743299 },\n { x: -3.309999999999332e-7, y: 0.02741262776875824 },\n { x: -3.2999999999993315e-7, y: 0.03524542654188016 },\n { x: -3.2899999999993313e-7, y: -0.029743333395877255 },\n { x: -3.279999999999331e-7, y: -0.03545871693571225 },\n { x: -3.269999999999331e-7, y: 0.037481238634134634 },\n { x: -3.2599999999993307e-7, y: 0.000868038712042484 },\n { x: -3.2499999999993304e-7, y: 0.008138191252355896 },\n { x: -3.23999999999933e-7, y: 0.03028047238881504 },\n { x: -3.22999999999933e-7, y: -0.00847797058562639 },\n { x: -3.21999999999933e-7, y: 0.03775654659760015 },\n { x: -3.2099999999993295e-7, y: -0.013823588073563604 },\n { x: -3.1999999999993293e-7, y: -0.02254704395135032 },\n { x: -3.189999999999329e-7, y: 0.009525372189035595 },\n { x: -3.179999999999329e-7, y: 0.0023775445960528977 },\n { x: -3.1699999999993287e-7, y: 0.027114001841603126 },\n { x: -3.1599999999993284e-7, y: 0.0020019980896420577 },\n { x: -3.149999999999328e-7, y: -0.037692027283707186 },\n { x: -3.139999999999328e-7, y: 0.024365911638839388 },\n { x: -3.129999999999328e-7, y: 0.038036834457867735 },\n { x: -3.1199999999993275e-7, y: 0.026564484320203263 },\n { x: -3.1099999999993273e-7, y: -0.03696169754571912 },\n { x: -3.099999999999327e-7, y: -0.01995828013795558 },\n { x: -3.089999999999327e-7, y: 0.02367356023645286 },\n { x: -3.0799999999993267e-7, y: 0.01140525596555517 },\n { x: -3.0699999999993264e-7, y: 0.0078097665333482 },\n { x: -3.059999999999326e-7, y: -0.0014158938452822933 },\n { x: -3.049999999999326e-7, y: 0.02426850402271181 },\n { x: -3.039999999999326e-7, y: -0.02325227193707388 },\n { x: -3.0299999999993256e-7, y: -0.00566885280125813 },\n { x: -3.0199999999993253e-7, y: -0.03729116676410857 },\n { x: -3.009999999999325e-7, y: 0.015028079439946739 },\n { x: -2.999999999999325e-7, y: 0.009513073411901551 },\n { x: -2.9899999999993247e-7, y: 0.005344653905798962 },\n { x: -2.9799999999993244e-7, y: -0.025153867654681333 },\n { x: -2.969999999999324e-7, y: -0.010104536826985427 },\n { x: -2.959999999999324e-7, y: 0.011694700030693398 },\n { x: -2.949999999999324e-7, y: 0.030316109820884007 },\n { x: -2.9399999999993236e-7, y: -0.018684330958494467 },\n { x: -2.9299999999993233e-7, y: 0.0032932605733379744 },\n { x: -2.919999999999323e-7, y: -0.008830329488269032 },\n { x: -2.909999999999323e-7, y: 0.0028543933230057213 },\n { x: -2.8999999999993227e-7, y: -0.011823972351564719 },\n { x: -2.8899999999993224e-7, y: 0.0292281096060689 },\n { x: -2.879999999999322e-7, y: -0.033097365562273745 },\n { x: -2.869999999999322e-7, y: 0.013075176774745338 },\n { x: -2.859999999999322e-7, y: 0.01916467486574591 },\n { x: -2.8499999999993216e-7, y: -0.0030577751660357017 },\n { x: -2.8399999999993213e-7, y: 0.0024698753505127766 },\n { x: -2.829999999999321e-7, y: 0.006726865754168589 },\n { x: -2.819999999999321e-7, y: -0.03352103444506385 },\n { x: -2.8099999999993207e-7, y: -0.0006328725955294857 },\n { x: -2.7999999999993204e-7, y: -0.022072865557930022 },\n { x: -2.78999999999932e-7, y: -0.015087482287251614 },\n { x: -2.77999999999932e-7, y: 0.021930827610196182 },\n { x: -2.76999999999932e-7, y: 0.036114252942463614 },\n { x: -2.7599999999993196e-7, y: 0.013480463361941978 },\n { x: -2.7499999999993193e-7, y: 0.036119136218706195 },\n { x: -2.739999999999319e-7, y: -0.03737441500639726 },\n { x: -2.729999999999319e-7, y: -0.020643728344049487 },\n { x: -2.7199999999993187e-7, y: -0.011789293940388348 },\n { x: -2.7099999999993184e-7, y: -0.008195787899156506 },\n { x: -2.699999999999318e-7, y: 0.03285209369418967 },\n { x: -2.689999999999318e-7, y: 0.0317778992871913 },\n { x: -2.679999999999318e-7, y: -0.006464683270472996 },\n { x: -2.6699999999993176e-7, y: 0.01824154316645744 },\n { x: -2.6599999999993173e-7, y: -0.015422912801715951 },\n { x: -2.649999999999317e-7, y: -0.025806199554868035 },\n { x: -2.639999999999317e-7, y: 0.035238314439241906 },\n { x: -2.6299999999993167e-7, y: -0.01958904955047636 },\n { x: -2.6199999999993165e-7, y: 0.016304345038460073 },\n { x: -2.609999999999316e-7, y: -0.016831681665570593 },\n { x: -2.599999999999316e-7, y: -0.0006191874808557794 },\n { x: -2.589999999999316e-7, y: -0.036482341947945425 },\n { x: -2.5799999999993156e-7, y: 0.011924383438017048 },\n { x: -2.5699999999993153e-7, y: 0.0034860023883373473 },\n { x: -2.559999999999315e-7, y: 0.01625724854429595 },\n { x: -2.549999999999315e-7, y: -0.0045323255757287965 },\n { x: -2.5399999999993147e-7, y: -0.017418846636385606 },\n { x: -2.5299999999993145e-7, y: -0.008758278674948437 },\n { x: -2.519999999999314e-7, y: 0.028420364197662754 },\n { x: -2.509999999999314e-7, y: 0.006157549009896937 },\n { x: -2.499999999999314e-7, y: 0.03405373137579483 },\n { x: -2.4899999999993136e-7, y: -0.0066285083976237716 },\n { x: -2.4799999999993133e-7, y: 0.011483246916349134 },\n { x: -2.469999999999313e-7, y: -0.001205122467282206 },\n { x: -2.459999999999313e-7, y: 0.03370991547225574 },\n { x: -2.4499999999993127e-7, y: 0.010582462966692649 },\n { x: -2.4399999999993125e-7, y: 0.024981266958621934 },\n { x: -2.429999999999312e-7, y: 0.03202715319183665 },\n { x: -2.419999999999312e-7, y: 0.02166321966569135 },\n { x: -2.409999999999312e-7, y: 0.031510064756146046 },\n { x: -2.3999999999993116e-7, y: -0.02391154825710596 },\n { x: -2.3899999999993113e-7, y: -0.02561748337235069 },\n { x: -2.3799999999993114e-7, y: 0.014928391463372132 },\n { x: -2.3699999999993114e-7, y: 0.023968334923967858 },\n { x: -2.3599999999993115e-7, y: -0.03454698509176921 },\n { x: -2.3499999999993115e-7, y: -0.023742378008478487 },\n { x: -2.3399999999993116e-7, y: 0.034357258293760226 },\n { x: -2.3299999999993116e-7, y: 0.03374519470424609 },\n { x: -2.3199999999993116e-7, y: -0.006905003053431417 },\n { x: -2.3099999999993117e-7, y: 0.024423612260077332 },\n { x: -2.2999999999993117e-7, y: -0.025970144401944215 },\n { x: -2.2899999999993118e-7, y: -0.01585621414527635 },\n { x: -2.2799999999993118e-7, y: 0.03509216437727518 },\n { x: -2.2699999999993119e-7, y: 0.03712317356062595 },\n { x: -2.259999999999312e-7, y: -0.009358822552676121 },\n { x: -2.249999999999312e-7, y: 0.010032357882639687 },\n { x: -2.239999999999312e-7, y: -0.013969217201878607 },\n { x: -2.229999999999312e-7, y: -0.015918118855267355 },\n { x: -2.219999999999312e-7, y: -0.028274321387790412 },\n { x: -2.209999999999312e-7, y: -0.008679952774400862 },\n { x: -2.1999999999993122e-7, y: -0.02564963975030458 },\n { x: -2.1899999999993122e-7, y: 0.017650334243266022 },\n { x: -2.1799999999993122e-7, y: 0.03530758531792346 },\n { x: -2.1699999999993123e-7, y: -0.035911236547750434 },\n { x: -2.1599999999993123e-7, y: 0.0013507887723224893 },\n { x: -2.1499999999993124e-7, y: -0.015565648369075752 },\n { x: -2.1399999999993124e-7, y: -0.016685393487460874 },\n { x: -2.1299999999993125e-7, y: 0.015871369742837826 },\n { x: -2.1199999999993125e-7, y: 0.006046204205466943 },\n { x: -2.1099999999993125e-7, y: -0.0030431216017367565 },\n { x: -2.0999999999993126e-7, y: -0.01044507942983039 },\n { x: -2.0899999999993126e-7, y: 0.03573833959618011 },\n { x: -2.0799999999993127e-7, y: -0.008992997756426781 },\n { x: -2.0699999999993127e-7, y: 0.03696604719411287 },\n { x: -2.0599999999993128e-7, y: -0.015073568321485027 },\n { x: -2.0499999999993128e-7, y: -0.010086736856374245 },\n { x: -2.0399999999993128e-7, y: 0.01410181977929076 },\n { x: -2.029999999999313e-7, y: -0.0058330353626653095 },\n { x: -2.019999999999313e-7, y: 0.015457357583510503 },\n { x: -2.009999999999313e-7, y: -0.017534530556566702 },\n { x: -1.999999999999313e-7, y: -0.035601992619162304 },\n { x: -1.989999999999313e-7, y: 0.007904988832166492 },\n { x: -1.979999999999313e-7, y: 0.02569858165953012 },\n { x: -1.9699999999993131e-7, y: -0.01268522374900902 },\n { x: -1.9599999999993132e-7, y: -0.018121155957264667 },\n { x: -1.9499999999993132e-7, y: 0.02061041143055766 },\n { x: -1.9399999999993133e-7, y: -0.008840215099175694 },\n { x: -1.9299999999993133e-7, y: -0.03652112925199514 },\n { x: -1.9199999999993134e-7, y: 0.008174779623938448 },\n { x: -1.9099999999993134e-7, y: 0.03529952154612975 },\n { x: -1.8999999999993134e-7, y: 0.030368375593192113 },\n { x: -1.8899999999993135e-7, y: -0.02123428780928653 },\n { x: -1.8799999999993135e-7, y: -0.003718508242115864 },\n { x: -1.8699999999993136e-7, y: -0.03468025752054715 },\n { x: -1.8599999999993136e-7, y: 0.026036616409071837 },\n { x: -1.8499999999993137e-7, y: 0.0016423104189708143 },\n { x: -1.8399999999993137e-7, y: 0.03171428469100279 },\n { x: -1.8299999999993137e-7, y: -0.016478522450779937 },\n { x: -1.8199999999993138e-7, y: -0.05789074385915425 },\n { x: -1.8099999999993138e-7, y: -0.0013360377763962552 },\n { x: -1.799999999999314e-7, y: 0.028311933648685825 },\n { x: -1.789999999999314e-7, y: -0.0058701852382468155 },\n { x: -1.779999999999314e-7, y: -0.029190174689918993 },\n { x: -1.769999999999314e-7, y: 0.023188948448225954 },\n { x: -1.759999999999314e-7, y: 0.021815855809314097 },\n { x: -1.749999999999314e-7, y: -0.018607974271348544 },\n { x: -1.739999999999314e-7, y: 0.02214004297327952 },\n { x: -1.7299999999993142e-7, y: -0.023827175966968095 },\n { x: -1.7199999999993142e-7, y: 0.03094264608713723 },\n { x: -1.7099999999993143e-7, y: -0.026174971744903165 },\n { x: -1.6999999999993143e-7, y: -0.025051348319339358 },\n { x: -1.6899999999993143e-7, y: -0.004768120114201645 },\n { x: -1.6799999999993144e-7, y: 0.014081549002571461 },\n { x: -1.6699999999993144e-7, y: 0.03180882132651888 },\n { x: -1.6599999999993145e-7, y: 0.002173689560844717 },\n { x: -1.6499999999993145e-7, y: -0.018737405976084285 },\n { x: -1.6399999999993146e-7, y: -0.014585301650330921 },\n { x: -1.6299999999993146e-7, y: 0.015602049999032364 },\n { x: -1.6199999999993146e-7, y: -0.005610621161915424 },\n { x: -1.6099999999993147e-7, y: 0.02108857916150817 },\n { x: -1.5999999999993147e-7, y: 0.033522554651299344 },\n { x: -1.5899999999993148e-7, y: -0.010920379919065323 },\n { x: -1.5799999999993148e-7, y: 0.033474036356441875 },\n { x: -1.5699999999993149e-7, y: 0.01717633656792932 },\n { x: -1.559999999999315e-7, y: 0.022830139011231158 },\n { x: -1.549999999999315e-7, y: -0.017148088912630352 },\n { x: -1.539999999999315e-7, y: 0.03829531639159738 },\n { x: -1.529999999999315e-7, y: 0.02810785137351485 },\n { x: -1.519999999999315e-7, y: -0.025030886157620027 },\n { x: -1.509999999999315e-7, y: -0.0213331455598955 },\n { x: -1.4999999999993152e-7, y: -0.020643267095945356 },\n { x: -1.4899999999993152e-7, y: -0.003781962323834834 },\n { x: -1.4799999999993152e-7, y: -0.026162796302254283 },\n { x: -1.4699999999993153e-7, y: 0.019724970582389686 },\n { x: -1.4599999999993153e-7, y: -0.0329234572410268 },\n { x: -1.4499999999993154e-7, y: 0.03775546980293661 },\n { x: -1.4399999999993154e-7, y: 0.021949333584469356 },\n { x: -1.4299999999993155e-7, y: 0.009438960886899462 },\n { x: -1.4199999999993155e-7, y: 0.03057407723189284 },\n { x: -1.4099999999993155e-7, y: -0.02842148326974319 },\n { x: -1.3999999999993156e-7, y: -0.007090221090106025 },\n { x: -1.3899999999993156e-7, y: 0.025399609643791343 },\n { x: -1.3799999999993157e-7, y: -0.0006261656652823926 },\n { x: -1.3699999999993157e-7, y: -0.007803680692520011 },\n { x: -1.3599999999993158e-7, y: -0.04110827863463731 },\n { x: -1.3499999999993158e-7, y: -0.011652926734824228 },\n { x: -1.3399999999993158e-7, y: 0.023820436088801238 },\n { x: -1.329999999999316e-7, y: 0.02747139092627198 },\n { x: -1.319999999999316e-7, y: -0.011828710152233303 },\n { x: -1.309999999999316e-7, y: 0.005724307255565378 },\n { x: -1.299999999999316e-7, y: 0.02862619109093727 },\n { x: -1.289999999999316e-7, y: -0.01763804545071117 },\n { x: -1.279999999999316e-7, y: -0.019805710036850794 },\n { x: -1.2699999999993161e-7, y: -0.01812581522641391 },\n { x: -1.2599999999993162e-7, y: -0.021096575063561857 },\n { x: -1.2499999999993162e-7, y: -0.027593275461981093 },\n { x: -1.2399999999993163e-7, y: -0.033034066193210705 },\n { x: -1.2299999999993163e-7, y: -0.012518718767353441 },\n { x: -1.2199999999993164e-7, y: 0.011012397330959425 },\n { x: -1.2099999999993164e-7, y: 0.011997956155848555 },\n { x: -1.1999999999993164e-7, y: -0.030361769753763264 },\n { x: -1.1899999999993165e-7, y: 0.021154731927001322 },\n { x: -1.1799999999993165e-7, y: -0.033016626390005445 },\n { x: -1.1699999999993166e-7, y: 0.007023761187189891 },\n { x: -1.1599999999993166e-7, y: -0.015657603659062783 },\n { x: -1.1499999999993167e-7, y: -0.037535162530381194 },\n { x: -1.1399999999993167e-7, y: 0.005816603778038893 },\n { x: -1.1299999999993167e-7, y: -0.0318834856995062 },\n { x: -1.1199999999993168e-7, y: 0.004925105638142008 },\n { x: -1.1099999999993168e-7, y: 0.02074974287381789 },\n { x: -1.0999999999993169e-7, y: -0.016944896010134457 },\n { x: -1.0899999999993169e-7, y: -0.008617973767884124 },\n { x: -1.079999999999317e-7, y: -0.018525156681826603 },\n { x: -1.069999999999317e-7, y: 0.007908411955996222 },\n { x: -1.059999999999317e-7, y: 0.03729322793984474 },\n { x: -1.0499999999993171e-7, y: -0.01346242076499064 },\n { x: -1.0399999999993171e-7, y: 0.006947684777811931 },\n { x: -1.0299999999993172e-7, y: 0.008749554301109953 },\n { x: -1.0199999999993172e-7, y: 0.017559706810042038 },\n { x: -1.0099999999993173e-7, y: 0.013201622720842262 },\n { x: -9.999999999993173e-8, y: 0.007939822487957665 },\n { x: -9.899999999993173e-8, y: 0.020645714036264678 },\n { x: -9.799999999993174e-8, y: 0.030429070581637557 },\n { x: -9.699999999993174e-8, y: 0.03376194431178459 },\n { x: -9.599999999993175e-8, y: 0.0232257086733735 },\n { x: -9.499999999993175e-8, y: -0.03139777375041945 },\n { x: -9.399999999993176e-8, y: 0.02033376722589085 },\n { x: -9.299999999993176e-8, y: -0.012684972635188892 },\n { x: -9.199999999993176e-8, y: -0.03588213688497629 },\n { x: -9.099999999993177e-8, y: -0.012792930557675138 },\n { x: -8.999999999993177e-8, y: 0.015615604456984228 },\n { x: -8.899999999993178e-8, y: 0.0015307169341800284 },\n { x: -8.799999999993178e-8, y: -0.02452090851465648 },\n { x: -8.699999999993179e-8, y: -0.03773641795367768 },\n { x: -8.599999999993179e-8, y: 0.009388755814108864 },\n { x: -8.49999999999318e-8, y: 0.0016201154022474277 },\n { x: -8.39999999999318e-8, y: 0.010165783731247937 },\n { x: -8.29999999999318e-8, y: -0.028809041808999857 },\n { x: -8.199999999993181e-8, y: -0.003391666369490668 },\n { x: -8.099999999993181e-8, y: 0.02016547688372482 },\n { x: -7.999999999993182e-8, y: 0.002560789204738185 },\n { x: -7.899999999993182e-8, y: 0.022667494756726025 },\n { x: -7.799999999993182e-8, y: -0.01729434894963864 },\n { x: -7.699999999993183e-8, y: 0.028777562098739305 },\n { x: -7.599999999993183e-8, y: 0.020257948289324333 },\n { x: -7.499999999993184e-8, y: -0.018642515354927593 },\n { x: -7.399999999993184e-8, y: -0.03126405831135507 },\n { x: -7.299999999993185e-8, y: -0.026329298740948335 },\n { x: -7.199999999993185e-8, y: 0.03460164939196195 },\n { x: -7.099999999993185e-8, y: 0.02878533358994842 },\n { x: -6.999999999993186e-8, y: 0.014592186664435796 },\n { x: -6.899999999993186e-8, y: -0.0013858611920607236 },\n { x: -6.799999999993187e-8, y: -0.020120241255477653 },\n { x: -6.699999999993187e-8, y: -0.01003516551571638 },\n { x: -6.599999999993188e-8, y: -0.009058619050661975 },\n { x: -6.499999999993188e-8, y: -0.004035245246231536 },\n { x: -6.399999999993188e-8, y: -0.014408928178812366 },\n { x: -6.299999999993189e-8, y: -0.03560678758186685 },\n { x: -6.199999999993189e-8, y: 0.02067392336292016 },\n { x: -6.09999999999319e-8, y: 0.037428992761616674 },\n { x: -5.99999999999319e-8, y: 0.007892352658770075 },\n { x: -5.89999999999319e-8, y: 0.02480034325562441 },\n { x: -5.7999999999931896e-8, y: -0.02561903890440075 },\n { x: -5.6999999999931894e-8, y: 0.007284029639539098 },\n { x: -5.599999999993189e-8, y: -0.006864914235189989 },\n { x: -5.499999999993189e-8, y: -0.017201528539497104 },\n { x: -5.399999999993189e-8, y: -0.03524246528429231 },\n { x: -5.2999999999931885e-8, y: 0.009212736585220583 },\n { x: -5.199999999993188e-8, y: 0.009936157695429387 },\n { x: -5.099999999993188e-8, y: -0.007880647660088674 },\n { x: -4.999999999993188e-8, y: -0.025925770229924334 },\n { x: -4.8999999999931875e-8, y: -0.016957676607607546 },\n { x: -4.799999999993187e-8, y: 0.010393739727449123 },\n { x: -4.699999999993187e-8, y: 0.01956307915249106 },\n { x: -4.599999999993187e-8, y: -0.04220906710971705 },\n { x: -4.4999999999931866e-8, y: -0.027667116945156348 },\n { x: -4.3999999999931864e-8, y: 0.014351862013379695 },\n { x: -4.299999999993186e-8, y: -0.01688050788669551 },\n { x: -4.199999999993186e-8, y: -0.021630213879493904 },\n { x: -4.099999999993186e-8, y: -0.03200662645269142 },\n { x: -3.9999999999931854e-8, y: 0.023918160189289488 },\n { x: -3.899999999993185e-8, y: 0.005884799273377132 },\n { x: -3.799999999993185e-8, y: 0.016028694625617252 },\n { x: -3.699999999993185e-8, y: 0.0074307327352187745 },\n { x: -3.5999999999931845e-8, y: 0.03290753689617773 },\n { x: -3.499999999993184e-8, y: -0.03783530876787333 },\n { x: -3.399999999993184e-8, y: -0.006709617522464693 },\n { x: -3.299999999993184e-8, y: -0.022905817596163565 },\n { x: -3.1999999999931836e-8, y: 0.0017145074007711698 },\n { x: -3.0999999999931833e-8, y: 0.012569166818043574 },\n { x: -2.999999999993183e-8, y: -0.03705526937061218 },\n { x: -2.8999999999931832e-8, y: -0.02869520746628896 },\n { x: -2.7999999999931833e-8, y: 0.025051957716505462 },\n { x: -2.6999999999931834e-8, y: 0.03271439109663386 },\n { x: -2.5999999999931835e-8, y: -0.008136759742715093 },\n { x: -2.4999999999931836e-8, y: -0.029999686307618574 },\n { x: -2.3999999999931837e-8, y: -0.009457858210204485 },\n { x: -2.2999999999931838e-8, y: -0.0235020022911492 },\n { x: -2.199999999993184e-8, y: 0.03545363699212244 },\n { x: -2.099999999993184e-8, y: -0.006624506349505804 },\n { x: -1.999999999993184e-8, y: 0.01972195983930522 },\n { x: -1.8999999999931842e-8, y: -0.018019588446823876 },\n { x: -1.7999999999931843e-8, y: 0.0279022326001525 },\n { x: -1.6999999999931844e-8, y: -0.037293869406612314 },\n { x: -1.5999999999931845e-8, y: 0.009912776034081342 },\n { x: -1.4999999999931846e-8, y: 0.03815086120980311 },\n { x: -1.3999999999931845e-8, y: 0.008300979552872052 },\n { x: -1.2999999999931844e-8, y: -0.006407387111170447 },\n { x: -1.1999999999931844e-8, y: -0.017236049532798867 },\n { x: -1.0999999999931843e-8, y: 0.004689459841539606 },\n { x: -9.999999999931842e-9, y: -0.00749374198766731 },\n { x: -8.999999999931841e-9, y: 0.02315467385521088 },\n { x: -7.99999999993184e-9, y: 0.017589298190448827 },\n { x: -6.999999999931841e-9, y: 0.03694156690958018 },\n { x: -5.999999999931841e-9, y: -0.00829628567179409 },\n { x: -4.999999999931841e-9, y: 0.020706206748506047 },\n { x: -3.999999999931841e-9, y: 0.010400605441179715 },\n { x: -2.9999999999318415e-9, y: 0.03244565863444435 },\n { x: -1.9999999999318417e-9, y: 0.0012047810277106509 },\n { x: -9.999999999318416e-10, y: -0.009529131808379759 },\n { x: 6.815844170345065e-20, y: 0.01733527160847571 },\n { x: 1.0000000000681585e-9, y: 0.04559779598351585 },\n { x: 2.0000000000681586e-9, y: 0.07160349371878574 },\n { x: 3.0000000000681584e-9, y: 0.08783108046973723 },\n { x: 4.000000000068158e-9, y: 0.12773950891731287 },\n { x: 5.000000000068158e-9, y: 0.10750473966362442 },\n { x: 6.000000000068158e-9, y: 0.1722172973853457 },\n { x: 7.000000000068158e-9, y: 0.2135957587464344 },\n { x: 8.000000000068159e-9, y: 0.2103006601275897 },\n { x: 9.00000000006816e-9, y: 0.24630267195398617 },\n { x: 1.000000000006816e-8, y: 0.25065479028254706 },\n { x: 1.100000000006816e-8, y: 0.32035371641487903 },\n { x: 1.2000000000068161e-8, y: 0.3144781070037487 },\n { x: 1.3000000000068162e-8, y: 0.36139572474206805 },\n { x: 1.4000000000068163e-8, y: 0.3579372088176165 },\n { x: 1.500000000006816e-8, y: 0.45230220028344786 },\n { x: 1.600000000006816e-8, y: 0.43409103373716157 },\n { x: 1.700000000006816e-8, y: 0.4693962636422275 },\n { x: 1.800000000006816e-8, y: 0.5051756485755463 },\n { x: 1.9000000000068158e-8, y: 0.5015876821813501 },\n { x: 2.0000000000068157e-8, y: 0.5773399887160102 },\n { x: 2.1000000000068156e-8, y: 0.5505828032595532 },\n { x: 2.2000000000068155e-8, y: 0.6178273493035895 },\n { x: 2.3000000000068154e-8, y: 0.6063375438950314 },\n { x: 2.4000000000068153e-8, y: 0.6836732895519223 },\n { x: 2.5000000000068152e-8, y: 0.71682672975598 },\n { x: 2.600000000006815e-8, y: 0.7418943000641285 },\n { x: 2.700000000006815e-8, y: 0.766764121927301 },\n { x: 2.800000000006815e-8, y: 0.748865600751028 },\n { x: 2.9000000000068148e-8, y: 0.8251459140947702 },\n { x: 3.000000000006815e-8, y: 0.8514758165924826 },\n { x: 3.100000000006815e-8, y: 0.8187773980832613 },\n { x: 3.2000000000068155e-8, y: 0.8678758840682784 },\n { x: 3.300000000006816e-8, y: 0.8833530966585573 },\n { x: 3.400000000006816e-8, y: 0.9132849864999247 },\n { x: 3.500000000006816e-8, y: 0.937231636904131 },\n { x: 3.6000000000068164e-8, y: 0.9819798072620206 },\n { x: 3.700000000006817e-8, y: 0.9816061146525373 },\n { x: 3.800000000006817e-8, y: 1.02431354480628 },\n { x: 3.900000000006817e-8, y: 1.1044911279668201 },\n { x: 4.0000000000068174e-8, y: 1.0902850601756604 },\n { x: 4.1000000000068176e-8, y: 1.1188857310355398 },\n { x: 4.200000000006818e-8, y: 1.1415582396103667 },\n { x: 4.300000000006818e-8, y: 1.1379388093453044 },\n { x: 4.400000000006818e-8, y: 1.1837722641169446 },\n { x: 4.5000000000068185e-8, y: 1.2283087278238718 },\n { x: 4.600000000006819e-8, y: 1.26508414596951 },\n { x: 4.700000000006819e-8, y: 1.295395440120118 },\n { x: 4.800000000006819e-8, y: 1.2696579825237537 },\n { x: 4.9000000000068195e-8, y: 1.3015144149145235 },\n { x: 5.00000000000682e-8, y: 1.3560999715462076 },\n { x: 5.10000000000682e-8, y: 1.364164677490993 },\n { x: 5.20000000000682e-8, y: 1.3696749179165426 },\n { x: 5.3000000000068204e-8, y: 1.4089949774653385 },\n { x: 5.4000000000068206e-8, y: 1.4440924489317122 },\n { x: 5.500000000006821e-8, y: 1.4584075769806717 },\n { x: 5.600000000006821e-8, y: 1.4930348030829683 },\n { x: 5.7000000000068213e-8, y: 1.4985596149910585 },\n { x: 5.8000000000068216e-8, y: 1.591644532032781 },\n { x: 5.900000000006822e-8, y: 1.6160661196984427 },\n { x: 6.000000000006822e-8, y: 1.6106429345108517 },\n { x: 6.100000000006822e-8, y: 1.6637378369996971 },\n { x: 6.200000000006821e-8, y: 1.6672039097753912 },\n { x: 6.300000000006821e-8, y: 1.6470164020386875 },\n { x: 6.40000000000682e-8, y: 1.72132886315127 },\n { x: 6.50000000000682e-8, y: 1.7175402711043017 },\n { x: 6.60000000000682e-8, y: 1.7396728078334815 },\n { x: 6.700000000006819e-8, y: 1.7672959364169838 },\n { x: 6.800000000006819e-8, y: 1.7713485346857474 },\n { x: 6.900000000006818e-8, y: 1.8057475417541893 },\n { x: 7.000000000006818e-8, y: 1.829469247402354 },\n { x: 7.100000000006817e-8, y: 1.8948911634912913 },\n { x: 7.200000000006817e-8, y: 1.8758493486494703 },\n { x: 7.300000000006816e-8, y: 1.9107897405746515 },\n { x: 7.400000000006816e-8, y: 1.950558126840004 },\n { x: 7.500000000006816e-8, y: 1.9775282740936975 },\n { x: 7.600000000006815e-8, y: 1.977213291981942 },\n { x: 7.700000000006815e-8, y: 2.023886490405293 },\n { x: 7.800000000006814e-8, y: 2.02239293082928 },\n { x: 7.900000000006814e-8, y: 2.0568489989045116 },\n { x: 8.000000000006813e-8, y: 2.0594832900906193 },\n { x: 8.100000000006813e-8, y: 2.12995351765209 },\n { x: 8.200000000006813e-8, y: 2.110904136924468 },\n { x: 8.300000000006812e-8, y: 2.1435001039992634 },\n { x: 8.400000000006812e-8, y: 2.1778976676693125 },\n { x: 8.500000000006811e-8, y: 2.185303937256203 },\n { x: 8.600000000006811e-8, y: 2.242847130351982 },\n { x: 8.70000000000681e-8, y: 2.268605430543055 },\n { x: 8.80000000000681e-8, y: 2.2643002847738183 },\n { x: 8.90000000000681e-8, y: 2.3221929151728995 },\n { x: 9.000000000006809e-8, y: 2.2995425440227586 },\n { x: 9.100000000006809e-8, y: 2.32819446156372 },\n { x: 9.200000000006808e-8, y: 2.3452879585157373 },\n { x: 9.300000000006808e-8, y: 2.3610164356770995 },\n { x: 9.400000000006807e-8, y: 2.413197406158945 },\n { x: 9.500000000006807e-8, y: 2.393253590720542 },\n { x: 9.600000000006807e-8, y: 2.447849826529251 },\n { x: 9.700000000006806e-8, y: 2.4767496840634893 },\n { x: 9.800000000006806e-8, y: 2.4742261324523263 },\n { x: 9.900000000006805e-8, y: 2.536938591755043 },\n { x: 1.0000000000006805e-7, y: 2.5200833348640637 },\n { x: 1.0100000000006804e-7, y: 2.5770250763161555 },\n { x: 1.0200000000006804e-7, y: 2.584950731375103 },\n { x: 1.0300000000006804e-7, y: 2.5838073872358875 },\n { x: 1.0400000000006803e-7, y: 2.631667929575248 },\n { x: 1.0500000000006803e-7, y: 2.6596649401494776 },\n { x: 1.0600000000006802e-7, y: 2.6329103424297156 },\n { x: 1.0700000000006802e-7, y: 2.7037087518923246 },\n { x: 1.0800000000006802e-7, y: 2.6670775070358506 },\n { x: 1.0900000000006801e-7, y: 2.6978313303605006 },\n { x: 1.10000000000068e-7, y: 2.755059710709874 },\n { x: 1.11000000000068e-7, y: 2.749202262835823 },\n { x: 1.12000000000068e-7, y: 2.79299475047997 },\n { x: 1.13000000000068e-7, y: 2.810230530294098 },\n { x: 1.1400000000006799e-7, y: 2.78880922503226 },\n { x: 1.1500000000006799e-7, y: 2.869807109944928 },\n { x: 1.1600000000006798e-7, y: 2.8777572803802594 },\n { x: 1.1700000000006798e-7, y: 2.8815018452559027 },\n { x: 1.1800000000006797e-7, y: 2.8755325151686555 },\n { x: 1.1900000000006797e-7, y: 2.905830323739118 },\n { x: 1.2000000000006796e-7, y: 2.9464738357158993 },\n { x: 1.2100000000006796e-7, y: 2.991581446645457 },\n { x: 1.2200000000006796e-7, y: 2.997052562083296 },\n { x: 1.2300000000006795e-7, y: 2.990961315281238 },\n { x: 1.2400000000006795e-7, y: 2.9845821077934853 },\n { x: 1.2500000000006794e-7, y: 3.013058560956058 },\n { x: 1.2600000000006794e-7, y: 3.0622430283652866 },\n { x: 1.2700000000006793e-7, y: 3.087426605521453 },\n { x: 1.2800000000006793e-7, y: 3.1095111383396206 },\n { x: 1.2900000000006793e-7, y: 3.084199975107459 },\n { x: 1.3000000000006792e-7, y: 3.127488116008965 },\n { x: 1.3100000000006792e-7, y: 3.150094382413969 },\n { x: 1.320000000000679e-7, y: 3.200017873088237 },\n { x: 1.330000000000679e-7, y: 3.2002378626863903 },\n { x: 1.340000000000679e-7, y: 3.221058355750686 },\n { x: 1.350000000000679e-7, y: 3.227614462711025 },\n { x: 1.360000000000679e-7, y: 3.2076376102360236 },\n { x: 1.370000000000679e-7, y: 3.269517899136106 },\n { x: 1.3800000000006789e-7, y: 3.277164485394785 },\n { x: 1.3900000000006788e-7, y: 3.32826518878089 },\n { x: 1.4000000000006788e-7, y: 3.3361230887439772 },\n { x: 1.4100000000006787e-7, y: 3.313932217343184 },\n { x: 1.4200000000006787e-7, y: 3.3379642854568816 },\n { x: 1.4300000000006787e-7, y: 3.3498041292968948 },\n { x: 1.4400000000006786e-7, y: 3.357219369672882 },\n { x: 1.4500000000006786e-7, y: 3.366706851551192 },\n { x: 1.4600000000006785e-7, y: 3.4199459421136247 },\n { x: 1.4700000000006785e-7, y: 3.416238405816887 },\n { x: 1.4800000000006784e-7, y: 3.407013009385149 },\n { x: 1.4900000000006784e-7, y: 3.4838754265193366 },\n { x: 1.5000000000006784e-7, y: 3.462493910181964 },\n { x: 1.5100000000006783e-7, y: 3.483945611319306 },\n { x: 1.5200000000006783e-7, y: 3.499965621261913 },\n { x: 1.5300000000006782e-7, y: 3.4942477146424538 },\n { x: 1.5400000000006782e-7, y: 3.564038317450229 },\n { x: 1.5500000000006781e-7, y: 3.527672795149435 },\n { x: 1.560000000000678e-7, y: 3.555876692335328 },\n { x: 1.570000000000678e-7, y: 3.6155525405815965 },\n { x: 1.580000000000678e-7, y: 3.601332369892053 },\n { x: 1.590000000000678e-7, y: 3.609442316303733 },\n { x: 1.600000000000678e-7, y: 3.6623500322214233 },\n { x: 1.610000000000678e-7, y: 3.684711964642669 },\n { x: 1.6200000000006778e-7, y: 3.6576976052199712 },\n { x: 1.6300000000006778e-7, y: 3.701532475303213 },\n { x: 1.6400000000006778e-7, y: 3.7109676530026414 },\n { x: 1.6500000000006777e-7, y: 3.725759508917418 },\n { x: 1.6600000000006777e-7, y: 3.7382593186558357 },\n { x: 1.6700000000006776e-7, y: 3.748891416720497 },\n { x: 1.6800000000006776e-7, y: 3.7423834296591307 },\n { x: 1.6900000000006775e-7, y: 3.784364177583826 },\n { x: 1.7000000000006775e-7, y: 3.7616413400291258 },\n { x: 1.7100000000006775e-7, y: 3.793011270865848 },\n { x: 1.7200000000006774e-7, y: 3.838271565864922 },\n { x: 1.7300000000006774e-7, y: 3.851660110036995 },\n { x: 1.7400000000006773e-7, y: 3.815896300368144 },\n { x: 1.7500000000006773e-7, y: 3.8712332263154465 },\n { x: 1.7600000000006772e-7, y: 3.8486642851532094 },\n { x: 1.7700000000006772e-7, y: 3.8622944630539453 },\n { x: 1.7800000000006772e-7, y: 3.9097680939520854 },\n { x: 1.790000000000677e-7, y: 3.9220439981314525 },\n { x: 1.800000000000677e-7, y: 3.945422097301458 },\n { x: 1.810000000000677e-7, y: 3.933796332138385 },\n { x: 1.820000000000677e-7, y: 3.970555841381823 },\n { x: 1.830000000000677e-7, y: 3.977434457774043 },\n { x: 1.840000000000677e-7, y: 3.9658959198982853 },\n { x: 1.8500000000006769e-7, y: 3.960452556347271 },\n { x: 1.8600000000006768e-7, y: 3.9984282659377 },\n { x: 1.8700000000006768e-7, y: 3.98660350661974 },\n { x: 1.8800000000006767e-7, y: 3.990519773055625 },\n { x: 1.8900000000006767e-7, y: 4.052249465615307 },\n { x: 1.9000000000006766e-7, y: 4.059364855404962 },\n { x: 1.9100000000006766e-7, y: 4.043962297468011 },\n { x: 1.9200000000006766e-7, y: 4.049092079453735 },\n { x: 1.9300000000006765e-7, y: 4.055881644700879 },\n { x: 1.9400000000006765e-7, y: 4.072328771627681 },\n { x: 1.9500000000006764e-7, y: 4.080507278351291 },\n { x: 1.9600000000006764e-7, y: 4.084051306875356 },\n { x: 1.9700000000006763e-7, y: 4.129206282534105 },\n { x: 1.9800000000006763e-7, y: 4.096340213513475 },\n { x: 1.9900000000006763e-7, y: 4.156542968671335 },\n { x: 2.0000000000006762e-7, y: 4.119429775233858 },\n { x: 2.0100000000006762e-7, y: 4.149390260909627 },\n { x: 2.020000000000676e-7, y: 4.144120499048146 },\n { x: 2.030000000000676e-7, y: 4.139791259105984 },\n { x: 2.040000000000676e-7, y: 4.196807481401228 },\n { x: 2.050000000000676e-7, y: 4.174475109243049 },\n { x: 2.060000000000676e-7, y: 4.187160718830028 },\n { x: 2.070000000000676e-7, y: 4.179711712649196 },\n { x: 2.080000000000676e-7, y: 4.201433196022256 },\n { x: 2.0900000000006758e-7, y: 4.26586933037637 },\n { x: 2.1000000000006758e-7, y: 4.253835518428927 },\n { x: 2.1100000000006757e-7, y: 4.218429863190106 },\n { x: 2.1200000000006757e-7, y: 4.26095358447011 },\n { x: 2.1300000000006757e-7, y: 4.2590443592689855 },\n { x: 2.1400000000006756e-7, y: 4.289996517255768 },\n { x: 2.1500000000006756e-7, y: 4.313056616043523 },\n { x: 2.1600000000006755e-7, y: 4.331979158283773 },\n { x: 2.1700000000006755e-7, y: 4.313387615221893 },\n { x: 2.1800000000006754e-7, y: 4.3445667568279625 },\n { x: 2.1900000000006754e-7, y: 4.293674920656978 },\n { x: 2.2000000000006754e-7, y: 4.3363937326020405 },\n { x: 2.2100000000006753e-7, y: 4.311975176686082 },\n { x: 2.2200000000006753e-7, y: 4.309277146105408 },\n { x: 2.2300000000006752e-7, y: 4.35379944540888 },\n { x: 2.2400000000006752e-7, y: 4.3575946258253335 },\n { x: 2.2500000000006751e-7, y: 4.402927128316672 },\n { x: 2.260000000000675e-7, y: 4.393840760035625 },\n { x: 2.270000000000675e-7, y: 4.4054221787463295 },\n { x: 2.280000000000675e-7, y: 4.365009812805271 },\n { x: 2.290000000000675e-7, y: 4.408350038096867 },\n { x: 2.300000000000675e-7, y: 4.3939073030095095 },\n { x: 2.310000000000675e-7, y: 4.374668327817958 },\n { x: 2.3200000000006748e-7, y: 4.377810381545066 },\n { x: 2.3300000000006748e-7, y: 4.432589162622251 },\n { x: 2.3400000000006748e-7, y: 4.4537937245520975 },\n { x: 2.3500000000006747e-7, y: 4.434739702125108 },\n { x: 2.3600000000006747e-7, y: 4.421869611511303 },\n { x: 2.3700000000006746e-7, y: 4.395968401989458 },\n { x: 2.3800000000006746e-7, y: 4.418283482201154 },\n { x: 2.3900000000006745e-7, y: 4.429114120101884 },\n { x: 2.400000000000675e-7, y: 4.475924250691162 },\n { x: 2.410000000000675e-7, y: 4.480597405421405 },\n { x: 2.420000000000675e-7, y: 4.471725459771187 },\n { x: 2.4300000000006754e-7, y: 4.4759920662868025 },\n { x: 2.4400000000006757e-7, y: 4.457466027302085 },\n { x: 2.450000000000676e-7, y: 4.51327554148812 },\n { x: 2.460000000000676e-7, y: 4.492173663035807 },\n { x: 2.4700000000006763e-7, y: 4.46175544488327 },\n { x: 2.4800000000006765e-7, y: 4.483580913840163 },\n { x: 2.490000000000677e-7, y: 4.4818737078426265 },\n { x: 2.500000000000677e-7, y: 4.483930252722769 },\n { x: 2.510000000000677e-7, y: 4.495049555509013 },\n { x: 2.5200000000006774e-7, y: 4.500884472325458 },\n { x: 2.5300000000006776e-7, y: 4.5449816917745265 },\n { x: 2.540000000000678e-7, y: 4.541621982329801 },\n { x: 2.550000000000678e-7, y: 4.568307805363606 },\n { x: 2.5600000000006783e-7, y: 4.5204329412829845 },\n { x: 2.5700000000006785e-7, y: 4.570754147203238 },\n { x: 2.580000000000679e-7, y: 4.524549336955163 },\n { x: 2.590000000000679e-7, y: 4.540395397127683 },\n { x: 2.600000000000679e-7, y: 4.518404095772062 },\n { x: 2.6100000000006794e-7, y: 4.5558226992527 },\n { x: 2.6200000000006796e-7, y: 4.587201244489122 },\n { x: 2.63000000000068e-7, y: 4.5364775317235715 },\n { x: 2.64000000000068e-7, y: 4.537434301357686 },\n { x: 2.6500000000006803e-7, y: 4.554480991663611 },\n { x: 2.6600000000006805e-7, y: 4.551959291547926 },\n { x: 2.670000000000681e-7, y: 4.546175409404218 },\n { x: 2.680000000000681e-7, y: 4.558067767220025 },\n { x: 2.690000000000681e-7, y: 4.562903822013282 },\n { x: 2.7000000000006814e-7, y: 4.593983329432042 },\n { x: 2.7100000000006816e-7, y: 4.6052625278532275 },\n { x: 2.720000000000682e-7, y: 4.545832854247038 },\n { x: 2.730000000000682e-7, y: 4.551427689365389 },\n { x: 2.7400000000006823e-7, y: 4.6168291457039405 },\n { x: 2.7500000000006825e-7, y: 4.5748588256552525 },\n { x: 2.760000000000683e-7, y: 4.611824980830878 },\n { x: 2.770000000000683e-7, y: 4.572758838954031 },\n { x: 2.780000000000683e-7, y: 4.579156007250689 },\n { x: 2.7900000000006834e-7, y: 4.568647565172117 },\n { x: 2.8000000000006836e-7, y: 4.621257394241068 },\n { x: 2.810000000000684e-7, y: 4.593231939640312 },\n { x: 2.820000000000684e-7, y: 4.5994994415856825 },\n { x: 2.8300000000006843e-7, y: 4.637039683269703 },\n { x: 2.8400000000006845e-7, y: 4.594394597053631 },\n { x: 2.850000000000685e-7, y: 4.560818851394454 },\n { x: 2.860000000000685e-7, y: 4.60029704671781 },\n { x: 2.870000000000685e-7, y: 4.553689847030158 },\n { x: 2.8800000000006854e-7, y: 4.5925048540724625 },\n { x: 2.8900000000006856e-7, y: 4.590618080030675 },\n { x: 2.900000000000686e-7, y: 4.576541496690467 },\n { x: 2.910000000000686e-7, y: 4.555565680735937 },\n { x: 2.9200000000006863e-7, y: 4.62188315577281 },\n { x: 2.9300000000006865e-7, y: 4.556238565404815 },\n { x: 2.940000000000687e-7, y: 4.570057311239993 },\n { x: 2.950000000000687e-7, y: 4.607741729428422 },\n { x: 2.960000000000687e-7, y: 4.6240193896352215 },\n { x: 2.9700000000006874e-7, y: 4.559360181850518 },\n { x: 2.9800000000006876e-7, y: 4.603544270929363 },\n { x: 2.990000000000688e-7, y: 4.572578516232343 },\n { x: 3.000000000000688e-7, y: 4.54867999290276 },\n { x: 3.0100000000006883e-7, y: 4.553428161610771 },\n { x: 3.0200000000006885e-7, y: 4.614163167171206 },\n { x: 3.030000000000689e-7, y: 4.546188708872833 },\n { x: 3.040000000000689e-7, y: 4.60454532264954 },\n { x: 3.050000000000689e-7, y: 4.5366359764470765 },\n { x: 3.0600000000006894e-7, y: 4.5647069396754 },\n { x: 3.0700000000006896e-7, y: 4.578690013699633 },\n { x: 3.08000000000069e-7, y: 4.588222764226879 },\n { x: 3.09000000000069e-7, y: 4.579926647975305 },\n { x: 3.1000000000006903e-7, y: 4.576679529258076 },\n { x: 3.1100000000006905e-7, y: 4.525714215195552 },\n { x: 3.120000000000691e-7, y: 4.548322182573998 },\n { x: 3.130000000000691e-7, y: 4.532768010071163 },\n { x: 3.140000000000691e-7, y: 4.568846728047218 },\n { x: 3.1500000000006914e-7, y: 4.525509620709712 },\n { x: 3.1600000000006916e-7, y: 4.550931577579017 },\n { x: 3.170000000000692e-7, y: 4.540242891548967 },\n { x: 3.180000000000692e-7, y: 4.5521983862480315 },\n { x: 3.1900000000006923e-7, y: 4.497398701261551 },\n { x: 3.2000000000006925e-7, y: 4.5359335018999305 },\n { x: 3.210000000000693e-7, y: 4.537962182929126 },\n { x: 3.220000000000693e-7, y: 4.5241014561161474 },\n { x: 3.230000000000693e-7, y: 4.551489858748293 },\n { x: 3.2400000000006934e-7, y: 4.536010243465154 },\n { x: 3.2500000000006936e-7, y: 4.5386710687092195 },\n { x: 3.260000000000694e-7, y: 4.478118828533177 },\n { x: 3.270000000000694e-7, y: 4.521792084800384 },\n { x: 3.2800000000006943e-7, y: 4.501049680494854 },\n { x: 3.2900000000006945e-7, y: 4.498592547630318 },\n { x: 3.300000000000695e-7, y: 4.488482842532222 },\n { x: 3.310000000000695e-7, y: 4.441156767896616 },\n { x: 3.320000000000695e-7, y: 4.444054134394553 },\n { x: 3.3300000000006954e-7, y: 4.466584416902529 },\n { x: 3.3400000000006956e-7, y: 4.463800509045774 },\n { x: 3.350000000000696e-7, y: 4.464058505028582 },\n { x: 3.360000000000696e-7, y: 4.41443460783856 },\n { x: 3.3700000000006963e-7, y: 4.4398327174313685 },\n { x: 3.3800000000006965e-7, y: 4.468418072799661 },\n { x: 3.3900000000006967e-7, y: 4.458678231500451 },\n { x: 3.400000000000697e-7, y: 4.411121228444063 },\n { x: 3.410000000000697e-7, y: 4.454837914375734 },\n { x: 3.4200000000006974e-7, y: 4.381677695269781 },\n { x: 3.4300000000006976e-7, y: 4.389204344577293 },\n { x: 3.440000000000698e-7, y: 4.398818597503304 },\n { x: 3.450000000000698e-7, y: 4.400713260814368 },\n { x: 3.4600000000006983e-7, y: 4.352153293845595 },\n { x: 3.4700000000006985e-7, y: 4.392654280211924 },\n { x: 3.4800000000006987e-7, y: 4.3659850342792375 },\n { x: 3.490000000000699e-7, y: 4.36736284837299 },\n { x: 3.500000000000699e-7, y: 4.36500353689255 },\n { x: 3.5100000000006994e-7, y: 4.350601346933341 },\n { x: 3.5200000000006996e-7, y: 4.3552665070237815 },\n { x: 3.5300000000007e-7, y: 4.37314943151817 },\n { x: 3.5400000000007e-7, y: 4.344213285069556 },\n { x: 3.5500000000007003e-7, y: 4.357570821997053 },\n { x: 3.5600000000007005e-7, y: 4.3280910112104705 },\n { x: 3.5700000000007007e-7, y: 4.296926124294212 },\n { x: 3.580000000000701e-7, y: 4.283150978167562 },\n { x: 3.590000000000701e-7, y: 4.269804944259307 },\n { x: 3.6000000000007014e-7, y: 4.286035855681393 },\n { x: 3.6100000000007016e-7, y: 4.297874020004684 },\n { x: 3.620000000000702e-7, y: 4.235710208198241 },\n { x: 3.630000000000702e-7, y: 4.268885191015169 },\n { x: 3.6400000000007023e-7, y: 4.2224875113344105 },\n { x: 3.6500000000007025e-7, y: 4.270277524606534 },\n { x: 3.6600000000007027e-7, y: 4.239989002206763 },\n { x: 3.670000000000703e-7, y: 4.226840189057081 },\n { x: 3.680000000000703e-7, y: 4.1940128726361445 },\n { x: 3.6900000000007034e-7, y: 4.181086371816021 },\n { x: 3.7000000000007036e-7, y: 4.238774199152604 },\n { x: 3.710000000000704e-7, y: 4.1978816035202255 },\n { x: 3.720000000000704e-7, y: 4.185784719111473 },\n { x: 3.7300000000007043e-7, y: 4.197477154050938 },\n { x: 3.7400000000007045e-7, y: 4.1578642609820795 },\n { x: 3.7500000000007047e-7, y: 4.187135262137642 },\n { x: 3.760000000000705e-7, y: 4.1628653672803235 },\n { x: 3.770000000000705e-7, y: 4.146487976908809 },\n { x: 3.7800000000007054e-7, y: 4.118683294656924 },\n { x: 3.7900000000007056e-7, y: 4.080779770378712 },\n { x: 3.800000000000706e-7, y: 4.13584263344365 },\n { x: 3.810000000000706e-7, y: 4.0746549723826915 },\n { x: 3.8200000000007063e-7, y: 4.1198208873236375 },\n { x: 3.8300000000007065e-7, y: 4.110721578932751 },\n { x: 3.8400000000007067e-7, y: 4.061832412772853 },\n { x: 3.850000000000707e-7, y: 4.077033118807877 },\n { x: 3.860000000000707e-7, y: 4.021584327166643 },\n { x: 3.8700000000007074e-7, y: 4.052643137409191 },\n { x: 3.8800000000007076e-7, y: 4.053730696000853 },\n { x: 3.890000000000708e-7, y: 3.98329033004593 },\n { x: 3.900000000000708e-7, y: 3.989220939647749 },\n { x: 3.9100000000007083e-7, y: 4.011669525237745 },\n { x: 3.9200000000007085e-7, y: 3.9593185686549672 },\n { x: 3.9300000000007087e-7, y: 3.95800337748763 },\n { x: 3.940000000000709e-7, y: 3.9733521729232164 },\n { x: 3.950000000000709e-7, y: 3.9290226207454073 },\n { x: 3.9600000000007094e-7, y: 3.950804485092987 },\n { x: 3.9700000000007096e-7, y: 3.946347337740705 },\n { x: 3.98000000000071e-7, y: 3.89513188893136 },\n { x: 3.99000000000071e-7, y: 3.9041663835218716 },\n { x: 4.0000000000007103e-7, y: 3.9054122513054814 },\n { x: 4.0100000000007105e-7, y: 3.878006800142969 },\n { x: 4.0200000000007107e-7, y: 3.8422361087703996 },\n { x: 4.030000000000711e-7, y: 3.8250752024171355 },\n { x: 4.040000000000711e-7, y: 3.8076853470895156 },\n { x: 4.0500000000007114e-7, y: 3.801939608916005 },\n { x: 4.0600000000007116e-7, y: 3.8506114375860516 },\n { x: 4.070000000000712e-7, y: 3.8210576203255022 },\n { x: 4.080000000000712e-7, y: 3.7931229622809077 },\n { x: 4.0900000000007123e-7, y: 3.790331101077256 },\n { x: 4.1000000000007125e-7, y: 3.767494508124199 },\n { x: 4.1100000000007127e-7, y: 3.745255681923489 },\n { x: 4.120000000000713e-7, y: 3.7692888995718996 },\n { x: 4.130000000000713e-7, y: 3.728659757584573 },\n { x: 4.1400000000007134e-7, y: 3.705062353961188 },\n { x: 4.1500000000007136e-7, y: 3.7412144824398537 },\n { x: 4.160000000000714e-7, y: 3.7044552069575523 },\n { x: 4.170000000000714e-7, y: 3.6543403228267097 },\n { x: 4.180000000000714e-7, y: 3.681118348886848 },\n { x: 4.1900000000007145e-7, y: 3.638090164167694 },\n { x: 4.2000000000007147e-7, y: 3.6096363651985537 },\n { x: 4.210000000000715e-7, y: 3.6313689690619024 },\n { x: 4.220000000000715e-7, y: 3.589192689298439 },\n { x: 4.2300000000007154e-7, y: 3.5708728299880823 },\n { x: 4.2400000000007156e-7, y: 3.61689610554449 },\n { x: 4.250000000000716e-7, y: 3.575472827657053 },\n { x: 4.260000000000716e-7, y: 3.55766854710107 },\n { x: 4.270000000000716e-7, y: 3.5741776711902866 },\n { x: 4.2800000000007165e-7, y: 3.538132833582119 },\n { x: 4.2900000000007167e-7, y: 3.4871676961370395 },\n { x: 4.300000000000717e-7, y: 3.5452386959853306 },\n { x: 4.310000000000717e-7, y: 3.4743088019091375 },\n { x: 4.3200000000007174e-7, y: 3.453869113849182 },\n { x: 4.3300000000007176e-7, y: 3.463199173447619 },\n { x: 4.340000000000718e-7, y: 3.460409975132845 },\n { x: 4.350000000000718e-7, y: 3.405961091318614 },\n { x: 4.360000000000718e-7, y: 3.415897137420462 },\n { x: 4.3700000000007185e-7, y: 3.3720287059449463 },\n { x: 4.3800000000007187e-7, y: 3.3587167637655786 },\n { x: 4.390000000000719e-7, y: 3.3850777860967054 },\n { x: 4.400000000000719e-7, y: 3.3695773790239647 },\n { x: 4.4100000000007194e-7, y: 3.350720204294603 },\n { x: 4.4200000000007196e-7, y: 3.346654006398577 },\n { x: 4.43000000000072e-7, y: 3.3469779959293007 },\n { x: 4.44000000000072e-7, y: 3.297302666062012 },\n { x: 4.45000000000072e-7, y: 3.3120016274359982 },\n { x: 4.4600000000007205e-7, y: 3.25090454348141 },\n { x: 4.4700000000007207e-7, y: 3.2301864599922174 },\n { x: 4.480000000000721e-7, y: 3.256211785796371 },\n { x: 4.490000000000721e-7, y: 3.214903914002878 },\n { x: 4.5000000000007214e-7, y: 3.2426371661344584 },\n { x: 4.5100000000007216e-7, y: 3.2317129221506007 },\n { x: 4.520000000000722e-7, y: 3.1851992692344497 },\n { x: 4.530000000000722e-7, y: 3.1422962816825724 },\n { x: 4.540000000000722e-7, y: 3.1743721048385365 },\n { x: 4.5500000000007225e-7, y: 3.123842337997481 },\n { x: 4.5600000000007227e-7, y: 3.1153628840015464 },\n { x: 4.570000000000723e-7, y: 3.0738754084491346 },\n { x: 4.580000000000723e-7, y: 3.0889875023203968 },\n { x: 4.5900000000007234e-7, y: 3.0403022408972413 },\n { x: 4.6000000000007236e-7, y: 3.084524623874236 },\n { x: 4.610000000000724e-7, y: 3.0593402484204013 },\n { x: 4.620000000000724e-7, y: 3.0035225259672442 },\n { x: 4.630000000000724e-7, y: 3.021796815788875 },\n { x: 4.6400000000007245e-7, y: 3.017220968937486 },\n { x: 4.6500000000007247e-7, y: 3.0092150035518004 },\n { x: 4.660000000000725e-7, y: 2.9827318146842674 },\n { x: 4.670000000000725e-7, y: 2.9540128382751765 },\n { x: 4.6800000000007254e-7, y: 2.9545588348991147 },\n { x: 4.6900000000007256e-7, y: 2.9109049445043733 },\n { x: 4.700000000000726e-7, y: 2.9045013973097187 },\n { x: 4.710000000000726e-7, y: 2.9185712173653084 },\n { x: 4.720000000000726e-7, y: 2.8916238018535836 },\n { x: 4.7300000000007265e-7, y: 2.8823619788153008 },\n { x: 4.7400000000007267e-7, y: 2.8266556570333594 },\n { x: 4.750000000000727e-7, y: 2.833761091547332 },\n { x: 4.760000000000727e-7, y: 2.782888997643641 },\n { x: 4.770000000000727e-7, y: 2.7993782354906847 },\n { x: 4.780000000000727e-7, y: 2.7866835281460696 },\n { x: 4.790000000000726e-7, y: 2.72659697091339 },\n { x: 4.800000000000726e-7, y: 2.7174193433800875 },\n { x: 4.810000000000726e-7, y: 2.6800611691037917 },\n { x: 4.820000000000725e-7, y: 2.726360246619215 },\n { x: 4.830000000000725e-7, y: 2.6753912973644516 },\n { x: 4.840000000000725e-7, y: 2.664223533398994 },\n { x: 4.850000000000724e-7, y: 2.6399974723761503 },\n { x: 4.860000000000724e-7, y: 2.6499838475832704 },\n { x: 4.870000000000724e-7, y: 2.585691517154935 },\n { x: 4.880000000000723e-7, y: 2.5977791165376307 },\n { x: 4.890000000000723e-7, y: 2.573598463798158 },\n { x: 4.900000000000723e-7, y: 2.6021213916319286 },\n { x: 4.910000000000723e-7, y: 2.5413761024074377 },\n { x: 4.920000000000722e-7, y: 2.556022333034545 },\n { x: 4.930000000000722e-7, y: 2.4801506528995945 },\n { x: 4.940000000000722e-7, y: 2.5127444207031444 },\n { x: 4.950000000000721e-7, y: 2.4506561227748533 },\n { x: 4.960000000000721e-7, y: 2.4871722464600383 },\n { x: 4.970000000000721e-7, y: 2.4480153017298587 },\n { x: 4.98000000000072e-7, y: 2.390010024968104 },\n { x: 4.99000000000072e-7, y: 2.3875016166300354 },\n { x: 5.00000000000072e-7, y: 2.3974305433342855 },\n { x: 5.010000000000719e-7, y: 2.3804525797349534 },\n { x: 5.020000000000719e-7, y: 2.319847501668554 },\n { x: 5.030000000000719e-7, y: 2.354606412231442 },\n { x: 5.040000000000719e-7, y: 2.2913726624483135 },\n { x: 5.050000000000718e-7, y: 2.3331341602784237 },\n { x: 5.060000000000718e-7, y: 2.2693402371147453 },\n { x: 5.070000000000718e-7, y: 2.2723088948853416 },\n { x: 5.080000000000717e-7, y: 2.2219370098681503 },\n { x: 5.090000000000717e-7, y: 2.2335900519277834 },\n { x: 5.100000000000717e-7, y: 2.248182551707964 },\n { x: 5.110000000000716e-7, y: 2.1732525739894593 },\n { x: 5.120000000000716e-7, y: 2.1713339937460554 },\n { x: 5.130000000000716e-7, y: 2.1404041291143674 },\n { x: 5.140000000000715e-7, y: 2.1607497105837776 },\n { x: 5.150000000000715e-7, y: 2.1326878357989525 },\n { x: 5.160000000000715e-7, y: 2.111513448282211 },\n { x: 5.170000000000715e-7, y: 2.0593831863297587 },\n { x: 5.180000000000714e-7, y: 2.0375872722830493 },\n { x: 5.190000000000714e-7, y: 2.0686457446185154 },\n { x: 5.200000000000714e-7, y: 2.0223102152902546 },\n { x: 5.210000000000713e-7, y: 2.032649093071548 },\n { x: 5.220000000000713e-7, y: 2.019768464909469 },\n { x: 5.230000000000713e-7, y: 2.0095400563561614 },\n { x: 5.240000000000712e-7, y: 1.9777441852768034 },\n { x: 5.250000000000712e-7, y: 1.9197327020510637 },\n { x: 5.260000000000712e-7, y: 1.9478427678526091 },\n { x: 5.270000000000711e-7, y: 1.8643096729473774 },\n { x: 5.280000000000711e-7, y: 1.9199884602456652 },\n { x: 5.290000000000711e-7, y: 1.8614442042826362 },\n { x: 5.30000000000071e-7, y: 1.828447341067436 },\n { x: 5.31000000000071e-7, y: 1.83568283443109 },\n { x: 5.32000000000071e-7, y: 1.819083068860657 },\n { x: 5.33000000000071e-7, y: 1.76929210426416 },\n { x: 5.340000000000709e-7, y: 1.8060127684242715 },\n { x: 5.350000000000709e-7, y: 1.7644534399085456 },\n { x: 5.360000000000709e-7, y: 1.7071802357662391 },\n { x: 5.370000000000708e-7, y: 1.729182684014748 },\n { x: 5.380000000000708e-7, y: 1.707822739368085 },\n { x: 5.390000000000708e-7, y: 1.6503470105866342 },\n { x: 5.400000000000707e-7, y: 1.6790513826683995 },\n { x: 5.410000000000707e-7, y: 1.6770004914206622 },\n { x: 5.420000000000707e-7, y: 1.6446221785271975 },\n { x: 5.430000000000707e-7, y: 1.6262076843646684 },\n { x: 5.440000000000706e-7, y: 1.581388679998766 },\n { x: 5.450000000000706e-7, y: 1.572271379606089 },\n { x: 5.460000000000706e-7, y: 1.564148898597291 },\n { x: 5.470000000000705e-7, y: 1.547681152243796 },\n { x: 5.480000000000705e-7, y: 1.47384020638136 },\n { x: 5.490000000000705e-7, y: 1.504440711939198 },\n { x: 5.500000000000704e-7, y: 1.4455278717686377 },\n { x: 5.510000000000704e-7, y: 1.468981363814639 },\n { x: 5.520000000000704e-7, y: 1.4020354328610296 },\n { x: 5.530000000000703e-7, y: 1.4477540019129607 },\n { x: 5.540000000000703e-7, y: 1.4270481405880733 },\n { x: 5.550000000000703e-7, y: 1.3895567898591026 },\n { x: 5.560000000000703e-7, y: 1.3912841713839703 },\n { x: 5.570000000000702e-7, y: 1.3297641154545967 },\n { x: 5.580000000000702e-7, y: 1.3280987817611685 },\n { x: 5.590000000000702e-7, y: 1.2654478156955729 },\n { x: 5.600000000000701e-7, y: 1.2567090185435266 },\n { x: 5.610000000000701e-7, y: 1.2471258939365573 },\n { x: 5.620000000000701e-7, y: 1.2552568807593996 },\n { x: 5.6300000000007e-7, y: 1.1943193467686406 },\n { x: 5.6400000000007e-7, y: 1.2373458429755204 },\n { x: 5.6500000000007e-7, y: 1.2255213327562549 },\n { x: 5.660000000000699e-7, y: 1.1400154666484812 },\n { x: 5.670000000000699e-7, y: 1.1426882597845875 },\n { x: 5.680000000000699e-7, y: 1.1113362896104515 },\n { x: 5.690000000000699e-7, y: 1.080666080249789 },\n { x: 5.700000000000698e-7, y: 1.0568535903500327 },\n { x: 5.710000000000698e-7, y: 1.0879369877265455 },\n { x: 5.720000000000698e-7, y: 1.071060524334522 },\n { x: 5.730000000000697e-7, y: 1.0413648554555746 },\n { x: 5.740000000000697e-7, y: 1.0142338732633065 },\n { x: 5.750000000000697e-7, y: 0.9891672021444043 },\n { x: 5.760000000000696e-7, y: 0.974548560741885 },\n { x: 5.770000000000696e-7, y: 0.9326181249932587 },\n { x: 5.780000000000696e-7, y: 0.9600504528685031 },\n { x: 5.790000000000695e-7, y: 0.9490020824901222 },\n { x: 5.800000000000695e-7, y: 0.9066762958557413 },\n { x: 5.810000000000695e-7, y: 0.8608999029163629 },\n { x: 5.820000000000695e-7, y: 0.8650154914689567 },\n { x: 5.830000000000694e-7, y: 0.8425611266837111 },\n { x: 5.840000000000694e-7, y: 0.8088135816402537 },\n { x: 5.850000000000694e-7, y: 0.8386555368288905 },\n { x: 5.860000000000693e-7, y: 0.7784250875475518 },\n { x: 5.870000000000693e-7, y: 0.8019386259248096 },\n { x: 5.880000000000693e-7, y: 0.7260998002339443 },\n { x: 5.890000000000692e-7, y: 0.7473931078806977 },\n { x: 5.900000000000692e-7, y: 0.71992333530566 },\n { x: 5.910000000000692e-7, y: 0.7302826146038286 },\n { x: 5.920000000000691e-7, y: 0.6944557914381496 },\n { x: 5.930000000000691e-7, y: 0.6275880543972894 },\n { x: 5.940000000000691e-7, y: 0.6274911538691162 },\n { x: 5.950000000000691e-7, y: 0.5825310229623206 },\n { x: 5.96000000000069e-7, y: 0.6263243670700657 },\n { x: 5.97000000000069e-7, y: 0.5602519834168201 },\n { x: 5.98000000000069e-7, y: 0.5420254573767047 },\n { x: 5.990000000000689e-7, y: 0.5642410775914146 },\n { x: 6.000000000000689e-7, y: 0.5233167413466189 },\n { x: 6.010000000000689e-7, y: 0.5414136883192964 },\n { x: 6.020000000000688e-7, y: 0.45289178893868004 },\n { x: 6.030000000000688e-7, y: 0.4426813549638022 },\n { x: 6.040000000000688e-7, y: 0.4310099626745463 },\n { x: 6.050000000000687e-7, y: 0.4692582408978895 },\n { x: 6.060000000000687e-7, y: 0.3901201542415163 },\n { x: 6.070000000000687e-7, y: 0.3606987140700868 },\n { x: 6.080000000000687e-7, y: 0.38664029110287096 },\n { x: 6.090000000000686e-7, y: 0.354170505759941 },\n { x: 6.100000000000686e-7, y: 0.3474385661448188 },\n { x: 6.110000000000686e-7, y: 0.2875469324482121 },\n { x: 6.120000000000685e-7, y: 0.2812112082816194 },\n { x: 6.130000000000685e-7, y: 0.2832842675852578 },\n { x: 6.140000000000685e-7, y: 0.2824878207627931 },\n { x: 6.150000000000684e-7, y: 0.22885822810543843 },\n { x: 6.160000000000684e-7, y: 0.2153431121452024 },\n { x: 6.170000000000684e-7, y: 0.2362758548632193 },\n { x: 6.180000000000683e-7, y: 0.1999284052843285 },\n { x: 6.190000000000683e-7, y: 0.19607407417239414 },\n { x: 6.200000000000683e-7, y: 0.12373481557665877 },\n { x: 6.210000000000683e-7, y: 0.16367069560413128 },\n { x: 6.220000000000682e-7, y: 0.12725656868652202 },\n { x: 6.230000000000682e-7, y: 0.10684690202173974 },\n { x: 6.240000000000682e-7, y: 0.07068768143158324 },\n { x: 6.250000000000681e-7, y: 0.06511404415673 },\n { x: 6.260000000000681e-7, y: 0.026735221709894213 },\n { x: 6.270000000000681e-7, y: 0.024486353925565477 },\n { x: 6.28000000000068e-7, y: -0.015545959623921524 },\n { x: 6.29000000000068e-7, y: 0.000314756325871534 },\n { x: 6.30000000000068e-7, y: 0.000021923407494166963 },\n { x: 6.310000000000679e-7, y: -0.017461737481183043 },\n { x: 6.320000000000679e-7, y: -0.051157078466407366 },\n { x: 6.330000000000679e-7, y: -0.04944341243757768 },\n { x: 6.340000000000679e-7, y: -0.1046030080020188 },\n { x: 6.350000000000678e-7, y: -0.12807686328454046 },\n { x: 6.360000000000678e-7, y: -0.16248484696751042 },\n { x: 6.370000000000678e-7, y: -0.13744640242652906 },\n { x: 6.380000000000677e-7, y: -0.17703964717898313 },\n { x: 6.390000000000677e-7, y: -0.16670634202914192 },\n { x: 6.400000000000677e-7, y: -0.18660880388708884 },\n { x: 6.410000000000676e-7, y: -0.23627716610533803 },\n { x: 6.420000000000676e-7, y: -0.21056096530616258 },\n { x: 6.430000000000676e-7, y: -0.2501752670645122 },\n { x: 6.440000000000675e-7, y: -0.31951595038281894 },\n { x: 6.450000000000675e-7, y: -0.2812287199006149 },\n { x: 6.460000000000675e-7, y: -0.31788768310067755 },\n { x: 6.470000000000675e-7, y: -0.32301869887910484 },\n { x: 6.480000000000674e-7, y: -0.3826876872739434 },\n { x: 6.490000000000674e-7, y: -0.34959191521222666 },\n { x: 6.500000000000674e-7, y: -0.37131893413357375 },\n { x: 6.510000000000673e-7, y: -0.37564253594002406 },\n { x: 6.520000000000673e-7, y: -0.4313685153394282 },\n { x: 6.530000000000673e-7, y: -0.44488903050817347 },\n { x: 6.540000000000672e-7, y: -0.485258748423778 },\n { x: 6.550000000000672e-7, y: -0.4712961112986434 },\n { x: 6.560000000000672e-7, y: -0.46570857363252427 },\n { x: 6.570000000000671e-7, y: -0.4889915086639795 },\n { x: 6.580000000000671e-7, y: -0.543516887596962 },\n { x: 6.590000000000671e-7, y: -0.5497461036875846 },\n { x: 6.600000000000671e-7, y: -0.5721096585783956 },\n { x: 6.61000000000067e-7, y: -0.568278399244334 },\n { x: 6.62000000000067e-7, y: -0.6113755072534441 },\n { x: 6.63000000000067e-7, y: -0.6446515652219412 },\n { x: 6.640000000000669e-7, y: -0.6520441039141067 },\n { x: 6.650000000000669e-7, y: -0.6467486939956133 },\n { x: 6.660000000000669e-7, y: -0.632958574919273 },\n { x: 6.670000000000668e-7, y: -0.7156466009673889 },\n { x: 6.680000000000668e-7, y: -0.6736079815846527 },\n { x: 6.690000000000668e-7, y: -0.7239291866197504 },\n { x: 6.700000000000667e-7, y: -0.7260301243793009 },\n { x: 6.710000000000667e-7, y: -0.7649741962455779 },\n { x: 6.720000000000667e-7, y: -0.7876564131806228 },\n { x: 6.730000000000667e-7, y: -0.791394149235758 },\n { x: 6.740000000000666e-7, y: -0.8197469715588154 },\n { x: 6.750000000000666e-7, y: -0.8477123877921675 },\n { x: 6.760000000000666e-7, y: -0.8303858148050725 },\n { x: 6.770000000000665e-7, y: -0.8323439235252145 },\n { x: 6.780000000000665e-7, y: -0.8334321948323198 },\n { x: 6.790000000000665e-7, y: -0.9003503610127871 },\n { x: 6.800000000000664e-7, y: -0.8995780213795597 },\n { x: 6.810000000000664e-7, y: -0.8954076557687466 },\n { x: 6.820000000000664e-7, y: -0.9240675928928158 },\n { x: 6.830000000000663e-7, y: -0.931662499588955 },\n { x: 6.840000000000663e-7, y: -0.9477081686012161 },\n { x: 6.850000000000663e-7, y: -1.0070930413776746 },\n { x: 6.860000000000663e-7, y: -0.9738117518142747 },\n { x: 6.870000000000662e-7, y: -0.9944927034675656 },\n { x: 6.880000000000662e-7, y: -1.0301441996220406 },\n { x: 6.890000000000662e-7, y: -1.0543073291520935 },\n { x: 6.900000000000661e-7, y: -1.061228226149279 },\n { x: 6.910000000000661e-7, y: -1.0532320129572157 },\n { x: 6.920000000000661e-7, y: -1.1285361100406788 },\n { x: 6.93000000000066e-7, y: -1.121892254856008 },\n { x: 6.94000000000066e-7, y: -1.1254009447679563 },\n { x: 6.95000000000066e-7, y: -1.1474053143088307 },\n { x: 6.96000000000066e-7, y: -1.1819284352207882 },\n { x: 6.970000000000659e-7, y: -1.170375838791766 },\n { x: 6.980000000000659e-7, y: -1.1659376718204282 },\n { x: 6.990000000000659e-7, y: -1.1985586289333732 },\n { x: 7.000000000000658e-7, y: -1.2499434800209763 },\n { x: 7.010000000000658e-7, y: -1.2677655112804196 },\n { x: 7.020000000000658e-7, y: -1.2342547119576157 },\n { x: 7.030000000000657e-7, y: -1.2899872636301766 },\n { x: 7.040000000000657e-7, y: -1.28964351308095 },\n { x: 7.050000000000657e-7, y: -1.328726839544997 },\n { x: 7.060000000000656e-7, y: -1.2762797594448783 },\n { x: 7.070000000000656e-7, y: -1.2951674220098355 },\n { x: 7.080000000000656e-7, y: -1.3201791348232343 },\n { x: 7.090000000000655e-7, y: -1.319972918897219 },\n { x: 7.100000000000655e-7, y: -1.3598193206254197 },\n { x: 7.110000000000655e-7, y: -1.3781355841807592 },\n { x: 7.120000000000655e-7, y: -1.3972533532709528 },\n { x: 7.130000000000654e-7, y: -1.396860697375187 },\n { x: 7.140000000000654e-7, y: -1.410304619824219 },\n { x: 7.150000000000654e-7, y: -1.4141963752649322 },\n { x: 7.160000000000653e-7, y: -1.4842972321676648 },\n { x: 7.170000000000653e-7, y: -1.4494901953244637 },\n { x: 7.180000000000653e-7, y: -1.4521703528655414 },\n { x: 7.190000000000652e-7, y: -1.4850233543540792 },\n { x: 7.200000000000652e-7, y: -1.4866179839955078 },\n { x: 7.210000000000652e-7, y: -1.5353383039505737 },\n { x: 7.220000000000651e-7, y: -1.5717463464532468 },\n { x: 7.230000000000651e-7, y: -1.5362570972320952 },\n { x: 7.240000000000651e-7, y: -1.5725372396688504 },\n { x: 7.250000000000651e-7, y: -1.586537427055434 },\n { x: 7.26000000000065e-7, y: -1.6040476669460735 },\n { x: 7.27000000000065e-7, y: -1.5772373292020172 },\n { x: 7.28000000000065e-7, y: -1.6373771945858209 },\n { x: 7.290000000000649e-7, y: -1.6671523434416033 },\n { x: 7.300000000000649e-7, y: -1.6537152168496216 },\n { x: 7.310000000000649e-7, y: -1.679204260122909 },\n { x: 7.320000000000648e-7, y: -1.644631906347282 },\n { x: 7.330000000000648e-7, y: -1.6979930526048614 },\n { x: 7.340000000000648e-7, y: -1.7412339724948869 },\n { x: 7.350000000000647e-7, y: -1.721147801627306 },\n { x: 7.360000000000647e-7, y: -1.735086720584018 },\n { x: 7.370000000000647e-7, y: -1.7246350604220912 },\n { x: 7.380000000000647e-7, y: -1.787684334708181 },\n { x: 7.390000000000646e-7, y: -1.7878400578387499 },\n { x: 7.400000000000646e-7, y: -1.8011118045587209 },\n { x: 7.410000000000646e-7, y: -1.80514729127611 },\n { x: 7.420000000000645e-7, y: -1.803973588079188 },\n { x: 7.430000000000645e-7, y: -1.8140088435190584 },\n { x: 7.440000000000645e-7, y: -1.8319034814867554 },\n { x: 7.450000000000644e-7, y: -1.8263356145134895 },\n { x: 7.460000000000644e-7, y: -1.9025157358889555 },\n { x: 7.470000000000644e-7, y: -1.9027662637009124 },\n { x: 7.480000000000643e-7, y: -1.8903096975887788 },\n { x: 7.490000000000643e-7, y: -1.9368445605793223 },\n { x: 7.500000000000643e-7, y: -1.9428337523967931 },\n { x: 7.510000000000643e-7, y: -1.936346029040406 },\n { x: 7.520000000000642e-7, y: -1.9660058896932944 },\n { x: 7.530000000000642e-7, y: -1.932559936623179 },\n { x: 7.540000000000642e-7, y: -1.9297911021861553 },\n { x: 7.550000000000641e-7, y: -1.9915597854807727 },\n { x: 7.560000000000641e-7, y: -2.014818577523462 },\n { x: 7.570000000000641e-7, y: -1.9749619284730717 },\n { x: 7.58000000000064e-7, y: -2.03789763369127 },\n { x: 7.59000000000064e-7, y: -2.0606302574813284 },\n { x: 7.60000000000064e-7, y: -2.0183192949514157 },\n { x: 7.61000000000064e-7, y: -2.021015311347985 },\n { x: 7.620000000000639e-7, y: -2.064119354946641 },\n { x: 7.630000000000639e-7, y: -2.055878577480391 },\n { x: 7.640000000000639e-7, y: -2.0962559501724463 },\n { x: 7.650000000000638e-7, y: -2.074018664011004 },\n { x: 7.660000000000638e-7, y: -2.0896436420394227 },\n { x: 7.670000000000638e-7, y: -2.1262724767362506 },\n { x: 7.680000000000637e-7, y: -2.1558803423283965 },\n { x: 7.690000000000637e-7, y: -2.102909108616602 },\n { x: 7.700000000000637e-7, y: -2.1317511337743587 },\n { x: 7.710000000000636e-7, y: -2.1836563851563775 },\n { x: 7.720000000000636e-7, y: -2.1749725226646803 },\n { x: 7.730000000000636e-7, y: -2.1760729330807265 },\n { x: 7.740000000000635e-7, y: -2.190896042494086 },\n { x: 7.750000000000635e-7, y: -2.2001527517103674 },\n { x: 7.760000000000635e-7, y: -2.2130418909331486 },\n { x: 7.770000000000635e-7, y: -2.2063507638943474 },\n { x: 7.780000000000634e-7, y: -2.2138750759696055 },\n { x: 7.790000000000634e-7, y: -2.2805381931239856 },\n { x: 7.800000000000634e-7, y: -2.2475678872158387 },\n { x: 7.810000000000633e-7, y: -2.2911747672325413 },\n { x: 7.820000000000633e-7, y: -2.303093003516833 },\n { x: 7.830000000000633e-7, y: -2.265271656488227 },\n { x: 7.840000000000632e-7, y: -2.2740880148368454 },\n { x: 7.850000000000632e-7, y: -2.297455793799374 },\n { x: 7.860000000000632e-7, y: -2.3071718305399123 },\n { x: 7.870000000000631e-7, y: -2.350588418405074 },\n { x: 7.880000000000631e-7, y: -2.3423590405498755 },\n { x: 7.890000000000631e-7, y: -2.3240151080745206 },\n { x: 7.900000000000631e-7, y: -2.359705796962423 },\n { x: 7.91000000000063e-7, y: -2.354457500939004 },\n { x: 7.92000000000063e-7, y: -2.3478354092748495 },\n { x: 7.93000000000063e-7, y: -2.3639572859735862 },\n { x: 7.940000000000629e-7, y: -2.4226999792401203 },\n { x: 7.950000000000629e-7, y: -2.4340544138076408 },\n { x: 7.960000000000629e-7, y: -2.3780566517382833 },\n { x: 7.970000000000628e-7, y: -2.4401803729827876 },\n { x: 7.980000000000628e-7, y: -2.4416396490411953 },\n { x: 7.990000000000628e-7, y: -2.4150481340956165 },\n { x: 8.000000000000628e-7, y: -2.476867585977726 },\n { x: 8.010000000000627e-7, y: -2.4821380392889196 },\n { x: 8.020000000000627e-7, y: -2.478856400055757 },\n { x: 8.030000000000627e-7, y: -2.4397298613346012 },\n { x: 8.040000000000626e-7, y: -2.476987541618824 },\n { x: 8.050000000000626e-7, y: -2.5020098236123385 },\n { x: 8.060000000000626e-7, y: -2.5023309800132942 },\n { x: 8.070000000000625e-7, y: -2.4829349226243025 },\n { x: 8.080000000000625e-7, y: -2.48777266497422 },\n { x: 8.090000000000625e-7, y: -2.516780384155387 },\n { x: 8.100000000000624e-7, y: -2.5683636204006723 },\n { x: 8.110000000000624e-7, y: -2.5051484995280546 },\n { x: 8.120000000000624e-7, y: -2.536891737016058 },\n { x: 8.130000000000624e-7, y: -2.5821926133444673 },\n { x: 8.140000000000623e-7, y: -2.592726295775674 },\n { x: 8.150000000000623e-7, y: -2.5614830801409627 },\n { x: 8.160000000000623e-7, y: -2.5877184984376673 },\n { x: 8.170000000000622e-7, y: -2.624103466543629 },\n { x: 8.180000000000622e-7, y: -2.6296066009332413 },\n { x: 8.190000000000622e-7, y: -2.6324868648472384 },\n { x: 8.200000000000621e-7, y: -2.5739095207819913 },\n { x: 8.210000000000621e-7, y: -2.6201295189578064 },\n { x: 8.220000000000621e-7, y: -2.6303338441350115 },\n { x: 8.23000000000062e-7, y: -2.6599352916276495 },\n { x: 8.24000000000062e-7, y: -2.626011467845632 },\n { x: 8.25000000000062e-7, y: -2.6313979610589344 },\n { x: 8.26000000000062e-7, y: -2.6629740261037655 },\n { x: 8.270000000000619e-7, y: -2.697810825260525 },\n { x: 8.280000000000619e-7, y: -2.6658295299678554 },\n { x: 8.290000000000619e-7, y: -2.6742804279564716 },\n { x: 8.300000000000618e-7, y: -2.6807843621938443 },\n { x: 8.310000000000618e-7, y: -2.6573315432723406 },\n { x: 8.320000000000618e-7, y: -2.6921605599483027 },\n { x: 8.330000000000617e-7, y: -2.7288213113864463 },\n { x: 8.340000000000617e-7, y: -2.6960210793531414 },\n { x: 8.350000000000617e-7, y: -2.7106273801500063 },\n { x: 8.360000000000616e-7, y: -2.727510157293907 },\n { x: 8.370000000000616e-7, y: -2.7458555303542234 },\n { x: 8.380000000000616e-7, y: -2.7565592316307397 },\n { x: 8.390000000000616e-7, y: -2.7147074559968853 },\n { x: 8.400000000000615e-7, y: -2.7694876935025787 },\n { x: 8.410000000000615e-7, y: -2.7733072099226033 },\n { x: 8.420000000000615e-7, y: -2.765156863431549 },\n { x: 8.430000000000614e-7, y: -2.7935596096657003 },\n { x: 8.440000000000614e-7, y: -2.779273992870829 },\n { x: 8.450000000000614e-7, y: -2.7674261280796415 },\n { x: 8.460000000000613e-7, y: -2.7831101163645715 },\n { x: 8.470000000000613e-7, y: -2.774042874495402 },\n { x: 8.480000000000613e-7, y: -2.803463457161769 },\n { x: 8.490000000000612e-7, y: -2.8076649543308796 },\n { x: 8.500000000000612e-7, y: -2.7694404649729485 },\n { x: 8.510000000000612e-7, y: -2.8296067352378946 },\n { x: 8.520000000000612e-7, y: -2.769812341436803 },\n { x: 8.530000000000611e-7, y: -2.8146911225318347 },\n { x: 8.540000000000611e-7, y: -2.8525571084872783 },\n { x: 8.550000000000611e-7, y: -2.8256074878559265 },\n { x: 8.56000000000061e-7, y: -2.8600933507442807 },\n { x: 8.57000000000061e-7, y: -2.8340954656178448 },\n { x: 8.58000000000061e-7, y: -2.867258517846509 },\n { x: 8.590000000000609e-7, y: -2.8068575537151483 },\n { x: 8.600000000000609e-7, y: -2.844352121689173 },\n { x: 8.610000000000609e-7, y: -2.8103729411780742 },\n { x: 8.620000000000608e-7, y: -2.8303707725193674 },\n { x: 8.630000000000608e-7, y: -2.843702909731462 },\n { x: 8.640000000000608e-7, y: -2.851881329615108 },\n { x: 8.650000000000608e-7, y: -2.898358851690156 },\n { x: 8.660000000000607e-7, y: -2.8313929273326073 },\n { x: 8.670000000000607e-7, y: -2.8619568275718663 },\n { x: 8.680000000000607e-7, y: -2.861704082515166 },\n { x: 8.690000000000606e-7, y: -2.8811073334254798 },\n { x: 8.700000000000606e-7, y: -2.907265338198719 },\n { x: 8.710000000000606e-7, y: -2.917435832811323 },\n { x: 8.720000000000605e-7, y: -2.861558786748291 },\n { x: 8.730000000000605e-7, y: -2.86327001465509 },\n { x: 8.740000000000605e-7, y: -2.884817017631631 },\n { x: 8.750000000000604e-7, y: -2.9298940918946696 },\n { x: 8.760000000000604e-7, y: -2.864957838518482 },\n { x: 8.770000000000604e-7, y: -2.927110684690623 },\n { x: 8.780000000000604e-7, y: -2.8902008230791316 },\n { x: 8.790000000000603e-7, y: -2.893962756214702 },\n { x: 8.800000000000603e-7, y: -2.9198740576200324 },\n { x: 8.810000000000603e-7, y: -2.906364506827804 },\n { x: 8.820000000000602e-7, y: -2.887678919802907 },\n { x: 8.830000000000602e-7, y: -2.9121500491281687 },\n { x: 8.840000000000602e-7, y: -2.8881151683897794 },\n { x: 8.850000000000601e-7, y: -2.936203526782056 },\n { x: 8.860000000000601e-7, y: -2.9487149458330384 },\n { x: 8.870000000000601e-7, y: -2.90595447037774 },\n { x: 8.8800000000006e-7, y: -2.9511577627408454 },\n { x: 8.8900000000006e-7, y: -2.9006731485650006 },\n { x: 8.9000000000006e-7, y: -2.9623864607366417 },\n { x: 8.9100000000006e-7, y: -2.9000158219127186 },\n { x: 8.920000000000599e-7, y: -2.923000395396974 },\n { x: 8.930000000000599e-7, y: -2.902882666001241 },\n { x: 8.940000000000599e-7, y: -2.9324335574470135 },\n { x: 8.950000000000598e-7, y: -2.938467125800375 },\n { x: 8.960000000000598e-7, y: -2.9766601071544376 },\n { x: 8.970000000000598e-7, y: -2.933710734734237 },\n { x: 8.980000000000597e-7, y: -2.9145057164725117 },\n { x: 8.990000000000597e-7, y: -2.9643638343036307 },\n { x: 9.000000000000597e-7, y: -2.9164639646988295 },\n { x: 9.010000000000596e-7, y: -2.9876497192815443 },\n { x: 9.020000000000596e-7, y: -2.9295998551630897 },\n { x: 9.030000000000596e-7, y: -2.916701895305716 },\n { x: 9.040000000000596e-7, y: -2.9828925473422063 },\n { x: 9.050000000000595e-7, y: -2.9667492971059195 },\n { x: 9.060000000000595e-7, y: -2.92511642650399 },\n { x: 9.070000000000595e-7, y: -2.9289609438921507 },\n { x: 9.080000000000594e-7, y: -2.9816225525217552 },\n { x: 9.090000000000594e-7, y: -2.974001745809239 },\n { x: 9.100000000000594e-7, y: -2.9321479890932602 },\n { x: 9.110000000000593e-7, y: -2.950426444382265 },\n { x: 9.120000000000593e-7, y: -2.9634305979357882 },\n { x: 9.130000000000593e-7, y: -2.935744190311045 },\n { x: 9.140000000000592e-7, y: -2.9708324209945234 },\n { x: 9.150000000000592e-7, y: -2.9382075562801813 },\n { x: 9.160000000000592e-7, y: -2.9760690670692176 },\n { x: 9.170000000000592e-7, y: -2.934654682720297 },\n { x: 9.180000000000591e-7, y: -2.962554253049239 },\n { x: 9.190000000000591e-7, y: -2.9491330025216422 },\n { x: 9.200000000000591e-7, y: -2.977843462275971 },\n { x: 9.21000000000059e-7, y: -2.9445779172293016 },\n { x: 9.22000000000059e-7, y: -2.9234494475304182 },\n { x: 9.23000000000059e-7, y: -2.972858739228422 },\n { x: 9.240000000000589e-7, y: -2.958180479195299 },\n { x: 9.250000000000589e-7, y: -2.9779554199935525 },\n { x: 9.260000000000589e-7, y: -2.9386686729792517 },\n { x: 9.270000000000588e-7, y: -2.966382483463096 },\n { x: 9.280000000000588e-7, y: -2.938944489614598 },\n { x: 9.290000000000588e-7, y: -2.9406615434132286 },\n { x: 9.300000000000588e-7, y: -2.9741451418216505 },\n { x: 9.310000000000587e-7, y: -2.91969325268199 },\n { x: 9.320000000000587e-7, y: -2.911391584737342 },\n { x: 9.330000000000587e-7, y: -2.936817823965968 },\n { x: 9.340000000000586e-7, y: -2.9298468914021263 },\n { x: 9.350000000000586e-7, y: -2.9146484371620462 },\n { x: 9.360000000000586e-7, y: -2.9507812555385247 },\n { x: 9.370000000000585e-7, y: -2.9285328472345227 },\n { x: 9.380000000000585e-7, y: -2.936304402803806 },\n { x: 9.390000000000585e-7, y: -2.9406177668531175 },\n { x: 9.400000000000584e-7, y: -2.912230115812706 },\n { x: 9.410000000000584e-7, y: -2.9341140700680257 },\n { x: 9.420000000000584e-7, y: -2.939849444769461 },\n { x: 9.430000000000584e-7, y: -2.91905481188591 },\n { x: 9.440000000000583e-7, y: -2.890618053246819 },\n { x: 9.450000000000583e-7, y: -2.944699657107766 },\n { x: 9.460000000000583e-7, y: -2.918024307776734 },\n { x: 9.470000000000582e-7, y: -2.950891370038067 },\n { x: 9.480000000000582e-7, y: -2.8909417564949136 },\n { x: 9.490000000000582e-7, y: -2.8860180655527716 },\n { x: 9.500000000000581e-7, y: -2.921838871508459 },\n { x: 9.510000000000581e-7, y: -2.93150866038216 },\n { x: 9.520000000000581e-7, y: -2.8965571678094175 },\n { x: 9.53000000000058e-7, y: -2.88527824009263 },\n { x: 9.540000000000581e-7, y: -2.9004925579372736 },\n { x: 9.550000000000582e-7, y: -2.8619863546464517 },\n { x: 9.560000000000583e-7, y: -2.874137257214041 },\n { x: 9.570000000000583e-7, y: -2.8552102483960966 },\n { x: 9.580000000000584e-7, y: -2.8786915156360866 },\n { x: 9.590000000000585e-7, y: -2.8568495436065464 },\n { x: 9.600000000000586e-7, y: -2.8911457219041163 },\n { x: 9.610000000000586e-7, y: -2.9049199006203055 },\n { x: 9.620000000000587e-7, y: -2.870753698210861 },\n { x: 9.630000000000588e-7, y: -2.8640630016241126 },\n { x: 9.640000000000589e-7, y: -2.83726716564893 },\n { x: 9.65000000000059e-7, y: -2.8314638129994814 },\n { x: 9.66000000000059e-7, y: -2.85247264605437 },\n { x: 9.67000000000059e-7, y: -2.8673165364236834 },\n { x: 9.680000000000592e-7, y: -2.8406045706033933 },\n { x: 9.690000000000592e-7, y: -2.8219753606363853 },\n { x: 9.700000000000593e-7, y: -2.825899372369524 },\n { x: 9.710000000000594e-7, y: -2.8493359555856745 },\n { x: 9.720000000000595e-7, y: -2.862735020921013 },\n { x: 9.730000000000595e-7, y: -2.8307770007251682 },\n { x: 9.740000000000596e-7, y: -2.8221561577794527 },\n { x: 9.750000000000597e-7, y: -2.811385901066925 },\n { x: 9.760000000000598e-7, y: -2.827662881343826 },\n { x: 9.770000000000598e-7, y: -2.7965472829768863 },\n { x: 9.7800000000006e-7, y: -2.788428858190958 },\n { x: 9.7900000000006e-7, y: -2.8441734932241953 },\n { x: 9.8000000000006e-7, y: -2.781833981692926 },\n { x: 9.810000000000601e-7, y: -2.8308549346264558 },\n { x: 9.820000000000602e-7, y: -2.756527743948133 },\n { x: 9.830000000000603e-7, y: -2.785222528151875 },\n { x: 9.840000000000604e-7, y: -2.776646677900193 },\n { x: 9.850000000000604e-7, y: -2.7864867204481785 },\n { x: 9.860000000000605e-7, y: -2.761534793534902 },\n { x: 9.870000000000606e-7, y: -2.7818643010825195 },\n { x: 9.880000000000607e-7, y: -2.728761254626916 },\n { x: 9.890000000000607e-7, y: -2.7783140884864883 },\n { x: 9.900000000000608e-7, y: -2.7577191444065225 },\n { x: 9.91000000000061e-7, y: -2.7441047180763793 },\n { x: 9.92000000000061e-7, y: -2.7712962077121355 },\n { x: 9.93000000000061e-7, y: -2.7138091703923664 },\n { x: 9.940000000000611e-7, y: -2.727822159791245 },\n { x: 9.950000000000612e-7, y: -2.69583323562765 },\n { x: 9.960000000000613e-7, y: -2.689606324034795 },\n { x: 9.970000000000614e-7, y: -2.7217491913539376 },\n { x: 9.980000000000614e-7, y: -2.743696201740999 },\n { x: 9.990000000000615e-7, y: -2.729230444301794 },\n { x: 0.0000010000000000000616, y: -2.7002798704252844 },\n { x: 0.0000010010000000000617, y: -2.6964244573508234 },\n { x: 0.0000010020000000000617, y: -2.6954973390823227 },\n { x: 0.0000010030000000000618, y: -2.6742057473662912 },\n { x: 0.0000010040000000000619, y: -2.6869155896835677 },\n { x: 0.000001005000000000062, y: -2.649006202055302 },\n { x: 0.000001006000000000062, y: -2.640016436732289 },\n { x: 0.000001007000000000062, y: -2.6697346018535293 },\n { x: 0.0000010080000000000622, y: -2.6537247452612447 },\n { x: 0.0000010090000000000623, y: -2.6679345916532102 },\n { x: 0.0000010100000000000623, y: -2.653369421210141 },\n { x: 0.0000010110000000000624, y: -2.630046484330408 },\n { x: 0.0000010120000000000625, y: -2.6395439276650956 },\n { x: 0.0000010130000000000626, y: -2.5997301407613 },\n { x: 0.0000010140000000000626, y: -2.6461432860301484 },\n { x: 0.0000010150000000000627, y: -2.6005733095703407 },\n { x: 0.0000010160000000000628, y: -2.6159512628906043 },\n { x: 0.0000010170000000000629, y: -2.624265547470855 },\n { x: 0.000001018000000000063, y: -2.5571658136794873 },\n { x: 0.000001019000000000063, y: -2.5881990309651273 },\n { x: 0.000001020000000000063, y: -2.5541298055449206 },\n { x: 0.0000010210000000000632, y: -2.5377863986711326 },\n { x: 0.0000010220000000000632, y: -2.5489555611229613 },\n { x: 0.0000010230000000000633, y: -2.55538817619838 },\n { x: 0.0000010240000000000634, y: -2.5766401792970512 },\n { x: 0.0000010250000000000635, y: -2.5148417592349763 },\n { x: 0.0000010260000000000635, y: -2.5472709907113376 },\n { x: 0.0000010270000000000636, y: -2.53825638260045 },\n { x: 0.0000010280000000000637, y: -2.477190922886537 },\n { x: 0.0000010290000000000638, y: -2.514066980046247 },\n { x: 0.0000010300000000000638, y: -2.493761840639996 },\n { x: 0.000001031000000000064, y: -2.5185998181291867 },\n { x: 0.000001032000000000064, y: -2.4913912816660093 },\n { x: 0.000001033000000000064, y: -2.4796168646922 },\n { x: 0.0000010340000000000641, y: -2.4796530303501654 },\n { x: 0.0000010350000000000642, y: -2.45121270551031 },\n { x: 0.0000010360000000000643, y: -2.443976954176379 },\n { x: 0.0000010370000000000644, y: -2.4317250425826327 },\n { x: 0.0000010380000000000644, y: -2.4201043484104785 },\n { x: 0.0000010390000000000645, y: -2.433336170259666 },\n { x: 0.0000010400000000000646, y: -2.441347548251501 },\n { x: 0.0000010410000000000647, y: -2.414508312110115 },\n { x: 0.0000010420000000000647, y: -2.4232681901616275 },\n { x: 0.0000010430000000000648, y: -2.423133440182755 },\n { x: 0.0000010440000000000649, y: -2.412656817214131 },\n { x: 0.000001045000000000065, y: -2.405672474450974 },\n { x: 0.000001046000000000065, y: -2.357864832330612 },\n { x: 0.0000010470000000000651, y: -2.3617701422918778 },\n { x: 0.0000010480000000000652, y: -2.347781376983625 },\n { x: 0.0000010490000000000653, y: -2.316753906684353 },\n { x: 0.0000010500000000000653, y: -2.322605217392935 },\n { x: 0.0000010510000000000654, y: -2.3441096488564686 },\n { x: 0.0000010520000000000655, y: -2.282898132491534 },\n { x: 0.0000010530000000000656, y: -2.3069435747675358 },\n { x: 0.0000010540000000000656, y: -2.318574656384435 },\n { x: 0.0000010550000000000657, y: -2.257501230828061 },\n { x: 0.0000010560000000000658, y: -2.2976754936359938 },\n { x: 0.0000010570000000000659, y: -2.28231706183603 },\n { x: 0.000001058000000000066, y: -2.2518844643742533 },\n { x: 0.000001059000000000066, y: -2.245637829959301 },\n { x: 0.000001060000000000066, y: -2.259457696194272 },\n { x: 0.0000010610000000000662, y: -2.2674896557086104 },\n { x: 0.0000010620000000000662, y: -2.25567170796724 },\n { x: 0.0000010630000000000663, y: -2.2259857569530386 },\n { x: 0.0000010640000000000664, y: -2.2064798980754188 },\n { x: 0.0000010650000000000665, y: -2.2215357721999207 },\n { x: 0.0000010660000000000665, y: -2.191990560473061 },\n { x: 0.0000010670000000000666, y: -2.1539329033220675 },\n { x: 0.0000010680000000000667, y: -2.160942247206046 },\n { x: 0.0000010690000000000668, y: -2.143769437596853 },\n { x: 0.0000010700000000000668, y: -2.167421585790664 },\n { x: 0.000001071000000000067, y: -2.131279970759539 },\n { x: 0.000001072000000000067, y: -2.1347397373950034 },\n { x: 0.000001073000000000067, y: -2.0866999139614575 },\n { x: 0.0000010740000000000671, y: -2.1183001384603597 },\n { x: 0.0000010750000000000672, y: -2.086334409698115 },\n { x: 0.0000010760000000000673, y: -2.0593984409407717 },\n { x: 0.0000010770000000000674, y: -2.1063244124424423 },\n { x: 0.0000010780000000000674, y: -2.08836151917355 },\n { x: 0.0000010790000000000675, y: -2.1015081560595226 },\n { x: 0.0000010800000000000676, y: -2.024749987916138 },\n { x: 0.0000010810000000000677, y: -2.040732752230928 },\n { x: 0.0000010820000000000677, y: -2.046168870436642 },\n { x: 0.0000010830000000000678, y: -2.0525018649358757 },\n { x: 0.0000010840000000000679, y: -2.0375303832587295 },\n { x: 0.000001085000000000068, y: -2.0120983798446193 },\n { x: 0.000001086000000000068, y: -1.9960215496681246 },\n { x: 0.0000010870000000000681, y: -1.9739055525154958 },\n { x: 0.0000010880000000000682, y: -1.9884229978218901 },\n { x: 0.0000010890000000000683, y: -1.9959712954910505 },\n { x: 0.0000010900000000000683, y: -1.9350623037016246 },\n { x: 0.0000010910000000000684, y: -1.9279924609968988 },\n { x: 0.0000010920000000000685, y: -1.9083889185898628 },\n { x: 0.0000010930000000000686, y: -1.9107646279557768 },\n { x: 0.0000010940000000000686, y: -1.9235896904213654 },\n { x: 0.0000010950000000000687, y: -1.9077264580747624 },\n { x: 0.0000010960000000000688, y: -1.8587589590236497 },\n { x: 0.0000010970000000000689, y: -1.876597786919901 },\n { x: 0.000001098000000000069, y: -1.8700217459328776 },\n { x: 0.000001099000000000069, y: -1.847740190818427 },\n { x: 0.000001100000000000069, y: -1.835527592526767 },\n { x: 0.0000011010000000000692, y: -1.8290841453361617 },\n { x: 0.0000011020000000000692, y: -1.8089095363694432 },\n { x: 0.0000011030000000000693, y: -1.8190969867635092 },\n { x: 0.0000011040000000000694, y: -1.8092723319865567 },\n { x: 0.0000011050000000000695, y: -1.801222425563087 },\n { x: 0.0000011060000000000695, y: -1.7679683199942404 },\n { x: 0.0000011070000000000696, y: -1.7700883442195483 },\n { x: 0.0000011080000000000697, y: -1.7470404177486727 },\n { x: 0.0000011090000000000698, y: -1.7419412927283844 },\n { x: 0.0000011100000000000698, y: -1.708243658522816 },\n { x: 0.00000111100000000007, y: -1.70685823692574 },\n { x: 0.00000111200000000007, y: -1.6920185647394441 },\n { x: 0.00000111300000000007, y: -1.69210557753839 },\n { x: 0.0000011140000000000701, y: -1.724796033691692 },\n { x: 0.0000011150000000000702, y: -1.7016664205042438 },\n { x: 0.0000011160000000000703, y: -1.705493665671974 },\n { x: 0.0000011170000000000704, y: -1.6578417283905895 },\n { x: 0.0000011180000000000704, y: -1.6802684355063802 },\n { x: 0.0000011190000000000705, y: -1.606026575642993 },\n { x: 0.0000011200000000000706, y: -1.6227450046947103 },\n { x: 0.0000011210000000000707, y: -1.6136834614352478 },\n { x: 0.0000011220000000000707, y: -1.5803592168441492 },\n { x: 0.0000011230000000000708, y: -1.6110596917648399 },\n { x: 0.0000011240000000000709, y: -1.5671805813681838 },\n { x: 0.000001125000000000071, y: -1.57329435918908 },\n { x: 0.000001126000000000071, y: -1.5795922254455512 },\n { x: 0.0000011270000000000711, y: -1.5538408168409483 },\n { x: 0.0000011280000000000712, y: -1.5374636303586313 },\n { x: 0.0000011290000000000713, y: -1.5676948153395773 },\n { x: 0.0000011300000000000713, y: -1.5110600731112371 },\n { x: 0.0000011310000000000714, y: -1.470305290533936 },\n { x: 0.0000011320000000000715, y: -1.471230750920955 },\n { x: 0.0000011330000000000716, y: -1.4820692543786587 },\n { x: 0.0000011340000000000716, y: -1.4874962478150864 },\n { x: 0.0000011350000000000717, y: -1.4578597809457159 },\n { x: 0.0000011360000000000718, y: -1.4215625375059417 },\n { x: 0.0000011370000000000719, y: -1.4616946552057766 },\n { x: 0.000001138000000000072, y: -1.4345160952785518 },\n { x: 0.000001139000000000072, y: -1.4214127328720212 },\n { x: 0.000001140000000000072, y: -1.436569048731919 },\n { x: 0.0000011410000000000722, y: -1.415868722476098 },\n { x: 0.0000011420000000000722, y: -1.3726439914739348 },\n { x: 0.0000011430000000000723, y: -1.3927190972834356 },\n { x: 0.0000011440000000000724, y: -1.3572754080466038 },\n { x: 0.0000011450000000000725, y: -1.3176891264423618 },\n { x: 0.0000011460000000000725, y: -1.297536940448045 },\n { x: 0.0000011470000000000726, y: -1.3534486267580776 },\n { x: 0.0000011480000000000727, y: -1.3453498940426343 },\n { x: 0.0000011490000000000728, y: -1.2937255429648007 },\n { x: 0.0000011500000000000728, y: -1.249173294768944 },\n { x: 0.000001151000000000073, y: -1.2855758420136414 },\n { x: 0.000001152000000000073, y: -1.2878233524132527 },\n { x: 0.000001153000000000073, y: -1.2238746184687883 },\n { x: 0.0000011540000000000731, y: -1.2261625076650529 },\n { x: 0.0000011550000000000732, y: -1.2244442063236738 },\n { x: 0.0000011560000000000733, y: -1.1797882988974489 },\n { x: 0.0000011570000000000734, y: -1.1649731253785105 },\n { x: 0.0000011580000000000734, y: -1.1768275453401826 },\n { x: 0.0000011590000000000735, y: -1.1908915651711174 },\n { x: 0.0000011600000000000736, y: -1.163447905914741 },\n { x: 0.0000011610000000000737, y: -1.121123721260343 },\n { x: 0.0000011620000000000737, y: -1.143009576913168 },\n { x: 0.0000011630000000000738, y: -1.1552731558038924 },\n { x: 0.000001164000000000074, y: -1.0996497605933475 },\n { x: 0.000001165000000000074, y: -1.0931065759246417 },\n { x: 0.000001166000000000074, y: -1.0637961552040398 },\n { x: 0.0000011670000000000741, y: -1.0959283508828057 },\n { x: 0.0000011680000000000742, y: -1.0890231453497359 },\n { x: 0.0000011690000000000743, y: -1.0782191801027068 },\n { x: 0.0000011700000000000743, y: -1.0132884475994262 },\n { x: 0.0000011710000000000744, y: -1.0020973860822264 },\n { x: 0.0000011720000000000745, y: -1.0241218334285882 },\n { x: 0.0000011730000000000746, y: -1.0031357856720269 },\n { x: 0.0000011740000000000746, y: -1.005636247241965 },\n { x: 0.0000011750000000000747, y: -0.9925000750270289 },\n { x: 0.0000011760000000000748, y: -0.9610862456471924 },\n { x: 0.0000011770000000000749, y: -0.9556779325141588 },\n { x: 0.000001178000000000075, y: -0.9358322265882817 },\n { x: 0.000001179000000000075, y: -0.9042068481365282 },\n { x: 0.000001180000000000075, y: -0.9441361447165949 },\n { x: 0.0000011810000000000752, y: -0.9252952984481573 },\n { x: 0.0000011820000000000752, y: -0.9000672065787889 },\n { x: 0.0000011830000000000753, y: -0.9283057383199305 },\n { x: 0.0000011840000000000754, y: -0.8774893554451562 },\n { x: 0.0000011850000000000755, y: -0.8529084046226574 },\n { x: 0.0000011860000000000756, y: -0.8624063515743335 },\n { x: 0.0000011870000000000756, y: -0.8167009109674965 },\n { x: 0.0000011880000000000757, y: -0.8043248337208095 },\n { x: 0.0000011890000000000758, y: -0.8501223406799542 },\n { x: 0.0000011900000000000759, y: -0.798174663748855 },\n { x: 0.000001191000000000076, y: -0.809421445655857 },\n { x: 0.000001192000000000076, y: -0.7811664379641953 },\n { x: 0.000001193000000000076, y: -0.7331741766129248 },\n { x: 0.0000011940000000000762, y: -0.7678636008900854 },\n { x: 0.0000011950000000000762, y: -0.7291745382612629 },\n { x: 0.0000011960000000000763, y: -0.7064243017579349 },\n { x: 0.0000011970000000000764, y: -0.7314566866982875 },\n { x: 0.0000011980000000000765, y: -0.6736269281284476 },\n { x: 0.0000011990000000000765, y: -0.6961430607322345 },\n { x: 0.0000012000000000000766, y: -0.6760020006353963 },\n { x: 0.0000012010000000000767, y: -0.6603962886061162 },\n { x: 0.0000012020000000000768, y: -0.6216122377675556 },\n { x: 0.0000012030000000000768, y: -0.6699811922803657 },\n { x: 0.000001204000000000077, y: -0.6072391978108935 },\n { x: 0.000001205000000000077, y: -0.6471095886886495 },\n { x: 0.000001206000000000077, y: -0.6214786900756055 },\n { x: 0.0000012070000000000771, y: -0.6032581063776964 },\n { x: 0.0000012080000000000772, y: -0.5660881860970816 },\n { x: 0.0000012090000000000773, y: -0.604502355070154 },\n { x: 0.0000012100000000000774, y: -0.5349529258666671 },\n { x: 0.0000012110000000000774, y: -0.5718732660477731 },\n { x: 0.0000012120000000000775, y: -0.541292351736929 },\n { x: 0.0000012130000000000776, y: -0.553317931937487 },\n { x: 0.0000012140000000000777, y: -0.5211680273101764 },\n { x: 0.0000012150000000000777, y: -0.47399143437207375 },\n { x: 0.0000012160000000000778, y: -0.47197657428818074 },\n { x: 0.0000012170000000000779, y: -0.4536771160107145 },\n { x: 0.000001218000000000078, y: -0.43356801949054585 },\n { x: 0.000001219000000000078, y: -0.4860261910727052 },\n { x: 0.000001220000000000078, y: -0.412817153510327 },\n { x: 0.0000012210000000000782, y: -0.39299964123401604 },\n { x: 0.0000012220000000000783, y: -0.4148650599048196 },\n { x: 0.0000012230000000000783, y: -0.4402037779506115 },\n { x: 0.0000012240000000000784, y: -0.3566532499659609 },\n { x: 0.0000012250000000000785, y: -0.40529459829099734 },\n { x: 0.0000012260000000000786, y: -0.35570858729529825 },\n { x: 0.0000012270000000000786, y: -0.3563409633429071 },\n { x: 0.0000012280000000000787, y: -0.33188067469457133 },\n { x: 0.0000012290000000000788, y: -0.3499667793908304 },\n { x: 0.0000012300000000000789, y: -0.2954163264402897 },\n { x: 0.000001231000000000079, y: -0.30286059381414276 },\n { x: 0.000001232000000000079, y: -0.3151707751191381 },\n { x: 0.000001233000000000079, y: -0.29108939715095333 },\n { x: 0.0000012340000000000792, y: -0.27181700370963724 },\n { x: 0.0000012350000000000792, y: -0.27799890978536135 },\n { x: 0.0000012360000000000793, y: -0.2385474349092482 },\n { x: 0.0000012370000000000794, y: -0.2586020325902714 },\n { x: 0.0000012380000000000795, y: -0.22536500423236583 },\n { x: 0.0000012390000000000795, y: -0.20183827100993776 },\n { x: 0.0000012400000000000796, y: -0.23010071703753565 },\n { x: 0.0000012410000000000797, y: -0.16503036288459788 },\n { x: 0.0000012420000000000798, y: -0.1566256961757913 },\n { x: 0.0000012430000000000798, y: -0.18521100261754386 },\n { x: 0.00000124400000000008, y: -0.12747842038671897 },\n { x: 0.00000124500000000008, y: -0.14309280125545476 },\n { x: 0.00000124600000000008, y: -0.13100474583539598 },\n { x: 0.0000012470000000000801, y: -0.10405612830352308 },\n { x: 0.0000012480000000000802, y: -0.06832324024087069 },\n { x: 0.0000012490000000000803, y: -0.0656382549619924 },\n { x: 0.0000012500000000000804, y: -0.10622065014561533 },\n { x: 0.0000012510000000000804, y: -0.07044054202811087 },\n { x: 0.0000012520000000000805, y: -0.04262569001602948 },\n { x: 0.0000012530000000000806, y: -0.006892326022809522 },\n { x: 0.0000012540000000000807, y: -0.044470199050654004 },\n { x: 0.0000012550000000000807, y: -0.0404008740530935 },\n { x: 0.0000012560000000000808, y: 0.0222345762679733 },\n { x: 0.0000012570000000000809, y: 0.014272908557915614 },\n { x: 0.000001258000000000081, y: 0.00955292527263679 },\n { x: 0.000001259000000000081, y: 0.018943398024962442 },\n { x: 0.0000012600000000000811, y: 0.04591799795923668 },\n { x: 0.0000012610000000000812, y: 0.06177106106287698 },\n { x: 0.0000012620000000000813, y: 0.06156218253302007 },\n { x: 0.0000012630000000000813, y: 0.09901423986690978 },\n { x: 0.0000012640000000000814, y: 0.07718737983512958 },\n { x: 0.0000012650000000000815, y: 0.11499187693592912 },\n { x: 0.0000012660000000000816, y: 0.09838870921516399 },\n { x: 0.0000012670000000000816, y: 0.0840379348728896 },\n { x: 0.0000012680000000000817, y: 0.13633526308057603 },\n { x: 0.0000012690000000000818, y: 0.1505639064186107 },\n { x: 0.0000012700000000000819, y: 0.18636304009074428 },\n { x: 0.000001271000000000082, y: 0.16631802517142183 },\n { x: 0.000001272000000000082, y: 0.14394172167609634 },\n { x: 0.000001273000000000082, y: 0.1847688995852056 },\n { x: 0.0000012740000000000822, y: 0.16418411574793573 },\n { x: 0.0000012750000000000822, y: 0.23999062672305949 },\n { x: 0.0000012760000000000823, y: 0.19295812425074416 },\n { x: 0.0000012770000000000824, y: 0.21590498380700832 },\n { x: 0.0000012780000000000825, y: 0.2727873035990194 },\n { x: 0.0000012790000000000825, y: 0.28807061637346115 },\n { x: 0.0000012800000000000826, y: 0.29462033681088584 },\n { x: 0.0000012810000000000827, y: 0.25129915397047126 },\n { x: 0.0000012820000000000828, y: 0.28442262840447213 },\n { x: 0.0000012830000000000828, y: 0.2802008382995984 },\n { x: 0.000001284000000000083, y: 0.2795953427073829 },\n { x: 0.000001285000000000083, y: 0.32248646722251306 },\n { x: 0.000001286000000000083, y: 0.34498547257461015 },\n { x: 0.0000012870000000000831, y: 0.3754367286864585 },\n { x: 0.0000012880000000000832, y: 0.3549892102190534 },\n { x: 0.0000012890000000000833, y: 0.3556622432894077 },\n { x: 0.0000012900000000000834, y: 0.40761037666177297 },\n { x: 0.0000012910000000000834, y: 0.3934519898280681 },\n { x: 0.0000012920000000000835, y: 0.3993731625146763 },\n { x: 0.0000012930000000000836, y: 0.4145989997553983 },\n { x: 0.0000012940000000000837, y: 0.428242236157867 },\n { x: 0.0000012950000000000837, y: 0.4394479597005514 },\n { x: 0.0000012960000000000838, y: 0.41697021752229857 },\n { x: 0.0000012970000000000839, y: 0.4321021747935018 },\n { x: 0.000001298000000000084, y: 0.4991021558247655 },\n { x: 0.000001299000000000084, y: 0.4841753180139331 },\n { x: 0.0000013000000000000841, y: 0.5024118956639743 },\n { x: 0.0000013010000000000842, y: 0.49777540379003915 },\n { x: 0.0000013020000000000843, y: 0.4993041830210104 },\n { x: 0.0000013030000000000843, y: 0.5555349732401625 },\n { x: 0.0000013040000000000844, y: 0.5629492248583431 },\n { x: 0.0000013050000000000845, y: 0.511170676531255 },\n { x: 0.0000013060000000000846, y: 0.5296936284835054 },\n { x: 0.0000013070000000000846, y: 0.5758686488334313 },\n { x: 0.0000013080000000000847, y: 0.5944288869939841 },\n { x: 0.0000013090000000000848, y: 0.5580989997058687 },\n { x: 0.0000013100000000000849, y: 0.5729570099495459 },\n { x: 0.000001311000000000085, y: 0.5756725686316552 },\n { x: 0.000001312000000000085, y: 0.6435082364409714 },\n { x: 0.000001313000000000085, y: 0.5918370644555717 },\n { x: 0.0000013140000000000852, y: 0.6155246551318653 },\n { x: 0.0000013150000000000852, y: 0.6624536182221034 },\n { x: 0.0000013160000000000853, y: 0.67987383385797 },\n { x: 0.0000013170000000000854, y: 0.6929630847664733 },\n { x: 0.0000013180000000000855, y: 0.6660665077125373 },\n { x: 0.0000013190000000000855, y: 0.7096574334175468 },\n { x: 0.0000013200000000000856, y: 0.7267585634672878 },\n { x: 0.0000013210000000000857, y: 0.7099257982334164 },\n { x: 0.0000013220000000000858, y: 0.7349264148641211 },\n { x: 0.0000013230000000000858, y: 0.7690448908074996 },\n { x: 0.000001324000000000086, y: 0.7534382474070918 },\n { x: 0.000001325000000000086, y: 0.7644049030276735 },\n { x: 0.000001326000000000086, y: 0.7467587676806047 },\n { x: 0.0000013270000000000861, y: 0.7669818111777716 },\n { x: 0.0000013280000000000862, y: 0.7988575614807502 },\n { x: 0.0000013290000000000863, y: 0.7831882572233348 },\n { x: 0.0000013300000000000864, y: 0.8365998374971845 },\n { x: 0.0000013310000000000864, y: 0.7781463160569243 },\n { x: 0.0000013320000000000865, y: 0.7899770842862761 },\n { x: 0.0000013330000000000866, y: 0.8006550736377733 },\n { x: 0.0000013340000000000867, y: 0.9002449346568221 },\n { x: 0.0000013350000000000867, y: 0.8632371565230259 },\n { x: 0.0000013360000000000868, y: 0.8861729766886234 },\n { x: 0.000001337000000000087, y: 0.847276070381745 },\n { x: 0.000001338000000000087, y: 0.9127517184353817 },\n { x: 0.000001339000000000087, y: 0.8534266188437545 },\n { x: 0.0000013400000000000871, y: 0.8823190628769446 },\n { x: 0.0000013410000000000872, y: 0.9112271670028148 },\n { x: 0.0000013420000000000873, y: 0.8867842855047384 },\n { x: 0.0000013430000000000873, y: 0.9322336072203685 },\n { x: 0.0000013440000000000874, y: 0.9252305587856131 },\n { x: 0.0000013450000000000875, y: 0.9080531556699117 },\n { x: 0.0000013460000000000876, y: 0.9592728298584061 },\n { x: 0.0000013470000000000876, y: 0.9537044931110791 },\n { x: 0.0000013480000000000877, y: 0.9763400143931343 },\n { x: 0.0000013490000000000878, y: 0.9778785299230038 },\n { x: 0.0000013500000000000879, y: 1.02335388029879 },\n { x: 0.000001351000000000088, y: 1.0301951965852265 },\n { x: 0.000001352000000000088, y: 1.0049752184771101 },\n { x: 0.000001353000000000088, y: 1.0207330574280284 },\n { x: 0.0000013540000000000882, y: 1.0604016122403743 },\n { x: 0.0000013550000000000882, y: 1.0763512845981638 },\n { x: 0.0000013560000000000883, y: 1.0081616297784155 },\n { x: 0.0000013570000000000884, y: 1.0601639039079285 },\n { x: 0.0000013580000000000885, y: 1.037881172538787 },\n { x: 0.0000013590000000000885, y: 1.0947889707438094 },\n { x: 0.0000013600000000000886, y: 1.0638148734476056 },\n { x: 0.0000013610000000000887, y: 1.109269641128165 },\n { x: 0.0000013620000000000888, y: 1.131991477205069 },\n { x: 0.0000013630000000000888, y: 1.0809993260950888 },\n { x: 0.000001364000000000089, y: 1.1406593859177832 },\n { x: 0.000001365000000000089, y: 1.1022940906732164 },\n { x: 0.000001366000000000089, y: 1.109503884727809 },\n { x: 0.0000013670000000000891, y: 1.1530727818792175 },\n { x: 0.0000013680000000000892, y: 1.1201052726299028 },\n { x: 0.0000013690000000000893, y: 1.1848508584439053 },\n { x: 0.0000013700000000000894, y: 1.1393971861846335 },\n { x: 0.0000013710000000000894, y: 1.1868523171957746 },\n { x: 0.0000013720000000000895, y: 1.1927822129675518 },\n { x: 0.0000013730000000000896, y: 1.2262264561900362 },\n { x: 0.0000013740000000000897, y: 1.2145199307800636 },\n { x: 0.0000013750000000000897, y: 1.1865584481971507 },\n { x: 0.0000013760000000000898, y: 1.24932341609842 },\n { x: 0.00000137700000000009, y: 1.2289433580721276 },\n { x: 0.00000137800000000009, y: 1.233498062275379 },\n { x: 0.00000137900000000009, y: 1.2013012874965872 },\n { x: 0.0000013800000000000901, y: 1.2541024503936453 },\n { x: 0.0000013810000000000902, y: 1.260847737848186 },\n { x: 0.0000013820000000000903, y: 1.2540716847222866 },\n { x: 0.0000013830000000000904, y: 1.253580933646218 },\n { x: 0.0000013840000000000904, y: 1.2977099253491804 },\n { x: 0.0000013850000000000905, y: 1.3042756904890374 },\n { x: 0.0000013860000000000906, y: 1.3102778099058368 },\n { x: 0.0000013870000000000907, y: 1.3079842329637883 },\n { x: 0.0000013880000000000907, y: 1.279246923386455 },\n { x: 0.0000013890000000000908, y: 1.3240327335338125 },\n { x: 0.0000013900000000000909, y: 1.3052053262606482 },\n { x: 0.000001391000000000091, y: 1.3420997940341681 },\n { x: 0.000001392000000000091, y: 1.3175633048625737 },\n { x: 0.000001393000000000091, y: 1.3319689879743344 },\n { x: 0.0000013940000000000912, y: 1.3243179210992126 },\n { x: 0.0000013950000000000913, y: 1.3305423519846902 },\n { x: 0.0000013960000000000913, y: 1.3470543963602295 },\n { x: 0.0000013970000000000914, y: 1.3453053583704047 },\n { x: 0.0000013980000000000915, y: 1.3985414163076368 },\n { x: 0.0000013990000000000916, y: 1.3523447467162584 },\n { x: 0.0000014000000000000916, y: 1.4175969014857355 },\n { x: 0.0000014010000000000917, y: 1.422805794341122 },\n { x: 0.0000014020000000000918, y: 1.3827020373009486 },\n { x: 0.0000014030000000000919, y: 1.419026855558873 },\n { x: 0.000001404000000000092, y: 1.4474092185770062 },\n { x: 0.000001405000000000092, y: 1.4336613275978254 },\n { x: 0.000001406000000000092, y: 1.435761775780304 },\n { x: 0.0000014070000000000922, y: 1.479037987164875 },\n { x: 0.0000014080000000000922, y: 1.4204867184247094 },\n { x: 0.0000014090000000000923, y: 1.4253652526048908 },\n { x: 0.0000014100000000000924, y: 1.4825068358351217 },\n { x: 0.0000014110000000000925, y: 1.4625566089324982 },\n { x: 0.0000014120000000000925, y: 1.44479121833187 },\n { x: 0.0000014130000000000926, y: 1.490633320624915 },\n { x: 0.0000014140000000000927, y: 1.4571191809168724 },\n { x: 0.0000014150000000000928, y: 1.479070756508637 },\n { x: 0.0000014160000000000928, y: 1.47201571523662 },\n { x: 0.000001417000000000093, y: 1.5089304910268952 },\n { x: 0.000001418000000000093, y: 1.5016359101324117 },\n { x: 0.000001419000000000093, y: 1.5402289028349656 },\n { x: 0.0000014200000000000931, y: 1.4996123374523933 },\n { x: 0.0000014210000000000932, y: 1.5390983947862773 },\n { x: 0.0000014220000000000933, y: 1.573380257701024 },\n { x: 0.0000014230000000000934, y: 1.545228658728816 },\n { x: 0.0000014240000000000934, y: 1.5182315898604775 },\n { x: 0.0000014250000000000935, y: 1.5288565986743126 },\n { x: 0.0000014260000000000936, y: 1.550765932220956 },\n { x: 0.0000014270000000000937, y: 1.539844056031576 },\n { x: 0.0000014280000000000937, y: 1.6072188955842586 },\n { x: 0.0000014290000000000938, y: 1.5637666683921325 },\n { x: 0.0000014300000000000939, y: 1.5926528672933669 },\n { x: 0.000001431000000000094, y: 1.6006688884094726 },\n { x: 0.000001432000000000094, y: 1.5808575980645503 },\n { x: 0.0000014330000000000941, y: 1.5818714452269909 },\n { x: 0.0000014340000000000942, y: 1.6104324510826464 },\n { x: 0.0000014350000000000943, y: 1.6109894062563763 },\n { x: 0.0000014360000000000943, y: 1.613775566543623 },\n { x: 0.0000014370000000000944, y: 1.5879502582947922 },\n { x: 0.0000014380000000000945, y: 1.6509233363230875 },\n { x: 0.0000014390000000000946, y: 1.666832074364236 },\n { x: 0.0000014400000000000946, y: 1.617697621024788 },\n { x: 0.0000014410000000000947, y: 1.6215467511000008 },\n { x: 0.0000014420000000000948, y: 1.6350247530000641 },\n { x: 0.0000014430000000000949, y: 1.6573130899160686 },\n { x: 0.000001444000000000095, y: 1.6472290993325687 },\n { x: 0.000001445000000000095, y: 1.6528361255604989 },\n { x: 0.000001446000000000095, y: 1.6752075728222795 },\n { x: 0.0000014470000000000952, y: 1.6604596065985828 },\n { x: 0.0000014480000000000952, y: 1.7174934450483135 },\n { x: 0.0000014490000000000953, y: 1.7151268639704775 },\n { x: 0.0000014500000000000954, y: 1.6774700480466092 },\n { x: 0.0000014510000000000955, y: 1.6605459562773377 },\n { x: 0.0000014520000000000955, y: 1.6631179816046038 },\n { x: 0.0000014530000000000956, y: 1.6734516272150848 },\n { x: 0.0000014540000000000957, y: 1.7057702302492914 },\n { x: 0.0000014550000000000958, y: 1.714602100117394 },\n { x: 0.0000014560000000000958, y: 1.7032063357622889 },\n { x: 0.000001457000000000096, y: 1.6828565751266131 },\n { x: 0.000001458000000000096, y: 1.7074587889390729 },\n { x: 0.000001459000000000096, y: 1.717877649452109 },\n { x: 0.0000014600000000000961, y: 1.7574421897984218 },\n { x: 0.0000014610000000000962, y: 1.7141339602267018 },\n { x: 0.0000014620000000000963, y: 1.7666450413502615 },\n { x: 0.0000014630000000000964, y: 1.7666094454459231 },\n { x: 0.0000014640000000000964, y: 1.7846373614348021 },\n { x: 0.0000014650000000000965, y: 1.7216312395800037 },\n { x: 0.0000014660000000000966, y: 1.7478189309272825 },\n { x: 0.0000014670000000000967, y: 1.7536177757822449 },\n { x: 0.0000014680000000000967, y: 1.7635447863280753 },\n { x: 0.0000014690000000000968, y: 1.7814573045479227 },\n { x: 0.0000014700000000000969, y: 1.789039254345991 },\n { x: 0.000001471000000000097, y: 1.7697375578374506 },\n { x: 0.000001472000000000097, y: 1.7675320681639766 },\n { x: 0.0000014730000000000971, y: 1.7701851453220134 },\n { x: 0.0000014740000000000972, y: 1.78337529058658 },\n { x: 0.0000014750000000000973, y: 1.7742950488647922 },\n { x: 0.0000014760000000000973, y: 1.7653274475326501 },\n { x: 0.0000014770000000000974, y: 1.8301639684150808 },\n { x: 0.0000014780000000000975, y: 1.8068433596873197 },\n { x: 0.0000014790000000000976, y: 1.8238155093492354 },\n { x: 0.0000014800000000000976, y: 1.7951873008280588 },\n { x: 0.0000014810000000000977, y: 1.8049504352580952 },\n { x: 0.0000014820000000000978, y: 1.780118923235781 },\n { x: 0.0000014830000000000979, y: 1.8370895852672278 },\n { x: 0.000001484000000000098, y: 1.8102842649232616 },\n { x: 0.000001485000000000098, y: 1.8142034505414075 },\n { x: 0.000001486000000000098, y: 1.8550458803647334 },\n { x: 0.0000014870000000000982, y: 1.8063987736343825 },\n { x: 0.0000014880000000000982, y: 1.803316412026017 },\n { x: 0.0000014890000000000983, y: 1.8275014476617208 },\n { x: 0.0000014900000000000984, y: 1.8345056995195583 },\n { x: 0.0000014910000000000985, y: 1.8235958930130387 },\n { x: 0.0000014920000000000985, y: 1.8685153496704994 },\n { x: 0.0000014930000000000986, y: 1.8507441695712015 },\n { x: 0.0000014940000000000987, y: 1.8607858897062826 },\n { x: 0.0000014950000000000988, y: 1.812694211987892 },\n { x: 0.0000014960000000000988, y: 1.83434609025351 },\n { x: 0.000001497000000000099, y: 1.8532545374843148 },\n { x: 0.000001498000000000099, y: 1.8643854446855914 },\n { x: 0.000001499000000000099, y: 1.8243497264912738 },\n { x: 0.0000015000000000000991, y: 1.8925134014688394 },\n { x: 0.0000015010000000000992, y: 1.860953548271042 },\n { x: 0.0000015020000000000993, y: 1.8785196325281608 },\n { x: 0.0000015030000000000994, y: 1.861150942623333 },\n { x: 0.0000015040000000000994, y: 1.8797006105166452 },\n { x: 0.0000015050000000000995, y: 1.8376681034290774 },\n { x: 0.0000015060000000000996, y: 1.8644634280071186 },\n { x: 0.0000015070000000000997, y: 1.8862993891068205 },\n { x: 0.0000015080000000000997, y: 1.8334242315716305 },\n { x: 0.0000015090000000000998, y: 1.851266129348199 },\n { x: 0.0000015100000000000999, y: 1.887588938564708 },\n { x: 0.0000015110000000001, y: 1.8662547374747216 },\n { x: 0.0000015120000000001, y: 1.8816369582640442 },\n { x: 0.0000015130000000001001, y: 1.8528951303022463 },\n { x: 0.0000015140000000001002, y: 1.8713252732134174 },\n { x: 0.0000015150000000001003, y: 1.8908649227574983 },\n { x: 0.0000015160000000001003, y: 1.906689942063815 },\n { x: 0.0000015170000000001004, y: 1.8868777950272633 },\n { x: 0.0000015180000000001005, y: 1.862199690584565 },\n { x: 0.0000015190000000001006, y: 1.8789739954545102 },\n { x: 0.0000015200000000001006, y: 1.8689118798688504 },\n { x: 0.0000015210000000001007, y: 1.9119499732277851 },\n { x: 0.0000015220000000001008, y: 1.9152563937616063 },\n { x: 0.0000015230000000001009, y: 1.9220510082439022 },\n { x: 0.000001524000000000101, y: 1.8703992835651486 },\n { x: 0.000001525000000000101, y: 1.8856038884385498 },\n { x: 0.000001526000000000101, y: 1.8984454725585482 },\n { x: 0.0000015270000000001012, y: 1.8844721673166929 },\n { x: 0.0000015280000000001012, y: 1.8925789410893754 },\n { x: 0.0000015290000000001013, y: 1.8922685412659606 },\n { x: 0.0000015300000000001014, y: 1.8836883595875777 },\n { x: 0.0000015310000000001015, y: 1.9047122803007412 },\n { x: 0.0000015320000000001015, y: 1.9296797790253686 },\n { x: 0.0000015330000000001016, y: 1.9261026261678198 },\n { x: 0.0000015340000000001017, y: 1.8868162588437538 },\n { x: 0.0000015350000000001018, y: 1.8959553657375319 },\n { x: 0.0000015360000000001018, y: 1.8674549688769102 },\n { x: 0.000001537000000000102, y: 1.8902671543748741 },\n { x: 0.000001538000000000102, y: 1.8667785130986145 },\n { x: 0.000001539000000000102, y: 1.9129225960754155 },\n { x: 0.0000015400000000001021, y: 1.8977869742151219 },\n { x: 0.0000015410000000001022, y: 1.9131871359736343 },\n { x: 0.0000015420000000001023, y: 1.9047930619613263 },\n { x: 0.0000015430000000001024, y: 1.8947747207071641 },\n { x: 0.0000015440000000001024, y: 1.8964381746455443 },\n { x: 0.0000015450000000001025, y: 1.9079773570878646 },\n { x: 0.0000015460000000001026, y: 1.9384554069184756 },\n { x: 0.0000015470000000001027, y: 1.8728636196128705 },\n { x: 0.0000015480000000001027, y: 1.8812995334068285 },\n { x: 0.0000015490000000001028, y: 1.9418367521610471 },\n { x: 0.000001550000000000103, y: 1.9355705222299138 },\n { x: 0.000001551000000000103, y: 1.90894487787589 },\n { x: 0.000001552000000000103, y: 1.8818579276871013 },\n { x: 0.0000015530000000001031, y: 1.8770799847287651 },\n { x: 0.0000015540000000001032, y: 1.9044930141630907 },\n { x: 0.0000015550000000001033, y: 1.8661651693930084 },\n { x: 0.0000015560000000001033, y: 1.907791817955513 },\n { x: 0.0000015570000000001034, y: 1.8729318308052993 },\n { x: 0.0000015580000000001035, y: 1.8732953225250497 },\n { x: 0.0000015590000000001036, y: 1.8609196273032926 },\n { x: 0.0000015600000000001036, y: 1.916577448889704 },\n { x: 0.0000015610000000001037, y: 1.876224822962021 },\n { x: 0.0000015620000000001038, y: 1.8713390808416641 },\n { x: 0.0000015630000000001039, y: 1.8824630708570054 },\n { x: 0.000001564000000000104, y: 1.8873740345399652 },\n { x: 0.000001565000000000104, y: 1.863647444573023 },\n { x: 0.000001566000000000104, y: 1.875114611514498 },\n { x: 0.0000015670000000001042, y: 1.874582951543223 },\n { x: 0.0000015680000000001042, y: 1.9212647970730914 },\n { x: 0.0000015690000000001043, y: 1.8685298585342047 },\n { x: 0.0000015700000000001044, y: 1.894426012738697 },\n { x: 0.0000015710000000001045, y: 1.9170473633939735 },\n { x: 0.0000015720000000001046, y: 1.8853544704646132 },\n { x: 0.0000015730000000001046, y: 1.889809335241923 },\n { x: 0.0000015740000000001047, y: 1.9165978128993935 },\n { x: 0.0000015750000000001048, y: 1.8913963010581722 },\n { x: 0.0000015760000000001049, y: 1.8736515303059285 },\n { x: 0.000001577000000000105, y: 1.9152477730259942 },\n { x: 0.000001578000000000105, y: 1.8440540277067565 },\n { x: 0.000001579000000000105, y: 1.9122620588824573 },\n { x: 0.0000015800000000001052, y: 1.8658959039505405 },\n { x: 0.0000015810000000001052, y: 1.847270619491048 },\n { x: 0.0000015820000000001053, y: 1.8999229757027456 },\n { x: 0.0000015830000000001054, y: 1.8506686930094023 },\n { x: 0.0000015840000000001055, y: 1.8586880732445 },\n { x: 0.0000015850000000001055, y: 1.874972060371563 },\n { x: 0.0000015860000000001056, y: 1.8704564391777614 },\n { x: 0.0000015870000000001057, y: 1.8698480599377294 },\n { x: 0.0000015880000000001058, y: 1.8482757147947744 },\n { x: 0.0000015890000000001058, y: 1.8424217848865307 },\n { x: 0.000001590000000000106, y: 1.8233781582445685 },\n { x: 0.000001591000000000106, y: 1.8702386320216384 },\n { x: 0.000001592000000000106, y: 1.8859127016120325 },\n { x: 0.0000015930000000001061, y: 1.878276160473116 },\n { x: 0.0000015940000000001062, y: 1.8677504404226315 },\n { x: 0.0000015950000000001063, y: 1.8632021353360044 },\n { x: 0.0000015960000000001064, y: 1.8322785935685886 },\n { x: 0.0000015970000000001064, y: 1.8391758023953622 },\n { x: 0.0000015980000000001065, y: 1.8096176702193707 },\n { x: 0.0000015990000000001066, y: 1.855034617913229 },\n { x: 0.0000016000000000001067, y: 1.8482835294888607 },\n { x: 0.0000016010000000001067, y: 1.835833214087766 },\n { x: 0.0000016020000000001068, y: 1.8052166331553055 },\n { x: 0.0000016030000000001069, y: 1.7902894678501065 },\n { x: 0.000001604000000000107, y: 1.8369923125350067 },\n { x: 0.000001605000000000107, y: 1.7922647488696313 },\n { x: 0.000001606000000000107, y: 1.7934672190883718 },\n { x: 0.0000016070000000001072, y: 1.8048890571115532 },\n { x: 0.0000016080000000001073, y: 1.8092032577848933 },\n { x: 0.0000016090000000001073, y: 1.8399940448264334 },\n { x: 0.0000016100000000001074, y: 1.7628483295584574 },\n { x: 0.0000016110000000001075, y: 1.7700920809298333 },\n { x: 0.0000016120000000001076, y: 1.8082683127805284 },\n { x: 0.0000016130000000001076, y: 1.810419344399425 },\n { x: 0.0000016140000000001077, y: 1.7842842877871867 },\n { x: 0.0000016150000000001078, y: 1.746427787110012 },\n { x: 0.0000016160000000001079, y: 1.7681242568510784 },\n { x: 0.000001617000000000108, y: 1.771804533141493 },\n { x: 0.000001618000000000108, y: 1.7829456494665994 },\n { x: 0.000001619000000000108, y: 1.762423417301352 },\n { x: 0.0000016200000000001082, y: 1.790192252579323 },\n { x: 0.0000016210000000001082, y: 1.7701955101310594 },\n { x: 0.0000016220000000001083, y: 1.7318761053597422 },\n { x: 0.0000016230000000001084, y: 1.728154975427654 },\n { x: 0.0000016240000000001085, y: 1.7522174422126358 },\n { x: 0.0000016250000000001085, y: 1.754419511878992 },\n { x: 0.0000016260000000001086, y: 1.7658995727361002 },\n { x: 0.0000016270000000001087, y: 1.7750836025173136 },\n { x: 0.0000016280000000001088, y: 1.705238850494079 },\n { x: 0.0000016290000000001088, y: 1.7457692846988404 },\n { x: 0.000001630000000000109, y: 1.7408691923139077 },\n { x: 0.000001631000000000109, y: 1.7172516233835076 },\n { x: 0.000001632000000000109, y: 1.723647547761742 },\n { x: 0.0000016330000000001091, y: 1.7142232962221842 },\n { x: 0.0000016340000000001092, y: 1.7319837944583334 },\n { x: 0.0000016350000000001093, y: 1.6789211047699923 },\n { x: 0.0000016360000000001094, y: 1.7209111351896542 },\n { x: 0.0000016370000000001094, y: 1.6955184701179251 },\n { x: 0.0000016380000000001095, y: 1.6661664730067631 },\n { x: 0.0000016390000000001096, y: 1.6778569539380102 },\n { x: 0.0000016400000000001097, y: 1.6820457372163402 },\n { x: 0.0000016410000000001097, y: 1.6751734765509971 },\n { x: 0.0000016420000000001098, y: 1.682032300795322 },\n { x: 0.0000016430000000001099, y: 1.6845563293536863 },\n { x: 0.00000164400000000011, y: 1.661111988270595 },\n { x: 0.00000164500000000011, y: 1.6408567993814596 },\n { x: 0.0000016460000000001101, y: 1.7008158182401056 },\n { x: 0.0000016470000000001102, y: 1.655198412132026 },\n { x: 0.0000016480000000001103, y: 1.6275625281928723 },\n { x: 0.0000016490000000001103, y: 1.6218242860538887 },\n { x: 0.0000016500000000001104, y: 1.6083884732638676 },\n { x: 0.0000016510000000001105, y: 1.6673248127665845 },\n { x: 0.0000016520000000001106, y: 1.6403953293339677 },\n { x: 0.0000016530000000001106, y: 1.6608722206893922 },\n { x: 0.0000016540000000001107, y: 1.646038983934043 },\n { x: 0.0000016550000000001108, y: 1.5938910702902471 },\n { x: 0.0000016560000000001109, y: 1.6510986313855462 },\n { x: 0.000001657000000000111, y: 1.62686701385475 },\n { x: 0.000001658000000000111, y: 1.5998921901900898 },\n { x: 0.000001659000000000111, y: 1.6245876659849168 },\n { x: 0.0000016600000000001112, y: 1.5622047901252105 },\n { x: 0.0000016610000000001112, y: 1.5742038366017066 },\n { x: 0.0000016620000000001113, y: 1.5611199997048664 },\n { x: 0.0000016630000000001114, y: 1.5871588220820974 },\n { x: 0.0000016640000000001115, y: 1.6075196228608475 },\n { x: 0.0000016650000000001115, y: 1.5421904485613767 },\n { x: 0.0000016660000000001116, y: 1.59629100663841 },\n { x: 0.0000016670000000001117, y: 1.5264660518445645 },\n { x: 0.0000016680000000001118, y: 1.5769237392862725 },\n { x: 0.0000016690000000001118, y: 1.5398858098540076 },\n { x: 0.000001670000000000112, y: 1.5534801961145324 },\n { x: 0.000001671000000000112, y: 1.5666416319487044 },\n { x: 0.000001672000000000112, y: 1.55200225135598 },\n { x: 0.0000016730000000001121, y: 1.5235845706990685 },\n { x: 0.0000016740000000001122, y: 1.5395352966628106 },\n { x: 0.0000016750000000001123, y: 1.5084874648810562 },\n { x: 0.0000016760000000001124, y: 1.5337002821845365 },\n { x: 0.0000016770000000001124, y: 1.4772938546664136 },\n { x: 0.0000016780000000001125, y: 1.5076062000475374 },\n { x: 0.0000016790000000001126, y: 1.5024882602525487 },\n { x: 0.0000016800000000001127, y: 1.4965851687817378 },\n { x: 0.0000016810000000001127, y: 1.499257658518879 },\n { x: 0.0000016820000000001128, y: 1.465534360190667 },\n { x: 0.0000016830000000001129, y: 1.4565746226363188 },\n { x: 0.000001684000000000113, y: 1.4664450594174712 },\n { x: 0.000001685000000000113, y: 1.4903293473080246 },\n { x: 0.0000016860000000001131, y: 1.4598304175366217 },\n { x: 0.0000016870000000001132, y: 1.4690706555375441 },\n { x: 0.0000016880000000001133, y: 1.4253871744836082 },\n { x: 0.0000016890000000001133, y: 1.4711967656571237 },\n { x: 0.0000016900000000001134, y: 1.4258275003680279 },\n { x: 0.0000016910000000001135, y: 1.4371963096342175 },\n { x: 0.0000016920000000001136, y: 1.420695852115151 },\n { x: 0.0000016930000000001136, y: 1.4326415536863035 },\n { x: 0.0000016940000000001137, y: 1.402635761140759 },\n { x: 0.0000016950000000001138, y: 1.441298666200187 },\n { x: 0.0000016960000000001139, y: 1.41472873211655 },\n { x: 0.000001697000000000114, y: 1.373704858308324 },\n { x: 0.000001698000000000114, y: 1.4135179993972475 },\n { x: 0.000001699000000000114, y: 1.4107919200075094 },\n { x: 0.0000017000000000001142, y: 1.3726186189339955 },\n { x: 0.0000017010000000001142, y: 1.3360545434613273 },\n { x: 0.0000017020000000001143, y: 1.3527551452603812 },\n { x: 0.0000017030000000001144, y: 1.3935391815162788 },\n { x: 0.0000017040000000001145, y: 1.3786949932401669 },\n { x: 0.0000017050000000001145, y: 1.3816801916099977 },\n { x: 0.0000017060000000001146, y: 1.3009986519663972 },\n { x: 0.0000017070000000001147, y: 1.3187780210377853 },\n { x: 0.0000017080000000001148, y: 1.3412528566768211 },\n { x: 0.0000017090000000001148, y: 1.3390480833544698 },\n { x: 0.000001710000000000115, y: 1.3056216725558858 },\n { x: 0.000001711000000000115, y: 1.2935920935829797 },\n { x: 0.000001712000000000115, y: 1.2644650949751886 },\n { x: 0.0000017130000000001151, y: 1.290977611408184 },\n { x: 0.0000017140000000001152, y: 1.3224101809561863 },\n { x: 0.0000017150000000001153, y: 1.278139503493128 },\n { x: 0.0000017160000000001154, y: 1.2959032997168354 },\n { x: 0.0000017170000000001154, y: 1.2545173717646112 },\n { x: 0.0000017180000000001155, y: 1.2292701261735286 },\n { x: 0.0000017190000000001156, y: 1.2482130911721452 },\n { x: 0.0000017200000000001157, y: 1.278691111474727 },\n { x: 0.0000017210000000001157, y: 1.2792566087515185 },\n { x: 0.0000017220000000001158, y: 1.2498210816403308 },\n { x: 0.000001723000000000116, y: 1.196011818996488 },\n { x: 0.000001724000000000116, y: 1.2594618764616352 },\n { x: 0.000001725000000000116, y: 1.2115833658757438 },\n { x: 0.0000017260000000001161, y: 1.173061215344364 },\n { x: 0.0000017270000000001162, y: 1.1716987683385647 },\n { x: 0.0000017280000000001163, y: 1.1992386167463802 },\n { x: 0.0000017290000000001163, y: 1.1890475561954534 },\n { x: 0.0000017300000000001164, y: 1.2142789474410358 },\n { x: 0.0000017310000000001165, y: 1.1355387233708554 },\n { x: 0.0000017320000000001166, y: 1.1768252613616619 },\n { x: 0.0000017330000000001166, y: 1.150082304001767 },\n { x: 0.0000017340000000001167, y: 1.1497621747608626 },\n { x: 0.0000017350000000001168, y: 1.1364680632348483 },\n { x: 0.0000017360000000001169, y: 1.14291978102332 },\n { x: 0.000001737000000000117, y: 1.1060580977273025 },\n { x: 0.000001738000000000117, y: 1.146401545956996 },\n { x: 0.000001739000000000117, y: 1.1107291983398768 },\n { x: 0.0000017400000000001172, y: 1.0793723241040567 },\n { x: 0.0000017410000000001172, y: 1.0737092073504717 },\n { x: 0.0000017420000000001173, y: 1.059155293785555 },\n { x: 0.0000017430000000001174, y: 1.1212625228086368 },\n { x: 0.0000017440000000001175, y: 1.1122442815110118 },\n { x: 0.0000017450000000001175, y: 1.0463752370298995 },\n { x: 0.0000017460000000001176, y: 1.0885412605846692 },\n { x: 0.0000017470000000001177, y: 1.0751011879270187 },\n { x: 0.0000017480000000001178, y: 1.0234236732909958 },\n { x: 0.0000017490000000001178, y: 1.0511152033041122 },\n { x: 0.000001750000000000118, y: 1.0064275902604922 },\n { x: 0.000001751000000000118, y: 1.0482282985548423 },\n { x: 0.000001752000000000118, y: 1.037717181632446 },\n { x: 0.0000017530000000001181, y: 1.0057200430319189 },\n { x: 0.0000017540000000001182, y: 1.0003929114070311 },\n { x: 0.0000017550000000001183, y: 1.0060526203316948 },\n { x: 0.0000017560000000001184, y: 0.9666791231232204 },\n { x: 0.0000017570000000001184, y: 1.011481038250688 },\n { x: 0.0000017580000000001185, y: 0.9724848378508939 },\n { x: 0.0000017590000000001186, y: 0.9785496578901185 },\n { x: 0.0000017600000000001187, y: 0.9669045211641233 },\n { x: 0.0000017610000000001187, y: 0.9927616916827425 },\n { x: 0.0000017620000000001188, y: 0.931482675695195 },\n { x: 0.000001763000000000119, y: 0.979030634139376 },\n { x: 0.000001764000000000119, y: 0.9155880976629741 },\n { x: 0.000001765000000000119, y: 0.9323797357960899 },\n { x: 0.0000017660000000001191, y: 0.9554169758189069 },\n { x: 0.0000017670000000001192, y: 0.9259991684993201 },\n { x: 0.0000017680000000001193, y: 0.8710583040159814 },\n { x: 0.0000017690000000001194, y: 0.928805033109958 },\n { x: 0.0000017700000000001194, y: 0.8822771019050856 },\n { x: 0.0000017710000000001195, y: 0.8467219574160861 },\n { x: 0.0000017720000000001196, y: 0.839532495711053 },\n { x: 0.0000017730000000001197, y: 0.8430894295902366 },\n { x: 0.0000017740000000001197, y: 0.8617802958582693 },\n { x: 0.0000017750000000001198, y: 0.8890574520010209 },\n { x: 0.0000017760000000001199, y: 0.8252023196861221 },\n { x: 0.00000177700000000012, y: 0.846191166821027 },\n { x: 0.00000177800000000012, y: 0.841275853282362 },\n { x: 0.00000177900000000012, y: 0.8120198287469949 },\n { x: 0.0000017800000000001202, y: 0.845777043375414 },\n { x: 0.0000017810000000001203, y: 0.7877953547058272 },\n { x: 0.0000017820000000001203, y: 0.7721366231936568 },\n { x: 0.0000017830000000001204, y: 0.7601043619508671 },\n { x: 0.0000017840000000001205, y: 0.7687626708524489 },\n { x: 0.0000017850000000001206, y: 0.7786574016780818 },\n { x: 0.0000017860000000001206, y: 0.7963354064030586 },\n { x: 0.0000017870000000001207, y: 0.7847265245887479 },\n { x: 0.0000017880000000001208, y: 0.7205280862844804 },\n { x: 0.0000017890000000001209, y: 0.7688533021835856 },\n { x: 0.000001790000000000121, y: 0.7389379897811448 },\n { x: 0.000001791000000000121, y: 0.7050691865007874 },\n { x: 0.000001792000000000121, y: 0.7534969048243474 },\n { x: 0.0000017930000000001212, y: 0.7021183789272125 },\n { x: 0.0000017940000000001212, y: 0.6740477136297011 },\n { x: 0.0000017950000000001213, y: 0.6994710880776371 },\n { x: 0.0000017960000000001214, y: 0.706575908824655 },\n { x: 0.0000017970000000001215, y: 0.7062683225914809 },\n { x: 0.0000017980000000001215, y: 0.6774476770459507 },\n { x: 0.0000017990000000001216, y: 0.6460618263174157 },\n { x: 0.0000018000000000001217, y: 0.629092275171784 },\n { x: 0.0000018010000000001218, y: 0.6793268556847807 },\n { x: 0.0000018020000000001218, y: 0.6719283287295943 },\n { x: 0.000001803000000000122, y: 0.6444965771338297 },\n { x: 0.000001804000000000122, y: 0.630050139732022 },\n { x: 0.000001805000000000122, y: 0.639818804647739 },\n { x: 0.0000018060000000001221, y: 0.5988363361951942 },\n { x: 0.0000018070000000001222, y: 0.6357218144748128 },\n { x: 0.0000018080000000001223, y: 0.596596571869268 },\n { x: 0.0000018090000000001224, y: 0.5539127645942263 },\n { x: 0.0000018100000000001224, y: 0.5969328899378453 },\n { x: 0.0000018110000000001225, y: 0.6070207878621521 },\n { x: 0.0000018120000000001226, y: 0.5578158944719761 },\n { x: 0.0000018130000000001227, y: 0.5383347922654027 },\n { x: 0.0000018140000000001227, y: 0.5384678172646908 },\n { x: 0.0000018150000000001228, y: 0.5203470199057184 },\n { x: 0.0000018160000000001229, y: 0.5143523944008801 },\n { x: 0.000001817000000000123, y: 0.5497136380511192 },\n { x: 0.000001818000000000123, y: 0.5207715252244023 },\n { x: 0.0000018190000000001231, y: 0.533778780400845 },\n { x: 0.0000018200000000001232, y: 0.4721907228628809 },\n { x: 0.0000018210000000001233, y: 0.5083521149433681 },\n { x: 0.0000018220000000001233, y: 0.4670134659107506 },\n { x: 0.0000018230000000001234, y: 0.4667912556292909 },\n { x: 0.0000018240000000001235, y: 0.5119507212408104 },\n { x: 0.0000018250000000001236, y: 0.48461479425898735 },\n { x: 0.0000018260000000001236, y: 0.48850297873101833 },\n { x: 0.0000018270000000001237, y: 0.46630847180215085 },\n { x: 0.0000018280000000001238, y: 0.4742941857950925 },\n { x: 0.0000018290000000001239, y: 0.41759232425854625 },\n { x: 0.000001830000000000124, y: 0.45469903467898154 },\n { x: 0.000001831000000000124, y: 0.381706326626884 },\n { x: 0.000001832000000000124, y: 0.4101451045780741 },\n { x: 0.0000018330000000001242, y: 0.41192851786047635 },\n { x: 0.0000018340000000001242, y: 0.3794438058066927 },\n { x: 0.0000018350000000001243, y: 0.4223695241692824 },\n { x: 0.0000018360000000001244, y: 0.388420389959051 },\n { x: 0.0000018370000000001245, y: 0.3729004606803574 },\n { x: 0.0000018380000000001245, y: 0.32709835757397876 },\n { x: 0.0000018390000000001246, y: 0.36317929926128756 },\n { x: 0.0000018400000000001247, y: 0.3500921063811527 },\n { x: 0.0000018410000000001248, y: 0.3134417717562017 },\n { x: 0.0000018420000000001248, y: 0.34047534978995514 },\n { x: 0.000001843000000000125, y: 0.35212934913446436 },\n { x: 0.000001844000000000125, y: 0.32808289003474056 },\n { x: 0.000001845000000000125, y: 0.30247128106412186 },\n { x: 0.0000018460000000001251, y: 0.31952707294678734 },\n { x: 0.0000018470000000001252, y: 0.2958033508946068 },\n { x: 0.0000018480000000001253, y: 0.27055301451369307 },\n { x: 0.0000018490000000001254, y: 0.2878705361828219 },\n { x: 0.0000018500000000001254, y: 0.30193324682836054 },\n { x: 0.0000018510000000001255, y: 0.2669150813875294 },\n { x: 0.0000018520000000001256, y: 0.253075388812941 },\n { x: 0.0000018530000000001257, y: 0.2317633661579683 },\n { x: 0.0000018540000000001257, y: 0.2126325869905244 },\n { x: 0.0000018550000000001258, y: 0.23592295789419557 },\n { x: 0.0000018560000000001259, y: 0.20043996321052243 },\n { x: 0.000001857000000000126, y: 0.2427672005856332 },\n { x: 0.000001858000000000126, y: 0.1932373001356702 },\n { x: 0.0000018590000000001261, y: 0.2103132746601908 },\n { x: 0.0000018600000000001262, y: 0.22499910870478354 },\n { x: 0.0000018610000000001263, y: 0.1781844591542755 },\n { x: 0.0000018620000000001263, y: 0.16638747989499747 },\n { x: 0.0000018630000000001264, y: 0.133789010706234 },\n { x: 0.0000018640000000001265, y: 0.1375886595425538 },\n { x: 0.0000018650000000001266, y: 0.16769615462187587 },\n { x: 0.0000018660000000001266, y: 0.17503074430186494 },\n { x: 0.0000018670000000001267, y: 0.1667015077365376 },\n { x: 0.0000018680000000001268, y: 0.1586269597245909 },\n { x: 0.0000018690000000001269, y: 0.09258644945132447 },\n { x: 0.000001870000000000127, y: 0.09418687166919149 },\n { x: 0.000001871000000000127, y: 0.08957902890101409 },\n { x: 0.000001872000000000127, y: 0.06773552419923072 },\n { x: 0.0000018730000000001272, y: 0.06317479021103092 },\n { x: 0.0000018740000000001272, y: 0.08621135433255578 },\n { x: 0.0000018750000000001273, y: 0.05613288564580528 },\n { x: 0.0000018760000000001274, y: 0.09232407769802704 },\n { x: 0.0000018770000000001275, y: 0.07160918405927019 },\n { x: 0.0000018780000000001275, y: 0.05760749187396033 },\n { x: 0.0000018790000000001276, y: 0.04901624811734664 },\n { x: 0.0000018800000000001277, y: 0.04742764542586185 },\n { x: 0.0000018810000000001278, y: 0.04590013587805898 },\n { x: 0.0000018820000000001278, y: 0.02858992163133199 },\n { x: 0.000001883000000000128, y: 0.005423800492616123 },\n { x: 0.000001884000000000128, y: 0.02429193335637827 },\n { x: 0.000001885000000000128, y: 0.013783369487446169 },\n { x: 0.0000018860000000001281, y: -0.011016606032124964 },\n { x: 0.0000018870000000001282, y: 0.022756802400864536 },\n { x: 0.0000018880000000001283, y: -0.04641405252828169 },\n { x: 0.0000018890000000001284, y: -0.028083359283275048 },\n { x: 0.0000018900000000001284, y: -0.030084429642825695 },\n { x: 0.0000018910000000001285, y: -0.061119889770175566 },\n { x: 0.0000018920000000001286, y: -0.09014411960715357 },\n { x: 0.0000018930000000001287, y: -0.0828155241966775 },\n { x: 0.0000018940000000001287, y: -0.044630610385212245 },\n { x: 0.0000018950000000001288, y: -0.06624098809924073 },\n { x: 0.0000018960000000001289, y: -0.09324443236856593 },\n { x: 0.000001897000000000129, y: -0.09949133613352308 },\n { x: 0.000001898000000000129, y: -0.059564000091321866 },\n { x: 0.0000018990000000001291, y: -0.09114867242379796 },\n { x: 0.0000019000000000001292, y: -0.12978941188171944 },\n { x: 0.0000019010000000001293, y: -0.11641813826958265 },\n { x: 0.0000019020000000001293, y: -0.10410161092157948 },\n { x: 0.0000019030000000001294, y: -0.11103011075741599 },\n { x: 0.0000019040000000001295, y: -0.14553718791264772 },\n { x: 0.0000019050000000001296, y: -0.147572981864493 },\n { x: 0.0000019060000000001296, y: -0.13031804905691777 },\n { x: 0.0000019070000000001297, y: -0.1851688750533873 },\n { x: 0.00000190800000000013, y: -0.15143955673946294 },\n { x: 0.00000190900000000013, y: -0.17001815677985424 },\n { x: 0.00000191000000000013, y: -0.16251946193823488 },\n { x: 0.00000191100000000013, y: -0.21493036135421975 },\n { x: 0.00000191200000000013, y: -0.20434216017903817 },\n { x: 0.00000191300000000013, y: -0.17924714052967403 },\n { x: 0.0000019140000000001302, y: -0.20558806632096843 },\n { x: 0.0000019150000000001303, y: -0.18568128678497212 },\n { x: 0.0000019160000000001304, y: -0.210093567946274 },\n { x: 0.0000019170000000001305, y: -0.26819311660233314 },\n { x: 0.0000019180000000001305, y: -0.23817857411332283 },\n { x: 0.0000019190000000001306, y: -0.24398843415801152 },\n { x: 0.0000019200000000001307, y: -0.24196508315340046 },\n { x: 0.0000019210000000001308, y: -0.274304931724491 },\n { x: 0.000001922000000000131, y: -0.2609417500211901 },\n { x: 0.000001923000000000131, y: -0.27849527707493915 },\n { x: 0.000001924000000000131, y: -0.2739161338370364 },\n { x: 0.000001925000000000131, y: -0.2699482865215363 },\n { x: 0.000001926000000000131, y: -0.27780855318155223 },\n { x: 0.0000019270000000001312, y: -0.3247390573972742 },\n { x: 0.0000019280000000001313, y: -0.3164763487566581 },\n { x: 0.0000019290000000001314, y: -0.30528204879652177 },\n { x: 0.0000019300000000001314, y: -0.3281063496408248 },\n { x: 0.0000019310000000001315, y: -0.32919674676747884 },\n { x: 0.0000019320000000001316, y: -0.35498455756718605 },\n { x: 0.0000019330000000001317, y: -0.33544629591367064 },\n { x: 0.0000019340000000001317, y: -0.33608049075372937 },\n { x: 0.000001935000000000132, y: -0.34603605944204063 },\n { x: 0.000001936000000000132, y: -0.3850958417224972 },\n { x: 0.000001937000000000132, y: -0.34268614381362766 },\n { x: 0.000001938000000000132, y: -0.3916615069361548 },\n { x: 0.000001939000000000132, y: -0.3862984562585444 },\n { x: 0.000001940000000000132, y: -0.4216026394243932 },\n { x: 0.0000019410000000001323, y: -0.36928248393042035 },\n { x: 0.0000019420000000001323, y: -0.40189306404810465 },\n { x: 0.0000019430000000001324, y: -0.3934414314400235 },\n { x: 0.0000019440000000001325, y: -0.42776543227184693 },\n { x: 0.0000019450000000001326, y: -0.43440293632840626 },\n { x: 0.0000019460000000001326, y: -0.4191035501301289 },\n { x: 0.0000019470000000001327, y: -0.4433629905620163 },\n { x: 0.000001948000000000133, y: -0.46121805103042807 },\n { x: 0.000001949000000000133, y: -0.4716610659187238 },\n { x: 0.000001950000000000133, y: -0.47579920044406976 },\n { x: 0.000001951000000000133, y: -0.4313459850787053 },\n { x: 0.000001952000000000133, y: -0.5123738994824097 },\n { x: 0.000001953000000000133, y: -0.46680404977110207 },\n { x: 0.0000019540000000001332, y: -0.504416615264248 },\n { x: 0.0000019550000000001333, y: -0.4813511752515375 },\n { x: 0.0000019560000000001334, y: -0.5076667339324117 },\n { x: 0.0000019570000000001335, y: -0.5398511554097921 },\n { x: 0.0000019580000000001335, y: -0.5036475488676722 },\n { x: 0.0000019590000000001336, y: -0.4857626770104701 },\n { x: 0.0000019600000000001337, y: -0.5307612027479378 },\n { x: 0.0000019610000000001338, y: -0.5338352765635476 },\n { x: 0.000001962000000000134, y: -0.5394790091511877 },\n { x: 0.000001963000000000134, y: -0.5364157268208168 },\n { x: 0.000001964000000000134, y: -0.5261546973742287 },\n { x: 0.000001965000000000134, y: -0.5927599445580012 },\n { x: 0.000001966000000000134, y: -0.5421861366976465 },\n { x: 0.0000019670000000001342, y: -0.5921944772681971 },\n { x: 0.0000019680000000001343, y: -0.597790465523866 },\n { x: 0.0000019690000000001344, y: -0.6144523577482467 },\n { x: 0.0000019700000000001345, y: -0.5912264084655625 },\n { x: 0.0000019710000000001345, y: -0.5729827150843166 },\n { x: 0.0000019720000000001346, y: -0.57784533258804 },\n { x: 0.0000019730000000001347, y: -0.585805610239716 },\n { x: 0.0000019740000000001348, y: -0.6184214520880771 },\n { x: 0.000001975000000000135, y: -0.649203399181819 },\n { x: 0.000001976000000000135, y: -0.6202538804430577 },\n { x: 0.000001977000000000135, y: -0.6022826557909744 },\n { x: 0.000001978000000000135, y: -0.6329986164446779 },\n { x: 0.000001979000000000135, y: -0.618920588388072 },\n { x: 0.000001980000000000135, y: -0.6451001098528613 },\n { x: 0.0000019810000000001353, y: -0.6202764877817638 },\n { x: 0.0000019820000000001354, y: -0.6244265892190791 },\n { x: 0.0000019830000000001354, y: -0.6936699168444022 },\n { x: 0.0000019840000000001355, y: -0.6684643142520372 },\n { x: 0.0000019850000000001356, y: -0.6856379449776525 },\n { x: 0.0000019860000000001357, y: -0.7052326912020868 },\n { x: 0.0000019870000000001357, y: -0.6872775923771802 },\n { x: 0.000001988000000000136, y: -0.670452883412318 },\n { x: 0.000001989000000000136, y: -0.6734325196466604 },\n { x: 0.000001990000000000136, y: -0.7082276953759489 },\n { x: 0.000001991000000000136, y: -0.7382290226574425 },\n { x: 0.000001992000000000136, y: -0.6839080850872912 },\n { x: 0.000001993000000000136, y: -0.743900784847232 },\n { x: 0.0000019940000000001363, y: -0.7646719011435118 },\n { x: 0.0000019950000000001363, y: -0.717200885013258 },\n { x: 0.0000019960000000001364, y: -0.7250010129113865 },\n { x: 0.0000019970000000001365, y: -0.7523366825136548 },\n { x: 0.0000019980000000001366, y: -0.765657961253851 },\n { x: 0.0000019990000000001366, y: -0.7884255819669997 },\n { x: 0.0000020000000000001367, y: -0.7645731154095298 },\n { x: 0.0000020010000000001368, y: -0.7665298098181962 },\n { x: 0.000002002000000000137, y: -0.7949515270491656 },\n { x: 0.000002003000000000137, y: -0.7892599122083302 },\n { x: 0.000002004000000000137, y: -0.8043419108854832 },\n { x: 0.000002005000000000137, y: -0.7756148401523104 },\n { x: 0.000002006000000000137, y: -0.769416506714911 },\n { x: 0.0000020070000000001372, y: -0.7876894578703126 },\n { x: 0.0000020080000000001373, y: -0.7957297295185116 },\n { x: 0.0000020090000000001374, y: -0.7811228497061362 },\n { x: 0.0000020100000000001375, y: -0.7864072428903285 },\n { x: 0.0000020110000000001375, y: -0.8418432500737286 },\n { x: 0.0000020120000000001376, y: -0.7879182413594504 },\n { x: 0.0000020130000000001377, y: -0.7954325274132081 },\n { x: 0.0000020140000000001378, y: -0.8231165363390369 },\n { x: 0.000002015000000000138, y: -0.8674962827800862 },\n { x: 0.000002016000000000138, y: -0.8183887259231337 },\n { x: 0.000002017000000000138, y: -0.8137624436228066 },\n { x: 0.000002018000000000138, y: -0.8684586228855796 },\n { x: 0.000002019000000000138, y: -0.890947095541127 },\n { x: 0.000002020000000000138, y: -0.8913091068871473 },\n { x: 0.0000020210000000001383, y: -0.8781718339976893 },\n { x: 0.0000020220000000001384, y: -0.9046866955588501 },\n { x: 0.0000020230000000001384, y: -0.8423356805855133 },\n { x: 0.0000020240000000001385, y: -0.8466076164859948 },\n { x: 0.0000020250000000001386, y: -0.8841358206078905 },\n { x: 0.0000020260000000001387, y: -0.9172006316104219 },\n { x: 0.0000020270000000001387, y: -0.9109546931390988 },\n { x: 0.000002028000000000139, y: -0.9174968579103381 },\n { x: 0.000002029000000000139, y: -0.8716075551075205 },\n { x: 0.000002030000000000139, y: -0.8699296349311166 },\n { x: 0.000002031000000000139, y: -0.90296407722351 },\n { x: 0.000002032000000000139, y: -0.9277027898533693 },\n { x: 0.000002033000000000139, y: -0.9048135944177843 },\n { x: 0.0000020340000000001393, y: -0.9028026955581575 },\n { x: 0.0000020350000000001393, y: -0.9126183563923367 },\n { x: 0.0000020360000000001394, y: -0.9542143003347459 },\n { x: 0.0000020370000000001395, y: -0.9057740346986957 },\n { x: 0.0000020380000000001396, y: -0.9629078209445586 },\n { x: 0.0000020390000000001396, y: -0.9094026438664571 },\n { x: 0.0000020400000000001397, y: -0.9558778764001176 },\n { x: 0.0000020410000000001398, y: -0.9769666190893403 },\n { x: 0.00000204200000000014, y: -0.9359181174544778 },\n { x: 0.00000204300000000014, y: -0.981088809662785 },\n { x: 0.00000204400000000014, y: -0.9789537143919016 },\n { x: 0.00000204500000000014, y: -0.9333047536362957 },\n { x: 0.00000204600000000014, y: -0.9889485705412342 },\n { x: 0.0000020470000000001402, y: -0.977747464526857 },\n { x: 0.0000020480000000001403, y: -1.015597318795567 },\n { x: 0.0000020490000000001404, y: -0.9818532699972032 },\n { x: 0.0000020500000000001405, y: -1.0268027174143752 },\n { x: 0.0000020510000000001405, y: -0.9608747574634242 },\n { x: 0.0000020520000000001406, y: -1.0215854364802281 },\n { x: 0.0000020530000000001407, y: -0.9762352838521732 },\n { x: 0.0000020540000000001408, y: -1.0287664209675345 },\n { x: 0.000002055000000000141, y: -1.0448408144307286 },\n { x: 0.000002056000000000141, y: -1.043894847886768 },\n { x: 0.000002057000000000141, y: -1.036080075498768 },\n { x: 0.000002058000000000141, y: -1.0368753307921756 },\n { x: 0.000002059000000000141, y: -1.0264875487132825 },\n { x: 0.0000020600000000001412, y: -1.024030475113556 },\n { x: 0.0000020610000000001413, y: -1.045614729630012 },\n { x: 0.0000020620000000001414, y: -1.0209801206054478 },\n { x: 0.0000020630000000001414, y: -1.0337165417908984 },\n { x: 0.0000020640000000001415, y: -1.0080211197530593 },\n { x: 0.0000020650000000001416, y: -1.0173128292499731 },\n { x: 0.0000020660000000001417, y: -1.0740949372255375 },\n { x: 0.0000020670000000001417, y: -1.056149430721851 },\n { x: 0.000002068000000000142, y: -1.0666807984844948 },\n { x: 0.000002069000000000142, y: -1.053184947626393 },\n { x: 0.000002070000000000142, y: -1.089708422368973 },\n { x: 0.000002071000000000142, y: -1.0421730521176458 },\n { x: 0.000002072000000000142, y: -1.0645104089707633 },\n { x: 0.000002073000000000142, y: -1.1075151833002732 },\n { x: 0.0000020740000000001423, y: -1.0732942253716746 },\n { x: 0.0000020750000000001423, y: -1.0519799092753723 },\n { x: 0.0000020760000000001424, y: -1.0830883027181253 },\n { x: 0.0000020770000000001425, y: -1.0744323382748378 },\n { x: 0.0000020780000000001426, y: -1.0824061164678547 },\n { x: 0.0000020790000000001426, y: -1.1072313129783127 },\n { x: 0.0000020800000000001427, y: -1.0582448264160995 },\n { x: 0.000002081000000000143, y: -1.1289713795240328 },\n { x: 0.000002082000000000143, y: -1.0914047127398843 },\n { x: 0.000002083000000000143, y: -1.1148746567994705 },\n { x: 0.000002084000000000143, y: -1.0865528507310622 },\n { x: 0.000002085000000000143, y: -1.0724142677880109 },\n { x: 0.000002086000000000143, y: -1.1024906842074884 },\n { x: 0.0000020870000000001432, y: -1.0946637312140621 },\n { x: 0.0000020880000000001433, y: -1.1541119175527692 },\n { x: 0.0000020890000000001434, y: -1.133310661686653 },\n { x: 0.0000020900000000001435, y: -1.0983116049556387 },\n { x: 0.0000020910000000001435, y: -1.093330643016027 },\n { x: 0.0000020920000000001436, y: -1.0917736095879387 },\n { x: 0.0000020930000000001437, y: -1.1650635498914457 },\n { x: 0.0000020940000000001438, y: -1.1095407157578265 },\n { x: 0.000002095000000000144, y: -1.1656614968255092 },\n { x: 0.000002096000000000144, y: -1.1060352224021655 },\n { x: 0.000002097000000000144, y: -1.1325034867339496 },\n { x: 0.000002098000000000144, y: -1.1715055937258096 },\n { x: 0.000002099000000000144, y: -1.1344422713785771 },\n { x: 0.0000021000000000001442, y: -1.119351852076914 },\n { x: 0.0000021010000000001443, y: -1.1329027979150834 },\n { x: 0.0000021020000000001444, y: -1.1751661962178672 },\n { x: 0.0000021030000000001444, y: -1.1392390449567167 },\n { x: 0.0000021040000000001445, y: -1.14642678312887 },\n { x: 0.0000021050000000001446, y: -1.1368408341842335 },\n { x: 0.0000021060000000001447, y: -1.1307917035716262 },\n { x: 0.0000021070000000001447, y: -1.1515139044097298 },\n { x: 0.000002108000000000145, y: -1.1918767649650936 },\n { x: 0.000002109000000000145, y: -1.1499017603176236 },\n { x: 0.000002110000000000145, y: -1.1657717130624003 },\n { x: 0.000002111000000000145, y: -1.1901063025797451 },\n { x: 0.000002112000000000145, y: -1.1875406627098366 },\n { x: 0.000002113000000000145, y: -1.1462588127149231 },\n { x: 0.0000021140000000001453, y: -1.1922419553615307 },\n { x: 0.0000021150000000001453, y: -1.1682219316553129 },\n { x: 0.0000021160000000001454, y: -1.1830653479107394 },\n { x: 0.0000021170000000001455, y: -1.1753518681492223 },\n { x: 0.0000021180000000001456, y: -1.2085768654552629 },\n { x: 0.0000021190000000001456, y: -1.221780302107408 },\n { x: 0.0000021200000000001457, y: -1.1790986628657338 },\n { x: 0.000002121000000000146, y: -1.1752299314504844 },\n { x: 0.000002122000000000146, y: -1.2262975081705525 },\n { x: 0.000002123000000000146, y: -1.1547690707308786 },\n { x: 0.000002124000000000146, y: -1.155590748589819 },\n { x: 0.000002125000000000146, y: -1.2215201107619296 },\n { x: 0.000002126000000000146, y: -1.192214232298731 },\n { x: 0.0000021270000000001462, y: -1.1976036926673637 },\n { x: 0.0000021280000000001463, y: -1.2106667121191867 },\n { x: 0.0000021290000000001464, y: -1.1810961522838284 },\n { x: 0.0000021300000000001465, y: -1.2294173006177818 },\n { x: 0.0000021310000000001465, y: -1.1891311008444585 },\n { x: 0.0000021320000000001466, y: -1.2103787790498537 },\n { x: 0.0000021330000000001467, y: -1.1738459803287855 },\n { x: 0.0000021340000000001468, y: -1.1862068278047035 },\n { x: 0.000002135000000000147, y: -1.207573731508814 },\n { x: 0.000002136000000000147, y: -1.2149035948322942 },\n { x: 0.000002137000000000147, y: -1.2460034483121056 },\n { x: 0.000002138000000000147, y: -1.218073011122839 },\n { x: 0.000002139000000000147, y: -1.193477306405147 },\n { x: 0.0000021400000000001472, y: -1.2206873460940273 },\n { x: 0.0000021410000000001473, y: -1.1965849016122774 },\n { x: 0.0000021420000000001474, y: -1.1969376647950813 },\n { x: 0.0000021430000000001474, y: -1.2092138988385954 },\n { x: 0.0000021440000000001475, y: -1.2470580334403962 },\n { x: 0.0000021450000000001476, y: -1.1932307726756652 },\n { x: 0.0000021460000000001477, y: -1.2503499891913694 },\n { x: 0.0000021470000000001477, y: -1.2320580477943053 },\n { x: 0.000002148000000000148, y: -1.1976027721262665 },\n { x: 0.000002149000000000148, y: -1.2301644295325902 },\n { x: 0.000002150000000000148, y: -1.221425317048347 },\n { x: 0.000002151000000000148, y: -1.205922758276388 },\n { x: 0.000002152000000000148, y: -1.1945979059554424 },\n { x: 0.000002153000000000148, y: -1.240158317622497 },\n { x: 0.0000021540000000001483, y: -1.2116420584268912 },\n { x: 0.0000021550000000001484, y: -1.2258934364843523 },\n { x: 0.0000021560000000001484, y: -1.1967845702948345 },\n { x: 0.0000021570000000001485, y: -1.24120043270647 },\n { x: 0.0000021580000000001486, y: -1.2249432129628346 },\n { x: 0.0000021590000000001487, y: -1.2515922712458944 },\n { x: 0.0000021600000000001487, y: -1.2211069243383434 },\n { x: 0.000002161000000000149, y: -1.261260376327873 },\n { x: 0.000002162000000000149, y: -1.2597208700714275 },\n { x: 0.000002163000000000149, y: -1.262721729173913 },\n { x: 0.000002164000000000149, y: -1.1900986319284 },\n { x: 0.000002165000000000149, y: -1.2013695859844655 },\n { x: 0.000002166000000000149, y: -1.2062483818664547 },\n { x: 0.0000021670000000001493, y: -1.264180942861569 },\n { x: 0.0000021680000000001493, y: -1.2063910148407289 },\n { x: 0.0000021690000000001494, y: -1.195093747960024 },\n { x: 0.0000021700000000001495, y: -1.2540727735025274 },\n { x: 0.0000021710000000001496, y: -1.2390252263508523 },\n { x: 0.0000021720000000001496, y: -1.2087925330547704 },\n { x: 0.0000021730000000001497, y: -1.252038739103907 },\n { x: 0.0000021740000000001498, y: -1.2533975676472286 },\n { x: 0.00000217500000000015, y: -1.1902217976584448 },\n { x: 0.00000217600000000015, y: -1.2200175389814245 },\n { x: 0.00000217700000000015, y: -1.2392712135731416 },\n { x: 0.00000217800000000015, y: -1.2280501975960687 },\n { x: 0.00000217900000000015, y: -1.2475047742887264 },\n { x: 0.0000021800000000001502, y: -1.2510222695503483 },\n { x: 0.0000021810000000001503, y: -1.1876862560983892 },\n { x: 0.0000021820000000001504, y: -1.2584145645790799 },\n { x: 0.0000021830000000001505, y: -1.2220408123327722 },\n { x: 0.0000021840000000001505, y: -1.2292066542012205 },\n { x: 0.0000021850000000001506, y: -1.253557191935308 },\n { x: 0.0000021860000000001507, y: -1.1926371990935603 },\n { x: 0.0000021870000000001508, y: -1.1886819820084908 },\n { x: 0.000002188000000000151, y: -1.2521227410726932 },\n { x: 0.000002189000000000151, y: -1.1982815456594678 },\n { x: 0.000002190000000000151, y: -1.2304199849701873 },\n { x: 0.000002191000000000151, y: -1.196274980750317 },\n { x: 0.000002192000000000151, y: -1.2007756687056381 },\n { x: 0.000002193000000000151, y: -1.2155285705874976 },\n { x: 0.0000021940000000001513, y: -1.1931937974164522 },\n { x: 0.0000021950000000001514, y: -1.2121202800913422 },\n { x: 0.0000021960000000001514, y: -1.2552513308758757 },\n { x: 0.0000021970000000001515, y: -1.2488143341984481 },\n { x: 0.0000021980000000001516, y: -1.2169093023486524 },\n { x: 0.0000021990000000001517, y: -1.2340277290062873 },\n { x: 0.0000022000000000001517, y: -1.184350360653403 },\n { x: 0.000002201000000000152, y: -1.2304628952663486 },\n { x: 0.000002202000000000152, y: -1.199277070586878 },\n { x: 0.000002203000000000152, y: -1.1809330571142898 },\n { x: 0.000002204000000000152, y: -1.2214166233868717 },\n { x: 0.000002205000000000152, y: -1.180345964878448 },\n { x: 0.000002206000000000152, y: -1.239229219607888 },\n { x: 0.0000022070000000001523, y: -1.1941495961805357 },\n { x: 0.0000022080000000001523, y: -1.1798969823347527 },\n { x: 0.0000022090000000001524, y: -1.220777451785606 },\n { x: 0.0000022100000000001525, y: -1.1900870364011982 },\n { x: 0.0000022110000000001526, y: -1.185167628226522 },\n { x: 0.0000022120000000001526, y: -1.20537771589163 },\n { x: 0.0000022130000000001527, y: -1.2620121359397163 },\n { x: 0.0000022140000000001528, y: -1.2370870492852872 },\n { x: 0.000002215000000000153, y: -1.217257498349013 },\n { x: 0.000002216000000000153, y: -1.2147858898738997 },\n { x: 0.000002217000000000153, y: -1.1995495046945983 },\n { x: 0.000002218000000000153, y: -1.2311418132335596 },\n { x: 0.000002219000000000153, y: -1.1661146054435807 },\n { x: 0.0000022200000000001532, y: -1.189445358182485 },\n { x: 0.0000022210000000001533, y: -1.193723532124603 },\n { x: 0.0000022220000000001534, y: -1.2205997269585525 },\n { x: 0.0000022230000000001535, y: -1.1759438785574856 },\n { x: 0.0000022240000000001535, y: -1.1924294438045688 },\n { x: 0.0000022250000000001536, y: -1.1752307624750762 },\n { x: 0.0000022260000000001537, y: -1.2104636319322517 },\n { x: 0.0000022270000000001538, y: -1.155074548308587 },\n { x: 0.000002228000000000154, y: -1.1837161430559953 },\n { x: 0.000002229000000000154, y: -1.1923890731880866 },\n { x: 0.000002230000000000154, y: -1.1937185608674448 },\n { x: 0.000002231000000000154, y: -1.1868646120198374 },\n { x: 0.000002232000000000154, y: -1.1981177036411008 },\n { x: 0.000002233000000000154, y: -1.1372045199941465 },\n { x: 0.0000022340000000001543, y: -1.1500947858201753 },\n { x: 0.0000022350000000001544, y: -1.1612356802393617 },\n { x: 0.0000022360000000001544, y: -1.1732062417515428 },\n { x: 0.0000022370000000001545, y: -1.1992861521854046 },\n { x: 0.0000022380000000001546, y: -1.1945112082604952 },\n { x: 0.0000022390000000001547, y: -1.1760882121467615 },\n { x: 0.0000022400000000001547, y: -1.1601113252276647 },\n { x: 0.000002241000000000155, y: -1.1439224901223617 },\n { x: 0.000002242000000000155, y: -1.1547704321519372 },\n { x: 0.000002243000000000155, y: -1.170673766752924 },\n { x: 0.000002244000000000155, y: -1.126093179273305 },\n { x: 0.000002245000000000155, y: -1.165227583954706 },\n { x: 0.000002246000000000155, y: -1.1493644873470203 },\n { x: 0.0000022470000000001553, y: -1.1567661294009133 },\n { x: 0.0000022480000000001553, y: -1.107782891688032 },\n { x: 0.0000022490000000001554, y: -1.15201631887018 },\n { x: 0.0000022500000000001555, y: -1.1009009057101333 },\n { x: 0.0000022510000000001556, y: -1.1149168603313098 },\n { x: 0.0000022520000000001556, y: -1.1672744113046378 },\n { x: 0.0000022530000000001557, y: -1.1591160088368864 },\n { x: 0.0000022540000000001558, y: -1.1265483337539257 },\n { x: 0.000002255000000000156, y: -1.1292095536428317 },\n { x: 0.000002256000000000156, y: -1.1588148083431178 },\n { x: 0.000002257000000000156, y: -1.150888903458958 },\n { x: 0.000002258000000000156, y: -1.1034365029124422 },\n { x: 0.000002259000000000156, y: -1.118858677475327 },\n { x: 0.0000022600000000001562, y: -1.118025466894398 },\n { x: 0.0000022610000000001563, y: -1.1201425447339548 },\n { x: 0.0000022620000000001564, y: -1.079348766346186 },\n { x: 0.0000022630000000001565, y: -1.0818061281282823 },\n { x: 0.0000022640000000001565, y: -1.0816275613263364 },\n { x: 0.0000022650000000001566, y: -1.0855372447437086 },\n { x: 0.0000022660000000001567, y: -1.1103061208083056 },\n { x: 0.0000022670000000001568, y: -1.0678206663156318 },\n { x: 0.000002268000000000157, y: -1.0519978857739078 },\n { x: 0.000002269000000000157, y: -1.1113132445584515 },\n { x: 0.000002270000000000157, y: -1.0769208196942672 },\n { x: 0.000002271000000000157, y: -1.0670594454839735 },\n { x: 0.000002272000000000157, y: -1.0679897990303937 },\n { x: 0.0000022730000000001572, y: -1.1032504454144747 },\n { x: 0.0000022740000000001573, y: -1.0547875734564618 },\n { x: 0.0000022750000000001574, y: -1.070298090856433 },\n { x: 0.0000022760000000001574, y: -1.058545507616113 },\n { x: 0.0000022770000000001575, y: -1.032711359509102 },\n { x: 0.0000022780000000001576, y: -1.0957870643146737 },\n { x: 0.0000022790000000001577, y: -1.0648584519130846 },\n { x: 0.0000022800000000001577, y: -1.0177923712607453 },\n { x: 0.000002281000000000158, y: -1.0518369844027828 },\n { x: 0.000002282000000000158, y: -1.0662998151028957 },\n { x: 0.000002283000000000158, y: -1.0516312697026737 },\n { x: 0.000002284000000000158, y: -1.0527145248700152 },\n { x: 0.000002285000000000158, y: -1.0276906331732636 },\n { x: 0.000002286000000000158, y: -1.0517350949331168 },\n { x: 0.0000022870000000001583, y: -1.0271290852668449 },\n { x: 0.0000022880000000001583, y: -1.0408319080118253 },\n { x: 0.0000022890000000001584, y: -1.0497125809983106 },\n { x: 0.0000022900000000001585, y: -0.9904775030385523 },\n { x: 0.0000022910000000001586, y: -1.0000816901285665 },\n { x: 0.0000022920000000001586, y: -1.015584601937064 },\n { x: 0.0000022930000000001587, y: -1.007773690505279 },\n { x: 0.000002294000000000159, y: -0.9839536945625968 },\n { x: 0.000002295000000000159, y: -0.9815773762528389 },\n { x: 0.000002296000000000159, y: -1.0152624608434677 },\n { x: 0.000002297000000000159, y: -1.002600523745201 },\n { x: 0.000002298000000000159, y: -1.0264174750303148 },\n { x: 0.000002299000000000159, y: -1.0098950388254664 },\n { x: 0.0000023000000000001592, y: -0.9885558817913994 },\n { x: 0.0000023010000000001593, y: -1.0201784659098563 },\n { x: 0.0000023020000000001594, y: -0.9946775603998603 },\n { x: 0.0000023030000000001595, y: -0.9699039220306213 },\n { x: 0.0000023040000000001595, y: -1.0043708452905702 },\n { x: 0.0000023050000000001596, y: -0.9929122727817833 },\n { x: 0.0000023060000000001597, y: -0.9801997149116384 },\n { x: 0.0000023070000000001598, y: -0.9871669521845855 },\n { x: 0.00000230800000000016, y: -0.9573717698910257 },\n { x: 0.00000230900000000016, y: -0.9957282113470034 },\n { x: 0.00000231000000000016, y: -0.9393598763056146 },\n { x: 0.00000231100000000016, y: -0.9212155933346302 },\n { x: 0.00000231200000000016, y: -0.95676706694914 },\n { x: 0.0000023130000000001602, y: -0.9424792805278669 },\n { x: 0.0000023140000000001603, y: -0.9671742793017462 },\n { x: 0.0000023150000000001604, y: -0.9294478309233294 },\n { x: 0.0000023160000000001604, y: -0.9217912523481558 },\n { x: 0.0000023170000000001605, y: -0.9350809926457113 },\n { x: 0.0000023180000000001606, y: -0.9221849356251933 },\n { x: 0.0000023190000000001607, y: -0.9348296811828873 },\n { x: 0.0000023200000000001607, y: -0.9377073420135766 },\n { x: 0.000002321000000000161, y: -0.9338306966163311 },\n { x: 0.000002322000000000161, y: -0.90446236915445 },\n { x: 0.000002323000000000161, y: -0.8698346198414872 },\n { x: 0.000002324000000000161, y: -0.9211319622460409 },\n { x: 0.000002325000000000161, y: -0.9128822942885423 },\n { x: 0.000002326000000000161, y: -0.8681301727537557 },\n { x: 0.0000023270000000001613, y: -0.8723218309465678 },\n { x: 0.0000023280000000001613, y: -0.8632247422717597 },\n { x: 0.0000023290000000001614, y: -0.8628777953061457 },\n { x: 0.0000023300000000001615, y: -0.8422775633587523 },\n { x: 0.0000023310000000001616, y: -0.8617671836651793 },\n { x: 0.0000023320000000001616, y: -0.8336581392322593 },\n { x: 0.0000023330000000001617, y: -0.8391467977334258 },\n { x: 0.000002334000000000162, y: -0.878034198713163 },\n { x: 0.000002335000000000162, y: -0.8931727987222301 },\n { x: 0.000002336000000000162, y: -0.8636530864352051 },\n { x: 0.000002337000000000162, y: -0.8681278471310856 },\n { x: 0.000002338000000000162, y: -0.8195160557603954 },\n { x: 0.000002339000000000162, y: -0.8648588409173688 },\n { x: 0.0000023400000000001622, y: -0.8065159241068366 },\n { x: 0.0000023410000000001623, y: -0.8274771749548573 },\n { x: 0.0000023420000000001624, y: -0.8436961778430836 },\n { x: 0.0000023430000000001625, y: -0.8212340747694735 },\n { x: 0.0000023440000000001625, y: -0.8393787425492343 },\n { x: 0.0000023450000000001626, y: -0.8074927737470309 },\n { x: 0.0000023460000000001627, y: -0.8418699303977784 },\n { x: 0.0000023470000000001628, y: -0.8070928966541282 },\n { x: 0.000002348000000000163, y: -0.7883104331164187 },\n { x: 0.000002349000000000163, y: -0.8349963316752298 },\n { x: 0.000002350000000000163, y: -0.7853657029023338 },\n { x: 0.000002351000000000163, y: -0.8028047746162525 },\n { x: 0.000002352000000000163, y: -0.8161631240225915 },\n { x: 0.0000023530000000001632, y: -0.7799867088364262 },\n { x: 0.0000023540000000001633, y: -0.7519970201010164 },\n { x: 0.0000023550000000001634, y: -0.802521768463922 },\n { x: 0.0000023560000000001635, y: -0.7778319683787733 },\n { x: 0.0000023570000000001635, y: -0.8007778542447999 },\n { x: 0.0000023580000000001636, y: -0.790757528795572 },\n { x: 0.0000023590000000001637, y: -0.751071363495006 },\n { x: 0.0000023600000000001638, y: -0.7377765966961166 },\n { x: 0.000002361000000000164, y: -0.7129436183290365 },\n { x: 0.000002362000000000164, y: -0.7139996508740053 },\n { x: 0.000002363000000000164, y: -0.7264669566780427 },\n { x: 0.000002364000000000164, y: -0.7317054327514088 },\n { x: 0.000002365000000000164, y: -0.7488292210688796 },\n { x: 0.000002366000000000164, y: -0.6884826667943789 },\n { x: 0.0000023670000000001643, y: -0.7075832865729976 },\n { x: 0.0000023680000000001644, y: -0.6915499825415492 },\n { x: 0.0000023690000000001644, y: -0.6850849369832764 },\n { x: 0.0000023700000000001645, y: -0.7239955834260631 },\n { x: 0.0000023710000000001646, y: -0.6729359141885862 },\n { x: 0.0000023720000000001647, y: -0.677834834343801 },\n { x: 0.0000023730000000001647, y: -0.7281967299857802 },\n { x: 0.000002374000000000165, y: -0.674799073834172 },\n { x: 0.000002375000000000165, y: -0.6926508681810462 },\n { x: 0.000002376000000000165, y: -0.6925134095466664 },\n { x: 0.000002377000000000165, y: -0.6561408146936505 },\n { x: 0.000002378000000000165, y: -0.7045605904383241 },\n { x: 0.000002379000000000165, y: -0.6936969622698995 },\n { x: 0.0000023800000000001653, y: -0.6238196838440893 },\n { x: 0.0000023810000000001653, y: -0.6872495629060865 },\n { x: 0.0000023820000000001654, y: -0.6184585390211844 },\n { x: 0.0000023830000000001655, y: -0.6215494436836672 },\n { x: 0.0000023840000000001656, y: -0.6243731301575307 },\n { x: 0.0000023850000000001656, y: -0.6232058288702654 },\n { x: 0.0000023860000000001657, y: -0.6703009953677034 },\n { x: 0.0000023870000000001658, y: -0.6117805120661874 },\n { x: 0.000002388000000000166, y: -0.5917934031444606 },\n { x: 0.000002389000000000166, y: -0.6438296938824454 },\n { x: 0.000002390000000000166, y: -0.598350652587067 },\n { x: 0.000002391000000000166, y: -0.6107921196786794 },\n { x: 0.000002392000000000166, y: -0.6356405832534027 },\n { x: 0.0000023930000000001662, y: -0.5682657158033384 },\n { x: 0.0000023940000000001663, y: -0.5777583586565108 },\n { x: 0.0000023950000000001664, y: -0.5947770260036661 },\n { x: 0.0000023960000000001665, y: -0.5958471707478002 },\n { x: 0.0000023970000000001665, y: -0.5577077602540511 },\n { x: 0.0000023980000000001666, y: -0.5632594072916399 },\n { x: 0.0000023990000000001667, y: -0.5609320363309819 },\n { x: 0.0000024000000000001668, y: -0.5658335784766687 },\n { x: 0.000002401000000000167, y: -0.5929972071078811 },\n { x: 0.000002402000000000167, y: -0.5354208878810454 },\n { x: 0.000002403000000000167, y: -0.5599789084237445 },\n { x: 0.000002404000000000167, y: -0.5242449093053955 },\n { x: 0.000002405000000000167, y: -0.5162730148369371 },\n { x: 0.000002406000000000167, y: -0.5680614304312296 },\n { x: 0.0000024070000000001673, y: -0.5218515715169217 },\n { x: 0.0000024080000000001674, y: -0.5216434385688059 },\n { x: 0.0000024090000000001674, y: -0.5000522615760793 },\n { x: 0.0000024100000000001675, y: -0.49269311908697444 },\n { x: 0.0000024110000000001676, y: -0.5284569477774332 },\n { x: 0.0000024120000000001677, y: -0.5225508255167066 },\n { x: 0.0000024130000000001677, y: -0.48499096544340026 },\n { x: 0.000002414000000000168, y: -0.5071563023105641 },\n { x: 0.000002415000000000168, y: -0.5063415532993574 },\n { x: 0.000002416000000000168, y: -0.49452662679542136 },\n { x: 0.000002417000000000168, y: -0.4597341366445032 },\n { x: 0.000002418000000000168, y: -0.4945018018640034 },\n { x: 0.000002419000000000168, y: -0.4534957207717517 },\n { x: 0.0000024200000000001683, y: -0.4705131894858341 },\n { x: 0.0000024210000000001683, y: -0.431024404227471 },\n { x: 0.0000024220000000001684, y: -0.4828906664039683 },\n { x: 0.0000024230000000001685, y: -0.4754051043691047 },\n { x: 0.0000024240000000001686, y: -0.47416575816968237 },\n { x: 0.0000024250000000001686, y: -0.47753355875265197 },\n { x: 0.0000024260000000001687, y: -0.45398698381985414 },\n { x: 0.0000024270000000001688, y: -0.4180357361647906 },\n { x: 0.000002428000000000169, y: -0.4516942430630965 },\n { x: 0.000002429000000000169, y: -0.45323668107092047 },\n { x: 0.000002430000000000169, y: -0.37998947165494285 },\n { x: 0.000002431000000000169, y: -0.38324799407885485 },\n { x: 0.000002432000000000169, y: -0.4181014651824893 },\n { x: 0.0000024330000000001692, y: -0.3655611066318295 },\n { x: 0.0000024340000000001693, y: -0.3963674545224115 },\n { x: 0.0000024350000000001694, y: -0.4152501067147071 },\n { x: 0.0000024360000000001695, y: -0.3923445582246408 },\n { x: 0.0000024370000000001695, y: -0.41090017228954034 },\n { x: 0.0000024380000000001696, y: -0.3549037198766325 },\n { x: 0.0000024390000000001697, y: -0.37411426024649663 },\n { x: 0.0000024400000000001698, y: -0.3954342754390548 },\n { x: 0.00000244100000000017, y: -0.379693594703644 },\n { x: 0.00000244200000000017, y: -0.3309119560453535 },\n { x: 0.00000244300000000017, y: -0.3276068650374942 },\n { x: 0.00000244400000000017, y: -0.35458878436642977 },\n { x: 0.00000244500000000017, y: -0.34608792563202195 },\n { x: 0.0000024460000000001702, y: -0.3309771636875109 },\n { x: 0.0000024470000000001703, y: -0.3005434980746519 },\n { x: 0.0000024480000000001704, y: -0.31442668415766956 },\n { x: 0.0000024490000000001704, y: -0.2850469754508962 },\n { x: 0.0000024500000000001705, y: -0.30415110571487286 },\n { x: 0.0000024510000000001706, y: -0.3462071153358029 },\n { x: 0.0000024520000000001707, y: -0.2822959911386574 },\n { x: 0.0000024530000000001707, y: -0.3088294167067626 },\n { x: 0.000002454000000000171, y: -0.2947572094272783 },\n { x: 0.000002455000000000171, y: -0.30510576818626395 },\n { x: 0.000002456000000000171, y: -0.3030284542363821 },\n { x: 0.000002457000000000171, y: -0.30656188882895175 },\n { x: 0.000002458000000000171, y: -0.29105234358830595 },\n { x: 0.000002459000000000171, y: -0.28606941189692736 },\n { x: 0.0000024600000000001713, y: -0.2291321457041728 },\n { x: 0.0000024610000000001713, y: -0.2880722088808652 },\n { x: 0.0000024620000000001714, y: -0.28096806307754785 },\n { x: 0.0000024630000000001715, y: -0.22101289464323637 },\n { x: 0.0000024640000000001716, y: -0.26682907979495035 },\n { x: 0.0000024650000000001716, y: -0.22461804644893746 },\n { x: 0.0000024660000000001717, y: -0.26411959533601004 },\n { x: 0.000002467000000000172, y: -0.25241369359838783 },\n { x: 0.000002468000000000172, y: -0.2234563917400324 },\n { x: 0.000002469000000000172, y: -0.18999173911706954 },\n { x: 0.000002470000000000172, y: -0.18021333518928684 },\n { x: 0.000002471000000000172, y: -0.19279176065785986 },\n { x: 0.000002472000000000172, y: -0.20107063030255418 },\n { x: 0.0000024730000000001722, y: -0.17999608780213525 },\n { x: 0.0000024740000000001723, y: -0.18723650947814263 },\n { x: 0.0000024750000000001724, y: -0.16167216750868554 },\n { x: 0.0000024760000000001725, y: -0.18711127289627277 },\n { x: 0.0000024770000000001725, y: -0.16169546018579953 },\n { x: 0.0000024780000000001726, y: -0.16369478259423073 },\n { x: 0.0000024790000000001727, y: -0.18576784473988425 },\n { x: 0.0000024800000000001728, y: -0.17131565828677353 },\n { x: 0.000002481000000000173, y: -0.1546212887442107 },\n { x: 0.000002482000000000173, y: -0.13566243561309224 },\n { x: 0.000002483000000000173, y: -0.17831141609823592 },\n { x: 0.000002484000000000173, y: -0.17179442870317502 },\n { x: 0.000002485000000000173, y: -0.13206003705093278 },\n { x: 0.0000024860000000001732, y: -0.13270009294317633 },\n { x: 0.0000024870000000001733, y: -0.13437298016435997 },\n { x: 0.0000024880000000001734, y: -0.09344525529532807 },\n { x: 0.0000024890000000001734, y: -0.11248741659954725 },\n { x: 0.0000024900000000001735, y: -0.11104782529678112 },\n { x: 0.0000024910000000001736, y: -0.11290746735501864 },\n { x: 0.0000024920000000001737, y: -0.12455405493285901 },\n { x: 0.0000024930000000001737, y: -0.09663488965899512 },\n { x: 0.000002494000000000174, y: -0.07693987525036725 },\n { x: 0.000002495000000000174, y: -0.05517965015024491 },\n { x: 0.000002496000000000174, y: -0.06564972913360982 },\n { x: 0.000002497000000000174, y: -0.07415726055045603 },\n { x: 0.000002498000000000174, y: -0.10890117898470059 },\n { x: 0.000002499000000000174, y: -0.05717810655851217 },\n { x: 0.0000025000000000001743, y: -0.044507267028509295 },\n { x: 0.0000025010000000001743, y: -0.03166149444390001 },\n { x: 0.0000025020000000001744, y: -0.05946737925973119 },\n { x: 0.0000025030000000001745, y: -0.03780260574207762 },\n { x: 0.0000025040000000001746, y: -0.01929642714223637 },\n { x: 0.0000025050000000001746, y: -0.0498784148077263 },\n { x: 0.0000025060000000001747, y: -0.01218401030295406 },\n { x: 0.000002507000000000175, y: -0.017809948692081117 },\n { x: 0.000002508000000000175, y: -0.010990216664137437 },\n { x: 0.000002509000000000175, y: -0.02296580743899924 },\n { x: 0.000002510000000000175, y: -0.04053020068899563 },\n { x: 0.000002511000000000175, y: 0.02169781421810913 },\n { x: 0.000002512000000000175, y: 0.010397988522018373 },\n { x: 0.0000025130000000001752, y: 0.00227231972249545 },\n { x: 0.0000025140000000001753, y: 0.028869025336646478 },\n { x: 0.0000025150000000001754, y: 0.01902856501225133 },\n { x: 0.0000025160000000001755, y: 0.017926343530677586 },\n { x: 0.0000025170000000001755, y: 0.03885327968763129 },\n { x: 0.0000025180000000001756, y: -0.01162658912013808 },\n { x: 0.0000025190000000001757, y: -0.0031947302812319264 },\n { x: 0.0000025200000000001758, y: 0.034856364770516624 },\n { x: 0.000002521000000000176, y: 0.034841968231742154 },\n { x: 0.000002522000000000176, y: 0.021316845251639197 },\n { x: 0.000002523000000000176, y: 0.02696495647258669 },\n { x: 0.000002524000000000176, y: 0.02673217851799009 },\n { x: 0.000002525000000000176, y: 0.07175393683754153 },\n { x: 0.0000025260000000001762, y: 0.031240770974422107 },\n { x: 0.0000025270000000001763, y: 0.0660126897852671 },\n { x: 0.0000025280000000001764, y: 0.07124352645993412 },\n { x: 0.0000025290000000001764, y: 0.06286961362475643 },\n { x: 0.0000025300000000001765, y: 0.11685317728029213 },\n { x: 0.0000025310000000001766, y: 0.07920082948662328 },\n { x: 0.0000025320000000001767, y: 0.055154502035767404 },\n { x: 0.0000025330000000001767, y: 0.10585110764067374 },\n { x: 0.000002534000000000177, y: 0.06187860896225339 },\n { x: 0.000002535000000000177, y: 0.09956613044874507 },\n { x: 0.000002536000000000177, y: 0.13451941085834254 },\n { x: 0.000002537000000000177, y: 0.10075404593254048 },\n { x: 0.000002538000000000177, y: 0.10456551659403011 },\n { x: 0.000002539000000000177, y: 0.09718715020479415 },\n { x: 0.0000025400000000001773, y: 0.10105958985617373 },\n { x: 0.0000025410000000001774, y: 0.19799401508124528 },\n { x: 0.0000025420000000001774, y: 0.15730205881544382 },\n { x: 0.0000025430000000001775, y: 0.14787913165361638 },\n { x: 0.0000025440000000001776, y: 0.13064690543152924 },\n { x: 0.0000025450000000001777, y: 0.15133248739999616 },\n { x: 0.0000025460000000001777, y: 0.15171092480519321 },\n { x: 0.000002547000000000178, y: 0.1430756168127764 },\n { x: 0.000002548000000000178, y: 0.17691330353538567 },\n { x: 0.000002549000000000178, y: 0.20466579408576377 },\n { x: 0.000002550000000000178, y: 0.13802251379639136 },\n { x: 0.000002551000000000178, y: 0.18051156796859189 },\n { x: 0.000002552000000000178, y: 0.15866129045569125 },\n { x: 0.0000025530000000001783, y: 0.21630961329226683 },\n { x: 0.0000025540000000001783, y: 0.19017542432235535 },\n { x: 0.0000025550000000001784, y: 0.21392373766443332 },\n { x: 0.0000025560000000001785, y: 0.1784114243585263 },\n { x: 0.0000025570000000001786, y: 0.21270015198691658 },\n { x: 0.0000025580000000001786, y: 0.22986434961374125 },\n { x: 0.0000025590000000001787, y: 0.19892184999054646 },\n { x: 0.0000025600000000001788, y: 0.23982333589279217 },\n { x: 0.000002561000000000179, y: 0.2310991619474565 },\n { x: 0.000002562000000000179, y: 0.2328379686348432 },\n { x: 0.000002563000000000179, y: 0.22016175467841323 },\n { x: 0.000002564000000000179, y: 0.2215253263906854 },\n { x: 0.000002565000000000179, y: 0.25061875543160295 },\n { x: 0.0000025660000000001792, y: 0.2772938023288315 },\n { x: 0.0000025670000000001793, y: 0.2861226720342499 },\n { x: 0.0000025680000000001794, y: 0.24566325565750188 },\n { x: 0.0000025690000000001795, y: 0.23359821478888176 },\n { x: 0.0000025700000000001795, y: 0.24413574378488537 },\n { x: 0.0000025710000000001796, y: 0.25925409971906455 },\n { x: 0.0000025720000000001797, y: 0.2680102233695851 },\n { x: 0.0000025730000000001798, y: 0.2835187231735638 },\n { x: 0.00000257400000000018, y: 0.25896261696102213 },\n { x: 0.00000257500000000018, y: 0.27728786930336385 },\n { x: 0.00000257600000000018, y: 0.29487327411884984 },\n { x: 0.00000257700000000018, y: 0.2829869503805984 },\n { x: 0.00000257800000000018, y: 0.2785208605542552 },\n { x: 0.00000257900000000018, y: 0.2805574219877335 },\n { x: 0.0000025800000000001803, y: 0.2945417418926183 },\n { x: 0.0000025810000000001804, y: 0.3386860928803425 },\n { x: 0.0000025820000000001804, y: 0.32295701628266055 },\n { x: 0.0000025830000000001805, y: 0.30263879122037435 },\n { x: 0.0000025840000000001806, y: 0.318907693431956 },\n { x: 0.0000025850000000001807, y: 0.3323064662277334 },\n { x: 0.0000025860000000001807, y: 0.31203722079763047 },\n { x: 0.000002587000000000181, y: 0.3250750119397284 },\n { x: 0.000002588000000000181, y: 0.3424634668701344 },\n { x: 0.000002589000000000181, y: 0.344828274713252 },\n { x: 0.000002590000000000181, y: 0.3540132645116023 },\n { x: 0.000002591000000000181, y: 0.3608681390065181 },\n { x: 0.000002592000000000181, y: 0.3485198395584777 },\n { x: 0.0000025930000000001813, y: 0.3506379350663991 },\n { x: 0.0000025940000000001813, y: 0.331915516959402 },\n { x: 0.0000025950000000001814, y: 0.34527735092327994 },\n { x: 0.0000025960000000001815, y: 0.4000351811343407 },\n { x: 0.0000025970000000001816, y: 0.39388941446463327 },\n { x: 0.0000025980000000001816, y: 0.3398543087839083 },\n { x: 0.0000025990000000001817, y: 0.372305564665714 },\n { x: 0.0000026000000000001818, y: 0.3838317633621279 },\n { x: 0.000002601000000000182, y: 0.41529437014667353 },\n { x: 0.000002602000000000182, y: 0.41304834547927105 },\n { x: 0.000002603000000000182, y: 0.4041870055323724 },\n { x: 0.000002604000000000182, y: 0.43587020295938855 },\n { x: 0.000002605000000000182, y: 0.4310568971971567 },\n { x: 0.0000026060000000001822, y: 0.43714794523535655 },\n { x: 0.0000026070000000001823, y: 0.40886668072126864 },\n { x: 0.0000026080000000001824, y: 0.4433694137108774 },\n { x: 0.0000026090000000001825, y: 0.4050889122740359 },\n { x: 0.0000026100000000001825, y: 0.4310772621906473 },\n { x: 0.0000026110000000001826, y: 0.4006271206163106 },\n { x: 0.0000026120000000001827, y: 0.3962460208615274 },\n { x: 0.0000026130000000001828, y: 0.3975686990296928 },\n { x: 0.000002614000000000183, y: 0.4667753352533014 },\n { x: 0.000002615000000000183, y: 0.46286901552752735 },\n { x: 0.000002616000000000183, y: 0.4692490057551146 },\n { x: 0.000002617000000000183, y: 0.42994799435188014 },\n { x: 0.000002618000000000183, y: 0.4634064627849226 },\n { x: 0.000002619000000000183, y: 0.4301614556194292 },\n { x: 0.0000026200000000001833, y: 0.44504568636494807 },\n { x: 0.0000026210000000001834, y: 0.465746434910619 },\n { x: 0.0000026220000000001834, y: 0.43157760113541255 },\n { x: 0.0000026230000000001835, y: 0.46456271138277544 },\n { x: 0.0000026240000000001836, y: 0.4473545111102838 },\n { x: 0.0000026250000000001837, y: 0.45581795130307107 },\n { x: 0.0000026260000000001837, y: 0.5166751972213512 },\n { x: 0.000002627000000000184, y: 0.48019312519732454 },\n { x: 0.000002628000000000184, y: 0.46975464117309257 },\n { x: 0.000002629000000000184, y: 0.4926981334934373 },\n { x: 0.000002630000000000184, y: 0.47934119963743727 },\n { x: 0.000002631000000000184, y: 0.5039408718465962 },\n { x: 0.000002632000000000184, y: 0.49937969688982364 },\n { x: 0.0000026330000000001843, y: 0.49529023474703376 },\n { x: 0.0000026340000000001843, y: 0.5009090133767484 },\n { x: 0.0000026350000000001844, y: 0.5232374406992164 },\n { x: 0.0000026360000000001845, y: 0.4991756250779322 },\n { x: 0.0000026370000000001846, y: 0.5031570010570516 },\n { x: 0.0000026380000000001846, y: 0.5325824248998609 },\n { x: 0.0000026390000000001847, y: 0.5551110810471244 },\n { x: 0.0000026400000000001848, y: 0.4917482604186644 },\n { x: 0.000002641000000000185, y: 0.5244546057444699 },\n { x: 0.000002642000000000185, y: 0.5116575105128615 },\n { x: 0.000002643000000000185, y: 0.5180018668401769 },\n { x: 0.000002644000000000185, y: 0.5728935876234474 },\n { x: 0.000002645000000000185, y: 0.571021578576603 },\n { x: 0.0000026460000000001852, y: 0.5391673816733841 },\n { x: 0.0000026470000000001853, y: 0.5233207093244425 },\n { x: 0.0000026480000000001854, y: 0.5790585065793126 },\n { x: 0.0000026490000000001855, y: 0.5266473345654257 },\n { x: 0.0000026500000000001855, y: 0.5299398343837128 },\n { x: 0.0000026510000000001856, y: 0.5503727252229598 },\n { x: 0.0000026520000000001857, y: 0.5890831324182434 },\n { x: 0.0000026530000000001858, y: 0.5434410835149216 },\n { x: 0.000002654000000000186, y: 0.5381805041592544 },\n { x: 0.000002655000000000186, y: 0.5986137865748076 },\n { x: 0.000002656000000000186, y: 0.6109471619427517 },\n { x: 0.000002657000000000186, y: 0.5510079300346555 },\n { x: 0.000002658000000000186, y: 0.5516906368691389 },\n { x: 0.0000026590000000001862, y: 0.5809096403298828 },\n { x: 0.0000026600000000001863, y: 0.6157549680813351 },\n { x: 0.0000026610000000001864, y: 0.5824277458242549 },\n { x: 0.0000026620000000001864, y: 0.5807834397904956 },\n { x: 0.0000026630000000001865, y: 0.6122324203702777 },\n { x: 0.0000026640000000001866, y: 0.5682248787778075 },\n { x: 0.0000026650000000001867, y: 0.6364895547423738 },\n { x: 0.0000026660000000001867, y: 0.6367852849831123 },\n { x: 0.000002667000000000187, y: 0.6301263973616424 },\n { x: 0.000002668000000000187, y: 0.6369228813944692 },\n { x: 0.000002669000000000187, y: 0.6129163568466053 },\n { x: 0.000002670000000000187, y: 0.5803002292933409 },\n { x: 0.000002671000000000187, y: 0.5988221700276009 },\n { x: 0.000002672000000000187, y: 0.6354143321436927 },\n { x: 0.0000026730000000001873, y: 0.6581870758899424 },\n { x: 0.0000026740000000001873, y: 0.6145825823815865 },\n { x: 0.0000026750000000001874, y: 0.6036896789836707 },\n { x: 0.0000026760000000001875, y: 0.6644893156241612 },\n { x: 0.0000026770000000001876, y: 0.6211856028677928 },\n { x: 0.0000026780000000001876, y: 0.634166865042745 },\n { x: 0.0000026790000000001877, y: 0.6391570014951409 },\n { x: 0.000002680000000000188, y: 0.6235583799678183 },\n { x: 0.000002681000000000188, y: 0.661715153993567 },\n { x: 0.000002682000000000188, y: 0.6130362967431036 },\n { x: 0.000002683000000000188, y: 0.6163290608816756 },\n { x: 0.000002684000000000188, y: 0.621920638205098 },\n { x: 0.000002685000000000188, y: 0.6571183173838694 },\n { x: 0.0000026860000000001882, y: 0.6202144778072248 },\n { x: 0.0000026870000000001883, y: 0.6740649438969156 },\n { x: 0.0000026880000000001884, y: 0.6963333587536268 },\n { x: 0.0000026890000000001885, y: 0.6868713715811054 },\n { x: 0.0000026900000000001885, y: 0.6801575174287627 },\n { x: 0.0000026910000000001886, y: 0.6303386948017062 },\n { x: 0.0000026920000000001887, y: 0.681160569708664 },\n { x: 0.0000026930000000001888, y: 0.6960124695125789 },\n { x: 0.000002694000000000189, y: 0.6959992053417199 },\n { x: 0.000002695000000000189, y: 0.665865778332864 },\n { x: 0.000002696000000000189, y: 0.6776158496887771 },\n { x: 0.000002697000000000189, y: 0.7008951886731878 },\n { x: 0.000002698000000000189, y: 0.6675595996175626 },\n { x: 0.0000026990000000001892, y: 0.7117689624781781 },\n { x: 0.0000027000000000001893, y: 0.6545064997667815 },\n { x: 0.0000027010000000001894, y: 0.7230932420436397 },\n { x: 0.0000027020000000001894, y: 0.7152655516321059 },\n { x: 0.0000027030000000001895, y: 0.7001993852036024 },\n { x: 0.0000027040000000001896, y: 0.7170472339005718 },\n { x: 0.0000027050000000001897, y: 0.7342749728528719 },\n { x: 0.0000027060000000001897, y: 0.6655142590877691 },\n { x: 0.00000270700000000019, y: 0.6641503747559637 },\n { x: 0.00000270800000000019, y: 0.7267693077856443 },\n { x: 0.00000270900000000019, y: 0.7371590014488312 },\n { x: 0.00000271000000000019, y: 0.6822593061619309 },\n { x: 0.00000271100000000019, y: 0.6916652631795677 },\n { x: 0.00000271200000000019, y: 0.6794633711571757 },\n { x: 0.0000027130000000001903, y: 0.7376521218068873 },\n { x: 0.0000027140000000001903, y: 0.7220004566269178 },\n { x: 0.0000027150000000001904, y: 0.7037104569394929 },\n { x: 0.0000027160000000001905, y: 0.7356446439838722 },\n { x: 0.0000027170000000001906, y: 0.7340941761495073 },\n { x: 0.0000027180000000001906, y: 0.7124752155844226 },\n { x: 0.0000027190000000001907, y: 0.7397050665323006 },\n { x: 0.000002720000000000191, y: 0.7169108115717007 },\n { x: 0.000002721000000000191, y: 0.7336679215398737 },\n { x: 0.000002722000000000191, y: 0.7347476000524897 },\n { x: 0.000002723000000000191, y: 0.7214815051889556 },\n { x: 0.000002724000000000191, y: 0.7084638455258885 },\n { x: 0.000002725000000000191, y: 0.7024557472716381 },\n { x: 0.0000027260000000001912, y: 0.7118278674174795 },\n { x: 0.0000027270000000001913, y: 0.7697487965677479 },\n { x: 0.0000027280000000001914, y: 0.7118320029072236 },\n { x: 0.0000027290000000001915, y: 0.7340378553864686 },\n { x: 0.0000027300000000001915, y: 0.7564257793349525 },\n { x: 0.0000027310000000001916, y: 0.7443729205646559 },\n { x: 0.0000027320000000001917, y: 0.7082096243602418 },\n { x: 0.0000027330000000001918, y: 0.7347467168308663 },\n { x: 0.000002734000000000192, y: 0.7193104500238281 },\n { x: 0.000002735000000000192, y: 0.7217556796192299 },\n { x: 0.000002736000000000192, y: 0.7602814158498283 },\n { x: 0.000002737000000000192, y: 0.7237963434152892 },\n { x: 0.000002738000000000192, y: 0.7354313096162569 },\n { x: 0.0000027390000000001922, y: 0.7695296873312432 },\n { x: 0.0000027400000000001923, y: 0.7473876554680158 },\n { x: 0.0000027410000000001924, y: 0.7887672527897815 },\n { x: 0.0000027420000000001925, y: 0.7365271719313455 },\n { x: 0.0000027430000000001925, y: 0.7622104476183755 },\n { x: 0.0000027440000000001926, y: 0.759922239111059 },\n { x: 0.0000027450000000001927, y: 0.7716827285287791 },\n { x: 0.0000027460000000001928, y: 0.7760312155155824 },\n { x: 0.000002747000000000193, y: 0.7375188084834007 },\n { x: 0.000002748000000000193, y: 0.75771266711046 },\n { x: 0.000002749000000000193, y: 0.7899635933795764 },\n { x: 0.000002750000000000193, y: 0.7371939551663986 },\n { x: 0.000002751000000000193, y: 0.801014572705638 },\n { x: 0.000002752000000000193, y: 0.7346419747151698 },\n { x: 0.0000027530000000001933, y: 0.7730448978953918 },\n { x: 0.0000027540000000001934, y: 0.7878243977099655 },\n { x: 0.0000027550000000001934, y: 0.8013602086474488 },\n { x: 0.0000027560000000001935, y: 0.7376080214635072 },\n { x: 0.0000027570000000001936, y: 0.793891213850553 },\n { x: 0.0000027580000000001937, y: 0.7481157293669828 },\n { x: 0.0000027590000000001937, y: 0.7510456402610325 },\n { x: 0.000002760000000000194, y: 0.8054082490322473 },\n { x: 0.000002761000000000194, y: 0.7816317125000892 },\n { x: 0.000002762000000000194, y: 0.737728876700332 },\n { x: 0.000002763000000000194, y: 0.7739004551931284 },\n { x: 0.000002764000000000194, y: 0.7633930901102277 },\n { x: 0.000002765000000000194, y: 0.7897011603827734 },\n { x: 0.0000027660000000001943, y: 0.7560328367101616 },\n { x: 0.0000027670000000001943, y: 0.7939422073459839 },\n { x: 0.0000027680000000001944, y: 0.7827372074588763 },\n { x: 0.0000027690000000001945, y: 0.7573586343124319 },\n { x: 0.0000027700000000001946, y: 0.798323615372741 },\n { x: 0.0000027710000000001946, y: 0.7546747165305211 },\n { x: 0.0000027720000000001947, y: 0.7482248385133946 },\n { x: 0.0000027730000000001948, y: 0.7567888508853853 },\n { x: 0.000002774000000000195, y: 0.753604845528295 },\n { x: 0.000002775000000000195, y: 0.7934727902343959 },\n { x: 0.000002776000000000195, y: 0.810676252400137 },\n { x: 0.000002777000000000195, y: 0.7956199857452727 },\n { x: 0.000002778000000000195, y: 0.8230095453118499 },\n { x: 0.0000027790000000001952, y: 0.8217849927519632 },\n { x: 0.0000027800000000001953, y: 0.7631604408415177 },\n { x: 0.0000027810000000001954, y: 0.8213208187341712 },\n { x: 0.0000027820000000001955, y: 0.7734683985868821 },\n { x: 0.0000027830000000001955, y: 0.782203586554138 },\n { x: 0.0000027840000000001956, y: 0.8151991220550522 },\n { x: 0.0000027850000000001957, y: 0.8107903365350744 },\n { x: 0.0000027860000000001958, y: 0.7739831625092467 },\n { x: 0.000002787000000000196, y: 0.7688714286812638 },\n { x: 0.000002788000000000196, y: 0.7944913708372867 },\n { x: 0.000002789000000000196, y: 0.7864705280363402 },\n { x: 0.000002790000000000196, y: 0.7591993208217006 },\n { x: 0.000002791000000000196, y: 0.7895889136712934 },\n { x: 0.000002792000000000196, y: 0.8182349759965467 },\n { x: 0.0000027930000000001963, y: 0.7846041242554446 },\n { x: 0.0000027940000000001964, y: 0.7951279045333552 },\n { x: 0.0000027950000000001964, y: 0.7981406989521761 },\n { x: 0.0000027960000000001965, y: 0.7815773167617462 },\n { x: 0.0000027970000000001966, y: 0.7663759216374127 },\n { x: 0.0000027980000000001967, y: 0.7838290871940248 },\n { x: 0.0000027990000000001967, y: 0.7983593381803468 },\n { x: 0.000002800000000000197, y: 0.7525548828869657 },\n { x: 0.000002801000000000197, y: 0.8212197474672228 },\n { x: 0.000002802000000000197, y: 0.7749962002326138 },\n { x: 0.000002803000000000197, y: 0.76638181540985 },\n { x: 0.000002804000000000197, y: 0.7802293181223559 },\n { x: 0.000002805000000000197, y: 0.7769220521634627 },\n { x: 0.0000028060000000001973, y: 0.786587797159431 },\n { x: 0.0000028070000000001973, y: 0.7827700742639933 },\n { x: 0.0000028080000000001974, y: 0.7591626865548814 },\n { x: 0.0000028090000000001975, y: 0.7863620802702915 },\n { x: 0.0000028100000000001976, y: 0.7567615295701122 },\n { x: 0.0000028110000000001976, y: 0.8512174564692979 },\n { x: 0.0000028120000000001977, y: 0.7508603274861254 },\n { x: 0.0000028130000000001978, y: 0.771509410383711 },\n { x: 0.000002814000000000198, y: 0.7841360817289958 },\n { x: 0.000002815000000000198, y: 0.781330448283536 },\n { x: 0.000002816000000000198, y: 0.7668814952450571 },\n { x: 0.000002817000000000198, y: 0.7852339002863445 },\n { x: 0.000002818000000000198, y: 0.8045854330291735 },\n { x: 0.0000028190000000001982, y: 0.8117118789267445 },\n { x: 0.0000028200000000001983, y: 0.7964819608750886 },\n { x: 0.0000028210000000001984, y: 0.7642314732771622 },\n { x: 0.0000028220000000001985, y: 0.767788701575244 },\n { x: 0.0000028230000000001985, y: 0.7545896273185719 },\n { x: 0.0000028240000000001986, y: 0.7670135719361161 },\n { x: 0.0000028250000000001987, y: 0.776489768698379 },\n { x: 0.0000028260000000001988, y: 0.7707513477197501 },\n { x: 0.000002827000000000199, y: 0.7956990289629834 },\n { x: 0.000002828000000000199, y: 0.7464042723655999 },\n { x: 0.000002829000000000199, y: 0.7630537764135136 },\n { x: 0.000002830000000000199, y: 0.8112271560025841 },\n { x: 0.000002831000000000199, y: 0.7482093728408432 },\n { x: 0.0000028320000000001992, y: 0.7971430465769822 },\n { x: 0.0000028330000000001993, y: 0.7427053120890292 },\n { x: 0.0000028340000000001994, y: 0.7720169130016905 },\n { x: 0.0000028350000000001994, y: 0.7864622512674394 },\n { x: 0.0000028360000000001995, y: 0.7717803923168035 },\n { x: 0.0000028370000000001996, y: 0.7658028092752694 },\n { x: 0.0000028380000000001997, y: 0.7392771088737514 },\n { x: 0.0000028390000000001997, y: 0.7924686585526886 },\n { x: 0.0000028400000000002, y: 0.7474299100430132 },\n { x: 0.0000028410000000002, y: 0.7430508775093344 },\n { x: 0.0000028420000000002, y: 0.7637892187832406 },\n { x: 0.0000028430000000002, y: 0.7621379094589217 },\n { x: 0.0000028440000000002, y: 0.7691954236060945 },\n { x: 0.0000028450000000002, y: 0.7604740781957471 },\n { x: 0.0000028460000000002003, y: 0.7533316213397995 },\n { x: 0.0000028470000000002003, y: 0.733534496514143 },\n { x: 0.0000028480000000002004, y: 0.7406852856007478 },\n { x: 0.0000028490000000002005, y: 0.8024655695950724 },\n { x: 0.0000028500000000002006, y: 0.7765870306601449 },\n { x: 0.0000028510000000002006, y: 0.7570494947784607 },\n { x: 0.0000028520000000002007, y: 0.7772564645890533 },\n { x: 0.000002853000000000201, y: 0.7338847289490747 },\n { x: 0.000002854000000000201, y: 0.7344372554879921 },\n { x: 0.000002855000000000201, y: 0.760865899145752 },\n { x: 0.000002856000000000201, y: 0.728391935157656 },\n { x: 0.000002857000000000201, y: 0.7297036663397427 },\n { x: 0.000002858000000000201, y: 0.7595273521720526 },\n { x: 0.0000028590000000002012, y: 0.7630994243495298 },\n { x: 0.0000028600000000002013, y: 0.7768321326373545 },\n { x: 0.0000028610000000002014, y: 0.7371941853307857 },\n { x: 0.0000028620000000002015, y: 0.7718452236971518 },\n { x: 0.0000028630000000002015, y: 0.7255050772966469 },\n { x: 0.0000028640000000002016, y: 0.7595980974960304 },\n { x: 0.0000028650000000002017, y: 0.7443690761485993 },\n { x: 0.0000028660000000002018, y: 0.7763706035093906 },\n { x: 0.000002867000000000202, y: 0.765830136812253 },\n { x: 0.000002868000000000202, y: 0.7832203021729911 },\n { x: 0.000002869000000000202, y: 0.7641234591714927 },\n { x: 0.000002870000000000202, y: 0.7155313199497109 },\n { x: 0.000002871000000000202, y: 0.7688497258272269 },\n { x: 0.0000028720000000002022, y: 0.7500660338112418 },\n { x: 0.0000028730000000002023, y: 0.7125848850884627 },\n { x: 0.0000028740000000002024, y: 0.7392716584564772 },\n { x: 0.0000028750000000002024, y: 0.7485035309834968 },\n { x: 0.0000028760000000002025, y: 0.7437759238901553 },\n { x: 0.0000028770000000002026, y: 0.7250862500058989 },\n { x: 0.0000028780000000002027, y: 0.7343829198329125 },\n { x: 0.0000028790000000002027, y: 0.7348355290801867 },\n { x: 0.000002880000000000203, y: 0.6913486874814634 },\n { x: 0.000002881000000000203, y: 0.7122497839547313 },\n { x: 0.000002882000000000203, y: 0.7180340610111401 },\n { x: 0.000002883000000000203, y: 0.751442300197788 },\n { x: 0.000002884000000000203, y: 0.7064022082389504 },\n { x: 0.000002885000000000203, y: 0.6915746554626758 },\n { x: 0.0000028860000000002033, y: 0.7403966100026745 },\n { x: 0.0000028870000000002033, y: 0.7502800199449855 },\n { x: 0.0000028880000000002034, y: 0.6954108060963011 },\n { x: 0.0000028890000000002035, y: 0.7399438902519763 },\n { x: 0.0000028900000000002036, y: 0.6881611386264651 },\n { x: 0.0000028910000000002036, y: 0.6883583927942954 },\n { x: 0.0000028920000000002037, y: 0.673649669089998 },\n { x: 0.000002893000000000204, y: 0.7373819783907827 },\n { x: 0.000002894000000000204, y: 0.6775216753790888 },\n { x: 0.000002895000000000204, y: 0.6911629701200532 },\n { x: 0.000002896000000000204, y: 0.7211812124276452 },\n { x: 0.000002897000000000204, y: 0.7160704162569042 },\n { x: 0.000002898000000000204, y: 0.676371455922578 },\n { x: 0.0000028990000000002042, y: 0.7274802956547528 },\n { x: 0.0000029000000000002043, y: 0.683049828459433 },\n { x: 0.0000029010000000002044, y: 0.6900989360913905 },\n { x: 0.0000029020000000002045, y: 0.7047533973435269 },\n { x: 0.0000029030000000002045, y: 0.654995021504275 },\n { x: 0.0000029040000000002046, y: 0.6841284222377781 },\n { x: 0.0000029050000000002047, y: 0.6732941982214122 },\n { x: 0.0000029060000000002048, y: 0.7145912334252882 },\n { x: 0.000002907000000000205, y: 0.6543401172757951 },\n { x: 0.000002908000000000205, y: 0.6573577029992239 },\n { x: 0.000002909000000000205, y: 0.7159432289690105 },\n { x: 0.000002910000000000205, y: 0.6807836422776883 },\n { x: 0.000002911000000000205, y: 0.7027154560636988 },\n { x: 0.0000029120000000002052, y: 0.6370273563736593 },\n { x: 0.0000029130000000002053, y: 0.6566650252651687 },\n { x: 0.0000029140000000002054, y: 0.6856754434755157 },\n { x: 0.0000029150000000002054, y: 0.6638956828455864 },\n { x: 0.0000029160000000002055, y: 0.6710147421919256 },\n { x: 0.0000029170000000002056, y: 0.6411098021431326 },\n { x: 0.0000029180000000002057, y: 0.6337515667537542 },\n { x: 0.0000029190000000002057, y: 0.6398758362740098 },\n { x: 0.000002920000000000206, y: 0.628361373202968 },\n { x: 0.000002921000000000206, y: 0.639388149374006 },\n { x: 0.000002922000000000206, y: 0.6782883947274078 },\n { x: 0.000002923000000000206, y: 0.6662133348476065 },\n { x: 0.000002924000000000206, y: 0.6744458143446771 },\n { x: 0.000002925000000000206, y: 0.6272141899122543 },\n { x: 0.0000029260000000002063, y: 0.6767808075628621 },\n { x: 0.0000029270000000002063, y: 0.6317346435211388 },\n { x: 0.0000029280000000002064, y: 0.6142931046884369 },\n { x: 0.0000029290000000002065, y: 0.6704631244999428 },\n { x: 0.0000029300000000002066, y: 0.6454744499613985 },\n { x: 0.0000029310000000002067, y: 0.647884465580466 },\n { x: 0.0000029320000000002067, y: 0.6602338925118152 },\n { x: 0.000002933000000000207, y: 0.6570589958671212 },\n { x: 0.000002934000000000207, y: 0.6294987704334325 },\n { x: 0.000002935000000000207, y: 0.6116801020597763 },\n { x: 0.000002936000000000207, y: 0.6067150106325837 },\n { x: 0.000002937000000000207, y: 0.6547845991396 },\n { x: 0.000002938000000000207, y: 0.6035587204656251 },\n { x: 0.0000029390000000002073, y: 0.5959623011526646 },\n { x: 0.0000029400000000002073, y: 0.5833899099901261 },\n { x: 0.0000029410000000002074, y: 0.6090903670216657 },\n { x: 0.0000029420000000002075, y: 0.5814380814901917 },\n { x: 0.0000029430000000002076, y: 0.5793610114770555 },\n { x: 0.0000029440000000002076, y: 0.5789968660799116 },\n { x: 0.0000029450000000002077, y: 0.5965906954287372 },\n { x: 0.0000029460000000002078, y: 0.5670538449442795 },\n { x: 0.000002947000000000208, y: 0.6142534090183384 },\n { x: 0.000002948000000000208, y: 0.6026167411490274 },\n { x: 0.000002949000000000208, y: 0.5943573490926507 },\n { x: 0.000002950000000000208, y: 0.5498448938835222 },\n { x: 0.000002951000000000208, y: 0.6088917707690311 },\n { x: 0.0000029520000000002082, y: 0.5979286662901565 },\n { x: 0.0000029530000000002083, y: 0.5622730106011163 },\n { x: 0.0000029540000000002084, y: 0.5978847405075455 },\n { x: 0.0000029550000000002085, y: 0.5898867450354877 },\n { x: 0.0000029560000000002085, y: 0.5461274076217086 },\n { x: 0.0000029570000000002086, y: 0.5884938191684874 },\n { x: 0.0000029580000000002087, y: 0.5322519093592583 },\n { x: 0.0000029590000000002088, y: 0.5807437680860508 },\n { x: 0.000002960000000000209, y: 0.5755296480271369 },\n { x: 0.000002961000000000209, y: 0.5388641482130897 },\n { x: 0.000002962000000000209, y: 0.5752632018518571 },\n { x: 0.000002963000000000209, y: 0.5841578412925744 },\n { x: 0.000002964000000000209, y: 0.5430249955723269 },\n { x: 0.000002965000000000209, y: 0.5824291534609394 },\n { x: 0.0000029660000000002093, y: 0.5561377114144416 },\n { x: 0.0000029670000000002094, y: 0.5421408760660786 },\n { x: 0.0000029680000000002094, y: 0.516956242642722 },\n { x: 0.0000029690000000002095, y: 0.5085039910663094 },\n { x: 0.0000029700000000002096, y: 0.5432745215003134 },\n { x: 0.0000029710000000002097, y: 0.5454138528011845 },\n { x: 0.0000029720000000002097, y: 0.5444944025437624 },\n { x: 0.00000297300000000021, y: 0.5286257810686109 },\n { x: 0.00000297400000000021, y: 0.5335532863301974 },\n { x: 0.00000297500000000021, y: 0.5292786379623816 },\n { x: 0.00000297600000000021, y: 0.516595821862428 },\n { x: 0.00000297700000000021, y: 0.4859324145829592 },\n { x: 0.00000297800000000021, y: 0.477941976665393 },\n { x: 0.0000029790000000002103, y: 0.47986034219660234 },\n { x: 0.0000029800000000002103, y: 0.5060507586110323 },\n { x: 0.0000029810000000002104, y: 0.4778975077271498 },\n { x: 0.0000029820000000002105, y: 0.4691837223074389 },\n { x: 0.0000029830000000002106, y: 0.5075898545995766 },\n { x: 0.0000029840000000002106, y: 0.48040006902527277 },\n { x: 0.0000029850000000002107, y: 0.5317976252175001 },\n { x: 0.0000029860000000002108, y: 0.47680761518300735 },\n { x: 0.000002987000000000211, y: 0.5224380218575002 },\n { x: 0.000002988000000000211, y: 0.5222136614842324 },\n { x: 0.000002989000000000211, y: 0.47389238552249097 },\n { x: 0.000002990000000000211, y: 0.4759162597189827 },\n { x: 0.000002991000000000211, y: 0.47912804901123773 },\n { x: 0.0000029920000000002112, y: 0.4588463479524858 },\n { x: 0.0000029930000000002113, y: 0.46526456215875195 },\n { x: 0.0000029940000000002114, y: 0.43082664205776344 },\n { x: 0.0000029950000000002115, y: 0.4801621072398747 },\n { x: 0.0000029960000000002115, y: 0.5003611506617719 },\n { x: 0.0000029970000000002116, y: 0.4831648614513115 },\n { x: 0.0000029980000000002117, y: 0.44195977831877975 },\n { x: 0.0000029990000000002118, y: 0.47500237700587694 },\n { x: 0.000003000000000000212, y: 0.4244825155255506 },\n { x: 0.000003001000000000212, y: 0.42755284866998156 },\n { x: 0.000003002000000000212, y: 0.4265718841461743 },\n { x: 0.000003003000000000212, y: 0.41928193320163487 },\n { x: 0.000003004000000000212, y: 0.44176186732101363 },\n { x: 0.000003005000000000212, y: 0.4164076866246498 },\n { x: 0.0000030060000000002123, y: 0.425678186355341 },\n { x: 0.0000030070000000002124, y: 0.4462372169845525 },\n { x: 0.0000030080000000002124, y: 0.39675661931254375 },\n { x: 0.0000030090000000002125, y: 0.3914044780508257 },\n { x: 0.0000030100000000002126, y: 0.40984744356451946 },\n { x: 0.0000030110000000002127, y: 0.452676165162442 },\n { x: 0.0000030120000000002127, y: 0.3958842444578926 },\n { x: 0.000003013000000000213, y: 0.43114323684229805 },\n { x: 0.000003014000000000213, y: 0.3859004752949258 },\n { x: 0.000003015000000000213, y: 0.4201885559702521 },\n { x: 0.000003016000000000213, y: 0.35320206431373663 },\n { x: 0.000003017000000000213, y: 0.3981953454814002 },\n { x: 0.000003018000000000213, y: 0.41164190173657245 },\n { x: 0.0000030190000000002133, y: 0.4227552980741416 },\n { x: 0.0000030200000000002133, y: 0.406813496279932 },\n { x: 0.0000030210000000002134, y: 0.3768096416917782 },\n { x: 0.0000030220000000002135, y: 0.3844141254178605 },\n { x: 0.0000030230000000002136, y: 0.4120649435874568 },\n { x: 0.0000030240000000002136, y: 0.3549973675704156 },\n { x: 0.0000030250000000002137, y: 0.3708898309822203 },\n { x: 0.0000030260000000002138, y: 0.3969391553780458 },\n { x: 0.000003027000000000214, y: 0.382377320147376 },\n { x: 0.000003028000000000214, y: 0.3300701749194839 },\n { x: 0.000003029000000000214, y: 0.3837147712648412 },\n { x: 0.000003030000000000214, y: 0.3403755084052608 },\n { x: 0.000003031000000000214, y: 0.3568162204362457 },\n { x: 0.0000030320000000002142, y: 0.3368821910534986 },\n { x: 0.0000030330000000002143, y: 0.34056802282976156 },\n { x: 0.0000030340000000002144, y: 0.366115653732448 },\n { x: 0.0000030350000000002145, y: 0.3572496096572387 },\n { x: 0.0000030360000000002145, y: 0.3646709559649993 },\n { x: 0.0000030370000000002146, y: 0.33690657991855305 },\n { x: 0.0000030380000000002147, y: 0.3154571049118399 },\n { x: 0.0000030390000000002148, y: 0.29966414252641754 },\n { x: 0.000003040000000000215, y: 0.3362027599470729 },\n { x: 0.000003041000000000215, y: 0.31900528983251136 },\n { x: 0.000003042000000000215, y: 0.28361854565106387 },\n { x: 0.000003043000000000215, y: 0.2846837575856401 },\n { x: 0.000003044000000000215, y: 0.35317431278448663 },\n { x: 0.0000030450000000002152, y: 0.34046490327067497 },\n { x: 0.0000030460000000002153, y: 0.30641420057902785 },\n { x: 0.0000030470000000002154, y: 0.33581770419394125 },\n { x: 0.0000030480000000002154, y: 0.2797312092284034 },\n { x: 0.0000030490000000002155, y: 0.31169218424863704 },\n { x: 0.0000030500000000002156, y: 0.3038207935241333 },\n { x: 0.0000030510000000002157, y: 0.31065702776559545 },\n { x: 0.0000030520000000002157, y: 0.2653983856317658 },\n { x: 0.000003053000000000216, y: 0.3160817165427984 },\n { x: 0.000003054000000000216, y: 0.2453988156782372 },\n { x: 0.000003055000000000216, y: 0.27364301833569293 },\n { x: 0.000003056000000000216, y: 0.28978325353957424 },\n { x: 0.000003057000000000216, y: 0.289429138374783 },\n { x: 0.000003058000000000216, y: 0.23388856311114992 },\n { x: 0.0000030590000000002163, y: 0.2625998887443979 },\n { x: 0.0000030600000000002163, y: 0.2550752269456489 },\n { x: 0.0000030610000000002164, y: 0.23716040829134868 },\n { x: 0.0000030620000000002165, y: 0.29067004616959263 },\n { x: 0.0000030630000000002166, y: 0.2545833654292316 },\n { x: 0.0000030640000000002166, y: 0.2785915493959754 },\n { x: 0.0000030650000000002167, y: 0.2594440596024477 },\n { x: 0.000003066000000000217, y: 0.2344098605281155 },\n { x: 0.000003067000000000217, y: 0.278049466724588 },\n { x: 0.000003068000000000217, y: 0.24142552610205575 },\n { x: 0.000003069000000000217, y: 0.22238654980395367 },\n { x: 0.000003070000000000217, y: 0.22484840033692724 },\n { x: 0.000003071000000000217, y: 0.25421372980977963 },\n { x: 0.0000030720000000002172, y: 0.1928002931157382 },\n { x: 0.0000030730000000002173, y: 0.20258772263072228 },\n { x: 0.0000030740000000002174, y: 0.19215242906985752 },\n { x: 0.0000030750000000002175, y: 0.22943751667200368 },\n { x: 0.0000030760000000002175, y: 0.22831532027045068 },\n { x: 0.0000030770000000002176, y: 0.2247274319007439 },\n { x: 0.0000030780000000002177, y: 0.2016165212043213 },\n { x: 0.0000030790000000002178, y: 0.19032976695301407 },\n { x: 0.000003080000000000218, y: 0.2217947058632726 },\n { x: 0.000003081000000000218, y: 0.16607318625043044 },\n { x: 0.000003082000000000218, y: 0.2145097898847822 },\n { x: 0.000003083000000000218, y: 0.18801612072921656 },\n { x: 0.000003084000000000218, y: 0.15364446770212092 },\n { x: 0.0000030850000000002182, y: 0.1725105958329209 },\n { x: 0.0000030860000000002183, y: 0.202508031742956 },\n { x: 0.0000030870000000002184, y: 0.16338077907630066 },\n { x: 0.0000030880000000002184, y: 0.20201724445617755 },\n { x: 0.0000030890000000002185, y: 0.1825555719353004 },\n { x: 0.0000030900000000002186, y: 0.13946235909936458 },\n { x: 0.0000030910000000002187, y: 0.19983230002089208 },\n { x: 0.0000030920000000002187, y: 0.1652563963940007 },\n { x: 0.000003093000000000219, y: 0.18850838876568207 },\n { x: 0.000003094000000000219, y: 0.15775721975836268 },\n { x: 0.000003095000000000219, y: 0.14748094851278684 },\n { x: 0.000003096000000000219, y: 0.14613755989528324 },\n { x: 0.000003097000000000219, y: 0.16243007746773336 },\n { x: 0.000003098000000000219, y: 0.11614392897373835 },\n { x: 0.0000030990000000002193, y: 0.17391857629837398 },\n { x: 0.0000031000000000002193, y: 0.16846458721919216 },\n { x: 0.0000031010000000002194, y: 0.11098314924543644 },\n { x: 0.0000031020000000002195, y: 0.12013235672924903 },\n { x: 0.0000031030000000002196, y: 0.15592045758735146 },\n { x: 0.0000031040000000002196, y: 0.113103604715051 },\n { x: 0.0000031050000000002197, y: 0.0867237665088789 },\n { x: 0.00000310600000000022, y: 0.14164331754798234 },\n { x: 0.00000310700000000022, y: 0.1018105913832894 },\n { x: 0.00000310800000000022, y: 0.08423680859228798 },\n { x: 0.00000310900000000022, y: 0.1279367232241345 },\n { x: 0.00000311000000000022, y: 0.13631131677937594 },\n { x: 0.00000311100000000022, y: 0.07196775478411119 },\n { x: 0.0000031120000000002202, y: 0.08182340242199586 },\n { x: 0.0000031130000000002203, y: 0.12444093968135209 },\n { x: 0.0000031140000000002204, y: 0.0618410973485449 },\n { x: 0.0000031150000000002205, y: 0.048277954160244614 },\n { x: 0.0000031160000000002205, y: 0.10348031539114594 },\n { x: 0.0000031170000000002206, y: 0.0745442289465314 },\n { x: 0.0000031180000000002207, y: 0.0928040707381595 },\n { x: 0.0000031190000000002208, y: 0.046277708687501945 },\n { x: 0.000003120000000000221, y: 0.036817760413822995 },\n { x: 0.000003121000000000221, y: 0.08695253367671232 },\n { x: 0.000003122000000000221, y: 0.0537961620201841 },\n { x: 0.000003123000000000221, y: 0.024145482030201747 },\n { x: 0.000003124000000000221, y: 0.07338781921525296 },\n { x: 0.0000031250000000002212, y: 0.04330730800186565 },\n { x: 0.0000031260000000002213, y: 0.080496789266035 },\n { x: 0.0000031270000000002214, y: 0.06582864789115775 },\n { x: 0.0000031280000000002215, y: 0.07159475266312759 },\n { x: 0.0000031290000000002215, y: 0.023615505076275092 },\n { x: 0.0000031300000000002216, y: 0.016119445946327686 },\n { x: 0.0000031310000000002217, y: 0.02547184777855657 },\n { x: 0.0000031320000000002218, y: 0.008070974411649744 },\n { x: 0.000003133000000000222, y: 0.004521425242816637 },\n { x: 0.000003134000000000222, y: -0.013867774518376393 },\n { x: 0.000003135000000000222, y: -0.008258604704503274 },\n { x: 0.000003136000000000222, y: 0.019756518011564528 },\n { x: 0.000003137000000000222, y: 0.05038942016178094 },\n { x: 0.000003138000000000222, y: 0.003561422443045455 },\n { x: 0.0000031390000000002223, y: -0.01607364358614714 },\n { x: 0.0000031400000000002224, y: 0.011048160535796086 },\n { x: 0.0000031410000000002224, y: 0.036217591204177134 },\n { x: 0.0000031420000000002225, y: -0.025929114482559707 },\n { x: 0.0000031430000000002226, y: 0.012088845376476424 },\n { x: 0.0000031440000000002227, y: -0.007841197225508486 },\n { x: 0.0000031450000000002227, y: -0.04765121447935222 },\n { x: 0.000003146000000000223, y: -0.029045177792323792 },\n { x: 0.000003147000000000223, y: -0.0163386052260965 },\n { x: 0.000003148000000000223, y: -0.0178068154921195 },\n { x: 0.000003149000000000223, y: -0.007577665339170293 },\n { x: 0.000003150000000000223, y: -0.007326213493127887 },\n { x: 0.000003151000000000223, y: 0.0011282456736075239 },\n { x: 0.0000031520000000002233, y: 0.002399233538437559 },\n { x: 0.0000031530000000002233, y: -0.006291535141147612 },\n { x: 0.0000031540000000002234, y: -0.0421436779611103 },\n { x: 0.0000031550000000002235, y: -0.006046438340959581 },\n { x: 0.0000031560000000002236, y: -0.03597101074862402 },\n { x: 0.0000031570000000002236, y: -0.04776129862803823 },\n { x: 0.0000031580000000002237, y: -0.060324307299293806 },\n { x: 0.0000031590000000002238, y: -0.018506424829098006 },\n { x: 0.000003160000000000224, y: -0.032096243208094975 },\n { x: 0.000003161000000000224, y: -0.053102077048914176 },\n { x: 0.000003162000000000224, y: -0.03461389170152358 },\n { x: 0.000003163000000000224, y: -0.08464352030781938 },\n { x: 0.000003164000000000224, y: -0.08792258285212184 },\n { x: 0.0000031650000000002242, y: -0.07262222209721945 },\n { x: 0.0000031660000000002243, y: -0.07251984658163221 },\n { x: 0.0000031670000000002244, y: -0.07781332517361249 },\n { x: 0.0000031680000000002245, y: -0.061821279456793665 },\n { x: 0.0000031690000000002245, y: -0.09001150305994736 },\n { x: 0.0000031700000000002246, y: -0.09825695025331492 },\n { x: 0.0000031710000000002247, y: -0.07868441470995279 },\n { x: 0.0000031720000000002248, y: -0.069302611157724 },\n { x: 0.000003173000000000225, y: -0.09709571531145915 },\n { x: 0.000003174000000000225, y: -0.112223450186691 },\n { x: 0.000003175000000000225, y: -0.10558021348087042 },\n { x: 0.000003176000000000225, y: -0.11338631420887024 },\n { x: 0.000003177000000000225, y: -0.10723865185474873 },\n { x: 0.000003178000000000225, y: -0.1178664527555659 },\n { x: 0.0000031790000000002253, y: -0.12841569597506372 },\n { x: 0.0000031800000000002254, y: -0.10505018771706184 },\n { x: 0.0000031810000000002254, y: -0.11819145667385055 },\n { x: 0.0000031820000000002255, y: -0.10513848579865771 },\n { x: 0.0000031830000000002256, y: -0.09629801219207604 },\n { x: 0.0000031840000000002257, y: -0.11920849849795624 },\n { x: 0.0000031850000000002257, y: -0.11432382067114388 },\n { x: 0.000003186000000000226, y: -0.17158180299775455 },\n { x: 0.000003187000000000226, y: -0.14631068979621983 },\n { x: 0.000003188000000000226, y: -0.14270220554174176 },\n { x: 0.000003189000000000226, y: -0.10869801972527274 },\n { x: 0.000003190000000000226, y: -0.11965933142540354 },\n { x: 0.000003191000000000226, y: -0.14328080467863588 },\n { x: 0.0000031920000000002263, y: -0.13703113271202907 },\n { x: 0.0000031930000000002263, y: -0.14955609660598396 },\n { x: 0.0000031940000000002264, y: -0.12958856676034555 },\n { x: 0.0000031950000000002265, y: -0.17636690253678883 },\n { x: 0.0000031960000000002266, y: -0.1957297799135637 },\n { x: 0.0000031970000000002266, y: -0.1328556618146467 },\n { x: 0.0000031980000000002267, y: -0.20238190689265145 },\n { x: 0.0000031990000000002268, y: -0.19986361088632915 },\n { x: 0.000003200000000000227, y: -0.15245731354563163 },\n { x: 0.000003201000000000227, y: -0.18309185171994816 },\n { x: 0.000003202000000000227, y: -0.15592967224768 },\n { x: 0.000003203000000000227, y: -0.1833397941682141 },\n { x: 0.000003204000000000227, y: -0.14848274561176203 },\n { x: 0.0000032050000000002272, y: -0.21293252990119588 },\n { x: 0.0000032060000000002273, y: -0.20670089846435358 },\n { x: 0.0000032070000000002274, y: -0.2250640988538285 },\n { x: 0.0000032080000000002275, y: -0.18063215680097144 },\n { x: 0.0000032090000000002275, y: -0.19657189098040953 },\n { x: 0.0000032100000000002276, y: -0.1825096349941638 },\n { x: 0.0000032110000000002277, y: -0.22987309390072364 },\n { x: 0.0000032120000000002278, y: -0.1727401626466551 },\n { x: 0.000003213000000000228, y: -0.2032694780972531 },\n { x: 0.000003214000000000228, y: -0.22349687504640525 },\n { x: 0.000003215000000000228, y: -0.21559768469535429 },\n { x: 0.000003216000000000228, y: -0.20044419893195242 },\n { x: 0.000003217000000000228, y: -0.22494299668589535 },\n { x: 0.0000032180000000002282, y: -0.19810179838688674 },\n { x: 0.0000032190000000002283, y: -0.2065850147813204 },\n { x: 0.0000032200000000002284, y: -0.263883990696103 },\n { x: 0.0000032210000000002284, y: -0.19668290494141746 },\n { x: 0.0000032220000000002285, y: -0.23766348863440098 },\n { x: 0.0000032230000000002286, y: -0.23929596781323995 },\n { x: 0.0000032240000000002287, y: -0.2628584084615896 },\n { x: 0.0000032250000000002287, y: -0.23019862167073676 },\n { x: 0.000003226000000000229, y: -0.20962296928612104 },\n { x: 0.000003227000000000229, y: -0.2402771797941383 },\n { x: 0.000003228000000000229, y: -0.23453381220240455 },\n { x: 0.000003229000000000229, y: -0.21835872143803414 },\n { x: 0.000003230000000000229, y: -0.24320153679802786 },\n { x: 0.000003231000000000229, y: -0.21995426407035332 },\n { x: 0.0000032320000000002293, y: -0.23317596411649277 },\n { x: 0.0000032330000000002293, y: -0.24335524815207946 },\n { x: 0.0000032340000000002294, y: -0.2575702837710187 },\n { x: 0.0000032350000000002295, y: -0.24750473097698494 },\n { x: 0.0000032360000000002296, y: -0.26549117799091665 },\n { x: 0.0000032370000000002296, y: -0.3005802998467446 },\n { x: 0.0000032380000000002297, y: -0.2560173130055039 },\n { x: 0.00000323900000000023, y: -0.26255952415041833 },\n { x: 0.00000324000000000023, y: -0.26787977321275974 },\n { x: 0.00000324100000000023, y: -0.3128612839672932 },\n { x: 0.00000324200000000023, y: -0.25363439741186045 },\n { x: 0.00000324300000000023, y: -0.2681249756672638 },\n { x: 0.00000324400000000023, y: -0.28766066198157186 },\n { x: 0.0000032450000000002302, y: -0.31026900725854684 },\n { x: 0.0000032460000000002303, y: -0.26197857745283765 },\n { x: 0.0000032470000000002304, y: -0.28605978731504556 },\n { x: 0.0000032480000000002305, y: -0.2757398766915066 },\n { x: 0.0000032490000000002305, y: -0.2940890564747056 },\n { x: 0.0000032500000000002306, y: -0.30220323602330446 },\n { x: 0.0000032510000000002307, y: -0.31187971075659926 },\n { x: 0.0000032520000000002308, y: -0.2711151105613403 },\n { x: 0.000003253000000000231, y: -0.2819339857522497 },\n { x: 0.000003254000000000231, y: -0.320950666299713 },\n { x: 0.000003255000000000231, y: -0.3011302478983241 },\n { x: 0.000003256000000000231, y: -0.30392750928871703 },\n { x: 0.000003257000000000231, y: -0.3066540546928292 },\n { x: 0.0000032580000000002312, y: -0.28315074253011896 },\n { x: 0.0000032590000000002313, y: -0.3446284481543926 },\n { x: 0.0000032600000000002314, y: -0.33369180319692887 },\n { x: 0.0000032610000000002314, y: -0.35171585021294194 },\n { x: 0.0000032620000000002315, y: -0.35587190183813217 },\n { x: 0.0000032630000000002316, y: -0.3551912691799734 },\n { x: 0.0000032640000000002317, y: -0.3047312489526631 },\n { x: 0.0000032650000000002317, y: -0.3695141056737187 },\n { x: 0.000003266000000000232, y: -0.29773854277882816 },\n { x: 0.000003267000000000232, y: -0.3234624836000543 },\n { x: 0.000003268000000000232, y: -0.31303395251938476 },\n { x: 0.000003269000000000232, y: -0.3094279994146796 },\n { x: 0.000003270000000000232, y: -0.3078721814054921 },\n { x: 0.000003271000000000232, y: -0.3644995182120665 },\n { x: 0.0000032720000000002323, y: -0.32052497644139016 },\n { x: 0.0000032730000000002323, y: -0.3612296918116466 },\n { x: 0.0000032740000000002324, y: -0.3845514084133653 },\n { x: 0.0000032750000000002325, y: -0.3352647633035219 },\n { x: 0.0000032760000000002326, y: -0.38629194706877706 },\n { x: 0.0000032770000000002326, y: -0.33646038849190724 },\n { x: 0.0000032780000000002327, y: -0.33771439821716404 },\n { x: 0.000003279000000000233, y: -0.3625537403021551 },\n { x: 0.000003280000000000233, y: -0.3597311040206693 },\n { x: 0.000003281000000000233, y: -0.39072950317698646 },\n { x: 0.000003282000000000233, y: -0.39623566299201884 },\n { x: 0.000003283000000000233, y: -0.38215208143277896 },\n { x: 0.000003284000000000233, y: -0.3917836292581149 },\n { x: 0.0000032850000000002332, y: -0.36567290155416365 },\n { x: 0.0000032860000000002333, y: -0.3861388181125698 },\n { x: 0.0000032870000000002334, y: -0.3523647937978871 },\n { x: 0.0000032880000000002335, y: -0.3805280394428058 },\n { x: 0.0000032890000000002335, y: -0.3601980786089182 },\n { x: 0.0000032900000000002336, y: -0.4069788986463119 },\n { x: 0.0000032910000000002337, y: -0.3785712104587992 },\n { x: 0.0000032920000000002338, y: -0.39830714084951396 },\n { x: 0.000003293000000000234, y: -0.36558462711917594 },\n { x: 0.000003294000000000234, y: -0.37060109999113494 },\n { x: 0.000003295000000000234, y: -0.39075817549185976 },\n { x: 0.000003296000000000234, y: -0.4098639912715285 },\n { x: 0.000003297000000000234, y: -0.42514301238466623 },\n { x: 0.0000032980000000002342, y: -0.41381132713806307 },\n { x: 0.0000032990000000002343, y: -0.3940111248717238 },\n { x: 0.0000033000000000002344, y: -0.3656879597311707 },\n { x: 0.0000033010000000002344, y: -0.39988472434384853 },\n { x: 0.0000033020000000002345, y: -0.3843851746879992 },\n { x: 0.0000033030000000002346, y: -0.4139074208607734 },\n { x: 0.0000033040000000002347, y: -0.43210466402937187 },\n { x: 0.0000033050000000002347, y: -0.4270867612755586 },\n { x: 0.000003306000000000235, y: -0.38795782943102686 },\n { x: 0.000003307000000000235, y: -0.44407180305114 },\n { x: 0.000003308000000000235, y: -0.39236277165585937 },\n { x: 0.000003309000000000235, y: -0.40936804930321896 },\n { x: 0.000003310000000000235, y: -0.4533937391137786 },\n { x: 0.000003311000000000235, y: -0.4457371309648657 },\n { x: 0.0000033120000000002353, y: -0.4518031233377471 },\n { x: 0.0000033130000000002353, y: -0.39121414235564894 },\n { x: 0.0000033140000000002354, y: -0.41304048490929246 },\n { x: 0.0000033150000000002355, y: -0.42432168322533526 },\n { x: 0.0000033160000000002356, y: -0.4190628299984415 },\n { x: 0.0000033170000000002357, y: -0.42603303616051974 },\n { x: 0.0000033180000000002357, y: -0.40321975394738696 },\n { x: 0.000003319000000000236, y: -0.458900665567852 },\n { x: 0.000003320000000000236, y: -0.4465875197416527 },\n { x: 0.000003321000000000236, y: -0.4319538881855717 },\n { x: 0.000003322000000000236, y: -0.4012601474818814 },\n { x: 0.000003323000000000236, y: -0.46349198131654906 },\n { x: 0.000003324000000000236, y: -0.40260077434299296 },\n { x: 0.0000033250000000002363, y: -0.41759161301765846 },\n { x: 0.0000033260000000002363, y: -0.4564701345365595 },\n { x: 0.0000033270000000002364, y: -0.42929664513164184 },\n { x: 0.0000033280000000002365, y: -0.44934059186737174 },\n { x: 0.0000033290000000002366, y: -0.40992085894860364 },\n { x: 0.0000033300000000002366, y: -0.45899672179313145 },\n { x: 0.0000033310000000002367, y: -0.46187235042490177 },\n { x: 0.0000033320000000002368, y: -0.4359261883539441 },\n { x: 0.000003333000000000237, y: -0.4552694730507883 },\n { x: 0.000003334000000000237, y: -0.46914201535026984 },\n { x: 0.000003335000000000237, y: -0.4506924755248122 },\n { x: 0.000003336000000000237, y: -0.4230892515715711 },\n { x: 0.000003337000000000237, y: -0.43896077663713096 },\n { x: 0.0000033380000000002372, y: -0.44355802269292366 },\n { x: 0.0000033390000000002373, y: -0.41985931681295474 },\n { x: 0.0000033400000000002374, y: -0.42487617145748297 },\n { x: 0.0000033410000000002375, y: -0.4906351271915709 },\n { x: 0.0000033420000000002375, y: -0.4322946262621722 },\n { x: 0.0000033430000000002376, y: -0.4392522710798343 },\n { x: 0.0000033440000000002377, y: -0.48224643296253833 },\n { x: 0.0000033450000000002378, y: -0.4445783971653301 },\n { x: 0.000003346000000000238, y: -0.47998888745389084 },\n { x: 0.000003347000000000238, y: -0.48352992227983355 },\n { x: 0.000003348000000000238, y: -0.4776838334682925 },\n { x: 0.000003349000000000238, y: -0.46020099686273125 },\n { x: 0.000003350000000000238, y: -0.4889175344431014 },\n { x: 0.000003351000000000238, y: -0.5080130640643018 },\n { x: 0.0000033520000000002383, y: -0.4570187752743036 },\n { x: 0.0000033530000000002384, y: -0.44019251394662606 },\n { x: 0.0000033540000000002384, y: -0.48940086737649385 },\n { x: 0.0000033550000000002385, y: -0.5042097214121938 },\n { x: 0.0000033560000000002386, y: -0.4592499172029625 },\n { x: 0.0000033570000000002387, y: -0.48132900169488396 },\n { x: 0.0000033580000000002387, y: -0.47273307843874096 },\n { x: 0.000003359000000000239, y: -0.47338698808537516 },\n { x: 0.000003360000000000239, y: -0.47596175388950285 },\n { x: 0.000003361000000000239, y: -0.4491708936328956 },\n { x: 0.000003362000000000239, y: -0.4880457437460077 },\n { x: 0.000003363000000000239, y: -0.4699143829924888 },\n { x: 0.000003364000000000239, y: -0.48143039502553003 },\n { x: 0.0000033650000000002393, y: -0.4995556689188391 },\n { x: 0.0000033660000000002393, y: -0.5028351419291084 },\n { x: 0.0000033670000000002394, y: -0.45841223340669646 },\n { x: 0.0000033680000000002395, y: -0.4651918188206114 },\n { x: 0.0000033690000000002396, y: -0.5162724889876089 },\n { x: 0.0000033700000000002396, y: -0.5039806482194678 },\n { x: 0.0000033710000000002397, y: -0.48341429460868873 },\n { x: 0.0000033720000000002398, y: -0.4853878765314375 },\n { x: 0.00000337300000000024, y: -0.4851549312033639 },\n { x: 0.00000337400000000024, y: -0.48846185523069485 },\n { x: 0.00000337500000000024, y: -0.5265970638481733 },\n { x: 0.00000337600000000024, y: -0.4663972157548419 },\n { x: 0.00000337700000000024, y: -0.47227015825980817 },\n { x: 0.0000033780000000002402, y: -0.48303384495975865 },\n { x: 0.0000033790000000002403, y: -0.4617097551322422 },\n { x: 0.0000033800000000002404, y: -0.46327308251596017 },\n { x: 0.0000033810000000002405, y: -0.5323201871797948 },\n { x: 0.0000033820000000002405, y: -0.48123870037568717 },\n { x: 0.0000033830000000002406, y: -0.4698039281641798 },\n { x: 0.0000033840000000002407, y: -0.4678571682602047 },\n { x: 0.0000033850000000002408, y: -0.497385865650122 },\n { x: 0.000003386000000000241, y: -0.4620324985512965 },\n { x: 0.000003387000000000241, y: -0.4945356794423756 },\n { x: 0.000003388000000000241, y: -0.5046073428147386 },\n { x: 0.000003389000000000241, y: -0.5208774151540554 },\n { x: 0.000003390000000000241, y: -0.46267487501891547 },\n { x: 0.000003391000000000241, y: -0.5130503052074072 },\n { x: 0.0000033920000000002413, y: -0.46667050386247094 },\n { x: 0.0000033930000000002414, y: -0.5121424223169877 },\n { x: 0.0000033940000000002414, y: -0.5356740779090764 },\n { x: 0.0000033950000000002415, y: -0.49574614119425703 },\n { x: 0.0000033960000000002416, y: -0.5200768662370949 },\n { x: 0.0000033970000000002417, y: -0.47816794007455543 },\n { x: 0.0000033980000000002417, y: -0.48187589039332557 },\n { x: 0.000003399000000000242, y: -0.4895635602555801 },\n { x: 0.000003400000000000242, y: -0.4708707234203284 },\n { x: 0.000003401000000000242, y: -0.48662368910263176 },\n { x: 0.000003402000000000242, y: -0.4737487090341167 },\n { x: 0.000003403000000000242, y: -0.5359646637329821 },\n { x: 0.000003404000000000242, y: -0.5010467308251905 },\n { x: 0.0000034050000000002423, y: -0.5430969129956867 },\n { x: 0.0000034060000000002423, y: -0.5217820996677304 },\n { x: 0.0000034070000000002424, y: -0.46803470881806003 },\n { x: 0.0000034080000000002425, y: -0.5092035959067122 },\n { x: 0.0000034090000000002426, y: -0.5324984696629461 },\n { x: 0.0000034100000000002426, y: -0.47356140853013473 },\n { x: 0.0000034110000000002427, y: -0.4699484150184648 },\n { x: 0.0000034120000000002428, y: -0.5061056341797864 },\n { x: 0.000003413000000000243, y: -0.5220315411680886 },\n { x: 0.000003414000000000243, y: -0.5344556708890145 },\n { x: 0.000003415000000000243, y: -0.5105210568076236 },\n { x: 0.000003416000000000243, y: -0.5058322289759033 },\n { x: 0.000003417000000000243, y: -0.4749915890034718 },\n { x: 0.0000034180000000002432, y: -0.4830163408410244 },\n { x: 0.0000034190000000002433, y: -0.500120757881822 },\n { x: 0.0000034200000000002434, y: -0.5183813308321358 },\n { x: 0.0000034210000000002435, y: -0.5083635160491194 },\n { x: 0.0000034220000000002435, y: -0.5111336946392137 },\n { x: 0.0000034230000000002436, y: -0.5216465973073167 },\n { x: 0.0000034240000000002437, y: -0.4725649568070156 },\n { x: 0.0000034250000000002438, y: -0.4820619153910591 },\n { x: 0.000003426000000000244, y: -0.48346102957121456 },\n { x: 0.000003427000000000244, y: -0.4892946731753036 },\n { x: 0.000003428000000000244, y: -0.5450338605682216 },\n { x: 0.000003429000000000244, y: -0.48959027268535804 },\n { x: 0.000003430000000000244, y: -0.50472994888099 },\n { x: 0.0000034310000000002442, y: -0.5135689790534533 },\n { x: 0.0000034320000000002443, y: -0.4728151076186395 },\n { x: 0.0000034330000000002444, y: -0.5031203456151376 },\n { x: 0.0000034340000000002444, y: -0.5120911610624209 },\n { x: 0.0000034350000000002445, y: -0.51298601836823 },\n { x: 0.0000034360000000002446, y: -0.481967249319706 },\n { x: 0.0000034370000000002447, y: -0.5133655741441281 },\n { x: 0.0000034380000000002447, y: -0.49720719887826503 },\n { x: 0.000003439000000000245, y: -0.49778833678371104 },\n { x: 0.000003440000000000245, y: -0.5035301219618319 },\n { x: 0.000003441000000000245, y: -0.4857897399439753 },\n { x: 0.000003442000000000245, y: -0.5433254539273844 },\n { x: 0.000003443000000000245, y: -0.47332055408714946 },\n { x: 0.000003444000000000245, y: -0.49267424280923644 },\n { x: 0.0000034450000000002453, y: -0.48890168449127547 },\n { x: 0.0000034460000000002453, y: -0.5256139383265327 },\n { x: 0.0000034470000000002454, y: -0.49984946873105185 },\n { x: 0.0000034480000000002455, y: -0.47658034946026606 },\n { x: 0.0000034490000000002456, y: -0.4812121899614879 },\n { x: 0.0000034500000000002456, y: -0.5246701603561381 },\n { x: 0.0000034510000000002457, y: -0.48245242932259336 },\n { x: 0.000003452000000000246, y: -0.5104302529328206 },\n { x: 0.000003453000000000246, y: -0.5279744240133445 },\n { x: 0.000003454000000000246, y: -0.53868042739691 },\n { x: 0.000003455000000000246, y: -0.5124553082017602 },\n { x: 0.000003456000000000246, y: -0.5055019346625338 },\n { x: 0.000003457000000000246, y: -0.48255370881578524 },\n { x: 0.0000034580000000002462, y: -0.477159364636299 },\n { x: 0.0000034590000000002463, y: -0.5092100952193521 },\n { x: 0.0000034600000000002464, y: -0.46933562982000465 },\n { x: 0.0000034610000000002465, y: -0.48304966980503167 },\n { x: 0.0000034620000000002465, y: -0.5386474112103674 },\n { x: 0.0000034630000000002466, y: -0.47739558950233807 },\n { x: 0.0000034640000000002467, y: -0.5238820088670073 },\n { x: 0.0000034650000000002468, y: -0.5032957578884067 },\n { x: 0.000003466000000000247, y: -0.5133049718659941 },\n { x: 0.000003467000000000247, y: -0.46391888156022615 },\n { x: 0.000003468000000000247, y: -0.5260654126593264 },\n { x: 0.000003469000000000247, y: -0.47342561988462284 },\n { x: 0.000003470000000000247, y: -0.532666635371735 },\n { x: 0.0000034710000000002472, y: -0.4928412794931368 },\n { x: 0.0000034720000000002473, y: -0.4881621009023802 },\n { x: 0.0000034730000000002474, y: -0.48056713580290095 },\n { x: 0.0000034740000000002474, y: -0.5278160091834466 },\n { x: 0.0000034750000000002475, y: -0.5265244163484548 },\n { x: 0.0000034760000000002476, y: -0.5120194064018518 },\n { x: 0.0000034770000000002477, y: -0.48062304036662823 },\n { x: 0.0000034780000000002477, y: -0.4951684941951898 },\n { x: 0.000003479000000000248, y: -0.46300134956831474 },\n { x: 0.000003480000000000248, y: -0.4936239389524993 },\n { x: 0.000003481000000000248, y: -0.5282890262751992 },\n { x: 0.000003482000000000248, y: -0.4927372239091787 },\n { x: 0.000003483000000000248, y: -0.45963135150194434 },\n { x: 0.000003484000000000248, y: -0.4799386086758681 },\n { x: 0.0000034850000000002483, y: -0.4741355191067588 },\n { x: 0.0000034860000000002483, y: -0.5056293345535302 },\n { x: 0.0000034870000000002484, y: -0.46620443716361404 },\n { x: 0.0000034880000000002485, y: -0.48545971890883177 },\n { x: 0.0000034890000000002486, y: -0.46527067363364866 },\n { x: 0.0000034900000000002486, y: -0.4831903162716123 },\n { x: 0.0000034910000000002487, y: -0.44715006433764426 },\n { x: 0.000003492000000000249, y: -0.44918297891699044 },\n { x: 0.000003493000000000249, y: -0.5028049864953128 },\n { x: 0.000003494000000000249, y: -0.47481660347534466 },\n { x: 0.000003495000000000249, y: -0.4585100146196142 },\n { x: 0.000003496000000000249, y: -0.5007301933732508 },\n { x: 0.000003497000000000249, y: -0.49530624110010585 },\n { x: 0.0000034980000000002492, y: -0.4886066863321506 },\n { x: 0.0000034990000000002493, y: -0.46181468369258627 },\n { x: 0.0000035000000000002494, y: -0.4414797612982536 },\n { x: 0.0000035010000000002495, y: -0.48761326669803884 },\n { x: 0.0000035020000000002495, y: -0.45523858038352677 },\n { x: 0.0000035030000000002496, y: -0.48751556058423334 },\n { x: 0.0000035040000000002497, y: -0.47293139780081983 },\n { x: 0.0000035050000000002498, y: -0.4727365413504359 },\n { x: 0.00000350600000000025, y: -0.494384143450404 },\n { x: 0.00000350700000000025, y: -0.5020347011411954 },\n { x: 0.00000350800000000025, y: -0.4854032546445812 },\n { x: 0.00000350900000000025, y: -0.4378126710250092 },\n { x: 0.00000351000000000025, y: -0.4870794009111852 },\n { x: 0.0000035110000000002502, y: -0.4421357932399356 },\n { x: 0.0000035120000000002503, y: -0.4407106811481119 },\n { x: 0.0000035130000000002504, y: -0.43705624681269606 },\n { x: 0.0000035140000000002505, y: -0.47823457672802244 },\n { x: 0.0000035150000000002505, y: -0.44238240809045537 },\n { x: 0.0000035160000000002506, y: -0.4954458579680961 },\n { x: 0.0000035170000000002507, y: -0.48700039320880223 },\n { x: 0.0000035180000000002508, y: -0.4418755065564143 },\n { x: 0.000003519000000000251, y: -0.48374262136466056 },\n { x: 0.000003520000000000251, y: -0.42831307036376315 },\n { x: 0.000003521000000000251, y: -0.4931125632016287 },\n { x: 0.000003522000000000251, y: -0.42298332736388555 },\n { x: 0.000003523000000000251, y: -0.41921811446590773 },\n { x: 0.000003524000000000251, y: -0.4443428252129152 },\n { x: 0.0000035250000000002513, y: -0.4275281969079634 },\n { x: 0.0000035260000000002514, y: -0.4216176969865052 },\n { x: 0.0000035270000000002514, y: -0.47657910850479945 },\n { x: 0.0000035280000000002515, y: -0.48414135220180166 },\n { x: 0.0000035290000000002516, y: -0.4224316935851882 },\n { x: 0.0000035300000000002517, y: -0.4340089251878088 },\n { x: 0.0000035310000000002517, y: -0.45696771258156077 },\n { x: 0.000003532000000000252, y: -0.4723654128481427 },\n { x: 0.000003533000000000252, y: -0.4250142480003609 },\n { x: 0.000003534000000000252, y: -0.46463966171388654 },\n { x: 0.000003535000000000252, y: -0.4642531239227323 },\n { x: 0.000003536000000000252, y: -0.4227637029382053 },\n { x: 0.000003537000000000252, y: -0.41372880806107465 },\n { x: 0.0000035380000000002523, y: -0.42003325226386423 },\n { x: 0.0000035390000000002523, y: -0.43369314130179293 },\n { x: 0.0000035400000000002524, y: -0.4464395469045033 },\n { x: 0.0000035410000000002525, y: -0.43744871583252454 },\n { x: 0.0000035420000000002526, y: -0.4045531914155711 },\n { x: 0.0000035430000000002526, y: -0.417723569708116 },\n { x: 0.0000035440000000002527, y: -0.42307309466591725 },\n { x: 0.0000035450000000002528, y: -0.43096106808602325 },\n { x: 0.000003546000000000253, y: -0.4384196413078245 },\n { x: 0.000003547000000000253, y: -0.4094897236894357 },\n { x: 0.000003548000000000253, y: -0.40827562283307 },\n { x: 0.000003549000000000253, y: -0.43892307840916434 },\n { x: 0.000003550000000000253, y: -0.4495668105210173 },\n { x: 0.0000035510000000002532, y: -0.4437937572875227 },\n { x: 0.0000035520000000002533, y: -0.44101229955160387 },\n { x: 0.0000035530000000002534, y: -0.414484788430339 },\n { x: 0.0000035540000000002535, y: -0.4207343911274903 },\n { x: 0.0000035550000000002535, y: -0.41017657922288625 },\n { x: 0.0000035560000000002536, y: -0.40033580209028563 },\n { x: 0.0000035570000000002537, y: -0.43270020968328615 },\n { x: 0.0000035580000000002538, y: -0.3957656045788688 },\n { x: 0.000003559000000000254, y: -0.4086050468784142 },\n { x: 0.000003560000000000254, y: -0.38708944896985537 },\n { x: 0.000003561000000000254, y: -0.3778883059082055 },\n { x: 0.000003562000000000254, y: -0.41155123943530275 },\n { x: 0.000003563000000000254, y: -0.4201518677611237 },\n { x: 0.000003564000000000254, y: -0.411451642593377 },\n { x: 0.0000035650000000002543, y: -0.40073518374551265 },\n { x: 0.0000035660000000002544, y: -0.38463669291867275 },\n { x: 0.0000035670000000002544, y: -0.36792649443565906 },\n { x: 0.0000035680000000002545, y: -0.37121912023541276 },\n { x: 0.0000035690000000002546, y: -0.3780521088974908 },\n { x: 0.0000035700000000002547, y: -0.41922496455085995 },\n { x: 0.0000035710000000002547, y: -0.3598788971001736 },\n { x: 0.000003572000000000255, y: -0.3576593851382572 },\n { x: 0.000003573000000000255, y: -0.37838148784026215 },\n { x: 0.000003574000000000255, y: -0.39305476937277106 },\n { x: 0.000003575000000000255, y: -0.3692740279028207 },\n { x: 0.000003576000000000255, y: -0.3524498339546062 },\n { x: 0.000003577000000000255, y: -0.3607024972073173 },\n { x: 0.0000035780000000002553, y: -0.34694233262463503 },\n { x: 0.0000035790000000002553, y: -0.4030693051818707 },\n { x: 0.0000035800000000002554, y: -0.34855468096083875 },\n { x: 0.0000035810000000002555, y: -0.4111570819537663 },\n { x: 0.0000035820000000002556, y: -0.3827894007463801 },\n { x: 0.0000035830000000002556, y: -0.36248214901864145 },\n { x: 0.0000035840000000002557, y: -0.39250965308524993 },\n { x: 0.0000035850000000002558, y: -0.33866768369186984 },\n { x: 0.000003586000000000256, y: -0.36670883733409976 },\n { x: 0.000003587000000000256, y: -0.38529160309611027 },\n { x: 0.000003588000000000256, y: -0.3694312142353537 },\n { x: 0.000003589000000000256, y: -0.3588401829077657 },\n { x: 0.000003590000000000256, y: -0.37426738167768786 },\n { x: 0.0000035910000000002562, y: -0.3298212056752513 },\n { x: 0.0000035920000000002563, y: -0.3721072097648827 },\n { x: 0.0000035930000000002564, y: -0.33561113826302136 },\n { x: 0.0000035940000000002565, y: -0.3402560732496043 },\n { x: 0.0000035950000000002565, y: -0.32990161610473756 },\n { x: 0.0000035960000000002566, y: -0.3359725140646908 },\n { x: 0.0000035970000000002567, y: -0.3329339805505544 },\n { x: 0.0000035980000000002568, y: -0.35354569369080197 },\n { x: 0.000003599000000000257, y: -0.3685534624418669 },\n { x: 0.000003600000000000257, y: -0.32619655000741493 },\n { x: 0.000003601000000000257, y: -0.31579671439314805 },\n { x: 0.000003602000000000257, y: -0.3546636311581846 },\n { x: 0.000003603000000000257, y: -0.34935332915164097 },\n { x: 0.0000036040000000002572, y: -0.30638394515008566 },\n { x: 0.0000036050000000002573, y: -0.34564983882546896 },\n { x: 0.0000036060000000002574, y: -0.3075908962299332 },\n { x: 0.0000036070000000002574, y: -0.3482621030863398 },\n { x: 0.0000036080000000002575, y: -0.32401141902757324 },\n { x: 0.0000036090000000002576, y: -0.32210123078909003 },\n { x: 0.0000036100000000002577, y: -0.3601064861979281 },\n { x: 0.0000036110000000002577, y: -0.35994246540699526 },\n { x: 0.000003612000000000258, y: -0.31026024721790463 },\n { x: 0.000003613000000000258, y: -0.3468661461519508 },\n { x: 0.000003614000000000258, y: -0.34696531869246944 },\n { x: 0.000003615000000000258, y: -0.2939104035331667 },\n { x: 0.000003616000000000258, y: -0.29927713591841876 },\n { x: 0.000003617000000000258, y: -0.2978802850986503 },\n { x: 0.0000036180000000002583, y: -0.32739006619406275 },\n { x: 0.0000036190000000002583, y: -0.3432618211548486 },\n { x: 0.0000036200000000002584, y: -0.32962241289739336 },\n { x: 0.0000036210000000002585, y: -0.333000396896873 },\n { x: 0.0000036220000000002586, y: -0.27187342488646077 },\n { x: 0.0000036230000000002586, y: -0.32310677145593636 },\n { x: 0.0000036240000000002587, y: -0.31138243406721333 },\n { x: 0.000003625000000000259, y: -0.2781419232513508 },\n { x: 0.000003626000000000259, y: -0.32534764665539856 },\n { x: 0.000003627000000000259, y: -0.2887942310638763 },\n { x: 0.000003628000000000259, y: -0.3177000763587596 },\n { x: 0.000003629000000000259, y: -0.2702926364032007 },\n { x: 0.000003630000000000259, y: -0.2594343788403857 },\n { x: 0.0000036310000000002592, y: -0.29421208722767156 },\n { x: 0.0000036320000000002593, y: -0.2627682461366655 },\n { x: 0.0000036330000000002594, y: -0.2555084706475671 },\n { x: 0.0000036340000000002595, y: -0.2532145307590628 },\n { x: 0.0000036350000000002595, y: -0.28650509330706775 },\n { x: 0.0000036360000000002596, y: -0.25954227477010483 },\n { x: 0.0000036370000000002597, y: -0.26726641110326715 },\n { x: 0.0000036380000000002598, y: -0.2448949747942874 },\n { x: 0.00000363900000000026, y: -0.2541127466898014 },\n { x: 0.00000364000000000026, y: -0.23804057402761264 },\n { x: 0.00000364100000000026, y: -0.30197860546408584 },\n { x: 0.00000364200000000026, y: -0.23636164774994223 },\n { x: 0.00000364300000000026, y: -0.2825543030568763 },\n { x: 0.0000036440000000002602, y: -0.2462358330935048 },\n { x: 0.0000036450000000002603, y: -0.25298696589684283 },\n { x: 0.0000036460000000002604, y: -0.28632157433387756 },\n { x: 0.0000036470000000002604, y: -0.24189613071708943 },\n { x: 0.0000036480000000002605, y: -0.27929765100481707 },\n { x: 0.0000036490000000002606, y: -0.24538113269853357 },\n { x: 0.0000036500000000002607, y: -0.30671804232370703 },\n { x: 0.0000036510000000002607, y: -0.27011607694196776 },\n { x: 0.000003652000000000261, y: -0.2704556345261621 },\n { x: 0.000003653000000000261, y: -0.20846417085623825 },\n { x: 0.000003654000000000261, y: -0.24955499373783827 },\n { x: 0.000003655000000000261, y: -0.23966322472828874 },\n { x: 0.000003656000000000261, y: -0.20217928635807403 },\n { x: 0.000003657000000000261, y: -0.2331115638985148 },\n { x: 0.0000036580000000002613, y: -0.2518084692635158 },\n { x: 0.0000036590000000002613, y: -0.1967162632898379 },\n { x: 0.0000036600000000002614, y: -0.229230772125001 },\n { x: 0.0000036610000000002615, y: -0.24155952779605738 },\n { x: 0.0000036620000000002616, y: -0.19270218586418894 },\n { x: 0.0000036630000000002616, y: -0.20403264636119314 },\n { x: 0.0000036640000000002617, y: -0.21169111740173982 },\n { x: 0.000003665000000000262, y: -0.2065747463751475 },\n { x: 0.000003666000000000262, y: -0.19891970538654696 },\n { x: 0.000003667000000000262, y: -0.17887093561196377 },\n { x: 0.000003668000000000262, y: -0.2291886517264323 },\n { x: 0.000003669000000000262, y: -0.23654613045993622 },\n { x: 0.000003670000000000262, y: -0.20729525999690526 },\n { x: 0.0000036710000000002622, y: -0.2115888538305148 },\n { x: 0.0000036720000000002623, y: -0.1704036367750172 },\n { x: 0.0000036730000000002624, y: -0.23452835792419793 },\n { x: 0.0000036740000000002625, y: -0.17070056448078622 },\n { x: 0.0000036750000000002625, y: -0.20989690052347934 },\n { x: 0.0000036760000000002626, y: -0.19692221732919457 },\n { x: 0.0000036770000000002627, y: -0.20226596597948124 },\n { x: 0.0000036780000000002628, y: -0.20522115224395693 },\n { x: 0.000003679000000000263, y: -0.19483299544647903 },\n { x: 0.000003680000000000263, y: -0.19388613010249903 },\n { x: 0.000003681000000000263, y: -0.19639733680596577 },\n { x: 0.000003682000000000263, y: -0.1689390503621976 },\n { x: 0.000003683000000000263, y: -0.17044731403759816 },\n { x: 0.0000036840000000002632, y: -0.19374204089790645 },\n { x: 0.0000036850000000002633, y: -0.1675409975689446 },\n { x: 0.0000036860000000002634, y: -0.20660545043739661 },\n { x: 0.0000036870000000002634, y: -0.13681171288243932 },\n { x: 0.0000036880000000002635, y: -0.15826465425074074 },\n { x: 0.0000036890000000002636, y: -0.16916622588979255 },\n { x: 0.0000036900000000002637, y: -0.14023553121659668 },\n { x: 0.0000036910000000002637, y: -0.13912450403781482 },\n { x: 0.000003692000000000264, y: -0.13067589983627853 },\n { x: 0.000003693000000000264, y: -0.15337280039374465 },\n { x: 0.000003694000000000264, y: -0.15825999611915012 },\n { x: 0.000003695000000000264, y: -0.13281732910952154 },\n { x: 0.000003696000000000264, y: -0.17229501014605386 },\n { x: 0.000003697000000000264, y: -0.1806662620280943 },\n { x: 0.0000036980000000002643, y: -0.12499329559714006 },\n { x: 0.0000036990000000002643, y: -0.11543293729059019 },\n { x: 0.0000037000000000002644, y: -0.12316933529103916 },\n { x: 0.0000037010000000002645, y: -0.1701944322110603 },\n { x: 0.0000037020000000002646, y: -0.10769377268663166 },\n { x: 0.0000037030000000002646, y: -0.11406562621180977 },\n { x: 0.0000037040000000002647, y: -0.17386146748736747 },\n { x: 0.000003705000000000265, y: -0.11012940213678613 },\n { x: 0.000003706000000000265, y: -0.12978672581222384 },\n { x: 0.000003707000000000265, y: -0.13296115344051507 },\n { x: 0.000003708000000000265, y: -0.11691147963342609 },\n { x: 0.000003709000000000265, y: -0.13230472974168364 },\n { x: 0.000003710000000000265, y: -0.10915405048248283 },\n { x: 0.0000037110000000002653, y: -0.10909443635017188 },\n { x: 0.0000037120000000002653, y: -0.09826664037124794 },\n { x: 0.0000037130000000002654, y: -0.09970068231943655 },\n { x: 0.0000037140000000002655, y: -0.13809769724192994 },\n { x: 0.0000037150000000002656, y: -0.14594921961839072 },\n { x: 0.0000037160000000002656, y: -0.09675638822372708 },\n { x: 0.0000037170000000002657, y: -0.1063050068762987 },\n { x: 0.0000037180000000002658, y: -0.10376056800360725 },\n { x: 0.000003719000000000266, y: -0.1160081568326403 },\n { x: 0.000003720000000000266, y: -0.10346434330894624 },\n { x: 0.000003721000000000266, y: -0.13201970316289074 },\n { x: 0.000003722000000000266, y: -0.11913973872356406 },\n { x: 0.000003723000000000266, y: -0.06720063689900498 },\n { x: 0.0000037240000000002662, y: -0.14048725943224846 },\n { x: 0.0000037250000000002663, y: -0.1292530467843626 },\n { x: 0.0000037260000000002664, y: -0.08110569186208576 },\n { x: 0.0000037270000000002665, y: -0.0890413296838159 },\n { x: 0.0000037280000000002665, y: -0.1231985482901011 },\n { x: 0.0000037290000000002666, y: -0.11458837147206197 },\n { x: 0.0000037300000000002667, y: -0.07381400603750093 },\n { x: 0.0000037310000000002668, y: -0.053400397120431195 },\n { x: 0.000003732000000000267, y: -0.08266182157026147 },\n { x: 0.000003733000000000267, y: -0.04833001388380807 },\n { x: 0.000003734000000000267, y: -0.10066452203602488 },\n { x: 0.000003735000000000267, y: -0.08349254783591059 },\n { x: 0.000003736000000000267, y: -0.06895652785001928 },\n { x: 0.000003737000000000267, y: -0.06260617030120882 },\n { x: 0.0000037380000000002673, y: -0.042518965883061186 },\n { x: 0.0000037390000000002674, y: -0.07414478435452504 },\n { x: 0.0000037400000000002674, y: -0.02933329573022457 },\n { x: 0.0000037410000000002675, y: -0.0770531356666485 },\n { x: 0.0000037420000000002676, y: -0.043785869233870366 },\n { x: 0.0000037430000000002677, y: -0.06717708245934167 },\n { x: 0.0000037440000000002677, y: -0.08227591141091063 },\n { x: 0.000003745000000000268, y: -0.026727511228420688 },\n { x: 0.000003746000000000268, y: -0.05100667317384938 },\n { x: 0.000003747000000000268, y: -0.015177963684023923 },\n { x: 0.000003748000000000268, y: -0.07262077600333502 },\n { x: 0.000003749000000000268, y: -0.06624364896262364 },\n { x: 0.000003750000000000268, y: -0.00483025732210484 },\n { x: 0.0000037510000000002683, y: -0.05989242276732176 },\n { x: 0.0000037520000000002683, y: -0.002843924380259495 },\n { x: 0.0000037530000000002684, y: -0.03294526433995804 },\n { x: 0.0000037540000000002685, y: -0.045118598256665504 },\n { x: 0.0000037550000000002686, y: -0.06369476170307739 },\n { x: 0.0000037560000000002686, y: -0.04017565357806448 },\n { x: 0.0000037570000000002687, y: -0.015220180587088093 },\n { x: 0.0000037580000000002688, y: 0.001802477434737524 },\n { x: 0.000003759000000000269, y: -0.054372537874282846 },\n { x: 0.000003760000000000269, y: 0.010110012768363763 },\n { x: 0.000003761000000000269, y: -0.048776544057665364 },\n { x: 0.000003762000000000269, y: -0.016792919789972743 },\n { x: 0.000003763000000000269, y: -0.025340107766488127 },\n { x: 0.0000037640000000002692, y: -0.046065697723910344 },\n { x: 0.0000037650000000002693, y: 0.012686814325215911 },\n { x: 0.0000037660000000002694, y: -0.00771890781037642 },\n { x: 0.0000037670000000002695, y: -0.03206562652826235 },\n { x: 0.0000037680000000002695, y: -0.0015275663406866232 },\n { x: 0.0000037690000000002696, y: -0.03429512017916918 },\n { x: 0.0000037700000000002697, y: 0.016452602495524053 },\n { x: 0.0000037710000000002698, y: 0.031139428404530524 },\n { x: 0.00000377200000000027, y: 0.009649702869944404 },\n { x: 0.00000377300000000027, y: 0.02165727378920746 },\n { x: 0.00000377400000000027, y: -0.02294559677736318 },\n { x: 0.00000377500000000027, y: 0.0260090215557899 },\n { x: 0.00000377600000000027, y: -0.012429611934390298 },\n { x: 0.00000377700000000027, y: -0.0007193451913712484 },\n { x: 0.0000037780000000002703, y: 0.0318007177951392 },\n { x: 0.0000037790000000002704, y: -0.011244818065019896 },\n { x: 0.0000037800000000002704, y: -0.01526988306237366 },\n { x: 0.0000037810000000002705, y: -0.00821774264395219 },\n { x: 0.0000037820000000002706, y: -0.013105767542221858 },\n { x: 0.0000037830000000002707, y: 0.03754767946904605 },\n { x: 0.0000037840000000002707, y: 0.029533656322265095 },\n { x: 0.000003785000000000271, y: 0.06489156232485484 },\n { x: 0.000003786000000000271, y: -0.00387258615531557 },\n { x: 0.000003787000000000271, y: 0.06397243280059939 },\n { x: 0.000003788000000000271, y: 0.020436486124118282 },\n { x: 0.000003789000000000271, y: 0.0074974107423625945 },\n { x: 0.000003790000000000271, y: 0.07326347961668889 },\n { x: 0.0000037910000000002713, y: 0.018585166744699667 },\n { x: 0.0000037920000000002713, y: 0.0760775610069449 },\n { x: 0.0000037930000000002714, y: 0.01666436767191911 },\n { x: 0.0000037940000000002715, y: 0.06145317462612715 },\n { x: 0.0000037950000000002716, y: 0.04829386226021341 },\n { x: 0.0000037960000000002716, y: 0.04490458370568937 },\n { x: 0.0000037970000000002717, y: 0.07597543508147978 },\n { x: 0.0000037980000000002718, y: 0.07116136092475545 },\n { x: 0.000003799000000000272, y: 0.005808219499573497 },\n { x: 0.000003800000000000272, y: 0.05276224485842819 },\n { x: 0.000003801000000000272, y: 0.028874560500370405 },\n { x: 0.000003802000000000272, y: 0.04478002584097804 },\n { x: 0.000003803000000000272, y: 0.07871585412749102 },\n { x: 0.0000038040000000002722, y: 0.046958859880951935 },\n { x: 0.0000038050000000002723, y: 0.0776039256859531 },\n { x: 0.0000038060000000002724, y: 0.10532685677571765 },\n { x: 0.0000038070000000002725, y: 0.07076440364962333 },\n { x: 0.0000038080000000002725, y: 0.10230210099760137 },\n { x: 0.0000038090000000002726, y: 0.1135899831592243 },\n { x: 0.0000038100000000002727, y: 0.08391379724999577 },\n { x: 0.0000038110000000002728, y: 0.1115640950006993 },\n { x: 0.000003812000000000273, y: 0.07091348807832315 },\n { x: 0.000003813000000000273, y: 0.1086826776812232 },\n { x: 0.000003814000000000273, y: 0.11105224572607775 },\n { x: 0.000003815000000000273, y: 0.07731906479005708 },\n { x: 0.000003816000000000272, y: 0.08715848089043139 },\n { x: 0.000003817000000000272, y: 0.056640798980936505 },\n { x: 0.000003818000000000272, y: 0.10287571788139943 },\n { x: 0.000003819000000000271, y: 0.06119234123740106 },\n { x: 0.000003820000000000271, y: 0.06397675982326925 },\n { x: 0.0000038210000000002706, y: 0.09203401659943122 },\n { x: 0.00000382200000000027, y: 0.11312228500053674 },\n { x: 0.00000382300000000027, y: 0.14002531803300985 },\n { x: 0.0000038240000000002695, y: 0.08497534411378144 },\n { x: 0.000003825000000000269, y: 0.0858097096668864 },\n { x: 0.000003826000000000269, y: 0.07123891760835813 },\n { x: 0.0000038270000000002685, y: 0.049347380300456774 },\n { x: 0.000003828000000000268, y: 0.13862914417678432 },\n { x: 0.000003829000000000268, y: 0.11483591049615212 },\n { x: 0.000003830000000000267, y: 0.10705597948527867 },\n { x: 0.000003831000000000267, y: 0.1402268057406815 },\n { x: 0.000003832000000000267, y: 0.11056001501760651 },\n { x: 0.000003833000000000266, y: 0.14751743115344665 },\n { x: 0.000003834000000000266, y: 0.10029696799255243 },\n { x: 0.000003835000000000266, y: 0.09257080616606486 },\n { x: 0.000003836000000000265, y: 0.08829811528522333 },\n { x: 0.000003837000000000265, y: 0.09716784316015845 },\n { x: 0.000003838000000000265, y: 0.14736460895078715 },\n { x: 0.000003839000000000264, y: 0.11708640541053147 },\n { x: 0.000003840000000000264, y: 0.1403477066434798 },\n { x: 0.000003841000000000264, y: 0.16249826777799295 },\n { x: 0.000003842000000000263, y: 0.10725341147147689 },\n { x: 0.000003843000000000263, y: 0.1599500489651751 },\n { x: 0.0000038440000000002625, y: 0.15348589512435795 },\n { x: 0.000003845000000000262, y: 0.15616786052220136 },\n { x: 0.000003846000000000262, y: 0.11929751969112422 },\n { x: 0.0000038470000000002615, y: 0.15878084276588464 },\n { x: 0.000003848000000000261, y: 0.17105464271665977 },\n { x: 0.000003849000000000261, y: 0.1289403054900729 },\n { x: 0.0000038500000000002604, y: 0.18283198399244455 },\n { x: 0.00000385100000000026, y: 0.18097604588431326 },\n { x: 0.00000385200000000026, y: 0.12682878264972203 },\n { x: 0.000003853000000000259, y: 0.16355800125735143 },\n { x: 0.000003854000000000259, y: 0.1509092017288921 },\n { x: 0.000003855000000000259, y: 0.13808921212691533 },\n { x: 0.000003856000000000258, y: 0.13132946130058273 },\n { x: 0.000003857000000000258, y: 0.14951675067794729 },\n { x: 0.000003858000000000258, y: 0.187779399064356 },\n { x: 0.000003859000000000257, y: 0.19915737915780304 },\n { x: 0.000003860000000000257, y: 0.13190700260731733 },\n { x: 0.000003861000000000257, y: 0.164841759517776 },\n { x: 0.000003862000000000256, y: 0.176515087745802 },\n { x: 0.000003863000000000256, y: 0.16222479410417287 },\n { x: 0.0000038640000000002556, y: 0.13732543716610482 },\n { x: 0.000003865000000000255, y: 0.16678724026455302 },\n { x: 0.000003866000000000255, y: 0.18906531880529184 },\n { x: 0.0000038670000000002545, y: 0.1781885697234449 },\n { x: 0.000003868000000000254, y: 0.19683666242754405 },\n { x: 0.000003869000000000254, y: 0.2156003861530912 },\n { x: 0.0000038700000000002535, y: 0.15546713749533556 },\n { x: 0.000003871000000000253, y: 0.16426159288706357 },\n { x: 0.000003872000000000253, y: 0.16688687412384265 },\n { x: 0.0000038730000000002524, y: 0.17010253336067568 },\n { x: 0.000003874000000000252, y: 0.1811382032127123 },\n { x: 0.000003875000000000252, y: 0.18742345737547758 },\n { x: 0.000003876000000000251, y: 0.20647237237574914 },\n { x: 0.000003877000000000251, y: 0.21245489307524304 },\n { x: 0.000003878000000000251, y: 0.19999310263799502 },\n { x: 0.00000387900000000025, y: 0.23069017609041784 },\n { x: 0.00000388000000000025, y: 0.22585792893376067 },\n { x: 0.00000388100000000025, y: 0.20405585569881896 },\n { x: 0.000003882000000000249, y: 0.22571343413267697 },\n { x: 0.000003883000000000249, y: 0.1821274212266734 },\n { x: 0.000003884000000000249, y: 0.20266850259056965 },\n { x: 0.000003885000000000248, y: 0.21951932844832867 },\n { x: 0.000003886000000000248, y: 0.237354950317896 },\n { x: 0.0000038870000000002476, y: 0.23823016763106175 },\n { x: 0.000003888000000000247, y: 0.17066206490107963 },\n { x: 0.000003889000000000247, y: 0.24482465919028346 },\n { x: 0.0000038900000000002465, y: 0.22426345829299338 },\n { x: 0.000003891000000000246, y: 0.20455399033507282 },\n { x: 0.000003892000000000246, y: 0.22885939676625072 },\n { x: 0.0000038930000000002455, y: 0.19361735935302135 },\n { x: 0.000003894000000000245, y: 0.22332636310680162 },\n { x: 0.000003895000000000245, y: 0.19284531068228294 },\n { x: 0.000003896000000000244, y: 0.20365087774992216 },\n { x: 0.000003897000000000244, y: 0.24955030517911717 },\n { x: 0.000003898000000000244, y: 0.25046713806857407 },\n { x: 0.000003899000000000243, y: 0.1906027253273096 },\n { x: 0.000003900000000000243, y: 0.24095190069761946 },\n { x: 0.000003901000000000243, y: 0.25909361403634457 },\n { x: 0.000003902000000000242, y: 0.21846878615554152 },\n { x: 0.000003903000000000242, y: 0.26004066163073547 },\n { x: 0.000003904000000000242, y: 0.2365220832157309 },\n { x: 0.000003905000000000241, y: 0.25524244941855867 },\n { x: 0.000003906000000000241, y: 0.22617139638491685 },\n { x: 0.000003907000000000241, y: 0.25294493085461245 },\n { x: 0.00000390800000000024, y: 0.2356879098969712 },\n { x: 0.00000390900000000024, y: 0.2712195241889297 },\n { x: 0.0000039100000000002395, y: 0.24902038542873603 },\n { x: 0.000003911000000000239, y: 0.256834949545172 },\n { x: 0.000003912000000000239, y: 0.21593483454336798 },\n { x: 0.0000039130000000002385, y: 0.207946740672267 },\n { x: 0.000003914000000000238, y: 0.22112392424859914 },\n { x: 0.000003915000000000238, y: 0.23602298927008508 },\n { x: 0.0000039160000000002375, y: 0.24749596895126755 },\n { x: 0.000003917000000000237, y: 0.24662394406520857 },\n { x: 0.000003918000000000237, y: 0.22788109473926815 },\n { x: 0.000003919000000000236, y: 0.2315760541341182 },\n { x: 0.000003920000000000236, y: 0.22688726835610262 },\n { x: 0.000003921000000000236, y: 0.21718473617578068 },\n { x: 0.000003922000000000235, y: 0.2753480836058232 },\n { x: 0.000003923000000000235, y: 0.23022057390042344 },\n { x: 0.000003924000000000235, y: 0.22132307559394876 },\n { x: 0.000003925000000000234, y: 0.23986304778703177 },\n { x: 0.000003926000000000234, y: 0.23588125213618022 },\n { x: 0.000003927000000000234, y: 0.2381327081360886 },\n { x: 0.000003928000000000233, y: 0.2699992863971873 },\n { x: 0.000003929000000000233, y: 0.22095722644745924 },\n { x: 0.0000039300000000002326, y: 0.29691962032816877 },\n { x: 0.000003931000000000232, y: 0.2332812010583422 },\n { x: 0.000003932000000000232, y: 0.2697119646366144 },\n { x: 0.0000039330000000002315, y: 0.2836801921842508 },\n { x: 0.000003934000000000231, y: 0.257749416804988 },\n { x: 0.000003935000000000231, y: 0.235641898115553 },\n { x: 0.0000039360000000002305, y: 0.2951186014708261 },\n { x: 0.00000393700000000023, y: 0.2701076565792924 },\n { x: 0.00000393800000000023, y: 0.25372482973947696 },\n { x: 0.0000039390000000002294, y: 0.2731422399865056 },\n { x: 0.000003940000000000229, y: 0.24908123546636854 },\n { x: 0.000003941000000000229, y: 0.2827896632338716 },\n { x: 0.000003942000000000228, y: 0.27723750906049843 },\n { x: 0.000003943000000000228, y: 0.29731718904158544 },\n { x: 0.000003944000000000228, y: 0.3119657046844713 },\n { x: 0.000003945000000000227, y: 0.3077605156384501 },\n { x: 0.000003946000000000227, y: 0.24506538429052305 },\n { x: 0.000003947000000000227, y: 0.2660542241684431 },\n { x: 0.000003948000000000226, y: 0.28931788653636853 },\n { x: 0.000003949000000000226, y: 0.2829600520139954 },\n { x: 0.000003950000000000226, y: 0.24550170706886448 },\n { x: 0.000003951000000000225, y: 0.2566977406375457 },\n { x: 0.000003952000000000225, y: 0.29996800172204136 },\n { x: 0.0000039530000000002246, y: 0.2932443953012048 },\n { x: 0.000003954000000000224, y: 0.2802408129586989 },\n { x: 0.000003955000000000224, y: 0.27222080097789864 },\n { x: 0.0000039560000000002235, y: 0.2999817718696296 },\n { x: 0.000003957000000000223, y: 0.2486093044265007 },\n { x: 0.000003958000000000223, y: 0.3243828265603146 },\n { x: 0.0000039590000000002225, y: 0.2589558120162996 },\n { x: 0.000003960000000000222, y: 0.3065967261610589 },\n { x: 0.000003961000000000222, y: 0.30061194324161555 },\n { x: 0.0000039620000000002214, y: 0.2604416383131553 },\n { x: 0.000003963000000000221, y: 0.295481595872502 },\n { x: 0.000003964000000000221, y: 0.31160085443318536 },\n { x: 0.00000396500000000022, y: 0.3045149539113448 },\n { x: 0.00000396600000000022, y: 0.298803037543689 },\n { x: 0.00000396700000000022, y: 0.261506194513889 },\n { x: 0.000003968000000000219, y: 0.2766012118181859 },\n { x: 0.000003969000000000219, y: 0.33097169997672404 },\n { x: 0.000003970000000000219, y: 0.2793473685981499 },\n { x: 0.000003971000000000218, y: 0.262161497760936 },\n { x: 0.000003972000000000218, y: 0.3126806367572568 },\n { x: 0.000003973000000000218, y: 0.2814864069064685 },\n { x: 0.000003974000000000217, y: 0.32208444644381456 },\n { x: 0.000003975000000000217, y: 0.31238103864584366 },\n { x: 0.0000039760000000002166, y: 0.2927671341251896 },\n { x: 0.000003977000000000216, y: 0.2680932099612712 },\n { x: 0.000003978000000000216, y: 0.312118337698919 },\n { x: 0.0000039790000000002155, y: 0.2770845333330829 },\n { x: 0.000003980000000000215, y: 0.2849134186659972 },\n { x: 0.000003981000000000215, y: 0.2811576706237539 },\n { x: 0.0000039820000000002145, y: 0.30152808046471263 },\n { x: 0.000003983000000000214, y: 0.2749363630168921 },\n { x: 0.000003984000000000214, y: 0.32380804118333906 },\n { x: 0.000003985000000000213, y: 0.2744281771569975 },\n { x: 0.000003986000000000213, y: 0.3333489248885281 },\n { x: 0.000003987000000000213, y: 0.3199531556665767 },\n { x: 0.000003988000000000212, y: 0.30298622743647985 },\n { x: 0.000003989000000000212, y: 0.2775506071658868 },\n { x: 0.000003990000000000212, y: 0.32834200980805067 },\n { x: 0.000003991000000000211, y: 0.28061834420608794 },\n { x: 0.000003992000000000211, y: 0.32536447344878244 },\n { x: 0.000003993000000000211, y: 0.3395079551066617 },\n { x: 0.00000399400000000021, y: 0.28742308921087417 },\n { x: 0.00000399500000000021, y: 0.28734831560210633 },\n { x: 0.00000399600000000021, y: 0.29946355110392747 },\n { x: 0.000003997000000000209, y: 0.2943922872962459 },\n { x: 0.000003998000000000209, y: 0.3151724677333371 },\n { x: 0.0000039990000000002085, y: 0.29099808928701176 },\n { x: 0.000004000000000000208, y: 0.28340280595764616 },\n { x: 0.000004001000000000208, y: 0.3422715322548612 },\n { x: 0.0000040020000000002075, y: 0.30187033980900085 },\n { x: 0.000004003000000000207, y: 0.34492871377833345 },\n { x: 0.000004004000000000207, y: 0.317686638017795 },\n { x: 0.0000040050000000002064, y: 0.31162185107005064 },\n { x: 0.000004006000000000206, y: 0.3015063948557598 },\n { x: 0.000004007000000000206, y: 0.31769137936352204 },\n { x: 0.000004008000000000205, y: 0.29745675018269324 },\n { x: 0.000004009000000000205, y: 0.32967674333254005 },\n { x: 0.000004010000000000205, y: 0.30495116756365953 },\n { x: 0.000004011000000000204, y: 0.3423999663491054 },\n { x: 0.000004012000000000204, y: 0.328172835054873 },\n { x: 0.000004013000000000204, y: 0.283977614666415 },\n { x: 0.000004014000000000203, y: 0.3144810181605132 },\n { x: 0.000004015000000000203, y: 0.38328983726262034 },\n { x: 0.000004016000000000203, y: 0.34060241045676604 },\n { x: 0.000004017000000000202, y: 0.3002736565357097 },\n { x: 0.000004018000000000202, y: 0.32929999902266477 },\n { x: 0.0000040190000000002016, y: 0.2857738486662874 },\n { x: 0.000004020000000000201, y: 0.3288446902785198 },\n { x: 0.000004021000000000201, y: 0.3407966533358474 },\n { x: 0.0000040220000000002005, y: 0.2861152100268766 },\n { x: 0.0000040230000000002, y: 0.3271032701370034 },\n { x: 0.0000040240000000002, y: 0.29725590727265644 },\n { x: 0.0000040250000000001995, y: 0.2957762403506275 },\n { x: 0.000004026000000000199, y: 0.33966310713422404 },\n { x: 0.000004027000000000199, y: 0.36096201287710894 },\n { x: 0.0000040280000000001984, y: 0.35729034558791334 },\n { x: 0.000004029000000000198, y: 0.3124090652959692 },\n { x: 0.000004030000000000198, y: 0.33408174508051514 },\n { x: 0.000004031000000000197, y: 0.2950126154364728 },\n { x: 0.000004032000000000197, y: 0.3142967918930977 },\n { x: 0.000004033000000000197, y: 0.29206159333072185 },\n { x: 0.000004034000000000196, y: 0.2947008791127249 },\n { x: 0.000004035000000000196, y: 0.3398102425902416 },\n { x: 0.000004036000000000196, y: 0.3460630553593029 },\n { x: 0.000004037000000000195, y: 0.3141006873647608 },\n { x: 0.000004038000000000195, y: 0.35586167474648384 },\n { x: 0.000004039000000000195, y: 0.3485147196606129 },\n { x: 0.000004040000000000194, y: 0.3490019547840109 },\n { x: 0.000004041000000000194, y: 0.3210659656263639 },\n { x: 0.0000040420000000001936, y: 0.2931472864148488 },\n { x: 0.000004043000000000193, y: 0.3474972967907737 },\n { x: 0.000004044000000000193, y: 0.31802863199692205 },\n { x: 0.0000040450000000001925, y: 0.37709378836391627 },\n { x: 0.000004046000000000192, y: 0.2896363310600595 },\n { x: 0.000004047000000000192, y: 0.29798749838992117 },\n { x: 0.0000040480000000001915, y: 0.3552511512225615 },\n { x: 0.000004049000000000191, y: 0.3653601251154573 },\n { x: 0.000004050000000000191, y: 0.30223740393356713 },\n { x: 0.00000405100000000019, y: 0.33297814352369504 },\n { x: 0.00000405200000000019, y: 0.34314943266453635 },\n { x: 0.00000405300000000019, y: 0.3243056620796294 },\n { x: 0.000004054000000000189, y: 0.34959610945369457 },\n { x: 0.000004055000000000189, y: 0.34250077433766457 },\n { x: 0.000004056000000000189, y: 0.35505464072555626 },\n { x: 0.000004057000000000188, y: 0.32690676455837 },\n { x: 0.000004058000000000188, y: 0.3660747431632196 },\n { x: 0.000004059000000000188, y: 0.3615097254596732 },\n { x: 0.000004060000000000187, y: 0.34531676639100123 },\n { x: 0.000004061000000000187, y: 0.35682792899331395 },\n { x: 0.000004062000000000187, y: 0.31388688355642863 },\n { x: 0.000004063000000000186, y: 0.31295555883694015 },\n { x: 0.000004064000000000186, y: 0.3658041684694592 },\n { x: 0.0000040650000000001855, y: 0.3509468195438988 },\n { x: 0.000004066000000000185, y: 0.3346270001207663 },\n { x: 0.000004067000000000185, y: 0.3278174309867702 },\n { x: 0.0000040680000000001845, y: 0.3271524745190602 },\n { x: 0.000004069000000000184, y: 0.3399040303374648 },\n { x: 0.000004070000000000184, y: 0.36065816849987253 },\n { x: 0.0000040710000000001835, y: 0.2892205309483447 },\n { x: 0.000004072000000000183, y: 0.30752530118261684 },\n { x: 0.000004073000000000183, y: 0.3478386327640257 },\n { x: 0.000004074000000000182, y: 0.3019679550439449 },\n { x: 0.000004075000000000182, y: 0.3191150592098787 },\n { x: 0.000004076000000000182, y: 0.3626369938899318 },\n { x: 0.000004077000000000181, y: 0.3601093301647171 },\n { x: 0.000004078000000000181, y: 0.36246721544608235 },\n { x: 0.000004079000000000181, y: 0.3432884100260415 },\n { x: 0.00000408000000000018, y: 0.31877152700123657 },\n { x: 0.00000408100000000018, y: 0.35788771360499283 },\n { x: 0.00000408200000000018, y: 0.3093204907844644 },\n { x: 0.000004083000000000179, y: 0.29666535367393415 },\n { x: 0.000004084000000000179, y: 0.360970452148224 },\n { x: 0.0000040850000000001786, y: 0.34554986408595434 },\n { x: 0.000004086000000000178, y: 0.29454771039585925 },\n { x: 0.000004087000000000178, y: 0.35821987546650286 },\n { x: 0.0000040880000000001775, y: 0.2938160063722 },\n { x: 0.000004089000000000177, y: 0.3604864105624299 },\n { x: 0.000004090000000000177, y: 0.3124656376390679 },\n { x: 0.0000040910000000001765, y: 0.2849200104262758 },\n { x: 0.000004092000000000176, y: 0.33944348077477526 },\n { x: 0.000004093000000000176, y: 0.29174335423889747 },\n { x: 0.0000040940000000001754, y: 0.29951354609913 },\n { x: 0.000004095000000000175, y: 0.35724000082751667 },\n { x: 0.000004096000000000175, y: 0.3283230671036082 },\n { x: 0.000004097000000000174, y: 0.3522231936853684 },\n { x: 0.000004098000000000174, y: 0.29996857475406735 },\n { x: 0.000004099000000000174, y: 0.3006383368854904 },\n { x: 0.000004100000000000173, y: 0.33937777049021517 },\n { x: 0.000004101000000000173, y: 0.29586928620024366 },\n { x: 0.000004102000000000173, y: 0.30757305070060775 },\n { x: 0.000004103000000000172, y: 0.32645161200537803 },\n { x: 0.000004104000000000172, y: 0.33623725264246135 },\n { x: 0.000004105000000000172, y: 0.2815048406339397 },\n { x: 0.000004106000000000171, y: 0.3034415864677118 },\n { x: 0.000004107000000000171, y: 0.33929007613649487 },\n { x: 0.0000041080000000001706, y: 0.3188050660842236 },\n { x: 0.00000410900000000017, y: 0.3169601994501379 },\n { x: 0.00000411000000000017, y: 0.32253528090780664 },\n { x: 0.0000041110000000001695, y: 0.3062493577079485 },\n { x: 0.000004112000000000169, y: 0.3304689212384934 },\n { x: 0.000004113000000000169, y: 0.2827148071281308 },\n { x: 0.0000041140000000001685, y: 0.28784364190422307 },\n { x: 0.000004115000000000168, y: 0.314776859785628 },\n { x: 0.000004116000000000168, y: 0.27819425768339046 },\n { x: 0.0000041170000000001674, y: 0.29968243532794836 },\n { x: 0.000004118000000000167, y: 0.35079321292278703 },\n { x: 0.000004119000000000167, y: 0.3266872226749194 },\n { x: 0.000004120000000000166, y: 0.3292060806693942 },\n { x: 0.000004121000000000166, y: 0.3287372130429182 },\n { x: 0.000004122000000000166, y: 0.31366107578749985 },\n { x: 0.000004123000000000165, y: 0.30147312498007645 },\n { x: 0.000004124000000000165, y: 0.28688326200791414 },\n { x: 0.000004125000000000165, y: 0.3008962095460737 },\n { x: 0.000004126000000000164, y: 0.3454115627701336 },\n { x: 0.000004127000000000164, y: 0.2999771018349369 },\n { x: 0.000004128000000000164, y: 0.24712321707103477 },\n { x: 0.000004129000000000163, y: 0.2880825966992047 },\n { x: 0.000004130000000000163, y: 0.3418357437789369 },\n { x: 0.0000041310000000001626, y: 0.3381489157375517 },\n { x: 0.000004132000000000162, y: 0.31024847819304036 },\n { x: 0.000004133000000000162, y: 0.31519254082685777 },\n { x: 0.0000041340000000001615, y: 0.3302995497118496 },\n { x: 0.000004135000000000161, y: 0.3186009699338797 },\n { x: 0.000004136000000000161, y: 0.26606897018268044 },\n { x: 0.0000041370000000001605, y: 0.28903869403793364 },\n { x: 0.00000413800000000016, y: 0.33367298480128865 },\n { x: 0.00000413900000000016, y: 0.30204178281278937 },\n { x: 0.000004140000000000159, y: 0.3272953173021922 },\n { x: 0.000004141000000000159, y: 0.32026960550840106 },\n { x: 0.000004142000000000159, y: 0.29846181505400665 },\n { x: 0.000004143000000000158, y: 0.2710365530621206 },\n { x: 0.000004144000000000158, y: 0.2595526987001278 },\n { x: 0.000004145000000000158, y: 0.29223479234322386 },\n { x: 0.000004146000000000157, y: 0.274935221356404 },\n { x: 0.000004147000000000157, y: 0.321280217210252 },\n { x: 0.000004148000000000157, y: 0.32500978741382525 },\n { x: 0.000004149000000000156, y: 0.26133413197528554 },\n { x: 0.000004150000000000156, y: 0.30185642607768326 },\n { x: 0.000004151000000000156, y: 0.2883337123613331 },\n { x: 0.000004152000000000155, y: 0.3109934137893497 },\n { x: 0.000004153000000000155, y: 0.2768449799905698 },\n { x: 0.0000041540000000001545, y: 0.3016692803484889 },\n { x: 0.000004155000000000154, y: 0.3038029317239212 },\n { x: 0.000004156000000000154, y: 0.26779097994536893 },\n { x: 0.0000041570000000001535, y: 0.2601611567705239 },\n { x: 0.000004158000000000153, y: 0.34829336129431965 },\n { x: 0.000004159000000000153, y: 0.2748186263793167 },\n { x: 0.0000041600000000001524, y: 0.26513368619261984 },\n { x: 0.000004161000000000152, y: 0.32057708454817924 },\n { x: 0.000004162000000000152, y: 0.2606249385869175 },\n { x: 0.000004163000000000151, y: 0.2750139415711119 },\n { x: 0.000004164000000000151, y: 0.3207568452778675 },\n { x: 0.000004165000000000151, y: 0.30027014878419644 },\n { x: 0.00000416600000000015, y: 0.2734393771458872 },\n { x: 0.00000416700000000015, y: 0.314543710437143 },\n { x: 0.00000416800000000015, y: 0.2655705677714055 },\n { x: 0.000004169000000000149, y: 0.2944002222014817 },\n { x: 0.000004170000000000149, y: 0.2723351647153971 },\n { x: 0.000004171000000000149, y: 0.30883708207603056 },\n { x: 0.000004172000000000148, y: 0.2797275304124689 },\n { x: 0.000004173000000000148, y: 0.2472797856518716 },\n { x: 0.0000041740000000001476, y: 0.27953123666601287 },\n { x: 0.000004175000000000147, y: 0.28291965261150304 },\n { x: 0.000004176000000000147, y: 0.27186963503698425 },\n { x: 0.0000041770000000001465, y: 0.27456006397270294 },\n { x: 0.000004178000000000146, y: 0.2647037813966166 },\n { x: 0.000004179000000000146, y: 0.25783019403355195 },\n { x: 0.0000041800000000001455, y: 0.3058920754230025 },\n { x: 0.000004181000000000145, y: 0.25761362340127414 },\n { x: 0.000004182000000000145, y: 0.2382819755607477 },\n { x: 0.0000041830000000001444, y: 0.2778913000129344 },\n { x: 0.000004184000000000144, y: 0.30338646181174156 },\n { x: 0.000004185000000000144, y: 0.2292683099058369 },\n { x: 0.000004186000000000143, y: 0.23936823127933687 },\n { x: 0.000004187000000000143, y: 0.24354821922455636 },\n { x: 0.000004188000000000143, y: 0.30028417547403735 },\n { x: 0.000004189000000000142, y: 0.2383135215495772 },\n { x: 0.000004190000000000142, y: 0.23212826275582604 },\n { x: 0.000004191000000000142, y: 0.2546818345092802 },\n { x: 0.000004192000000000141, y: 0.2961027770875351 },\n { x: 0.000004193000000000141, y: 0.2928101899940667 },\n { x: 0.000004194000000000141, y: 0.22070527048465552 },\n { x: 0.00000419500000000014, y: 0.24429257890590503 },\n { x: 0.00000419600000000014, y: 0.2373063644096479 },\n { x: 0.0000041970000000001396, y: 0.2553542710967861 },\n { x: 0.000004198000000000139, y: 0.2582336950314104 },\n { x: 0.000004199000000000139, y: 0.24001843932770395 },\n { x: 0.0000042000000000001385, y: 0.22697619314476405 },\n { x: 0.000004201000000000138, y: 0.23767382861571706 },\n { x: 0.000004202000000000138, y: 0.28686973796591725 },\n { x: 0.0000042030000000001375, y: 0.27195732910402926 },\n { x: 0.000004204000000000137, y: 0.25156327661549976 },\n { x: 0.000004205000000000137, y: 0.24955415104548256 },\n { x: 0.000004206000000000136, y: 0.22347024930452125 },\n { x: 0.000004207000000000136, y: 0.21793680389674783 },\n { x: 0.000004208000000000136, y: 0.22372499196585466 },\n { x: 0.000004209000000000135, y: 0.24179044209520523 },\n { x: 0.000004210000000000135, y: 0.20222356243268153 },\n { x: 0.000004211000000000135, y: 0.2152411401506903 },\n { x: 0.000004212000000000134, y: 0.2270829581751008 },\n { x: 0.000004213000000000134, y: 0.18647217122326848 },\n { x: 0.000004214000000000134, y: 0.23297886740746357 },\n { x: 0.000004215000000000133, y: 0.2561343606351684 },\n { x: 0.000004216000000000133, y: 0.20090129381185096 },\n { x: 0.000004217000000000133, y: 0.2558120862659981 },\n { x: 0.000004218000000000132, y: 0.23310990254643485 },\n { x: 0.000004219000000000132, y: 0.2688110815214907 },\n { x: 0.0000042200000000001315, y: 0.24018266371518207 },\n { x: 0.000004221000000000131, y: 0.20766953665529314 },\n { x: 0.000004222000000000131, y: 0.22513938659217325 },\n { x: 0.0000042230000000001305, y: 0.23356047621965914 },\n { x: 0.00000422400000000013, y: 0.20277467702433738 },\n { x: 0.00000422500000000013, y: 0.22790260141481103 },\n { x: 0.0000042260000000001295, y: 0.19654857272764104 },\n { x: 0.000004227000000000129, y: 0.1873712435222703 },\n { x: 0.000004228000000000129, y: 0.22221579765000743 },\n { x: 0.000004229000000000128, y: 0.2193491965344589 },\n { x: 0.000004230000000000128, y: 0.25399192372856777 },\n { x: 0.000004231000000000128, y: 0.24363502736284717 },\n { x: 0.000004232000000000127, y: 0.17892048918442582 },\n { x: 0.000004233000000000127, y: 0.19671806997380567 },\n { x: 0.000004234000000000127, y: 0.1821587215137482 },\n { x: 0.000004235000000000126, y: 0.18548135354182982 },\n { x: 0.000004236000000000126, y: 0.21283920073611234 },\n { x: 0.000004237000000000126, y: 0.20236417698613043 },\n { x: 0.000004238000000000125, y: 0.18635103831189095 },\n { x: 0.000004239000000000125, y: 0.20998163028402456 },\n { x: 0.0000042400000000001246, y: 0.23419664386908426 },\n { x: 0.000004241000000000124, y: 0.2067023208668631 },\n { x: 0.000004242000000000124, y: 0.1782632116925454 },\n { x: 0.0000042430000000001235, y: 0.17907832396593507 },\n { x: 0.000004244000000000123, y: 0.19542106205048176 },\n { x: 0.000004245000000000123, y: 0.19070513269350756 },\n { x: 0.0000042460000000001225, y: 0.21461149723223688 },\n { x: 0.000004247000000000122, y: 0.21352789021977517 },\n { x: 0.000004248000000000122, y: 0.18803332531344147 },\n { x: 0.0000042490000000001214, y: 0.1616408097184573 },\n { x: 0.000004250000000000121, y: 0.18228897891741028 },\n { x: 0.000004251000000000121, y: 0.1776526683241611 },\n { x: 0.00000425200000000012, y: 0.17531842286266935 },\n { x: 0.00000425300000000012, y: 0.17650653212167858 },\n { x: 0.00000425400000000012, y: 0.2020222680810568 },\n { x: 0.000004255000000000119, y: 0.18770466365712682 },\n { x: 0.000004256000000000119, y: 0.17783037052412898 },\n { x: 0.000004257000000000119, y: 0.15536286436244168 },\n { x: 0.000004258000000000118, y: 0.21656348542041054 },\n { x: 0.000004259000000000118, y: 0.15309110442555518 },\n { x: 0.000004260000000000118, y: 0.14713620992430998 },\n { x: 0.000004261000000000117, y: 0.18769171558725903 },\n { x: 0.000004262000000000117, y: 0.19048505007538724 },\n { x: 0.0000042630000000001166, y: 0.2144122124418425 },\n { x: 0.000004264000000000116, y: 0.20105979271127863 },\n { x: 0.000004265000000000116, y: 0.19167626746805821 },\n { x: 0.0000042660000000001155, y: 0.14241100787789035 },\n { x: 0.000004267000000000115, y: 0.16857751191507228 },\n { x: 0.000004268000000000115, y: 0.205013595133306 },\n { x: 0.0000042690000000001145, y: 0.16344811066667475 },\n { x: 0.000004270000000000114, y: 0.20548807710483846 },\n { x: 0.000004271000000000114, y: 0.149987496107719 },\n { x: 0.0000042720000000001134, y: 0.15223168518747812 },\n { x: 0.000004273000000000113, y: 0.17115602753663375 },\n { x: 0.000004274000000000113, y: 0.13463487398994745 },\n { x: 0.000004275000000000112, y: 0.2015221751132012 },\n { x: 0.000004276000000000112, y: 0.18148287593247617 },\n { x: 0.000004277000000000112, y: 0.185542636601977 },\n { x: 0.000004278000000000111, y: 0.16639551597011448 },\n { x: 0.000004279000000000111, y: 0.1565987571789668 },\n { x: 0.000004280000000000111, y: 0.1650629576360599 },\n { x: 0.00000428100000000011, y: 0.15998266772151187 },\n { x: 0.00000428200000000011, y: 0.15581326547980034 },\n { x: 0.00000428300000000011, y: 0.1207875491276767 },\n { x: 0.000004284000000000109, y: 0.149673801751392 },\n { x: 0.000004285000000000109, y: 0.141257454570004 },\n { x: 0.0000042860000000001086, y: 0.13552674355602248 },\n { x: 0.000004287000000000108, y: 0.14113229102832187 },\n { x: 0.000004288000000000108, y: 0.15552660461017007 },\n { x: 0.0000042890000000001075, y: 0.1142003637643833 },\n { x: 0.000004290000000000107, y: 0.17668621246775368 },\n { x: 0.000004291000000000107, y: 0.13820176632298573 },\n { x: 0.0000042920000000001065, y: 0.1086975990560053 },\n { x: 0.000004293000000000106, y: 0.1753359432997467 },\n { x: 0.000004294000000000106, y: 0.14122852658706625 },\n { x: 0.000004295000000000105, y: 0.11020271586603601 },\n { x: 0.000004296000000000105, y: 0.15685428539564644 },\n { x: 0.000004297000000000105, y: 0.1364433370049846 },\n { x: 0.000004298000000000104, y: 0.16053036701288367 },\n { x: 0.000004299000000000104, y: 0.12610621976950012 },\n { x: 0.000004300000000000104, y: 0.16011467633194026 },\n { x: 0.000004301000000000103, y: 0.11595471557987604 },\n { x: 0.000004302000000000103, y: 0.12506918636756298 },\n { x: 0.000004303000000000103, y: 0.1348087135948512 },\n { x: 0.000004304000000000102, y: 0.12626561025503852 },\n { x: 0.000004305000000000102, y: 0.15135545902956177 },\n { x: 0.000004306000000000102, y: 0.09128700517162773 },\n { x: 0.000004307000000000101, y: 0.15245002987141595 },\n { x: 0.000004308000000000101, y: 0.06873410525652271 },\n { x: 0.0000043090000000001005, y: 0.14129092581504543 },\n { x: 0.0000043100000000001, y: 0.13470422827119907 },\n { x: 0.0000043110000000001, y: 0.11598815403264948 },\n { x: 0.0000043120000000000995, y: 0.08237576741915076 },\n { x: 0.000004313000000000099, y: 0.14399603425330929 },\n { x: 0.000004314000000000099, y: 0.0908113511131135 },\n { x: 0.0000043150000000000984, y: 0.09935390988828743 },\n { x: 0.000004316000000000098, y: 0.13180087147404893 },\n { x: 0.000004317000000000098, y: 0.1357918271303708 },\n { x: 0.000004318000000000097, y: 0.07158566215184109 },\n { x: 0.000004319000000000097, y: 0.07917374154915047 },\n { x: 0.000004320000000000097, y: 0.1063633628171095 },\n { x: 0.000004321000000000096, y: 0.1286166161043339 },\n { x: 0.000004322000000000096, y: 0.07017351129604626 },\n { x: 0.000004323000000000096, y: 0.07035148653951795 },\n { x: 0.000004324000000000095, y: 0.07852562994636646 },\n { x: 0.000004325000000000095, y: 0.11207775574627944 },\n { x: 0.000004326000000000095, y: 0.11036776922661914 },\n { x: 0.000004327000000000094, y: 0.09045549193124772 },\n { x: 0.000004328000000000094, y: 0.08449560919857263 },\n { x: 0.0000043290000000000936, y: 0.09966711067313214 },\n { x: 0.000004330000000000093, y: 0.08746110978349644 },\n { x: 0.000004331000000000093, y: 0.09971865458417072 },\n { x: 0.0000043320000000000925, y: 0.08912241748992299 },\n { x: 0.000004333000000000092, y: 0.10952864346146796 },\n { x: 0.000004334000000000092, y: 0.058999989447568194 },\n { x: 0.0000043350000000000915, y: 0.08978161643976343 },\n { x: 0.000004336000000000091, y: 0.05462358713207488 },\n { x: 0.000004337000000000091, y: 0.05309040053378791 },\n { x: 0.0000043380000000000904, y: 0.07041407137381508 },\n { x: 0.00000433900000000009, y: 0.08571514854010397 },\n { x: 0.00000434000000000009, y: 0.03987556357581434 },\n { x: 0.000004341000000000089, y: 0.06483450322360867 },\n { x: 0.000004342000000000089, y: 0.04183408434868576 },\n { x: 0.000004343000000000089, y: 0.059144956937461066 },\n { x: 0.000004344000000000088, y: 0.0743436750345493 },\n { x: 0.000004345000000000088, y: 0.04120694464393407 },\n { x: 0.000004346000000000088, y: 0.0661386635432381 },\n { x: 0.000004347000000000087, y: 0.041238553854118905 },\n { x: 0.000004348000000000087, y: 0.08401168205110598 },\n { x: 0.000004349000000000087, y: 0.09518777269379462 },\n { x: 0.000004350000000000086, y: 0.03566645403837755 },\n { x: 0.000004351000000000086, y: 0.08708444702519236 },\n { x: 0.0000043520000000000856, y: 0.047351433032996874 },\n { x: 0.000004353000000000085, y: 0.072312108750855 },\n { x: 0.000004354000000000085, y: 0.0972794303616991 },\n { x: 0.0000043550000000000845, y: 0.0347609201677046 },\n { x: 0.000004356000000000084, y: 0.027262985254025988 },\n { x: 0.000004357000000000084, y: 0.059733524345797075 },\n { x: 0.0000043580000000000835, y: 0.047264559799169006 },\n { x: 0.000004359000000000083, y: 0.03022019743754538 },\n { x: 0.000004360000000000083, y: 0.01605317823616126 },\n { x: 0.000004361000000000082, y: 0.055019131309623784 },\n { x: 0.000004362000000000082, y: 0.010761492187868774 },\n { x: 0.000004363000000000082, y: 0.06875911256771178 },\n { x: 0.000004364000000000081, y: 0.0622167294663115 },\n { x: 0.000004365000000000081, y: 0.03251503985285033 },\n { x: 0.000004366000000000081, y: 0.033563627120785894 },\n { x: 0.00000436700000000008, y: 0.037507560203690615 },\n { x: 0.00000436800000000008, y: 0.037474655218908755 },\n { x: 0.00000436900000000008, y: 0.01212101586127362 },\n { x: 0.000004370000000000079, y: 0.026031174524743676 },\n { x: 0.000004371000000000079, y: 0.06785978070774584 },\n { x: 0.000004372000000000079, y: -0.0030962602358450275 },\n { x: 0.000004373000000000078, y: 0.018932267923982792 },\n { x: 0.000004374000000000078, y: 0.04047327416141266 },\n { x: 0.0000043750000000000775, y: 0.048638800424388964 },\n { x: 0.000004376000000000077, y: 0.03418495150735163 },\n { x: 0.000004377000000000077, y: 0.02001989673478126 },\n { x: 0.0000043780000000000765, y: 0.007396412578202536 },\n { x: 0.000004379000000000076, y: 0.01028909899249882 },\n { x: 0.000004380000000000076, y: 0.05349238032107542 },\n { x: 0.0000043810000000000755, y: 0.054775652144337356 },\n { x: 0.000004382000000000075, y: 0.03349337859889623 },\n { x: 0.000004383000000000075, y: 0.022682065116819156 },\n { x: 0.000004384000000000074, y: -0.011316022304403664 },\n { x: 0.000004385000000000074, y: -0.01203778014906668 },\n { x: 0.000004386000000000074, y: 0.050247477852514294 },\n { x: 0.000004387000000000073, y: 0.0038443772434490486 },\n { x: 0.000004388000000000073, y: 0.044145533677051416 },\n { x: 0.000004389000000000073, y: 0.034649366909434196 },\n { x: 0.000004390000000000072, y: 0.04071079001590427 },\n { x: 0.000004391000000000072, y: 0.03317864136001323 },\n { x: 0.000004392000000000072, y: 0.02369913733336782 },\n { x: 0.000004393000000000071, y: 0.0409301364946526 },\n { x: 0.000004394000000000071, y: -0.025188821428706733 },\n { x: 0.0000043950000000000706, y: -0.004541859021987236 },\n { x: 0.00000439600000000007, y: -0.012278767795145439 },\n { x: 0.00000439700000000007, y: 0.009391891558085189 },\n { x: 0.0000043980000000000695, y: 0.007733494959605235 },\n { x: 0.000004399000000000069, y: 0.030439099234344687 },\n { x: 0.000004400000000000069, y: -0.016409630491783025 },\n { x: 0.0000044010000000000685, y: -0.019735463352103057 },\n { x: 0.000004402000000000068, y: -0.03460968924691703 },\n { x: 0.000004403000000000068, y: -0.03311480687500664 },\n { x: 0.0000044040000000000674, y: -0.015895008749546375 },\n { x: 0.000004405000000000067, y: 0.0061986953282571755 },\n { x: 0.000004406000000000067, y: -0.016844282998778725 },\n { x: 0.000004407000000000066, y: -0.0058568939824834585 },\n { x: 0.000004408000000000066, y: -0.03286191330271045 },\n { x: 0.000004409000000000066, y: -0.01836579402368211 },\n { x: 0.000004410000000000065, y: -0.03131416038425245 },\n { x: 0.000004411000000000065, y: -0.001036086450301895 },\n { x: 0.000004412000000000065, y: -0.051189455301565254 },\n { x: 0.000004413000000000064, y: -0.02944416604923323 },\n { x: 0.000004414000000000064, y: 0.01225529509436378 },\n { x: 0.000004415000000000064, y: -0.03694284158795072 },\n { x: 0.000004416000000000063, y: -0.028714645427504643 },\n { x: 0.000004417000000000063, y: -0.05109888134136388 },\n { x: 0.0000044180000000000626, y: -0.02278802991887542 },\n { x: 0.000004419000000000062, y: -0.03367919185147912 },\n { x: 0.000004420000000000062, y: 0.008179044941779234 },\n { x: 0.0000044210000000000615, y: -0.02283378464263354 },\n { x: 0.000004422000000000061, y: -0.022276079790017285 },\n { x: 0.000004423000000000061, y: -0.017352653199888355 },\n { x: 0.0000044240000000000605, y: -0.044770630942360626 },\n { x: 0.00000442500000000006, y: -0.022507504505039053 },\n { x: 0.00000442600000000006, y: -0.018968508059095945 },\n { x: 0.0000044270000000000594, y: -0.0324474282081161 },\n { x: 0.000004428000000000059, y: -0.03251417949414384 },\n { x: 0.000004429000000000059, y: -0.014332986370471645 },\n { x: 0.000004430000000000058, y: -0.025656736963981727 },\n { x: 0.000004431000000000058, y: -0.019651160203069826 },\n { x: 0.000004432000000000058, y: -0.014305785701883542 },\n { x: 0.000004433000000000057, y: -0.029336859094932125 },\n { x: 0.000004434000000000057, y: -0.05754251335481238 },\n { x: 0.000004435000000000057, y: -0.08406083679038032 },\n { x: 0.000004436000000000056, y: -0.0307567442405767 },\n { x: 0.000004437000000000056, y: -0.02759736236731739 },\n { x: 0.000004438000000000056, y: -0.08644623578824348 },\n { x: 0.000004439000000000055, y: -0.029646572008271435 },\n { x: 0.000004440000000000055, y: -0.08465330229926016 },\n { x: 0.0000044410000000000546, y: -0.048453858029903166 },\n { x: 0.000004442000000000054, y: -0.04039365570506378 },\n { x: 0.000004443000000000054, y: -0.03742693381950518 },\n { x: 0.0000044440000000000535, y: -0.020941428163004705 },\n { x: 0.000004445000000000053, y: -0.025597328007457863 },\n { x: 0.000004446000000000053, y: -0.05303533194151276 },\n { x: 0.0000044470000000000525, y: -0.03254856063521485 },\n { x: 0.000004448000000000052, y: -0.08091527014204297 },\n { x: 0.000004449000000000052, y: -0.059300899444425764 },\n { x: 0.000004450000000000051, y: -0.09090816154832285 },\n { x: 0.000004451000000000051, y: -0.10243622184986592 },\n { x: 0.000004452000000000051, y: -0.07780068489824843 },\n { x: 0.00000445300000000005, y: -0.07401890904842322 },\n { x: 0.00000445400000000005, y: -0.06385031213668561 },\n { x: 0.00000445500000000005, y: -0.0369395715874065 },\n { x: 0.000004456000000000049, y: -0.04624052304633135 },\n { x: 0.000004457000000000049, y: -0.07255749052518846 },\n { x: 0.000004458000000000049, y: -0.09587591733351258 },\n { x: 0.000004459000000000048, y: -0.08052941459373546 },\n { x: 0.000004460000000000048, y: -0.07546375149805919 },\n { x: 0.000004461000000000048, y: -0.038815039776899124 },\n { x: 0.000004462000000000047, y: -0.05884039964048921 },\n { x: 0.000004463000000000047, y: -0.10873194096694953 },\n { x: 0.0000044640000000000465, y: -0.06653517288369924 },\n { x: 0.000004465000000000046, y: -0.04650819733504982 },\n { x: 0.000004466000000000046, y: -0.06370411554257338 },\n { x: 0.0000044670000000000455, y: -0.07114867401224918 },\n { x: 0.000004468000000000045, y: -0.10874427269709502 },\n { x: 0.000004469000000000045, y: -0.05374449297449803 },\n { x: 0.0000044700000000000444, y: -0.09305542976064944 },\n { x: 0.000004471000000000044, y: -0.06993422555250092 },\n { x: 0.000004472000000000044, y: -0.08076155086148841 },\n { x: 0.000004473000000000043, y: -0.09375752836267148 },\n { x: 0.000004474000000000043, y: -0.06834000106706759 },\n { x: 0.000004475000000000043, y: -0.1285089957266825 },\n { x: 0.000004476000000000042, y: -0.08309467570449197 },\n { x: 0.000004477000000000042, y: -0.09681139061585507 },\n { x: 0.000004478000000000042, y: -0.08823125514299994 },\n { x: 0.000004479000000000041, y: -0.12780694782131158 },\n { x: 0.000004480000000000041, y: -0.07207408574963284 },\n { x: 0.000004481000000000041, y: -0.06830748837620107 },\n { x: 0.00000448200000000004, y: -0.0968144565147273 },\n { x: 0.00000448300000000004, y: -0.12452567659502442 },\n { x: 0.0000044840000000000396, y: -0.12244716206611114 },\n { x: 0.000004485000000000039, y: -0.10738434715904249 },\n { x: 0.000004486000000000039, y: -0.09069820014577216 },\n { x: 0.0000044870000000000385, y: -0.11274927915774811 },\n { x: 0.000004488000000000038, y: -0.10232949816068293 },\n { x: 0.000004489000000000038, y: -0.12085948320795117 },\n { x: 0.0000044900000000000375, y: -0.07693655156307819 },\n { x: 0.000004491000000000037, y: -0.13058262018517797 },\n { x: 0.000004492000000000037, y: -0.1050188254544194 },\n { x: 0.0000044930000000000364, y: -0.13542757802306188 },\n { x: 0.000004494000000000036, y: -0.13837817846426426 },\n { x: 0.000004495000000000036, y: -0.11356779333513836 },\n { x: 0.000004496000000000035, y: -0.15166387392774347 },\n { x: 0.000004497000000000035, y: -0.13577402758702942 },\n { x: 0.000004498000000000035, y: -0.14971412722281802 },\n { x: 0.000004499000000000034, y: -0.11897512139382997 },\n { x: 0.000004500000000000034, y: -0.11438381277360571 },\n { x: 0.000004501000000000034, y: -0.10070877050182117 },\n { x: 0.000004502000000000033, y: -0.10313393024443825 },\n { x: 0.000004503000000000033, y: -0.0985986833828442 },\n { x: 0.000004504000000000033, y: -0.10908010587794445 },\n { x: 0.000004505000000000032, y: -0.10613995494427787 },\n { x: 0.000004506000000000032, y: -0.10423249553572772 },\n { x: 0.0000045070000000000316, y: -0.1445428829116194 },\n { x: 0.000004508000000000031, y: -0.14846339390964555 },\n { x: 0.000004509000000000031, y: -0.09449777275172647 },\n { x: 0.0000045100000000000305, y: -0.1363310372930019 },\n { x: 0.00000451100000000003, y: -0.10780279414382662 },\n { x: 0.00000451200000000003, y: -0.10910751225579243 },\n { x: 0.0000045130000000000295, y: -0.15703960710406548 },\n { x: 0.000004514000000000029, y: -0.15237303637262323 },\n { x: 0.000004515000000000029, y: -0.13473584982307496 },\n { x: 0.000004516000000000028, y: -0.09875269569754389 },\n { x: 0.000004517000000000028, y: -0.09720188691666903 },\n { x: 0.000004518000000000028, y: -0.15006556148600886 },\n { x: 0.000004519000000000027, y: -0.1637403076487485 },\n { x: 0.000004520000000000027, y: -0.11504520626707926 },\n { x: 0.000004521000000000027, y: -0.16907052176194426 },\n { x: 0.000004522000000000026, y: -0.15707043955824332 },\n { x: 0.000004523000000000026, y: -0.11438857955664553 },\n { x: 0.000004524000000000026, y: -0.10443228489684468 },\n { x: 0.000004525000000000025, y: -0.15301717606205142 },\n { x: 0.000004526000000000025, y: -0.1408374568352197 },\n { x: 0.000004527000000000025, y: -0.11364182694460714 },\n { x: 0.000004528000000000024, y: -0.16509687484639976 },\n { x: 0.000004529000000000024, y: -0.11664731843507468 },\n { x: 0.0000045300000000000235, y: -0.13325631614190875 },\n { x: 0.000004531000000000023, y: -0.16895237877956948 },\n { x: 0.000004532000000000023, y: -0.17402953067457072 },\n { x: 0.0000045330000000000225, y: -0.1221610627346329 },\n { x: 0.000004534000000000022, y: -0.14075575900096557 },\n { x: 0.000004535000000000022, y: -0.11848020408101743 },\n { x: 0.0000045360000000000215, y: -0.1626331498834029 },\n { x: 0.000004537000000000021, y: -0.1291854949657184 },\n { x: 0.000004538000000000021, y: -0.17777330718473172 },\n { x: 0.00000453900000000002, y: -0.12648682078306261 },\n { x: 0.00000454000000000002, y: -0.16799009736051887 },\n { x: 0.00000454100000000002, y: -0.18649243971035206 },\n { x: 0.000004542000000000019, y: -0.1452926594096877 },\n { x: 0.000004543000000000019, y: -0.12632963150907559 },\n { x: 0.000004544000000000019, y: -0.14697749845087704 },\n { x: 0.000004545000000000018, y: -0.15253945073256678 },\n { x: 0.000004546000000000018, y: -0.16174596626010296 },\n { x: 0.000004547000000000018, y: -0.18792141927022998 },\n { x: 0.000004548000000000017, y: -0.15894313009867014 },\n { x: 0.000004549000000000017, y: -0.1665554686897448 },\n { x: 0.0000045500000000000166, y: -0.18333842470620065 },\n { x: 0.000004551000000000016, y: -0.18062173140549392 },\n { x: 0.000004552000000000016, y: -0.1953886797669952 },\n { x: 0.0000045530000000000155, y: -0.1964706979880324 },\n { x: 0.000004554000000000015, y: -0.16410940154159423 },\n { x: 0.000004555000000000015, y: -0.1482845584397377 },\n { x: 0.0000045560000000000145, y: -0.16046417452063638 },\n { x: 0.000004557000000000014, y: -0.19651598819232566 },\n { x: 0.000004558000000000014, y: -0.17589509568281647 },\n { x: 0.0000045590000000000134, y: -0.15164882473045274 },\n { x: 0.000004560000000000013, y: -0.14512287764436593 },\n { x: 0.000004561000000000013, y: -0.18676563242323918 },\n { x: 0.000004562000000000012, y: -0.18518869067462282 },\n { x: 0.000004563000000000012, y: -0.17250923754915956 },\n { x: 0.000004564000000000012, y: -0.1395082836362115 },\n { x: 0.000004565000000000011, y: -0.21551477969500438 },\n { x: 0.000004566000000000011, y: -0.15539114064043152 },\n { x: 0.000004567000000000011, y: -0.18557382147657966 },\n { x: 0.00000456800000000001, y: -0.16905292639288855 },\n { x: 0.00000456900000000001, y: -0.2323753585489058 },\n { x: 0.00000457000000000001, y: -0.15187947286598966 },\n { x: 0.000004571000000000009, y: -0.19513860486063878 },\n { x: 0.000004572000000000009, y: -0.14680765200251045 },\n { x: 0.0000045730000000000086, y: -0.1980141313626623 },\n { x: 0.000004574000000000008, y: -0.19972792853837637 },\n { x: 0.000004575000000000008, y: -0.2111481012489808 },\n { x: 0.0000045760000000000075, y: -0.21355738586889983 },\n { x: 0.000004577000000000007, y: -0.18102591266987136 },\n { x: 0.000004578000000000007, y: -0.20279162099000217 },\n { x: 0.0000045790000000000065, y: -0.18119097518072985 },\n { x: 0.000004580000000000006, y: -0.17000991337520813 },\n { x: 0.000004581000000000006, y: -0.1877444849524141 },\n { x: 0.0000045820000000000054, y: -0.15078192279849487 },\n { x: 0.000004583000000000005, y: -0.18002672248676055 },\n { x: 0.000004584000000000005, y: -0.15579301444151777 },\n { x: 0.000004585000000000004, y: -0.15709872042946224 },\n { x: 0.000004586000000000004, y: -0.14797105333309435 },\n { x: 0.000004587000000000004, y: -0.14907209980362615 },\n { x: 0.000004588000000000003, y: -0.1934247074612179 },\n { x: 0.000004589000000000003, y: -0.15007375095781084 },\n { x: 0.000004590000000000003, y: -0.20310956350071013 },\n { x: 0.000004591000000000002, y: -0.19673176949531415 },\n { x: 0.000004592000000000002, y: -0.15163286033003617 },\n { x: 0.000004593000000000002, y: -0.1561802522971907 },\n { x: 0.000004594000000000001, y: -0.21395528418822773 },\n { x: 0.000004595000000000001, y: -0.2144855816654977 },\n { x: 0.0000045960000000000006, y: -0.1851080266112227 },\n { x: 0.000004597, y: -0.20247365152626745 },\n { x: 0.000004598, y: -0.21112623441505923 },\n { x: 0.0000045989999999999995, y: -0.22459620193688065 },\n { x: 0.000004599999999999999, y: -0.18210168888773165 },\n { x: 0.000004600999999999999, y: -0.17286465815291074 },\n { x: 0.0000046019999999999985, y: -0.22577343441620287 },\n { x: 0.000004602999999999998, y: -0.19717568268109364 },\n { x: 0.000004603999999999998, y: -0.1647798111734493 },\n { x: 0.000004604999999999997, y: -0.2164635751119212 },\n { x: 0.000004605999999999997, y: -0.22208002964527426 },\n { x: 0.000004606999999999997, y: -0.22498637363585147 },\n { x: 0.000004607999999999996, y: -0.16136838482311364 },\n { x: 0.000004608999999999996, y: -0.18583896600093686 },\n { x: 0.000004609999999999996, y: -0.17547696915370042 },\n { x: 0.000004610999999999995, y: -0.17414147240852423 },\n { x: 0.000004611999999999995, y: -0.1637033344171779 },\n { x: 0.000004612999999999995, y: -0.20882503887351947 },\n { x: 0.000004613999999999994, y: -0.16387044625871208 },\n { x: 0.000004614999999999994, y: -0.1767390963027569 },\n { x: 0.000004615999999999994, y: -0.17119321818196312 },\n { x: 0.000004616999999999993, y: -0.21778951451483697 },\n { x: 0.000004617999999999993, y: -0.16402760231019597 },\n { x: 0.0000046189999999999925, y: -0.17438522053867123 },\n { x: 0.000004619999999999992, y: -0.200777693154057 },\n { x: 0.000004620999999999992, y: -0.22384399734445595 },\n { x: 0.0000046219999999999915, y: -0.18013211740166474 },\n { x: 0.000004622999999999991, y: -0.21702822058223198 },\n { x: 0.000004623999999999991, y: -0.221172198782941 },\n { x: 0.0000046249999999999904, y: -0.16333724254332704 },\n { x: 0.00000462599999999999, y: -0.19843099871416528 },\n { x: 0.00000462699999999999, y: -0.1842630535717723 },\n { x: 0.000004627999999999989, y: -0.2290070355901267 },\n { x: 0.000004628999999999989, y: -0.18892340796949067 },\n { x: 0.000004629999999999989, y: -0.2205316139629703 },\n { x: 0.000004630999999999988, y: -0.16710989517499117 },\n { x: 0.000004631999999999988, y: -0.19354970564096444 },\n { x: 0.000004632999999999988, y: -0.22046644715953334 },\n { x: 0.000004633999999999987, y: -0.20847319729145103 },\n { x: 0.000004634999999999987, y: -0.22115178264139743 },\n { x: 0.000004635999999999987, y: -0.23268680301232533 },\n { x: 0.000004636999999999986, y: -0.20811882544137172 },\n { x: 0.000004637999999999986, y: -0.23868111993396282 },\n { x: 0.0000046389999999999856, y: -0.1673710000387146 },\n { x: 0.000004639999999999985, y: -0.2059528755471276 },\n { x: 0.000004640999999999985, y: -0.19556014818492704 },\n { x: 0.0000046419999999999845, y: -0.20508858887643108 },\n { x: 0.000004642999999999984, y: -0.22862183103952904 },\n { x: 0.000004643999999999984, y: -0.18706619515119602 },\n { x: 0.0000046449999999999835, y: -0.20740226391163477 },\n { x: 0.000004645999999999983, y: -0.1835127727831929 },\n { x: 0.000004646999999999983, y: -0.21143964240091664 },\n { x: 0.0000046479999999999824, y: -0.23477790143332308 },\n { x: 0.000004648999999999982, y: -0.22851793807307808 },\n { x: 0.000004649999999999982, y: -0.2403823801924146 },\n { x: 0.000004650999999999981, y: -0.23267371224096148 },\n { x: 0.000004651999999999981, y: -0.24611090533177807 },\n { x: 0.000004652999999999981, y: -0.1858570390336904 },\n { x: 0.00000465399999999998, y: -0.19782970503826008 },\n { x: 0.00000465499999999998, y: -0.22587134150097352 },\n { x: 0.00000465599999999998, y: -0.18734416432482515 },\n { x: 0.000004656999999999979, y: -0.21838763635137723 },\n { x: 0.000004657999999999979, y: -0.1879952080639552 },\n { x: 0.000004658999999999979, y: -0.2396310490028291 },\n { x: 0.000004659999999999978, y: -0.22948122746832111 },\n { x: 0.000004660999999999978, y: -0.20587330716192684 },\n { x: 0.0000046619999999999776, y: -0.21499404676994655 },\n { x: 0.000004662999999999977, y: -0.2080860676222294 },\n { x: 0.000004663999999999977, y: -0.2066396966894304 },\n { x: 0.0000046649999999999765, y: -0.24398954532706382 },\n { x: 0.000004665999999999976, y: -0.2310961811036109 },\n { x: 0.000004666999999999976, y: -0.23651052503834863 },\n { x: 0.0000046679999999999755, y: -0.20107088150603003 },\n { x: 0.000004668999999999975, y: -0.2369518882361267 },\n { x: 0.000004669999999999975, y: -0.23914953145120238 },\n { x: 0.000004670999999999974, y: -0.20499357578621288 },\n { x: 0.000004671999999999974, y: -0.1822571024099909 },\n { x: 0.000004672999999999974, y: -0.23349726025447215 },\n { x: 0.000004673999999999973, y: -0.20680393168703023 },\n { x: 0.000004674999999999973, y: -0.18006358772007572 },\n { x: 0.000004675999999999973, y: -0.21775347986046428 },\n { x: 0.000004676999999999972, y: -0.2419322174551658 },\n { x: 0.000004677999999999972, y: -0.22645496834861117 },\n { x: 0.000004678999999999972, y: -0.18460841843998288 },\n { x: 0.000004679999999999971, y: -0.26928893721141506 },\n { x: 0.000004680999999999971, y: -0.1794197074711376 },\n { x: 0.000004681999999999971, y: -0.22478064423537422 },\n { x: 0.00000468299999999997, y: -0.17945713475187688 },\n { x: 0.00000468399999999997, y: -0.19387013040186674 },\n { x: 0.0000046849999999999695, y: -0.20228076460182445 },\n { x: 0.000004685999999999969, y: -0.20961354350838923 },\n { x: 0.000004686999999999969, y: -0.21570033754098786 },\n { x: 0.0000046879999999999685, y: -0.22527750784728526 },\n { x: 0.000004688999999999968, y: -0.1911870794089433 },\n { x: 0.000004689999999999968, y: -0.1768447145920783 },\n { x: 0.0000046909999999999675, y: -0.17374811880973273 },\n { x: 0.000004691999999999967, y: -0.18461715037149246 },\n { x: 0.000004692999999999967, y: -0.2164497723622435 },\n { x: 0.000004693999999999966, y: -0.21943115770511634 },\n { x: 0.000004694999999999966, y: -0.180450867294585 },\n { x: 0.000004695999999999966, y: -0.20296065473416458 },\n { x: 0.000004696999999999965, y: -0.24359773798155251 },\n { x: 0.000004697999999999965, y: -0.21363392139837156 },\n { x: 0.000004698999999999965, y: -0.22932791900878563 },\n { x: 0.000004699999999999964, y: -0.21950931367695548 },\n { x: 0.000004700999999999964, y: -0.19702472638362833 },\n { x: 0.000004701999999999964, y: -0.1907882526388136 },\n { x: 0.000004702999999999963, y: -0.23554754530174113 },\n { x: 0.000004703999999999963, y: -0.19614586001424192 },\n { x: 0.0000047049999999999626, y: -0.17548260610891864 },\n { x: 0.000004705999999999962, y: -0.1802931095853181 },\n { x: 0.000004706999999999962, y: -0.18937788191912272 },\n { x: 0.0000047079999999999615, y: -0.20506696768389945 },\n { x: 0.000004708999999999961, y: -0.24077472450497855 },\n { x: 0.000004709999999999961, y: -0.23327681340461123 },\n { x: 0.0000047109999999999605, y: -0.19855179013416105 },\n { x: 0.00000471199999999996, y: -0.24504745793025579 },\n { x: 0.00000471299999999996, y: -0.1835805058338445 },\n { x: 0.0000047139999999999594, y: -0.17117419304776266 },\n { x: 0.000004714999999999959, y: -0.1944161580900013 },\n { x: 0.000004715999999999959, y: -0.17735435602176175 },\n { x: 0.000004716999999999958, y: -0.18980986968004357 },\n { x: 0.000004717999999999958, y: -0.17675672693910716 },\n { x: 0.000004718999999999958, y: -0.20406303252394384 },\n { x: 0.000004719999999999957, y: -0.17417277517686236 },\n { x: 0.000004720999999999957, y: -0.2085135018484537 },\n { x: 0.000004721999999999957, y: -0.22291815943630947 },\n { x: 0.000004722999999999956, y: -0.20765851447295466 },\n { x: 0.000004723999999999956, y: -0.20852432996812229 },\n { x: 0.000004724999999999956, y: -0.223654229452862 },\n { x: 0.000004725999999999955, y: -0.20751794985974192 },\n { x: 0.000004726999999999955, y: -0.23001064273035512 },\n { x: 0.0000047279999999999546, y: -0.20836107867048778 },\n { x: 0.000004728999999999954, y: -0.22024976524380394 },\n { x: 0.000004729999999999954, y: -0.19775958172770985 },\n { x: 0.0000047309999999999535, y: -0.20213102539409397 },\n { x: 0.000004731999999999953, y: -0.22564439579340576 },\n { x: 0.000004732999999999953, y: -0.17679705902984255 },\n { x: 0.0000047339999999999525, y: -0.225663681406971 },\n { x: 0.000004734999999999952, y: -0.18660493624890417 },\n { x: 0.000004735999999999952, y: -0.2018646182903631 },\n { x: 0.0000047369999999999514, y: -0.1758034871227055 },\n { x: 0.000004737999999999951, y: -0.20945421851556756 },\n { x: 0.000004738999999999951, y: -0.20407375648706966 },\n { x: 0.00000473999999999995, y: -0.19335211797354876 },\n { x: 0.00000474099999999995, y: -0.22733940136735512 },\n { x: 0.00000474199999999995, y: -0.21494492051230604 },\n { x: 0.000004742999999999949, y: -0.19450113480447492 },\n { x: 0.000004743999999999949, y: -0.1684962871531534 },\n { x: 0.000004744999999999949, y: -0.236358974586646 },\n { x: 0.000004745999999999948, y: -0.18306612897940924 },\n { x: 0.000004746999999999948, y: -0.18950608498279017 },\n { x: 0.000004747999999999948, y: -0.1983439086129326 },\n { x: 0.000004748999999999947, y: -0.22521746323344227 },\n { x: 0.000004749999999999947, y: -0.20931594003229548 },\n { x: 0.0000047509999999999466, y: -0.1947776702431402 },\n { x: 0.000004751999999999946, y: -0.18490488125778162 },\n { x: 0.000004752999999999946, y: -0.22422052957169566 },\n { x: 0.0000047539999999999455, y: -0.1608664960899408 },\n { x: 0.000004754999999999945, y: -0.21314072406737158 },\n { x: 0.000004755999999999945, y: -0.22613514875516533 },\n { x: 0.0000047569999999999445, y: -0.23520427973873745 },\n { x: 0.000004757999999999944, y: -0.1959171346942928 },\n { x: 0.000004758999999999944, y: -0.167921570526336 },\n { x: 0.000004759999999999943, y: -0.21440884565974416 },\n { x: 0.000004760999999999943, y: -0.234280184017242 },\n { x: 0.000004761999999999943, y: -0.1718703321438136 },\n { x: 0.000004762999999999942, y: -0.2062218670619978 },\n { x: 0.000004763999999999942, y: -0.16177007301569504 },\n { x: 0.000004764999999999942, y: -0.2135067355583641 },\n { x: 0.000004765999999999941, y: -0.169713522487619 },\n { x: 0.000004766999999999941, y: -0.19690944541320163 },\n { x: 0.000004767999999999941, y: -0.21542435517989045 },\n { x: 0.00000476899999999994, y: -0.1599090038092127 },\n { x: 0.00000476999999999994, y: -0.18592641214348676 },\n { x: 0.00000477099999999994, y: -0.19662946753571472 },\n { x: 0.000004771999999999939, y: -0.21706635068426916 },\n { x: 0.000004772999999999939, y: -0.17526513643017064 },\n { x: 0.0000047739999999999385, y: -0.20654252549275207 },\n { x: 0.000004774999999999938, y: -0.1631517890367496 },\n { x: 0.000004775999999999938, y: -0.18673698392866397 },\n { x: 0.0000047769999999999375, y: -0.21021363404971802 },\n { x: 0.000004777999999999937, y: -0.21194458824357887 },\n { x: 0.000004778999999999937, y: -0.15963453604460792 },\n { x: 0.0000047799999999999364, y: -0.20277961851973117 },\n { x: 0.000004780999999999936, y: -0.2177409813327441 },\n { x: 0.000004781999999999936, y: -0.2091624898361344 },\n { x: 0.000004782999999999935, y: -0.19590905863790503 },\n { x: 0.000004783999999999935, y: -0.21209886282568485 },\n { x: 0.000004784999999999935, y: -0.22398077592788382 },\n { x: 0.000004785999999999934, y: -0.2203009494501902 },\n { x: 0.000004786999999999934, y: -0.1630880818377324 },\n { x: 0.000004787999999999934, y: -0.1860963990344954 },\n { x: 0.000004788999999999933, y: -0.20794310211730432 },\n { x: 0.000004789999999999933, y: -0.18378025208725715 },\n { x: 0.000004790999999999933, y: -0.17168632724802244 },\n { x: 0.000004791999999999932, y: -0.1558240130518776 },\n { x: 0.000004792999999999932, y: -0.2021555152863579 },\n { x: 0.0000047939999999999316, y: -0.20037923804218785 },\n { x: 0.000004794999999999931, y: -0.19613939082325502 },\n { x: 0.000004795999999999931, y: -0.2007319025709042 },\n { x: 0.0000047969999999999305, y: -0.19254515569478217 },\n { x: 0.00000479799999999993, y: -0.15764900670703727 },\n { x: 0.00000479899999999993, y: -0.16360389398329964 },\n { x: 0.0000047999999999999295, y: -0.19755280863356103 },\n { x: 0.000004800999999999929, y: -0.17213308136425623 },\n { x: 0.000004801999999999929, y: -0.15437152411753743 },\n { x: 0.0000048029999999999284, y: -0.19333674317331187 },\n { x: 0.000004803999999999928, y: -0.2129181764092537 },\n { x: 0.000004804999999999928, y: -0.18031639032246033 },\n { x: 0.000004805999999999927, y: -0.20860942459824838 },\n { x: 0.000004806999999999927, y: -0.17275809913291298 },\n { x: 0.000004807999999999927, y: -0.2113950047144613 },\n { x: 0.000004808999999999926, y: -0.1608856623448324 },\n { x: 0.000004809999999999926, y: -0.14289272634682348 },\n { x: 0.000004810999999999926, y: -0.17513428747592577 },\n { x: 0.000004811999999999925, y: -0.17576132309826628 },\n { x: 0.000004812999999999925, y: -0.20417843271672595 },\n { x: 0.000004813999999999925, y: -0.17501485005419407 },\n { x: 0.000004814999999999924, y: -0.2052600968613352 },\n { x: 0.000004815999999999924, y: -0.1383286747987829 },\n { x: 0.0000048169999999999236, y: -0.18845085094256564 },\n { x: 0.000004817999999999923, y: -0.1373393353637439 },\n { x: 0.000004818999999999923, y: -0.16761729840929637 },\n { x: 0.0000048199999999999225, y: -0.1371386993414808 },\n { x: 0.000004820999999999922, y: -0.17279139552556755 },\n { x: 0.000004821999999999922, y: -0.15436613305972502 },\n { x: 0.0000048229999999999215, y: -0.19928640969627978 },\n { x: 0.000004823999999999921, y: -0.17465878045807076 },\n { x: 0.000004824999999999921, y: -0.17499037100610776 },\n { x: 0.00000482599999999992, y: -0.18164039251446504 },\n { x: 0.00000482699999999992, y: -0.13809857517430163 },\n { x: 0.00000482799999999992, y: -0.19429476716545158 },\n { x: 0.000004828999999999919, y: -0.1538921953207057 },\n { x: 0.000004829999999999919, y: -0.17969911866035268 },\n { x: 0.000004830999999999919, y: -0.1729346234592151 },\n { x: 0.000004831999999999918, y: -0.1718842123427915 },\n { x: 0.000004832999999999918, y: -0.1664882176643573 },\n { x: 0.000004833999999999918, y: -0.18032920382351608 },\n { x: 0.000004834999999999917, y: -0.13780590747723948 },\n { x: 0.000004835999999999917, y: -0.15876079047465555 },\n { x: 0.000004836999999999917, y: -0.14120914648537494 },\n { x: 0.000004837999999999916, y: -0.1866227488934059 },\n { x: 0.000004838999999999916, y: -0.13176445360945166 },\n { x: 0.0000048399999999999155, y: -0.13416564037519066 },\n { x: 0.000004840999999999915, y: -0.14228552841507416 },\n { x: 0.000004841999999999915, y: -0.1574909816944331 },\n { x: 0.0000048429999999999145, y: -0.16205850619713613 },\n { x: 0.000004843999999999914, y: -0.15734418167669875 },\n { x: 0.000004844999999999914, y: -0.13535032864746668 },\n { x: 0.0000048459999999999135, y: -0.12931383706578467 },\n { x: 0.000004846999999999913, y: -0.17880634298436224 },\n { x: 0.000004847999999999913, y: -0.1496302361993294 },\n { x: 0.000004848999999999912, y: -0.13470167311909 },\n { x: 0.000004849999999999912, y: -0.11791902244194963 },\n { x: 0.000004850999999999912, y: -0.18069602286468192 },\n { x: 0.000004851999999999911, y: -0.13547852979310568 },\n { x: 0.000004852999999999911, y: -0.12489085559400731 },\n { x: 0.000004853999999999911, y: -0.12499704030930918 },\n { x: 0.00000485499999999991, y: -0.1720018234815587 },\n { x: 0.00000485599999999991, y: -0.15898138102059034 },\n { x: 0.00000485699999999991, y: -0.1259648214094295 },\n { x: 0.000004857999999999909, y: -0.15422702406169095 },\n { x: 0.000004858999999999909, y: -0.10400333640924503 },\n { x: 0.0000048599999999999086, y: -0.12772808744237163 },\n { x: 0.000004860999999999908, y: -0.17568347478216106 },\n { x: 0.000004861999999999908, y: -0.17012655821641406 },\n { x: 0.0000048629999999999075, y: -0.13248576605255455 },\n { x: 0.000004863999999999907, y: -0.10925693933163909 },\n { x: 0.000004864999999999907, y: -0.11174649933581503 },\n { x: 0.0000048659999999999065, y: -0.15217719429194307 },\n { x: 0.000004866999999999906, y: -0.16529526455950397 },\n { x: 0.000004867999999999906, y: -0.09660573875066847 },\n { x: 0.0000048689999999999054, y: -0.10993291735667422 },\n { x: 0.000004869999999999905, y: -0.09386597403459415 },\n { x: 0.000004870999999999905, y: -0.16129354479120137 },\n { x: 0.000004871999999999904, y: -0.11500147446626671 },\n { x: 0.000004872999999999904, y: -0.11984118171268719 },\n { x: 0.000004873999999999904, y: -0.1345035660099142 },\n { x: 0.000004874999999999903, y: -0.14618719086080473 },\n { x: 0.000004875999999999903, y: -0.11485445424300733 },\n { x: 0.000004876999999999903, y: -0.13436265039834844 },\n { x: 0.000004877999999999902, y: -0.10618028167215987 },\n { x: 0.000004878999999999902, y: -0.15522193103563675 },\n { x: 0.000004879999999999902, y: -0.11603179425186169 },\n { x: 0.000004880999999999901, y: -0.11267148543518876 },\n { x: 0.000004881999999999901, y: -0.14425013561411573 },\n { x: 0.0000048829999999999006, y: -0.1045795343885543 },\n { x: 0.0000048839999999999, y: -0.15728150147030912 },\n { x: 0.0000048849999999999, y: -0.12899113866698708 },\n { x: 0.0000048859999999998995, y: -0.09190574762271779 },\n { x: 0.000004886999999999899, y: -0.1455477249183041 },\n { x: 0.000004887999999999899, y: -0.13988385515254445 },\n { x: 0.0000048889999999998985, y: -0.10692291123069793 },\n { x: 0.000004889999999999898, y: -0.10306987442992198 },\n { x: 0.000004890999999999898, y: -0.11014813447393539 },\n { x: 0.0000048919999999998974, y: -0.08419457003218711 },\n { x: 0.000004892999999999897, y: -0.08379018179709047 },\n { x: 0.000004893999999999897, y: -0.1480267092320591 },\n { x: 0.000004894999999999896, y: -0.13538789770744894 },\n { x: 0.000004895999999999896, y: -0.10247299914430266 },\n { x: 0.000004896999999999896, y: -0.12559969438187232 },\n { x: 0.000004897999999999895, y: -0.08112656075683236 },\n { x: 0.000004898999999999895, y: -0.0997460859233642 },\n { x: 0.000004899999999999895, y: -0.10568721892816163 },\n { x: 0.000004900999999999894, y: -0.07086962161944485 },\n { x: 0.000004901999999999894, y: -0.1284422510140238 },\n { x: 0.000004902999999999894, y: -0.0801746347593161 },\n { x: 0.000004903999999999893, y: -0.14140496011063863 },\n { x: 0.000004904999999999893, y: -0.11131818949341507 },\n { x: 0.0000049059999999998925, y: -0.0973840599783958 },\n { x: 0.000004906999999999892, y: -0.07924227894688163 },\n { x: 0.000004907999999999892, y: -0.12190320380817203 },\n { x: 0.0000049089999999998915, y: -0.09621358489492539 },\n { x: 0.000004909999999999891, y: -0.13075900329111637 },\n { x: 0.000004910999999999891, y: -0.0661101365828696 },\n { x: 0.0000049119999999998905, y: -0.06534845898617356 },\n { x: 0.00000491299999999989, y: -0.09597344025805908 },\n { x: 0.00000491399999999989, y: -0.11872206641726424 },\n { x: 0.000004914999999999889, y: -0.08853031896239191 },\n { x: 0.000004915999999999889, y: -0.06622650754929141 },\n { x: 0.000004916999999999889, y: -0.10309024203862566 },\n { x: 0.000004917999999999888, y: -0.11661611934116448 },\n { x: 0.000004918999999999888, y: -0.05809835228344837 },\n { x: 0.000004919999999999888, y: -0.08655220835499981 },\n { x: 0.000004920999999999887, y: -0.07284919197385525 },\n { x: 0.000004921999999999887, y: -0.057951825795007884 },\n { x: 0.000004922999999999887, y: -0.12157613857581677 },\n { x: 0.000004923999999999886, y: -0.08157155191142763 },\n { x: 0.000004924999999999886, y: -0.059756634727099286 },\n { x: 0.000004925999999999886, y: -0.07213889817804878 },\n { x: 0.000004926999999999885, y: -0.09537269523287686 },\n { x: 0.000004927999999999885, y: -0.11695585184370687 },\n { x: 0.0000049289999999998845, y: -0.12243418539396558 },\n { x: 0.000004929999999999884, y: -0.07713282648976831 },\n { x: 0.000004930999999999884, y: -0.0775727622336692 },\n { x: 0.0000049319999999998835, y: -0.10458387395625092 },\n { x: 0.000004932999999999883, y: -0.08850108896150437 },\n { x: 0.000004933999999999883, y: -0.08423858424803811 },\n { x: 0.0000049349999999998824, y: -0.07445731673555146 },\n { x: 0.000004935999999999882, y: -0.10902936703826094 },\n { x: 0.000004936999999999882, y: -0.06289646778316262 },\n { x: 0.000004937999999999881, y: -0.10821073356373208 },\n { x: 0.000004938999999999881, y: -0.059026477771728675 },\n { x: 0.000004939999999999881, y: -0.09350577582955295 },\n { x: 0.00000494099999999988, y: -0.04173094732713335 },\n { x: 0.00000494199999999988, y: -0.057802373558431354 },\n { x: 0.00000494299999999988, y: -0.03587117309250226 },\n { x: 0.000004943999999999879, y: -0.07829126272716458 },\n { x: 0.000004944999999999879, y: -0.05806479699544798 },\n { x: 0.000004945999999999879, y: -0.055031783109273015 },\n { x: 0.000004946999999999878, y: -0.055795889887519504 },\n { x: 0.000004947999999999878, y: -0.044843089098240946 },\n { x: 0.0000049489999999998776, y: -0.08128360222463271 },\n { x: 0.000004949999999999877, y: -0.033838124279734254 },\n { x: 0.000004950999999999877, y: -0.09576571956912901 },\n { x: 0.0000049519999999998765, y: -0.07044183338199075 },\n { x: 0.000004952999999999876, y: -0.06775003848283538 },\n { x: 0.000004953999999999876, y: -0.08341586804696717 },\n { x: 0.0000049549999999998755, y: -0.026914812352326976 },\n { x: 0.000004955999999999875, y: -0.09911820284206022 },\n { x: 0.000004956999999999875, y: -0.09790415695470989 },\n { x: 0.0000049579999999998744, y: -0.05259349495470582 },\n { x: 0.000004958999999999874, y: -0.045609478376297787 },\n { x: 0.000004959999999999874, y: -0.06785905626139048 },\n { x: 0.000004960999999999873, y: -0.03306905282289534 },\n { x: 0.000004961999999999873, y: -0.02438447707205612 },\n { x: 0.000004962999999999873, y: -0.07199766573081698 },\n { x: 0.000004963999999999872, y: -0.05642485857993181 },\n { x: 0.000004964999999999872, y: -0.03507293642961979 },\n { x: 0.000004965999999999872, y: -0.06892039980153758 },\n { x: 0.000004966999999999871, y: -0.024371528997631384 },\n { x: 0.000004967999999999871, y: -0.057781144891837694 },\n { x: 0.000004968999999999871, y: -0.08445755391245774 },\n { x: 0.00000496999999999987, y: -0.019984754276259096 },\n { x: 0.00000497099999999987, y: -0.04489547533977136 },\n { x: 0.0000049719999999998696, y: -0.022923472714198832 },\n { x: 0.000004972999999999869, y: -0.07022689817687824 },\n { x: 0.000004973999999999869, y: -0.03571407560884077 },\n { x: 0.0000049749999999998685, y: -0.0321685900551716 },\n { x: 0.000004975999999999868, y: -0.028171186581429565 },\n { x: 0.000004976999999999868, y: -0.013141562968891747 },\n { x: 0.0000049779999999998675, y: -0.062217136700027154 },\n { x: 0.000004978999999999867, y: -0.008048890685904801 },\n { x: 0.000004979999999999867, y: -0.002861427427264314 },\n { x: 0.000004980999999999866, y: -0.07080151530840517 },\n { x: 0.000004981999999999866, y: -0.03232752906718989 },\n { x: 0.000004982999999999866, y: -0.027368309128163994 },\n { x: 0.000004983999999999865, y: -0.01483745930429672 },\n { x: 0.000004984999999999865, y: -0.012576606817376813 },\n { x: 0.000004985999999999865, y: -0.0363257857555606 },\n { x: 0.000004986999999999864, y: -0.01608651514883019 },\n { x: 0.000004987999999999864, y: -0.023901584337729195 },\n { x: 0.000004988999999999864, y: -0.06457789657819268 },\n { x: 0.000004989999999999863, y: -0.0411856083797308 },\n { x: 0.000004990999999999863, y: -0.022244764833207593 },\n { x: 0.000004991999999999863, y: -0.04695856198742204 },\n { x: 0.000004992999999999862, y: -0.026737312939246756 },\n { x: 0.000004993999999999862, y: -0.06199909039201966 },\n { x: 0.0000049949999999998615, y: -0.0254147913806117 },\n { x: 0.000004995999999999861, y: -0.04992082129608859 },\n { x: 0.000004996999999999861, y: -0.007418809966423294 },\n { x: 0.0000049979999999998605, y: -0.013678467530334748 },\n { x: 0.00000499899999999986, y: 0.004664434960145333 },\n { x: 0.00000499999999999986, y: 0.009311795051603962 },\n { x: 0.0000050009999999998595, y: -0.0042486979619729415 },\n { x: 0.000005001999999999859, y: -0.051674127876879174 },\n { x: 0.000005002999999999859, y: -0.008037008929684985 },\n { x: 0.000005003999999999858, y: -0.045848084279527024 },\n { x: 0.000005004999999999858, y: -0.0040695178685149665 },\n { x: 0.000005005999999999858, y: -0.005058554328545373 },\n { x: 0.000005006999999999857, y: -0.00835813196174382 },\n { x: 0.000005007999999999857, y: 0.012973121889614858 },\n { x: 0.000005008999999999857, y: 0.008395654434501673 },\n { x: 0.000005009999999999856, y: -0.04505598739126347 },\n { x: 0.000005010999999999856, y: -0.01553069391300424 },\n { x: 0.000005011999999999856, y: 0.006486416147778404 },\n { x: 0.000005012999999999855, y: -0.0195859621508336 },\n { x: 0.000005013999999999855, y: -0.039070141786189956 },\n { x: 0.0000050149999999998546, y: -0.023233986360678506 },\n { x: 0.000005015999999999854, y: 0.025678075043770142 },\n { x: 0.000005016999999999854, y: -0.03625904254495807 },\n { x: 0.0000050179999999998535, y: -0.032912232555061996 },\n { x: 0.000005018999999999853, y: -0.0009306114694812165 },\n { x: 0.000005019999999999853, y: -0.03675606796006399 },\n { x: 0.0000050209999999998525, y: -0.015087048918444389 },\n { x: 0.000005021999999999852, y: -0.021756564405929997 },\n { x: 0.000005022999999999852, y: 0.013326902707929474 },\n { x: 0.0000050239999999998514, y: -0.032311009629343745 },\n { x: 0.000005024999999999851, y: 0.01603544225578032 },\n { x: 0.000005025999999999851, y: -0.005747291352763567 },\n { x: 0.00000502699999999985, y: -0.016044880607822252 },\n { x: 0.00000502799999999985, y: -0.004874847938711399 },\n { x: 0.00000502899999999985, y: 0.015385456467212281 },\n { x: 0.000005029999999999849, y: 0.018514538248983903 },\n { x: 0.000005030999999999849, y: 0.02204240242151138 },\n { x: 0.000005031999999999849, y: 0.02912149766978155 },\n { x: 0.000005032999999999848, y: -0.0021647747080949225 },\n { x: 0.000005033999999999848, y: -0.00922275387973373 },\n { x: 0.000005034999999999848, y: 0.019214525790300273 },\n { x: 0.000005035999999999847, y: 0.038716207912106795 },\n { x: 0.000005036999999999847, y: 0.04369819867637072 },\n { x: 0.0000050379999999998466, y: -0.015473393049577478 },\n { x: 0.000005038999999999846, y: -0.019639489969987364 },\n { x: 0.000005039999999999846, y: 0.016142906541799264 },\n { x: 0.0000050409999999998455, y: -0.00346702658855904 },\n { x: 0.000005041999999999845, y: -0.014906744019370094 },\n { x: 0.000005042999999999845, y: 0.028030675484268117 },\n { x: 0.0000050439999999998445, y: 0.022933229818272005 },\n { x: 0.000005044999999999844, y: 0.03712510844528114 },\n { x: 0.000005045999999999844, y: 0.04115848810097254 },\n { x: 0.0000050469999999998434, y: 0.020494427453857173 },\n { x: 0.000005047999999999843, y: 0.054987634059592866 },\n { x: 0.000005048999999999843, y: -0.010005854733778529 },\n { x: 0.000005049999999999842, y: 0.007476921469571943 },\n { x: 0.000005050999999999842, y: 0.023297925529036572 },\n { x: 0.000005051999999999842, y: 0.04229944762070528 },\n { x: 0.000005052999999999841, y: -0.009948903670665851 },\n { x: 0.000005053999999999841, y: 0.007362581972701886 },\n { x: 0.000005054999999999841, y: 0.025259254816365404 },\n { x: 0.00000505599999999984, y: 0.02872700592043828 },\n { x: 0.00000505699999999984, y: 0.03609191359160033 },\n { x: 0.00000505799999999984, y: 0.029689089836923387 },\n { x: 0.000005058999999999839, y: 0.048208114339134245 },\n { x: 0.000005059999999999839, y: -0.008523067423195096 },\n { x: 0.0000050609999999998385, y: 0.048292231733407985 },\n { x: 0.000005061999999999838, y: 0.002431737869759854 },\n { x: 0.000005062999999999838, y: 0.02578493936285812 },\n { x: 0.0000050639999999998375, y: 0.06295742467028229 },\n { x: 0.000005064999999999837, y: 0.019906756150100697 },\n { x: 0.000005065999999999837, y: 0.052329339908353985 },\n { x: 0.0000050669999999998365, y: 0.07018574749278718 },\n { x: 0.000005067999999999836, y: 0.05263194561358897 },\n { x: 0.000005068999999999836, y: 0.053751372227729126 },\n { x: 0.000005069999999999835, y: 0.05277372355378042 },\n { x: 0.000005070999999999835, y: -0.0002219276410308016 },\n { x: 0.000005071999999999835, y: 0.012348918293527935 },\n { x: 0.000005072999999999834, y: 0.055259019796436756 },\n { x: 0.000005073999999999834, y: 0.06982502704088461 },\n { x: 0.000005074999999999834, y: 0.07613673498357486 },\n { x: 0.000005075999999999833, y: 0.02511433251889668 },\n { x: 0.000005076999999999833, y: 0.11063027313847137 },\n { x: 0.000005077999999999833, y: 0.07912954983301018 },\n { x: 0.000005078999999999832, y: 0.07771869256285084 },\n { x: 0.000005079999999999832, y: 0.036960454964422275 },\n { x: 0.000005080999999999832, y: 0.022026614056307705 },\n { x: 0.000005081999999999831, y: 0.06237263594572377 },\n { x: 0.000005082999999999831, y: 0.02777925946243225 },\n { x: 0.0000050839999999998305, y: 0.07964742387587326 },\n { x: 0.00000508499999999983, y: 0.014329951413496952 },\n { x: 0.00000508599999999983, y: 0.07783588310753868 },\n { x: 0.0000050869999999998295, y: 0.0622488861102068 },\n { x: 0.000005087999999999829, y: 0.045847560820092524 },\n { x: 0.000005088999999999829, y: 0.049778621420333645 },\n { x: 0.0000050899999999998284, y: 0.05355947621525368 },\n { x: 0.000005090999999999828, y: 0.07272768779571191 },\n { x: 0.000005091999999999828, y: 0.10555320918314048 },\n { x: 0.000005092999999999827, y: 0.0396495904457734 },\n { x: 0.000005093999999999827, y: 0.05003553404294465 },\n { x: 0.000005094999999999827, y: 0.047482513835271814 },\n { x: 0.000005095999999999826, y: 0.0466818805349055 },\n { x: 0.000005096999999999826, y: 0.05326596096075535 },\n { x: 0.000005097999999999826, y: 0.035446163154809765 },\n { x: 0.000005098999999999825, y: 0.02244622940723117 },\n { x: 0.000005099999999999825, y: 0.05531826308652162 },\n { x: 0.000005100999999999825, y: 0.037851901604246035 },\n { x: 0.000005101999999999824, y: 0.049331343014018425 },\n { x: 0.000005102999999999824, y: 0.09101446333899887 },\n { x: 0.0000051039999999998236, y: 0.09256805489808356 },\n { x: 0.000005104999999999823, y: 0.09806519317081278 },\n { x: 0.000005105999999999823, y: 0.0953011379164305 },\n { x: 0.0000051069999999998225, y: 0.05021215131488828 },\n { x: 0.000005107999999999822, y: 0.037122411558486466 },\n { x: 0.000005108999999999822, y: 0.07902939931076589 },\n { x: 0.0000051099999999998215, y: 0.09278036520141489 },\n { x: 0.000005110999999999821, y: 0.062259643831213914 },\n { x: 0.000005111999999999821, y: 0.08367015628070588 },\n { x: 0.0000051129999999998204, y: 0.07860438084449084 },\n { x: 0.00000511399999999982, y: 0.07135860742942574 },\n { x: 0.00000511499999999982, y: 0.039912772898280505 },\n { x: 0.000005115999999999819, y: 0.04877454829061288 },\n { x: 0.000005116999999999819, y: 0.07421556396524108 },\n { x: 0.000005117999999999819, y: 0.03403832908981421 },\n { x: 0.000005118999999999818, y: 0.037741265749125265 },\n { x: 0.000005119999999999818, y: 0.08497000270784218 },\n { x: 0.000005120999999999818, y: 0.06425217798980108 },\n { x: 0.000005121999999999817, y: 0.08407762855217268 },\n { x: 0.000005122999999999817, y: 0.03830285420650548 },\n { x: 0.000005123999999999817, y: 0.10801594378923063 },\n { x: 0.000005124999999999816, y: 0.07121389919160076 },\n { x: 0.000005125999999999816, y: 0.10697880651994408 },\n { x: 0.0000051269999999998156, y: 0.06518250871833037 },\n { x: 0.000005127999999999815, y: 0.06821800145062135 },\n { x: 0.000005128999999999815, y: 0.07261921084406753 },\n { x: 0.0000051299999999998145, y: 0.1099127353514906 },\n { x: 0.000005130999999999814, y: 0.05450141146279909 },\n { x: 0.000005131999999999814, y: 0.10520229842147627 },\n { x: 0.0000051329999999998135, y: 0.06777034691543163 },\n { x: 0.000005133999999999813, y: 0.10100012174386644 },\n { x: 0.000005134999999999813, y: 0.10507665907788341 },\n { x: 0.000005135999999999812, y: 0.05907241101024166 },\n { x: 0.000005136999999999812, y: 0.054956879881917234 },\n { x: 0.000005137999999999812, y: 0.0447907242156061 },\n { x: 0.000005138999999999811, y: 0.05456812067749722 },\n { x: 0.000005139999999999811, y: 0.06751787756041984 },\n { x: 0.000005140999999999811, y: 0.0606144573829864 },\n { x: 0.00000514199999999981, y: 0.09934729933583249 },\n { x: 0.00000514299999999981, y: 0.09402765124604553 },\n { x: 0.00000514399999999981, y: 0.07142693325362795 },\n { x: 0.000005144999999999809, y: 0.05433269905475749 },\n { x: 0.000005145999999999809, y: 0.09994568651168137 },\n { x: 0.000005146999999999809, y: 0.09890187355606968 },\n { x: 0.000005147999999999808, y: 0.11053426922339005 },\n { x: 0.000005148999999999808, y: 0.11800045755706048 },\n { x: 0.0000051499999999998075, y: 0.11807685524827202 },\n { x: 0.000005150999999999807, y: 0.06190890114209674 },\n { x: 0.000005151999999999807, y: 0.08674793649090762 },\n { x: 0.0000051529999999998065, y: 0.08834077707493128 },\n { x: 0.000005153999999999806, y: 0.12769692412352746 },\n { x: 0.000005154999999999806, y: 0.05370333792602889 },\n { x: 0.0000051559999999998055, y: 0.06361218386584885 },\n { x: 0.000005156999999999805, y: 0.09323188369342292 },\n { x: 0.000005157999999999805, y: 0.10189292498201202 },\n { x: 0.000005158999999999804, y: 0.1180087498795736 },\n { x: 0.000005159999999999804, y: 0.10999203283057399 },\n { x: 0.000005160999999999804, y: 0.0961533828201746 },\n { x: 0.000005161999999999803, y: 0.0778847597962472 },\n { x: 0.000005162999999999803, y: 0.09366215169995812 },\n { x: 0.000005163999999999803, y: 0.10156957261407087 },\n { x: 0.000005164999999999802, y: 0.08295366338188746 },\n { x: 0.000005165999999999802, y: 0.08224057500477566 },\n { x: 0.000005166999999999802, y: 0.10195143055090067 },\n { x: 0.000005167999999999801, y: 0.11665842699452506 },\n { x: 0.000005168999999999801, y: 0.09348403415969798 },\n { x: 0.0000051699999999998006, y: 0.09957685242186154 },\n { x: 0.0000051709999999998, y: 0.12274585125747074 },\n { x: 0.0000051719999999998, y: 0.10559699566859558 },\n { x: 0.0000051729999999997995, y: 0.06466748724489677 },\n { x: 0.000005173999999999799, y: 0.096323486475568 },\n { x: 0.000005174999999999799, y: 0.11236101522706754 },\n { x: 0.0000051759999999997985, y: 0.09381732092918492 },\n { x: 0.000005176999999999798, y: 0.0872311744847586 },\n { x: 0.000005177999999999798, y: 0.0852245800808161 },\n { x: 0.0000051789999999997974, y: 0.08830962799138656 },\n { x: 0.000005179999999999797, y: 0.08460790771045605 },\n { x: 0.000005180999999999797, y: 0.12720540797328467 },\n { x: 0.000005181999999999796, y: 0.07699078547094725 },\n { x: 0.000005182999999999796, y: 0.09824306248149246 },\n { x: 0.000005183999999999796, y: 0.11076507818971758 },\n { x: 0.000005184999999999795, y: 0.11779833471534458 },\n { x: 0.000005185999999999795, y: 0.07683612056418618 },\n { x: 0.000005186999999999795, y: 0.14081570731652182 },\n { x: 0.000005187999999999794, y: 0.12298077350057046 },\n { x: 0.000005188999999999794, y: 0.12531931777997332 },\n { x: 0.000005189999999999794, y: 0.12664059706265998 },\n { x: 0.000005190999999999793, y: 0.07928187092681617 },\n { x: 0.000005191999999999793, y: 0.1142035308140135 },\n { x: 0.0000051929999999997926, y: 0.12577064151821116 },\n { x: 0.000005193999999999792, y: 0.11949188873286824 },\n { x: 0.000005194999999999792, y: 0.09101084306623014 },\n { x: 0.0000051959999999997915, y: 0.07500252478446773 },\n { x: 0.000005196999999999791, y: 0.14661125252193297 },\n { x: 0.000005197999999999791, y: 0.13250934140356968 },\n { x: 0.0000051989999999997905, y: 0.08932982512663858 },\n { x: 0.00000519999999999979, y: 0.08550548082835481 },\n { x: 0.00000520099999999979, y: 0.10394532841800222 },\n { x: 0.0000052019999999997894, y: 0.08265343108013151 },\n { x: 0.000005202999999999789, y: 0.14809193673165025 },\n { x: 0.000005203999999999789, y: 0.13463090787814644 },\n { x: 0.000005204999999999788, y: 0.1294325313271355 },\n { x: 0.000005205999999999788, y: 0.09282342066156792 },\n { x: 0.000005206999999999788, y: 0.1436312786928314 },\n { x: 0.000005207999999999787, y: 0.12566020468116226 },\n { x: 0.000005208999999999787, y: 0.09078305845011876 },\n { x: 0.000005209999999999787, y: 0.13795540585649466 },\n { x: 0.000005210999999999786, y: 0.11733663514416333 },\n { x: 0.000005211999999999786, y: 0.09477740060529853 },\n { x: 0.000005212999999999786, y: 0.10041928771568914 },\n { x: 0.000005213999999999785, y: 0.10238393002534794 },\n { x: 0.000005214999999999785, y: 0.1567992318032028 },\n { x: 0.0000052159999999997845, y: 0.09563800486141057 },\n { x: 0.000005216999999999784, y: 0.08979321892744155 },\n { x: 0.000005217999999999784, y: 0.10973426506834066 },\n { x: 0.0000052189999999997835, y: 0.09223711840687873 },\n { x: 0.000005219999999999783, y: 0.1383544362026468 },\n { x: 0.000005220999999999783, y: 0.0999367725571895 },\n { x: 0.0000052219999999997825, y: 0.08446118492175768 },\n { x: 0.000005222999999999782, y: 0.12950412885256435 },\n { x: 0.000005223999999999782, y: 0.13628042682666983 },\n { x: 0.000005224999999999781, y: 0.08984945006414219 },\n { x: 0.000005225999999999781, y: 0.12237407006093978 },\n { x: 0.000005226999999999781, y: 0.08705699683887953 },\n { x: 0.00000522799999999978, y: 0.14547049589356686 },\n { x: 0.00000522899999999978, y: 0.0926629971955555 },\n { x: 0.00000522999999999978, y: 0.1608524254356898 },\n { x: 0.000005230999999999779, y: 0.12057652608288888 },\n { x: 0.000005231999999999779, y: 0.1416197905690594 },\n { x: 0.000005232999999999779, y: 0.09425682403721321 },\n { x: 0.000005233999999999778, y: 0.12141028769661823 },\n { x: 0.000005234999999999778, y: 0.15674823006218022 },\n { x: 0.000005235999999999778, y: 0.10646827407257134 },\n { x: 0.000005236999999999777, y: 0.12312708332119715 },\n { x: 0.000005237999999999777, y: 0.15120748448339894 },\n { x: 0.0000052389999999997765, y: 0.1644637004857692 },\n { x: 0.000005239999999999776, y: 0.13616017090446259 },\n { x: 0.000005240999999999776, y: 0.08974333734783863 },\n { x: 0.0000052419999999997755, y: 0.13107861329550907 },\n { x: 0.000005242999999999775, y: 0.09954767582217837 },\n { x: 0.000005243999999999775, y: 0.10953637992858052 },\n { x: 0.0000052449999999997744, y: 0.1414436435196851 },\n { x: 0.000005245999999999774, y: 0.11227329274863637 },\n { x: 0.000005246999999999774, y: 0.11773410457143 },\n { x: 0.000005247999999999773, y: 0.15775831798311404 },\n { x: 0.000005248999999999773, y: 0.09789213963863787 },\n { x: 0.000005249999999999773, y: 0.11676484046797893 },\n { x: 0.000005250999999999772, y: 0.10752997327228947 },\n { x: 0.000005251999999999772, y: 0.16309847595793353 },\n { x: 0.000005252999999999772, y: 0.1630443093645651 },\n { x: 0.000005253999999999771, y: 0.0959319627294716 },\n { x: 0.000005254999999999771, y: 0.11123955579855684 },\n { x: 0.000005255999999999771, y: 0.10683682512436833 },\n { x: 0.00000525699999999977, y: 0.13364918958393462 },\n { x: 0.00000525799999999977, y: 0.1057202770649562 },\n { x: 0.0000052589999999997696, y: 0.16391526857269595 },\n { x: 0.000005259999999999769, y: 0.15132387134865277 },\n { x: 0.000005260999999999769, y: 0.10170581745186769 },\n { x: 0.0000052619999999997685, y: 0.16643863291159045 },\n { x: 0.000005262999999999768, y: 0.1523269152752978 },\n { x: 0.000005263999999999768, y: 0.144234692117693 },\n { x: 0.0000052649999999997675, y: 0.08577841574949399 },\n { x: 0.000005265999999999767, y: 0.11892147047739499 },\n { x: 0.000005266999999999767, y: 0.12928060886489726 },\n { x: 0.0000052679999999997664, y: 0.14937165655864268 },\n { x: 0.000005268999999999766, y: 0.1600167676500758 },\n { x: 0.000005269999999999766, y: 0.12871225950869453 },\n { x: 0.000005270999999999765, y: 0.1321906561045424 },\n { x: 0.000005271999999999765, y: 0.16898963919767346 },\n { x: 0.000005272999999999765, y: 0.131445532307316 },\n { x: 0.000005273999999999764, y: 0.15223705515626373 },\n { x: 0.000005274999999999764, y: 0.10790320222895054 },\n { x: 0.000005275999999999764, y: 0.11214039556320637 },\n { x: 0.000005276999999999763, y: 0.14246074497137903 },\n { x: 0.000005277999999999763, y: 0.1288952793329502 },\n { x: 0.000005278999999999763, y: 0.11777769206547747 },\n { x: 0.000005279999999999762, y: 0.1185705478638393 },\n { x: 0.000005280999999999762, y: 0.16324990457024166 },\n { x: 0.0000052819999999997616, y: 0.1284850086467003 },\n { x: 0.000005282999999999761, y: 0.15543384409896305 },\n { x: 0.000005283999999999761, y: 0.11667377515718845 },\n { x: 0.0000052849999999997605, y: 0.13819633467004835 },\n { x: 0.00000528599999999976, y: 0.16816922058498113 },\n { x: 0.00000528699999999976, y: 0.11995830091336396 },\n { x: 0.0000052879999999997595, y: 0.10046915427625075 },\n { x: 0.000005288999999999759, y: 0.14217244793871867 },\n { x: 0.000005289999999999759, y: 0.16132734685422329 },\n { x: 0.000005290999999999758, y: 0.16887812288169746 },\n { x: 0.000005291999999999758, y: 0.11009089377254884 },\n { x: 0.000005292999999999758, y: 0.11595234125549575 },\n { x: 0.000005293999999999757, y: 0.15149132757628947 },\n { x: 0.000005294999999999757, y: 0.16989575131555568 },\n { x: 0.000005295999999999757, y: 0.1625354258383166 },\n { x: 0.000005296999999999756, y: 0.15227099850588713 },\n { x: 0.000005297999999999756, y: 0.10509311612094015 },\n { x: 0.000005298999999999756, y: 0.12353427548624234 },\n { x: 0.000005299999999999755, y: 0.13078837280660183 },\n { x: 0.000005300999999999755, y: 0.1280444872415387 },\n { x: 0.000005301999999999755, y: 0.10782367468431045 },\n { x: 0.000005302999999999754, y: 0.12300660849589021 },\n { x: 0.000005303999999999754, y: 0.12908982577505598 },\n { x: 0.0000053049999999997535, y: 0.16140202178405594 },\n { x: 0.000005305999999999753, y: 0.15777984740606843 },\n { x: 0.000005306999999999753, y: 0.17267708073856453 },\n { x: 0.0000053079999999997525, y: 0.12490706715598224 },\n { x: 0.000005308999999999752, y: 0.1604334180602598 },\n { x: 0.000005309999999999752, y: 0.14285815722884326 },\n { x: 0.0000053109999999997515, y: 0.12200335426345624 },\n { x: 0.000005311999999999751, y: 0.15528506119201516 },\n { x: 0.000005312999999999751, y: 0.12754224754133314 },\n { x: 0.00000531399999999975, y: 0.10854723407895986 },\n { x: 0.00000531499999999975, y: 0.13366213873699712 },\n { x: 0.00000531599999999975, y: 0.17291845979493653 },\n { x: 0.000005316999999999749, y: 0.10068417457858662 },\n { x: 0.000005317999999999749, y: 0.13931601345063327 },\n { x: 0.000005318999999999749, y: 0.11885753067738289 },\n { x: 0.000005319999999999748, y: 0.14152297129376254 },\n { x: 0.000005320999999999748, y: 0.1390035550649748 },\n { x: 0.000005321999999999748, y: 0.12504787238686105 },\n { x: 0.000005322999999999747, y: 0.16800654448148356 },\n { x: 0.000005323999999999747, y: 0.1336848307471853 },\n { x: 0.0000053249999999997466, y: 0.1329362167103609 },\n { x: 0.000005325999999999746, y: 0.14959935355488965 },\n { x: 0.000005326999999999746, y: 0.1309823358227884 },\n { x: 0.0000053279999999997455, y: 0.14890399669832766 },\n { x: 0.000005328999999999745, y: 0.13931591585886574 },\n { x: 0.000005329999999999745, y: 0.12667323003314426 },\n { x: 0.0000053309999999997445, y: 0.16554651081163294 },\n { x: 0.000005331999999999744, y: 0.1228158902759412 },\n { x: 0.000005332999999999744, y: 0.1573353745347053 },\n { x: 0.0000053339999999997434, y: 0.14732694134898447 },\n { x: 0.000005334999999999743, y: 0.14722464524545348 },\n { x: 0.000005335999999999743, y: 0.132551089778336 },\n { x: 0.000005336999999999742, y: 0.11981915201683922 },\n { x: 0.000005337999999999742, y: 0.11502737237630124 },\n { x: 0.000005338999999999742, y: 0.11390644628838834 },\n { x: 0.000005339999999999741, y: 0.15029617009891494 },\n { x: 0.000005340999999999741, y: 0.10548946715547333 },\n { x: 0.000005341999999999741, y: 0.13125181185906323 },\n { x: 0.00000534299999999974, y: 0.13733037347654842 },\n { x: 0.00000534399999999974, y: 0.13632081490806414 },\n { x: 0.00000534499999999974, y: 0.11700233048215822 },\n { x: 0.000005345999999999739, y: 0.15845095039516613 },\n { x: 0.000005346999999999739, y: 0.15335683559624075 },\n { x: 0.0000053479999999997386, y: 0.11493704363302802 },\n { x: 0.000005348999999999738, y: 0.1200755419055259 },\n { x: 0.000005349999999999738, y: 0.1251580191187848 },\n { x: 0.0000053509999999997375, y: 0.1230749409138043 },\n { x: 0.000005351999999999737, y: 0.11267572101351167 },\n { x: 0.000005352999999999737, y: 0.14609902529764413 },\n { x: 0.0000053539999999997365, y: 0.16409555164042855 },\n { x: 0.000005354999999999736, y: 0.16276703083145905 },\n { x: 0.000005355999999999736, y: 0.13162786801023588 },\n { x: 0.0000053569999999997354, y: 0.10450561357274661 },\n { x: 0.000005357999999999735, y: 0.16553513598851666 },\n { x: 0.000005358999999999735, y: 0.10235390117643432 },\n { x: 0.000005359999999999734, y: 0.16209048111459723 },\n { x: 0.000005360999999999734, y: 0.16862441843359494 },\n { x: 0.000005361999999999734, y: 0.15212881400710798 },\n { x: 0.000005362999999999733, y: 0.12893007654174463 },\n { x: 0.000005363999999999733, y: 0.13710620889283834 },\n { x: 0.000005364999999999733, y: 0.12216603848555517 },\n { x: 0.000005365999999999732, y: 0.14632520370853394 },\n { x: 0.000005366999999999732, y: 0.1546330936481003 },\n { x: 0.000005367999999999732, y: 0.13394085445415557 },\n { x: 0.000005368999999999731, y: 0.138108734763494 },\n { x: 0.000005369999999999731, y: 0.15681650720550006 },\n { x: 0.0000053709999999997305, y: 0.1394369487048485 },\n { x: 0.00000537199999999973, y: 0.09401743257708534 },\n { x: 0.00000537299999999973, y: 0.11422996913513755 },\n { x: 0.0000053739999999997295, y: 0.1015719835220732 },\n { x: 0.000005374999999999729, y: 0.13110380584307701 },\n { x: 0.000005375999999999729, y: 0.11783129124724499 },\n { x: 0.0000053769999999997285, y: 0.10203519682512509 },\n { x: 0.000005377999999999728, y: 0.0929668638212877 },\n { x: 0.000005378999999999728, y: 0.1006503869331531 },\n { x: 0.000005379999999999727, y: 0.14003956385097696 },\n { x: 0.000005380999999999727, y: 0.12566651942322252 },\n { x: 0.000005381999999999727, y: 0.16167597927569366 },\n { x: 0.000005382999999999726, y: 0.11587901986128309 },\n { x: 0.000005383999999999726, y: 0.15308633004638245 },\n { x: 0.000005384999999999726, y: 0.15856571149951343 },\n { x: 0.000005385999999999725, y: 0.11640267818997072 },\n { x: 0.000005386999999999725, y: 0.10963525641924257 },\n { x: 0.000005387999999999725, y: 0.09209374064047149 },\n { x: 0.000005388999999999724, y: 0.1415295732870333 },\n { x: 0.000005389999999999724, y: 0.10348962855379744 },\n { x: 0.000005390999999999724, y: 0.11255458424431092 },\n { x: 0.000005391999999999723, y: 0.15125863442125664 },\n { x: 0.000005392999999999723, y: 0.0974588307797635 },\n { x: 0.0000053939999999997225, y: 0.09359648235308661 },\n { x: 0.000005394999999999722, y: 0.11585234303612196 },\n { x: 0.000005395999999999722, y: 0.14334520027327285 },\n { x: 0.0000053969999999997215, y: 0.08730660105962522 },\n { x: 0.000005397999999999721, y: 0.09863693779340087 },\n { x: 0.000005398999999999721, y: 0.15913000657876722 },\n { x: 0.0000053999999999997204, y: 0.13756414554198437 },\n { x: 0.00000540099999999972, y: 0.09190330787434925 },\n { x: 0.00000540199999999972, y: 0.13108100562070177 },\n { x: 0.000005402999999999719, y: 0.12918575693583803 },\n { x: 0.000005403999999999719, y: 0.12617537156062916 },\n { x: 0.000005404999999999719, y: 0.1017912581369502 },\n { x: 0.000005405999999999718, y: 0.11765448133746327 },\n { x: 0.000005406999999999718, y: 0.13722868988364098 },\n { x: 0.000005407999999999718, y: 0.11120701913238926 },\n { x: 0.000005408999999999717, y: 0.07343879851164165 },\n { x: 0.000005409999999999717, y: 0.1352632819032208 },\n { x: 0.000005410999999999717, y: 0.08615712346161436 },\n { x: 0.000005411999999999716, y: 0.09061657543357547 },\n { x: 0.000005412999999999716, y: 0.10981208571643157 },\n { x: 0.0000054139999999997156, y: 0.09662242236813093 },\n { x: 0.000005414999999999715, y: 0.1352690354363802 },\n { x: 0.000005415999999999715, y: 0.09475226864800422 },\n { x: 0.0000054169999999997145, y: 0.0843851667634265 },\n { x: 0.000005417999999999714, y: 0.08886526462162103 },\n { x: 0.000005418999999999714, y: 0.12593370731249556 },\n { x: 0.0000054199999999997135, y: 0.1154404917630164 },\n { x: 0.000005420999999999713, y: 0.10748714327052497 },\n { x: 0.000005421999999999713, y: 0.09826789061166473 },\n { x: 0.0000054229999999997124, y: 0.13243197812789337 },\n { x: 0.000005423999999999712, y: 0.11814990941010105 },\n { x: 0.000005424999999999712, y: 0.10081747739357788 },\n { x: 0.000005425999999999711, y: 0.0921304633078068 },\n { x: 0.000005426999999999711, y: 0.08429829978219537 },\n { x: 0.000005427999999999711, y: 0.10669593488345674 },\n { x: 0.00000542899999999971, y: 0.08126539295340826 },\n { x: 0.00000542999999999971, y: 0.1280866818509846 },\n { x: 0.00000543099999999971, y: 0.1445546759394884 },\n { x: 0.000005431999999999709, y: 0.1414285792084123 },\n { x: 0.000005432999999999709, y: 0.1487817595959146 },\n { x: 0.000005433999999999709, y: 0.14825583684509738 },\n { x: 0.000005434999999999708, y: 0.10253319449921218 },\n { x: 0.000005435999999999708, y: 0.07517634377990132 },\n { x: 0.0000054369999999997076, y: 0.09343018198121196 },\n { x: 0.000005437999999999707, y: 0.14149505474590812 },\n { x: 0.000005438999999999707, y: 0.084913455084379 },\n { x: 0.0000054399999999997065, y: 0.11655337887956041 },\n { x: 0.000005440999999999706, y: 0.1315359102066865 },\n { x: 0.000005441999999999706, y: 0.14767347369859823 },\n { x: 0.0000054429999999997055, y: 0.082852902969632 },\n { x: 0.000005443999999999705, y: 0.07763034091883919 },\n { x: 0.000005444999999999705, y: 0.07519047017381357 },\n { x: 0.000005445999999999704, y: 0.10172715344108735 },\n { x: 0.000005446999999999704, y: 0.11898238264206978 },\n { x: 0.000005447999999999704, y: 0.08104618852456878 },\n { x: 0.000005448999999999703, y: 0.1302423237744941 },\n { x: 0.000005449999999999703, y: 0.11469014377760103 },\n { x: 0.000005450999999999703, y: 0.07004288372217889 },\n { x: 0.000005451999999999702, y: 0.14064642775777175 },\n { x: 0.000005452999999999702, y: 0.07485629518793326 },\n { x: 0.000005453999999999702, y: 0.1219847506916892 },\n { x: 0.000005454999999999701, y: 0.07807155096097693 },\n { x: 0.000005455999999999701, y: 0.10913150200743243 },\n { x: 0.000005456999999999701, y: 0.10673544715659088 },\n { x: 0.0000054579999999997, y: 0.11319379158248652 },\n { x: 0.0000054589999999997, y: 0.1293661055296817 },\n { x: 0.0000054599999999996995, y: 0.07564375880617352 },\n { x: 0.000005460999999999699, y: 0.09027321639051988 },\n { x: 0.000005461999999999699, y: 0.10387155545145581 },\n { x: 0.0000054629999999996985, y: 0.07954102078560374 },\n { x: 0.000005463999999999698, y: 0.10972751703876166 },\n { x: 0.000005464999999999698, y: 0.09219984861759932 },\n { x: 0.0000054659999999996975, y: 0.09854804023783836 },\n { x: 0.000005466999999999697, y: 0.07124658585873461 },\n { x: 0.000005467999999999697, y: 0.06830371685456571 },\n { x: 0.000005468999999999696, y: 0.1369133168084155 },\n { x: 0.000005469999999999696, y: 0.07761826942570417 },\n { x: 0.000005470999999999696, y: 0.08034152478420419 },\n { x: 0.000005471999999999695, y: 0.08437573336744544 },\n { x: 0.000005472999999999695, y: 0.13135651077630772 },\n { x: 0.000005473999999999695, y: 0.09001838550561463 },\n { x: 0.000005474999999999694, y: 0.10677766081461751 },\n { x: 0.000005475999999999694, y: 0.07380807740035203 },\n { x: 0.000005476999999999694, y: 0.12372563835179937 },\n { x: 0.000005477999999999693, y: 0.08434731752520779 },\n { x: 0.000005478999999999693, y: 0.12587588840925418 },\n { x: 0.0000054799999999996926, y: 0.1074683973704793 },\n { x: 0.000005480999999999692, y: 0.06801528056201026 },\n { x: 0.000005481999999999692, y: 0.12672715650257943 },\n { x: 0.0000054829999999996915, y: 0.07310377947558591 },\n { x: 0.000005483999999999691, y: 0.05704263791615683 },\n { x: 0.000005484999999999691, y: 0.0631163031906266 },\n { x: 0.0000054859999999996905, y: 0.127068427125634 },\n { x: 0.00000548699999999969, y: 0.10203274516125756 },\n { x: 0.00000548799999999969, y: 0.059309624612488274 },\n { x: 0.0000054889999999996894, y: 0.07275322833986349 },\n { x: 0.000005489999999999689, y: 0.09503300020681342 },\n { x: 0.000005490999999999689, y: 0.11343001378955841 },\n { x: 0.000005491999999999688, y: 0.11225275799688385 },\n { x: 0.000005492999999999688, y: 0.063676451171572 },\n { x: 0.000005493999999999688, y: 0.07493999968701812 },\n { x: 0.000005494999999999687, y: 0.09918996901301305 },\n { x: 0.000005495999999999687, y: 0.07633026050388436 },\n { x: 0.000005496999999999687, y: 0.053333163642476096 },\n { x: 0.000005497999999999686, y: 0.053280321546190695 },\n { x: 0.000005498999999999686, y: 0.11285341423057613 },\n { x: 0.000005499999999999686, y: 0.06323041714921372 },\n { x: 0.000005500999999999685, y: 0.07440423236491583 },\n { x: 0.000005501999999999685, y: 0.0892919651506561 },\n { x: 0.0000055029999999996846, y: 0.05483343163015917 },\n { x: 0.000005503999999999684, y: 0.08410782446957867 },\n { x: 0.000005504999999999684, y: 0.10943517568053497 },\n { x: 0.0000055059999999996835, y: 0.11790158832996515 },\n { x: 0.000005506999999999683, y: 0.06307143069472027 },\n { x: 0.000005507999999999683, y: 0.06139198928380584 },\n { x: 0.0000055089999999996825, y: 0.07880998566688281 },\n { x: 0.000005509999999999682, y: 0.05058159528042694 },\n { x: 0.000005510999999999682, y: 0.07233097756068851 },\n { x: 0.0000055119999999996814, y: 0.0576457147826922 },\n { x: 0.000005512999999999681, y: 0.0947256572997292 },\n { x: 0.000005513999999999681, y: 0.10280467663785933 },\n { x: 0.00000551499999999968, y: 0.050185705511921495 },\n { x: 0.00000551599999999968, y: 0.041195568346063326 },\n { x: 0.00000551699999999968, y: 0.06719837973465684 },\n { x: 0.000005517999999999679, y: 0.058078278795918176 },\n { x: 0.000005518999999999679, y: 0.08752553898924971 },\n { x: 0.000005519999999999679, y: 0.03908095948881185 },\n { x: 0.000005520999999999678, y: 0.0943499604199508 },\n { x: 0.000005521999999999678, y: 0.1052602305788135 },\n { x: 0.000005522999999999678, y: 0.054572883805252555 },\n { x: 0.000005523999999999677, y: 0.0779295336836059 },\n { x: 0.000005524999999999677, y: 0.06976635062655791 },\n { x: 0.0000055259999999996765, y: 0.091519918453971 },\n { x: 0.000005526999999999676, y: 0.10498531267663636 },\n { x: 0.000005527999999999676, y: 0.06956006391119827 },\n { x: 0.0000055289999999996755, y: 0.06352765494242416 },\n { x: 0.000005529999999999675, y: 0.10674885393399733 },\n { x: 0.000005530999999999675, y: 0.03845315376013245 },\n { x: 0.0000055319999999996745, y: 0.09395258252490958 },\n { x: 0.000005532999999999674, y: 0.09165693931205204 },\n { x: 0.000005533999999999674, y: 0.10013351043621249 },\n { x: 0.000005534999999999673, y: 0.06275850535907337 },\n { x: 0.000005535999999999673, y: 0.030101662964757935 },\n { x: 0.000005536999999999673, y: 0.05505505969313184 },\n { x: 0.000005537999999999672, y: 0.08493268286995068 },\n { x: 0.000005538999999999672, y: 0.05678889916332152 },\n { x: 0.000005539999999999672, y: 0.08877059483344836 },\n { x: 0.000005540999999999671, y: 0.0289880266496682 },\n { x: 0.000005541999999999671, y: 0.08043649181792725 },\n { x: 0.000005542999999999671, y: 0.09120298042416897 },\n { x: 0.00000554399999999967, y: 0.0345720008563637 },\n { x: 0.00000554499999999967, y: 0.03572994787368253 },\n { x: 0.00000554599999999967, y: 0.06472833872296682 },\n { x: 0.000005546999999999669, y: 0.03295586157200745 },\n { x: 0.000005547999999999669, y: 0.05475796916322858 },\n { x: 0.0000055489999999996685, y: 0.04188314826564839 },\n { x: 0.000005549999999999668, y: 0.05967081995622031 },\n { x: 0.000005550999999999668, y: 0.06831314388768701 },\n { x: 0.0000055519999999996675, y: 0.08983411770178787 },\n { x: 0.000005552999999999667, y: 0.03991504517733825 },\n { x: 0.000005553999999999667, y: 0.05925226625153502 },\n { x: 0.0000055549999999996664, y: 0.04213797468861381 },\n { x: 0.000005555999999999666, y: 0.06133667932342348 },\n { x: 0.000005556999999999666, y: 0.041887564770085095 },\n { x: 0.000005557999999999665, y: 0.08612857045103753 },\n { x: 0.000005558999999999665, y: 0.020248153390826376 },\n { x: 0.000005559999999999665, y: 0.03164169606716981 },\n { x: 0.000005560999999999664, y: 0.07439892408241605 },\n { x: 0.000005561999999999664, y: 0.08603765226763874 },\n { x: 0.000005562999999999664, y: 0.07827677519440465 },\n { x: 0.000005563999999999663, y: 0.06513240570996488 },\n { x: 0.000005564999999999663, y: 0.02448013085913827 },\n { x: 0.000005565999999999663, y: 0.03917620292257246 },\n { x: 0.000005566999999999662, y: 0.07844418400318481 },\n { x: 0.000005567999999999662, y: 0.012394745338080125 },\n { x: 0.0000055689999999996616, y: 0.030328527869683458 },\n { x: 0.000005569999999999661, y: 0.01588090917558188 },\n { x: 0.000005570999999999661, y: 0.0829305323787197 },\n { x: 0.0000055719999999996605, y: 0.03550676767462757 },\n { x: 0.00000557299999999966, y: 0.011737543384944753 },\n { x: 0.00000557399999999966, y: 0.04126140288967981 },\n { x: 0.0000055749999999996595, y: 0.05280712986026968 },\n { x: 0.000005575999999999659, y: 0.057018071381428476 },\n { x: 0.000005576999999999659, y: 0.05878194387415269 },\n { x: 0.0000055779999999996584, y: 0.06328945832781877 },\n { x: 0.000005578999999999658, y: 0.041681993739289165 },\n { x: 0.000005579999999999658, y: 0.04030560270657089 },\n { x: 0.000005580999999999657, y: 0.01663745748174005 },\n { x: 0.000005581999999999657, y: 0.008377372389003122 },\n { x: 0.000005582999999999657, y: 0.0581032421914115 },\n { x: 0.000005583999999999656, y: 0.047908410907343754 },\n { x: 0.000005584999999999656, y: 0.02878497276898038 },\n { x: 0.000005585999999999656, y: 0.008901174013913 },\n { x: 0.000005586999999999655, y: 0.06885914251102164 },\n { x: 0.000005587999999999655, y: 0.06429992249267769 },\n { x: 0.000005588999999999655, y: 0.000893097550625617 },\n { x: 0.000005589999999999654, y: 0.009171913191069532 },\n { x: 0.000005590999999999654, y: 0.042538012600782424 },\n { x: 0.0000055919999999996536, y: 0.019876336355162325 },\n { x: 0.000005592999999999653, y: 0.04644930626397727 },\n { x: 0.000005593999999999653, y: 0.024814587353290632 },\n { x: 0.0000055949999999996525, y: 0.023356932936255487 },\n { x: 0.000005595999999999652, y: 0.05667405242314277 },\n { x: 0.000005596999999999652, y: 0.05702008654319588 },\n { x: 0.0000055979999999996515, y: 0.02533705042232546 },\n { x: 0.000005598999999999651, y: 0.04476316702132985 },\n { x: 0.000005599999999999651, y: 0.05183551189811624 },\n { x: 0.00000560099999999965, y: 0.06481245288568309 },\n { x: 0.00000560199999999965, y: 0.06648602755689068 },\n { x: 0.00000560299999999965, y: 0.048773842554481 },\n { x: 0.000005603999999999649, y: 0.059011635578218376 },\n { x: 0.000005604999999999649, y: 0.00771297474421357 },\n { x: 0.000005605999999999649, y: -0.003163921360415746 },\n { x: 0.000005606999999999648, y: 0.04008631246664182 },\n { x: 0.000005607999999999648, y: -0.0069742596640481914 },\n { x: 0.000005608999999999648, y: 0.02025163971765502 },\n { x: 0.000005609999999999647, y: 0.024651007856440827 },\n { x: 0.000005610999999999647, y: 0.044386545510387884 },\n { x: 0.000005611999999999647, y: -0.013722603566318114 },\n { x: 0.000005612999999999646, y: 0.06068856556859613 },\n { x: 0.000005613999999999646, y: 0.040169789593820476 },\n { x: 0.0000056149999999996455, y: -0.01476290078877963 },\n { x: 0.000005615999999999645, y: 0.01105940223566256 },\n { x: 0.000005616999999999645, y: 0.029469720356187813 },\n { x: 0.0000056179999999996445, y: 0.005596016899092072 },\n { x: 0.000005618999999999644, y: 0.02150559823373598 },\n { x: 0.000005619999999999644, y: 0.04407202625207027 },\n { x: 0.0000056209999999996435, y: 0.03789016483067496 },\n { x: 0.000005621999999999643, y: 0.0019221746808426171 },\n { x: 0.000005622999999999643, y: 0.011138714956326418 },\n { x: 0.000005623999999999642, y: 0.020848669295159238 },\n { x: 0.000005624999999999642, y: 0.018516585930231415 },\n { x: 0.000005625999999999642, y: 0.03051620132813243 },\n { x: 0.000005626999999999641, y: -0.011585509259803254 },\n { x: 0.000005627999999999641, y: -0.022120878626000838 },\n { x: 0.000005628999999999641, y: -0.0007450149818789137 },\n { x: 0.00000562999999999964, y: 0.0380411152728801 },\n { x: 0.00000563099999999964, y: 0.01197382497145123 },\n { x: 0.00000563199999999964, y: 0.046828271907010034 },\n { x: 0.000005632999999999639, y: 0.02218981213052127 },\n { x: 0.000005633999999999639, y: 0.017025442690287405 },\n { x: 0.0000056349999999996386, y: -0.026792973179775893 },\n { x: 0.000005635999999999638, y: 0.006229005552760826 },\n { x: 0.000005636999999999638, y: -0.014025598925351625 },\n { x: 0.0000056379999999996375, y: 0.020133427649640084 },\n { x: 0.000005638999999999637, y: -0.009813053436434353 },\n { x: 0.000005639999999999637, y: 0.024055890013388023 },\n { x: 0.0000056409999999996365, y: 0.0015704902997545154 },\n { x: 0.000005641999999999636, y: -0.026148011260336345 },\n { x: 0.000005642999999999636, y: -0.024030178639016027 },\n { x: 0.0000056439999999996354, y: -0.026844628520719758 },\n { x: 0.000005644999999999635, y: 0.034111634667024014 },\n { x: 0.000005645999999999635, y: 0.026165124007766553 },\n { x: 0.000005646999999999634, y: 0.0006789787539526492 },\n { x: 0.000005647999999999634, y: -0.011217812063661143 },\n { x: 0.000005648999999999634, y: 0.0382674995511739 },\n { x: 0.000005649999999999633, y: -0.004292650252120828 },\n { x: 0.000005650999999999633, y: 0.03210363708760751 },\n { x: 0.000005651999999999633, y: 0.023190536225305574 },\n { x: 0.000005652999999999632, y: 0.020700088003767252 },\n { x: 0.000005653999999999632, y: 0.01012234136100479 },\n { x: 0.000005654999999999632, y: 0.0318527058706626 },\n { x: 0.000005655999999999631, y: 0.001701215982684314 },\n { x: 0.000005656999999999631, y: -0.006505403742632854 },\n { x: 0.0000056579999999996306, y: 0.028627052201854054 },\n { x: 0.00000565899999999963, y: 0.0333194242382491 },\n { x: 0.00000565999999999963, y: 0.019532633586378263 },\n { x: 0.0000056609999999996295, y: -0.014224921413054835 },\n { x: 0.000005661999999999629, y: 0.0028077796856473937 },\n { x: 0.000005662999999999629, y: 0.003776555928742575 },\n { x: 0.0000056639999999996285, y: -0.012064414528100555 },\n { x: 0.000005664999999999628, y: -0.022332196186054018 },\n { x: 0.000005665999999999628, y: 0.022280199895584857 },\n { x: 0.0000056669999999996274, y: -0.031229727201994593 },\n { x: 0.000005667999999999627, y: -0.001943633632733542 },\n { x: 0.000005668999999999627, y: -0.008853747046028863 },\n { x: 0.000005669999999999626, y: 0.007163590651577227 },\n { x: 0.000005670999999999626, y: -0.023900501590345243 },\n { x: 0.000005671999999999626, y: 0.027872112577264727 },\n { x: 0.000005672999999999625, y: 0.016270034846638557 },\n { x: 0.000005673999999999625, y: -0.03402160781208134 },\n { x: 0.000005674999999999625, y: -0.045153928033824814 },\n { x: 0.000005675999999999624, y: 0.005610116785369946 },\n { x: 0.000005676999999999624, y: -0.035385155411857126 },\n { x: 0.000005677999999999624, y: 0.0009839181855679432 },\n { x: 0.000005678999999999623, y: -0.04804510424331552 },\n { x: 0.000005679999999999623, y: -0.030375441649107444 },\n { x: 0.0000056809999999996225, y: -0.02013841317395565 },\n { x: 0.000005681999999999622, y: -0.006114350162281739 },\n { x: 0.000005682999999999622, y: 0.014729657642163801 },\n { x: 0.0000056839999999996215, y: -0.02097342675851997 },\n { x: 0.000005684999999999621, y: 0.006885734269905498 },\n { x: 0.000005685999999999621, y: -0.03729989834911218 },\n { x: 0.0000056869999999996205, y: -0.04183174185026434 },\n { x: 0.00000568799999999962, y: -0.0013554810021687985 },\n { x: 0.00000568899999999962, y: 0.01630753353225366 },\n { x: 0.000005689999999999619, y: 0.015104116756579227 },\n { x: 0.000005690999999999619, y: 0.012927539898602194 },\n { x: 0.000005691999999999619, y: -0.03977001044925549 },\n { x: 0.000005692999999999618, y: 0.017211162168701364 },\n { x: 0.000005693999999999618, y: 0.014307725013690865 },\n { x: 0.000005694999999999618, y: -0.018000673069227983 },\n { x: 0.000005695999999999617, y: -0.058923782321724086 },\n { x: 0.000005696999999999617, y: -0.05799732387748946 },\n { x: 0.000005697999999999617, y: -0.03218036782615146 },\n { x: 0.000005698999999999616, y: -0.033576925726694365 },\n { x: 0.000005699999999999616, y: -0.02337175629493938 },\n { x: 0.000005700999999999616, y: -0.028183839285457153 },\n { x: 0.000005701999999999615, y: -0.004655059738724345 },\n { x: 0.000005702999999999615, y: -0.0035354414088171193 },\n { x: 0.0000057039999999996145, y: -0.03877360283304894 },\n { x: 0.000005704999999999614, y: -0.017163295343060547 },\n { x: 0.000005705999999999614, y: -0.058584890888645 },\n { x: 0.0000057069999999996135, y: -0.05667109666255698 },\n { x: 0.000005707999999999613, y: -0.03025993073962001 },\n { x: 0.000005708999999999613, y: -0.0024633710923877283 },\n { x: 0.0000057099999999996124, y: 0.00857043003805133 },\n { x: 0.000005710999999999612, y: -0.035917369727011775 },\n { x: 0.000005711999999999612, y: -0.039152484702586574 },\n { x: 0.000005712999999999611, y: -0.04057079186556319 },\n { x: 0.000005713999999999611, y: -0.0330401549658487 },\n { x: 0.000005714999999999611, y: -0.023025479967120448 },\n { x: 0.00000571599999999961, y: 0.005593885495607357 },\n { x: 0.00000571699999999961, y: -0.027941103751881705 },\n { x: 0.00000571799999999961, y: 0.001835736269430531 },\n { x: 0.000005718999999999609, y: -0.019586099052532863 },\n { x: 0.000005719999999999609, y: 0.004212557041339639 },\n { x: 0.000005720999999999609, y: -0.030891088198648112 },\n { x: 0.000005721999999999608, y: -0.06606298048996752 },\n { x: 0.000005722999999999608, y: -0.03688061256835673 },\n { x: 0.0000057239999999996076, y: -0.02469465223837293 },\n { x: 0.000005724999999999607, y: -0.06398921118719145 },\n { x: 0.000005725999999999607, y: -0.07192800213483119 },\n { x: 0.0000057269999999996065, y: -0.0273409370204854 },\n { x: 0.000005727999999999606, y: -0.034001471770512236 },\n { x: 0.000005728999999999606, y: 0.0007413998196445018 },\n { x: 0.0000057299999999996055, y: -0.03232229316025801 },\n { x: 0.000005730999999999605, y: -0.025352736378456274 },\n { x: 0.000005731999999999605, y: -0.010810158447983696 },\n { x: 0.0000057329999999996044, y: -0.0742865472599629 },\n { x: 0.000005733999999999604, y: -0.0598174152222143 },\n { x: 0.000005734999999999604, y: -0.05034602665720305 },\n { x: 0.000005735999999999603, y: -0.019900323098025554 },\n { x: 0.000005736999999999603, y: -0.0351786840299238 },\n { x: 0.000005737999999999603, y: -0.008071725677343523 },\n { x: 0.000005738999999999602, y: -0.03750508446008024 },\n { x: 0.000005739999999999602, y: -0.0231612217333422 },\n { x: 0.000005740999999999602, y: -0.05857153813838402 },\n { x: 0.000005741999999999601, y: -0.07171444837134333 },\n { x: 0.000005742999999999601, y: -0.02692908700371896 },\n { x: 0.000005743999999999601, y: -0.0342765679111989 },\n { x: 0.0000057449999999996, y: -0.062147713486180325 },\n { x: 0.0000057459999999996, y: -0.019502456493431998 },\n { x: 0.0000057469999999995996, y: -0.015250449542157266 },\n { x: 0.000005747999999999599, y: -0.07235146147523647 },\n { x: 0.000005748999999999599, y: -0.030868051789735604 },\n { x: 0.0000057499999999995985, y: -0.06986747041760005 },\n { x: 0.000005750999999999598, y: -0.02296962298268029 },\n { x: 0.000005751999999999598, y: -0.036844746937660225 },\n { x: 0.0000057529999999995975, y: -0.041444924958916364 },\n { x: 0.000005753999999999597, y: -0.03635059601750078 },\n { x: 0.000005754999999999597, y: -0.017255796762393288 },\n { x: 0.000005755999999999596, y: -0.06838302329634105 },\n { x: 0.000005756999999999596, y: -0.048500918553307945 },\n { x: 0.000005757999999999596, y: -0.03221486912063589 },\n { x: 0.000005758999999999595, y: -0.056612019736647416 },\n { x: 0.000005759999999999595, y: -0.07851138654631737 },\n { x: 0.000005760999999999595, y: -0.086695244252949 },\n { x: 0.000005761999999999594, y: -0.05944565333016504 },\n { x: 0.000005762999999999594, y: -0.04626958090971851 },\n { x: 0.000005763999999999594, y: -0.07713820159389875 },\n { x: 0.000005764999999999593, y: -0.044222369540555986 },\n { x: 0.000005765999999999593, y: -0.02205590508494688 },\n { x: 0.000005766999999999593, y: -0.07423921875600382 },\n { x: 0.000005767999999999592, y: -0.028091550132308993 },\n { x: 0.000005768999999999592, y: -0.02955325839615145 },\n { x: 0.0000057699999999995915, y: -0.039716320908441884 },\n { x: 0.000005770999999999591, y: -0.08987433853928249 },\n { x: 0.000005771999999999591, y: -0.039593569056114594 },\n { x: 0.0000057729999999995905, y: -0.06544983082951397 },\n { x: 0.00000577399999999959, y: -0.054205737912335836 },\n { x: 0.00000577499999999959, y: -0.02951098325132251 },\n { x: 0.0000057759999999995895, y: -0.06733467117567192 },\n { x: 0.000005776999999999589, y: -0.028024380404148886 },\n { x: 0.000005777999999999589, y: -0.0712905588570015 },\n { x: 0.000005778999999999588, y: -0.021319793610111132 },\n { x: 0.000005779999999999588, y: -0.061936224790157035 },\n { x: 0.000005780999999999588, y: -0.03538994017350089 },\n { x: 0.000005781999999999587, y: -0.06010415874927883 },\n { x: 0.000005782999999999587, y: -0.07341780416746682 },\n { x: 0.000005783999999999587, y: -0.06952239980928439 },\n { x: 0.000005784999999999586, y: -0.09604945375391341 },\n { x: 0.000005785999999999586, y: -0.07383273485678472 },\n { x: 0.000005786999999999586, y: -0.07228634756174412 },\n { x: 0.000005787999999999585, y: -0.07188594847123486 },\n { x: 0.000005788999999999585, y: -0.09846154076742819 },\n { x: 0.0000057899999999995846, y: -0.07359710365589271 },\n { x: 0.000005790999999999584, y: -0.09585404306112505 },\n { x: 0.000005791999999999584, y: -0.042498856992923786 },\n { x: 0.0000057929999999995835, y: -0.08444487494729958 },\n { x: 0.000005793999999999583, y: -0.05122697019317219 },\n { x: 0.000005794999999999583, y: -0.08604394352224352 },\n { x: 0.0000057959999999995825, y: -0.030101249188827194 },\n { x: 0.000005796999999999582, y: -0.0667469620884695 },\n { x: 0.000005797999999999582, y: -0.043209639883141304 },\n { x: 0.0000057989999999995814, y: -0.09190380166489767 },\n { x: 0.000005799999999999581, y: -0.06737941949782927 },\n { x: 0.000005800999999999581, y: -0.04756534869627232 },\n { x: 0.00000580199999999958, y: -0.04501087846259548 },\n { x: 0.00000580299999999958, y: -0.06503399123981082 },\n { x: 0.00000580399999999958, y: -0.08934837554224814 },\n { x: 0.000005804999999999579, y: -0.03498435728830198 },\n { x: 0.000005805999999999579, y: -0.10021236069484064 },\n { x: 0.000005806999999999579, y: -0.03888367300232594 },\n { x: 0.000005807999999999578, y: -0.06990645854582117 },\n { x: 0.000005808999999999578, y: -0.09830621662067195 },\n { x: 0.000005809999999999578, y: -0.0761677701208191 },\n { x: 0.000005810999999999577, y: -0.09925095261976043 },\n { x: 0.000005811999999999577, y: -0.061494744469045876 },\n { x: 0.0000058129999999995766, y: -0.08744081456429113 },\n { x: 0.000005813999999999576, y: -0.06034985228538464 },\n { x: 0.000005814999999999576, y: -0.09890070155560016 },\n { x: 0.0000058159999999995755, y: -0.06944561456294805 },\n { x: 0.000005816999999999575, y: -0.058741832342005924 },\n { x: 0.000005817999999999575, y: -0.09623316595760983 },\n { x: 0.0000058189999999995745, y: -0.048109504614466614 },\n { x: 0.000005819999999999574, y: -0.044744918324178456 },\n { x: 0.000005820999999999574, y: -0.08139055414309444 },\n { x: 0.0000058219999999995734, y: -0.03909365340306212 },\n { x: 0.000005822999999999573, y: -0.10759857263925998 },\n { x: 0.000005823999999999573, y: -0.06127175766808743 },\n { x: 0.000005824999999999572, y: -0.070658348968339 },\n { x: 0.000005825999999999572, y: -0.09527570808349686 },\n { x: 0.000005826999999999572, y: -0.10458701157604444 },\n { x: 0.000005827999999999571, y: -0.0685408731791968 },\n { x: 0.000005828999999999571, y: -0.05345705577140911 },\n { x: 0.000005829999999999571, y: -0.10503183660279276 },\n { x: 0.00000583099999999957, y: -0.03821669277482671 },\n { x: 0.00000583199999999957, y: -0.09503935934061356 },\n { x: 0.00000583299999999957, y: -0.041760977192790316 },\n { x: 0.000005833999999999569, y: -0.09242569294401952 },\n { x: 0.000005834999999999569, y: -0.08454161908547561 },\n { x: 0.0000058359999999995685, y: -0.05612573639631745 },\n { x: 0.000005836999999999568, y: -0.08202227086407211 },\n { x: 0.000005837999999999568, y: -0.07758990562205759 },\n { x: 0.0000058389999999995675, y: -0.08075085651540101 },\n { x: 0.000005839999999999567, y: -0.06291265191062109 },\n { x: 0.000005840999999999567, y: -0.07909716490356195 },\n { x: 0.0000058419999999995665, y: -0.0959729041635939 },\n { x: 0.000005842999999999566, y: -0.10767115679036697 },\n { x: 0.000005843999999999566, y: -0.05792539181377214 },\n { x: 0.000005844999999999565, y: -0.11389971079713293 },\n { x: 0.000005845999999999565, y: -0.07854169439070142 },\n { x: 0.000005846999999999565, y: -0.07827634415689541 },\n { x: 0.000005847999999999564, y: -0.10155207383910182 },\n { x: 0.000005848999999999564, y: -0.08406951523294798 },\n { x: 0.000005849999999999564, y: -0.0699506482479303 },\n { x: 0.000005850999999999563, y: -0.06777870234520147 },\n { x: 0.000005851999999999563, y: -0.05073802522998252 },\n { x: 0.000005852999999999563, y: -0.07179442228549544 },\n { x: 0.000005853999999999562, y: -0.04295257733926645 },\n { x: 0.000005854999999999562, y: -0.10685934190128094 },\n { x: 0.000005855999999999562, y: -0.08571282539546297 },\n { x: 0.000005856999999999561, y: -0.07756092374002004 },\n { x: 0.000005857999999999561, y: -0.11143553063146022 },\n { x: 0.0000058589999999995605, y: -0.06269409753144073 },\n { x: 0.00000585999999999956, y: -0.06191712621073414 },\n { x: 0.00000586099999999956, y: -0.05296164863575473 },\n { x: 0.0000058619999999995595, y: -0.05806258741800971 },\n { x: 0.000005862999999999559, y: -0.0839779026597179 },\n { x: 0.000005863999999999559, y: -0.02956607513367944 },\n { x: 0.0000058649999999995584, y: -0.04733140876106485 },\n { x: 0.000005865999999999558, y: -0.05972090461448733 },\n { x: 0.000005866999999999558, y: -0.07941774251246225 },\n { x: 0.000005867999999999557, y: -0.10381420716458857 },\n { x: 0.000005868999999999557, y: -0.07686181733701303 },\n { x: 0.000005869999999999557, y: -0.0659154356248962 },\n { x: 0.000005870999999999556, y: -0.09342745403201996 },\n { x: 0.000005871999999999556, y: -0.05531922712482367 },\n { x: 0.000005872999999999556, y: -0.0858453340625318 },\n { x: 0.000005873999999999555, y: -0.08900667413725324 },\n { x: 0.000005874999999999555, y: -0.07964332248228838 },\n { x: 0.000005875999999999555, y: -0.06105336903909923 },\n { x: 0.000005876999999999554, y: -0.04684664695442535 },\n { x: 0.000005877999999999554, y: -0.06010652615476571 },\n { x: 0.0000058789999999995536, y: -0.11862538884058255 },\n { x: 0.000005879999999999553, y: -0.08786857629776401 },\n { x: 0.000005880999999999553, y: -0.06408928610705761 },\n { x: 0.0000058819999999995525, y: -0.08211332744981444 },\n { x: 0.000005882999999999552, y: -0.04710852824275628 },\n { x: 0.000005883999999999552, y: -0.11530689356530775 },\n { x: 0.0000058849999999995515, y: -0.10714248396784734 },\n { x: 0.000005885999999999551, y: -0.04903233093201889 },\n { x: 0.000005886999999999551, y: -0.06841522209935037 },\n { x: 0.0000058879999999995504, y: -0.0975377838889517 },\n { x: 0.00000588899999999955, y: -0.10893720536044163 },\n { x: 0.00000588999999999955, y: -0.07614668100418942 },\n { x: 0.000005890999999999549, y: -0.11792052763863067 },\n { x: 0.000005891999999999549, y: -0.08102620450522152 },\n { x: 0.000005892999999999549, y: -0.04999309195292643 },\n { x: 0.000005893999999999548, y: -0.05615823752048191 },\n { x: 0.000005894999999999548, y: -0.11101672133657967 },\n { x: 0.000005895999999999548, y: -0.06470582537956217 },\n { x: 0.000005896999999999547, y: -0.07980153328623672 },\n { x: 0.000005897999999999547, y: -0.06913510953817037 },\n { x: 0.000005898999999999547, y: -0.09508242504738557 },\n { x: 0.000005899999999999546, y: -0.07972709427153665 },\n { x: 0.000005900999999999546, y: -0.11734885941297832 },\n { x: 0.0000059019999999995456, y: -0.10392499208624882 },\n { x: 0.000005902999999999545, y: -0.06483729796600934 },\n { x: 0.000005903999999999545, y: -0.09431108480123426 },\n { x: 0.0000059049999999995445, y: -0.06989015945749583 },\n { x: 0.000005905999999999544, y: -0.054335738909329676 },\n { x: 0.000005906999999999544, y: -0.10026847250536272 },\n { x: 0.0000059079999999995435, y: -0.055882354554928806 },\n { x: 0.000005908999999999543, y: -0.0519818775919906 },\n { x: 0.000005909999999999543, y: -0.11121080162286982 },\n { x: 0.000005910999999999542, y: -0.11681847169794696 },\n { x: 0.000005911999999999542, y: -0.09268630378783238 },\n { x: 0.000005912999999999542, y: -0.09452583849045111 },\n { x: 0.000005913999999999541, y: -0.06130397024547162 },\n { x: 0.000005914999999999541, y: -0.08070615553185966 },\n { x: 0.000005915999999999541, y: -0.12395475405748313 },\n { x: 0.00000591699999999954, y: -0.10562715510100557 },\n { x: 0.00000591799999999954, y: -0.09464580929797783 },\n { x: 0.00000591899999999954, y: -0.06835399556451352 },\n { x: 0.000005919999999999539, y: -0.0904248918028055 },\n { x: 0.000005920999999999539, y: -0.0851291615682976 },\n { x: 0.000005921999999999539, y: -0.0962904531864375 },\n { x: 0.000005922999999999538, y: -0.06634897713627076 },\n { x: 0.000005923999999999538, y: -0.10524807821450383 },\n { x: 0.0000059249999999995375, y: -0.09720623615497455 },\n { x: 0.000005925999999999537, y: -0.12306326324707181 },\n { x: 0.000005926999999999537, y: -0.09414363035324143 },\n { x: 0.0000059279999999995365, y: -0.10539974097706634 },\n { x: 0.000005928999999999536, y: -0.09402820172700005 },\n { x: 0.000005929999999999536, y: -0.11363129966983088 },\n { x: 0.0000059309999999995355, y: -0.10748435559122782 },\n { x: 0.000005931999999999535, y: -0.12289354951166914 },\n { x: 0.000005932999999999535, y: -0.07524487266614625 },\n { x: 0.000005933999999999534, y: -0.10768494654670385 },\n { x: 0.000005934999999999534, y: -0.058131404847012326 },\n { x: 0.000005935999999999534, y: -0.0973274653732348 },\n { x: 0.000005936999999999533, y: -0.07131325974688427 },\n { x: 0.000005937999999999533, y: -0.12189395817163214 },\n { x: 0.000005938999999999533, y: -0.09204776659183939 },\n { x: 0.000005939999999999532, y: -0.10527294678696195 },\n { x: 0.000005940999999999532, y: -0.07086144962321585 },\n { x: 0.000005941999999999532, y: -0.10272133143303944 },\n { x: 0.000005942999999999531, y: -0.0797344633143732 },\n { x: 0.000005943999999999531, y: -0.11816574875331506 },\n { x: 0.0000059449999999995306, y: -0.07887916021605505 },\n { x: 0.00000594599999999953, y: -0.08704605197874019 },\n { x: 0.00000594699999999953, y: -0.0659776751487626 },\n { x: 0.0000059479999999995295, y: -0.06800937055616915 },\n { x: 0.000005948999999999529, y: -0.08476432781742672 },\n { x: 0.000005949999999999529, y: -0.07276212001018986 },\n { x: 0.0000059509999999995285, y: -0.11097583527217 },\n { x: 0.000005951999999999528, y: -0.09114990050346133 },\n { x: 0.000005952999999999528, y: -0.05321163115913629 },\n { x: 0.0000059539999999995274, y: -0.10014269309055097 },\n { x: 0.000005954999999999527, y: -0.09332466712184218 },\n { x: 0.000005955999999999527, y: -0.10958659355926563 },\n { x: 0.000005956999999999526, y: -0.10598461377439711 },\n { x: 0.000005957999999999526, y: -0.11832787511236788 },\n { x: 0.000005958999999999526, y: -0.08767203957483559 },\n { x: 0.000005959999999999525, y: -0.10911507089919262 },\n { x: 0.000005960999999999525, y: -0.06723931057661828 },\n { x: 0.000005961999999999525, y: -0.11132910373998792 },\n { x: 0.000005962999999999524, y: -0.08918336998757419 },\n { x: 0.000005963999999999524, y: -0.0940508203755534 },\n { x: 0.000005964999999999524, y: -0.1158160570813608 },\n { x: 0.000005965999999999523, y: -0.05695631244678885 },\n { x: 0.000005966999999999523, y: -0.08747552257005412 },\n { x: 0.0000059679999999995226, y: -0.049069820854011625 },\n { x: 0.000005968999999999522, y: -0.08611300731885935 },\n { x: 0.000005969999999999522, y: -0.07745093107225963 },\n { x: 0.0000059709999999995215, y: -0.0703077715906806 },\n { x: 0.000005971999999999521, y: -0.05065555734157756 },\n { x: 0.000005972999999999521, y: -0.06715521799087985 },\n { x: 0.0000059739999999995205, y: -0.08516127281578605 },\n { x: 0.00000597499999999952, y: -0.11216249473970795 },\n { x: 0.00000597599999999952, y: -0.06832514700258674 },\n { x: 0.0000059769999999995194, y: -0.08999450097333302 },\n { x: 0.000005977999999999519, y: -0.1014833067655432 },\n { x: 0.000005978999999999519, y: -0.1209399536318487 },\n { x: 0.000005979999999999518, y: -0.08368603118831162 },\n { x: 0.000005980999999999518, y: -0.1175953409073949 },\n { x: 0.000005981999999999518, y: -0.10910917224710695 },\n { x: 0.000005982999999999517, y: -0.08285773812355521 },\n { x: 0.000005983999999999517, y: -0.09761625529116995 },\n { x: 0.000005984999999999517, y: -0.06371983111729634 },\n { x: 0.000005985999999999516, y: -0.09894572278772236 },\n { x: 0.000005986999999999516, y: -0.061733402000615736 },\n { x: 0.000005987999999999516, y: -0.06557296426887031 },\n { x: 0.000005988999999999515, y: -0.07962959709813179 },\n { x: 0.000005989999999999515, y: -0.10108177554816068 },\n { x: 0.0000059909999999995145, y: -0.04700005491072034 },\n { x: 0.000005991999999999514, y: -0.08067027534263219 },\n { x: 0.000005992999999999514, y: -0.07513091808886702 },\n { x: 0.0000059939999999995135, y: -0.09841254198947565 },\n { x: 0.000005994999999999513, y: -0.056626240380511075 },\n { x: 0.000005995999999999513, y: -0.08745953607336093 },\n { x: 0.0000059969999999995125, y: -0.07538686897303558 },\n { x: 0.000005997999999999512, y: -0.08670448141718652 },\n { x: 0.000005998999999999512, y: -0.1073141424308152 },\n { x: 0.000005999999999999511, y: -0.10771847711884708 },\n { x: 0.000006000999999999511, y: -0.12195165876996406 },\n { x: 0.000006001999999999511, y: -0.08644102670296684 },\n { x: 0.00000600299999999951, y: -0.09563729754616583 },\n { x: 0.00000600399999999951, y: -0.08960733702434961 },\n { x: 0.00000600499999999951, y: -0.11041109453869191 },\n { x: 0.000006005999999999509, y: -0.056102866895571535 },\n { x: 0.000006006999999999509, y: -0.08364941214416051 },\n { x: 0.000006007999999999509, y: -0.05325541192381518 },\n { x: 0.000006008999999999508, y: -0.09108186690943285 },\n { x: 0.000006009999999999508, y: -0.08458580035965713 },\n { x: 0.000006010999999999508, y: -0.05507224504112952 },\n { x: 0.000006011999999999507, y: -0.10296330561322223 },\n { x: 0.000006012999999999507, y: -0.09488929278865856 },\n { x: 0.0000060139999999995065, y: -0.06013245512926522 },\n { x: 0.000006014999999999506, y: -0.08934633450284106 },\n { x: 0.000006015999999999506, y: -0.08259162631814278 },\n { x: 0.0000060169999999995055, y: -0.05357538661837122 },\n { x: 0.000006017999999999505, y: -0.05204831036386155 },\n { x: 0.000006018999999999505, y: -0.06344763781702512 },\n { x: 0.0000060199999999995044, y: -0.09482085670357751 },\n { x: 0.000006020999999999504, y: -0.1163725227165778 },\n { x: 0.000006021999999999504, y: -0.05815953680107275 },\n { x: 0.000006022999999999503, y: -0.09658067692709792 },\n { x: 0.000006023999999999503, y: -0.11752584670711022 },\n { x: 0.000006024999999999503, y: -0.08223820261654766 },\n { x: 0.000006025999999999502, y: -0.09598521850349812 },\n { x: 0.000006026999999999502, y: -0.042073398825239715 },\n { x: 0.000006027999999999502, y: -0.07048987614783778 },\n { x: 0.000006028999999999501, y: -0.09279478329200198 },\n { x: 0.000006029999999999501, y: -0.07895609564632952 },\n { x: 0.000006030999999999501, y: -0.10784860207727726 },\n { x: 0.0000060319999999995, y: -0.053028161190770064 },\n { x: 0.0000060329999999995, y: -0.0829248927180219 },\n { x: 0.0000060339999999994996, y: -0.0818058971188156 },\n { x: 0.000006034999999999499, y: -0.0664053590475456 },\n { x: 0.000006035999999999499, y: -0.08782009530975278 },\n { x: 0.0000060369999999994985, y: -0.07147853880348622 },\n { x: 0.000006037999999999498, y: -0.060472656767288614 },\n { x: 0.000006038999999999498, y: -0.10469031247704569 },\n { x: 0.0000060399999999994975, y: -0.10442521789887405 },\n { x: 0.000006040999999999497, y: -0.1054544936079513 },\n { x: 0.000006041999999999497, y: -0.06643322660601902 },\n { x: 0.0000060429999999994964, y: -0.10928909518495153 },\n { x: 0.000006043999999999496, y: -0.08416396760142379 },\n { x: 0.000006044999999999496, y: -0.07496725972070763 },\n { x: 0.000006045999999999495, y: -0.06809265692172944 },\n { x: 0.000006046999999999495, y: -0.10921065249892614 },\n { x: 0.000006047999999999495, y: -0.05430327227813113 },\n { x: 0.000006048999999999494, y: -0.07028211882368447 },\n { x: 0.000006049999999999494, y: -0.07704224796860162 },\n { x: 0.000006050999999999494, y: -0.0506767095500774 },\n { x: 0.000006051999999999493, y: -0.06114107076207647 },\n { x: 0.000006052999999999493, y: -0.04604035944602747 },\n { x: 0.000006053999999999493, y: -0.08062917041039515 },\n { x: 0.000006054999999999492, y: -0.08833735893986822 },\n { x: 0.000006055999999999492, y: -0.06978961323064778 },\n { x: 0.0000060569999999994916, y: -0.08892204483179389 },\n { x: 0.000006057999999999491, y: -0.08185808321114553 },\n { x: 0.000006058999999999491, y: -0.09922425884615114 },\n { x: 0.0000060599999999994905, y: -0.06654865516326708 },\n { x: 0.00000606099999999949, y: -0.09902557428036265 },\n { x: 0.00000606199999999949, y: -0.07919456209501505 },\n { x: 0.0000060629999999994895, y: -0.037640796437529905 },\n { x: 0.000006063999999999489, y: -0.04633714536331375 },\n { x: 0.000006064999999999489, y: -0.10412942784348213 },\n { x: 0.000006065999999999488, y: -0.08689579722150406 },\n { x: 0.000006066999999999488, y: -0.06252268310524947 },\n { x: 0.000006067999999999488, y: -0.06216046889070501 },\n { x: 0.000006068999999999487, y: -0.036914977347461485 },\n { x: 0.000006069999999999487, y: -0.048231801694563134 },\n { x: 0.000006070999999999487, y: -0.05376265197084077 },\n { x: 0.000006071999999999486, y: -0.10214662605294006 },\n { x: 0.000006072999999999486, y: -0.10076966877582873 },\n { x: 0.000006073999999999486, y: -0.09999743767546357 },\n { x: 0.000006074999999999485, y: -0.035350232451341466 },\n { x: 0.000006075999999999485, y: -0.09442745812635754 },\n { x: 0.000006076999999999485, y: -0.08258066472939925 },\n { x: 0.000006077999999999484, y: -0.10232536981876336 },\n { x: 0.000006078999999999484, y: -0.03543871468212978 },\n { x: 0.0000060799999999994835, y: -0.0759086260932181 },\n { x: 0.000006080999999999483, y: -0.043532089922470284 },\n { x: 0.000006081999999999483, y: -0.09943150345333678 },\n { x: 0.0000060829999999994825, y: -0.05249172545629008 },\n { x: 0.000006083999999999482, y: -0.0497052120447259 },\n { x: 0.000006084999999999482, y: -0.055959084079517794 },\n { x: 0.0000060859999999994815, y: -0.09319915565967628 },\n { x: 0.000006086999999999481, y: -0.07752902920304276 },\n { x: 0.000006087999999999481, y: -0.05946988747654547 },\n { x: 0.00000608899999999948, y: -0.051936078922685584 },\n { x: 0.00000608999999999948, y: -0.05051434375004746 },\n { x: 0.00000609099999999948, y: -0.09438022983296337 },\n { x: 0.000006091999999999479, y: -0.05586243002483793 },\n { x: 0.000006092999999999479, y: -0.03023407036649725 },\n { x: 0.000006093999999999479, y: -0.03258275009046126 },\n { x: 0.000006094999999999478, y: -0.1024980044093661 },\n { x: 0.000006095999999999478, y: -0.09275611915316864 },\n { x: 0.000006096999999999478, y: -0.032795237526358004 },\n { x: 0.000006097999999999477, y: -0.030310105665027724 },\n { x: 0.000006098999999999477, y: -0.04327997543941835 },\n { x: 0.0000060999999999994766, y: -0.0659210445886651 },\n { x: 0.000006100999999999476, y: -0.09146231185210932 },\n { x: 0.000006101999999999476, y: -0.037438521964976615 },\n { x: 0.0000061029999999994755, y: -0.06576506215415627 },\n { x: 0.000006103999999999475, y: -0.08739087890932841 },\n { x: 0.000006104999999999475, y: -0.06464663089288639 },\n { x: 0.0000061059999999994745, y: -0.08364440666422324 },\n { x: 0.000006106999999999474, y: -0.035357769772154185 },\n { x: 0.000006107999999999474, y: -0.06049417748147655 },\n { x: 0.0000061089999999994734, y: -0.060791295857051696 },\n { x: 0.000006109999999999473, y: -0.05212904990702236 },\n { x: 0.000006110999999999473, y: -0.06456353747402446 },\n { x: 0.000006111999999999472, y: -0.07640714343088706 },\n { x: 0.000006112999999999472, y: -0.08101522377396328 },\n { x: 0.000006113999999999472, y: -0.08368665115374006 },\n { x: 0.000006114999999999471, y: -0.05560243777778019 },\n { x: 0.000006115999999999471, y: -0.03740030383550171 },\n { x: 0.000006116999999999471, y: -0.07765490884778034 },\n { x: 0.00000611799999999947, y: -0.06269673414572502 },\n { x: 0.00000611899999999947, y: -0.039844701688237893 },\n { x: 0.00000611999999999947, y: -0.0765170312942845 },\n { x: 0.000006120999999999469, y: -0.07042859535984229 },\n { x: 0.000006121999999999469, y: -0.02187132839342848 },\n { x: 0.0000061229999999994686, y: -0.036588541096110413 },\n { x: 0.000006123999999999468, y: -0.06139969937508194 },\n { x: 0.000006124999999999468, y: -0.01829732470758478 },\n { x: 0.0000061259999999994675, y: -0.040682294409315894 },\n { x: 0.000006126999999999467, y: -0.039408999760286875 },\n { x: 0.000006127999999999467, y: -0.02279277932498827 },\n { x: 0.0000061289999999994665, y: -0.030005550988070537 },\n { x: 0.000006129999999999466, y: -0.08833548770587532 },\n { x: 0.000006130999999999466, y: -0.09032895729687224 },\n { x: 0.0000061319999999994654, y: -0.07981404934168174 },\n { x: 0.000006132999999999465, y: -0.06360981164020682 },\n { x: 0.000006133999999999465, y: -0.05635412185758906 },\n { x: 0.000006134999999999464, y: -0.019721263044769843 },\n { x: 0.000006135999999999464, y: -0.057318177733051506 },\n { x: 0.000006136999999999464, y: -0.07422415925552941 },\n { x: 0.000006137999999999463, y: -0.08831455583860398 },\n { x: 0.000006138999999999463, y: -0.07914814296113405 },\n { x: 0.000006139999999999463, y: -0.07254456063201074 },\n { x: 0.000006140999999999462, y: -0.07975292118650033 },\n { x: 0.000006141999999999462, y: -0.07703892120051815 },\n { x: 0.000006142999999999462, y: -0.03911335842578403 },\n { x: 0.000006143999999999461, y: -0.0624346534060086 },\n { x: 0.000006144999999999461, y: -0.03874617368811919 },\n { x: 0.0000061459999999994605, y: -0.0740110989151904 },\n { x: 0.00000614699999999946, y: -0.007660881498383919 },\n { x: 0.00000614799999999946, y: -0.011405687573579834 },\n { x: 0.0000061489999999994595, y: -0.012530470453577969 },\n { x: 0.000006149999999999459, y: -0.01523333144009003 },\n { x: 0.000006150999999999459, y: -0.05489184226314414 },\n { x: 0.0000061519999999994585, y: -0.039130272486857236 },\n { x: 0.000006152999999999458, y: -0.08293924945867172 },\n { x: 0.000006153999999999458, y: -0.02527022872010664 },\n { x: 0.000006154999999999457, y: -0.051431416284347095 },\n { x: 0.000006155999999999457, y: -0.016261011515250896 },\n { x: 0.000006156999999999457, y: -0.024252593090642267 },\n { x: 0.000006157999999999456, y: -0.07090916602992203 },\n { x: 0.000006158999999999456, y: -0.058718973882890366 },\n { x: 0.000006159999999999456, y: -0.02353605606787683 },\n { x: 0.000006160999999999455, y: -0.048297583921088225 },\n { x: 0.000006161999999999455, y: -0.02322525667090455 },\n { x: 0.000006162999999999455, y: -0.061420659843478775 },\n { x: 0.000006163999999999454, y: -0.014277554526177638 },\n { x: 0.000006164999999999454, y: -0.06469178475100859 },\n { x: 0.000006165999999999454, y: -0.009171104892655609 },\n { x: 0.000006166999999999453, y: -0.06653088376979778 },\n { x: 0.000006167999999999453, y: -0.07725938998366272 },\n { x: 0.0000061689999999994525, y: -0.02654697739258084 },\n { x: 0.000006169999999999452, y: -0.0413348446142956 },\n { x: 0.000006170999999999452, y: -0.009288754652388237 },\n { x: 0.0000061719999999994515, y: -0.04826226440609409 },\n { x: 0.000006172999999999451, y: -0.06136531060918308 },\n { x: 0.000006173999999999451, y: -0.028318733100411893 },\n { x: 0.0000061749999999994504, y: -0.07134938507758189 },\n { x: 0.00000617599999999945, y: -0.06191959854252564 },\n { x: 0.00000617699999999945, y: -0.04094477951194121 },\n { x: 0.000006177999999999449, y: -0.05192451345077616 },\n { x: 0.000006178999999999449, y: -0.021237624257075736 },\n { x: 0.000006179999999999449, y: -0.0536031160606531 },\n { x: 0.000006180999999999448, y: -0.0691755146665819 },\n { x: 0.000006181999999999448, y: -0.04303059259727877 },\n { x: 0.000006182999999999448, y: -0.040002811001553416 },\n { x: 0.000006183999999999447, y: -0.05349711000705129 },\n { x: 0.000006184999999999447, y: -0.05272545070529948 },\n { x: 0.000006185999999999447, y: -0.0413942349224902 },\n { x: 0.000006186999999999446, y: -0.016244124912070095 },\n { x: 0.000006187999999999446, y: -0.013549259601527443 },\n { x: 0.0000061889999999994456, y: -0.05294550999414146 },\n { x: 0.000006189999999999445, y: -0.061378110945480374 },\n { x: 0.000006190999999999445, y: -0.01495256796480194 },\n { x: 0.0000061919999999994445, y: -0.01881017581693592 },\n { x: 0.000006192999999999444, y: -0.023087577275717534 },\n { x: 0.000006193999999999444, y: -0.0062885114809384385 },\n { x: 0.0000061949999999994435, y: 0.0029734317892141926 },\n { x: 0.000006195999999999443, y: -0.018432320432132325 },\n { x: 0.000006196999999999443, y: -0.02044484339534021 },\n { x: 0.0000061979999999994424, y: -0.05524268797754462 },\n { x: 0.000006198999999999442, y: -0.01616206543846683 },\n { x: 0.000006199999999999442, y: -0.0660092748979551 },\n { x: 0.000006200999999999441, y: -0.043690714667203645 },\n { x: 0.000006201999999999441, y: 0.0005316744198725146 },\n { x: 0.000006202999999999441, y: -0.007726714545605293 },\n { x: 0.00000620399999999944, y: -0.025821057885985852 },\n { x: 0.00000620499999999944, y: -0.047793671931128115 },\n { x: 0.00000620599999999944, y: -0.036176341540212445 },\n { x: 0.000006206999999999439, y: -0.0005281434926095938 },\n { x: 0.000006207999999999439, y: 0.005280965406241886 },\n { x: 0.000006208999999999439, y: -0.03658752024839781 },\n { x: 0.000006209999999999438, y: -0.04332716128611916 },\n { x: 0.000006210999999999438, y: -0.01151454028331448 },\n { x: 0.0000062119999999994376, y: -0.018395043001853198 },\n { x: 0.000006212999999999437, y: -0.02047205895566663 },\n { x: 0.000006213999999999437, y: -0.02252945567323992 },\n { x: 0.0000062149999999994365, y: -0.06240499792806903 },\n { x: 0.000006215999999999436, y: 0.00648225610971153 },\n { x: 0.000006216999999999436, y: -0.039318949536063116 },\n { x: 0.0000062179999999994355, y: -0.03008399199088066 },\n { x: 0.000006218999999999435, y: -0.022827312865908077 },\n { x: 0.000006219999999999435, y: 0.01553383083541247 },\n { x: 0.000006220999999999434, y: -0.04772180874630108 },\n { x: 0.000006221999999999434, y: -0.0218651671967387 },\n { x: 0.000006222999999999434, y: 0.015627368398890503 },\n { x: 0.000006223999999999433, y: -0.033863501618150056 },\n { x: 0.000006224999999999433, y: -0.05142512187465838 },\n { x: 0.000006225999999999433, y: -0.024525679656994415 },\n { x: 0.000006226999999999432, y: -0.029933055501078006 },\n { x: 0.000006227999999999432, y: 0.017709236119990538 },\n { x: 0.000006228999999999432, y: 0.032830646026470234 },\n { x: 0.000006229999999999431, y: -0.006292817213284833 },\n { x: 0.000006230999999999431, y: 0.04274711680024851 },\n { x: 0.000006231999999999431, y: -0.004621319415502218 },\n { x: 0.00000623299999999943, y: -0.03529803826118595 },\n { x: 0.00000623399999999943, y: -0.05326253515735846 },\n { x: 0.0000062349999999994295, y: -0.003763221811630803 },\n { x: 0.000006235999999999429, y: -0.044672810441032704 },\n { x: 0.000006236999999999429, y: 0.019714391381036284 },\n { x: 0.0000062379999999994285, y: -0.03739961058201955 },\n { x: 0.000006238999999999428, y: 0.00957567309624037 },\n { x: 0.000006239999999999428, y: 0.04954639406154087 },\n { x: 0.0000062409999999994275, y: -0.014630374805613326 },\n { x: 0.000006241999999999427, y: -0.032937682650552684 },\n { x: 0.000006242999999999427, y: -0.04948639298080569 },\n { x: 0.000006243999999999426, y: -0.004792318799029234 },\n { x: 0.000006244999999999426, y: -0.046479392312515626 },\n { x: 0.000006245999999999426, y: -0.011264634234860854 },\n { x: 0.000006246999999999425, y: -0.014911368466185163 },\n { x: 0.000006247999999999425, y: -0.04981474697331012 },\n { x: 0.000006248999999999425, y: 0.01718150965874051 },\n { x: 0.000006249999999999424, y: 0.0037642021802506316 },\n { x: 0.000006250999999999424, y: -0.03213642386686262 },\n { x: 0.000006251999999999424, y: -0.029888384412366176 },\n { x: 0.000006252999999999423, y: 0.025331378677488605 },\n { x: 0.000006253999999999423, y: 0.010734927526340159 },\n { x: 0.0000062549999999994226, y: -0.0329527975762178 },\n { x: 0.000006255999999999422, y: -0.00944377877904363 },\n { x: 0.000006256999999999422, y: 0.011207288700537566 },\n { x: 0.0000062579999999994215, y: -0.007036597753970956 },\n { x: 0.000006258999999999421, y: -0.010211809680283892 },\n { x: 0.000006259999999999421, y: -0.0421563741401429 },\n { x: 0.0000062609999999994205, y: -0.02854895931348529 },\n { x: 0.00000626199999999942, y: -0.03452037275224883 },\n { x: 0.00000626299999999942, y: -0.021440287476734175 },\n { x: 0.0000062639999999994194, y: -0.03461588419029308 },\n { x: 0.000006264999999999419, y: -0.0024473477206832786 },\n { x: 0.000006265999999999419, y: 0.01676531067551041 },\n { x: 0.000006266999999999418, y: -0.04142183114342354 },\n { x: 0.000006267999999999418, y: 0.012906225146261406 },\n { x: 0.000006268999999999418, y: 0.00871623455383652 },\n { x: 0.000006269999999999417, y: 0.0327525113744227 },\n { x: 0.000006270999999999417, y: 0.012634596216380758 },\n { x: 0.000006271999999999417, y: -0.004471361206095677 },\n { x: 0.000006272999999999416, y: 0.022235699241061682 },\n { x: 0.000006273999999999416, y: -0.015460051710681284 },\n { x: 0.000006274999999999416, y: -0.039800856084212195 },\n { x: 0.000006275999999999415, y: 0.02039043169491328 },\n { x: 0.000006276999999999415, y: 0.012965836879122493 },\n { x: 0.0000062779999999994146, y: -0.01574741264741996 },\n { x: 0.000006278999999999414, y: 0.008013891479229642 },\n { x: 0.000006279999999999414, y: 0.03262042437051343 },\n { x: 0.0000062809999999994135, y: -0.011461677312809816 },\n { x: 0.000006281999999999413, y: -0.007769264021925711 },\n { x: 0.000006282999999999413, y: 0.012149333912136549 },\n { x: 0.0000062839999999994125, y: -0.03700208474630407 },\n { x: 0.000006284999999999412, y: 0.0007334236415029897 },\n { x: 0.000006285999999999412, y: 0.00926810142370388 },\n { x: 0.0000062869999999994114, y: 0.022648380989877325 },\n { x: 0.000006287999999999411, y: 0.010036614614791568 },\n { x: 0.000006288999999999411, y: 0.02834182316130422 },\n { x: 0.00000628999999999941, y: -0.008599540871145122 },\n { x: 0.00000629099999999941, y: -0.03115852858676202 },\n { x: 0.00000629199999999941, y: 0.038131686769695486 },\n { x: 0.000006292999999999409, y: 0.017719369456522506 },\n { x: 0.000006293999999999409, y: 0.036164584579017556 },\n { x: 0.000006294999999999409, y: -0.014620831781571971 },\n { x: 0.000006295999999999408, y: 0.004998727591320388 },\n { x: 0.000006296999999999408, y: -0.01017844762370505 },\n { x: 0.000006297999999999408, y: 0.01071381513663041 },\n { x: 0.000006298999999999407, y: 0.04278492449907748 },\n { x: 0.000006299999999999407, y: 0.03008088671584024 },\n { x: 0.0000063009999999994065, y: 0.0020033693985619036 },\n { x: 0.000006301999999999406, y: 0.0161516417511956 },\n { x: 0.000006302999999999406, y: 0.027933748220420704 },\n { x: 0.0000063039999999994055, y: 0.039118929286455724 },\n { x: 0.000006304999999999405, y: 0.03560948953988753 },\n { x: 0.000006305999999999405, y: 0.03010847957597074 },\n { x: 0.0000063069999999994045, y: 0.03625953950562536 },\n { x: 0.000006307999999999404, y: 0.02355699596041319 },\n { x: 0.000006308999999999404, y: 0.019189500489196782 },\n { x: 0.000006309999999999403, y: -0.016290889862414015 },\n { x: 0.000006310999999999403, y: -0.0040482488010917025 },\n { x: 0.000006311999999999403, y: -0.004030568391539709 },\n { x: 0.000006312999999999402, y: 0.03817525695631252 },\n { x: 0.000006313999999999402, y: 0.021862622227764552 },\n { x: 0.000006314999999999402, y: -0.026376856506003223 },\n { x: 0.000006315999999999401, y: 0.03885425263467728 },\n { x: 0.000006316999999999401, y: -0.009070015586960224 },\n { x: 0.000006317999999999401, y: -0.0162281447276042 },\n { x: 0.0000063189999999994, y: 0.049778850842657325 },\n { x: 0.0000063199999999994, y: 0.03628928349058779 },\n { x: 0.0000063209999999994, y: 0.005456333407054057 },\n { x: 0.000006321999999999399, y: -0.0030741798448190825 },\n { x: 0.000006322999999999399, y: 0.002075695179680896 },\n { x: 0.0000063239999999993985, y: 0.02969728024478644 },\n { x: 0.000006324999999999398, y: 0.0027210731525679453 },\n { x: 0.000006325999999999398, y: -0.01342455122082064 },\n { x: 0.0000063269999999993975, y: 0.03869715895703062 },\n { x: 0.000006327999999999397, y: 0.04467398883471892 },\n { x: 0.000006328999999999397, y: -0.010345809247537823 },\n { x: 0.0000063299999999993964, y: -0.016289646265897136 },\n { x: 0.000006330999999999396, y: -0.008667939794200268 },\n { x: 0.000006331999999999396, y: 0.02945874970557589 },\n { x: 0.000006332999999999395, y: 0.010308575744073002 },\n { x: 0.000006333999999999395, y: 0.027931222627961515 },\n { x: 0.000006334999999999395, y: 0.031327387226426584 },\n { x: 0.000006335999999999394, y: -0.01496415014939505 },\n { x: 0.000006336999999999394, y: -0.006543738528045833 },\n { x: 0.000006337999999999394, y: -0.0021667859050321335 },\n { x: 0.000006338999999999393, y: 0.013527827150638171 },\n { x: 0.000006339999999999393, y: -0.013649883552325867 },\n { x: 0.000006340999999999393, y: 0.0047125368075670235 },\n { x: 0.000006341999999999392, y: 0.018327620062022834 },\n { x: 0.000006342999999999392, y: 0.01006183724561431 },\n { x: 0.0000063439999999993916, y: 0.017456612562905347 },\n { x: 0.000006344999999999391, y: -0.013522434269681884 },\n { x: 0.000006345999999999391, y: 0.04479244813586061 },\n { x: 0.0000063469999999993905, y: 0.027447948313374212 },\n { x: 0.00000634799999999939, y: -0.015140239180625101 },\n { x: 0.00000634899999999939, y: -0.012150445418913226 },\n { x: 0.0000063499999999993895, y: 0.05186206185461248 },\n { x: 0.000006350999999999389, y: 0.03183216012449015 },\n { x: 0.000006351999999999389, y: 0.0332760109182465 },\n { x: 0.0000063529999999993884, y: 0.0487466867858228 },\n { x: 0.000006353999999999388, y: 0.008306739164387187 },\n { x: 0.000006354999999999388, y: 0.047476756131428016 },\n { x: 0.000006355999999999387, y: 0.021312453106249796 },\n { x: 0.000006356999999999387, y: 0.024162952247484788 },\n { x: 0.000006357999999999387, y: 0.0426354306429191 },\n { x: 0.000006358999999999386, y: -0.004766373901188177 },\n { x: 0.000006359999999999386, y: 0.00904997452147054 },\n { x: 0.000006360999999999386, y: 0.01011358777751506 },\n { x: 0.000006361999999999385, y: 0.058121108359806134 },\n { x: 0.000006362999999999385, y: 0.003551169816425368 },\n { x: 0.000006363999999999385, y: 0.05545298154996432 },\n { x: 0.000006364999999999384, y: 0.05771780639184556 },\n { x: 0.000006365999999999384, y: 0.01661106697210214 },\n { x: 0.0000063669999999993836, y: 0.014710240260772868 },\n { x: 0.000006367999999999383, y: 0.020918922991702345 },\n { x: 0.000006368999999999383, y: -0.006097685184978951 },\n { x: 0.0000063699999999993825, y: 0.061594873064644846 },\n { x: 0.000006370999999999382, y: 0.03607071739159255 },\n { x: 0.000006371999999999382, y: -0.007108082073094737 },\n { x: 0.0000063729999999993815, y: 0.03907658351584181 },\n { x: 0.000006373999999999381, y: 0.012717522769924498 },\n { x: 0.000006374999999999381, y: 0.0001813679474672522 },\n { x: 0.00000637599999999938, y: 0.041656031454756194 },\n { x: 0.00000637699999999938, y: 0.052805909789579816 },\n { x: 0.00000637799999999938, y: 0.03672561100600775 },\n { x: 0.000006378999999999379, y: 0.025426646161620676 },\n { x: 0.000006379999999999379, y: 0.004888598356866586 },\n { x: 0.000006380999999999379, y: 0.026636402772328042 },\n { x: 0.000006381999999999378, y: 0.012314934333584958 },\n { x: 0.000006382999999999378, y: 0.048075033771409384 },\n { x: 0.000006383999999999378, y: -0.002893267211374388 },\n { x: 0.000006384999999999377, y: 0.010925616580244515 },\n { x: 0.000006385999999999377, y: 0.038065937825059966 },\n { x: 0.000006386999999999377, y: 0.03950677197835536 },\n { x: 0.000006387999999999376, y: 0.041131985780472176 },\n { x: 0.000006388999999999376, y: 0.006024632580920293 },\n { x: 0.0000063899999999993755, y: 0.03501281549943028 },\n { x: 0.000006390999999999375, y: 0.05792289297258767 },\n { x: 0.000006391999999999375, y: 0.03526323152376286 },\n { x: 0.0000063929999999993745, y: 0.043037819213868775 },\n { x: 0.000006393999999999374, y: 0.030099990295969135 },\n { x: 0.000006394999999999374, y: 0.004398436578855719 },\n { x: 0.0000063959999999993735, y: 0.051071036389301494 },\n { x: 0.000006396999999999373, y: 0.04343454898694269 },\n { x: 0.000006397999999999373, y: 0.02044347068979022 },\n { x: 0.000006398999999999372, y: 0.033810450510320327 },\n { x: 0.000006399999999999372, y: 0.03252325465738688 },\n { x: 0.000006400999999999372, y: 0.028695652313051614 },\n { x: 0.000006401999999999371, y: -0.002044103682097148 },\n { x: 0.000006402999999999371, y: 0.01993094001088715 },\n { x: 0.000006403999999999371, y: 0.013681965615391374 },\n { x: 0.00000640499999999937, y: 0.06724252224929395 },\n { x: 0.00000640599999999937, y: 0.042511897265260445 },\n { x: 0.00000640699999999937, y: 0.03798808817135716 },\n { x: 0.000006407999999999369, y: 0.018216638564458286 },\n { x: 0.000006408999999999369, y: 0.021257935271128067 },\n { x: 0.0000064099999999993686, y: 0.02820020082800031 },\n { x: 0.000006410999999999368, y: 0.01688344762984088 },\n { x: 0.000006411999999999368, y: 0.03306973531724155 },\n { x: 0.0000064129999999993675, y: 0.04641983065822221 },\n { x: 0.000006413999999999367, y: 0.07475868871591632 },\n { x: 0.000006414999999999367, y: 0.07426329251613269 },\n { x: 0.0000064159999999993665, y: 0.043962503596020844 },\n { x: 0.000006416999999999366, y: 0.07571839537353463 },\n { x: 0.000006417999999999366, y: 0.017973350060461173 },\n { x: 0.0000064189999999993654, y: 0.01690186384147821 },\n { x: 0.000006419999999999365, y: 0.057118765479222414 },\n { x: 0.000006420999999999365, y: 0.05263133167303674 },\n { x: 0.000006421999999999364, y: 0.005581214091007286 },\n { x: 0.000006422999999999364, y: 0.02609731318375393 },\n { x: 0.000006423999999999364, y: 0.042939697597900464 },\n { x: 0.000006424999999999363, y: 0.005542101812976444 },\n { x: 0.000006425999999999363, y: 0.011837490370590422 },\n { x: 0.000006426999999999363, y: 0.0629309599090829 },\n { x: 0.000006427999999999362, y: 0.04257522721475675 },\n { x: 0.000006428999999999362, y: 0.07225775922170688 },\n { x: 0.000006429999999999362, y: 0.04642612825044807 },\n { x: 0.000006430999999999361, y: 0.043931850609426566 },\n { x: 0.000006431999999999361, y: 0.004367297429254423 },\n { x: 0.0000064329999999993606, y: 0.056722822136098125 },\n { x: 0.00000643399999999936, y: 0.005191215344177845 },\n { x: 0.00000643499999999936, y: 0.04614752879384501 },\n { x: 0.0000064359999999993595, y: 0.028597820859081757 },\n { x: 0.000006436999999999359, y: 0.05936524529405696 },\n { x: 0.000006437999999999359, y: 0.027490048232724166 },\n { x: 0.0000064389999999993585, y: 0.03374053222803882 },\n { x: 0.000006439999999999358, y: 0.055492541226114404 },\n { x: 0.000006440999999999358, y: 0.06483997765893532 },\n { x: 0.0000064419999999993574, y: 0.03814209677039398 },\n { x: 0.000006442999999999357, y: 0.051603366202904476 },\n { x: 0.000006443999999999357, y: 0.07797460461593173 },\n { x: 0.000006444999999999356, y: 0.05991075958900212 },\n { x: 0.000006445999999999356, y: 0.009144203536065869 },\n { x: 0.000006446999999999356, y: 0.03761598671213768 },\n { x: 0.000006447999999999355, y: 0.04400307042006278 },\n { x: 0.000006448999999999355, y: 0.054343530798096264 },\n { x: 0.000006449999999999355, y: 0.04820793455182021 },\n { x: 0.000006450999999999354, y: 0.048293677648373896 },\n { x: 0.000006451999999999354, y: 0.042585122472547976 },\n { x: 0.000006452999999999354, y: 0.017837085006395623 },\n { x: 0.000006453999999999353, y: 0.02339220972470029 },\n { x: 0.000006454999999999353, y: 0.07962588863827288 },\n { x: 0.0000064559999999993525, y: 0.06350196743297971 },\n { x: 0.000006456999999999352, y: 0.022830411206015533 },\n { x: 0.000006457999999999352, y: 0.06857160814664562 },\n { x: 0.0000064589999999993515, y: 0.08466158553510278 },\n { x: 0.000006459999999999351, y: 0.049805944064092195 },\n { x: 0.000006460999999999351, y: 0.08957688388242513 },\n { x: 0.0000064619999999993505, y: 0.0595226900692198 },\n { x: 0.00000646299999999935, y: 0.0699461360292879 },\n { x: 0.00000646399999999935, y: 0.046784319538738975 },\n { x: 0.000006464999999999349, y: 0.038014012120854146 },\n { x: 0.000006465999999999349, y: 0.05340638341992883 },\n { x: 0.000006466999999999349, y: 0.04043982395822764 },\n { x: 0.000006467999999999348, y: 0.08119226395004789 },\n { x: 0.000006468999999999348, y: 0.06877083413639104 },\n { x: 0.000006469999999999348, y: 0.015111160079450445 },\n { x: 0.000006470999999999347, y: 0.06029445773901031 },\n { x: 0.000006471999999999347, y: 0.04153305955100414 },\n { x: 0.000006472999999999347, y: 0.08087264443846903 },\n { x: 0.000006473999999999346, y: 0.017638697818553248 },\n { x: 0.000006474999999999346, y: 0.01814617742324092 },\n { x: 0.000006475999999999346, y: 0.058548952483776076 },\n { x: 0.000006476999999999345, y: 0.08672984577456241 },\n { x: 0.000006477999999999345, y: 0.017158621632537424 },\n { x: 0.0000064789999999993445, y: 0.04991058438379043 },\n { x: 0.000006479999999999344, y: 0.01912097501408188 },\n { x: 0.000006480999999999344, y: 0.034448221553927474 },\n { x: 0.0000064819999999993435, y: 0.031024618368766646 },\n { x: 0.000006482999999999343, y: 0.037922460299426995 },\n { x: 0.000006483999999999343, y: 0.02241148332962326 },\n { x: 0.0000064849999999993424, y: 0.034644909699168405 },\n { x: 0.000006485999999999342, y: 0.053251671144949705 },\n { x: 0.000006486999999999342, y: 0.08472635728861705 },\n { x: 0.000006487999999999341, y: 0.06592290887966977 },\n { x: 0.000006488999999999341, y: 0.08975219712191326 },\n { x: 0.000006489999999999341, y: 0.03711750915353171 },\n { x: 0.00000649099999999934, y: 0.08084597956526815 },\n { x: 0.00000649199999999934, y: 0.05367095367526733 },\n { x: 0.00000649299999999934, y: 0.023859798611992323 },\n { x: 0.000006493999999999339, y: 0.02445094556818196 },\n { x: 0.000006494999999999339, y: 0.058076718515805696 },\n { x: 0.000006495999999999339, y: 0.024087309043638257 },\n { x: 0.000006496999999999338, y: 0.017526350786061143 },\n { x: 0.000006497999999999338, y: 0.08816713968177811 },\n { x: 0.0000064989999999993376, y: 0.05780687646762531 },\n { x: 0.000006499999999999337, y: 0.021337911181062305 },\n { x: 0.000006500999999999337, y: 0.02666993284336484 },\n { x: 0.0000065019999999993365, y: 0.06613551085635809 },\n { x: 0.000006502999999999336, y: 0.0202143940581656 },\n { x: 0.000006503999999999336, y: 0.029377065763703823 },\n { x: 0.0000065049999999993355, y: 0.018441324592165874 },\n { x: 0.000006505999999999335, y: 0.06223105463837809 },\n { x: 0.000006506999999999335, y: 0.06157090510868055 },\n { x: 0.0000065079999999993344, y: 0.017371589196941872 },\n { x: 0.000006508999999999334, y: 0.05776934145479441 },\n { x: 0.000006509999999999334, y: 0.06657347622717026 },\n { x: 0.000006510999999999333, y: 0.061318227794359234 },\n { x: 0.000006511999999999333, y: 0.07927582001251911 },\n { x: 0.000006512999999999333, y: 0.04814067769189442 },\n { x: 0.000006513999999999332, y: 0.06302755705110645 },\n { x: 0.000006514999999999332, y: 0.06596573076238843 },\n { x: 0.000006515999999999332, y: 0.03220270087148301 },\n { x: 0.000006516999999999331, y: 0.06211336414397774 },\n { x: 0.000006517999999999331, y: 0.07394601986110182 },\n { x: 0.000006518999999999331, y: 0.046239376959757876 },\n { x: 0.00000651999999999933, y: 0.02831218393796916 },\n { x: 0.00000652099999999933, y: 0.05304531000203788 },\n { x: 0.0000065219999999993296, y: 0.08922820058026253 },\n { x: 0.000006522999999999329, y: 0.05124316427105455 },\n { x: 0.000006523999999999329, y: 0.07627591101950841 },\n { x: 0.0000065249999999993285, y: 0.08066360506042243 },\n { x: 0.000006525999999999328, y: 0.07179380147369352 },\n { x: 0.000006526999999999328, y: 0.02480687957884062 },\n { x: 0.0000065279999999993275, y: 0.021273755837011084 },\n { x: 0.000006528999999999327, y: 0.07489078778425956 },\n { x: 0.000006529999999999327, y: 0.06088030469798052 },\n { x: 0.000006530999999999326, y: 0.03577063247838755 },\n { x: 0.000006531999999999326, y: 0.05945664488266624 },\n { x: 0.000006532999999999326, y: 0.09035637680538935 },\n { x: 0.000006533999999999325, y: 0.02843309567054169 },\n { x: 0.000006534999999999325, y: 0.048816212640917386 },\n { x: 0.000006535999999999325, y: 0.07913516249179729 },\n { x: 0.000006536999999999324, y: 0.07981189797965058 },\n { x: 0.000006537999999999324, y: 0.03664013490074804 },\n { x: 0.000006538999999999324, y: 0.08159447413230068 },\n { x: 0.000006539999999999323, y: 0.06426443283240951 },\n { x: 0.000006540999999999323, y: 0.020297878311369512 },\n { x: 0.000006541999999999323, y: 0.035898410098152936 },\n { x: 0.000006542999999999322, y: 0.0831971012431946 },\n { x: 0.000006543999999999322, y: 0.05708443488769442 },\n { x: 0.0000065449999999993215, y: 0.08713593364779015 },\n { x: 0.000006545999999999321, y: 0.04202631502534762 },\n { x: 0.000006546999999999321, y: 0.05461769354692221 },\n { x: 0.0000065479999999993205, y: 0.0179019812571889 },\n { x: 0.00000654899999999932, y: 0.0875155514401971 },\n { x: 0.00000654999999999932, y: 0.06425957959897101 },\n { x: 0.0000065509999999993195, y: 0.046251172923622776 },\n { x: 0.000006551999999999319, y: 0.029980503464713173 },\n { x: 0.000006552999999999319, y: 0.02893852916696471 },\n { x: 0.000006553999999999318, y: 0.07324678748096107 },\n { x: 0.000006554999999999318, y: 0.05128337684142053 },\n { x: 0.000006555999999999318, y: 0.035600802250349686 },\n { x: 0.000006556999999999317, y: 0.03443441481874935 },\n { x: 0.000006557999999999317, y: 0.07770959676123096 },\n { x: 0.000006558999999999317, y: 0.06740239748346287 },\n { x: 0.000006559999999999316, y: 0.07194445106461768 },\n { x: 0.000006560999999999316, y: 0.04722084254496357 },\n { x: 0.000006561999999999316, y: 0.09140163212467195 },\n { x: 0.000006562999999999315, y: 0.05132117729427984 },\n { x: 0.000006563999999999315, y: 0.07033220137084278 },\n { x: 0.0000065649999999993146, y: 0.040721305381931514 },\n { x: 0.000006565999999999314, y: 0.08303297882519378 },\n { x: 0.000006566999999999314, y: 0.07719776614074321 },\n { x: 0.0000065679999999993135, y: 0.03907063497194076 },\n { x: 0.000006568999999999313, y: 0.04572476870854561 },\n { x: 0.000006569999999999313, y: 0.08706548161918992 },\n { x: 0.0000065709999999993125, y: 0.04209809238424989 },\n { x: 0.000006571999999999312, y: 0.0542282542306921 },\n { x: 0.000006572999999999312, y: 0.06573974563496592 },\n { x: 0.0000065739999999993114, y: 0.07446134294254575 },\n { x: 0.000006574999999999311, y: 0.03838098283029383 },\n { x: 0.000006575999999999311, y: 0.061309893813799095 },\n { x: 0.00000657699999999931, y: 0.020204260388163253 },\n { x: 0.00000657799999999931, y: 0.02446463378367484 },\n { x: 0.00000657899999999931, y: 0.08037963567040077 },\n { x: 0.000006579999999999309, y: 0.027176270448606276 },\n { x: 0.000006580999999999309, y: 0.031547539426840715 },\n { x: 0.000006581999999999309, y: 0.06215955811940999 },\n { x: 0.000006582999999999308, y: 0.03308332315323817 },\n { x: 0.000006583999999999308, y: 0.04132478439500193 },\n { x: 0.000006584999999999308, y: 0.019064010549246883 },\n { x: 0.000006585999999999307, y: 0.020763900921007133 },\n { x: 0.000006586999999999307, y: 0.06315736507988125 },\n { x: 0.0000065879999999993066, y: 0.058280426933191694 },\n { x: 0.000006588999999999306, y: 0.08397856946697094 },\n { x: 0.000006589999999999306, y: 0.028718799199745567 },\n { x: 0.0000065909999999993055, y: 0.025324353945128678 },\n { x: 0.000006591999999999305, y: 0.034153840975273374 },\n { x: 0.000006592999999999305, y: 0.08458276502145204 },\n { x: 0.0000065939999999993045, y: 0.03142737887232128 },\n { x: 0.000006594999999999304, y: 0.02270915920406931 },\n { x: 0.000006595999999999304, y: 0.08934022619419905 },\n { x: 0.0000065969999999993034, y: 0.059282199100881824 },\n { x: 0.000006597999999999303, y: 0.09098396719235749 },\n { x: 0.000006598999999999303, y: 0.09327598186609257 },\n { x: 0.000006599999999999302, y: 0.05000674571010387 },\n { x: 0.000006600999999999302, y: 0.09278398603928825 },\n { x: 0.000006601999999999302, y: 0.05872084558411532 },\n { x: 0.000006602999999999301, y: 0.06528783711110878 },\n { x: 0.000006603999999999301, y: 0.04678761566839875 },\n { x: 0.000006604999999999301, y: 0.018555520444162858 },\n { x: 0.0000066059999999993, y: 0.022593591084810995 },\n { x: 0.0000066069999999993, y: 0.05803950729103298 },\n { x: 0.0000066079999999993, y: 0.025626477168597714 },\n { x: 0.000006608999999999299, y: 0.08070960098879633 },\n { x: 0.000006609999999999299, y: 0.08876092346981428 },\n { x: 0.0000066109999999992985, y: 0.019714923115309153 },\n { x: 0.000006611999999999298, y: 0.03655315394470019 },\n { x: 0.000006612999999999298, y: 0.058768526726104435 },\n { x: 0.0000066139999999992975, y: 0.08300652299730556 },\n { x: 0.000006614999999999297, y: 0.0812212686994408 },\n { x: 0.000006615999999999297, y: 0.08235875837698083 },\n { x: 0.0000066169999999992965, y: 0.04228075088395904 },\n { x: 0.000006617999999999296, y: 0.03793583328953068 },\n { x: 0.000006618999999999296, y: 0.04315415158681671 },\n { x: 0.000006619999999999295, y: 0.03726565522943924 },\n { x: 0.000006620999999999295, y: 0.08070669759231866 },\n { x: 0.000006621999999999295, y: 0.07769573251050269 },\n { x: 0.000006622999999999294, y: 0.08921752241973921 },\n { x: 0.000006623999999999294, y: 0.03128238110072391 },\n { x: 0.000006624999999999294, y: 0.01721029167577493 },\n { x: 0.000006625999999999293, y: 0.05723544751758841 },\n { x: 0.000006626999999999293, y: 0.051881128344731825 },\n { x: 0.000006627999999999293, y: 0.05217879659141306 },\n { x: 0.000006628999999999292, y: 0.04549704026830262 },\n { x: 0.000006629999999999292, y: 0.02669185959900858 },\n { x: 0.000006630999999999292, y: 0.03479811617691764 },\n { x: 0.000006631999999999291, y: 0.03951184780065229 },\n { x: 0.000006632999999999291, y: 0.029993099850985402 },\n { x: 0.0000066339999999992905, y: 0.018476396861959607 },\n { x: 0.00000663499999999929, y: 0.028381656121401238 },\n { x: 0.00000663599999999929, y: 0.027331687982021808 },\n { x: 0.0000066369999999992895, y: 0.026186655466722067 },\n { x: 0.000006637999999999289, y: 0.06741028807470141 },\n { x: 0.000006638999999999289, y: 0.029068371511625574 },\n { x: 0.0000066399999999992884, y: 0.036151874573342846 },\n { x: 0.000006640999999999288, y: 0.015071383618725176 },\n { x: 0.000006641999999999288, y: 0.08487926903570259 },\n { x: 0.000006642999999999287, y: 0.06660559132040406 },\n { x: 0.000006643999999999287, y: 0.05126897759859051 },\n { x: 0.000006644999999999287, y: 0.09044476978706817 },\n { x: 0.000006645999999999286, y: 0.02828579676115864 },\n { x: 0.000006646999999999286, y: 0.047062694483223165 },\n { x: 0.000006647999999999286, y: 0.02140772230832292 },\n { x: 0.000006648999999999285, y: 0.025325084247527562 },\n { x: 0.000006649999999999285, y: 0.027481744685395403 },\n { x: 0.000006650999999999285, y: 0.06800732863448657 },\n { x: 0.000006651999999999284, y: 0.03582835183822167 },\n { x: 0.000006652999999999284, y: 0.022237280687866536 },\n { x: 0.0000066539999999992836, y: 0.05978459112406473 },\n { x: 0.000006654999999999283, y: 0.04967244341369067 },\n { x: 0.000006655999999999283, y: 0.05787677592480175 },\n { x: 0.0000066569999999992825, y: 0.03604175383411775 },\n { x: 0.000006657999999999282, y: 0.040042575886865904 },\n { x: 0.000006658999999999282, y: 0.05066170268338957 },\n { x: 0.0000066599999999992815, y: 0.01270411777358288 },\n { x: 0.000006660999999999281, y: 0.06971884054768734 },\n { x: 0.000006661999999999281, y: 0.07718505234861876 },\n { x: 0.0000066629999999992804, y: 0.05218504220622441 },\n { x: 0.00000666399999999928, y: 0.06976560288814769 },\n { x: 0.00000666499999999928, y: 0.05667453203715078 },\n { x: 0.000006665999999999279, y: 0.026637864211289546 },\n { x: 0.000006666999999999279, y: 0.07519020661049906 },\n { x: 0.000006667999999999279, y: 0.03373591851412544 },\n { x: 0.000006668999999999278, y: 0.05871875329735457 },\n { x: 0.000006669999999999278, y: 0.05249226260424004 },\n { x: 0.000006670999999999278, y: 0.03008402386118704 },\n { x: 0.000006671999999999277, y: 0.023328607461390958 },\n { x: 0.000006672999999999277, y: 0.05052351388118914 },\n { x: 0.000006673999999999277, y: 0.08731694211060591 },\n { x: 0.000006674999999999276, y: 0.08250853749163618 },\n { x: 0.000006675999999999276, y: 0.02117759276123988 },\n { x: 0.0000066769999999992756, y: 0.010891706143290658 },\n { x: 0.000006677999999999275, y: 0.0743095804781936 },\n { x: 0.000006678999999999275, y: 0.03514161377413789 },\n { x: 0.0000066799999999992745, y: 0.04290460582264214 },\n { x: 0.000006680999999999274, y: 0.0813064144386495 },\n { x: 0.000006681999999999274, y: 0.034322107441752826 },\n { x: 0.0000066829999999992735, y: 0.02911906667974212 },\n { x: 0.000006683999999999273, y: 0.026817545285668366 },\n { x: 0.000006684999999999273, y: 0.07765401239167519 },\n { x: 0.000006685999999999272, y: 0.047932422257283294 },\n { x: 0.000006686999999999272, y: 0.046723730309280315 },\n { x: 0.000006687999999999272, y: 0.04308656863496711 },\n { x: 0.000006688999999999271, y: 0.05012884966660961 },\n { x: 0.000006689999999999271, y: 0.008701059997465281 },\n { x: 0.000006690999999999271, y: 0.06565977025752676 },\n { x: 0.00000669199999999927, y: 0.02701788291748621 },\n { x: 0.00000669299999999927, y: 0.01842089123992971 },\n { x: 0.00000669399999999927, y: 0.03175556372572317 },\n { x: 0.000006694999999999269, y: 0.013144581379584859 },\n { x: 0.000006695999999999269, y: 0.010171445506706185 },\n { x: 0.000006696999999999269, y: 0.030494140203653847 },\n { x: 0.000006697999999999268, y: 0.019168412713673515 },\n { x: 0.000006698999999999268, y: 0.0588775391951756 },\n { x: 0.0000066999999999992675, y: 0.03947080348248387 },\n { x: 0.000006700999999999267, y: 0.04550236618292305 },\n { x: 0.000006701999999999267, y: 0.07513724035404296 },\n { x: 0.0000067029999999992665, y: 0.03954867149756552 },\n { x: 0.000006703999999999266, y: 0.0783492925058698 },\n { x: 0.000006704999999999266, y: 0.06201981178776182 },\n { x: 0.0000067059999999992655, y: 0.04663040394064163 },\n { x: 0.000006706999999999265, y: 0.06349328099601786 },\n { x: 0.000006707999999999265, y: 0.026975515351521415 },\n { x: 0.000006708999999999264, y: 0.06090891113693787 },\n { x: 0.000006709999999999264, y: 0.049654131230544914 },\n { x: 0.000006710999999999264, y: 0.022851119502501172 },\n { x: 0.000006711999999999263, y: 0.02088492254177188 },\n { x: 0.000006712999999999263, y: 0.055585485915697765 },\n { x: 0.000006713999999999263, y: 0.025296312557243728 },\n { x: 0.000006714999999999262, y: 0.03849650518682331 },\n { x: 0.000006715999999999262, y: 0.0077917455698893814 },\n { x: 0.000006716999999999262, y: 0.07835032188240443 },\n { x: 0.000006717999999999261, y: 0.027770170367717714 },\n { x: 0.000006718999999999261, y: 0.06066201906908342 },\n { x: 0.0000067199999999992606, y: 0.030517901043739547 },\n { x: 0.00000672099999999926, y: 0.056499144242581636 },\n { x: 0.00000672199999999926, y: 0.064113522345825 },\n { x: 0.0000067229999999992595, y: 0.016975226568704843 },\n { x: 0.000006723999999999259, y: 0.07211764817401575 },\n { x: 0.000006724999999999259, y: 0.03542128610406134 },\n { x: 0.0000067259999999992585, y: 0.012672806144716445 },\n { x: 0.000006726999999999258, y: 0.01129136696600895 },\n { x: 0.000006727999999999258, y: 0.02398171387662073 },\n { x: 0.0000067289999999992574, y: 0.035609124528916826 },\n { x: 0.000006729999999999257, y: 0.049748607478066004 },\n { x: 0.000006730999999999257, y: 0.016746402290466342 },\n { x: 0.000006731999999999256, y: 0.011479534279205578 },\n { x: 0.000006732999999999256, y: 0.06833964599564195 },\n { x: 0.000006733999999999256, y: 0.05494567726464046 },\n { x: 0.000006734999999999255, y: 0.027107804797420584 },\n { x: 0.000006735999999999255, y: 0.03646251899572257 },\n { x: 0.000006736999999999255, y: 0.025826576927660015 },\n { x: 0.000006737999999999254, y: 0.06451111298584158 },\n { x: 0.000006738999999999254, y: 0.0016097036867522008 },\n { x: 0.000006739999999999254, y: 0.07428619653831985 },\n { x: 0.000006740999999999253, y: 0.043591844627497496 },\n { x: 0.000006741999999999253, y: 0.03311659009320734 },\n { x: 0.0000067429999999992526, y: 0.06941286838123303 },\n { x: 0.000006743999999999252, y: 0.03392516106371307 },\n { x: 0.000006744999999999252, y: 0.032212252713333514 },\n { x: 0.0000067459999999992515, y: 0.06048286137249939 },\n { x: 0.000006746999999999251, y: 0.010777915386479618 },\n { x: 0.000006747999999999251, y: 0.06048817324618828 },\n { x: 0.0000067489999999992505, y: 0.06444034242208135 },\n { x: 0.00000674999999999925, y: 0.053981213931349026 },\n { x: 0.00000675099999999925, y: 0.05437619773877322 },\n { x: 0.0000067519999999992494, y: 0.06943790084777152 },\n { x: 0.000006752999999999249, y: 0.06523570785869741 },\n { x: 0.000006753999999999249, y: 0.0133220440000663 },\n { x: 0.000006754999999999248, y: 0.0022867206273653046 },\n { x: 0.000006755999999999248, y: 0.015295601262259817 },\n { x: 0.000006756999999999248, y: 0.014171319254136991 },\n { x: 0.000006757999999999247, y: 0.005827967405664533 },\n { x: 0.000006758999999999247, y: 0.052880339457167774 },\n { x: 0.000006759999999999247, y: 0.027459893341925327 },\n { x: 0.000006760999999999246, y: 0.027603399153189975 },\n { x: 0.000006761999999999246, y: 0.05125553579388497 },\n { x: 0.000006762999999999246, y: 0.04532808889035408 },\n { x: 0.000006763999999999245, y: 0.07762862013776534 },\n { x: 0.000006764999999999245, y: 0.00812835295241934 },\n { x: 0.0000067659999999992445, y: 0.05787835389487288 },\n { x: 0.000006766999999999244, y: 0.00005722166221922009 },\n { x: 0.000006767999999999244, y: 0.03574146792469127 },\n { x: 0.0000067689999999992435, y: 0.058573616765871375 },\n { x: 0.000006769999999999243, y: 0.02063964154661787 },\n { x: 0.000006770999999999243, y: 0.05624710737827152 },\n { x: 0.0000067719999999992425, y: 0.05159716825480599 },\n { x: 0.000006772999999999242, y: 0.03527082636897392 },\n { x: 0.000006773999999999242, y: 0.06259912319640658 },\n { x: 0.000006774999999999241, y: 0.03705860307566 },\n { x: 0.000006775999999999241, y: 0.06881709437562457 },\n { x: 0.000006776999999999241, y: 0.05255449916882394 },\n { x: 0.00000677799999999924, y: 0.049091532761753105 },\n { x: 0.00000677899999999924, y: 0.04330094639307208 },\n { x: 0.00000677999999999924, y: 0.06329856296844617 },\n { x: 0.000006780999999999239, y: 0.001152704587675725 },\n { x: 0.000006781999999999239, y: 0.01904415833388447 },\n { x: 0.000006782999999999239, y: 0.0004905545842852493 },\n { x: 0.000006783999999999238, y: 0.04994034461880081 },\n { x: 0.000006784999999999238, y: 0.011881267974021198 },\n { x: 0.000006785999999999238, y: -0.008485315716305689 },\n { x: 0.000006786999999999237, y: 0.03067615093788759 },\n { x: 0.000006787999999999237, y: 0.00829903377531432 },\n { x: 0.0000067889999999992365, y: 0.020878114894186305 },\n { x: 0.000006789999999999236, y: 0.03629258179828464 },\n { x: 0.000006790999999999236, y: -0.0033046148873569423 },\n { x: 0.0000067919999999992355, y: 0.05868112879294476 },\n { x: 0.000006792999999999235, y: 0.04006335820190326 },\n { x: 0.000006793999999999235, y: 0.05359167612394408 },\n { x: 0.0000067949999999992344, y: 0.03498120097746516 },\n { x: 0.000006795999999999234, y: 0.0048175227620432665 },\n { x: 0.000006796999999999234, y: -0.009611204817788231 },\n { x: 0.000006797999999999233, y: 0.008375485433662025 },\n { x: 0.000006798999999999233, y: 0.013118077844478588 },\n { x: 0.000006799999999999233, y: 0.053712378873269635 },\n { x: 0.000006800999999999232, y: 0.045323314761307194 },\n { x: 0.000006801999999999232, y: 0.022183757170687584 },\n { x: 0.000006802999999999232, y: -0.012381966518908442 },\n { x: 0.000006803999999999231, y: -0.0073737137346684516 },\n { x: 0.000006804999999999231, y: 0.049181044028927486 },\n { x: 0.000006805999999999231, y: 0.03129782905087034 },\n { x: 0.00000680699999999923, y: 0.0055740927423358275 },\n { x: 0.00000680799999999923, y: 0.034889432069875215 },\n { x: 0.0000068089999999992296, y: 0.05039001750848164 },\n { x: 0.000006809999999999229, y: 0.041198502125301746 },\n { x: 0.000006810999999999229, y: 0.01309683310600402 },\n { x: 0.0000068119999999992285, y: 0.047670306391785586 },\n { x: 0.000006812999999999228, y: 0.04036914446450037 },\n { x: 0.000006813999999999228, y: -0.0012850359263709074 },\n { x: 0.0000068149999999992275, y: 0.0009164287934609223 },\n { x: 0.000006815999999999227, y: 0.05645263510938367 },\n { x: 0.000006816999999999227, y: -0.0009033625701156192 },\n { x: 0.0000068179999999992264, y: 0.031356032643932996 },\n { x: 0.000006818999999999226, y: 0.03782320792507227 },\n { x: 0.000006819999999999226, y: 0.020966300320222977 },\n { x: 0.000006820999999999225, y: 0.020916466123777667 },\n { x: 0.000006821999999999225, y: -0.0056639066626141335 },\n { x: 0.000006822999999999225, y: 0.011657813052464057 },\n { x: 0.000006823999999999224, y: -0.009349043463165646 },\n { x: 0.000006824999999999224, y: -0.0007331412969517337 },\n { x: 0.000006825999999999224, y: 0.046444624944658466 },\n { x: 0.000006826999999999223, y: -0.014992364429491659 },\n { x: 0.000006827999999999223, y: -0.007277063460616441 },\n { x: 0.000006828999999999223, y: 0.03175469110351299 },\n { x: 0.000006829999999999222, y: 0.046744922064786726 },\n { x: 0.000006830999999999222, y: 0.05391414619852801 },\n { x: 0.0000068319999999992216, y: -0.012277591135640635 },\n { x: 0.000006832999999999221, y: 0.029332863818688173 },\n { x: 0.000006833999999999221, y: 0.02491261382771222 },\n { x: 0.0000068349999999992205, y: 0.006701204104819418 },\n { x: 0.00000683599999999922, y: -0.014269809065501952 },\n { x: 0.00000683699999999922, y: 0.024280266586300007 },\n { x: 0.0000068379999999992195, y: 0.015706307285897954 },\n { x: 0.000006838999999999219, y: 0.034984544870718115 },\n { x: 0.000006839999999999219, y: -0.0031555500339514736 },\n { x: 0.000006840999999999218, y: -0.02140291116347397 },\n { x: 0.000006841999999999218, y: 0.02295995706224775 },\n { x: 0.000006842999999999218, y: -0.014317446017972153 },\n { x: 0.000006843999999999217, y: 0.008941496815885375 },\n { x: 0.000006844999999999217, y: 0.020875252280359604 },\n { x: 0.000006845999999999217, y: 0.041313360304384 },\n { x: 0.000006846999999999216, y: 0.019969348311015107 },\n { x: 0.000006847999999999216, y: -0.0053965250253359565 },\n { x: 0.000006848999999999216, y: 0.01865547170239039 },\n { x: 0.000006849999999999215, y: 0.03462019196760992 },\n { x: 0.000006850999999999215, y: 0.049897271984463275 },\n { x: 0.000006851999999999215, y: 0.031844757559880046 },\n { x: 0.000006852999999999214, y: 0.03180402989186906 },\n { x: 0.000006853999999999214, y: 0.0028756311844385114 },\n { x: 0.0000068549999999992135, y: 0.035501389587038294 },\n { x: 0.000006855999999999213, y: 0.016499132294274445 },\n { x: 0.000006856999999999213, y: -0.02068491826440337 },\n { x: 0.0000068579999999992125, y: 0.016411326028772794 },\n { x: 0.000006858999999999212, y: 0.019035276579471204 },\n { x: 0.000006859999999999212, y: 0.027749543969452596 },\n { x: 0.0000068609999999992115, y: 0.03295777707783322 },\n { x: 0.000006861999999999211, y: 0.03513657188159025 },\n { x: 0.000006862999999999211, y: 0.048866889875744175 },\n { x: 0.00000686399999999921, y: -0.006668855860339504 },\n { x: 0.00000686499999999921, y: 0.04290454999681993 },\n { x: 0.00000686599999999921, y: -0.01959733989371077 },\n { x: 0.000006866999999999209, y: -0.020779629473176475 },\n { x: 0.000006867999999999209, y: 0.023637894392031674 },\n { x: 0.000006868999999999209, y: 0.03385386724758168 },\n { x: 0.000006869999999999208, y: 0.010396663832189 },\n { x: 0.000006870999999999208, y: 0.037656001404793124 },\n { x: 0.000006871999999999208, y: -0.011383990017886049 },\n { x: 0.000006872999999999207, y: -0.01971684570146081 },\n { x: 0.000006873999999999207, y: -0.01314083213039054 },\n { x: 0.0000068749999999992066, y: -0.0008842984672737253 },\n { x: 0.000006875999999999206, y: 0.01757666764891804 },\n { x: 0.000006876999999999206, y: -0.018682286597387722 },\n { x: 0.0000068779999999992055, y: -0.011277780786669741 },\n { x: 0.000006878999999999205, y: 0.03216914217010632 },\n { x: 0.000006879999999999205, y: 0.03994438390095344 },\n { x: 0.0000068809999999992045, y: 0.04452788155445453 },\n { x: 0.000006881999999999204, y: -0.01799272016628918 },\n { x: 0.000006882999999999204, y: 0.030513261691829153 },\n { x: 0.0000068839999999992034, y: -0.02034891539588728 },\n { x: 0.000006884999999999203, y: 0.03531840848124036 },\n { x: 0.000006885999999999203, y: -0.004137995724610643 },\n { x: 0.000006886999999999202, y: 0.02202887871276676 },\n { x: 0.000006887999999999202, y: 0.01598934242188037 },\n { x: 0.000006888999999999202, y: 0.03172862931613933 },\n { x: 0.000006889999999999201, y: -0.029085677106199727 },\n { x: 0.000006890999999999201, y: 0.004708645564812092 },\n { x: 0.000006891999999999201, y: 0.012453629007816804 },\n { x: 0.0000068929999999992, y: -0.02209286997299418 },\n { x: 0.0000068939999999992, y: 0.0021766111396465046 },\n { x: 0.0000068949999999992, y: 0.011808136546249072 },\n { x: 0.000006895999999999199, y: -0.027012926706039622 },\n { x: 0.000006896999999999199, y: 0.03071777292079832 },\n { x: 0.0000068979999999991986, y: 0.023087913514500662 },\n { x: 0.000006898999999999198, y: -0.010069489902871155 },\n { x: 0.000006899999999999198, y: 0.016150732302542655 },\n { x: 0.0000069009999999991975, y: -0.006928486441639299 },\n { x: 0.000006901999999999197, y: -0.007955503778157211 },\n { x: 0.000006902999999999197, y: -0.006818961817095659 },\n { x: 0.0000069039999999991965, y: -0.017460829758268518 },\n { x: 0.000006904999999999196, y: -0.03641038756830142 },\n { x: 0.000006905999999999196, y: 0.02368185637868401 },\n { x: 0.0000069069999999991954, y: 0.017469355197813615 },\n { x: 0.000006907999999999195, y: -0.010539293853163356 },\n { x: 0.000006908999999999195, y: 0.00295929325578596 },\n { x: 0.000006909999999999194, y: 0.010077781168484744 },\n { x: 0.000006910999999999194, y: -0.02995143317271735 },\n { x: 0.000006911999999999194, y: 0.007371694424411116 },\n { x: 0.000006912999999999193, y: 0.01483058744880288 },\n { x: 0.000006913999999999193, y: 0.002321405457363832 },\n { x: 0.000006914999999999193, y: 0.028923444459524852 },\n { x: 0.000006915999999999192, y: -0.031668502376391156 },\n { x: 0.000006916999999999192, y: -0.038433238939403314 },\n { x: 0.000006917999999999192, y: -0.009257565061804562 },\n { x: 0.000006918999999999191, y: 0.029871206483255024 },\n { x: 0.000006919999999999191, y: -0.019732121328866543 },\n { x: 0.0000069209999999991905, y: -0.004832807325529261 },\n { x: 0.00000692199999999919, y: -0.011501015698792898 },\n { x: 0.00000692299999999919, y: 0.0005716606069124815 },\n { x: 0.0000069239999999991895, y: 0.012905974926458603 },\n { x: 0.000006924999999999189, y: 0.00963045083130953 },\n { x: 0.000006925999999999189, y: -0.01903203793215653 },\n { x: 0.0000069269999999991885, y: -0.00324002622675829 },\n { x: 0.000006927999999999188, y: -0.03421098551309031 },\n { x: 0.000006928999999999188, y: 0.012672705578906544 },\n { x: 0.000006929999999999187, y: -0.028807236568848905 },\n { x: 0.000006930999999999187, y: 0.025800673346582856 },\n { x: 0.000006931999999999187, y: 0.014925093901099501 },\n { x: 0.000006932999999999186, y: -0.036405981467012745 },\n { x: 0.000006933999999999186, y: 0.02613582272330009 },\n { x: 0.000006934999999999186, y: -0.00514057684847188 },\n { x: 0.000006935999999999185, y: 0.00762542438893467 },\n { x: 0.000006936999999999185, y: 0.02006078277101487 },\n { x: 0.000006937999999999185, y: 0.0030558495060399203 },\n { x: 0.000006938999999999184, y: -0.04183830656446721 },\n { x: 0.000006939999999999184, y: -0.041141143111973255 },\n { x: 0.000006940999999999184, y: 0.00923344413621506 },\n { x: 0.000006941999999999183, y: -0.042103722017635264 },\n { x: 0.000006942999999999183, y: -0.029739557187525353 },\n { x: 0.0000069439999999991825, y: 0.0035900269794085157 },\n { x: 0.000006944999999999182, y: 0.027688334942700357 },\n { x: 0.000006945999999999182, y: -0.022283724683294065 },\n { x: 0.0000069469999999991815, y: -0.012126441675281936 },\n { x: 0.000006947999999999181, y: 0.005805539729345693 },\n { x: 0.000006948999999999181, y: 0.018823056566876058 },\n { x: 0.0000069499999999991804, y: -0.028489276858616925 },\n { x: 0.00000695099999999918, y: -0.011037253980535369 },\n { x: 0.00000695199999999918, y: -0.033909825630598564 },\n { x: 0.000006952999999999179, y: 0.01025501287552421 },\n { x: 0.000006953999999999179, y: 0.026352610874657425 },\n { x: 0.000006954999999999179, y: -0.019756511086977083 },\n { x: 0.000006955999999999178, y: 0.020110696234778815 },\n { x: 0.000006956999999999178, y: -0.0161777898994257 },\n { x: 0.000006957999999999178, y: -0.0030566560948637545 },\n { x: 0.000006958999999999177, y: -0.028509888840408053 },\n { x: 0.000006959999999999177, y: -0.03369006679058259 },\n { x: 0.000006960999999999177, y: 0.022987502033360918 },\n { x: 0.000006961999999999176, y: -0.04388200418519528 },\n { x: 0.000006962999999999176, y: -0.04692694272467074 },\n { x: 0.0000069639999999991756, y: -0.04575858091312391 },\n { x: 0.000006964999999999175, y: -0.03987819675093809 },\n { x: 0.000006965999999999175, y: -0.006893041628724601 },\n { x: 0.0000069669999999991745, y: 0.01388871898043306 },\n { x: 0.000006967999999999174, y: -0.017156627123809262 },\n { x: 0.000006968999999999174, y: -0.015748393250597435 },\n { x: 0.0000069699999999991735, y: 0.003517438113924999 },\n { x: 0.000006970999999999173, y: 0.02567508840514402 },\n { x: 0.000006971999999999173, y: 0.006139298448128588 },\n { x: 0.0000069729999999991724, y: -0.021275732732150325 },\n { x: 0.000006973999999999172, y: -0.020466984014711084 },\n { x: 0.000006974999999999172, y: -0.04058978868653216 },\n { x: 0.000006975999999999171, y: -0.010730899510500103 },\n { x: 0.000006976999999999171, y: -0.01706371574852018 },\n { x: 0.000006977999999999171, y: 0.01821669313056408 },\n { x: 0.00000697899999999917, y: -0.04949738749354579 },\n { x: 0.00000697999999999917, y: -0.012688201628329843 },\n { x: 0.00000698099999999917, y: -0.035171143188626075 },\n { x: 0.000006981999999999169, y: -0.03566320032650792 },\n { x: 0.000006982999999999169, y: -0.03138093541169656 },\n { x: 0.000006983999999999169, y: 0.021408766536759223 },\n { x: 0.000006984999999999168, y: -0.04041440967309298 },\n { x: 0.000006985999999999168, y: -0.036794306877118 },\n { x: 0.0000069869999999991676, y: -0.048250300686051434 },\n { x: 0.000006987999999999167, y: 0.003083754793470332 },\n { x: 0.000006988999999999167, y: -0.010403872018696449 },\n { x: 0.0000069899999999991665, y: -0.021988155980480508 },\n { x: 0.000006990999999999166, y: 0.02167940743788266 },\n { x: 0.000006991999999999166, y: -0.017038882750054152 },\n { x: 0.0000069929999999991655, y: -0.0474108004866033 },\n { x: 0.000006993999999999165, y: 0.01740053179550391 },\n { x: 0.000006994999999999165, y: -0.03436640131679798 },\n { x: 0.000006995999999999164, y: 0.012792781268017358 },\n { x: 0.000006996999999999164, y: 0.013652428092638166 },\n { x: 0.000006997999999999164, y: -0.006365776499710256 },\n { x: 0.000006998999999999163, y: -0.03961267373351084 },\n { x: 0.000006999999999999163, y: -0.026601004989589616 },\n { x: 0.000007000999999999163, y: -0.05331467553135384 },\n { x: 0.000007001999999999162, y: -0.00743773531028512 },\n { x: 0.000007002999999999162, y: -0.04326924535873497 },\n { x: 0.000007003999999999162, y: 0.01391462328868744 },\n { x: 0.000007004999999999161, y: -0.0507862394791191 },\n { x: 0.000007005999999999161, y: -0.024548168799130948 },\n { x: 0.000007006999999999161, y: -0.003582853539372814 },\n { x: 0.00000700799999999916, y: -0.033513554757196765 },\n { x: 0.00000700899999999916, y: 0.008490602380985611 },\n { x: 0.0000070099999999991595, y: -0.03078461854497492 },\n { x: 0.000007010999999999159, y: 0.009916014085502245 },\n { x: 0.000007011999999999159, y: -0.03635278648527554 },\n { x: 0.0000070129999999991585, y: 0.008824236028896391 },\n { x: 0.000007013999999999158, y: 0.015460015616078356 },\n { x: 0.000007014999999999158, y: -0.05721065163322382 },\n { x: 0.0000070159999999991575, y: -0.0581606085246787 },\n { x: 0.000007016999999999157, y: 0.015480725547237024 },\n { x: 0.000007017999999999157, y: -0.04367203050670106 },\n { x: 0.000007018999999999156, y: 0.015902553263801734 },\n { x: 0.000007019999999999156, y: -0.045251731760343306 },\n { x: 0.000007020999999999156, y: -0.04234792113249486 },\n { x: 0.000007021999999999155, y: -0.03276867308801413 },\n { x: 0.000007022999999999155, y: -0.0254477933235239 },\n { x: 0.000007023999999999155, y: 0.008045648621476009 },\n { x: 0.000007024999999999154, y: -0.03611514829304199 },\n { x: 0.000007025999999999154, y: 0.011123840360883357 },\n { x: 0.000007026999999999154, y: -0.0006320132312783548 },\n { x: 0.000007027999999999153, y: -0.0002468823939073897 },\n { x: 0.000007028999999999153, y: -0.051312682441643984 },\n { x: 0.0000070299999999991526, y: 0.008575796762223444 },\n { x: 0.000007030999999999152, y: -0.04342383260015169 },\n { x: 0.000007031999999999152, y: -0.05809120125806678 },\n { x: 0.0000070329999999991515, y: 0.014682252269211642 },\n { x: 0.000007033999999999151, y: -0.020987747252629464 },\n { x: 0.000007034999999999151, y: -0.04552237951952589 },\n { x: 0.0000070359999999991505, y: -0.015689050435634455 },\n { x: 0.00000703699999999915, y: -0.02332516952738477 },\n { x: 0.00000703799999999915, y: -0.04345470590702909 },\n { x: 0.0000070389999999991494, y: 0.006974110658986815 },\n { x: 0.000007039999999999149, y: -0.002917784488151682 },\n { x: 0.000007040999999999149, y: -0.00009766176657031653 },\n { x: 0.000007041999999999148, y: -0.026212820767765852 },\n { x: 0.000007042999999999148, y: -0.012395035174435359 },\n { x: 0.000007043999999999148, y: -0.007238657858546889 },\n { x: 0.000007044999999999147, y: -0.018952000814731543 },\n { x: 0.000007045999999999147, y: -0.04822182088275705 },\n { x: 0.000007046999999999147, y: -0.04202621662980888 },\n { x: 0.000007047999999999146, y: -0.01656090514022061 },\n { x: 0.000007048999999999146, y: -0.06223769142156059 },\n { x: 0.000007049999999999146, y: 0.003475351263724457 },\n { x: 0.000007050999999999145, y: 0.002682878671534158 },\n { x: 0.000007051999999999145, y: -0.022352319203935156 },\n { x: 0.0000070529999999991446, y: -0.005865090743829588 },\n { x: 0.000007053999999999144, y: -0.026633564725836983 },\n { x: 0.000007054999999999144, y: -0.008315049372085513 },\n { x: 0.0000070559999999991435, y: 0.005340325522275594 },\n { x: 0.000007056999999999143, y: -0.03998123865577514 },\n { x: 0.000007057999999999143, y: -0.005556294352026227 },\n { x: 0.0000070589999999991425, y: -0.06104015975040558 },\n { x: 0.000007059999999999142, y: -0.04612807057618702 },\n { x: 0.000007060999999999142, y: -0.0012367990699482835 },\n { x: 0.0000070619999999991414, y: -0.020644598860761858 },\n { x: 0.000007062999999999141, y: -0.004526865444441603 },\n { x: 0.000007063999999999141, y: -0.003698581528721566 },\n { x: 0.00000706499999999914, y: -0.031047049772955818 },\n { x: 0.00000706599999999914, y: -0.035238982208296014 },\n { x: 0.00000706699999999914, y: -0.06007360010738125 },\n { x: 0.000007067999999999139, y: -0.05202383585836602 },\n { x: 0.000007068999999999139, y: -0.04534992759129865 },\n { x: 0.000007069999999999139, y: -0.04849272979750008 },\n { x: 0.000007070999999999138, y: -0.024449786783531362 },\n { x: 0.000007071999999999138, y: -0.0004632707085340283 },\n { x: 0.000007072999999999138, y: -0.005181876436927493 },\n { x: 0.000007073999999999137, y: -0.0670718476719244 },\n { x: 0.000007074999999999137, y: -0.05369220933872514 },\n { x: 0.0000070759999999991365, y: -0.013634828137791391 },\n { x: 0.000007076999999999136, y: -0.01348176225979391 },\n { x: 0.000007077999999999136, y: -0.06319996109691448 },\n { x: 0.0000070789999999991355, y: -0.02446413821773794 },\n { x: 0.000007079999999999135, y: -0.005965339827361055 },\n { x: 0.000007080999999999135, y: -0.018989862158202003 },\n { x: 0.0000070819999999991345, y: -0.05442680830631971 },\n { x: 0.000007082999999999134, y: -0.06351503748726114 },\n { x: 0.000007083999999999134, y: -0.0008492969133060795 },\n { x: 0.000007084999999999133, y: -0.06286760551505376 },\n { x: 0.000007085999999999133, y: -0.007980046828568493 },\n { x: 0.000007086999999999133, y: 0.003753466491430959 },\n { x: 0.000007087999999999132, y: -0.039103338809619435 },\n { x: 0.000007088999999999132, y: -0.0061880276770066925 },\n { x: 0.000007089999999999132, y: -0.024130627517706435 },\n { x: 0.000007090999999999131, y: -0.04958449519697073 },\n { x: 0.000007091999999999131, y: -0.06581330731676943 },\n { x: 0.000007092999999999131, y: -0.047475020765145357 },\n { x: 0.00000709399999999913, y: -0.0007349720283453785 },\n { x: 0.00000709499999999913, y: -0.04724638444497802 },\n { x: 0.00000709599999999913, y: -0.04061571332667874 },\n { x: 0.000007096999999999129, y: -0.032919381520749705 },\n { x: 0.000007097999999999129, y: -0.0004117683948429707 },\n { x: 0.0000070989999999991285, y: -0.02079315428139198 },\n { x: 0.000007099999999999128, y: -0.02075116389355871 },\n { x: 0.000007100999999999128, y: -0.013136611756866992 },\n { x: 0.0000071019999999991275, y: -0.016338004061063442 },\n { x: 0.000007102999999999127, y: -0.01598244384653738 },\n { x: 0.000007103999999999127, y: -0.06845888179046361 },\n { x: 0.0000071049999999991264, y: -0.01067028796133242 },\n { x: 0.000007105999999999126, y: 0.0048124545855526835 },\n { x: 0.000007106999999999126, y: -0.0008056857815244498 },\n { x: 0.000007107999999999125, y: 0.0015245366431565627 },\n { x: 0.000007108999999999125, y: -0.05843290603192919 },\n { x: 0.000007109999999999125, y: -0.03539143001123522 },\n { x: 0.000007110999999999124, y: -0.05101381369120115 },\n { x: 0.000007111999999999124, y: -0.04115810576041735 },\n { x: 0.000007112999999999124, y: -0.036330746454371385 },\n { x: 0.000007113999999999123, y: -0.0005477097989779259 },\n { x: 0.000007114999999999123, y: -0.026664565526610444 },\n { x: 0.000007115999999999123, y: -0.00018663579523094803 },\n { x: 0.000007116999999999122, y: -0.03671092664619317 },\n { x: 0.000007117999999999122, y: -0.0319224329250281 },\n { x: 0.0000071189999999991216, y: -0.05886167992186232 },\n { x: 0.000007119999999999121, y: 0.004120090479981867 },\n { x: 0.000007120999999999121, y: -0.04349386451359364 },\n { x: 0.0000071219999999991205, y: -0.0482379118937285 },\n { x: 0.00000712299999999912, y: -0.054413065032110214 },\n { x: 0.00000712399999999912, y: -0.06600582202729796 },\n { x: 0.0000071249999999991195, y: 0.000005398710760377845 },\n { x: 0.000007125999999999119, y: -0.01866201603489335 },\n { x: 0.000007126999999999119, y: -0.06508150005568639 },\n { x: 0.0000071279999999991184, y: -0.003489956014452466 },\n { x: 0.000007128999999999118, y: -0.022338664893217865 },\n { x: 0.000007129999999999118, y: -0.020587703309191095 },\n { x: 0.000007130999999999117, y: -0.016449690572163563 },\n { x: 0.000007131999999999117, y: -0.0713999553989835 },\n { x: 0.000007132999999999117, y: -0.008067742088819795 },\n { x: 0.000007133999999999116, y: -0.020750318151229942 },\n { x: 0.000007134999999999116, y: -0.02039084411859176 },\n { x: 0.000007135999999999116, y: 0.0011776394305581667 },\n { x: 0.000007136999999999115, y: -0.0005213731933800467 },\n { x: 0.000007137999999999115, y: -0.05257128758284135 },\n { x: 0.000007138999999999115, y: -0.031156320384517707 },\n { x: 0.000007139999999999114, y: -0.02279308828177954 },\n { x: 0.000007140999999999114, y: -0.06497222071233287 },\n { x: 0.0000071419999999991136, y: -0.016090193747867132 },\n { x: 0.000007142999999999113, y: -0.04957522545152335 },\n { x: 0.000007143999999999113, y: -0.06864915927040602 },\n { x: 0.0000071449999999991125, y: -0.05730300950379588 },\n { x: 0.000007145999999999112, y: -0.02145938891639651 },\n { x: 0.000007146999999999112, y: -0.059612543116384906 },\n { x: 0.0000071479999999991115, y: -0.04070761618414434 },\n { x: 0.000007148999999999111, y: -0.01582253325543915 },\n { x: 0.000007149999999999111, y: -0.004371868851906813 },\n { x: 0.00000715099999999911, y: -0.06897563483764135 },\n { x: 0.00000715199999999911, y: -0.010558383269704319 },\n { x: 0.00000715299999999911, y: -0.0017674460819464208 },\n { x: 0.000007153999999999109, y: -0.06818276419514893 },\n { x: 0.000007154999999999109, y: -0.04002506992522192 },\n { x: 0.000007155999999999109, y: -0.039106384803784394 },\n { x: 0.000007156999999999108, y: -0.007594511850956852 },\n { x: 0.000007157999999999108, y: -0.06152931848827739 },\n { x: 0.000007158999999999108, y: -0.033681951616014144 },\n { x: 0.000007159999999999107, y: -0.026679633263420037 },\n { x: 0.000007160999999999107, y: 0.0006899107037052835 },\n { x: 0.000007161999999999107, y: -0.05656240602732718 },\n { x: 0.000007162999999999106, y: -0.020311141032968126 },\n { x: 0.000007163999999999106, y: -0.06515701791028679 },\n { x: 0.0000071649999999991055, y: -0.06895090451275362 },\n { x: 0.000007165999999999105, y: -0.008225593243135251 },\n { x: 0.000007166999999999105, y: -0.04940683091425982 },\n { x: 0.0000071679999999991045, y: 0.00232082557761798 },\n { x: 0.000007168999999999104, y: -0.0167566290260804 },\n { x: 0.000007169999999999104, y: -0.042409612443961624 },\n { x: 0.0000071709999999991035, y: -0.02622725008868715 },\n { x: 0.000007171999999999103, y: -0.023300979202358768 },\n { x: 0.000007172999999999103, y: -0.09816182033976302 },\n { x: 0.000007173999999999102, y: -0.027475975863319922 },\n { x: 0.000007174999999999102, y: -0.03201053708214151 },\n { x: 0.000007175999999999102, y: -0.007706043901475865 },\n { x: 0.000007176999999999101, y: -0.0731218120830089 },\n { x: 0.000007177999999999101, y: -0.07047043120395764 },\n { x: 0.000007178999999999101, y: -0.033543289799699894 },\n { x: 0.0000071799999999991, y: -0.03510544263893476 },\n { x: 0.0000071809999999991, y: -0.02598009951775661 },\n { x: 0.0000071819999999991, y: -0.05102729003417077 },\n { x: 0.000007182999999999099, y: -0.044220943177232484 },\n { x: 0.000007183999999999099, y: -0.05608530245906142 },\n { x: 0.0000071849999999990986, y: -0.006271533660653368 },\n { x: 0.000007185999999999098, y: -0.0005663094924309026 },\n { x: 0.000007186999999999098, y: -0.06745914451921917 },\n { x: 0.0000071879999999990975, y: 0.0018569311639203834 },\n { x: 0.000007188999999999097, y: 0.0018676048788437635 },\n { x: 0.000007189999999999097, y: -0.04559015904010526 },\n { x: 0.0000071909999999990965, y: -0.03831717386090104 },\n { x: 0.000007191999999999096, y: -0.07439777170060198 },\n { x: 0.000007192999999999096, y: -0.07043170288755213 },\n { x: 0.0000071939999999990954, y: -0.020558330935663182 },\n { x: 0.000007194999999999095, y: -0.03276958674214455 },\n { x: 0.000007195999999999095, y: -0.02030959632325691 },\n { x: 0.000007196999999999094, y: -0.03325692451992346 },\n { x: 0.000007197999999999094, y: -0.042061285644463 },\n { x: 0.000007198999999999094, y: -0.031217592884798574 },\n { x: 0.000007199999999999093, y: -0.052204385426676436 },\n { x: 0.000007200999999999093, y: -0.0731764336236671 },\n { x: 0.000007201999999999093, y: -0.04149670855601463 },\n { x: 0.000007202999999999092, y: -0.0647439686156653 },\n { x: 0.000007203999999999092, y: -0.021486267114066357 },\n { x: 0.000007204999999999092, y: -0.005138481425835291 },\n { x: 0.000007205999999999091, y: -0.07451304230237313 },\n { x: 0.000007206999999999091, y: -0.05497628421212668 },\n { x: 0.0000072079999999990906, y: -0.06433615995335952 },\n { x: 0.00000720899999999909, y: -0.030051444442295006 },\n { x: 0.00000720999999999909, y: -0.02287516496665612 },\n { x: 0.0000072109999999990895, y: -0.05527471299391242 },\n { x: 0.000007211999999999089, y: -0.0366822414755828 },\n { x: 0.000007212999999999089, y: -0.04629813516151624 },\n { x: 0.0000072139999999990885, y: -0.009873429374591972 },\n { x: 0.000007214999999999088, y: -0.05457364529072396 },\n { x: 0.000007215999999999088, y: -0.016324495543521216 },\n { x: 0.0000072169999999990874, y: -0.06788498424263945 },\n { x: 0.000007217999999999087, y: -0.04643206316024974 },\n { x: 0.000007218999999999087, y: -0.06839873383240357 },\n { x: 0.000007219999999999086, y: -0.044482676049630604 },\n { x: 0.000007220999999999086, y: -0.066599897522264 },\n { x: 0.000007221999999999086, y: -0.012602660575704364 },\n { x: 0.000007222999999999085, y: -0.01312911098588481 },\n { x: 0.000007223999999999085, y: -0.009756126175816025 },\n { x: 0.000007224999999999085, y: -0.019572539830613796 },\n { x: 0.000007225999999999084, y: -0.017282169356180477 },\n { x: 0.000007226999999999084, y: -0.05588622149709671 },\n { x: 0.000007227999999999084, y: -0.0319181223917204 },\n { x: 0.000007228999999999083, y: -0.02873308463785337 },\n { x: 0.000007229999999999083, y: -0.04711328623568554 },\n { x: 0.0000072309999999990825, y: -0.034514236708122946 },\n { x: 0.000007231999999999082, y: -0.0678602111585716 },\n { x: 0.000007232999999999082, y: -0.060309198680223185 },\n { x: 0.0000072339999999990815, y: -0.0011700067384117219 },\n { x: 0.000007234999999999081, y: -0.06157080325261845 },\n { x: 0.000007235999999999081, y: -0.035527707279226745 },\n { x: 0.0000072369999999990805, y: -0.04683480991382962 },\n { x: 0.00000723799999999908, y: -0.022069116434881842 },\n { x: 0.00000723899999999908, y: -0.048646766565729964 },\n { x: 0.000007239999999999079, y: -0.05017602241187144 },\n { x: 0.000007240999999999079, y: -0.007619300236317621 },\n { x: 0.000007241999999999079, y: -0.036026666114461765 },\n { x: 0.000007242999999999078, y: -0.007503725707290718 },\n { x: 0.000007243999999999078, y: -0.040453078589375434 },\n { x: 0.000007244999999999078, y: -0.04965943853564071 },\n { x: 0.000007245999999999077, y: -0.05183180374131115 },\n { x: 0.000007246999999999077, y: -0.0013592820216727572 },\n { x: 0.000007247999999999077, y: -0.04875086525302139 },\n { x: 0.000007248999999999076, y: -0.054776594121131436 },\n { x: 0.000007249999999999076, y: -0.001119077322421301 },\n { x: 0.000007250999999999076, y: -0.04946315121607191 },\n { x: 0.000007251999999999075, y: -0.046932301214086966 },\n { x: 0.000007252999999999075, y: -0.01844339432076955 },\n { x: 0.0000072539999999990745, y: -0.036046597201360865 },\n { x: 0.000007254999999999074, y: -0.06902305264522451 },\n { x: 0.000007255999999999074, y: -0.026575641423870998 },\n { x: 0.0000072569999999990735, y: -0.03599532803250995 },\n { x: 0.000007257999999999073, y: -0.013591971390709872 },\n { x: 0.000007258999999999073, y: -0.06557800945540092 },\n { x: 0.0000072599999999990724, y: -0.023609748791354426 },\n { x: 0.000007260999999999072, y: -0.02942454342789766 },\n { x: 0.000007261999999999072, y: -0.01285937942318674 },\n { x: 0.000007262999999999071, y: -0.030046031692851798 },\n { x: 0.000007263999999999071, y: -0.06377838719377696 },\n { x: 0.000007264999999999071, y: -0.07008301761452412 },\n { x: 0.00000726599999999907, y: -0.07184571001308271 },\n { x: 0.00000726699999999907, y: -0.00040319922835850563 },\n { x: 0.00000726799999999907, y: -0.06152685383348469 },\n { x: 0.000007268999999999069, y: -0.010046148492922131 },\n { x: 0.000007269999999999069, y: -0.020702638895373417 },\n { x: 0.000007270999999999069, y: -0.06781904873621691 },\n { x: 0.000007271999999999068, y: -0.028856109284528152 },\n { x: 0.000007272999999999068, y: 0.020051532148233048 },\n { x: 0.0000072739999999990676, y: -0.03294089443315309 },\n { x: 0.000007274999999999067, y: -0.06823420159741694 },\n { x: 0.000007275999999999067, y: -0.04715872046977922 },\n { x: 0.0000072769999999990665, y: -0.06182693551878753 },\n { x: 0.000007277999999999066, y: -0.02654279892887053 },\n { x: 0.000007278999999999066, y: -0.06450231029418176 },\n { x: 0.0000072799999999990655, y: 0.00018730673619885702 },\n { x: 0.000007280999999999065, y: 0.004437491259555969 },\n { x: 0.000007281999999999065, y: -0.033379181773633845 },\n { x: 0.0000072829999999990644, y: -0.00811025074228109 },\n { x: 0.000007283999999999064, y: -0.01932299440413382 },\n { x: 0.000007284999999999064, y: -0.062476493711495454 },\n { x: 0.000007285999999999063, y: -0.05633967496859482 },\n { x: 0.000007286999999999063, y: -0.05095558460029348 },\n { x: 0.000007287999999999063, y: -0.06169270358277662 },\n { x: 0.000007288999999999062, y: 0.004214057487375293 },\n { x: 0.000007289999999999062, y: -0.0314403193856731 },\n { x: 0.000007290999999999062, y: -0.04223928826216301 },\n { x: 0.000007291999999999061, y: -0.05218579916662878 },\n { x: 0.000007292999999999061, y: -0.06512995352023862 },\n { x: 0.000007293999999999061, y: -0.019280289348598385 },\n { x: 0.00000729499999999906, y: -0.010529166464689457 },\n { x: 0.00000729599999999906, y: -0.054191793012279596 },\n { x: 0.0000072969999999990596, y: 0.00341447104670501 },\n { x: 0.000007297999999999059, y: -0.061300984046850165 },\n { x: 0.000007298999999999059, y: -0.04801915952008483 },\n { x: 0.0000072999999999990585, y: -0.06163207442390853 },\n { x: 0.000007300999999999058, y: -0.026517169751005168 },\n { x: 0.000007301999999999058, y: -0.06827283557175418 },\n { x: 0.0000073029999999990575, y: -0.04333225738387995 },\n { x: 0.000007303999999999057, y: -0.019014867900510497 },\n { x: 0.000007304999999999057, y: -0.042787800777474995 },\n { x: 0.000007305999999999056, y: -0.05732084602202324 },\n { x: 0.000007306999999999056, y: -0.04722413410779244 },\n { x: 0.000007307999999999056, y: -0.05331884910020737 },\n { x: 0.000007308999999999055, y: -0.05369028352225893 },\n { x: 0.000007309999999999055, y: -0.014000733323174832 },\n { x: 0.000007310999999999055, y: -0.05651339213965757 },\n { x: 0.000007311999999999054, y: -0.05021771504216399 },\n { x: 0.000007312999999999054, y: -0.0674576824298019 },\n { x: 0.000007313999999999054, y: -0.00488150647327024 },\n { x: 0.000007314999999999053, y: -0.010434417514471415 },\n { x: 0.000007315999999999053, y: -0.0455467163632845 },\n { x: 0.000007316999999999053, y: -0.031997417874886316 },\n { x: 0.000007317999999999052, y: -0.002358351795812879 },\n { x: 0.000007318999999999052, y: -0.032794687231140894 },\n { x: 0.0000073199999999990515, y: 0.00498036922848083 },\n { x: 0.000007320999999999051, y: -0.059205743811512376 },\n { x: 0.000007321999999999051, y: 0.0031731552685313295 },\n { x: 0.0000073229999999990505, y: -0.06553022081679348 },\n { x: 0.00000732399999999905, y: -0.02630821224675649 },\n { x: 0.00000732499999999905, y: -0.06534531492579687 },\n { x: 0.0000073259999999990495, y: -0.06667356340977203 },\n { x: 0.000007326999999999049, y: -0.021080033149824675 },\n { x: 0.000007327999999999049, y: -0.021370518108956724 },\n { x: 0.000007328999999999048, y: -0.04579013271796882 },\n { x: 0.000007329999999999048, y: -0.01963070941772526 },\n { x: 0.000007330999999999048, y: -0.0017769243910953011 },\n { x: 0.000007331999999999047, y: -0.006390163308243206 },\n { x: 0.000007332999999999047, y: -0.014104190811848735 },\n { x: 0.000007333999999999047, y: -0.06104934852093748 },\n { x: 0.000007334999999999046, y: -0.024981775233572343 },\n { x: 0.000007335999999999046, y: -0.046500948214187154 },\n { x: 0.000007336999999999046, y: -0.038717687467909725 },\n { x: 0.000007337999999999045, y: -0.0062598823117806755 },\n { x: 0.000007338999999999045, y: -0.057163411645864054 },\n { x: 0.0000073399999999990446, y: -0.02316902345009852 },\n { x: 0.000007340999999999044, y: -0.03535388430589754 },\n { x: 0.000007341999999999044, y: -0.033194787939132483 },\n { x: 0.0000073429999999990435, y: -0.019869171345822282 },\n { x: 0.000007343999999999043, y: -0.017360930959795434 },\n { x: 0.000007344999999999043, y: -0.024607250401901627 },\n { x: 0.0000073459999999990425, y: -0.06327128041740664 },\n { x: 0.000007346999999999042, y: -0.06417892246293419 },\n { x: 0.000007347999999999042, y: -0.01785455424974962 },\n { x: 0.0000073489999999990414, y: 0.0030668403248644387 },\n { x: 0.000007349999999999041, y: -0.0032439513025625463 },\n { x: 0.000007350999999999041, y: -0.02058964230128615 },\n { x: 0.00000735199999999904, y: 0.0019649579833306598 },\n { x: 0.00000735299999999904, y: 0.0006424734532389405 },\n { x: 0.00000735399999999904, y: -0.042439142652943754 },\n { x: 0.000007354999999999039, y: -0.04806973094324732 },\n { x: 0.000007355999999999039, y: -0.03358593840910293 },\n { x: 0.000007356999999999039, y: -0.054136250512298936 },\n { x: 0.000007357999999999038, y: 0.002383695138218317 },\n { x: 0.000007358999999999038, y: -0.04287475697673759 },\n { x: 0.000007359999999999038, y: -0.016259981813938087 },\n { x: 0.000007360999999999037, y: 0.0024011171539192362 },\n { x: 0.000007361999999999037, y: -0.05720901087074616 },\n { x: 0.0000073629999999990366, y: 0.009931332279144355 },\n { x: 0.000007363999999999036, y: -0.001562856473653583 },\n { x: 0.000007364999999999036, y: -0.05241085908556514 },\n { x: 0.0000073659999999990355, y: -0.005895993464573628 },\n { x: 0.000007366999999999035, y: 0.01271480067304305 },\n { x: 0.000007367999999999035, y: -0.06059263713890752 },\n { x: 0.0000073689999999990345, y: -0.060055463644846256 },\n { x: 0.000007369999999999034, y: -0.02800740671090325 },\n { x: 0.000007370999999999034, y: -0.04924317423133233 },\n { x: 0.0000073719999999990334, y: -0.0617881403186811 },\n { x: 0.000007372999999999033, y: -0.0443199504506797 },\n { x: 0.000007373999999999033, y: 0.014030723300833811 },\n { x: 0.000007374999999999032, y: -0.05508856199787092 },\n { x: 0.000007375999999999032, y: 0.012688963124687445 },\n { x: 0.000007376999999999032, y: 0.004616942799878093 },\n { x: 0.000007377999999999031, y: -0.04175586614978387 },\n { x: 0.000007378999999999031, y: -0.013834914322985777 },\n { x: 0.000007379999999999031, y: -0.017223789589072433 },\n { x: 0.00000738099999999903, y: -0.009704489953258516 },\n { x: 0.00000738199999999903, y: -0.045797037612904434 },\n { x: 0.00000738299999999903, y: 0.004374736647417558 },\n { x: 0.000007383999999999029, y: 0.002699311262830021 },\n { x: 0.000007384999999999029, y: -0.011401949068785184 },\n { x: 0.0000073859999999990285, y: 0.011576793847585733 },\n { x: 0.000007386999999999028, y: 0.006822848264636281 },\n { x: 0.000007387999999999028, y: -0.04901639045102549 },\n { x: 0.0000073889999999990275, y: -0.006432331565351215 },\n { x: 0.000007389999999999027, y: -0.02934371453295898 },\n { x: 0.000007390999999999027, y: -0.018211033723946536 },\n { x: 0.0000073919999999990265, y: -0.026498710569875662 },\n { x: 0.000007392999999999026, y: -0.009706340944602156 },\n { x: 0.000007393999999999026, y: -0.014460503528586695 },\n { x: 0.000007394999999999025, y: -0.030389165750515854 },\n { x: 0.000007395999999999025, y: -0.04356653462251102 },\n { x: 0.000007396999999999025, y: 0.003292043599791135 },\n { x: 0.000007397999999999024, y: 0.016438158410479933 },\n { x: 0.000007398999999999024, y: -0.05687362787878322 },\n { x: 0.000007399999999999024, y: -0.0380985931069639 },\n { x: 0.000007400999999999023, y: 0.013965210059873664 },\n { x: 0.000007401999999999023, y: -0.03106620633414059 },\n { x: 0.000007402999999999023, y: -0.010542402449718116 },\n { x: 0.000007403999999999022, y: 0.014110691609459422 },\n { x: 0.000007404999999999022, y: -0.037852784459650075 },\n { x: 0.000007405999999999022, y: -0.023544119725373496 },\n { x: 0.000007406999999999021, y: 0.011490737773633197 },\n { x: 0.000007407999999999021, y: -0.014383899648944572 },\n { x: 0.0000074089999999990205, y: 0.010805690528233148 },\n { x: 0.00000740999999999902, y: 0.002869263427525283 },\n { x: 0.00000741099999999902, y: -0.018796968702294914 },\n { x: 0.0000074119999999990195, y: -0.05238256396814518 },\n { x: 0.000007412999999999019, y: -0.024113942804738442 },\n { x: 0.000007413999999999019, y: -0.03711348939954087 },\n { x: 0.0000074149999999990184, y: -0.03513189885138193 },\n { x: 0.000007415999999999018, y: -0.03094726632534426 },\n { x: 0.000007416999999999018, y: -0.046917484989736274 },\n { x: 0.000007417999999999017, y: -0.012055521211049618 },\n { x: 0.000007418999999999017, y: -0.005974042629585613 },\n { x: 0.000007419999999999017, y: -0.020695969397863254 },\n { x: 0.000007420999999999016, y: 0.0038074726994657554 },\n { x: 0.000007421999999999016, y: -0.009692356250001088 },\n { x: 0.000007422999999999016, y: 0.0032112933339301514 },\n { x: 0.000007423999999999015, y: -0.030543868427856828 },\n { x: 0.000007424999999999015, y: -0.033905980881533376 },\n { x: 0.000007425999999999015, y: 0.0028753468623225267 },\n { x: 0.000007426999999999014, y: -0.0032526842934471854 },\n { x: 0.000007427999999999014, y: -0.00251685038520184 },\n { x: 0.0000074289999999990136, y: -0.051886343585057254 },\n { x: 0.000007429999999999013, y: -0.02242221624925851 },\n { x: 0.000007430999999999013, y: 0.014810252834930239 },\n { x: 0.0000074319999999990125, y: -0.012795042673153354 },\n { x: 0.000007432999999999012, y: -0.034156727851912524 },\n { x: 0.000007433999999999012, y: 0.015542784896558103 },\n { x: 0.0000074349999999990115, y: 0.007799663182830971 },\n { x: 0.000007435999999999011, y: -0.027506886852384713 },\n { x: 0.000007436999999999011, y: -0.026278178011856765 },\n { x: 0.0000074379999999990104, y: -0.05327981105840306 },\n { x: 0.00000743899999999901, y: -0.009614204591109076 },\n { x: 0.00000743999999999901, y: -0.04685461688986286 },\n { x: 0.000007440999999999009, y: -0.04613772016630074 },\n { x: 0.000007441999999999009, y: -0.023813484103610606 },\n { x: 0.000007442999999999009, y: 0.019503401323730424 },\n { x: 0.000007443999999999008, y: -0.016178943271441756 },\n { x: 0.000007444999999999008, y: -0.04221617451891515 },\n { x: 0.000007445999999999008, y: -0.008322244472053857 },\n { x: 0.000007446999999999007, y: -0.016784004675501486 },\n { x: 0.000007447999999999007, y: 0.0206280093854243 },\n { x: 0.000007448999999999007, y: -0.0366815961304643 },\n { x: 0.000007449999999999006, y: -0.027226401899355025 },\n { x: 0.000007450999999999006, y: 0.024143156458077783 },\n { x: 0.0000074519999999990056, y: -0.011202393941574814 },\n { x: 0.000007452999999999005, y: -0.027791251024402663 },\n { x: 0.000007453999999999005, y: -0.022042573030777838 },\n { x: 0.0000074549999999990045, y: -0.03890564316841142 },\n { x: 0.000007455999999999004, y: -0.03315762378403287 },\n { x: 0.000007456999999999004, y: -0.047032878333595325 },\n { x: 0.0000074579999999990035, y: 0.008490278709715068 },\n { x: 0.000007458999999999003, y: -0.05026383719050988 },\n { x: 0.000007459999999999003, y: 0.011755637314889813 },\n { x: 0.000007460999999999002, y: 0.012063228527811021 },\n { x: 0.000007461999999999002, y: 0.01760047666943055 },\n { x: 0.000007462999999999002, y: 0.004782423488207331 },\n { x: 0.000007463999999999001, y: -0.013220204778171363 },\n { x: 0.000007464999999999001, y: -0.012474467972078369 },\n { x: 0.000007465999999999001, y: -0.00010112941245736355 },\n { x: 0.000007466999999999, y: 0.019849957090585825 },\n { x: 0.000007467999999999, y: -0.028526674274911422 },\n { x: 0.000007468999999999, y: -0.0367800334247735 },\n { x: 0.000007469999999998999, y: -0.04772225902819775 },\n { x: 0.000007470999999998999, y: 0.023846912362795056 },\n { x: 0.000007471999999998999, y: -0.037314787356605136 },\n { x: 0.000007472999999998998, y: -0.04558715473869202 },\n { x: 0.000007473999999998998, y: 0.026508529307455175 },\n { x: 0.0000074749999999989975, y: -0.012872266463990981 },\n { x: 0.000007475999999998997, y: -0.018841512370495396 },\n { x: 0.000007476999999998997, y: -0.0024487998777189875 },\n { x: 0.0000074779999999989965, y: -0.018101179289549765 },\n { x: 0.000007478999999998996, y: 0.015044287679104505 },\n { x: 0.000007479999999998996, y: 0.0011038575802550191 },\n { x: 0.0000074809999999989955, y: -0.013647247998661193 },\n { x: 0.000007481999999998995, y: 0.014640754584732319 },\n { x: 0.000007482999999998995, y: -0.03806331479103022 },\n { x: 0.000007483999999998994, y: 0.014846101806114804 },\n { x: 0.000007484999999998994, y: -0.01926068662190827 },\n { x: 0.000007485999999998994, y: 0.0015913629028468518 },\n { x: 0.000007486999999998993, y: -0.014693312571803202 },\n { x: 0.000007487999999998993, y: 0.0122955695094787 },\n { x: 0.000007488999999998993, y: -0.02207191822747178 },\n { x: 0.000007489999999998992, y: -0.03921729422865224 },\n { x: 0.000007490999999998992, y: 0.012055261852238486 },\n { x: 0.000007491999999998992, y: -0.03354121074099931 },\n { x: 0.000007492999999998991, y: -0.021733193782794664 },\n { x: 0.000007493999999998991, y: 0.01422146979248136 },\n { x: 0.0000074949999999989906, y: -0.024322521978045526 },\n { x: 0.00000749599999999899, y: 0.01516836216012753 },\n { x: 0.00000749699999999899, y: 0.031712033041274894 },\n { x: 0.0000074979999999989895, y: 0.02373926308637362 },\n { x: 0.000007498999999998989, y: -0.04333450440251446 },\n { x: 0.000007499999999998989, y: -0.00432981503589794 },\n { x: 0.0000075009999999989885, y: -0.013161511096584224 },\n { x: 0.000007501999999998988, y: 0.026990585809848762 },\n { x: 0.000007502999999998988, y: -0.02955103873849134 },\n { x: 0.0000075039999999989874, y: 0.02297200661656664 },\n { x: 0.000007504999999998987, y: -0.03426265593756837 },\n { x: 0.000007505999999998987, y: 0.030867566385499062 },\n { x: 0.000007506999999998986, y: 0.011164551199046094 },\n { x: 0.000007507999999998986, y: -0.0354970835544735 },\n { x: 0.000007508999999998986, y: -0.008877616834295568 },\n { x: 0.000007509999999998985, y: 0.016362353054111985 },\n { x: 0.000007510999999998985, y: -0.01955606488125417 },\n { x: 0.000007511999999998985, y: 0.01777636467476429 },\n { x: 0.000007512999999998984, y: 0.012551204087390865 },\n { x: 0.000007513999999998984, y: 0.023974925168885608 },\n { x: 0.000007514999999998984, y: 0.010787144363156274 },\n { x: 0.000007515999999998983, y: -0.0224715238087419 },\n { x: 0.000007516999999998983, y: 0.02666368644044954 },\n { x: 0.0000075179999999989826, y: 0.0027069205580705358 },\n { x: 0.000007518999999998982, y: -0.02106567874260163 },\n { x: 0.000007519999999998982, y: -0.03866795049489245 },\n { x: 0.0000075209999999989815, y: 0.02438285208966404 },\n { x: 0.000007521999999998981, y: 0.02109652000908158 },\n { x: 0.000007522999999998981, y: 0.025346655104203333 },\n { x: 0.0000075239999999989805, y: -0.03734569446928815 },\n { x: 0.00000752499999999898, y: 0.02095433238898075 },\n { x: 0.00000752599999999898, y: 0.03544585238026281 },\n { x: 0.0000075269999999989794, y: -0.034792246561947515 },\n { x: 0.000007527999999998979, y: -0.015283662297831499 },\n { x: 0.000007528999999998979, y: -0.03314493750194377 },\n { x: 0.000007529999999998978, y: -0.026262624278731085 },\n { x: 0.000007530999999998978, y: -0.025628948669453325 },\n { x: 0.000007531999999998978, y: -0.016870724346038788 },\n { x: 0.000007532999999998977, y: -0.01630860415249793 },\n { x: 0.000007533999999998977, y: -0.03877309487735412 },\n { x: 0.000007534999999998977, y: -0.014458705854968588 },\n { x: 0.000007535999999998976, y: -0.004380236181917542 },\n { x: 0.000007536999999998976, y: -0.03499118488611446 },\n { x: 0.000007537999999998976, y: 0.02449090105524733 },\n { x: 0.000007538999999998975, y: 0.003282918889215191 },\n { x: 0.000007539999999998975, y: 0.05045696812558543 },\n { x: 0.0000075409999999989745, y: -0.03368129503509705 },\n { x: 0.000007541999999998974, y: 0.03591621386706343 },\n { x: 0.000007542999999998974, y: 0.03233171436130313 },\n { x: 0.0000075439999999989735, y: 0.02854159511395619 },\n { x: 0.000007544999999998973, y: 0.007452164102296521 },\n { x: 0.000007545999999998973, y: 0.026424106338118713 },\n { x: 0.0000075469999999989725, y: 0.02579015979367145 },\n { x: 0.000007547999999998972, y: -0.007994499684184376 },\n { x: 0.000007548999999998972, y: 0.005277501410294967 },\n { x: 0.000007549999999998971, y: 0.01569678719187802 },\n { x: 0.000007550999999998971, y: 0.031068673303270934 },\n { x: 0.000007551999999998971, y: 0.035321374763753334 },\n { x: 0.00000755299999999897, y: -0.030803174012017643 },\n { x: 0.00000755399999999897, y: -0.013411724611616698 },\n { x: 0.00000755499999999897, y: 0.004404635733234577 },\n { x: 0.000007555999999998969, y: -0.03291455494326488 },\n { x: 0.000007556999999998969, y: -0.01697052445817402 },\n { x: 0.000007557999999998969, y: -0.01194490823610042 },\n { x: 0.000007558999999998968, y: -0.004597368497743597 },\n { x: 0.000007559999999998968, y: 0.0015126267726125104 },\n { x: 0.000007560999999998968, y: -0.02579499150911735 },\n { x: 0.000007561999999998967, y: 0.03721085587804962 },\n { x: 0.000007562999999998967, y: -0.016809178152901567 },\n { x: 0.0000075639999999989665, y: -0.01539740359864833 },\n { x: 0.000007564999999998966, y: 0.002038429423671922 },\n { x: 0.000007565999999998966, y: 0.005204954726066064 },\n { x: 0.0000075669999999989655, y: 0.04198668751811494 },\n { x: 0.000007567999999998965, y: 0.012864884541321269 },\n { x: 0.000007568999999998965, y: 0.0364630682898983 },\n { x: 0.0000075699999999989644, y: 0.008356222136393372 },\n { x: 0.000007570999999998964, y: -0.03290623074254493 },\n { x: 0.000007571999999998964, y: -0.009913686924330138 },\n { x: 0.000007572999999998963, y: -0.03289334433949133 },\n { x: 0.000007573999999998963, y: -0.019077924400711852 },\n { x: 0.000007574999999998963, y: -0.029565512613616667 },\n { x: 0.000007575999999998962, y: 0.034160674854791025 },\n { x: 0.000007576999999998962, y: 0.02142962950636111 },\n { x: 0.000007577999999998962, y: 0.05143712770089505 },\n { x: 0.000007578999999998961, y: -0.009584524436073699 },\n { x: 0.000007579999999998961, y: 0.0032343133707201884 },\n { x: 0.000007580999999998961, y: -0.020962860600391355 },\n { x: 0.00000758199999999896, y: 0.0070203490026829055 },\n { x: 0.00000758299999999896, y: -0.021497278792991327 },\n { x: 0.0000075839999999989596, y: -0.002922441062924031 },\n { x: 0.000007584999999998959, y: 0.009262999694934262 },\n { x: 0.000007585999999998959, y: 0.01500860245135369 },\n { x: 0.0000075869999999989585, y: -0.00961979415109349 },\n { x: 0.000007587999999998958, y: 0.042562307472870375 },\n { x: 0.000007588999999998958, y: 0.03642840757380023 },\n { x: 0.0000075899999999989575, y: 0.03823126307874945 },\n { x: 0.000007590999999998957, y: 0.028377175403870736 },\n { x: 0.000007591999999998957, y: 0.04493090307456646 },\n { x: 0.0000075929999999989564, y: 0.042443489411100085 },\n { x: 0.000007593999999998956, y: 0.022158768532757746 },\n { x: 0.000007594999999998956, y: -0.028387724183935748 },\n { x: 0.000007595999999998955, y: 0.02937125657833063 },\n { x: 0.000007596999999998955, y: -0.014528051568962745 },\n { x: 0.000007597999999998955, y: -0.019585544647909143 },\n { x: 0.000007598999999998954, y: 0.017416150975529378 },\n { x: 0.000007599999999998954, y: -0.02617746484828591 },\n { x: 0.000007600999999998954, y: -0.009730854872071953 },\n { x: 0.000007601999999998953, y: -0.001462162978598424 },\n { x: 0.000007602999999998953, y: 0.03897227447851271 },\n { x: 0.000007603999999998953, y: -0.00805184053178228 },\n { x: 0.000007604999999998952, y: -0.022128208800918613 },\n { x: 0.000007605999999998952, y: 0.014957295478214954 },\n { x: 0.0000076069999999989516, y: 0.00023436006724148438 },\n { x: 0.000007607999999998951, y: -0.0018134446823015737 },\n { x: 0.000007608999999998951, y: 0.03526274005507467 },\n { x: 0.0000076099999999989505, y: 0.03410482905249744 },\n { x: 0.00000761099999999895, y: 0.029072906356520867 },\n { x: 0.00000761199999999895, y: -0.021051780698912732 },\n { x: 0.0000076129999999989495, y: 0.029051296058945554 },\n { x: 0.000007613999999998949, y: -0.002960097650801281 },\n { x: 0.000007614999999998949, y: -0.022063092662033996 },\n { x: 0.000007615999999998948, y: 0.03592708122692177 },\n { x: 0.000007616999999998948, y: 0.025292641537510444 },\n { x: 0.000007617999999998948, y: -0.011840778527306311 },\n { x: 0.000007618999999998947, y: -0.023986228442120842 },\n { x: 0.000007619999999998947, y: -0.012683697843507804 },\n { x: 0.000007620999999998947, y: -0.01196524864526457 },\n { x: 0.000007621999999998946, y: 0.02752333541683069 },\n { x: 0.000007622999999998946, y: 0.04299391611587114 },\n { x: 0.000007623999999998946, y: 0.036308488367850555 },\n { x: 0.000007624999999998945, y: 0.03911561245356373 },\n { x: 0.000007625999999998945, y: -0.011818107863260542 },\n { x: 0.000007626999999998945, y: -0.01921216299571429 },\n { x: 0.000007627999999998944, y: -0.01454998076562428 },\n { x: 0.000007628999999998944, y: 0.012927259519001694 },\n { x: 0.000007629999999998944, y: -0.024562009876564588 },\n { x: 0.000007630999999998945, y: 0.009896508349904165 },\n { x: 0.000007631999999998945, y: -0.01618539706613077 },\n { x: 0.000007632999999998946, y: -0.014800790102505979 },\n { x: 0.000007633999999998946, y: 0.02447504220629354 },\n { x: 0.000007634999999998947, y: 0.004056376996161574 },\n { x: 0.000007635999999998947, y: 0.010958593992927083 },\n { x: 0.000007636999999998948, y: 0.023732863792113885 },\n { x: 0.000007637999999998948, y: 0.011696420088332432 },\n { x: 0.000007638999999998949, y: -0.018330710942847356 },\n { x: 0.00000763999999999895, y: 0.018141207690429744 },\n { x: 0.00000764099999999895, y: 0.04016213142883144 },\n { x: 0.00000764199999999895, y: -0.010796136535958734 },\n { x: 0.000007642999999998951, y: 0.039972437778972664 },\n { x: 0.000007643999999998951, y: -0.009421163380471876 },\n { x: 0.000007644999999998952, y: -0.01612936914685939 },\n { x: 0.000007645999999998952, y: -0.00017625205542366566 },\n { x: 0.000007646999999998953, y: 0.005491790013955621 },\n { x: 0.000007647999999998953, y: 0.033663732781375036 },\n { x: 0.000007648999999998954, y: 0.020685031282515462 },\n { x: 0.000007649999999998954, y: 0.010113591904799487 },\n { x: 0.000007650999999998955, y: -0.010165489344933065 },\n { x: 0.000007651999999998955, y: 0.026057292939187376 },\n { x: 0.000007652999999998956, y: 0.017384662074457387 },\n { x: 0.000007653999999998956, y: -0.007590810428950672 },\n { x: 0.000007654999999998957, y: 0.031458194176884086 },\n { x: 0.000007655999999998957, y: -0.020630593811190673 },\n { x: 0.000007656999999998958, y: 0.019014821534339907 },\n { x: 0.000007657999999998958, y: 0.011743937697930562 },\n { x: 0.000007658999999998959, y: 0.00007031287137651207 },\n { x: 0.00000765999999999896, y: 0.02303909944341818 },\n { x: 0.00000766099999999896, y: 0.006995922923644005 },\n { x: 0.00000766199999999896, y: -0.017085098575874716 },\n { x: 0.00000766299999999896, y: 0.0024778228586560154 },\n { x: 0.000007663999999998961, y: 0.01669216614428899 },\n { x: 0.000007664999999998962, y: 0.02960072769232535 },\n { x: 0.000007665999999998962, y: 0.016507543912620406 },\n { x: 0.000007666999999998963, y: 0.0010951361706479142 },\n { x: 0.000007667999999998963, y: 0.0442289600007922 },\n { x: 0.000007668999999998964, y: 0.039799982327582126 },\n { x: 0.000007669999999998964, y: 0.051568161711428445 },\n { x: 0.000007670999999998965, y: 0.016110453617722443 },\n { x: 0.000007671999999998965, y: 0.04010307109694563 },\n { x: 0.000007672999999998966, y: 0.042413509986628364 },\n { x: 0.000007673999999998966, y: -0.0017353305800867844 },\n { x: 0.000007674999999998967, y: 0.0031100488747114532 },\n { x: 0.000007675999999998967, y: 0.04758293813736568 },\n { x: 0.000007676999999998968, y: 0.024826948820876632 },\n { x: 0.000007677999999998968, y: -0.01066632664993435 },\n { x: 0.000007678999999998969, y: -0.018992853867057128 },\n { x: 0.00000767999999999897, y: 0.019219533773053337 },\n { x: 0.00000768099999999897, y: 0.04147738284632212 },\n { x: 0.00000768199999999897, y: 0.0020314928236688217 },\n { x: 0.00000768299999999897, y: 0.01835181358908086 },\n { x: 0.000007683999999998971, y: 0.0030591714963266944 },\n { x: 0.000007684999999998972, y: 0.018681697479479734 },\n { x: 0.000007685999999998972, y: 0.04999125248055506 },\n { x: 0.000007686999999998973, y: -0.010898018786641987 },\n { x: 0.000007687999999998973, y: 0.0059386370077591875 },\n { x: 0.000007688999999998974, y: -0.007419026099136347 },\n { x: 0.000007689999999998974, y: 0.036887778361636606 },\n { x: 0.000007690999999998975, y: 0.05261245909478904 },\n { x: 0.000007691999999998975, y: 0.043685703905142814 },\n { x: 0.000007692999999998976, y: 0.042904681328542 },\n { x: 0.000007693999999998976, y: -0.000833875149596517 },\n { x: 0.000007694999999998977, y: 0.01889166734862338 },\n { x: 0.000007695999999998977, y: 0.04468714198644731 },\n { x: 0.000007696999999998978, y: -0.008537668615090279 },\n { x: 0.000007697999999998978, y: 0.02512113820589359 },\n { x: 0.000007698999999998979, y: 0.04728383163303347 },\n { x: 0.00000769999999999898, y: 0.05032094690383092 },\n { x: 0.00000770099999999898, y: 0.0559866408783624 },\n { x: 0.00000770199999999898, y: 0.019395711944496637 },\n { x: 0.00000770299999999898, y: 0.016632591897018753 },\n { x: 0.000007703999999998981, y: 0.007924696645969405 },\n { x: 0.000007704999999998982, y: 0.04174617014399477 },\n { x: 0.000007705999999998982, y: 0.012036490384969293 },\n { x: 0.000007706999999998983, y: 0.03852745479281464 },\n { x: 0.000007707999999998983, y: -0.0014372534157544269 },\n { x: 0.000007708999999998984, y: 0.026181174619044744 },\n { x: 0.000007709999999998984, y: -0.01760225469367355 },\n { x: 0.000007710999999998985, y: 0.011413126994314975 },\n { x: 0.000007711999999998985, y: -0.014502699989748288 },\n { x: 0.000007712999999998986, y: -0.0017108503129400418 },\n { x: 0.000007713999999998986, y: 0.0445193429181658 },\n { x: 0.000007714999999998987, y: -0.012619364314126563 },\n { x: 0.000007715999999998987, y: 0.028376642518647098 },\n { x: 0.000007716999999998988, y: 0.035849345538410175 },\n { x: 0.000007717999999998988, y: 0.023629270732180258 },\n { x: 0.000007718999999998989, y: -0.012284780744528115 },\n { x: 0.00000771999999999899, y: 0.020828097089611333 },\n { x: 0.00000772099999999899, y: 0.04557571923451602 },\n { x: 0.00000772199999999899, y: 0.0425780433370441 },\n { x: 0.00000772299999999899, y: -0.007011633087120165 },\n { x: 0.000007723999999998991, y: 0.02788105907510139 },\n { x: 0.000007724999999998992, y: 0.057409955148969356 },\n { x: 0.000007725999999998992, y: 0.03858877117710563 },\n { x: 0.000007726999999998993, y: 0.054476967022339735 },\n { x: 0.000007727999999998993, y: 0.005778750610229295 },\n { x: 0.000007728999999998994, y: 0.05268105153052148 },\n { x: 0.000007729999999998994, y: 0.05636900577757886 },\n { x: 0.000007730999999998995, y: 0.04508946213480923 },\n { x: 0.000007731999999998995, y: 0.02480106274804994 },\n { x: 0.000007732999999998996, y: 0.0279322807714678 },\n { x: 0.000007733999999998996, y: 0.05045198267856109 },\n { x: 0.000007734999999998997, y: 0.01548853735363388 },\n { x: 0.000007735999999998997, y: 0.042582548333932546 },\n { x: 0.000007736999999998998, y: 0.0381994780432959 },\n { x: 0.000007737999999998998, y: -0.015444508336462933 },\n { x: 0.000007738999999998999, y: 0.0558933507230641 },\n { x: 0.000007739999999999, y: -0.0008775844249095145 },\n { x: 0.000007740999999999, y: 0.05859153378138359 },\n { x: 0.000007741999999999, y: 0.045375737791050946 },\n { x: 0.000007742999999999, y: 0.03675973078634645 },\n { x: 0.000007743999999999001, y: 0.02547984382966473 },\n { x: 0.000007744999999999002, y: 0.04435092675313653 },\n { x: 0.000007745999999999002, y: -0.012938892968024234 },\n { x: 0.000007746999999999003, y: 0.010184716686544242 },\n { x: 0.000007747999999999003, y: 0.03879746076217398 },\n { x: 0.000007748999999999004, y: 0.017701820635475186 },\n { x: 0.000007749999999999004, y: 0.04656749345894277 },\n { x: 0.000007750999999999005, y: 0.03136289959237096 },\n { x: 0.000007751999999999005, y: 0.031112004252844695 },\n { x: 0.000007752999999999006, y: 0.028046216631737727 },\n { x: 0.000007753999999999006, y: 0.02210375364385562 },\n { x: 0.000007754999999999007, y: -0.005203922641432282 },\n { x: 0.000007755999999999007, y: 0.02475813174325188 },\n { x: 0.000007756999999999008, y: -0.010332988976684408 },\n { x: 0.000007757999999999008, y: -0.007491358019963458 },\n { x: 0.000007758999999999009, y: 0.037208682834586324 },\n { x: 0.00000775999999999901, y: 0.006282013864344023 },\n { x: 0.00000776099999999901, y: 0.03753684339186861 },\n { x: 0.00000776199999999901, y: 0.03045152075241148 },\n { x: 0.00000776299999999901, y: 0.011530639911663377 },\n { x: 0.000007763999999999011, y: 0.024311025331901152 },\n { x: 0.000007764999999999012, y: 0.002215046336795652 },\n { x: 0.000007765999999999012, y: 0.03802840991482098 },\n { x: 0.000007766999999999013, y: 0.01007749563498892 },\n { x: 0.000007767999999999013, y: 0.004688473023074728 },\n { x: 0.000007768999999999014, y: -0.013099934734618016 },\n { x: 0.000007769999999999014, y: 0.027827802352301884 },\n { x: 0.000007770999999999015, y: 0.009426777943462174 },\n { x: 0.000007771999999999015, y: 0.021110600853828817 },\n { x: 0.000007772999999999016, y: 0.031218882406842556 },\n { x: 0.000007773999999999016, y: 0.031411969185098886 },\n { x: 0.000007774999999999017, y: 0.05129289786532706 },\n { x: 0.000007775999999999017, y: 0.04063580840095517 },\n { x: 0.000007776999999999018, y: 0.024419811186231967 },\n { x: 0.000007777999999999018, y: 0.055769883039295656 },\n { x: 0.000007778999999999019, y: 0.03175411328558628 },\n { x: 0.00000777999999999902, y: 0.05184407607598709 },\n { x: 0.00000778099999999902, y: 0.048874249361466705 },\n { x: 0.00000778199999999902, y: 0.04883436208297441 },\n { x: 0.00000778299999999902, y: -0.012539527222049655 },\n { x: 0.000007783999999999021, y: 0.03913945653469793 },\n { x: 0.000007784999999999022, y: 0.05019826558092637 },\n { x: 0.000007785999999999022, y: 0.006752722659745917 },\n { x: 0.000007786999999999023, y: 0.045161348783275476 },\n { x: 0.000007787999999999023, y: 0.0409106911546238 },\n { x: 0.000007788999999999024, y: -0.004457631635826964 },\n { x: 0.000007789999999999024, y: 0.051363065750822015 },\n { x: 0.000007790999999999025, y: 0.0072704525128081746 },\n { x: 0.000007791999999999025, y: 0.03599420204123263 },\n { x: 0.000007792999999999026, y: -0.009904198581136607 },\n { x: 0.000007793999999999026, y: 0.05086274757800156 },\n { x: 0.000007794999999999027, y: 0.0476131453135 },\n { x: 0.000007795999999999027, y: 0.0037769072025102407 },\n { x: 0.000007796999999999028, y: 0.029802713056474722 },\n { x: 0.000007797999999999028, y: 0.0417024074756982 },\n { x: 0.000007798999999999029, y: 0.05540923174404717 },\n { x: 0.00000779999999999903, y: 0.05202366045281162 },\n { x: 0.00000780099999999903, y: 0.01130822852809163 },\n { x: 0.00000780199999999903, y: -0.013233837063023893 },\n { x: 0.00000780299999999903, y: 0.05086178414384361 },\n { x: 0.000007803999999999031, y: 0.007362279469459287 },\n { x: 0.000007804999999999032, y: 0.048319179140476856 },\n { x: 0.000007805999999999032, y: -0.00822210383778441 },\n { x: 0.000007806999999999033, y: 0.025670399599903814 },\n { x: 0.000007807999999999033, y: 0.001203379975189836 },\n { x: 0.000007808999999999034, y: 0.060469449985909 },\n { x: 0.000007809999999999034, y: 0.031268240329472875 },\n { x: 0.000007810999999999035, y: 0.03578571754426271 },\n { x: 0.000007811999999999035, y: 0.005189839651818642 },\n { x: 0.000007812999999999036, y: 0.013976523106403611 },\n { x: 0.000007813999999999036, y: 0.03159522292271111 },\n { x: 0.000007814999999999037, y: -0.009812905457127607 },\n { x: 0.000007815999999999037, y: 0.013376218328183078 },\n { x: 0.000007816999999999038, y: 0.004157880715999707 },\n { x: 0.000007817999999999038, y: 0.035815647141656894 },\n { x: 0.000007818999999999039, y: 0.05873553634626 },\n { x: 0.000007819999999999039, y: 0.0022676561863314883 },\n { x: 0.00000782099999999904, y: 0.020510670694557677 },\n { x: 0.00000782199999999904, y: 0.024508532011373284 },\n { x: 0.00000782299999999904, y: 0.045025773671920996 },\n { x: 0.000007823999999999041, y: 0.029951701582998633 },\n { x: 0.000007824999999999042, y: 0.03397588706260915 },\n { x: 0.000007825999999999042, y: 0.05618288672796291 },\n { x: 0.000007826999999999043, y: 0.00936978530659504 },\n { x: 0.000007827999999999043, y: 0.029439010786099114 },\n { x: 0.000007828999999999044, y: 0.02374952405800666 },\n { x: 0.000007829999999999044, y: -0.010207023202618452 },\n { x: 0.000007830999999999045, y: 0.0008811106276202102 },\n { x: 0.000007831999999999045, y: 0.05177504426499105 },\n { x: 0.000007832999999999046, y: 0.021697625329325457 },\n { x: 0.000007833999999999046, y: -0.0019407255688146559 },\n { x: 0.000007834999999999047, y: 0.05151867456724748 },\n { x: 0.000007835999999999047, y: -0.0036660133149483305 },\n { x: 0.000007836999999999048, y: 0.018607507507157266 },\n { x: 0.000007837999999999048, y: 0.0372279393384259 },\n { x: 0.000007838999999999049, y: 0.03748309089185409 },\n { x: 0.000007839999999999049, y: 0.05452296644040515 },\n { x: 0.00000784099999999905, y: 0.03969168675630745 },\n { x: 0.00000784199999999905, y: 0.05511777929415575 },\n { x: 0.00000784299999999905, y: 0.06131000386865333 },\n { x: 0.000007843999999999051, y: 0.0008756484931444243 },\n { x: 0.000007844999999999052, y: 0.01445727818493984 },\n { x: 0.000007845999999999052, y: 0.041360827320049504 },\n { x: 0.000007846999999999053, y: 0.005959631337519481 },\n { x: 0.000007847999999999053, y: 0.04074289921088947 },\n { x: 0.000007848999999999054, y: 0.061418744341436696 },\n { x: 0.000007849999999999054, y: -0.0010903634977960479 },\n { x: 0.000007850999999999055, y: -0.010081540029769857 },\n { x: 0.000007851999999999055, y: -0.010914217715337377 },\n { x: 0.000007852999999999056, y: 0.0010120627226539794 },\n { x: 0.000007853999999999056, y: 0.018722247032854158 },\n { x: 0.000007854999999999057, y: 0.00906280646278798 },\n { x: 0.000007855999999999057, y: 0.017077871742720623 },\n { x: 0.000007856999999999058, y: 0.03558183728968866 },\n { x: 0.000007857999999999058, y: 0.014210897125441276 },\n { x: 0.000007858999999999059, y: 0.05495359216495571 },\n { x: 0.000007859999999999059, y: 0.0018870619423871325 },\n { x: 0.00000786099999999906, y: 0.05736083411579576 },\n { x: 0.00000786199999999906, y: 0.03590821512713628 },\n { x: 0.00000786299999999906, y: 0.03450245061322651 },\n { x: 0.000007863999999999061, y: -0.00814463049788602 },\n { x: 0.000007864999999999062, y: 0.022473123382872953 },\n { x: 0.000007865999999999062, y: -0.003248763086752357 },\n { x: 0.000007866999999999063, y: 0.013835411450095206 },\n { x: 0.000007867999999999063, y: 0.06002764997563929 },\n { x: 0.000007868999999999064, y: 0.05820367389921274 },\n { x: 0.000007869999999999064, y: 0.0377107232983148 },\n { x: 0.000007870999999999065, y: 0.001080100461624784 },\n { x: 0.000007871999999999065, y: 0.02269997811561928 },\n { x: 0.000007872999999999066, y: -0.008949483380953145 },\n { x: 0.000007873999999999066, y: -0.007254745378965154 },\n { x: 0.000007874999999999067, y: -0.008721772415156082 },\n { x: 0.000007875999999999067, y: 0.04103177633082947 },\n { x: 0.000007876999999999068, y: 0.05048931037349442 },\n { x: 0.000007877999999999068, y: 0.058958010346682244 },\n { x: 0.000007878999999999069, y: -0.0115174370675173 },\n { x: 0.000007879999999999069, y: -0.0027931515839453303 },\n { x: 0.00000788099999999907, y: 0.03312929463196517 },\n { x: 0.00000788199999999907, y: 0.04331367491296444 },\n { x: 0.00000788299999999907, y: 0.022830339622249177 },\n { x: 0.000007883999999999071, y: 0.00977155855452738 },\n { x: 0.000007884999999999072, y: -0.0010471104747204578 },\n { x: 0.000007885999999999072, y: -0.0041364148772614975 },\n { x: 0.000007886999999999073, y: 0.012677395112630649 },\n { x: 0.000007887999999999073, y: 0.04330700174525166 },\n { x: 0.000007888999999999074, y: -0.004625019110908991 },\n { x: 0.000007889999999999074, y: 0.05766676431510688 },\n { x: 0.000007890999999999075, y: 0.027243821376849643 },\n { x: 0.000007891999999999075, y: 0.031299601613999396 },\n { x: 0.000007892999999999076, y: 0.03779368310848319 },\n { x: 0.000007893999999999076, y: 0.012969531847962608 },\n { x: 0.000007894999999999077, y: 0.005545400182819873 },\n { x: 0.000007895999999999077, y: 0.04874776257086391 },\n { x: 0.000007896999999999078, y: -0.0073332341360738545 },\n { x: 0.000007897999999999078, y: 0.024210154552340327 },\n { x: 0.000007898999999999079, y: 0.01799733573125864 },\n { x: 0.000007899999999999079, y: -0.007543973671310669 },\n { x: 0.00000790099999999908, y: 0.026921935233092532 },\n { x: 0.00000790199999999908, y: 0.05021230345670767 },\n { x: 0.00000790299999999908, y: 0.05463573667112673 },\n { x: 0.000007903999999999081, y: 0.00953585836873683 },\n { x: 0.000007904999999999082, y: 0.05287629394823225 },\n { x: 0.000007905999999999082, y: 0.0009692759758983087 },\n { x: 0.000007906999999999083, y: 0.011357120029424893 },\n { x: 0.000007907999999999083, y: 0.005085014891919797 },\n { x: 0.000007908999999999084, y: 0.051770801739135675 },\n { x: 0.000007909999999999084, y: 0.012314550038175808 },\n { x: 0.000007910999999999085, y: 0.05607228620256005 },\n { x: 0.000007911999999999085, y: 0.014274322095509974 },\n { x: 0.000007912999999999086, y: 0.02026228050542361 },\n { x: 0.000007913999999999086, y: 0.006623927401461248 },\n { x: 0.000007914999999999087, y: 0.004023098577084459 },\n { x: 0.000007915999999999087, y: 0.023657776545005123 },\n { x: 0.000007916999999999088, y: 0.02641928242407151 },\n { x: 0.000007917999999999088, y: 0.014311615245716058 },\n { x: 0.000007918999999999088, y: 0.032271971321202485 },\n { x: 0.000007919999999999089, y: 0.03525585207965565 },\n { x: 0.00000792099999999909, y: 0.016018419516724655 },\n { x: 0.00000792199999999909, y: 0.03282530104177738 },\n { x: 0.00000792299999999909, y: 0.05681693447647093 },\n { x: 0.000007923999999999091, y: -0.0032993832898068516 },\n { x: 0.000007924999999999091, y: -0.013710217354184047 },\n { x: 0.000007925999999999092, y: -0.017386206323801223 },\n { x: 0.000007926999999999092, y: -0.016078173977449976 },\n { x: 0.000007927999999999093, y: 0.04044817079314449 },\n { x: 0.000007928999999999093, y: 0.015769346966996937 },\n { x: 0.000007929999999999094, y: 0.005834023923001967 },\n { x: 0.000007930999999999094, y: 0.024876498211160235 },\n { x: 0.000007931999999999095, y: 0.0001635946419980376 },\n { x: 0.000007932999999999095, y: -0.016449592222643028 },\n { x: 0.000007933999999999096, y: 0.0515092338916977 },\n { x: 0.000007934999999999096, y: 0.04848429344123602 },\n { x: 0.000007935999999999097, y: 0.04426017462735836 },\n { x: 0.000007936999999999097, y: -0.017023788603873883 },\n { x: 0.000007937999999999098, y: 0.04365549657593282 },\n { x: 0.000007938999999999098, y: 0.04002754833209317 },\n { x: 0.000007939999999999099, y: -0.01286436096612836 },\n { x: 0.0000079409999999991, y: 0.04276388978712044 },\n { x: 0.0000079419999999991, y: 0.027021217515152095 },\n { x: 0.0000079429999999991, y: 0.043786971344992986 },\n { x: 0.000007943999999999101, y: -0.012981778346742162 },\n { x: 0.000007944999999999101, y: 0.011770894364588454 },\n { x: 0.000007945999999999102, y: -0.0168482036233206 },\n { x: 0.000007946999999999102, y: -0.014984294860894778 },\n { x: 0.000007947999999999103, y: 0.03502531805514158 },\n { x: 0.000007948999999999103, y: 0.053076451917723144 },\n { x: 0.000007949999999999104, y: -0.004273155917371329 },\n { x: 0.000007950999999999104, y: 0.02446885539358464 },\n { x: 0.000007951999999999105, y: -0.01513073224237239 },\n { x: 0.000007952999999999105, y: -0.006394293499375203 },\n { x: 0.000007953999999999106, y: 0.007505311441084744 },\n { x: 0.000007954999999999106, y: -0.004892769924894121 },\n { x: 0.000007955999999999107, y: 0.003496511197928145 },\n { x: 0.000007956999999999107, y: 0.03203163074655121 },\n { x: 0.000007957999999999108, y: 0.000367262681439981 },\n { x: 0.000007958999999999108, y: -0.010262676311403554 },\n { x: 0.000007959999999999109, y: 0.02949507047575882 },\n { x: 0.00000796099999999911, y: -0.018137670088596073 },\n { x: 0.00000796199999999911, y: 0.020305544970873272 },\n { x: 0.00000796299999999911, y: 0.01619478593461053 },\n { x: 0.000007963999999999111, y: 0.002928196333172199 },\n { x: 0.000007964999999999111, y: 0.04674053821092112 },\n { x: 0.000007965999999999112, y: -0.011372329609377358 },\n { x: 0.000007966999999999112, y: 0.04612851816173901 },\n { x: 0.000007967999999999113, y: 0.05550999132552603 },\n { x: 0.000007968999999999113, y: 0.007698701301413112 },\n { x: 0.000007969999999999114, y: -0.01383957658287643 },\n { x: 0.000007970999999999114, y: 0.0329642004009498 },\n { x: 0.000007971999999999115, y: -0.000021489993732966978 },\n { x: 0.000007972999999999115, y: 0.020946453746142814 },\n { x: 0.000007973999999999116, y: -0.00477284417362369 },\n { x: 0.000007974999999999116, y: 0.04851129585001675 },\n { x: 0.000007975999999999117, y: 0.048625884607778155 },\n { x: 0.000007976999999999117, y: -0.01338099880397528 },\n { x: 0.000007977999999999118, y: 0.005940875110559175 },\n { x: 0.000007978999999999118, y: 0.03447464530500075 },\n { x: 0.000007979999999999119, y: 0.02207546143978787 },\n { x: 0.00000798099999999912, y: 0.0504179601999862 },\n { x: 0.00000798199999999912, y: 0.023104428080570664 },\n { x: 0.00000798299999999912, y: 0.030354992572024144 },\n { x: 0.000007983999999999121, y: 0.0023324452475153457 },\n { x: 0.000007984999999999121, y: 0.0029322408535889886 },\n { x: 0.000007985999999999122, y: 0.006766617209502232 },\n { x: 0.000007986999999999122, y: 0.02500720118399022 },\n { x: 0.000007987999999999123, y: 0.009414604832344017 },\n { x: 0.000007988999999999123, y: -0.015264915093247358 },\n { x: 0.000007989999999999124, y: -0.010696550061412832 },\n { x: 0.000007990999999999124, y: 0.006208991669481198 },\n { x: 0.000007991999999999125, y: -0.019506698888068875 },\n { x: 0.000007992999999999125, y: 0.012066969489951392 },\n { x: 0.000007993999999999126, y: 0.049434006499191725 },\n { x: 0.000007994999999999126, y: 0.009422370828351928 },\n { x: 0.000007995999999999127, y: 0.04350923500164221 },\n { x: 0.000007996999999999127, y: 0.032772823526568795 },\n { x: 0.000007997999999999128, y: 0.04697816781838182 },\n { x: 0.000007998999999999128, y: -0.011329641578143219 },\n { x: 0.000007999999999999129, y: -0.016427746917131558 },\n])\n","url":null,"readme":"This example shows how to display high-resolution data - for example, measurements in microseconds precision.\n\nWhen displaying high-resolution data there is a need to do some scaling to the data before adding it to a series.\nLightningChart JS Axis is limited by floating point precision so when using really small or really large values there is a need to scale the values to be closer to 0.\n\n```js\nconst dataScaleX = 1 * Math.pow(1000, 3) // 1 us\nconst renderData = (data) => {\n // Add data.\n lineSeries.add(data.map((p) => ({ x: p.x * dataScaleX, y: p.y })))\n}\n```\n\nWhen the data is scaled closer to 0 then the LightningChart JS Axis is able to function properly but the values shown in the auto-cursor would be incorrect as it would show the scaled value, not the original. This can be fixed by setting a formatting function to the axis tick strategy.\n\n```js\nlineSeries.axisX.setTickStrategy(AxisTickStrategies.Numeric, (strategy) =>\n strategy\n // Format ticks with units.\n .setFormattingFunction((timeScaled) => Math.round(timeScaled) + ' μs'),\n)\n```\n\nAlternatively if the original value would be preferred then the scaling could be undone.\n\n```js\nlineSeries.axisX.setTickStrategy(AxisTickStrategies.Numeric, (strategy) =>\n strategy.setFormattingFunction((timeScaled) => timeScaled / dataScaleX),\n)\n```\n","image":"lineSeriesMicroseconds"},{"id":"lcjs-example-0009-severalAxisXY","title":"Several AxesXY","tags":["line","xy"],"description":"Several AxesXY chart can be used to compare or see several graphs.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example for several AxisXY\n */\n\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, SolidFill, SolidLine, ColorRGBA, Themes } = lcjs\n\nconst { createProgressiveRandomGenerator } = xydata\n\nconst ls = lightningChart()\n\nconst chart = ls\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Several Axis')\n\n// Cache colors used in the example\nconst blueFill = new SolidFill({ color: ColorRGBA(0, 0, 255) })\nconst greenFill = new SolidFill({ color: ColorRGBA(0, 255, 0) })\nconst redFill = new SolidFill({ color: ColorRGBA(255, 0, 0) })\n\n// Cache StrokeStyles used in the example\nconst blueLine = new SolidLine({ fillStyle: blueFill })\nconst greenLine = new SolidLine({ fillStyle: greenFill })\nconst redLine = new SolidLine({ fillStyle: redFill })\n\n// First Axes (default)\nconst axisX1 = chart\n .getDefaultAxisX()\n // Set title of Axis\n .setTitle('Axis X1')\n // Set interval of X axis\n .setInterval({ start: -10, end: 1300 })\n .setStrokeStyle(blueLine)\n\nconst axisY1 = chart\n .getDefaultAxisY()\n // Set title of Axis\n .setTitle('Axis Y1')\n // Set interval of Y axis\n .setInterval({ start: -150, end: 100 })\n .setStrokeStyle(blueLine)\n\n// Second Axes (extra)\nconst axisX2 = chart\n .addAxisX({\n opposite: true,\n })\n .setTitle('Axis X2')\n .setInterval({ start: -60, end: 500 })\n .setStrokeStyle(greenLine)\n\nconst axisY2 = chart\n .addAxisY({\n opposite: true,\n })\n .setTitle('Axis Y2')\n .setInterval({ start: -20, end: 200 })\n .setStrokeStyle(greenLine)\n\n// Create series with explicit axes.\n// Axes 1\nconst splineSeries1 = chart\n .addSplineSeries({\n xAxis: axisX1,\n yAxis: axisY1,\n })\n .setStrokeStyle(redLine)\n .setPointFillStyle(blueFill)\n .setName('Axis 1')\n\n// Axes 2\nconst splineSeries2 = chart\n .addSplineSeries({\n xAxis: axisX2,\n yAxis: axisY2,\n })\n .setStrokeStyle(greenLine)\n .setName('Axis 2')\n\n// Function to add random values to given series with createProgressiveRandomGenerator\nconst setSeries = (amountOfDots, splineSeries) => {\n createProgressiveRandomGenerator()\n .setNumberOfPoints(amountOfDots)\n .generate()\n // Set stream to output X points at a time\n .setStreamBatchSize(amountOfDots)\n // Create a new stream with previously defined stream settings\n .toStream()\n .forEach((point, i) => {\n ;(point.x = point.x * 5), // define X coordinates for point\n (point.y = 20 * Math.sin(i / (10 * Math.PI)) + Math.floor(Math.random() * 20)) // define Y coordinates for point\n splineSeries.add(point) // add to series\n })\n}\n\n// set Series 1\nsetSeries(250, splineSeries1)\n\n// set Series 2\nsetSeries(70, splineSeries2)\n","url":null,"readme":"_Several Axes XY chart_\n\nThis example shows creation of a Chart with 2 XY Axes. This Chart can be used to compare or see several graphs\n\nHere's the creation of a 2 XY Axes Chart.\n\n```javascript\n// Create Chart.\nconst chart = lightningChart().ChartXY()\n// Get references to default axes X and Y\nconst axisX1 = chart.getDefaultAxisX()\nconst axisX1 = chart.getDefaultAxisY()\n// Create extra axes X and Y\nconst axisX2 = chart.addAxisX({\n opposite: true,\n})\nconst axisX2 = chart.addAxisY({\n opposite: true,\n})\n// Create series with explicit axes.\nconst splineSeries1 = chart.addSplineSeries({\n xAxis: axisX1,\n yAxis: axisY1,\n})\nconst splineSeries2 = chart.addSplineSeries({\n xAxis: axisX2,\n yAxis: axisY2,\n})\n// Set values of sub-categories on categories (relative Y size).\nsplineSeries1.add({ x: 0, y: 0.4 })\nsplineSeries2.add({ x: 2, y: 0.6 })\n```\n","image":"severalAxesXY"},{"id":"lcjs-example-0010-multiChannelLineProgressive","title":"Real-time data monitoring JavaScript Chart","tags":["line","xy","realtime","datapattern","datacleaning"],"description":"Lightning-fast Line Chart visualization over multiple channels that progress on the same X and Y Axes","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example for multi-channel real-time monitoring Line Chart.\n */\n\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Import data Generator\nconst { createProgressiveFunctionGenerator } = xydata\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, SolidFill, SolidLine, AxisScrollStrategies, AxisTickStrategies, ColorRGBA, UIElementBuilders, Themes } = lcjs\n\nconst DATA_FREQUENCY_HZ = 1000\nconst CHANNELS_AMOUNT = 10\nconst xIntervalMax = 30 * DATA_FREQUENCY_HZ\nconst channelIntervalY = 2 // [-1, 1]\n\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle(`Multi-channel real-time monitoring (${CHANNELS_AMOUNT} chs, ${DATA_FREQUENCY_HZ} Hz)`)\nconst axisX = chart\n .getDefaultAxisX()\n .setScrollStrategy(AxisScrollStrategies.progressive)\n .setInterval({ start: -xIntervalMax, end: 0, stopAxisAfter: false })\n .setTitle('Data points per channel')\nconst axisY = chart\n .getDefaultAxisY()\n .setTickStrategy(AxisTickStrategies.Empty)\n .setTitle('< Channels >')\n .setScrollStrategy(AxisScrollStrategies.expansion)\n .setInterval({ start: -channelIntervalY / 2, end: CHANNELS_AMOUNT * channelIntervalY, stopAxisAfter: false })\n\nconst series = new Array(CHANNELS_AMOUNT).fill(0).map((_, iChannel) => {\n // Create line series optimized for regular progressive X data.\n const nSeries = chart\n .addLineSeries({\n dataPattern: {\n // pattern: 'ProgressiveX' => Each consecutive data point has increased X coordinate.\n pattern: 'ProgressiveX',\n // regularProgressiveStep: true => The X step between each consecutive data point is regular (for example, always `1.0`).\n regularProgressiveStep: true,\n },\n })\n .setName(`Channel ${iChannel + 1}`)\n // Use -1 thickness for best performance, especially on low end devices like mobile / laptops.\n .setStrokeStyle((style) => style.setThickness(-1))\n .setMouseInteractions(false)\n // Enable automatic data cleaning.\n .setDataCleaning({ minDataPointCount: xIntervalMax })\n\n // Add custom tick for each channel.\n chart\n .getDefaultAxisY()\n .addCustomTick()\n .setValue((CHANNELS_AMOUNT - (1 + iChannel)) * channelIntervalY)\n .setTextFormatter(() => `Channel ${iChannel + 1}`)\n .setGridStrokeStyle(\n new SolidLine({\n thickness: 1,\n fillStyle: new SolidFill({ color: ColorRGBA(255, 255, 255, 60) }),\n }),\n )\n\n return nSeries\n})\n\n// Add LegendBox.\nchart\n .addLegendBox()\n .add(chart)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.3,\n })\n\n// Define unique signals that will be used for channels.\nconst signals = [\n { length: 100 * 2 * Math.PI, func: (x) => Math.sin(x / 100) },\n { length: 100 * 2 * Math.PI, func: (x) => Math.cos(x / 100) },\n {\n length: 200 * 2 * Math.PI,\n func: (x) => Math.cos(x / 200) + Math.sin(x / 100),\n },\n {\n length: 200 * 2 * Math.PI,\n func: (x) => Math.sin(x / 50) + Math.cos(x / 200),\n },\n {\n length: 200 * 2 * Math.PI,\n func: (x) => Math.sin(x / 100) * Math.cos(x / 200),\n },\n { length: 450 * 2 * Math.PI, func: (x) => Math.cos(x / 450) },\n { length: 800 * 2 * Math.PI, func: (x) => Math.sin(x / 800) },\n {\n length: 650 * 2 * Math.PI,\n func: (x) => Math.sin(x / 200) * Math.cos(x / 650),\n },\n]\n\n// Generate data sets for each signal.\nPromise.all(\n signals.map((signal) =>\n createProgressiveFunctionGenerator()\n .setStart(0)\n .setEnd(signal.length)\n .setStep(1)\n .setSamplingFunction(signal.func)\n .generate()\n .toPromise()\n .then((data) => data.map((xy) => xy.y)),\n ),\n).then((dataSets) => {\n // Stream data into series.\n let tStart = window.performance.now()\n let pushedDataCount = 0\n const xStep = 1000 / DATA_FREQUENCY_HZ\n const streamData = () => {\n const tNow = window.performance.now()\n // NOTE: This code is for example purposes (streaming stable data rate without destroying browser when switching tabs etc.)\n // In real use cases, data should be pushed in when it comes.\n const shouldBeDataPointsCount = Math.floor((DATA_FREQUENCY_HZ * (tNow - tStart)) / 1000)\n const newDataPointsCount = Math.min(shouldBeDataPointsCount - pushedDataCount, 1000) // Add max 1000 data points per frame into a series. This prevents massive performance spikes when switching tabs for long times\n const seriesNewDataPoints = []\n for (let iChannel = 0; iChannel < series.length; iChannel++) {\n const dataSet = dataSets[iChannel % dataSets.length]\n const newDataPoints = []\n for (let iDp = 0; iDp < newDataPointsCount; iDp++) {\n const x = (pushedDataCount + iDp) * xStep\n const iData = (pushedDataCount + iDp) % dataSet.length\n const ySignal = dataSet[iData]\n const y = (CHANNELS_AMOUNT - 1 - iChannel) * channelIntervalY + ySignal\n const point = { x, y }\n newDataPoints.push(point)\n }\n seriesNewDataPoints[iChannel] = newDataPoints\n }\n series.forEach((series, iChannel) => series.add(seriesNewDataPoints[iChannel]))\n pushedDataCount += newDataPointsCount\n requestAnimationFrame(streamData)\n }\n streamData()\n})\n\n// Measure FPS.\nlet tStart = window.performance.now()\nlet frames = 0\nlet fps = 0\nconst title = chart.getTitle()\nconst recordFrame = () => {\n frames++\n const tNow = window.performance.now()\n fps = 1000 / ((tNow - tStart) / frames)\n sub_recordFrame = requestAnimationFrame(recordFrame)\n\n chart.setTitle(`${title} (FPS: ${fps.toFixed(1)})`)\n}\nlet sub_recordFrame = requestAnimationFrame(recordFrame)\nsetInterval(() => {\n tStart = window.performance.now()\n frames = 0\n}, 5000)\n","url":null,"readme":"_Multi-channel real-time data monitoring Line Chart_\n\nLightning-fast Line Chart visualization over multiple channels that progress on the same X Axis\n\nWidely used in all kinds of fields for monitoring live data from many (hundreds or even thousands) of data sources at the same time.\n\nFrames rendered per second (_FPS_) is recorded live, and displayed on the Chart title. FPS of 40-60 indicates a smooth running performance.\n\n## Automatic data cleaning\n\nIn infinitely scrolling applications, cleaning old out of view data is extremely crucial;\nin this example `LineSeries.setMaxPointsCount` method is used to enable automatic data cleaning.\nFor reference, see also `LineSeries.setDataCleaningThreshold`.\n\nThe `setMaxPointsCount` method sets the _amount of data points_, that will always be retained in the _series head_ (latest data).\nThe full conditions for valid _data cleaning_ are:\n\n1. There is a considerably large chunk of data out of view (visible data is not cleaned!).\n2. If the chunk is removed, the amount of data that remains is still more than _max points count_.\n\nIn practice, this results in an application where you can even scroll back for some distance and see older data, but if you scroll far enough, you will find that the old data has been _cleaned_. This allows the application to run _forever_!\n","image":"multiChannelLineProgressive"},{"id":"lcjs-example-0011-customTicksScrolling","title":"Custom ticks on scrolling X Axis","tags":["line","xy","axis","realtime","customtick"],"description":"Custom tick positioning logic on a scrolling Axis.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example that showcases a simulated ECG signal.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisScrollStrategies, AxisTickStrategies, UIElementBuilders, Themes } = lcjs\n\n// Import data-generators from 'xydata'-library.s\nconst { createProgressiveTraceGenerator } = xydata\n\n// Create a XY Chart.\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Custom X ticks with scrolling Axis')\n\n// Create line series optimized for regular progressive X data.\nconst series = chart.addLineSeries({\n dataPattern: {\n // pattern: 'ProgressiveX' => Each consecutive data point has increased X coordinate.\n pattern: 'ProgressiveX',\n // regularProgressiveStep: true => The X step between each consecutive data point is regular (for example, always `1.0`).\n regularProgressiveStep: true,\n },\n})\n\n// * Manage X Axis ticks with custom logic *\n// Disable default X ticks.\nconst xAxis = chart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.Empty)\n\nconst addCustomTickX = (pos, isMinor) => {\n const tick = xAxis\n .addCustomTick(isMinor ? UIElementBuilders.AxisTickMinor : UIElementBuilders.AxisTickMajor)\n // Set tick text.\n .setTextFormatter(() => String(pos))\n // Set tick location.\n .setValue(pos)\n customTicks.push(tick)\n return tick\n}\n\n// Create custom ticks on X Axis on realtime scrolling application.\nlet customTicks = []\nconst createTicksInRangeX = (start, end) => {\n // Major ticks every 1000 units.\n const majorTickInterval = 1000\n for (let majorTickPos = start - (start % majorTickInterval); majorTickPos <= end; majorTickPos += majorTickInterval) {\n if (majorTickPos >= start) {\n addCustomTickX(majorTickPos, false)\n }\n }\n // Major ticks every 100 units, but not at same interval as major ticks.\n const minorTickInterval = 100\n for (let minorTickPos = start - (start % minorTickInterval); minorTickPos <= end; minorTickPos += minorTickInterval) {\n if (minorTickPos >= start && minorTickPos % majorTickInterval !== 0) {\n addCustomTickX(minorTickPos, true)\n }\n }\n}\n// X range until which custom ticks are valid.\nlet customTicksPos = 0\nxAxis.onIntervalChange((_, start, end) => {\n // Ensure new ticks are created.\n if (end > customTicksPos) {\n createTicksInRangeX(customTicksPos, end)\n customTicksPos = end\n }\n\n // Destroy ticks that are out of scrolling range.\n customTicks = customTicks.filter((tick) => {\n if (tick.getValue() < start) {\n // Tick is out of view.\n tick.dispose()\n return false\n } else {\n return true\n }\n })\n})\n\n// Setup X Axis as progressive scrolling.\nxAxis\n .setTitle('X Axis (custom ticks)')\n .setInterval({ start: 0, end: 1400, stopAxisAfter: false })\n .setScrollStrategy(AxisScrollStrategies.progressive)\n\nchart.getDefaultAxisY().setTitle('Y Axis')\n\n// Stream data in.\ncreateProgressiveTraceGenerator()\n .setNumberOfPoints(10000)\n .generate()\n .setStreamRepeat(true)\n .setStreamInterval(1000 / 60)\n .setStreamBatchSize(5)\n .toStream()\n .forEach((point) => {\n series.add(point)\n })\n","url":null,"readme":"_Custom ticks on scrolling X Axis_\n\nThis example showcases custom tick positioning on a scrolling Axis.\n\nBoth major and minor ticks on X Axis are created in application code, and destroyed as the axis scrolls.\n","image":"customTicksScrolling"},{"id":"lcjs-example-0012-timeTickStrategy","title":"JavaScript Time Ticks Chart","tags":["xy","axis","time","line"],"description":"Example showcasing the TimeTickStrategy feature which is ideal for displaying timestamp data between couple days all the way down to microseconds level.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example showcasing the TimeTickStrategy feature which is ideal for displaying timestamp data between couple days all the way down to microseconds level.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, Themes } = lcjs\n\n// Import data-generators from 'xydata'-library.\nconst { createProgressiveTraceGenerator } = xydata\n\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('TimeTickStrategy example')\n .setPadding({ right: 40 })\n\nconst axisX = chart\n .getDefaultAxisX()\n // Enable TimeTickStrategy for X Axis.\n .setTickStrategy(AxisTickStrategies.Time)\n\nconst axisY = chart.getDefaultAxisY()\n\nconst series = chart.addLineSeries({\n dataPattern: {\n pattern: 'ProgressiveX',\n },\n})\n\nconst legend = chart\n .addLegendBox()\n .add(chart)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.3,\n })\n\n// Generate ~8 hours of data for line series.\nconst numberOfPoints = 100 * 1000\n// TimeTickStrategy interprets values as milliseconds (UNIX timestamp).\nconst xInterval = 8 * 60 * 60 * 1000\ncreateProgressiveTraceGenerator()\n .setNumberOfPoints(numberOfPoints)\n .generate()\n .toPromise()\n .then((data) => {\n data = data.map((p) => ({\n x: (p.x * xInterval) / numberOfPoints,\n y: p.y,\n }))\n series.add(data)\n })\n","url":null,"readme":"Example that showcases the `TimeTickStrategy` feature.\n\n`TimeTickStrategy` is one of the available options for _automatic axis tick placement and formatting_. It is designed for depicting milliseconds timestamp data with extremely high resolution and flexibility.\n\nThe effective range of `TimeTickStrategy` starts from maximum of 100 hours all the way down to individual milliseconds level.\n\nFor this entire range, the tick labels are formatted dynamically showing the currently relevant precision with all the required accuracy.\n\nAs can be seen from the simplicity of this examples source code, `TimeTickStrategy` is really straightforward to use, and does not require any gimmicks from the user.\n\n```js\n// TimeTickStrategy example usage.\n\n// (1) Enable TimeTickStrategy for Axis.\nchart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.Time)\n\n// (2) Push data where X is in milliseconds.\nseries.add([\n { x: 0, y: 0 }, // 00:00:00\n { x: 1000, y: 0 }, // 00:00:01\n { x: 2000, y: 0 }, // 00:00:02\n { x: 2001, y: 0 }, // 00:00:02.001\n { x: 2001.001, y: 0 }, // 00:00:02.001001\n])\n```\n\n## What is the difference between Time ticks and DateTime ticks?\n\nThe effective Axis range; `TimeTickStrategy` is used for depicting high-resolution data within some days max., while `DateTimeStrategy` is used for depicting lower resolution data over the span of long times, like some months or even tens of years.\n","image":"timeTickStrategy"},{"id":"lcjs-example-0013-timeTickStrategyScrolling","title":"JavaScript Scrolling Time Ticks Chart","tags":["xy","axis","time","line","realtime"],"description":"Example showcasing the TimeTickStrategy feature with scrolling data and axis","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example showcasing the TimeTickStrategy feature with scrolling data and axis.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisScrollStrategies, AxisTickStrategies, Themes } = lcjs\n\n// Import data-generators from 'xydata'-library.\nconst { createProgressiveTraceGenerator } = xydata\n\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Scrolling TimeTickStrategy example')\n .setPadding({ right: 40 })\n\nconst axisX = chart\n .getDefaultAxisX()\n // Enable TimeTickStrategy for X Axis.\n .setTickStrategy(AxisTickStrategies.Time)\n // Configure progressive ScrollStrategy.\n .setScrollStrategy(AxisScrollStrategies.progressive)\n // Set view to 1 minute.\n .setInterval({ start: -1 * 60 * 1000, end: 0, stopAxisAfter: false })\n .setAnimationScroll(false)\n\nconst axisY = chart.getDefaultAxisY().setAnimationScroll(false)\n\n// Add 3 series for real-time signal monitoring.\nconst seriesList = new Array(3).fill(0).map((_, iSeries) =>\n chart.addLineSeries({\n dataPattern: {\n pattern: 'ProgressiveX',\n },\n }),\n)\n\nconst legend = chart\n .addLegendBox()\n .add(chart)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.3,\n })\n\n// Stream live timestamp data into series.\n\n// Application displays timestamps as offset from when application started (starts at 00:00:00).\nconst timeOrigin = Date.now()\n\nPromise.all(\n seriesList.map((_) =>\n createProgressiveTraceGenerator()\n .setNumberOfPoints(60 * 1000)\n .generate()\n .toPromise(),\n ),\n).then((data) => {\n let dataAmount = 0\n const pushData = () => {\n const nDataPoints = 1\n seriesList.forEach((series, iSeries) => {\n const seriesData = data[iSeries]\n const seriesPoints = []\n for (let i = 0; i < nDataPoints; i += 1) {\n seriesPoints.push({\n // TimeTickStrategy interprets values as milliseconds (UNIX timestamp).\n // Exactly same as JavaScript Date APIs.\n x: Date.now() - timeOrigin,\n y: seriesData[(dataAmount + i) % seriesData.length].y,\n })\n }\n series.add(seriesPoints)\n })\n dataAmount += nDataPoints\n requestAnimationFrame(pushData)\n }\n pushData()\n})\n","url":null,"readme":"Example that showcases the `TimeTickStrategy` feature with real-time data.\n\n`TimeTickStrategy` is one of the available options for _automatic axis tick placement and formatting_. It is designed for depicting milliseconds timestamp data with extremely high resolution and flexibility.\n\nThe effective range of `TimeTickStrategy` starts from maximum of 100 hours all the way down to **individual milliseconds level**.\n\nFor this entire range, the tick labels are formatted dynamically showing the currently relevant precision with all the required accuracy.\n\n`TimeTickStrategy` is a very powerful feature for real-time data monitoring applications, since its effective range perfectly covers minute, hour and even day intervals - not to mention that you can zoom in so deep that you can even see differences between individual microseconds.\n\nSince `TimeTickStrategy` interprets axis coordinates as \"milliseconds after 0\", it doesn't make much sense to supply data directly as UNIX timestamps - instead, most applications would choose some \"time origin\" and subtract it from the UNIX timestamp. This means that the data will be displayed as \"difference from time origin\".\n\nIn this example, `timeOrigin` is set to `Date.now()` at the start, and data point X values are calculated live as `x: Date.now() - timeOrigin`.\n\n## What is the difference between Time ticks and DateTime ticks?\n\nThe effective Axis range; `TimeTickStrategy` is used for depicting high-resolution data within some days max., while `DateTimeStrategy` is used for depicting lower resolution data over the span of long times, like some months or even tens of years.\n","image":"timeTickStrategyScrolling"},{"id":"lcjs-example-0014-highPrecisionAxis","title":"JavaScript High Precision Axis Chart","tags":["xy","axis","line","high-precision"],"description":"Example showcasing the High Precision Axis XY feature which allows zooming of microseconds precision without any dirty data transforming","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example showcasing the High Precision Axis XY feature which allows zooming of microseconds precision without any dirty data transforming\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, Themes } = lcjs\n\nconst chart = lightningChart()\n .ChartXY({\n defaultAxisX: {\n type: 'linear-highPrecision',\n },\n })\n .setTitle('High precision Axis XY (1 second high-resolution data)')\n .setPadding({ right: 40 })\n\nconst axisX = chart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.Time, (timeTicks) => timeTicks)\n\nconst axisY = chart.getDefaultAxisY()\n\nconst trace0 = chart\n .addLineSeries({\n dataPattern: {\n pattern: 'ProgressiveX',\n },\n })\n .setCursorInterpolationEnabled(true)\n\nconst trace1 = chart\n .addLineSeries({\n dataPattern: {\n pattern: 'ProgressiveX',\n },\n })\n .setCursorInterpolationEnabled(true)\n\nchart\n .addLegendBox()\n .add(chart)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.3,\n })\n\n// Fetch example data.\nfetch(document.head.baseURI + 'examples/assets/0014/data.json')\n .then((r) => r.json())\n .then((data) => {\n // Data X coordinates are in milliseconds starting from 0.\n trace0.add(data['trace0'])\n trace1.add(data['trace1'])\n axisX.fit(false)\n\n // Animate zoom in.\n setTimeout(() => {\n axisX.setInterval({\n start: 436.72461163324084,\n end: 436.89107794426303,\n animate: 1000,\n })\n axisY.setInterval({\n start: 87.52113652316002,\n end: 89.79482263187646,\n animate: 1000,\n })\n\n // Animate zoom out.\n setTimeout(() => {\n axisX.fit(2000)\n axisY.fit(2000)\n }, 2500)\n }, 1500)\n })\n","url":null,"readme":"This example showcases the `High Precision Axis XY` feature.\n\nAn XY Axis can be marked with _high precision mode_ when it is created, similarly how _logarithmic axes_ are created.\nThis example shows how it is done for default X Axis.\n\n```javascript\nconst chart = lightningChart().ChartXY({\n // Default Axis types can only be defined when chart is created.\n defaultAxisX: {\n type: 'linear-highPrecision',\n },\n})\n```\n\n_High precision Axis_ behaves just like a normal linear Axis, but with two technical differences:\n\n1. There is a performance drop for all attached series. This is mostly an increase on GPU usage, which shows on low end devices the most, for example laptops with integrated GPUs.\n\n2. The Axis zoom range is _significantly_ improved (read more below).\n\n`High Precision Axis XY` currently supports all XY series types except `Heatmap Series`.\n\n## About Axis zoom range limits\n\n_LightningChart JS_ is easily the market leader in zooming interactions and visualization resolution, and contrary to most chart libraries, we are open about axis zooming limits.\n\nThe fact of the matter is that every kind of chart library has some limit to how small differences it can visualize. Ultimately the limits are dictated by the used technology (for us this is `WebGL`).\n\nAll veteran chart library developers have come across the issue sooner or later, when an user collides against this limit and the question is asked - how can we get higher precision? Usually this ends in decimating the end users data with tricks and gimmicks, which can lead to a working result but with the expense of user experience.\n\n`High Precision Axis XY` feature is our reaction to a proper improvement to these limitations - it handles all the annoying stuff that users had to previously do in their _application code_ and gives even better benefits;\n\nHere are reference tables to the achievable zoom range with normal Axis vs `High Precision Axis XY`\n(achievable zoom range depends on the magnitude of Axis interval start).\n\n### Normal Axis\n\n| Axis interval start | Min interval | Max interval |\n| :------------------ | :----------- | :----------- |\n| `0` | `1e-4` | `1e+16` |\n| `100` | `1e-2` | `1e+16` |\n| `10 000` | `1.00` | `1e+16` |\n| `1 000 000` | `100` | `1e+16` |\n| `Date.now()` (UNIX) | `73600000` | `1e+16` |\n\n### High Precision Axis XY\n\n| Axis interval start | Min interval | Max interval |\n| :------------------ | :----------- | :----------- |\n| `0` | `1e-12` | `1e+30` |\n| `100` | `1e-10` | `1e+30` |\n| `10 000` | `1e-8` | `1e+30` |\n| `1 000 000` | `1e-6` | `1e+30` |\n| `Date.now()` (UNIX) | `1.00` | `1e+30` |\n","image":"highPrecisionAxis"},{"id":"lcjs-example-0015-confidenceEllipseXY","title":"JavaScript Confidence Ellipse Chart","tags":["xy","point","polygon"],"description":"Example showcasing visualization of XY confidence ellipse widely used in statistics field","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Multiple chart examples, dynamic point coloring, Scatter Charts, Point Cluster Charts, 3D charts for JS.","src":"/*\n * LightningChartJS example that showcases visualization of XY scatter chart with confidence ellipse.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, PointShape, ColorCSS, SolidLine, SolidFill, Themes } = lcjs\n\n// Create chart and series.\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Scatter chart + confidence Ellipse')\n\n// Create point series for visualizing scatter points.\nconst pointSeries = chart.addPointSeries({ pointShape: PointShape.Circle }).setPointSize(3).setName('Scatter series')\n\n// Visualize confidence ellipse with polygon series.\n// Note, routine for calculation of confidence ellipse coordinates from scatter data set is not currently included in LightningChart JS!\nconst polygonSeries = chart\n .addPolygonSeries()\n .setCursorEnabled(false);\n\n// Fetch example data from JSON asset.\nfetch(document.head.baseURI + 'examples/assets/0015/data-confidenceEllipseXY.json')\n .then((r) => r.json())\n .then((data) => {\n const { scatterPoints, confidenceEllipsePolygonCoords } = data\n\n // Add data to series.\n pointSeries.add(scatterPoints)\n polygonSeries\n .add(confidenceEllipsePolygonCoords)\n .setFillStyle(new SolidFill({ color: ColorCSS('gray').setA(30) }))\n .setStrokeStyle(\n new SolidLine({\n thickness: 1,\n fillStyle: new SolidFill({ color: ColorCSS('white') }),\n }),\n )\n })\n","url":null,"readme":"This example shows how a _confidence ellipse_ can be drawn inside a scatter chart with LightningChart JS.\n\nConfidence ellipses are used especially with statistic chart applications. A common usage, for example, is the 95% confidence ellipse, which visualizes the area that contains 95% of samples, which makes it easier for the user to understand which points are _outliers_.\n\nThere are various ways of defining and calculating the shape of different confidence ellipses - traditionally in 2D applications they are rotated ellipses with width and height, however in some cases they might not actually be ellipses geometrically, but more complex shapes.\n\n\n\nLightningChart JS currently does not come with any routine for calculating a confidence ellipse shape. However, just about any kind of confidence ellipse shape can be visualized using `PolygonSeries`.\n\n`PolygonSeries` can be used to draw any _non-complex_ polygon shape (_polygon that doesn't intersect with itself_) inside XY charts. It is configured by supplying a list of `{x: number, y: number}` coordinates.\n\n```js\n// Example, visualization of polygon inside ChartXY.\nconst polygonSeries = chart.addPolygonSeries()\nconst polygonFigure = polygonSeries.add([\n { x: 0, y: 0 },\n { x: 5, y: 10 },\n { x: 10, y: 15 },\n { x: 15, y: 5 },\n { x: 10, y: -5 },\n { x: 5, y: -2 },\n])\n```\n","image":"confidenceEllipseXY"},{"id":"lcjs-example-0016-largeScatterChartXY","title":"JavaScript Large Scatter Chart","tags":["xy","point","polygon"],"description":"Example visualization of large scatter chart (> million data points)","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Multiple chart examples, dynamic point coloring, Scatter Charts, Point Cluster Charts, 3D charts for JS.","src":"/*\n * LightningChartJS example that showcases visualization of large XY scatter chart.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, PointShape, ColorCSS, SolidLine, SolidFill, Themes } = lcjs\n\n// Create chart and series.\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('')\n\n// Create point series for visualizing scatter points.\nconst pointSeries = chart\n .addPointSeries({ pointShape: PointShape.Square })\n .setPointSize(1)\n // NOTE: This disables data cursor from interacting with this series.\n // Data cursor does not perform well with scatter charts in millions of data points range.\n .setCursorEnabled(false)\n .setName(\"Scatter series\");\n\n// Visualize confidence ellipse with polygon series.\n// Note, routine for calculation of confidence ellipse coordinates from scatter data set is not currently included in LightningChart JS!\nconst polygonSeries = chart\n .addPolygonSeries()\n .setCursorEnabled(false);\n\n// Fetch example data from JSON asset.\nfetch(document.head.baseURI + 'examples/assets/0016/data-largeScatterChartXY.json')\n .then((r) => r.json())\n .then((data) => {\n console.log(data)\n const { scatterPoints, confidenceEllipsePolygonCoords } = data\n chart.setTitle(`Scatter chart (${(data.scatterPoints.length / 10 ** 6).toFixed(1)} million points) + confidence Ellipse`)\n\n // Add data to series.\n pointSeries.add(scatterPoints)\n polygonSeries\n .add(confidenceEllipsePolygonCoords)\n .setFillStyle(new SolidFill({ color: ColorCSS('gray').setA(30) }))\n .setStrokeStyle(\n new SolidLine({\n thickness: 1,\n fillStyle: new SolidFill({ color: ColorCSS('white') }),\n }),\n )\n })\n","url":null,"readme":"This example showcases visualization of a Scatter chart with relatively large data set (1 million data points).\n\nLightningChart JS has created a revolution with the possibilities of data visualization in web - previously Scatter chart visualization was realistically possible only to ranges of some hundred thousand data points and even then it required complicated developer effort to enable any zooming or panning interactions with satisfactory performance.\n\nWith LC JS a million points Scatter chart is loaded in less than a second and the result is unlike anything seen before - operations like zooming and panning are instantaneous.\n\nAdditionally, when compared to previous alternatives, the usage is ridiculously simple. With SVG/Canvas based drawing, users would have severe limitations with large data amounts as these technologies don't scale well.\n\nHere's how simple the creation of a million points scatter chart is with LC JS:\n\n```js\nconst chart = lightningChart().ChartXY()\nconst series = chart.addPointSeries().add(\n new Array(1000000).fill().map((_) => ({\n x: Math.random(),\n y: Math.random(),\n })),\n)\n```\n\nThis takes about 100 milliseconds to load and will immediately be interactable with lightning fast reactions!\n\nThe maximum possible Scatter chart size scales well with used hardware, especially RAM (memory) and GPU (graphics card) - On average office PC, LC JS can handle more than hundred million data points.\n","image":"largeScatterChartXY"},{"id":"lcjs-example-0017-largeLineChartXY","title":"JavaScript Large Line Chart","tags":["xy","line"],"description":"Example visualization of large line chart (several million data points)","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example that showcases visualization of large XY line chart.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, PointShape, ColorCSS, SolidLine, SolidFill, Themes } = lcjs\n\nconst { createProgressiveTraceGenerator } = require('@arction/xydata')\n\nconst trendsCount = 10\nconst dataPerTrend = 500 * 1000\n\n// Create chart and series.\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle(`Line Chart with large data set (${((trendsCount * dataPerTrend) / 10 ** 6).toFixed(1)} million data points)`)\n\nconst seriesArray = new Array(trendsCount).fill().map((_) =>\n chart\n .addLineSeries({\n dataPattern: {\n pattern: 'ProgressiveX',\n },\n })\n .setStrokeStyle((stroke) => stroke.setThickness(1)),\n)\n\nseriesArray.forEach((series) => {\n createProgressiveTraceGenerator()\n .setNumberOfPoints(dataPerTrend)\n .generate()\n .toPromise()\n .then((data) => {\n series.add(data)\n })\n})\n\nconst legend = chart\n .addLegendBox()\n .add(chart)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.3,\n })\n","url":null,"readme":"This example showcases visualization of a Line chart with relatively large data set (several millions of data points).\n\nLightningChart JS has created a revolution with the possibilities of data visualization in web - previously Line chart visualization was realistically possible only to ranges of some hundred thousand data points and even then it required complicated developer effort to enable any zooming or panning interactions with satisfactory performance.\n\nWith LC JS a million points Line chart is loaded in less than a second and the result is unlike anything seen before - operations like zooming and panning are instantaneous.\n\nAdditionally, when compared to previous alternatives, the usage is ridiculously simple. With SVG/Canvas based drawing, users would have severe limitations with large data amounts as these technologies don't scale well.\n\nHere's how simple the creation of a million points line chart is with LC JS:\n\n```js\nconst chart = lightningChart().ChartXY()\nconst series = chart\n .addLineSeries({\n dataPattern: {\n pattern: 'ProgressiveX',\n },\n })\n .setStrokeStyle((stroke) => stroke.setThickness(1))\n .addArrayY(new Array(1000000).fill().map((_) => Math.random()))\n```\n\nThis takes about 100 milliseconds to load and will immediately be interactable with lightning fast reactions!\n\nThe maximum possible Line chart size scales well with used hardware, especially RAM (memory) and GPU (graphics card) - On average office PC, LC JS can handle more than hundred million data points.\n","image":"largeLineChartXY"},{"id":"lcjs-example-0018-refreshingLineSpectrum","title":"Refreshing Spectrum Line JavaScript Chart","tags":["xy","line","realtime"],"description":"Example for Chart with 2D spectrogram + dynamic projections on mouse interaction.","metaDescription":"Example for Chart with 2D spectrogram + dynamic projections on mouse interaction.","src":"/*\n * LightningChartJS example for line chart application with rapidly changing data set\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AutoCursorModes, Themes } = lcjs\n\nconst { createSpectrumDataGenerator } = require('@arction/xydata')\n\n// Create XY Chart\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Spectrum Line Chart')\n .setAutoCursorMode(AutoCursorModes.disabled)\n\n// Set static Y axis interval.\nchart.getDefaultAxisY().setScrollStrategy(undefined).setInterval({ start: 0.09, end: 0.9, stopAxisAfter: false })\n\n// Add Line series\nconst series = chart.addLineSeries()\n\n// Generate several spectrum data sets that will be displayed on after another.\ncreateSpectrumDataGenerator()\n .setSampleSize(1024)\n .setNumberOfSamples(600)\n .setFrequencyStability(2)\n .setVariation(2)\n .generate()\n .toPromise()\n .then((dataSet) => {\n // dataSet contains many samples. Setup code that will change displayed sample once every frame.\n let iSample = 0\n const nextSample = () => {\n iSample = (iSample + 1) % dataSet.length\n const sample = dataSet[iSample]\n // Sample only contains Y values, use `addArrayY` to automatically generate X coordinate for each data point.\n series.clear().addArrayY(sample)\n requestAnimationFrame(nextSample)\n }\n nextSample()\n })\n","url":null,"readme":"This example showcases a common line chart application, where the displayed line data set is changed very rapidly.\n\nThis example uses spectrogram data, so the line chart displays the latest spectrum only.\n\nWhen compared to a [spectrogram](https://lightningchart.com/lightningchart-js-interactive-examples/examples/lcjs-example-0805-spectrogramProjection.html), this is the same but without a view of the data history.\n\n**About performance...**\n\nWhile there are numerous different Line Chart tools available in web, the wide majority (> 95%) are not designed nor suitable for applications such as this, where the data set is changed in super fast intervals.\n\nWe at LightningChart have studied various different web data visualization tools to support our mission of being the web chart with the best performance in the world.\n\nThese studies are all publicly available and can be found on our website in our definite favorite [Performance section](https://lightningchart.com/high-performance-javascript-charts/).\n","image":"RefreshingLine"},{"id":"lcjs-example-0019-flowCytometryChart","title":"JavaScript Flow Cytometry Chart","tags":["xy","points","palette"],"description":"Visualization of a Flow Cytometry data set (FSC + SSC properties)","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Multiple chart examples, dynamic point coloring, Scatter Charts, Point Cluster Charts, 3D charts for JS.","src":"/*\n * LightningChartJS example that showcases visualization of a Flow Cytometry data set (FSC + SSC properties).\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\nconst { lightningChart, PalettedFill, LUT, PointShape, translatePoint, ColorRGBA, Themes } = lcjs\n\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Flow Cytometry Visualization')\n .setMouseInteractions(false)\n .setPadding(0)\n\nconst axisX = chart\n .getDefaultAxisX()\n .setInterval({ start: 1.3, end: 10 })\n .setTitle('FSC-A (10⁶)')\n .setMouseInteractions(false)\n .setThickness(60)\n\nconst axisY = chart\n .getDefaultAxisY()\n .setInterval({ start: -0.2, end: 1.8 })\n .setTitle('SSC-A (10⁶)')\n .setMouseInteractions(false)\n .setThickness(80)\n\nconst pointSeries = chart\n .addPointSeries({\n pointShape: PointShape.Square,\n })\n // .setCursorEnabled(false)\n .setIndividualPointValueEnabled(true)\n .setPointSize(2)\n .setCursorResultTableFormatter((builder, _, __, ___, dp) => builder.addRow(`value: `, dp.value?.toFixed(2)))\n .setPointFillStyle(\n new PalettedFill({\n lookUpProperty: 'value',\n lut: new LUT({\n interpolate: true,\n steps: [\n { value: 0, color: ColorRGBA(0, 0, 0, 0) },\n { value: 1, color: ColorRGBA(0, 0, 255) },\n { value: 10, color: ColorRGBA(50, 50, 255) },\n { value: 50, color: ColorRGBA(0, 255, 0) },\n { value: 100, color: ColorRGBA(255, 255, 0) },\n { value: 150, color: ColorRGBA(255, 0, 0) },\n ],\n }),\n }),\n )\n\nfetch(document.head.baseURI + 'examples/assets/0019/flowCytometryChart-data.json')\n .then((r) => r.json())\n .then((data) => {\n // Align Chart Axis area so that each data point occupies exactly 1 pixel.\n const columns = data.data.length\n const rows = data.data[0].length\n\n const pxLocationAxisStart = translatePoint(\n { x: axisX.getInterval().start, y: axisY.getInterval().start },\n { x: axisX, y: axisY },\n chart.engine.scale,\n )\n const pxLocationAxisEnd = translatePoint(\n { x: axisX.getInterval().end, y: axisY.getInterval().end },\n { x: axisX, y: axisY },\n chart.engine.scale,\n )\n const pxAxisSize = {\n x: Math.ceil(pxLocationAxisEnd.x - pxLocationAxisStart.x),\n y: Math.ceil(pxLocationAxisEnd.y - pxLocationAxisStart.y),\n }\n\n const pointSize = 2\n // Set chart paddings so that each column/row in data set occupies exactly 1 pixel.\n const horizontalPadding = Math.max(pxAxisSize.x - columns * pointSize, 0)\n const verticalPadding = Math.max(pxAxisSize.y - rows * pointSize, 0)\n chart.setPadding({\n left: horizontalPadding / 2,\n right: horizontalPadding / 2,\n top: verticalPadding / 2,\n bottom: verticalPadding / 2,\n })\n\n // Unpack data from [[sample, sample, ...], [...], [...]] format to list of XY+Value points.\n const points = []\n data.data.forEach((column, iColumn) => {\n column.forEach((sample, iRow) => {\n if (!sample) return\n points.push({\n x: data.x.start + (iColumn * (data.x.end - data.x.start)) / data.data.length,\n y: data.y.start + (iRow * (data.y.end - data.y.start)) / data.data[0].length,\n value: sample,\n })\n })\n })\n pointSeries.add(points)\n })\n","url":null,"readme":"Flow cytometry is an every-day method in research and clinical practices for analyzing individual cells within heterogeneous samples (like blood sample, for example).\n\nIt is based on observing the behavior of pointed light, and can rapidly analyze multiple parameters from each cell.\n\nIn this example, all the samples are displayed in a single chart which displays the following information:\n\n- Forward scatter (FSC). This is measured based on how much light is scattered along the path of the light source.\n\n- Side scatter (SSC). This is measured based on hot much light is scattered at a ninety-degree angle relative to the light source.\n\nEach point in the chart is one sample. When multiple samples have the same SSC and FSC measurement, the point color is adjusted (red = most overlapping samples).\n\nIn practice, the data from flow cytometry is filtered through several steps that each look at the relationship between some data attributes. This example is just 1 of these steps.\n\nAs an example of this filtering, some application might select some valid range of FSC/SSC values that will be considered in later analysis steps.\n\n\n\n## Flow cytometry and LightningChart\n\nThe go-to framework for visualizing flow cytometry is definitely \"R\", a software environment for statistical computing and graphics.\n\nHere are some scenarios where we believe LightningChart is a strong alternative:\n\n1. Real-time data\n\nLightningChart excels at fast changes to data sets, if your application continuously receives data, especially with high rates like several times in second, LightningChart is what you need.\n\n2. Data interactions\n\nIn some cases users might need the ability to interact with data (panning, zooming, cursor, etc.). In many statistical tools, this kind of features do not exist since only a minority would have an use for them. Additionally, even if present they might not perform too well especially with large data sets.\n\n3. Deployment in the internet\n\nR is a desktop application. In most cases, users will install it on their own computer and directly interact with data sets to utilize a shared data visualization application.\n\nLightningChart JS, on the other hand, is a web library. LC JS projects can be conveniently embedded inside web pages, mobile and even desktop applications.\n","image":"flowCytometryChart"},{"id":"lcjs-example-0020-dateTimeAxis","title":"JavaScript Chart with DateTime Axis","tags":["date-time","axis","xy"],"description":"Example for creation of a DateTime Axis. DateTime axis can present time.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChart JS Example that showcases a Customer Satisfaction graph using a LineSeries and DateTime-Axis.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, DataPatterns, Themes } = lcjs\n\n// Create a XY Chart.\nconst dateOrigin = new Date(2008, 0, 1)\nconst chart = lightningChart().ChartXY({\n // theme: Themes.darkGold\n})\nchart.getDefaultAxisX().setTickStrategy(\n // Use DateTime TickStrategy for this Axis\n AxisTickStrategies.DateTime,\n // Modify the DateOrigin of the TickStrategy\n (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin),\n)\nchart.setTitle('Customer Satisfaction')\n\n// Add a line series.\nconst lineSeries = chart.addLineSeries().setName('Customer Satisfaction')\n\n// Generate some points using for each month\nconst dataFrequency = 30 * 24 * 60 * 60 * 1000\n\n// Setup view nicely.\nchart.getDefaultAxisY().setScrollStrategy(undefined).setInterval({ start: 0, end: 100, stopAxisAfter: false }).setTitle('Satisfaction %')\n\n// Data for the plotting\nconst satisfactionData = [\n { x: 0, y: 0 },\n { x: 1, y: 8 },\n { x: 2, y: 12 },\n { x: 3, y: 18 },\n { x: 4, y: 22 },\n { x: 5, y: 32 },\n { x: 6, y: 40 },\n { x: 7, y: 48 },\n { x: 8, y: 50 },\n { x: 9, y: 54 },\n { x: 10, y: 59 },\n { x: 11, y: 65 },\n { x: 12, y: 70 },\n { x: 13, y: 68 },\n { x: 14, y: 70 },\n { x: 15, y: 69 },\n { x: 16, y: 66 },\n { x: 17, y: 65.4 },\n { x: 18, y: 64 },\n { x: 19, y: 65 },\n { x: 20, y: 63.5 },\n { x: 21, y: 62 },\n { x: 22, y: 61.2 },\n { x: 23, y: 63 },\n { x: 24, y: 61 },\n { x: 25, y: 62 },\n { x: 26, y: 62 },\n { x: 27, y: 60 },\n { x: 28, y: 57.8 },\n { x: 29, y: 58 },\n { x: 30, y: 61 },\n { x: 31, y: 59 },\n { x: 32, y: 63 },\n { x: 33, y: 61 },\n { x: 34, y: 61.8 },\n { x: 35, y: 62 },\n { x: 36, y: 59.9 },\n { x: 37, y: 58 },\n { x: 38, y: 60 },\n { x: 39, y: 63 },\n { x: 40, y: 59.5 },\n { x: 41, y: 62.5 },\n { x: 42, y: 59.7 },\n { x: 43, y: 57 },\n { x: 44, y: 61 },\n { x: 45, y: 59 },\n { x: 46, y: 61 },\n { x: 47, y: 65 },\n { x: 48, y: 62 },\n { x: 49, y: 60 },\n { x: 50, y: 58 },\n { x: 51, y: 59 },\n { x: 52, y: 61 },\n { x: 53, y: 64 },\n { x: 54, y: 65.5 },\n { x: 55, y: 67 },\n { x: 56, y: 68 },\n { x: 57, y: 69 },\n { x: 58, y: 68 },\n { x: 59, y: 69.5 },\n { x: 60, y: 69.9 },\n { x: 61, y: 68.5 },\n { x: 62, y: 67 },\n { x: 63, y: 65 },\n { x: 64, y: 63 },\n { x: 65, y: 60 },\n { x: 66, y: 61.6 },\n { x: 67, y: 62 },\n { x: 68, y: 61 },\n { x: 69, y: 60 },\n { x: 70, y: 63.3 },\n { x: 71, y: 62.7 },\n { x: 72, y: 64.3 },\n { x: 73, y: 63 },\n { x: 74, y: 61.2 },\n { x: 75, y: 60 },\n { x: 76, y: 61 },\n { x: 77, y: 64 },\n { x: 78, y: 61.9 },\n { x: 79, y: 61 },\n { x: 80, y: 58 },\n { x: 81, y: 59 },\n { x: 82, y: 60.5 },\n { x: 83, y: 61 },\n { x: 84, y: 63 },\n { x: 85, y: 64.5 },\n { x: 86, y: 65 },\n { x: 87, y: 66.2 },\n { x: 88, y: 64.9 },\n { x: 89, y: 63 },\n { x: 90, y: 62 },\n { x: 91, y: 63 },\n { x: 92, y: 61.8 },\n { x: 93, y: 62 },\n { x: 94, y: 63 },\n { x: 95, y: 64.2 },\n { x: 96, y: 63 },\n { x: 97, y: 61 },\n { x: 98, y: 59.7 },\n { x: 99, y: 61 },\n { x: 100, y: 58 },\n { x: 101, y: 59 },\n { x: 102, y: 58 },\n { x: 103, y: 58 },\n { x: 104, y: 57.5 },\n { x: 105, y: 59.2 },\n { x: 106, y: 60 },\n { x: 107, y: 61.9 },\n { x: 108, y: 63 },\n { x: 109, y: 64.1 },\n { x: 110, y: 65.9 },\n { x: 111, y: 64 },\n { x: 112, y: 65 },\n { x: 113, y: 62 },\n { x: 114, y: 60 },\n { x: 115, y: 58 },\n { x: 116, y: 57 },\n { x: 117, y: 58.2 },\n { x: 118, y: 58.6 },\n { x: 119, y: 59.3 },\n { x: 120, y: 61 },\n]\n\n// Adding points to the series\nlineSeries.add(satisfactionData.map((point) => ({ x: point.x * dataFrequency, y: point.y })))\n\n// Show the customized result table for each point\nlineSeries.setCursorResultTableFormatter((builder, series, xValue, yValue) => {\n return builder\n .addRow('Customer Satisfaction')\n .addRow(series.axisX.formatValue(xValue))\n .addRow(yValue.toFixed(2) + '%')\n})\n","url":null,"readme":"This example shows creation of a DateTime Axis, for rendering XY-series where either/both of X/Y dimensions can present _time_. This doesn't affect the input of data - format remains as _{x: number, y: number}_ - however, DateTime-axes format their values from number to a date and time. This affects axis labels, markers and cursors.\n\nA DateTime-_Axis_ is created by specifying its _TickStrategy_. Here's how it looks when setting the _Axis TickStrategy_:\n\n```javascript\n// Add an XY Chart\nconst chart = lightningChart().ChartXY({})\n// Set the TickStrategy of the default X Axis to a DateTime TickStrategy\nchart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime)\n```\n\nThe above mentioned examples will provide an Axis that will format its scale values to their DateTime-representations. This conversion relies on a reference date, further referred to as _origin-date_. This _origin-date_ specifies the DateTime value that is equal to _zero_ as a numeric representation. Incremental values will result in progressive DateTimes by milliseconds. For example, given _origin-date_ is equal to the **1st of January 2002, 2PM**, a numeric value of **7,200,000** would be translated to **1st of January 2002 4PM**.\n\nTranslating this to how we can modify the origin date in our Axis, we can do this by adding a mutator to the setTickStrategy() method to modify the origin date:\n\n```javascript\n// Define the origin-date. (y, m [0-11], d [1-31], h [0-23])\nconst originDate = new Date(2002, 0, 1, 13)\n// Create DateTime AxisTickStrategy with specified originDate.\nchart.getDefaultAxisX().setTickStrategy(\n AxisTickStrategies.DateTime,\n // Use a mutator to set the origin date for this Axis' TickStrategy\n (tickStrategy) => tickStrategy.setDateOrigin(originDate),\n)\n```\n\nIf this _TickStrategy_ would be supplied to an _X-Axis_, it would effectively mean that its scale would start from 1st of January 2002 14PM, so a _XY-point_ with coordinates `{ x: 0, y: 0 }` would be formated as `{ x: \"1.1.2002 14:00\", y: 0 }`.\n\nIt is worth mentioning that big _DateTime_-intervals can produce severe precision problems (eq. when zooming in). The only way to battle this is by reducing the distance of timestamps from the active _origin-date_.\n","image":"dateTimeAxis"},{"id":"lcjs-example-0021-dateTimeAxisOrigin","title":"DateTime Axis Origin","tags":["line","xy","date-time"],"description":"Example showcases using origin with Axis TickStrategies.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChart JS Example that showcases using origin with Axis TickStrategies.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, DataPatterns, Themes } = lcjs\n\n// Import data-generator from 'xydata'-library.\nconst { createProgressiveTraceGenerator } = xydata\n\n// Create Dashboard.\nconst db = lightningChart().Dashboard({\n // theme: Themes.darkGold\n numberOfRows: 2,\n numberOfColumns: 1,\n})\n// Create two XY-charts.\nconst chartDefaultOrigin = db.createChartXY({\n columnIndex: 0,\n rowIndex: 0,\n columnSpan: 1,\n rowSpan: 1,\n})\nconst chartModifiedOrigin = db.createChartXY({\n columnIndex: 0,\n rowIndex: 1,\n columnSpan: 1,\n rowSpan: 1,\n})\n\n// Use the DateTime Axis TickStrategy with the default origin.\nchartDefaultOrigin.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime)\n\n// Use the DateTime Axis TickStrategy with the origin set to current day.\nchartModifiedOrigin.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(new Date()))\n// Setup the charts.\nchartDefaultOrigin.setTitle('Default origin').getDefaultAxisY().setTitle('Value')\nchartModifiedOrigin.setTitle('Modified origin').getDefaultAxisY().setTitle('Value')\n\n// Create line series for both charts.\nconst series1 = chartDefaultOrigin.addLineSeries()\nconst series2 = chartModifiedOrigin.addLineSeries()\n\n// Create a multiplier to set each point on X Axis correspond to 1 hour of time.\nconst dataFrequency = 1000 * 60 * 60\n\n// Generate traced points using 'xydata'-library.\ncreateProgressiveTraceGenerator()\n .setNumberOfPoints(1000)\n .generate()\n .toPromise()\n .then((data) => {\n // Use same data on both Series for demonstration purposes.\n series1.add(data.map((point) => ({ x: point.x * dataFrequency, y: point.y })))\n series2.add(data.map((point) => ({ x: point.x * dataFrequency, y: point.y })))\n })\n","url":null,"readme":"This example shows the usage of Origin Date with DateTime Axis TickStrategy, for rendering XY-series where either or both of X/Y dimensions can present _time_.\n\nIn the example, both charts use the same data, with each point of data set to be an hour apart along the X Axis; What is different between the charts, is the _origin_ for the DateTime TickStrategy used in the X Axis.\n\nThe top chart uses the default origin (January 1st, 1970), while the bottom chart uses a custom origin (set to current Date).\n\nThe _origin-date_ can be specified to whichever DateTime is desired. It is done by passing a _javascript Date object_ to the function that creates the _DateTime TickStrategy_:\n\n```javascript\n// Define the origin-date. (y, m [0-11], d [1-31], h [0-23])\nconst originDate = new Date(2002, 0, 1, 13)\n// Create DateTime AxisTickStrategy with specified originDate.\nconst dateTimeTickStrategy = AxisTickStrategies.DateTime(originDate)\n// Create a chart\nconst chart = lightningChart().ChartXY({})\n// Get the default X Axis\nchart\n .getDefaultAxisX()\n // Set the Tick Strategy to use\n .setTickStrategy(\n AxisTickStrategies.DateTime,\n // Use created DateTime AxisTickStrategy in the X Axis\n (tickStrategy) => tickStrategy.setDateOrigin(dat1eTimeTickStrategy),\n )\n```\n\nIf this _TickStrategy_ would be supplied to an _X-Axis_, it would effectively mean that its scale would start from 1st of January 2002 14PM, so a _XY-point_ with coordinates `{ x: 0, y: 0 }` would be formated as `{ x: 1.1.2002 14:00, y: 0 }`.\n\nIt is worth mentioning that big _DateTime_-intervals can produce severe precision problems (eq. when zooming in). The only way to battle this is by reducing the distance of timestamps from the active _origin-date_.\n","image":"dateTimeAxisOrigin"},{"id":"lcjs-example-0022-2dPointsValuePalette","title":"JavaScript 2D Points Value Palette Coloring","tags":["xy","line","points","palette"],"description":"Dynamic 2D points coloring by arbitrary user data set.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Multiple chart examples, dynamic point coloring, Scatter Charts, Point Cluster Charts, 3D charts for JS.","src":"/*\n * LightningChartJS example that showcases 2D points dynamic coloring based on an arbitrary user data set.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, PointShape, PalettedFill, LUT, regularColorSteps, Themes } = lcjs\n\n// Import data-generators from 'xydata'-library.\nconst { createProgressiveTraceGenerator } = require('@arction/xydata')\n\n// Create a XY Chart.\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('2D points value palette coloring')\n .setPadding({ right: 20 })\n\nconst theme = chart.getTheme()\n\nconst palette = new PalettedFill({\n lookUpProperty: 'value',\n lut: new LUT({\n units: 'trace dist (y)',\n interpolate: true,\n steps: regularColorSteps(0, 10, theme.examples.intensityColorPalette).map((step, i, steps) =>\n // Make last step transparent.\n i === steps.length - 1 ? { ...step, color: step.color.setA(0) } : step,\n ),\n }),\n})\n\ncreateProgressiveTraceGenerator()\n .setNumberOfPoints(1000)\n .generate()\n .toPromise()\n .then((tracePoints) => {\n const points = chart\n .addPointSeries({\n pointShape: PointShape.Circle,\n })\n .setName('Outliers')\n .setPointSize(3.0)\n .setPointFillStyle(palette)\n // IMPORTANT: Individual point values must be explicitly enabled for dynamic coloring.\n .setIndividualPointValueEnabled(true)\n\n // Generate points for outlier series.\n const outlierPoints = []\n tracePoints.forEach((p) =>\n outlierPoints.push(\n ...new Array(Math.round(Math.random() * 50)).fill(0).map((_, i) => {\n const outlierY = p.y + (Math.random() * 2 - 1) * 10\n return {\n x: p.x,\n y: outlierY,\n // `value` is used to lookup color from palette. Manual calculation allows any kind of data set to be used.\n value: Math.abs(outlierY - p.y),\n }\n }),\n ),\n )\n points.add(outlierPoints)\n\n const line = chart\n .addLineSeries({\n dataPattern: {\n pattern: 'ProgressiveX',\n },\n })\n .setName('Trace stroke')\n .add(tracePoints)\n .setStrokeStyle((style) => style.setThickness(5))\n\n chart\n .addLegendBox()\n .add(chart)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.2,\n })\n })\n","url":null,"readme":"_2D points dynamic coloring by value palette_\n\nThis example showcases a new feature in LCJS v3.0.1 release - dynamic coloring of 2D points using a value palette.\n\nValue palette coloring is a really powerful feature, which allows dynamic coloring based on any kind data set.\n\nIn this example it is used to color a data set based on Y distance from another data set.\n\nIn practice, this is done by calculating the Y difference and assigning a `value` property to each data point - naturally, there are endless different ways this can be used.\n\nIn addition to this, dynamic coloring by `x` or `y` coordinate is also supported. This is activated simply by setting the `PalettedFill.lookUpProperty` to either `'x'` or `'y'`.\n","image":"2dPointsValuePalette"},{"id":"lcjs-example-0023-decayingLineChart","title":"JavaScript Decaying Line Chart","tags":["xy","line","realtime"],"description":"Showcases Line Chart with refreshing data, where older samples are displayed for a while, slowly decaying out.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/**\n * LightningChartJS example for Line Chart with refreshing data, where older samples are displayed for a while, slowly decaying out.\n */\n\nconst lcjs = require('@arction/lcjs')\nconst { lightningChart, AutoCursorModes, SolidFill, SolidLine, ColorRGBA, Themes } = lcjs\n\n// Amount of data points in each sample.\nconst SAMPLE_SIZE = 1280\n// Amount of unique samples in application.\nconst SAMPLE_COUNT = 300\n// Max amount of samples displayed at any time.\nconst DECAY_STEPS_COUNT = 75\n\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Decaying Line Chart')\n .setAutoCursorMode(AutoCursorModes.disabled)\n\nconst theme = chart.getTheme()\nconst axisX = chart.getDefaultAxisX()\nconst axisY = chart.getDefaultAxisY().setInterval({ start: -1.05, end: 1.05 })\n\n// Generate series for each sample that can be displayed at a time.\nconst seriesList = new Array(DECAY_STEPS_COUNT).fill(0).map((_, i) => {\n const series = chart.addLineSeries({\n dataPattern: {\n // 'ProgressiveX' -> each data point is assumed to have larger X value than previous one.\n pattern: 'ProgressiveX',\n },\n })\n return series\n})\n\nconst defaultStrokeColor = seriesList[0].getStrokeStyle().getFillStyle().getColor()\n\n// Generate list of stroke styles for each decay step.\nconst strokeStyles = new Array(DECAY_STEPS_COUNT).fill(0).map((_, i) => {\n const lerpPos = i / DECAY_STEPS_COUNT\n // Linear interpolation convenience function.\n const lerp = (v0, v1, p) => v0 * (1 - p) + v1 * p\n return new SolidLine({\n thickness: 1,\n fillStyle: new SolidFill({\n // Decay step colors shift between default stroke color and fully transparent white.\n color: ColorRGBA(\n lerp(defaultStrokeColor.getR(), theme.isDark ? 0 : 255, lerpPos),\n lerp(defaultStrokeColor.getG(), theme.isDark ? 0 : 255, lerpPos),\n lerp(defaultStrokeColor.getB(), theme.isDark ? 0 : 255, lerpPos),\n lerp(255, 0, lerpPos),\n ),\n }),\n })\n})\n\n// Generate example data.\nconst data = []\nfor (let i = 0; i < SAMPLE_COUNT; i += 1) {\n const sample = []\n const amplitude = Math.cos((i * 2 * Math.PI) / SAMPLE_COUNT)\n for (let x = 0; x < SAMPLE_SIZE; x += 1) {\n let y = Math.cos(i * 0.01 + (5 * x * Math.PI) / SAMPLE_SIZE) * amplitude\n y += Math.random() * 0.02\n sample.push({ x, y })\n }\n data.push(sample)\n}\n\n// Setup data animation.\nlet iteration = 0\nconst nextIteration = () => {\n // Update data of 1 series.\n const newSampleData = data[iteration % SAMPLE_COUNT]\n const newSampleSeriesIndex = iteration % seriesList.length\n const newSampleSeries = seriesList[newSampleSeriesIndex]\n newSampleSeries.clear().add(newSampleData)\n\n // Update style of every series for decay effect.\n seriesList.forEach((series, i) => {\n let seriesStyleIndex = newSampleSeriesIndex - i\n if (seriesStyleIndex < 0) {\n seriesStyleIndex = strokeStyles.length + seriesStyleIndex\n }\n const seriesStyle = strokeStyles[seriesStyleIndex]\n series.setStrokeStyle(seriesStyle)\n })\n\n // Schedule next update and update counter.\n iteration += 1\n requestAnimationFrame(nextIteration)\n}\nnextIteration()\n","url":null,"readme":"This example showcases a refreshing line chart application, where some amount of previous samples are left visible for a brief moment.\n\nOlder samples are constantly updated with increasing transparency colors to give a \"decaying\" effect.\n\nThis effect is achieved by preparing an individual `LineSeries` for each displayed sample and updating the stroke style on every update.\nUpdating stroke style is a really fast operation, and there isn't any particular limit to the number of series either, so the amount of data in this kind of application can be scaled quite far up.\n","image":"decayingLineChart"},{"id":"lcjs-example-0024-ultraPrecisionTradingChart","title":"JavaScript Ultra Precision Trading Chart","tags":["trading","dashboard","xy","line","ui","cursor","interactions"],"description":"Next-generation Fintech charts in web. LightningChart JS supports plotting of even 1 microsecond resolution data","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Scientific Chart examples, Create High-Performance Charts, Medical Charts examples, dashboard charts.","src":"/*\n * Trading line chart with 1 microsecond precision data\n * 3 series, display a 2.5 second interval, total data points = 7.5 million\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\nconst {\n AxisTickStrategies,\n emptyFill,\n emptyLine,\n synchronizeAxisIntervals,\n translatePoint,\n lightningChart,\n UIOrigins,\n UIElementBuilders,\n UILayoutBuilders,\n AutoCursorModes,\n Themes,\n} = lcjs\nconst { createProgressiveTraceGenerator } = xydata\n\nconst CHANNELS = 3\nconst DATA_PER_CHANNEL = 2.5 * 1000 * 1000\nconst STEP_X = 10 ** -3\n\nconst dashboard = lightningChart().Dashboard({\n numberOfColumns: 1,\n numberOfRows: CHANNELS,\n // theme: Themes.darkGold\n})\n\nconst chartList = new Array(CHANNELS).fill(0).map((_, i) => {\n const chart = dashboard\n .createChartXY({\n columnIndex: 0,\n rowIndex: i,\n })\n .setPadding({ right: 80 })\n\n if (i > 0) {\n chart.setTitleFillStyle(emptyFill)\n } else {\n chart.setTitle(`3 stock price trends with 1 microsecond data resolution (total ${DATA_PER_CHANNEL * CHANNELS} values)`)\n }\n\n const axisX = chart.getDefaultAxisX().setThickness({ min: 30 }).setTickStrategy(AxisTickStrategies.Time).setScrollStrategy(undefined)\n const axisY = chart.getDefaultAxisY().setTitle('Price (€)').setThickness({ min: 80 })\n\n const uiLayout = chart\n .addUIElement(UILayoutBuilders.Column, {\n x: chart.getDefaultAxisX(),\n y: chart.getDefaultAxisY(),\n })\n .setOrigin(UIOrigins.LeftTop)\n .setPosition({\n x: chart.getDefaultAxisX().getInterval().start,\n y: chart.getDefaultAxisY().getInterval().end,\n })\n .setMouseInteractions(false)\n .setBackground((background) => background.setStrokeStyle(emptyLine))\n chart.getDefaultAxisX().onIntervalChange((_, start, end) => uiLayout.setPosition({ x: start, y: chart.getDefaultAxisY().getInterval().end }))\n chart.getDefaultAxisY().onIntervalChange((_, start, end) => uiLayout.setPosition({ x: chart.getDefaultAxisX().getInterval().start, y: end }))\n uiLayout\n .addElement(UIElementBuilders.TextBox)\n .setText('< Stock name >')\n .setTextFont((font) => font.setSize(8))\n\n return chart\n})\n\nconst seriesList = chartList.map((chart, i) => {\n const series = chart\n .addLineSeries({\n dataPattern: {\n pattern: 'ProgressiveX',\n },\n automaticColorIndex: i * 2,\n })\n .setName('< Stock name >')\n .setCursorInterpolationEnabled(false)\n return series\n})\n\nsynchronizeAxisIntervals(...chartList.map((chart) => chart.getDefaultAxisX()))\n\nPromise.all(\n seriesList.map((series, i) =>\n createProgressiveTraceGenerator()\n .setNumberOfPoints(DATA_PER_CHANNEL)\n .generate()\n .toPromise()\n .then((xyTrace) => {\n // Map generated XY trace data set into a more realistic trading data set.\n const baseLine = 10 + Math.random() * 2000\n const variationAmplitude = baseLine * 0.03\n const yMin = xyTrace.reduce((min, cur) => Math.min(min, cur.y), Number.MAX_SAFE_INTEGER)\n const yMax = xyTrace.reduce((max, cur) => Math.max(max, cur.y), -Number.MAX_SAFE_INTEGER)\n const yIntervalHalf = (yMax - yMin) / 2\n const yTraceBaseline = yMin + yIntervalHalf\n return xyTrace.map((xy) => ({\n x: xy.x * STEP_X,\n y: baseLine + ((xy.y - yTraceBaseline) / yIntervalHalf) * variationAmplitude,\n }))\n }),\n ),\n).then((dataSets) => {\n seriesList.forEach((series, i) => {\n series.add(dataSets[i])\n series.axisX.fit(false)\n })\n\n // Customize chart interactions.\n chartList.forEach((chart) => {\n chart.setMouseInteractions(false)\n chart.getDefaultAxisX().setMouseInteractions(false)\n })\n\n // Create custom chart interaction for mouse dragging inside chart area.\n const xBandList = chartList.map((chart) => chart.getDefaultAxisX().addBand().setVisible(false))\n chartList.forEach((chart) => {\n const axisX = chart.getDefaultAxisX()\n const axisY = chart.getDefaultAxisY()\n chart.setMouseInteractionRectangleFit(false).setMouseInteractionRectangleZoom(false)\n chart.onSeriesBackgroundMouseDrag((_, event, button, startLocation, delta) => {\n if (button !== 0) return\n\n xBandList.forEach((band, i) => {\n const bandChart = chartList[i]\n const xAxisLocationStart = translatePoint(\n bandChart.engine.clientLocation2Engine(startLocation.x, startLocation.y),\n bandChart.engine.scale,\n { x: axisX, y: axisY },\n ).x\n const xAxisLocationNow = translatePoint(\n bandChart.engine.clientLocation2Engine(event.clientX, event.clientY),\n bandChart.engine.scale,\n { x: axisX, y: axisY },\n ).x\n if (Math.abs(event.clientX - startLocation.x) > 10) {\n band.setVisible(true).setValueStart(xAxisLocationStart).setValueEnd(xAxisLocationNow)\n } else {\n band.setVisible(false)\n }\n })\n })\n chart.onSeriesBackgroundMouseDragStop((_, event, button, startLocation) => {\n if (button !== 0 || !xBandList[0].getVisible()) return\n\n const xStart = Math.min(xBandList[0].getValueStart(), xBandList[0].getValueEnd())\n const xEnd = Math.max(xBandList[0].getValueStart(), xBandList[0].getValueEnd())\n chartList[0].getDefaultAxisX().setInterval({ start: xStart, end: xEnd })\n xBandList.forEach((band, i) => {\n const nChart = chartList[i]\n let yMin = 999999\n let yMax = -999999\n for (let x = xStart; x < xEnd; x += STEP_X) {\n const dp = dataSets[i][Math.round(x / STEP_X)]\n if (dp !== undefined) {\n yMin = Math.min(yMin, dp.y)\n yMax = Math.max(yMax, dp.y)\n }\n }\n nChart.getDefaultAxisY().setInterval({ start: yMin, end: yMax })\n band.setVisible(false)\n })\n })\n chart.onSeriesBackgroundMouseDoubleClick((_, event) => {\n if (event.button !== 0) return\n\n fitActive = true\n chartList.forEach((nChart) => {\n nChart.getDefaultAxisX().fit(false)\n nChart.getDefaultAxisY().fit(false)\n })\n fitActive = false\n })\n })\n\n let fitActive = false\n // When X Axis interval is changed, automatically fit Y axis based on visible data.\n chartList.forEach((chart, i) => {\n chart.getDefaultAxisX().onIntervalChange((_, xStart, xEnd) => {\n if (fitActive) return\n\n let yMin = 999999\n let yMax = -999999\n for (let x = xStart; x < xEnd; x += STEP_X) {\n const dp = dataSets[i][Math.round(x / STEP_X)]\n if (dp !== undefined) {\n yMin = Math.min(yMin, dp.y)\n yMax = Math.max(yMax, dp.y)\n }\n }\n if (yMin < 999999) {\n chart.getDefaultAxisY().setInterval({ start: yMin, end: yMax })\n }\n })\n })\n})\n\n// Setup custom data cursor.\nconst xTicks = chartList.map((chart) => chart.getDefaultAxisX().addCustomTick(UIElementBuilders.PointableTextBox).setVisible(false))\nconst resultTable = dashboard\n .addUIElement(UILayoutBuilders.Column, dashboard.engine.scale)\n .setMouseInteractions(false)\n .setOrigin(UIOrigins.LeftBottom)\n .setMargin(5)\nconst resultTableRows = new Array(1 + CHANNELS).fill(0).map((_) => resultTable.addElement(UIElementBuilders.TextBox))\nresultTable.setVisible(false)\n\nchartList.forEach((chart) => {\n chart.setAutoCursorMode(AutoCursorModes.disabled)\n const showCursorAtEvent = (event) => {\n const mouseLocationEngine = chart.engine.clientLocation2Engine(event.clientX, event.clientY)\n const mouseLocationAxisX = translatePoint(mouseLocationEngine, chart.engine.scale, {\n x: chart.getDefaultAxisX(),\n y: chart.getDefaultAxisY(),\n }).x\n resultTableRows[0].setText(chart.getDefaultAxisX().formatValue(mouseLocationAxisX))\n for (let i = 0; i < CHANNELS; i += 1) {\n const series = seriesList[i]\n const nearestDataPoint = series.solveNearestFromScreen(mouseLocationEngine)\n resultTableRows[1 + i].setText(\n series.getName() + ': ' + (nearestDataPoint ? chart.getDefaultAxisY().formatValue(nearestDataPoint.location.y) + ' €' : ''),\n )\n }\n resultTable.setVisible(true).setPosition(mouseLocationEngine)\n xTicks.forEach((xTick) => xTick.setVisible(true).setValue(mouseLocationAxisX))\n }\n chart.onSeriesBackgroundMouseMove((_, event) => showCursorAtEvent(event))\n chart.getSeries().forEach(series => series.onMouseMove((_, event) => showCursorAtEvent(event)))\n chart.onSeriesBackgroundMouseDragStart(() => {\n resultTable.setVisible(false)\n xTicks.forEach((xTick) => xTick.setVisible(false))\n })\n chart.onSeriesBackgroundMouseLeave(() => {\n resultTable.setVisible(false)\n xTicks.forEach((xTick) => xTick.setVisible(false))\n })\n})\n","url":null,"readme":"This example showcases how LightningChart JS can be used to enable next-generation Fintech chart applications.\n\nAs proven in our [2021 line charts performance comparison](https://lightningchart.com/javascript-charts-performance-comparison/), LightningChart JS line charts are **over 700 times faster** than other web charts. LightningChart JS has been proved to be able to visualize data sets with even up to 500 million data points.\n\nThis large data plotting capacity paired together with great zoom capabilities enables some previously unseen possibilities in Fintech applications.\n\nIn this example, a random data set is generated for 3 stock price trends simulating a 1 microsecond resolution between each price measurement.\nThese trends are displayed with a shared X (time) view, showcasing an example on how analysis of incredibly high speed transactions and price impacts could be done in real life.\n\nThe amount of data in this example is 7 500 000 points. With 1 μs precision, this translates to 2.5 seconds of data per each trend.\n\nAs you can see, the data amount scales very quickly to crazy amounts. For this reason, this kind of visualization applications aren't applicable to entire data sets, but only to elsewhere identified \"points of interest\", such as turning points in trends.\n\nTo learn more about LightningChart JS and its Fintech capabilities, here are some potentially interesting links:\n\n- [Next Generation Real-Time Trading Dashboard](https://lightningchart.com/lightningchart-js-interactive-examples/examples/lcjs-example-0509-dashboardRealtimeTrading.html)\n\n- [LC JS Trading + Indicators (Volume, RSI, SMA, EMA) Showcase with real trading data from alphavantage.co](https://arction.github.io/lcjs-showcase-trading/)\n\n- [Candlestick, Area, DateTime features and more](https://lightningchart.com/lightningchart-js-interactive-examples/examples/lcjs-example-0502-dashboardTrading.html)\n\n- [Latest news on LC JS performance](https://lightningchart.com/high-performance-javascript-charts/)\n","image":"ultraPrecisionTradingChart"},{"id":"lcjs-example-0025-officeDataVisualizationLayer","title":"JavaScript Office Layout Data Visualization Chart","tags":["xy","image","ui","heatmap"],"description":"Example showcasing LightningChart interactions with external images and icons in context of office layout data visualization.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Scientific Chart examples, Create High-Performance Charts, Medical Charts examples, dashboard charts.","src":"/**\n * Example showcasing LightningChart interactions with external images and icons in context of office layout data visualization.\n */\n\nconst lcjs = require('@arction/lcjs')\nconst {\n lightningChart,\n AxisTickStrategies,\n ColorRGBA,\n ImageFill,\n PalettedFill,\n emptyLine,\n LUT,\n AutoCursorModes,\n UIElementBuilders,\n UIOrigins,\n LegendBoxBuilders,\n Themes,\n} = lcjs\n\nconst chartPadding = 10\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setMouseInteractions(false)\n .setTitle('Office layout data visualization layer')\n .setAutoCursor((autoCursor) => autoCursor.setTickMarkerXVisible(false).setTickMarkerYVisible(false))\n .setSeriesBackgroundStrokeStyle(emptyLine)\n\nchart.forEachAxis((axis) => axis.setTickStrategy(AxisTickStrategies.Empty).setStrokeStyle(emptyLine).setInterval({ start: 0, end: 1 }))\n\nconst legend = chart.addLegendBox(LegendBoxBuilders.VerticalLegendBox).setAutoDispose({\n type: 'max-width',\n maxHeight: 0.3,\n})\n\nconst officeLayoutImage = new Image()\nofficeLayoutImage.crossOrigin = ''\nofficeLayoutImage.src = document.head.baseURI + 'examples/assets/0025/office.png'\nofficeLayoutImage.onload = () => {\n chart.setSeriesBackgroundFillStyle(\n new ImageFill({\n source: officeLayoutImage,\n }),\n )\n\n // Maintain static aspect ratio of chart area (enclosed area between axes).\n const targetAspectRatio = officeLayoutImage.height / officeLayoutImage.width\n const updateChartAspectRatio = () => {\n const chartBounds = chart.engine.container.getBoundingClientRect()\n const chartSizePx = {\n x: Math.ceil(chartBounds.width - 2 * chartPadding),\n y: Math.ceil(chartBounds.height - 2 * chartPadding),\n }\n const curAspectRatio = chartSizePx.y / chartSizePx.x\n if (curAspectRatio < targetAspectRatio) {\n // Add horizontal chart padding to maintain Map picture aspect ratio.\n const targetAxisWidth = chartSizePx.y / targetAspectRatio\n const horizontalPadding = Math.max(chartSizePx.x - targetAxisWidth, 0)\n chart.setPadding({ left: horizontalPadding / 2, right: horizontalPadding / 2, top: chartPadding, bottom: chartPadding })\n } else if (curAspectRatio > targetAspectRatio) {\n // Add vertical chart padding to maintain Map picture aspect ratio.\n const targetAxisHeight = chartSizePx.x * targetAspectRatio\n const verticalPadding = Math.max(chartSizePx.y - targetAxisHeight, 0)\n chart.setPadding({ top: verticalPadding / 2, bottom: verticalPadding / 2, left: chartPadding, right: chartPadding })\n }\n }\n updateChartAspectRatio()\n window.addEventListener('resize', updateChartAspectRatio)\n\n // Load heat map data visualization layer data set.\n fetch(document.head.baseURI + 'examples/assets/0025/office-wifi-strength.json')\n .then((r) => r.json())\n .then((data) => {\n const wifiStrengthMatrix = data.data\n const heatmap = chart\n .addHeatmapGridSeries({\n columns: wifiStrengthMatrix.length,\n rows: wifiStrengthMatrix[0].length,\n start: { x: 0, y: 0 },\n end: { x: 1, y: 1 },\n })\n .setName('Wi-Fi Strength')\n .invalidateIntensityValues(wifiStrengthMatrix)\n .setWireframeStyle(emptyLine)\n .setFillStyle(\n new PalettedFill({\n lookUpProperty: 'value',\n lut: new LUT({\n interpolate: false,\n steps: [\n // Value 0 = no measurement.\n { value: 0, color: ColorRGBA(0, 0, 0, 0), label: '' },\n // Value 1 = weak wifi strength.\n { value: 0.9, color: ColorRGBA(255, 0, 0, 50), label: 'Weak' },\n // Value 2 = medium wifi strength.\n { value: 1.9, color: ColorRGBA(255, 255, 0, 50), label: 'Medium' },\n // Value 3 = good wifi strength.\n { value: 2.9, color: ColorRGBA(0, 255, 0, 50), label: 'Good' },\n ],\n }),\n }),\n )\n .setCursorResultTableFormatter((builder, series, dataPoint) =>\n builder\n .addRow(series.getName())\n .addRow(\n dataPoint.intensity === 0\n ? 'No measurement'\n : dataPoint.intensity === 1\n ? 'Weak'\n : dataPoint.intensity === 2\n ? 'Medium'\n : dataPoint.intensity === 3\n ? 'Good'\n : '?',\n ),\n )\n\n legend.add(heatmap)\n })\n\n // Load router icon.\n const routerImage = new Image()\n routerImage.crossOrigin = ''\n routerImage.src = document.head.baseURI + 'examples/assets/0025/router.png'\n routerImage.onload = () => {\n const iconAspectRatio = routerImage.height / routerImage.width\n const iconWidthPx = 48\n // Display router icon inside chart at preset X and Y axis coordinates (range 0-1)\n const routerIcon = chart\n .addUIElement(UIElementBuilders.TextBox, { x: chart.getDefaultAxisX(), y: chart.getDefaultAxisY() })\n .setText('')\n .setPadding({ left: iconWidthPx, top: iconWidthPx * iconAspectRatio })\n .setBackground((background) =>\n background.setStrokeStyle(emptyLine).setFillStyle(\n new ImageFill({\n source: routerImage,\n }),\n ),\n )\n .setPosition({ x: 0.322, y: 0.09 })\n .setOrigin(UIOrigins.Center)\n }\n}\n","url":null,"readme":"Example showcasing LightningChart JS capabilities with external pictures.\n\nThis example takes place in the context of data visualization in office premises.\nFor this purpose, the series area is styled by a digital picture of the office layout.\n\nIn code, this is implemented by loading the `Image` (in this case PNG file), and creating a new `ImageFill` object using that image.\nWhile it might not be obvious from looking at it, the chart type used in this example is a `ChartXY`.\nThe picture is shown by configuring the fill style of the series background.\n\n```ts\nconst image = new Image()\nimage.src = 'office-layout.png'\n\nconst imageFill = new ImageFill({ source: image })\n\nchart.setSeriesBackgroundFillStyle(imageFill)\n```\n\nOnce, the `ChartXY` is laid over the office layout, any of the numerous data visualization features of the chart type can be used to add detail to the chart.\n\nIn this case, we used a `Heatmap Series` to display the distribution of WiFi strength across the entire office, where the data values are distributed to 4 categories (No measurement, Weak, Medium and Good).\n\n## Adding Icons to LightningCharts\n\nAdditionally, this example showcases how icons can be used inside charts.\nThe example uses this by displaying the WiFi router location as a picture of a router device (bottom of chart).\n\nThis is achieved similarly to the office layout picture by utilizing `ImageFill`.\nHowever, this time instead of styling the series background, an `UIElement` is created and the image is attached to its background.\n\n```ts\nconst uiIcon = chart\n .addUIElement()\n .setBackground((background) => background.setFillStyle(imageFill))\n // Icon size is controlled using padding.\n .setPadding({ left: widthPx, top: heightPx })\n .setText('')\n```\n\n[Office layout picture](https://www.edrawsoft.com/template-colored-office-layout.html) by [Edraw](https://www.edrawsoft.com)\n","image":"officeDataVisualizationLayer"},{"id":"lcjs-example-0026-temperatureAnomalyChart","title":"JavaScript Temperature Anomaly Chart","tags":["xy","line","image"],"description":"Visualization of Temperature Anomaly Index and CO2 amount for period from 1880 to 2020. Showcases animated video icons","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChart JS Example that showcases embedding animated GIF icons inside XY charts.\n */\n\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\nconst { lightningChart, AxisTickStrategies, UIElementBuilders, UIOrigins, ImageFill, emptyLine, ImageFitMode, emptyFill, Themes } = lcjs\n\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('')\n\nconst axisY1 = chart.getDefaultAxisY().setTitle('Atmospheric Carbon Dioxide (ppm)')\n\nconst axisY2 = chart\n .addAxisY({\n opposite: true,\n })\n .setTitle('Temperature Anomaly Index (°C)')\n // Hide tick grid-lines from second Y axis.\n .setTickStrategy(AxisTickStrategies.Numeric, (ticks) =>\n ticks\n .setMinorTickStyle((minor) => minor.setGridStrokeStyle(emptyLine))\n .setMajorTickStyle((major) => major.setGridStrokeStyle(emptyLine)),\n )\n\nconst axisX = chart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime)\n\n// Fetch example data sets.\nfetch(document.head.baseURI + `examples/assets/0026/anomaly-data.json`)\n .then((r) => r.json())\n .then((data) => {\n const { temperature, co2 } = data\n\n // Visualize Atmospheric Carbon Dioxide (ppm).\n const carbonDioxideSeries = chart\n .addLineSeries({\n yAxis: axisY1,\n })\n .setName('Atmospheric Carbon Dioxide (ppm)')\n // Data set contains PPM measurement values only. First measurement is from year 1880, and each consecutive measurement is 1 year after previous.\n .add(\n co2.map((ppm, i) => ({\n y: ppm,\n x: new Date(1880 + i, 0, 1, 0, 0, 0, 0).getTime(),\n })),\n )\n\n // Visualize Temperature Anomaly Index (°C).\n const temperatureAnomalyIndexSeries = chart\n .addLineSeries({\n yAxis: axisY2,\n // Specify index for automatic color selection. By default this would be 1, but a larger number is supplied to increase contrast between series.\n automaticColorIndex: 2,\n })\n .setName('Temperature Anomaly Index (°C)')\n // Data set contains PPM measurement values only. First measurement is from year 1880, and each consecutive measurement is 1 year after previous.\n .add(\n temperature.map((index, i) => ({\n y: index,\n x: new Date(1880 + i, 0, 1, 0, 0, 0, 0).getTime(),\n })),\n )\n\n // Add legend.\n const legend = chart.addLegendBox(undefined, { x: axisX, y: axisY1 }).add(chart)\n // Move to non-default location, top left of chart.\n .setOrigin(UIOrigins.LeftTop)\n .setMargin(4)\n const positionLegendOnAxes = () => legend.setPosition({ x: axisX.getInterval().start, y: axisY1.getInterval().end })\n positionLegendOnAxes()\n axisX.onIntervalChange(positionLegendOnAxes)\n axisY1.onIntervalChange(positionLegendOnAxes)\n\n // Add thundercloud icons to predefined X and Y2 (anomaly index) axis locations.\n const video = document.createElement('video')\n video.crossOrigin = ''\n video.autoplay = true\n video.muted = true\n video.loop = true\n video.src = document.head.baseURI + `examples/assets/0026/thundercloud.webm`\n video.load()\n video.addEventListener('loadeddata', (e) => {\n video.play()\n const thunderCloudPositions = [\n { x: new Date(1962, 0, 1).getTime(), y: 0.15 },\n { x: new Date(1999, 0, 1).getTime(), y: 0.7 },\n ]\n const thunderCloudImgSize = { x: video.videoWidth, y: video.videoHeight }\n const thunderCloudImgAspectRatio = thunderCloudImgSize.y / thunderCloudImgSize.x\n // NOTE: Visible icon size can be affected by device pixel ratio.\n const thunderCloudIconSizePx = { x: 100, y: 100 * thunderCloudImgAspectRatio }\n thunderCloudPositions.forEach((position) => {\n // UI Picture Icon can be created by creating a TextBox, removing text and controlling the icons size by padding.\n const uiIcon = chart\n .addUIElement(UIElementBuilders.TextBox, { x: axisX, y: axisY2 })\n .setPosition(position)\n .setOrigin(UIOrigins.CenterBottom)\n .setTextFillStyle(emptyFill)\n .setPadding({ left: thunderCloudIconSizePx.x, top: thunderCloudIconSizePx.y })\n .setBackground((background) =>\n background.setStrokeStyle(emptyLine).setFillStyle(\n new ImageFill({\n source: video,\n fitMode: ImageFitMode.Fit,\n }),\n ),\n )\n })\n })\n })\n","url":null,"readme":"This example shows visualization of **Temperature anomaly index** and **Atmospheric Carbon Dioxide** in parts per million (ppm for short) for period from 1880 to 2020.\n\n- **Temperature anomaly** means a departure from a reference value or long-term average. A positive anomaly indicates that the observed temperature was warmer than the reference value, while a negative anomaly indicates that the observed temperature was cooler than the reference value.\n\nThis chart has two Y axes since it displays two trends on the same time range, but with different value ranges.\n\nThe extra Y axis on the right side is created like this\n\n```ts\nconst axisY2 = chart.addAxisY({ opposite: true })\n```\n\nWhen creating series, the connected axes can be explicitly defined like so\n\n```ts\nconst temperatureAnomalyIndexSeries = chart.addLineSeries({ yAxis: axisY2 })\n```\n\nAdditionally, this example showcases adding animated video icons inside the chart. The thunderclouds in this example are displayed from an attached `.mp4` asset file, which is displayed using an `UIElement`.\n\n```ts\nconst video = document.createElement('video')\nvideo.src = 'thundercloud.mp4'\n\nconst uiIcon = chart.addUIElement().setBackground((background) => background.setFillStyle(new ImageFill({ source: video })))\n```\n\n[Storm](https://icons8.com/icon/9t5k4YMYvtFl/storm) icon by [Icons8](https://icons8.com)\n","image":"temperatureAnomalyChart"},{"id":"lcjs-example-0027-visibleFitYAxis","title":"JavaScript Visible Fitting Y Axis Chart","tags":["xy","line","line","real-time"],"description":"Example how Y axis fitting to visible data can be achieved in scrolling line chart applications","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/**\n * Example how Y axis fitting to visible data can be achieved in scrolling line chart applications\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\nconst { lightningChart, AxisScrollStrategies, Themes } = lcjs\nconst { createProgressiveTraceGenerator } = xydata\n\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Axis Y Fitting to visible data')\n .setMouseInteractions(false)\n\nconst lineSeries = chart.addLineSeries({\n dataPattern: {\n pattern: 'ProgressiveX',\n },\n})\n\n// Setup scrolling X Axis.\nconst dataPointsHistory = 500\nconst axisX = chart\n .getDefaultAxisX()\n .setScrollStrategy(AxisScrollStrategies.progressive)\n .setInterval({ start: 0, end: dataPointsHistory, stopAxisAfter: false })\n .setMouseInteractions(false)\n\nconst axisY = chart.getDefaultAxisY().setMouseInteractions(false)\n\n// Keep track of n last data points (visible data points).\nconst lastYValues = []\n// Value that controls how often visible Y interval should be updated. Frequent updates can be CPU intensive especially if there are a lot of data points in view.\nconst updateYViewIntervalMs = 100\nlet lastYViewIntervalUpdate = 0\n\ncreateProgressiveTraceGenerator()\n .setNumberOfPoints(10000)\n .generate()\n .setStreamInterval(1000 / 60)\n .setStreamBatchSize(1)\n .setStreamRepeat(true)\n .toStream()\n .forEach((point) => {\n // Add point to line series.\n lineSeries.add(point)\n\n // Keep track of n last data points (visible last points)\n if (lastYValues.length >= dataPointsHistory) {\n lastYValues.shift()\n }\n lastYValues.push(point.y)\n\n const tNow = window.performance.now()\n if (tNow - lastYViewIntervalUpdate >= updateYViewIntervalMs) {\n lastYViewIntervalUpdate = tNow\n // Calculate Y values range of visible data points.\n let yMin = Number.MAX_SAFE_INTEGER\n let yMax = -Number.MAX_SAFE_INTEGER\n for (const y of lastYValues) {\n yMin = Math.min(yMin, y)\n yMax = Math.max(yMax, y)\n }\n // Actively set displayed Y axis interval to the range of visible data points.\n axisY.setInterval({ start: yMin, end: yMax })\n }\n })\n","url":null,"readme":"Example showcasing how active Y fitting to range of visible data points can be achieved in scrolling applications.\n\nBy default, the _fitting_ axis scroll strategy considers the full data set, not only the data points that are visible.\n\nIn some applications, this can be counter intuitive, which is why we created this example. This should provide a concrete reference on how this kind of \"active fitting\" can be implemented.\n\nThe idea is tracking the last couple of Y values and updating axis Y interval manually to only act according to the visible data points instead of entire data set.\n\n## Participating in the development of LightningChart JS\n\nIn case this particular mode of axis fitting is especially interesting/important to you, please don't hesitate to [contact our support](https://lightningchart.com/support-services/) and share your very own requirements with us. As we've mentioned before, all our development is driven by user requirements so be sure to get your voice included!\n","image":"visibleFitYAxis"},{"id":"lcjs-example-0028-multiChannelLineProgressiveOwnAxes","title":"Multi-channel real-time data monitoring JavaScript Chart","tags":["dashboard","line","xy","realtime","datapattern","datacleaning"],"description":"Lightning-fast Line Chart visualization over multiple channels that progress on the same X Axis","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/**\n * Lightning-fast Line Chart visualization over multiple channels that progress on the same X Axis\n */\n\nconst lcjs = require('@arction/lcjs')\n\n// NOTE: Assuming predefined number of stacked channels.\nconst SIGNALS = new Array(5).fill(0).map((_, i) => ({\n title: `Ch ${i + 1}`,\n}))\nconst DEFAULT_X_RANGE_MS = 30 * 1000\nconst PADDING_BOTTOM = 30\nconst PADDING_TOP = 40\nconst PADDING_LEFT = 100\nconst PADDING_AXIS_Y = 6\n\nconst {\n lightningChart,\n AutoCursorModes,\n emptyLine,\n AxisTickStrategies,\n AxisScrollStrategies,\n synchronizeAxisIntervals,\n UIOrigins,\n UIDraggingModes,\n LegendBoxBuilders,\n Themes,\n} = lcjs\n\nconst exampleContainer = document.getElementById('chart') || document.body\n\nconst dashboard = lightningChart()\n .Dashboard({\n numberOfColumns: 1,\n numberOfRows: SIGNALS.length,\n // theme: Themes.darkGold\n })\n .setSplitterStyle(emptyLine)\n\n/**\n * Function updates heights of charts in Dashboard. Should be called on resize/etc. for interactive applications.\n */\nconst layoutDashboard = () => {\n const totalHeight = exampleContainer.getBoundingClientRect().height\n const signalHeight = (totalHeight - PADDING_BOTTOM - PADDING_TOP) / SIGNALS.length\n\n SIGNALS.forEach((_, iSignal) => {\n const chHeight = signalHeight + (iSignal === 0 ? PADDING_TOP : 0) + (iSignal === SIGNALS.length - 1 ? PADDING_BOTTOM : 0)\n dashboard.setRowHeight(iSignal, chHeight)\n })\n}\nrequestAnimationFrame(layoutDashboard)\n\nconst channels = SIGNALS.map((signal, iSignal) => {\n const chart = dashboard\n .createChartXY({\n columnIndex: 0,\n rowIndex: iSignal,\n })\n .setTitle('')\n .setPadding({\n top: iSignal > 0 ? PADDING_AXIS_Y : 0,\n bottom: iSignal < SIGNALS.length - 1 ? PADDING_AXIS_Y : 0,\n left: 0,\n })\n .setAutoCursorMode(AutoCursorModes.disabled)\n .setBackgroundStrokeStyle(emptyLine)\n .setMouseInteractions(false)\n\n const axisX = chart\n .getDefaultAxisX()\n .setTickStrategy(AxisTickStrategies.Empty)\n .setStrokeStyle(emptyLine)\n .setScrollStrategy(AxisScrollStrategies.progressive)\n .setInterval({ start: -DEFAULT_X_RANGE_MS, end: 0, stopAxisAfter: false })\n const axisY = chart\n .getDefaultAxisY()\n .setTickStrategy(AxisTickStrategies.Empty)\n .setStrokeStyle(emptyLine)\n .setTitle(signal.title)\n .setTitleRotation(0)\n .setThickness(60)\n\n const series = chart\n .addLineSeries({\n dataPattern: { pattern: 'ProgressiveX' },\n automaticColorIndex: iSignal,\n })\n .setName(`Channel ${iSignal + 1}`)\n .setDataCleaning({ minDataPointCount: 10000 })\n // Use 2 thickness for smooth anti-aliased thick lines with the best visual look, this is pretty GPU heavy.\n .setStrokeStyle((style) => style.setThickness(2))\n\n return { chart, series, axisX, axisY }\n})\nconst channelTop = channels[0]\nconst channelBottom = channels[channels.length - 1]\n\nchannelTop.chart.setTitle(`Multi-channel real-time monitoring (${SIGNALS.length} chs, 1000 Hz)`)\n\nconst axisX = channelBottom.axisX\n .setThickness(PADDING_BOTTOM)\n .setTickStrategy(AxisTickStrategies.Time, (ticks) =>\n ticks\n .setMajorTickStyle((major) => major.setGridStrokeStyle(emptyLine))\n .setMinorTickStyle((minor) => minor.setGridStrokeStyle(emptyLine)),\n )\nsynchronizeAxisIntervals(...channels.map((ch) => ch.axisX))\n\n// axisX.setInterval({ start: -DEFAULT_X_RANGE_MS, end: 0, stopAxisAfter: false })\n\n// Add legend\nconst legend = dashboard\n .addLegendBox(LegendBoxBuilders.HorizontalLegendBox)\n .setPosition({ x: 50, y: 0 })\n .setOrigin(UIOrigins.CenterBottom)\n .setMargin({ bottom: PADDING_BOTTOM })\n .setDraggingMode(UIDraggingModes.notDraggable)\nchannels.forEach((channel) => legend.add(channel.series))\n\n// Custom interactions for zooming in/out along Time axis while keeping data scrolling.\naxisX.setNibInteractionScaleByDragging(false).setNibInteractionScaleByWheeling(false).setAxisInteractionZoomByWheeling(false)\nconst customZoomX = (_, event) => {\n const interval = axisX.getInterval()\n const range = interval.end - interval.start\n const newRange = range + Math.sign(event.deltaY) * 0.1 * Math.abs(range)\n axisX.setInterval({ start: interval.end - newRange, end: interval.end, stopAxisAfter: false })\n event.preventDefault()\n event.stopPropagation()\n}\naxisX.onAxisInteractionAreaMouseWheel(customZoomX)\nchannels.forEach((channel) => {\n channel.chart.onSeriesBackgroundMouseWheel(customZoomX)\n channel.series.onMouseWheel(customZoomX)\n})\n\n// Add LCJS user interface button for resetting view.\nconst buttonReset = dashboard\n .addUIElement()\n .setText('Reset')\n .setPosition({ x: 0, y: 0 })\n .setOrigin(UIOrigins.LeftBottom)\n .setMargin({ left: 4, bottom: 4 })\n .setDraggingMode(UIDraggingModes.notDraggable)\nbuttonReset.onMouseClick((_) => {\n const xMax = channels[0].series.getXMax()\n axisX.setInterval({ start: xMax - DEFAULT_X_RANGE_MS, end: xMax, stopAxisAfter: false })\n channels.forEach((channel) => channel.axisY.fit())\n})\n\n// Generate data sets that is repeated for each channel for demonstration purposes.\nconst dataSets = [\n { length: Math.ceil(400 * Math.PI), func: (x) => 8 * Math.sin(x / 200) },\n { length: Math.ceil(3200 * Math.PI), func: (x) => 7 * Math.sin(x / 1600) },\n { length: Math.ceil(800 * Math.PI), func: (x) => 4 * (Math.cos(x / 400) + Math.sin(x / 200)) },\n { length: Math.ceil(800 * Math.PI), func: (x) => 6 * Math.sin(x / 100) + Math.cos(x / 400) },\n { length: Math.ceil(1800 * Math.PI), func: (x) => 8 * Math.cos(x / 900) },\n].map((config) => {\n const data = []\n data.length = config.length\n for (let i = 0; i < config.length; i += 1) {\n const y = config.func(i)\n data[i] = y\n }\n return data\n})\n\n// Stream data into series.\nlet tStart = window.performance.now()\nlet pushedDataCount = 0\nconst dataPointsPerSecond = 1000 // 1000 Hz\nconst xStep = 1000 / dataPointsPerSecond\nconst streamData = () => {\n const tNow = window.performance.now()\n // NOTE: This code is for example purposes (streaming stable data rate without destroying browser when switching tabs etc.)\n // In real use cases, data should be pushed in when it comes.\n const shouldBeDataPointsCount = Math.floor((dataPointsPerSecond * (tNow - tStart)) / 1000)\n const newDataPointsCount = Math.min(shouldBeDataPointsCount - pushedDataCount, 1000) // Add max 1000 data points per frame into a series. This prevents massive performance spikes when switching tabs for long times\n const seriesNewDataPoints = []\n for (let iChannel = 0; iChannel < channels.length; iChannel++) {\n const dataSet = dataSets[iChannel % dataSets.length]\n const newDataPoints = []\n for (let iDp = 0; iDp < newDataPointsCount; iDp++) {\n const x = (pushedDataCount + iDp) * xStep\n const iData = (pushedDataCount + iDp) % dataSet.length\n const y = dataSet[iData]\n const point = { x, y }\n newDataPoints.push(point)\n }\n seriesNewDataPoints[iChannel] = newDataPoints\n }\n channels.forEach((channel, iChannel) => channel.series.add(seriesNewDataPoints[iChannel]))\n pushedDataCount += newDataPointsCount\n requestAnimationFrame(streamData)\n}\nstreamData()\n\n// Measure FPS.\nlet tFpsStart = window.performance.now()\nlet frames = 0\nlet fps = 0\nconst title = channelTop.chart.getTitle()\nconst recordFrame = () => {\n frames++\n const tNow = window.performance.now()\n fps = 1000 / ((tNow - tFpsStart) / frames)\n requestAnimationFrame(recordFrame)\n\n channelTop.chart.setTitle(`${title} (FPS: ${fps.toFixed(1)})`)\n}\nrequestAnimationFrame(recordFrame)\nsetInterval(() => {\n tFpsStart = window.performance.now()\n frames = 0\n}, 5000)\n","url":null,"readme":"Lightning-fast Line Chart visualization over multiple high speed (1000 Hz) trends that progress along the same scrolling Time X Axis.\n\nWidely used in all kinds of fields for monitoring live data from many (hundreds or even thousands) of data sources at the same time.\n\nFrames rendered per second (FPS) is recorded live, and displayed on the chart title. FPS of 40-60 indicates a smooth running performance.\n\nThis line chart uses smooth anti-aliased thick lines for the best visual look, which is pretty GPU heavy with high data rates.\nFor a lighter alternative you can check out [a similar line chart with best-performance graphics](https://lightningchart.com/lightningchart-js-interactive-examples/examples/lcjs-example-0010-multiChannelLineProgressive.html)\n\n## Automatic Data Cleaning\n\nOne of the most ground breaking features of LightningChart JS is _automatic data cleaning_.\n\nBecause LightningChart JS is designed for real-time data streaming solutions, it is essential that old, out of view data is automatically cleaned in the most performant manner.\n\nIn practice, this results in an application where you can even scroll back for some distance and see older data, but if you scroll far enough, you will find that the old data has been cleaned. This allows the application to run _forever_!\n\n## Several times proven performance leader in JS charting\n\nLightningChart is the pioneer group among JavaScript chart providers who started the study of data visualization performance comparison.\nThis activity is based on open-source applications that test several different charting tools with an identical use case.\n\nDuring the test, different metrics of performance are measured which indicate how efficiently the data visualization software performs. Common metrics are:\n\n- _Refresh rate_ (FPS), how rapidly the displayed visualization is updated as times per second.\n- _CPU usage_ (%), how much of available computing resource is utilized.\n - This is very important, because almost entirety of the computing power allocated to browsing a single web page is SHARED between all the content on the web page.\n - In simple terms, if you have a badly performing chart on your web page then it means your whole page will perform bad.\n- _Data amount_, how much data can be shown. In practice, limitations could be imposed on how long history can be displayed or how precisely the data can be visualized.\n\n**Since November 2021**, LightningChart JS has dominated all performance tests which have since covered a large set of data visualization use cases in various industries:\n\n- [_Static line graphs_](https://lightningchart.com/lightningchart-js-interactive-examples/examples/lcjs-example-0017-largeLineChartXY.html) | These days LightningChart loads far larger data sets and over 50 times faster than your average web chart.\n\n- [_Real-time line charts_](https://lightningchart.com/lightningchart-js-interactive-examples/examples/lcjs-example-0010-multiChannelLineProgressive.html) | In the original motivation for its development, LightningChart JS performs over **500000** times more efficiently than the average JS chart - processing tens of thousands more data samples, using 4 times less processing power and refreshing 7 times in the same time others do just once.\n\n- [_Heatmap charts_](https:/lightningchart.com/lightningchart-js-interactive-examples/examples/lcjs-example-0803-scrollingHeatmap.html) | Traditional JS heatmaps can be used to visualize small grids with total of 1000 data points and under. LCJS enables visualization of BILLION large data sets that could cover for example large geographical areas such as entire countries.\n\n**Find all the information of open-source LightningChart JS performance studies on our** [web page](https://lightningchart.com/high-performance-javascript-charts/)!\n","image":"multiChannelLineProgressiveOwnAxes"},{"id":"lcjs-example-0029-htmlScrollDashboard","title":"JavaScript HTML Scroll Bars Dashboard","tags":["dashboard","line","xy","realtime","datapattern","datacleaning"],"description":"Showcases how to fit a large number of charts into 1 by utilizing HTML scroll bars","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/**\n * Lightning-fast Line Chart visualization over multiple channels that progress on the same X Axis\n */\n\nconst lcjs = require('@arction/lcjs')\nconst xydata = require('@arction/xydata')\n\n// NOTE: Assuming predefined number of stacked channels.\nconst SIGNALS = new Array(20).fill(0).map((_, i) => ({\n title: `Ch ${i + 1}`,\n}))\nconst DEFAULT_X_RANGE_MS = 10 * 1000\nconst PADDING_BOTTOM = 30\nconst PADDING_TOP = 40\nconst PADDING_LEFT = 60\nconst DASHBOARD_HEIGHT = 1400\n\nconst {\n lightningChart,\n AutoCursorModes,\n emptyLine,\n AxisTickStrategies,\n AxisScrollStrategies,\n synchronizeAxisIntervals,\n UIOrigins,\n UIDraggingModes,\n Themes,\n} = lcjs\n\nconst { createProgressiveFunctionGenerator } = xydata\n\nconst exampleContainer = document.getElementById('chart') || document.body\nconst container = document.createElement('div')\nexampleContainer.append(container)\ncontainer.style.width = '100%'\ncontainer.style.height = `${DASHBOARD_HEIGHT}px`\n\nconst dashboard = lightningChart()\n .Dashboard({\n container,\n numberOfColumns: 1,\n numberOfRows: SIGNALS.length,\n // theme: Themes.darkGold\n })\n .setSplitterStyle(emptyLine)\n\n// Layout Dashboard with static height.\nconst totalHeight = DASHBOARD_HEIGHT\nconst signalHeight = (totalHeight - PADDING_BOTTOM - PADDING_TOP) / SIGNALS.length\nSIGNALS.forEach((_, iSignal) => {\n const chHeight = signalHeight + (iSignal === 0 ? PADDING_TOP : 0) + (iSignal === SIGNALS.length - 1 ? PADDING_BOTTOM : 0)\n dashboard.setRowHeight(iSignal, chHeight)\n})\n\nconst channels = SIGNALS.map((signal, iSignal) => {\n const chart = dashboard\n .createChartXY({\n columnIndex: 0,\n rowIndex: iSignal,\n })\n .setTitle('')\n .setPadding({\n top: 0,\n bottom: 0,\n left: 0,\n })\n .setAutoCursorMode(AutoCursorModes.disabled)\n .setBackgroundStrokeStyle(emptyLine)\n .setMouseInteractions(false)\n\n const axisX = chart\n .getDefaultAxisX()\n .setTickStrategy(AxisTickStrategies.Empty)\n .setStrokeStyle(emptyLine)\n .setScrollStrategy(AxisScrollStrategies.progressive)\n .setInterval({ start: -DEFAULT_X_RANGE_MS, end: 0, stopAxisAfter: false })\n const axisY = chart\n .getDefaultAxisY()\n .setTickStrategy(AxisTickStrategies.Empty)\n .setStrokeStyle(emptyLine)\n .setTitle(signal.title)\n .setTitleRotation(0)\n .setThickness(PADDING_LEFT)\n\n const series = chart\n .addLineSeries({\n dataPattern: { pattern: 'ProgressiveX', regularProgressiveStep: true },\n automaticColorIndex: iSignal,\n })\n .setName(`Channel ${iSignal + 1}`)\n .setDataCleaning({ minDataPointCount: 10000 })\n // Use -1 thickness for best performance, especially on low end devices like mobile / laptops.\n .setStrokeStyle((style) => style.setThickness(-1))\n\n return { chart, series, axisX, axisY }\n})\nconst channelTop = channels[0]\nconst channelBottom = channels[channels.length - 1]\n\nchannelTop.chart.setTitle(`Multi-channel real-time monitoring (${SIGNALS.length} chs, 1000 Hz)`)\n\nconst axisX = channelBottom.axisX\n .setThickness(PADDING_BOTTOM)\n .setTickStrategy(AxisTickStrategies.Time, (ticks) =>\n ticks\n .setMajorTickStyle((major) => major.setGridStrokeStyle(emptyLine))\n .setMinorTickStyle((minor) => minor.setGridStrokeStyle(emptyLine)),\n )\nsynchronizeAxisIntervals(...channels.map((ch) => ch.axisX))\n\n// Add Legend.\nconst legend = dashboard\n .addLegendBox()\n .add(dashboard)\n .setOrigin(UIOrigins.RightCenter)\n .setPosition({ x: 100, y: 50 })\n .setMargin({ right: 30 })\n\n// Custom interactions for zooming in/out along Time axis while keeping data scrolling.\naxisX.setNibInteractionScaleByDragging(false).setNibInteractionScaleByWheeling(false).setAxisInteractionZoomByWheeling(false)\nconst customZoomX = (_, event) => {\n const interval = axisX.getInterval()\n const range = interval.end - interval.start\n const newRange = range + Math.sign(event.deltaY) * 0.1 * Math.abs(range)\n axisX.setIntervall({ start: interval.end - newRange, end: interval.end, stopAxisAfter: false })\n event.preventDefault()\n event.stopPropagation()\n}\naxisX.onAxisInteractionAreaMouseWheel(customZoomX)\nchannels.forEach((channel) => {\n channel.chart.onSeriesBackgroundMouseWheel(customZoomX)\n channel.series.onMouseWheel(customZoomX)\n})\n\n// Add LCJS user interface button for resetting view.\nconst buttonReset = dashboard\n .addUIElement()\n .setText('Reset')\n .setPosition({ x: 0, y: 0 })\n .setOrigin(UIOrigins.LeftBottom)\n .setMargin({ left: 4, bottom: 4 })\n .setDraggingMode(UIDraggingModes.notDraggable)\nbuttonReset.onMouseClick((_) => {\n const xMax = channels[0].series.getXMax()\n axisX.setInterval({ start: xMax - DEFAULT_X_RANGE_MS, end: xMax, stopAxisAfter: false })\n channels.forEach((channel) => channel.axisY.fit())\n})\n\n// Define unique signals that will be used for channels.\nconst signals = [\n { length: 400 * Math.PI, func: (x) => Math.sin(x / 200) },\n { length: 400 * Math.PI, func: (x) => Math.cos(x / 200) },\n {\n length: 800 * Math.PI,\n func: (x) => Math.cos(x / 400) + Math.sin(x / 200),\n },\n {\n length: 800 * Math.PI,\n func: (x) => Math.sin(x / 100) + Math.cos(x / 400),\n },\n {\n length: 800 * Math.PI,\n func: (x) => Math.sin(x / 200) * Math.cos(x / 400),\n },\n { length: 1800 * Math.PI, func: (x) => Math.cos(x / 900) },\n { length: 3200 * Math.PI, func: (x) => Math.sin(x / 1600) },\n {\n length: 2600 * Math.PI,\n func: (x) => Math.sin(x / 400) * Math.cos(x / 1300),\n },\n]\n\n// Little utility to produce random numbers for example purposes without continuous usage of heavy Math.random() function.\nconst random = (() => {\n const patternLen = 83424\n const pattern = new Array(patternLen).fill(0).map((_) => Math.random() * 0.04)\n let i = 0\n return () => {\n i = (i + 1) % patternLen\n return pattern[i]\n }\n})()\n\n// Generate data sets for each signal.\nPromise.all(\n signals.map((signal) =>\n createProgressiveFunctionGenerator()\n .setStart(0)\n .setEnd(signal.length)\n .setStep(1)\n .setSamplingFunction(signal.func)\n .generate()\n .toPromise()\n .then((data) => data.map((xy) => xy.y)),\n ),\n).then((dataSets) => {\n // Stream data into series.\n let tStart = window.performance.now()\n let pushedDataCount = 0\n const dataPointsPerSecond = 1000 // 1000 Hz\n const xStep = 1000 / dataPointsPerSecond\n const streamData = () => {\n const tNow = window.performance.now()\n // NOTE: This code is for example purposes (streaming stable data rate without destroying browser when switching tabs etc.)\n // In real use cases, data should be pushed in when it comes.\n const shouldBeDataPointsCount = Math.floor((dataPointsPerSecond * (tNow - tStart)) / 1000)\n const newDataPointsCount = Math.min(shouldBeDataPointsCount - pushedDataCount, 1000) // Add max 1000 data points per frame into a series. This prevents massive performance spikes when switching tabs for long times\n const seriesNewDataPoints = []\n for (let iChannel = 0; iChannel < channels.length; iChannel++) {\n const dataSet = dataSets[iChannel % dataSets.length]\n const newDataPoints = []\n for (let iDp = 0; iDp < newDataPointsCount; iDp++) {\n const x = (pushedDataCount + iDp) * xStep\n const iData = (pushedDataCount + iDp) % dataSet.length\n const y = dataSet[iData]\n const point = { x, y }\n newDataPoints.push(point)\n }\n seriesNewDataPoints[iChannel] = newDataPoints\n }\n channels.forEach((channel, iChannel) => channel.series.add(seriesNewDataPoints[iChannel]))\n pushedDataCount += newDataPointsCount\n requestAnimationFrame(streamData)\n }\n streamData()\n})\n\n// Measure FPS.\nlet tFpsStart = window.performance.now()\nlet frames = 0\nlet fps = 0\nconst title = channelTop.chart.getTitle()\nconst recordFrame = () => {\n frames++\n const tNow = window.performance.now()\n fps = 1000 / ((tNow - tFpsStart) / frames)\n requestAnimationFrame(recordFrame)\n\n channelTop.chart.setTitle(`${title} (FPS: ${fps.toFixed(1)})`)\n}\nrequestAnimationFrame(recordFrame)\nsetInterval(() => {\n tFpsStart = window.performance.now()\n frames = 0\n}, 5000)\n","url":null,"readme":"Showcases how to fit a large number of charts into 1 view and fallback to HTML scroll bars when all of the content does not fit to view.\n\nThis approach allows fitting incredible amounts of data visualization into a single view. Note that with massive 10000+ high or wide charts to you may run into some precision issues and the charts might not look proper. This is due to WebGL limitations.\n\nThis line chart uses thin line rendering for the best performance, especially visible on devices with weak GPUs such as mobile devices and laptops.\nFor a thicker alternative you can check out [a similar line chart with best-looking line graphics](https://www.lightningchart.com/lightningchart-js-interactive-examples/examples/0028-multiChannelLineProgressiveOwnAxes.html)\n","image":"htmlScrollDashboard"},{"id":"lcjs-example-0030-logLine","title":"JavaScript Logarithmic Line Chart","tags":["line","xy","logarithmic"],"description":"Example showcasing logarithmic Axis with LineSeries.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChart JS Example that showcases Logarithmic Axes feature.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, ColorHEX, SolidLine, SolidFill, emptyLine, Themes } = lcjs\n\n// Import data-generator from 'xydata'-library.\nconst { createProgressiveFunctionGenerator } = xydata\n\n// Initialize chart.\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n // Specify default Y Axis as logarithmic.\n defaultAxisY: {\n type: 'logarithmic',\n // Use 10 as base number.\n base: '10',\n },\n })\n .setTitle('Logarithmic Axis vs Linear Axis')\n\nconst yAxisLogarithmic = chart.getDefaultAxisY().setTitle('Logarithmic Y Axis').setTitleMargin(10)\n\n// Add a second Y Axis that is linear.\nconst yAxisLinear = chart\n .addAxisY({\n type: 'linear',\n })\n .setTitle('Linear Y Axis')\n // Remove tick grid lines from second Y Axis\n .setTickStrategy('Numeric', (tickStrategy) =>\n tickStrategy\n .setMinorTickStyle((tickStyle) => tickStyle.setGridStrokeStyle(emptyLine))\n .setMajorTickStyle((tickStyle) => tickStyle.setGridStrokeStyle(emptyLine)),\n )\n\n// Add LegendBox.\nconst legend = chart\n .addLegendBox()\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.3,\n })\n\n// Graph 2 functions on both Axes.\nconst xStep = 0.1\nconst functions = [\n { label: 'f(x) = x', xStart: xStep, xEnd: 10, Y: (x) => x },\n { label: 'f(x) = 10^x', xStart: xStep, xEnd: 3.0, Y: (x) => 10 ** x },\n]\n\n// Generate function data in predefined X values range.\nPromise.all(\n functions.map((info) =>\n createProgressiveFunctionGenerator()\n .setStart(info.xStart)\n .setEnd(info.xEnd)\n .setStep(xStep)\n .setSamplingFunction(info.Y)\n .generate()\n .toPromise(),\n ),\n).then((dataSets) => {\n // Create two series for each function, one on each Axis.\n dataSets.forEach((dataSet, iFunction) => {\n const info = functions[iFunction]\n const legendEntries = []\n ;[yAxisLinear, yAxisLogarithmic].forEach((yAxis, iAxis) => {\n const series = chart\n .addLineSeries({\n yAxis,\n })\n .setCursorResultTableFormatter((builder, _, x, y) =>\n builder\n .addRow(`${info.label} (${iAxis === 0 ? 'linear' : 'logarithmic'})`)\n .addRow('X', '', x.toFixed(1))\n .addRow('Y', '', y.toFixed(1)),\n )\n .setName(info.label)\n .setStrokeStyle((style) => style.setThickness(5))\n .add(dataSet)\n\n console.log(series.getBoundaries())\n\n // Share LegendBoxEntry for both Series of the function.\n if (iAxis === 0) {\n legend.add(series)\n legend.setEntries((entry, component) => {\n if (component === series) {\n legendEntries[iFunction] = entry\n }\n })\n } else {\n series.attach(legendEntries[iFunction])\n }\n })\n })\n\n // Fit Axes immediately.\n yAxisLinear.fit()\n yAxisLogarithmic.fit()\n})\n","url":null,"readme":"This example showcases creation of logarithmic axes, highlighting the functional differences between linear and logarithmic axes using _line series_.\n\nLogarithmic Axis can be created by supplying `type: 'logarithmic'` argument when the Axis is created:\n\n```typescript\nconst chart = lightningChart().ChartXY({\n // Specify default Y Axis as logarithmic (10).\n defaultAxisY: {\n type: 'logarithmic',\n base: 10,\n },\n})\n\n// Add second Y Axis that is also logarithmic (Math.E).\nconst axis = chart.addAxisY({\n type: 'logarithmic',\n base: 'e',\n})\n```\n","image":"logLine"},{"id":"lcjs-example-0031-logBars","title":"JavaScript Grouped Bars with Logarithmic Y Axis","tags":["bars","logarithmic","column","group"],"description":"Example showcasing grouped bars chart with Logarithmic Y Axis","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: JS chart examples, covid-19 tracker chart, racing bar charts, mosaic chart, 2D range bar, grouped bar charts. And more!","src":"/*\n * LightningChart JS Example that showcases logarithmic Y Axis in a Grouped Bars Chart.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AutoCursorModes, UIOrigins, LegendBoxBuilders, AxisTickStrategies, emptyLine, UIElementBuilders, Themes } = lcjs\n\n// Example test data.\nconst groupedBarsValues = {\n groupNames: ['Quarter 1', 'Quarter 2', 'Quarter 3', 'Quarter 4'],\n productNames: ['Product 1', 'Product 2', 'Product 3'],\n values: [\n // Quarter 1: product sales.\n [152000, 28300, 120000],\n // Quarter 2: product sales.\n [218000, 32600, 105600],\n // Quarter 3: product sales.\n [526900, 18000, 98500],\n // Quarter 4: product sales.\n [726500, 54600, 13400],\n ],\n}\nconst quartersCount = groupedBarsValues.groupNames.length\nconst productsCount = groupedBarsValues.productNames.length\n\n// : Plot a Bar Chart using Rectangle Series :\n\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n // Configure Y Axis as logarithmic.\n defaultAxisY: {\n type: 'logarithmic',\n // Use 10 as log base.\n base: '10',\n },\n })\n .setTitle('Grouped Bars Chart with Logarithmic Y Axis')\n .setAutoCursorMode(AutoCursorModes.onHover)\n .setAutoCursor((cursor) =>\n cursor\n .setTickMarkerXVisible(false)\n .setGridStrokeXStyle(emptyLine)\n .setTickMarkerYVisible(false)\n .setGridStrokeYStyle(emptyLine)\n .setPointMarkerVisible(false)\n .setResultTable((resultTable) => resultTable.setOrigin(UIOrigins.Center)),\n )\n .setMouseInteractions(false)\n\nconst xAxis = chart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.Empty).setMouseInteractions(false)\n\nconst yAxis = chart.getDefaultAxisY().setTitle('Product sales (€)')\n\n// Create one Rectangle Series for each PRODUCT.\nconst allProductsSeries = groupedBarsValues.productNames.map((productName, iProduct) => {\n const series = chart\n .addRectangleSeries()\n .setName(productName)\n .setCursorResultTableFormatter((builder, _, figure) =>\n builder.addRow(`${productName} sales`).addRow(`${figure.getDimensionsTwoPoints().y2} €`),\n )\n .setDefaultStyle((rect) => rect.setStrokeStyle(emptyLine))\n return series\n})\n\nconst barWidthX = 1.0\nconst groupsGapX = 1.0\nconst edgesMarginX = 1.0\n\n// Add Rectangle figures for each Quarter and for each product.\ngroupedBarsValues.values.forEach((quarterValues, iQuarter) => {\n quarterValues.forEach((quarterValue, iProduct) => {\n const productSeries = allProductsSeries[iProduct]\n const x1 = iQuarter * (productsCount * barWidthX + groupsGapX) + iProduct * barWidthX\n const x2 = x1 + barWidthX\n // NOTE: Logarithmic data range is not defined at 0.\n const y1 = 1\n const y2 = quarterValue\n productSeries.add({\n x1,\n x2,\n y1,\n y2,\n })\n })\n})\n\n// Add X CustomTicks for each Quarter.\ngroupedBarsValues.groupNames.forEach((quarterName, iQuarter) => {\n const x1 = iQuarter * (productsCount * barWidthX + groupsGapX)\n const x2 = x1 + productsCount * barWidthX\n xAxis\n .addCustomTick()\n .setValue((x1 + x2) / 2)\n .setTextFormatter(() => quarterName)\n .setGridStrokeStyle(emptyLine)\n})\n\n// Set X view.\nxAxis.setInterval({\n start: -edgesMarginX,\n end: quartersCount * productsCount * barWidthX + (quartersCount - 1) * groupsGapX + edgesMarginX,\n})\n\n// Add LegendBox.\nconst legend = chart\n .addLegendBox(LegendBoxBuilders.VerticalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.3,\n })\nlegend.add(chart)\n","url":null,"readme":"Example of visualizing a _Grouped Bars Chart_ with a logarithmic Y Axis.\n","image":"logBars"},{"id":"lcjs-example-0032-logOHLC","title":"JavaScript OHLC Chart with Logarithmic Y Axis","tags":["candlestick","ohlc","logarithmic","date-time","trading","constantline","legendbox"],"description":"Example showcasing OHLC series with a logarithmic Y axis","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Trading Charts, High-Performance Charts, Financial Charts, Stock Charts, 2D & 3D charts, OHLC, Candlestick Charts.","src":"/*\n * LightningChart JS Example that showcases OHLC series with logarithmic Y Axis.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, OHLCSeriesTypes, AxisTickStrategies, LegendBoxBuilders, Themes } = lcjs\n\n// Import data-generator from 'xydata'-library.\nconst { createProgressiveTraceGenerator } = xydata\n\n// Initialize chart.\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n // Specify Y Axis as logarithmic.\n defaultAxisY: {\n type: 'logarithmic',\n base: '10',\n },\n })\n .setTitle('OHLC Chart with Logarithmic Y Axis')\n\n// Configure DateTime Axis X.\nconst dateOrigin = new Date(2013, 8, 16) //\nconst xAxis = chart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\n\nconst yAxis = chart.getDefaultAxisY().setTitle('Stock price (€)')\n\n// Generate progressive XY data.\nconst y1 = 1000 * (0.5 + Math.random())\nconst y2 = 10000 * (0.5 + Math.random())\nconst priceBoomStartX = 3216\nconst priceBoomEndX = 5796\nconst flipAtY = (limitY, y) => (y < limitY ? limitY + (limitY - y) : y)\nPromise.all([\n createProgressiveTraceGenerator()\n .setNumberOfPoints(15000)\n .generate()\n .toPromise()\n .then((data) => data.map((xy) => ({ x: xy.x, y: Math.max(y1 + xy.y * 6, 1) }))),\n createProgressiveTraceGenerator()\n .setNumberOfPoints(15000)\n .generate()\n .toPromise()\n .then((data) => data.map((xy) => ({ x: xy.x, y: y2 + flipAtY(y2 * 0.75, xy.y * 250) }))),\n])\n .then((dataSets) => {\n // Merge two data sets into one by interpolating from data set 1 to data set 2, simulating a \"price boom\".\n const data = dataSets[0].map((xy, i) => {\n if (i <= priceBoomStartX) return xy\n if (i >= priceBoomEndX) return dataSets[1][i]\n // Linear interpolation.\n const lerpAmount = (i - priceBoomStartX) / (priceBoomEndX - priceBoomStartX)\n return { x: xy.x, y: xy.y + lerpAmount * (dataSets[1][i].y - xy.y) }\n })\n return data\n })\n // Scale X step from [1] to 1 hour.\n .then((data) => data.map((xy) => ({ x: xy.x * 1000 * 60 * 60, y: xy.y })))\n .then((data) => {\n // Package XY points into OHLC series automatically.\n const series = chart\n .addOHLCSeries({ seriesConstructor: OHLCSeriesTypes.AutomaticPacking })\n .setName('Stock price')\n .setPackingResolution(1000 * 60 * 60)\n .add(data)\n\n // Add marker for price boom start.\n xAxis\n .addConstantLine()\n .setName('Price boom start')\n .setValue(priceBoomStartX * 1000 * 60 * 60)\n .setMouseInteractions(false)\n\n // Fit X Axis immediately.\n xAxis.fit()\n\n // Add LegendBox.\n const legend = chart\n .addLegendBox(LegendBoxBuilders.VerticalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.2,\n })\n .add(chart)\n })\n","url":null,"readme":"Example showcasing a _Candlesticks chart_ with a logarithmic Y Axis.\n","image":"logOHLC"},{"id":"lcjs-example-0033-sweepingLineDashboard","title":"JavaScript Sweeping Line Chart Dashboard","tags":["dashboard","line","xy","realtime"],"description":"Showcases sweeping ECG line chart with LightningChart JS","metaDescription":"An interactive example with the code editor shows a sweeping ECG line chart created with the LightningChart JS library. Test the performance of the library using our online code editor.","src":"/**\n * Example showcasing sweeping ECG line charts.\n *\n * Sweeping line chart functionality is not built-in into the library.\n * However, it is very well possible to build performant and good looking sweeping line applications\n * with LightningChart JS. Performance is not affected, but application code is slightly more complicated than\n * scrolling axis and some built-in features like real-time axis ticks and glow effects are not applicable.\n */\n\nconst lcjs = require('@arction/lcjs')\n\nconst { lightningChart, Themes, emptyLine, AutoCursorModes, AxisTickStrategies, ColorHEX, SolidFill, PointShape } = lcjs\n\nfetch(document.head.baseURI + 'examples/assets/0033/ecg.json')\n .then((r) => r.json())\n .then((ecgData) => {\n const CHANNELS = [\n { name: 'ECG-1', yMin: -2500, yMax: 2500 },\n { name: 'ECG-2', yMin: -2500, yMax: 2500 },\n { name: 'ECG-3', yMin: -2500, yMax: 2500 },\n { name: 'ECG-4', yMin: -2500, yMax: 2500 },\n { name: 'ECG-5', yMin: -2500, yMax: 2500 },\n { name: 'ECG-6', yMin: -2500, yMax: 2500 },\n ]\n const X_VIEW_MS = 15 * 1000\n\n const dashboard = lightningChart()\n .Dashboard({\n numberOfColumns: 1,\n numberOfRows: CHANNELS.length,\n // theme: Themes.darkGold\n })\n .setSplitterStyle(emptyLine)\n console.log(dashboard)\n const theme = dashboard.getTheme()\n const ecgBackgroundFill = new SolidFill({\n color: theme.isDark ? ColorHEX('#000000') : ColorHEX('#ffffff'),\n })\n\n const channels = CHANNELS.map((info, iCh) => {\n const chart = dashboard\n .createChartXY({\n columnIndex: 0,\n rowIndex: iCh,\n })\n .setTitle(info.name)\n .setTitlePosition('series-left-top')\n .setAutoCursorMode(AutoCursorModes.disabled)\n .setSeriesBackgroundFillStyle(ecgBackgroundFill)\n .setMouseInteractions(false)\n .setSeriesBackgroundStrokeStyle(emptyLine)\n\n const axisX = chart\n .getDefaultAxisX()\n .setTickStrategy(AxisTickStrategies.Empty)\n .setStrokeStyle(emptyLine)\n .setScrollStrategy(undefined)\n .setInterval({ start: 0, end: X_VIEW_MS, stopAxisAfter: false })\n\n const axisY = chart\n .getDefaultAxisY()\n .setStrokeStyle(emptyLine)\n .setInterval({ start: info.yMin, end: info.yMax })\n .setTickStrategy(AxisTickStrategies.Empty)\n\n // Series for displaying \"old\" data.\n const seriesRight = chart\n .addLineSeries({\n dataPattern: { pattern: 'ProgressiveX' },\n automaticColorIndex: iCh,\n })\n .setName(info.name)\n .setStrokeStyle((stroke) => stroke.setThickness(2))\n .setEffect(false)\n\n // Rectangle for hiding \"old\" data under incoming \"new\" data.\n const seriesOverlayRight = chart\n .addRectangleSeries()\n .setEffect(false)\n .add({ x1: 0, y1: 0, x2: 0, y2: 0 })\n .setFillStyle(ecgBackgroundFill)\n .setStrokeStyle(emptyLine)\n .setMouseInteractions(false)\n\n // Series for displaying new data.\n const seriesLeft = chart\n .addLineSeries({\n dataPattern: { pattern: 'ProgressiveX' },\n automaticColorIndex: iCh,\n })\n .setName(info.name)\n .setStrokeStyle((stroke) => stroke.setThickness(2))\n .setEffect(false)\n\n const seriesHighlightLastPoints = chart\n .addPointSeries({ pointShape: PointShape.Circle })\n .setPointFillStyle(new SolidFill({ color: theme.examples.highlightPointColor }))\n .setPointSize(5)\n .setEffect(false)\n\n // Synchronize highlighting of \"left\" and \"right\" series.\n let isHighlightChanging = false\n ;[seriesLeft, seriesRight].forEach((series) => {\n series.onHighlight((value) => {\n if (isHighlightChanging) {\n return\n }\n isHighlightChanging = true\n seriesLeft.setHighlight(value)\n seriesRight.setHighlight(value)\n isHighlightChanging = false\n })\n })\n\n return {\n chart,\n seriesLeft,\n seriesRight,\n seriesOverlayRight,\n seriesHighlightLastPoints,\n axisX,\n axisY,\n }\n })\n\n // Setup logic for pushing new data points into a \"custom sweeping line chart\".\n // LightningChart JS does not provide built-in functionalities for sweeping line charts.\n // This example shows how it is possible to implement a performant sweeping line chart, with a little bit of extra application complexity.\n let prevPosX = 0\n // Keep track of data pushed to each channel.\n const channelsNewDataCache = new Array(CHANNELS.length).fill(0).map((_) => [])\n const appendDataPoints = (dataPointsAllChannels) => {\n // Keep track of the latest X (time position), clamped to the sweeping axis range.\n let posX = 0\n\n for (let iCh = 0; iCh < CHANNELS.length; iCh += 1) {\n const newDataPointsTimestamped = dataPointsAllChannels[iCh]\n const newDataCache = channelsNewDataCache[iCh]\n const channel = channels[iCh]\n\n // NOTE: Incoming data points are timestamped, meaning their X coordinates can go outside sweeping axis interval.\n // Clamp timestamps onto the sweeping axis range.\n const newDataPointsSweeping = newDataPointsTimestamped.map((dp) => ({\n x: dp.x % X_VIEW_MS,\n y: dp.y,\n }))\n\n posX = Math.max(posX, newDataPointsSweeping[newDataPointsSweeping.length - 1].x)\n\n // Check if the channel completes a full sweep (or even more than 1 sweep even though it can't be displayed).\n let fullSweepsCount = 0\n let signPrev = false\n for (const dp of newDataPointsSweeping) {\n const sign = dp.x < prevPosX\n if (sign === true && sign !== signPrev) {\n fullSweepsCount += 1\n }\n signPrev = sign\n }\n\n if (fullSweepsCount > 1) {\n // The below algorithm is incapable of handling data input that spans over several full sweeps worth of data.\n // To prevent visual errors, reset sweeping graph and do not process the data.\n // This scenario is triggered when switching tabs or minimizing the example for extended periods of time.\n channel.seriesRight.clear()\n channel.seriesLeft.clear()\n newDataCache.length = 0\n } else if (fullSweepsCount === 1) {\n // Sweeping cycle is completed.\n // Copy data of \"left\" series into the \"right\" series, clear \"left\" series.\n\n // Categorize new data points into \"right\" and \"left\" sides.\n const newDataPointsLeft = []\n for (const dp of newDataPointsSweeping) {\n if (dp.x > prevPosX) {\n newDataCache.push(dp)\n } else {\n newDataPointsLeft.push(dp)\n }\n }\n channel.seriesRight.clear().add(newDataCache)\n channel.seriesLeft.clear().add(newDataPointsLeft)\n newDataCache.length = 0\n newDataCache.push(...newDataPointsLeft)\n } else {\n // Append data to left.\n channel.seriesLeft.add(newDataPointsSweeping)\n // NOTE: While extremely performant, this syntax can crash if called with extremely large arrays (at least 100 000 items).\n newDataCache.push(...newDataPointsSweeping)\n }\n\n // Highlight last data point.\n const highlightPoints = [\n newDataCache.length > 0\n ? newDataCache[newDataCache.length - 1]\n : newDataPointsSweeping[newDataPointsSweeping.length - 1],\n ]\n channel.seriesHighlightLastPoints.clear().add(highlightPoints)\n }\n\n // Move overlays of old data to right locations.\n const overlayXStart = 0\n const overlayXEnd = posX + X_VIEW_MS * 0.03\n channels.forEach((channel) => {\n channel.seriesOverlayRight.setDimensions({\n x1: overlayXStart,\n x2: overlayXEnd,\n y1: channel.axisY.getInterval().start,\n y2: channel.axisY.getInterval().end,\n })\n })\n\n prevPosX = posX\n }\n\n // Setup example data streaming\n let tStart = window.performance.now()\n let pushedDataCount = 0\n const dataPointsPerSecond = 1000 // 1000 Hz\n const xStep = 1000 / dataPointsPerSecond\n const streamData = () => {\n const tNow = window.performance.now()\n // NOTE: This code is for example purposes only (streaming stable data rate)\n // In real use cases, data should be pushed in when it comes.\n const shouldBeDataPointsCount = Math.floor((dataPointsPerSecond * (tNow - tStart)) / 1000)\n const newDataPointsCount = shouldBeDataPointsCount - pushedDataCount\n if (newDataPointsCount > 0) {\n const newDataPoints = []\n for (let iDp = 0; iDp < newDataPointsCount; iDp++) {\n const x = (pushedDataCount + iDp) * xStep\n const iData = (pushedDataCount + iDp) % ecgData.length\n const y = ecgData[iData]\n const point = { x, y }\n newDataPoints.push(point)\n }\n\n // For this examples purposes, stream same data into all channels.\n appendDataPoints(new Array(CHANNELS.length).fill(0).map((_) => newDataPoints))\n pushedDataCount += newDataPointsCount\n }\n\n requestAnimationFrame(streamData)\n }\n streamData()\n })\n","url":null,"readme":"This interactive example with the code editor shows a sweeping ECG line chart created with LightningChart JS library. You can experiment with the variables and parameters to see how the library performs using our online code editor.\n\nSweeping line chart functionality is not built-in in the library. However, it is entirely possible to create performant and visually appealing sweeping line applications with LightningChart JS. Performance is unaffected, but the application code is slightly more complex than the scrolling axis. Some built-in features are also inapplicable, such as real-time axis ticks and glow effects.\n\nThis example displays 6 ECG channels, each with a 1000 Hz frequency.\n\nStress testing has concluded that even 100s of such high-frequency channels can be displayed at the same time. To squeeze more GPU performance out, you can try setting line series thickness to -1 for the best performance.\n","image":"sweepingLineDashboard"},{"id":"lcjs-example-0040-customLassoInteraction","title":"JavaScript Lasso Selection Chart","tags":["xy","point","polygon","interactions"],"description":"Example showcasing a custom ChartXY interaction for highlighting selected data points","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Multiple chart examples, dynamic point coloring, Scatter Charts, Point Cluster Charts, 3D charts for JS.","src":"/*\n * LightningChartJS example that showcases a simple XY line series.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, ColorCSS, PointShape, SolidLine, SolidFill, translatePoint, Themes } = lcjs\n\nconst { createProgressiveTraceGenerator } = require('@arction/xydata')\n\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Custom lasso interaction (drag Left mouse button)')\n // Disable default chart interactions with left mouse button.\n .setMouseInteractionRectangleFit(false)\n .setMouseInteractionRectangleZoom(false)\n\n// Add series for displaying data set.\nconst pointSeries = chart.addPointSeries({\n pointShape: PointShape.Circle,\n})\n\n// Add another series for displaying highlighted data points.\nconst seriesHighlightedPoints = chart\n .addPointSeries({ pointShape: PointShape.Circle })\n .setCursorEnabled(false)\n .setMouseInteractions(false)\n .setPointFillStyle(new SolidFill({ color: ColorCSS('blue') }))\n\n// Add a Polygon series and 1 polygon figure for displaying \"Lasso\" on user interactions.\nconst polygonSeries = chart.addPolygonSeries().setCursorEnabled(false).setMouseInteractions(false)\nconst polygonFigure = polygonSeries\n .add([])\n .setFillStyle(new SolidFill({ color: ColorCSS('gray').setA(10) }))\n .setStrokeStyle(\n new SolidLine({\n thickness: 1,\n fillStyle: new SolidFill({ color: ColorCSS('gray') }),\n }),\n )\n // Hide polygon initially.\n .setVisible(false)\n\n// Generate random example data.\ncreateProgressiveTraceGenerator()\n .setNumberOfPoints(10000)\n .generate()\n .toPromise()\n .then((data) => {\n pointSeries.add(data)\n\n // * Add custom interactions to Chart events for lasso data selection interaction *\n\n // Array that keeps track of current coordinates in polygon figure (lasso).\n const lassoCheckedCoordinates = []\n // Separate Array that keeps track of new lasso coordinates, that haven't been checked for covered data points yet.\n const lassoNewCoordinates = []\n // Lasso updates are handled after a timeout to avoid cases where the custom interaction code causes the entire chart application to perform bad.\n // Generally it is not recommended to do heavy calculations directly inside event handlers!\n let lassoUpdateTimeout = undefined\n\n // When Left mouse button is dragged inside series area, Lasso should be shown and selected data points highlighted.\n chart.onSeriesBackgroundMouseDrag((_, event, button) => {\n // If not left mouse button, don't do anything.\n if (button !== 0) return\n\n // Translate mouse location to Axis coordinate system.\n const curLocationAxis = translatePoint(\n chart.engine.clientLocation2Engine(event.clientX, event.clientY),\n chart.engine.scale,\n pointSeries.scale,\n )\n\n // Add location to list of new coordinates and schedule an update to the lasso.\n lassoNewCoordinates.push(curLocationAxis)\n // Don't update lasso any more frequently than every 25ms.\n lassoUpdateTimeout = lassoUpdateTimeout || setTimeout(updateLasso, 25)\n })\n\n // Reset previous lasso when mouse drag action is started.\n chart.onSeriesBackgroundMouseDragStart((_, __, button) => {\n // If not left mouse button, don't do anything.\n if (button !== 0) return\n lassoCheckedCoordinates.length = 0\n lassoNewCoordinates.length = 0\n seriesHighlightedPoints.clear()\n polygonFigure.setVisible(false)\n pointSeries.setCursorEnabled(false)\n })\n\n chart.onSeriesBackgroundMouseDragStop(() => {\n pointSeries.setCursorEnabled(true)\n })\n\n /**\n * Function which updates the lasso and highlighted points.\n */\n const updateLasso = () => {\n const lassoCheckedCoordinatesLength = lassoCheckedCoordinates.length\n const lassoNewCoordinatesLength = lassoNewCoordinates.length\n\n if (lassoNewCoordinatesLength > 0 && lassoCheckedCoordinatesLength + lassoNewCoordinatesLength >= 3) {\n // * Highlight data points that are inside the lasso area *\n\n // Intersection checks are always done relative to first polygon coordinate.\n const triangleA = lassoCheckedCoordinatesLength > 0 ? lassoCheckedCoordinates[0] : lassoNewCoordinates[0]\n // Consider only new triangles of the lasso coordinates, starting from the last checked coordinate,\n // and ending with the last new unchecked coordinate.\n let triangleB =\n lassoCheckedCoordinatesLength > 0 ? lassoCheckedCoordinates[lassoCheckedCoordinatesLength - 1] : lassoNewCoordinates[1]\n for (let iTriangle = 0; iTriangle < lassoNewCoordinates.length; iTriangle += 1) {\n const triangleC = lassoNewCoordinates[iTriangle]\n for (const point of data) {\n if (checkPointInsideTriangle(point, triangleA, triangleB, triangleC)) {\n // The data point is inside the lasso -> highlight it.\n seriesHighlightedPoints.add(point)\n }\n }\n triangleB = triangleC\n }\n\n // Append new coordinates to complete list of lasso coordinates.\n lassoCheckedCoordinates.push.apply(lassoCheckedCoordinates, lassoNewCoordinates)\n lassoNewCoordinates.length = 0\n\n // Ensure lasso is visible.\n polygonFigure.setVisible(true).setDimensions(lassoCheckedCoordinates)\n }\n lassoUpdateTimeout = undefined\n }\n\n /**\n * Highly optimized routine for checking if a XY point is inside a triangle defined by 3 XY points.\n */\n const checkPointInsideTriangle = (position, triangleA, triangleB, triangleC) => {\n const dX = position.x - triangleC.x\n const dY = position.y - triangleC.y\n const dX21 = triangleC.x - triangleB.x\n const dY12 = triangleB.y - triangleC.y\n const s = dY12 * dX + dX21 * dY\n const t = (triangleC.y - triangleA.y) * dX + (triangleA.x - triangleC.x) * dY\n const D = dY12 * (triangleA.x - triangleC.x) + dX21 * (triangleA.y - triangleC.y)\n if (D < 0) return s <= 0 && t <= 0 && s + t >= D\n return s >= 0 && t >= 0 && s + t <= D\n }\n })\n","url":null,"readme":"This example showcases the creation of a custom user interaction.\n\nBy default, dragging left mouse inside the series area, a zoom/fit interaction is activated.\nThis default interaction can be disabled:\n\n```js\nchart\n // Disable default chart interactions with left mouse button.\n .setMouseInteractionRectangleFit(false)\n .setMouseInteractionRectangleZoom(false)\n```\n\nAnd any custom interaction can be implemented with different event subscription methods.\nIn this example, `ChartXY.onSeriesBackgroundMouseDrag` is used to hook on to the event when user drags their left mouse button inside the series area.\n`PolygonSeries` are used to draw a _freeform lasso selection_ as the user moves their mouse on the chart.\n\nThe data points that are inside the lasso are solved in real-time, and highlighted with a separate `PointSeries`.\n\n\n\nThis idea of custom interactions can be extended to any application specific dynamic interaction, like deleting selected points, displaying them in a separate chart or moving them - imagination is the limit!\n\nWhen implementing custom interactions that involve solving a list of data points from some selection - like lasso - optimizing the application side code is very important. Performing heavy computations inside event handlers can block the thread which can make it seem like the chart is not performing well when in reality it is the application code that is bottle-necking the performance.\n\nSome rules of thumb for implementing custom interactions:\n\n- **Don't do heavy calculations directly inside event handlers.** Instead, schedule an update using `setTimeout` and prevent recalculations happening more often than necessary. This example limits the lasso update to max. 1 update per 25 milliseconds.\n\n- **Work smart, not hard.** In the case of lasso selection, iterating over a large data set one-by-one and checking which points are inside a _polygon_ can be _really heavy_.\n Instead, on each update, we only check the new expanded polygon area.\n In practice, the lasso polygon often has even 1000 coordinates in which case we're skipping 999 iterations of the entire data set every time the lasso is updated.\n\nThe code in this example is optimized very well, feel free to reference it in your own custom interaction implementations!\n","image":"customLassoInteraction"},{"id":"lcjs-example-0050-linePaletteX","title":"JavaScript ECG Chart with Highlighted Beats","tags":["xy","line","palette"],"description":"Example showcasing Line Series feature for coloring line dynamically based on X coordinates","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/**\n * Example showcasing Line Series feature for coloring line dynamically based on X coordinates\n */\n\nconst lcjs = require('@arction/lcjs')\nconst { lightningChart, PalettedFill, LUT, ColorRGBA, AxisTickStrategies, Themes } = lcjs\n\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('ECG chart with color highlighted heart beats')\n\nconst axisX = chart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.Time)\n\nconst axisY = chart.getDefaultAxisY().setTitle('mV')\n\nfetch(document.head.baseURI + 'examples/assets/0050/data.json')\n .then((r) => r.json())\n .then((ecgValuesY) => {\n const lineSeries = chart\n .addLineSeries({\n dataPattern: {\n pattern: 'ProgressiveX',\n },\n })\n .addArrayY(ecgValuesY)\n\n // Detect beats from ECG data set, listing the ranges as X coordinates (data point indexes).\n const beats = []\n let yPrev\n let iPeakHigh\n let iPeakLow\n for (let i = 0; i < ecgValuesY.length; i += 1) {\n const y = ecgValuesY[i]\n if (iPeakHigh === undefined) {\n // Check for high peak.\n if (y > 700 && y < yPrev) {\n // High peak.\n iPeakHigh = i\n }\n } else if (iPeakLow === undefined) {\n // Check for low peak.\n if (y < -700 && y > yPrev) {\n iPeakLow = i\n // Mark beat range as data point indexes.\n beats.push({ iStart: iPeakHigh - 40, iEnd: iPeakLow + 120 })\n iPeakHigh = undefined\n iPeakLow = undefined\n }\n }\n yPrev = y\n }\n\n // Style line series so that beat X ranges are highlighted with a special color.\n const colorDefault = lineSeries.getStrokeStyle().getFillStyle().getColor()\n const colorNormal = colorDefault\n const colorHighlight = new ColorRGBA(0, 255, 0)\n const xPalette = new PalettedFill({\n lookUpProperty: 'x',\n lut: new LUT({\n interpolate: false,\n steps: [\n { value: 0, color: colorNormal },\n ...beats\n .map((beat) => [\n { value: beat.iStart, color: colorHighlight },\n { value: beat.iEnd, color: colorNormal },\n ])\n .flat(),\n ],\n }),\n })\n\n lineSeries.setStrokeStyle((stroke) => stroke.setFillStyle(xPalette))\n axisX.setStrokeStyle((stroke) => stroke.setFillStyle(xPalette))\n })\n","url":null,"readme":"Example that showcases `LineSeries` feature for coloring line dynamically based on X coordinates.\n\nIn this example, there is a ECG data set (voltage measurements from a heart over short period of time).\nThis data is visualized as a _Line Chart_ where X dimension represents _time_ and Y dimension measured _voltage_.\n\nThis is a very traditional and well known setting, but this example adds a little twist to it in order to showcase the dynamic X coloring feature.\n\nThe example code automatically detects heart beats from the data set and tracks the X coordinate intervals that contain active heart beats.\n\n[//]: # 'IMPORTANT: The assets will not show before README.md is built - relative path is different!'\n\n\n\nThis heart beat information is then used to prepare a _Value - Color lookup table_, a conceptually simple object that can be widely used with many different LightningChart JS components.\n\nThe lookup table associates a range of _Values_ with corresponding _Colors_. In this example, this means defining the X value ranges which should be colored \"normally\" and ranges which should be colored in \"highlighted\" manner.\n\n[//]: # 'IMPORTANT: The assets will not show before README.md is built - relative path is different!'\n\n\n\nDynamic line coloring is a powerful feature which can serve many different needs. The best thing about it is that it doesn't compromise performance, meaning that you can use it just as well with 100 data points or 100 million data points.\n\nIn addition to dynamic coloring by X coordinate there are also more dynamic coloring modes available:\n\n- [Line dynamic coloring by Y coordinates](https://lightningchart.com/lightningchart-js-interactive-examples/examples/lcjs-example-0051-linePaletteY.html)\n- [Line dynamic coloring by separate Value data set](https://lightningchart.com/lightningchart-js-interactive-examples/examples/lcjs-example-0052-linePaletteValue.html)\n","image":"linePaletteX"},{"id":"lcjs-example-0051-linePaletteY","title":"JavaScript Good/Bad Values Threshold Line Chart","tags":["xy","line","palette"],"description":"Example showcasing Line Series feature for coloring line dynamically based on Y coordinates","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/**\n * Example showcasing Line Series feature for coloring line dynamically based on Y coordinates\n */\n\nconst lcjs = require('@arction/lcjs')\nconst { lightningChart, PalettedFill, LUT, ColorRGBA, SolidFill, Themes } = lcjs\n\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Line Chart with dynamic good/bad values highlighting')\n\nconst thresholdBadY = -30000\nconst thresholdGoodY = 10000\nconst colorBad = ColorRGBA(255, 0, 0)\nconst colorGood = ColorRGBA(0, 255, 0)\n\nconst axisX = chart.getDefaultAxisX()\nconst axisY = chart.getDefaultAxisY()\n\naxisY\n .addConstantLine()\n .setMouseInteractions(false)\n .setValue(thresholdBadY)\n .setStrokeStyle((stroke) => stroke.setFillStyle(new SolidFill({ color: colorBad.setA(50) })))\n\naxisY\n .addConstantLine()\n .setMouseInteractions(false)\n .setValue(thresholdGoodY)\n .setStrokeStyle((stroke) => stroke.setFillStyle(new SolidFill({ color: colorGood.setA(50) })))\n\nfetch(document.head.baseURI + 'examples/assets/0051/data.json')\n .then((r) => r.json())\n .then((valuesY) => {\n const lineSeries = chart\n .addLineSeries({\n dataPattern: {\n pattern: 'ProgressiveX',\n },\n })\n .addArrayY(valuesY)\n\n const colorNormal = lineSeries.getStrokeStyle().getFillStyle().getColor()\n const yMin = lineSeries.getYMin()\n const yPalette = new PalettedFill({\n lookUpProperty: 'y',\n lut: new LUT({\n interpolate: false,\n steps: [\n { value: yMin, color: colorBad },\n { value: thresholdBadY, color: colorNormal },\n { value: thresholdGoodY, color: colorGood },\n ],\n }),\n })\n\n lineSeries.setStrokeStyle((stroke) => stroke.setFillStyle(yPalette))\n axisY.setStrokeStyle((stroke) => stroke.setFillStyle(yPalette))\n })\n","url":null,"readme":"Example that showcases `LineSeries` feature for coloring line dynamically based on Y coordinates.\n\nThis example is based on a completely normal _Line Chart_, where the Y value depicts some trend, such as a stock price, sensor measurement, etc.\n\nProbably the most common need for dynamic Y based coloring comes from scenarios where the values have a range of Bad, Normal and Good values. A practical example could be a greenhouse where the room temperature is measured. For best results, the temperature should stay within acceptable range - neither too cold or too hot.\n\n[//]: # 'IMPORTANT: The assets will not show before README.md is built - relative path is different!'\n\n\n\nThe dynamic Y coloring feature allows the visualization of this kind of value thresholds very intuitively, by automatically changing color of each data point based on the Y coordinate.\n\nThe logic of selecting color based on Y coordinate is done with a _Value - Color lookup table_, a conceptually simple object that can be widely used with many different LightningChart JS components.\n\nThe lookup table associates a range of _Values_ with corresponding _Colors_.\n\n[//]: # 'IMPORTANT: The assets will not show before README.md is built - relative path is different!'\n\n\n\nDynamic line coloring is a powerful feature which can serve many different needs. The best thing about it is that it doesn't compromise performance, meaning that you can use it just as well with 100 data points or 100 million data points.\n\nIn addition to dynamic coloring by Y coordinate there are also more dynamic coloring modes available:\n\n- [Line dynamic coloring by X coordinates](https://lightningchart.com/lightningchart-js-interactive-examples/examples/lcjs-example-0050-linePaletteX.html)\n- [Line dynamic coloring by separate Value data set](https://lightningchart.com/lightningchart-js-interactive-examples/examples/lcjs-example-0052-linePaletteValue.html)\n","image":"linePaletteY"},{"id":"lcjs-example-0052-linePaletteValue","title":"JavaScript Racecar Track Data Analysis Chart","tags":["xy","line","palette"],"description":"Example showcasing Line Series feature for coloring line dynamically based on separate Value data set","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/**\n * Example showcasing Line Series feature for coloring line dynamically based on separate Value data set\n */\n\nconst lcjs = require('@arction/lcjs')\nconst {\n lightningChart,\n UIElementBuilders,\n UIOrigins,\n PalettedFill,\n LUT,\n ColorRGBA,\n regularColorSteps,\n emptyLine,\n AxisTickStrategies,\n Themes,\n} = lcjs\n\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Loading example data ...')\n .setAutoCursor((cursor) => cursor.setTickMarkerXVisible(false).setTickMarkerYVisible(false))\n\nconst theme = chart.getTheme()\nconst axisX = chart.getDefaultAxisX()\nconst axisY = chart.getDefaultAxisY()\nchart.getDefaultAxes().forEach((axis) => axis.setTickStrategy(AxisTickStrategies.Empty).setStrokeStyle(emptyLine))\n\nconst lineSeries = chart\n .addLineSeries({ individualLookupValuesEnabled: true })\n .setCursorSolveBasis('nearest')\n .setCursorInterpolationEnabled(false)\n .setStrokeStyle((stroke) => stroke.setThickness(10))\n\nconst labelStart = chart.addUIElement(UIElementBuilders.TextBox, { x: axisX, y: axisY }).setVisible(false)\n\nconst dataSources = [\n {\n name: 'Speed',\n file: 'demo-data-speed.json',\n lut: new LUT({\n steps: regularColorSteps(0, 50, theme.examples.intensityColorPalette),\n interpolate: true,\n units: 'km/h',\n }),\n format: (value) => `${value.toFixed(1)} km/h`,\n },\n {\n name: 'Steering',\n file: 'demo-data-steering.json',\n lut: new LUT({\n steps: [\n { value: -100, color: ColorRGBA(255, 255, 0) },\n { value: 0, color: ColorRGBA(255, 255, 255) },\n { value: 100, color: ColorRGBA(0, 0, 255) },\n ],\n interpolate: true,\n units: '%',\n }),\n format: (value) => `${value.toFixed(1)} %`,\n },\n {\n name: 'Throttle',\n file: 'demo-data-throttle.json',\n lut: new LUT({\n steps: regularColorSteps(0, 100, theme.examples.intensityColorPalette),\n interpolate: true,\n units: '%',\n }),\n format: (value) => `${value.toFixed(1)} %`,\n },\n]\n\nlet legend\nconst displayDataSource = async (sourceName) => {\n // CLeanup previously displayed data source\n if (legend) {\n legend.dispose()\n legend = undefined\n }\n\n const dataSource = dataSources.find((item) => item.name === sourceName)\n let data = dataSource.data\n if (!data) {\n console.time(`Load data set ${sourceName}`)\n data = await fetch(document.head.baseURI + `examples/assets/0052/${dataSource.file}`).then((r) => r.json())\n dataSource.data = data\n console.timeEnd(`Load data set ${sourceName}`)\n }\n\n lineSeries\n .clear()\n .setName(sourceName)\n .add(data)\n .setStrokeStyle((stroke) => stroke.setFillStyle(new PalettedFill({ lut: dataSource.lut })))\n .setCursorResultTableFormatter((builder, _, __, ___, dataPoint) =>\n builder.addRow(sourceName).addRow(dataPoint.value ? dataSource.format(dataPoint.value) : ''),\n )\n\n const start = data[0]\n labelStart.setVisible(true).setPosition(start).setOrigin(UIOrigins.CenterBottom).setMargin(10).setText('START')\n\n chart.setTitle(`Racecar ${sourceName} progression during 1 lap`)\n\n legend = chart.addLegendBox().add(chart)\n}\ndisplayDataSource('Speed')\n\n// Embed HTML UI inside the chart for selecting between different data sources.\nconst uiDiv = document.createElement('div')\nchart.engine.container.append(uiDiv)\nuiDiv.style.position = 'absolute'\nuiDiv.style.top = `${chart.getTitleMargin().top}px`\nuiDiv.style.right = `${chart.getPadding().right}px`\nconst inputDataSource = document.createElement('select')\nuiDiv.append(inputDataSource)\ndataSources.forEach((dataSource) => {\n const option = document.createElement('option')\n inputDataSource.append(option)\n option.innerHTML = dataSource.name\n})\ninputDataSource.onchange = (e) => {\n displayDataSource(e.target.value)\n}\n","url":null,"readme":"Example that showcases `LineSeries` feature for coloring line dynamically based on separate Value data set.\n\nThis example takes place in the field of motor-sports, more specifically the analysis of data gathered from a remote controlled racecar while driving on a race track.\n\n**Both the data as well as use case in this example originates from a real user of LightningChart JS** - TestLogger produces a complete data management and analytics system for RC cars and is one of our satisfied long-time partners. You can read more how they are able to take advantage of LightningChart JS in their craft at our [case study](https://lightningchart.com/news/data-analytics-for-racing-testlogger-case-study-lightningchart/).\n\nThe TestLogger software gathers an immense amount of high precision data from the RC car in real-time - for example in this application, speed, steering and throttle information are visualized. Each measurement is paired with a location information, which tells where the RC car was located at the time of measurement.\n\nSomething that we found amazing was that the RC car location information is actually calculated in real-time by tracking the orientation and speed of the RC car itself - it is not relying on GPS or any other positioning system!\n\nIn this example, the RC car data is used to dynamically color the path of the RC car based on the selected data set. For example, when \"Speed\" is analyzed, low speeds are colored as white and high speeds are colored as red.\n\nBy looking at the produced visualization, bottlenecks in the race can be spotted easily even with the naked eye.\n\nDynamic line coloring is a powerful feature which can serve many different needs. The best thing about it is that it doesn't compromise performance, meaning that you can use it just as well with 100 data points or 100 million data points.\n\nIn addition to dynamic coloring by separate Value data set there are also more dynamic coloring modes available:\n\n- [Line dynamic coloring by X coordinates](https://lightningchart.com/lightningchart-js-interactive-examples/examples/lcjs-example-0050-linePaletteX.html)\n- [Line dynamic coloring by Y coordinates](https://lightningchart.com/lightningchart-js-interactive-examples/examples/lcjs-example-0051-linePaletteY.html)\n","image":"linePaletteValue"},{"id":"lcjs-example-0053-dataGaps","title":"JavaScript Data Gaps Trading Chart","tags":["xy","trading","area","line","zoom band"],"description":"Example showcasing how data gaps can be handled XY series. Particularly highlights line and area series in a trading use case","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * Example showcasing how data gaps can be handled XY series. Particularly highlights line and area series in a trading use case\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, emptyLine, LegendBoxBuilders, Themes } = lcjs\n\nconst dashboard = lightningChart()\n .Dashboard({\n numberOfColumns: 1,\n numberOfRows: 2,\n // theme: Themes.darkGold\n })\n .setRowHeight(0, 1)\n .setRowHeight(1, 0.2)\n\nconst chart = dashboard.createChartXY({ columnIndex: 0, rowIndex: 0 }).setTitle('AAPL historical stock price and volume December 2021')\n\nconst axisClose = chart.getDefaultAxisY().setTitle('Stock price (€)')\n\nconst seriesClose = chart\n .addLineSeries({\n dataPattern: {\n pattern: 'ProgressiveX',\n },\n })\n .setName('Stock price (€)')\n .setCursorInterpolationEnabled(false)\n .setCursorResultTableFormatter((builder, series, x, y, dataPoint) =>\n builder\n .addRow(series.getName())\n .addRow(series.axisX.formatValue(dataPoint.x))\n .addRow(`${series.axisY.formatValue(dataPoint.y)} €`),\n )\n\nconst axisVolume = chart\n .addAxisY({ opposite: true })\n .setTitle('Volume (€)')\n .setTickStrategy(AxisTickStrategies.Numeric, (ticks) =>\n ticks\n .setMajorTickStyle((major) => major.setGridStrokeStyle(emptyLine))\n .setMinorTickStyle((minor) => minor.setGridStrokeStyle(emptyLine)),\n )\n\nconst seriesVolume = chart\n .addAreaSeries({ yAxis: axisVolume })\n .setName('Volume (€)')\n .setCursorInterpolationEnabled(false)\n .setCursorResultTableFormatter((builder, series, position, high, low) =>\n builder\n .addRow(series.getName())\n .addRow(series.axisX.formatValue(position))\n .addRow(`${series.axisY.formatValue(high)} €`),\n )\n\nconst dateOrigin = new Date('2021-01-01')\nconst dateOriginTime = dateOrigin.getTime()\n\nconst axisX = chart\n .getDefaultAxisX()\n .setTickStrategy(AxisTickStrategies.DateTime, (ticks) => ticks.setDateOrigin(dateOrigin))\n // Set preset X default view.\n .setInterval({\n start: new Date('2021-12-07 20:00:00').getTime() - dateOriginTime,\n end: new Date('2021-12-11 06:00:00').getTime() - dateOriginTime,\n })\nconst legend = chart.addLegendBox(LegendBoxBuilders.HorizontalLegendBox).add(chart)\n\nconst zoomBandChart = dashboard.createZoomBandChart({ axis: axisX, columnIndex: 0, rowIndex: 1 }).setTitle('')\n\nfetch(document.head.baseURI + 'examples/assets/0053/data.json')\n .then((r) => r.json())\n .then((data) => {\n // Compile XY data point lists for close series and volume series.\n // Data gaps are programmatically detected and marked into the data set.\n const dataGapThresholdX = 1 * 60 * 60 * 1000 // 1 hour as milliseconds\n const closeDataXY = []\n const volumeDataXY = []\n let xPrev\n for (let i = 0; i < data.length; i += 1) {\n const p = data[i]\n if (xPrev !== undefined) {\n const xGap = p.time - xPrev\n if (xGap > dataGapThresholdX) {\n // There is a gap in the data set between data points [i - 1] and [i]\n // Disconnect the series at this point by adding an extra data point with NaN value between these two data points.\n closeDataXY.push({ x: p.time - dateOriginTime, y: Number.NaN })\n volumeDataXY.push({ x: p.time - dateOriginTime, y: Number.NaN })\n i += 1\n }\n }\n closeDataXY.push({ x: p.time - dateOriginTime, y: p.close })\n volumeDataXY.push({ x: p.time - dateOriginTime, y: p.volume })\n xPrev = p.time\n }\n\n seriesClose.add(closeDataXY)\n seriesVolume.add(volumeDataXY)\n })\n","url":null,"readme":"Normally, series types such as `LineSeries`, `AreaSeries`, etc. automatically connect data points to highlight the progression of trend values. In some specific use cases, this is not the ideal behavior. One such use case is trading data visualization, which is also the setting for this particular.\n\nTrading data often contains frequent _data gaps_, meaning relatively large time intervals when there are no data samples available. These correspond to times when the market is \"closed\", evenings and weekends.\n\n[//]: # 'IMPORTANT: The assets will not show before README.md is built - relative path is different!'\n\n\n\nIn LightningChart JS, data gaps can be specified by adding an extra data point with value of `NaN` (_Not-A-Number_).\n\n[//]: # 'IMPORTANT: The assets will not show before README.md is built - relative path is different!'\n\n\n\nThe code of this example shows one way of automatically detecting gaps in data sets and adding the `NaN` data points in. By default it looks for 1 hour difference between two data points, but this can be easily modified.\n","image":"dataGaps"},{"id":"lcjs-example-0100-areaRange","title":"JavaScript Area Range Chart","tags":["area","range","xy","date-time"],"description":"Example showcasing basic use of an Area Range Series. Also known as a Area Graph, Area Chart or Range Area Chart.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Area charts for Scientific use, dynamic charts, High-Performance Charts, 2D JS charts with area graphs.","src":"/*\n * LightningChartJS example that showcases AreaRangeSeries.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, Themes } = lcjs\n\n// Decide on an origin for DateTime axis.\nconst dateOrigin = new Date(2018, 0, 1)\n\n// Create a XY Chart.\nconst chart = lightningChart().ChartXY({\n // theme: Themes.darkGold\n})\n//Cache default X Axis for use.\nconst axisX = chart.getDefaultAxisX()\n// Use DateTime TickStrategy, using the origin specified above.\naxisX.setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\nchart.setTitle('Area Range')\n// Add AreaRange Series\nconst areaRange = chart.addAreaRangeSeries()\n// Modify the ResultTable formatting.\nareaRange.setCursorResultTableFormatter((builder, series, figure, yMax, yMin) => {\n return builder\n .addRow('Actual vs Expected Share Prices of Company')\n .addRow('Date: ' + axisX.formatValue(figure))\n .addRow('Actual: ' + yMax.toFixed(2) + ' $')\n .addRow('Expected: ' + yMin.toFixed(2) + ' $')\n})\nchart.getDefaultAxisY().setTitle('Share price ($)')\n// Data for the AreaRange Series\nlet areaRangeData = [\n {\n x: 0,\n yMax: 24,\n yMin: -15,\n },\n {\n x: 6,\n yMax: 11,\n yMin: -13,\n },\n {\n x: 13,\n yMax: 16,\n yMin: -11,\n },\n {\n x: 20,\n yMax: 26,\n yMin: -8,\n },\n {\n x: 27,\n yMax: -2,\n yMin: -4,\n },\n {\n x: 34,\n yMax: -16,\n yMin: 2,\n },\n {\n x: 41,\n yMax: -10,\n yMin: 9,\n },\n {\n x: 48,\n yMax: 3,\n yMin: 17,\n },\n {\n x: 55,\n yMax: -1,\n yMin: 26,\n },\n {\n x: 62,\n yMax: 6,\n yMin: 35,\n },\n {\n x: 69,\n yMax: 17,\n yMin: 39,\n },\n {\n x: 76,\n yMax: -10,\n yMin: 41,\n },\n {\n x: 83,\n yMax: -8,\n yMin: 42,\n },\n {\n x: 90,\n yMax: 13,\n yMin: 41,\n },\n {\n x: 97,\n yMax: -12,\n yMin: 39,\n },\n {\n x: 104,\n yMax: 6,\n yMin: 37,\n },\n {\n x: 111,\n yMax: -10,\n yMin: 36.5,\n },\n {\n x: 118,\n yMax: 27,\n yMin: 36,\n },\n {\n x: 125,\n yMax: 52,\n yMin: 38,\n },\n {\n x: 132,\n yMax: 59,\n yMin: 42,\n },\n {\n x: 139,\n yMax: 64,\n yMin: 50,\n },\n\n {\n x: 146,\n yMax: 59,\n yMin: 53,\n },\n {\n x: 153,\n yMax: 71,\n yMin: 54,\n },\n {\n x: 160,\n yMax: 63,\n yMin: 53,\n },\n {\n x: 167,\n yMax: 79,\n yMin: 52,\n },\n {\n x: 174,\n yMax: 62,\n yMin: 51,\n },\n {\n x: 181,\n yMax: 81,\n yMin: 49,\n },\n {\n x: 188,\n yMax: 53,\n yMin: 48,\n },\n {\n x: 195,\n yMax: 89,\n yMin: 48.5,\n },\n {\n x: 202,\n yMax: 99,\n yMin: 49,\n },\n {\n x: 209,\n yMax: 79,\n yMin: 51,\n },\n {\n x: 216,\n yMax: 51,\n yMin: 51,\n },\n {\n x: 223,\n yMax: 36,\n yMin: 51,\n },\n {\n x: 230,\n yMax: 79,\n yMin: 50,\n },\n {\n x: 237,\n yMax: 49,\n yMin: 53,\n },\n {\n x: 244,\n yMax: 33,\n yMin: 55,\n },\n {\n x: 251,\n yMax: 51,\n yMin: 58,\n },\n {\n x: 258,\n yMax: 43,\n yMin: 60,\n },\n {\n x: 265,\n yMax: 72,\n yMin: 61,\n },\n {\n x: 272,\n yMax: 82,\n yMin: 60.5,\n },\n {\n x: 279,\n yMax: 73,\n yMin: 59,\n },\n\n {\n x: 286,\n yMax: 73,\n yMin: 58,\n },\n {\n x: 293,\n yMax: 67,\n yMin: 55,\n },\n {\n x: 300,\n yMax: 43,\n yMin: 53,\n },\n {\n x: 307,\n yMax: 12,\n yMin: 54,\n },\n {\n x: 314,\n yMax: 26,\n yMin: 54.5,\n },\n {\n x: 321,\n yMax: 46,\n yMin: 56,\n },\n {\n x: 328,\n yMax: 43,\n yMin: 58,\n },\n {\n x: 335,\n yMax: 72,\n yMin: 60,\n },\n {\n x: 342,\n yMax: 82,\n yMin: 62.5,\n },\n {\n x: 349,\n yMax: 73,\n yMin: 64,\n },\n {\n x: 356,\n yMax: 92,\n yMin: 65,\n },\n {\n x: 363,\n yMax: 107,\n yMin: 66,\n },\n]\n\nareaRangeData.forEach((point, i) => {\n areaRange.add({ position: point.x * 24 * 60 * 60 * 1000, high: point.yMax, low: point.yMin })\n})\n","url":null,"readme":"_Also known as a Area Graph, Area Chart or Range Area Chart_\n\nThe example shows the basic usage of an Area Range series. The Range Area Chart is similar to the **_Area series_**, which is plotted by shading the area between a range of values ( high & low ) represented by two curves of data.\n\nRange charts are generally used to show variations (low & high) simultaneously in the given period. Typical visualization applications use this type of graph shows temperature, price etc.\n\nThe series uses two fill styles, which can be configured individually, the identical behavior is applicable for borders:\n\n- the normal fill is used when High is greater than Low\n- the reversed fill is used when Low is greater than High\n\n```javascript\n// Create a new ChartXY.\nconst chart = lightningChart().ChartXY()\n\n// Add an area series with bipolar direction using default X and Y axes.\nconst areaRange = chart.addAreaRangeSeries()\n```\n\nThe series accepts **_AreaPoint_** type of points either as an object in format `{ position: number, high: number, low: number }`,\n\n```javascript\nseries.add({ position: 20, high: 45, low: -20 })\n```\n\nor via a factory that should be additionally imported.\n\n```javascript\nseries.add(AreaPoint(20, 45, -20))\n```\n\nAny number of points can be added with a single call.\n\n```javascript\n// Single point.\nseries.add({ position: 20, high: 45, low: -20 })\n\n// Multiple points at once.\nseries.add([\n { position: 20, high: 45, low: -20 },\n { position: 40, high: 95, low: 10 },\n { position: 60, high: 25, low: 60 },\n])\n```\n","image":"areaRange"},{"id":"lcjs-example-0101-multipleAreas","title":"JavaScript Multiple Areas Chart","tags":["range","area","xy"],"description":"Basic usage of a Monopolar Area series. Also known as a Area Graph or Area Chart.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Area charts for Scientific use, dynamic charts, High-Performance Charts, 2D JS charts with area graphs.","src":"/*\n * LightningChart® example code: Demo shows how to draw multiple layered area series.\n * If you need any assistance, or notice error in this example code, please contact [email protected]\n *\n * http://lightningchart.com | [email protected] | [email protected]\n * © LightningChart Ltd 2009-2019. All rights reserved.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AreaSeriesTypes, UIElementBuilders, LegendBoxBuilders, UIButtonPictures, Themes } = lcjs\n\n// Create a XY Chart.\nconst xyChart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Expected Profits To Expenses')\n .setPadding({ right: 2 })\n\n// Create a LegendBox as part of the chart.\nconst legend = xyChart\n .addLegendBox(LegendBoxBuilders.HorizontalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.8,\n })\n\n// ---- Add multiple Area series with different baselines and direction. ----\nconst areaProfit = xyChart.addAreaSeries({ type: AreaSeriesTypes.Positive }).setName('Profits')\n\nconst areaExpense = xyChart.addAreaSeries({ type: AreaSeriesTypes.Negative }).setName('Expenses')\n\n// Set Axis nicely\nxyChart.getDefaultAxisX().setTitle('Units Produced')\nxyChart.getDefaultAxisY().setTitle('USD')\n\nconst profitData = [\n { x: 0, y: 0 },\n { x: 10, y: 21 },\n { x: 20, y: 59 },\n { x: 30, y: 62 },\n { x: 40, y: 78 },\n { x: 50, y: 85 },\n { x: 60, y: 95 },\n { x: 70, y: 98 },\n { x: 80, y: 103 },\n { x: 90, y: 110 },\n { x: 100, y: 112 },\n { x: 110, y: 126 },\n { x: 120, y: 132 },\n { x: 130, y: 170 },\n { x: 140, y: 172 },\n { x: 150, y: 202 },\n { x: 160, y: 228 },\n { x: 170, y: 267 },\n { x: 180, y: 300 },\n { x: 190, y: 310 },\n { x: 200, y: 320 },\n { x: 210, y: 329 },\n { x: 220, y: 336 },\n { x: 230, y: 338 },\n { x: 240, y: 343 },\n { x: 250, y: 352 },\n { x: 260, y: 355 },\n { x: 270, y: 390 },\n { x: 280, y: 392 },\n { x: 290, y: 418 },\n { x: 300, y: 421 },\n { x: 310, y: 430 },\n { x: 320, y: 434 },\n { x: 330, y: 468 },\n { x: 340, y: 472 },\n { x: 350, y: 474 },\n { x: 360, y: 480 },\n { x: 370, y: 506 },\n { x: 380, y: 545 },\n { x: 390, y: 548 },\n { x: 400, y: 552 },\n { x: 410, y: 584 },\n { x: 420, y: 612 },\n { x: 430, y: 619 },\n { x: 440, y: 627 },\n { x: 450, y: 657 },\n { x: 460, y: 669 },\n { x: 470, y: 673 },\n { x: 480, y: 695 },\n { x: 490, y: 702 },\n { x: 500, y: 710 },\n]\nconst expensesData = [\n { x: 0, y: 0 },\n { x: 10, y: -58 },\n { x: 20, y: -61 },\n { x: 30, y: -62 },\n { x: 40, y: -66 },\n { x: 50, y: -88 },\n { x: 60, y: -93 },\n { x: 70, y: -124 },\n { x: 80, y: -126 },\n { x: 90, y: -136 },\n { x: 100, y: -152 },\n { x: 110, y: -156 },\n { x: 120, y: -190 },\n { x: 130, y: -199 },\n { x: 140, y: -200 },\n { x: 150, y: -208 },\n { x: 160, y: -210 },\n { x: 170, y: -235 },\n { x: 180, y: -270 },\n { x: 190, y: -299 },\n { x: 200, y: -321 },\n { x: 210, y: -342 },\n { x: 220, y: -350 },\n { x: 230, y: -360 },\n { x: 240, y: -374 },\n { x: 250, y: -413 },\n { x: 260, y: -433 },\n { x: 270, y: -447 },\n { x: 280, y: -449 },\n { x: 290, y: -454 },\n { x: 300, y: -461 },\n { x: 310, y: -461 },\n { x: 320, y: -492 },\n { x: 330, y: -496 },\n { x: 340, y: -518 },\n { x: 350, y: -522 },\n { x: 360, y: -557 },\n { x: 370, y: -562 },\n { x: 380, y: -596 },\n { x: 390, y: -599 },\n { x: 400, y: -609 },\n { x: 410, y: -611 },\n { x: 420, y: -628 },\n { x: 430, y: -635 },\n { x: 440, y: -636 },\n { x: 450, y: -643 },\n { x: 460, y: -643 },\n { x: 470, y: -647 },\n { x: 480, y: -648 },\n { x: 490, y: -659 },\n { x: 500, y: -665 },\n]\n\n// ---- Generate points using 'xydata'-library and add it to every plot. ----\nprofitData.forEach((point) => {\n areaProfit.add(point)\n})\nexpensesData.forEach((point) => {\n areaExpense.add(point)\n})\n\n// Set the custom result table for both areaSeries\nareaProfit.setCursorResultTableFormatter((builder, series, position, highValue, lowValue) => {\n return builder\n .addRow('Profits')\n .addRow('Amount: $' + highValue.toFixed(0))\n .addRow('Units Produced: ' + position.toFixed(0))\n})\nareaExpense.setCursorResultTableFormatter((builder, series, position, highValue, lowValue) => {\n return builder\n .addRow('Expenses')\n .addRow('Amount: $' + highValue.toFixed(0) * -1)\n .addRow('Units Produced: ' + position.toFixed(0))\n})\n\n// Add series to LegendBox and style entries.\nlegend.add(\n areaProfit,\n true,\n 'Expected Profits To Expenses',\n UIElementBuilders.CheckBox.setPictureOff(UIButtonPictures.Circle).setPictureOn(UIButtonPictures.Circle),\n)\nlegend.add(\n areaExpense,\n true,\n 'Expected Profits To Expenses',\n UIElementBuilders.CheckBox.setPictureOff(UIButtonPictures.Circle).setPictureOn(UIButtonPictures.Circle),\n)\n","url":null,"readme":"_Also known as a Area Graph or Area Chart_\n\nThe example shows the basic usage of a monopolar area series. The area series is based on **_line series_** with the area between the baseline and the given data filled with color. It is drawn on a Cartesian coordinate system and represents the quantitative data.\n\nCurrent example chart contains two monopolar area series. They are drawn on different sides of the specified baseline and the selected area type specifies the direction. The first area has a positive direction, the second one has a negative direction.\n\nThe simple area chart can be created with few simple lines of code:\n\n```javascript\n// Create a new ChartXY.\nconst chart = lightningChart().ChartXY()\n\n// Add an area series with positive direction using default X and Y axes.\nconst areaPositive = chart.addAreaSeries({\n baseline: 0,\n type: AreaSeriesTypes.Positive,\n})\n\n// Add an area series with negative direction using default X and Y axes.\nconst areaNegative = chart.addAreaSeries({\n baseline: 0,\n type: AreaSeriesTypes.Negative,\n})\n```\n\nThe baseline value the type of number and the type can be specified only during the creation of a series instance, where\n\n- The baseline is a fixed reference level of minimum or starting point used for comparisons, which allow customizing the position of the area.\n\n- The type of area series is an enum selector which defines the type of area series:\n - Select AreaSeriesTypes.Positive to show the data only above the baseline.\n - Select AreaSeriesTypes.Negative to show the data only below the baseline.\n - Select AreaSeriesTypes.Both to show the data from both sides of the baseline. _Bipolar area series will be explained in the future example_.\n\nThe series accepts points in format `{ x: number, y: number }`. Any number of points can be added with a single call.\n\n```javascript\n// Single point.\nseries.add({ x: 50, y: 60 })\n\n// Multiple points at once.\nseries.add([\n { x: 55, y: 60 },\n { x: 60, y: 62 },\n { x: 65, y: 65 },\n])\n```\n","image":"multipleAreas"},{"id":"lcjs-example-0102-areaBipolar","title":"Area Bipolar JavaScript Chart","tags":["area","xy","date-time"],"description":"Basic usage of Bipolar Area Series. Also known as a Bubble Series, Bubble Chart and Bubble Graph.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Area charts for Scientific use, dynamic charts, High-Performance Charts, 2D JS charts with area graphs.","src":"/*\n * LightningChart® example code: Demo shows how to draw multiple layered area series.\n * If you need any assistance, or notice error in this example code, please contact [email protected]\n *\n * http://www.lightningchart.com | [email protected] | [email protected]\n * © LightningChart Ltd 2009-2019. All rights reserved.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AreaSeriesTypes, AxisScrollStrategies, AxisTickStrategies, AutoCursorModes, Themes } = lcjs\n\n// Decide on an origin for DateTime axis.\nconst dateOrigin = new Date(2017, 0, 1)\n\n// Create a XY Chart.\nconst xyChart = lightningChart().ChartXY({\n // theme: Themes.darkGold\n})\nxyChart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\nxyChart.setTitle('Company growth in comparison to static baseline')\nxyChart.setAutoCursorMode(AutoCursorModes.onHover)\n\n// set y-axis title\nconst axisY = xyChart\n .getDefaultAxisY()\n .setTitle('Growth %')\n .setScrollStrategy(AxisScrollStrategies.progressive)\n .setInterval({ start: 0, end: 80, stopAxisAfter: false })\n\nlet areaBipolarData = [\n { x: 0, y: 12 },\n { x: 1, y: 71 },\n { x: 2, y: 24 },\n { x: 3, y: 39 },\n { x: 4, y: 24 },\n { x: 5, y: 10 },\n { x: 6, y: 58 },\n { x: 7, y: 10 },\n { x: 8, y: 74 },\n { x: 9, y: 23 },\n { x: 10, y: 19 },\n { x: 11, y: 25 },\n { x: 12, y: 51 },\n { x: 13, y: 20 },\n { x: 14, y: 40 },\n { x: 15, y: 50 },\n { x: 16, y: 26 },\n { x: 17, y: 72 },\n { x: 18, y: 39 },\n { x: 19, y: 49 },\n { x: 20, y: 22 },\n { x: 21, y: 21 },\n { x: 22, y: 36 },\n { x: 23, y: 73 },\n { x: 24, y: 67 },\n { x: 25, y: 53 },\n { x: 26, y: 8 },\n { x: 27, y: 7 },\n { x: 28, y: 71 },\n { x: 29, y: 29 },\n { x: 30, y: 56 },\n { x: 31, y: 18 },\n { x: 32, y: 15 },\n { x: 33, y: 9 },\n { x: 34, y: 29 },\n { x: 35, y: 64 },\n { x: 36, y: 44 },\n { x: 37, y: 62 },\n { x: 38, y: 70 },\n { x: 39, y: 19 },\n { x: 40, y: 55 },\n { x: 41, y: 15 },\n { x: 42, y: 48 },\n { x: 43, y: 23 },\n { x: 44, y: 51 },\n { x: 45, y: 51 },\n { x: 46, y: 64 },\n { x: 47, y: 15 },\n { x: 48, y: 31 },\n { x: 49, y: 40 },\n { x: 50, y: 11 },\n { x: 51, y: 30 },\n]\nconst dataFrequency = 1000 * 60 * 60 * 24 * 7\n// Add dynamic bipolar Area Series.\nconst areaBipolar = xyChart\n .addAreaSeries({ baseline: 40, type: AreaSeriesTypes.Bipolar })\n .setCursorInterpolationEnabled(false)\n .setCursorResultTableFormatter((builder, series, position, high, low) =>\n builder\n .addRow(series.getName())\n .addRow('Date:', series.axisX.formatValue(position))\n .addRow('Growth:', series.axisY.formatValue(high), '%'),\n )\n\nareaBipolar.add(areaBipolarData.map((point) => ({ x: point.x * dataFrequency, y: point.y })))\n","url":null,"readme":"_Also known as a Area Graph, Area Chart or Area Chart with Negative values_\n\nThe example shows the basic usage of a bipolar area series. The area series is based on **_line series_** with the area between the baseline and the given data filled with color. It is drawn on a Cartesian coordinate system and represents the quantitative data.\n\nCurrent example chart contains one bipolar area series. The data is drawn from both sides of the specified baseline.\n\nThe simple area chart can be created with few simple lines of code:\n\n```javascript\n// Create a new ChartXY.\nconst chart = lightningChart().ChartXY()\n\n// Add an area series with bipolar direction using default X and Y axes.\nconst areaBipolar = chart.addAreaSeries({\n baseline: 0,\n type: AreaSeriesTypes.Both,\n})\n```\n\nThe baseline value the type of number and the type can be specified only during the creation of a series instance, where\n\n- The baseline is a fixed reference level of minimum or starting point used for comparisons, which allow customizing the position of the area.\n\n- The type of area series is an enum selector which defines the type of area series:\n - Select AreaSeriesTypes.Both to show the data from both sides of the baseline.\n\nThe series accepts points in format `{ x: number, y: number }`. Any number of points can be added with a single call.\n\n```javascript\n// Single point.\nseries.add({ x: 50, y: 60 })\n\n// Multiple points at once.\nseries.add([\n { x: 55, y: 60 },\n { x: 60, y: 62 },\n { x: 65, y: 65 },\n])\n```\n","image":"areaBipolar"},{"id":"lcjs-example-0103-layeredAreas","title":"Layered Areas JavaScript Chart","tags":["area","xy","date-time"],"description":"Layered Area Chart done by layering multiple Area Series on top of each other. Also known as a Layered Area Graph, Layered Area Chart or Multiple Area Charts.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Area charts for Scientific use, dynamic charts, High-Performance Charts, 2D JS charts with area graphs.","src":"/*\n * LightningChartJS example that showcases creation and styling of Area Series in a layered setting.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, UIElementBuilders, Themes } = lcjs\n\n// Create a XY Chart.\nconst xyChart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Product version distribution')\n .setMouseInteractions(true)\n .setPadding({ right: 25 })\n\n// Custom tick labels for X Axis.\nconst reportTableXlable = [\n 'Jan-17',\n 'Feb-17',\n 'Mar-17',\n 'Apr-17',\n 'May-17',\n 'Jun-17',\n 'Jul-17',\n 'Aug-17',\n 'Sep-17',\n 'Oct-17',\n 'Nov-17',\n 'Dec-17',\n]\n\n// Creating AreaSeries\nconst createAreaSeries = (versionNumber, index) => {\n return xyChart\n .addAreaSeries()\n .setName(`Version ${versionNumber}`)\n .setCursorResultTableFormatter((builder, series, xValue, yValue) => {\n return builder\n .addRow(series.getName())\n .addRow('Date: ', reportTableXlable[parseInt(xValue)])\n .addRow('Distribution: ' + yValue.toFixed(2))\n })\n}\n\n// Create the area series\nconst V1Area = createAreaSeries(1, 0)\nconst V2Area = createAreaSeries(2, 2)\nconst V3Area = createAreaSeries(3, 2)\nconst V4Area = createAreaSeries(4, 0)\nconst V5Area = createAreaSeries(5, 1)\nconst V6Area = createAreaSeries(6, 2)\nconst V7Area = createAreaSeries(7, 0)\nconst V8Area = createAreaSeries(8, 1)\nconst V9Area = createAreaSeries(9, 2)\nconst V10Area = createAreaSeries(10, 0)\nconst V11Area = createAreaSeries(11, 1)\nconst V12Area = createAreaSeries(12, 2)\n\n// DataSet for all versions\nconst version1 = [\n {\n x: 'Jan-17',\n y: 1.3,\n },\n {\n x: 'Feb-17',\n y: 1.1,\n },\n {\n x: 'Mar-17',\n y: 1,\n },\n {\n x: 'Apr-17',\n y: 0.8,\n },\n {\n x: 'May-17',\n y: 0.7,\n },\n {\n x: 'Jun-17',\n y: 0.6,\n },\n {\n x: 'Jul-17',\n y: 0.6,\n },\n {\n x: 'Aug-17',\n y: 0.5,\n },\n {\n x: 'Sep-17',\n y: 0.4,\n },\n {\n x: 'Oct-17',\n y: 0.4,\n },\n {\n x: 'Nov-17',\n y: 0.3,\n },\n {\n x: 'Dec-17',\n y: 0.3,\n },\n]\n\nconst version2 = [\n {\n x: 'Jan-17',\n y: 4.9,\n },\n {\n x: 'Feb-17',\n y: 4,\n },\n {\n x: 'Mar-17',\n y: 3.7,\n },\n {\n x: 'Apr-17',\n y: 3.2,\n },\n {\n x: 'May-17',\n y: 2.8,\n },\n {\n x: 'Jun-17',\n y: 2.4,\n },\n {\n x: 'Jul-17',\n y: 2.3,\n },\n {\n x: 'Aug-17',\n y: 2,\n },\n {\n x: 'Sep-17',\n y: 1.7,\n },\n {\n x: 'Oct-17',\n y: 1.5,\n },\n {\n x: 'Nov-17',\n y: 1.2,\n },\n {\n x: 'Dec-17',\n y: 1.1,\n },\n]\n\nconst version3 = [\n {\n x: 'Jan-17',\n y: 6.8,\n },\n {\n x: 'Feb-17',\n y: 5.9,\n },\n {\n x: 'Mar-17',\n y: 5.4,\n },\n {\n x: 'Apr-17',\n y: 4.6,\n },\n {\n x: 'May-17',\n y: 4.1,\n },\n {\n x: 'Jun-17',\n y: 3.5,\n },\n {\n x: 'Jul-17',\n y: 3.3,\n },\n {\n x: 'Aug-17',\n y: 3,\n },\n {\n x: 'Sep-17',\n y: 2.6,\n },\n {\n x: 'Oct-17',\n y: 2.2,\n },\n {\n x: 'Nov-17',\n y: 1.8,\n },\n {\n x: 'Dec-17',\n y: 1.5,\n },\n]\n\nconst version4 = [\n {\n x: 'Jan-17',\n y: 2,\n },\n {\n x: 'Feb-17',\n y: 1.7,\n },\n {\n x: 'Mar-17',\n y: 1.5,\n },\n {\n x: 'Apr-17',\n y: 1.3,\n },\n {\n x: 'May-17',\n y: 1.2,\n },\n {\n x: 'Jun-17',\n y: 1,\n },\n {\n x: 'Jul-17',\n y: 1,\n },\n {\n x: 'Aug-17',\n y: 0.9,\n },\n {\n x: 'Sep-17',\n y: 0.7,\n },\n {\n x: 'Oct-17',\n y: 0.6,\n },\n {\n x: 'Nov-17',\n y: 0.5,\n },\n {\n x: 'Dec-17',\n y: 0.4,\n },\n]\n\nconst version5 = [\n {\n x: 'Jan-17',\n y: 25.2,\n },\n {\n x: 'Feb-17',\n y: 22.6,\n },\n {\n x: 'Mar-17',\n y: 20.8,\n },\n {\n x: 'Apr-17',\n y: 18.8,\n },\n {\n x: 'May-17',\n y: 17.1,\n },\n {\n x: 'Jun-17',\n y: 15.1,\n },\n {\n x: 'Jul-17',\n y: 14.5,\n },\n {\n x: 'Aug-17',\n y: 13.4,\n },\n {\n x: 'Sep-17',\n y: 12,\n },\n {\n x: 'Oct-17',\n y: 10.3,\n },\n {\n x: 'Nov-17',\n y: 8.6,\n },\n {\n x: 'Dec-17',\n y: 7.6,\n },\n]\n\nconst version6 = [\n {\n x: 'Jan-17',\n y: 11.3,\n },\n {\n x: 'Feb-17',\n y: 10.1,\n },\n {\n x: 'Mar-17',\n y: 9.4,\n },\n {\n x: 'Apr-17',\n y: 8.7,\n },\n {\n x: 'May-17',\n y: 7.8,\n },\n {\n x: 'Jun-17',\n y: 7.1,\n },\n {\n x: 'Jul-17',\n y: 6.7,\n },\n {\n x: 'Aug-17',\n y: 6.1,\n },\n {\n x: 'Sep-17',\n y: 5.4,\n },\n {\n x: 'Oct-17',\n y: 4.8,\n },\n {\n x: 'Nov-17',\n y: 3.8,\n },\n {\n x: 'Dec-17',\n y: 3.5,\n },\n]\n\nconst version7 = [\n {\n x: 'Jan-17',\n y: 22.8,\n },\n {\n x: 'Feb-17',\n y: 23.3,\n },\n {\n x: 'Mar-17',\n y: 23.1,\n },\n {\n x: 'Apr-17',\n y: 23.3,\n },\n {\n x: 'May-17',\n y: 23.3,\n },\n {\n x: 'Jun-17',\n y: 21.7,\n },\n {\n x: 'Jul-17',\n y: 21,\n },\n {\n x: 'Aug-17',\n y: 20.2,\n },\n {\n x: 'Sep-17',\n y: 19.2,\n },\n {\n x: 'Oct-17',\n y: 17.6,\n },\n {\n x: 'Nov-17',\n y: 15.4,\n },\n {\n x: 'Dec-17',\n y: 14.4,\n },\n]\n\nconst version8 = [\n {\n x: 'Jan-17',\n y: 24,\n },\n {\n x: 'Feb-17',\n y: 29.6,\n },\n {\n x: 'Mar-17',\n y: 31.3,\n },\n {\n x: 'Apr-17',\n y: 31.2,\n },\n {\n x: 'May-17',\n y: 31.8,\n },\n {\n x: 'Jun-17',\n y: 32.2,\n },\n {\n x: 'Jul-17',\n y: 32,\n },\n {\n x: 'Aug-17',\n y: 29.7,\n },\n {\n x: 'Sep-17',\n y: 28.1,\n },\n {\n x: 'Oct-17',\n y: 25.5,\n },\n {\n x: 'Nov-17',\n y: 22.7,\n },\n {\n x: 'Dec-17',\n y: 21.3,\n },\n]\n\nconst version9 = [\n {\n x: 'Jan-17',\n y: 0.3,\n },\n {\n x: 'Feb-17',\n y: 0.5,\n },\n {\n x: 'Mar-17',\n y: 2.4,\n },\n {\n x: 'Apr-17',\n y: 6.6,\n },\n {\n x: 'May-17',\n y: 10.6,\n },\n {\n x: 'Jun-17',\n y: 14.2,\n },\n {\n x: 'Jul-17',\n y: 15.8,\n },\n {\n x: 'Aug-17',\n y: 19.3,\n },\n {\n x: 'Sep-17',\n y: 22.3,\n },\n {\n x: 'Oct-17',\n y: 22.9,\n },\n {\n x: 'Nov-17',\n y: 20.3,\n },\n {\n x: 'Dec-17',\n y: 18.1,\n },\n]\n\nconst version10 = [\n {\n x: 'Jan-17',\n y: 0,\n },\n {\n x: 'Feb-17',\n y: 0.2,\n },\n {\n x: 'Mar-17',\n y: 0.4,\n },\n {\n x: 'Apr-17',\n y: 0.5,\n },\n {\n x: 'May-17',\n y: 0.9,\n },\n {\n x: 'Jun-17',\n y: 1.6,\n },\n {\n x: 'Jul-17',\n y: 2,\n },\n {\n x: 'Aug-17',\n y: 4,\n },\n {\n x: 'Sep-17',\n y: 6.2,\n },\n {\n x: 'Oct-17',\n y: 8.2,\n },\n {\n x: 'Nov-17',\n y: 10.5,\n },\n {\n x: 'Dec-17',\n y: 10.1,\n },\n]\n\nconst version11 = [\n {\n x: 'Jan-17',\n y: 0,\n },\n {\n x: 'Feb-17',\n y: 0,\n },\n {\n x: 'Mar-17',\n y: 0,\n },\n {\n x: 'Apr-17',\n y: 0,\n },\n {\n x: 'May-17',\n y: 0,\n },\n {\n x: 'Jun-17',\n y: 0,\n },\n {\n x: 'Jul-17',\n y: 0.2,\n },\n {\n x: 'Aug-17',\n y: 0.5,\n },\n {\n x: 'Sep-17',\n y: 0.8,\n },\n {\n x: 'Oct-17',\n y: 4.9,\n },\n {\n x: 'Nov-17',\n y: 11.4,\n },\n {\n x: 'Dec-17',\n y: 14,\n },\n]\n\nconst version12 = [\n {\n x: 'Jan-17',\n y: 0,\n },\n {\n x: 'Feb-17',\n y: 0,\n },\n {\n x: 'Mar-17',\n y: 0,\n },\n {\n x: 'Apr-17',\n y: 0,\n },\n {\n x: 'May-17',\n y: 0,\n },\n {\n x: 'Jun-17',\n y: 0,\n },\n {\n x: 'Jul-17',\n y: 0,\n },\n {\n x: 'Aug-17',\n y: 0,\n },\n {\n x: 'Sep-17',\n y: 0.3,\n },\n {\n x: 'Oct-17',\n y: 0.8,\n },\n {\n x: 'Nov-17',\n y: 3.2,\n },\n {\n x: 'Dec-17',\n y: 7.5,\n },\n]\n\nconst axisX = xyChart\n .getDefaultAxisX()\n .setMouseInteractions(false)\n .setScrollStrategy(undefined)\n // Disable default ticks.\n .setTickStrategy(AxisTickStrategies.Empty)\n\n// Create Custom Axis\nlet customAxisX = (data, index) => {\n axisX\n .addCustomTick()\n .setValue(index)\n .setGridStrokeLength(0)\n .setTextFormatter((_) => data[index].x)\n}\n\n// Generate Chart\nconst generateChart = (data, area, createTicks) => {\n data.map((p, index) => ({ x: index, y: p.y })).forEach((point, index) => {\n area.add(point)\n if (createTicks) {\n customAxisX(data, index)\n }\n })\n}\n\n// generating different layered for charts\ngenerateChart(version1, V1Area, true)\ngenerateChart(version2, V2Area)\ngenerateChart(version3, V3Area)\ngenerateChart(version4, V4Area)\ngenerateChart(version5, V5Area)\ngenerateChart(version6, V6Area)\ngenerateChart(version7, V7Area)\ngenerateChart(version8, V8Area)\ngenerateChart(version9, V9Area)\ngenerateChart(version10, V10Area)\ngenerateChart(version11, V11Area)\ngenerateChart(version12, V12Area)\n\n// Enable AutoCursor auto-fill.\nxyChart.setAutoCursor((cursor) => cursor.setResultTableAutoTextStyle(false).setTickMarkerXVisible(false))\n\nxyChart\n .getDefaultAxisY()\n .setTitle('Percentage')\n .setScrollStrategy(undefined)\n .setInterval({ start: 0, end: 50, stopAxisAfter: false })\n .setMouseInteractions(false)\n","url":null,"readme":"_Also known as a Layered Area Graph, Layered Area Chart or Multiple Area Charts_\n\nLayers mean individual slices of information (series) which can be stacked to create your composition of multiple series within the same chart view using overlapping.\n\nIn this example, layered area chart is basically multiple areas layered by either making use of transparency or perspective. It can be used instead of a multiple **_LineSeries_** to compare development of a trend, to search patterns and relationships both within a collection and across collections over the period.\n","image":"layeredAreas"},{"id":"lcjs-example-0104-stackedMountains","title":"JavaScript Stacked Mountains Chart","tags":["area","xy","date-time"],"description":"Stacked Charts are a popular visual aid for comparing parts of a whole. Also known as Stacked Area Graph or Stacked Areas.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Area charts for Scientific use, dynamic charts, High-Performance Charts, 2D JS charts with area graphs.","src":"/*\n * LightningChartJS example that showcases stacked mountains chart.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, AutoCursorModes, Themes } = lcjs\n\n// Set the origin date to use for the X Axis\nconst dateOrigin = new Date(2017, 0, 1)\n// Multiplier used for X Axis values to transform each X value as a month.\nconst dataFrequency = 60 * 60 * 24 * 30 * 1000\n// Create a XY Chart.\nconst xyChart = lightningChart().ChartXY({\n // theme: Themes.darkGold\n})\n\n// Set up the Chart, disable zooming and panning mouse interactions\n// and set AutoCursor to show when hovering mouse over Series.\nxyChart.setTitle('Product Version Distribution').setMouseInteractions(false).setAutoCursorMode(AutoCursorModes.onHover)\n\n// Set up the X and Y Axes for the chart.\nxyChart\n .getDefaultAxisX()\n .setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\n .setMouseInteractions(false)\n\nxyChart.getDefaultAxisY().setTitle('Distribution %').setInterval({ start: 0, end: 100, stopAxisAfter: false }).setMouseInteractions(false)\n\n// ---- Add multiple series with different names and values. ----\nconst versionName = [\n 'Version 1',\n 'Version 2',\n 'Version 3',\n 'Version 4',\n 'Version 5',\n 'Version 6',\n 'Version 7',\n 'Version 8',\n 'Version 9',\n 'Version 10',\n 'Version 11',\n 'Version 12',\n]\n// Array to store the created Area Series.\nconst version = []\n// Create Series for each version name.\nversionName.forEach((v, k) => {\n // The first version (data) is drawn at the bottom of the chart, so we can just use a Area Series to render it.\n if (k == 0) {\n version[k] = xyChart.addAreaSeries().setName(v)\n } else {\n // Rest of the versions (data) are drawn based on the version before, so we'll use Area Range Series to render it.\n version[k] = xyChart.addAreaRangeSeries().setName(v)\n }\n // Set up how to display the Result Table.\n version[k].setCursorResultTableFormatter((builder, series, xValue, yValueHigh, yValueLow) => {\n return builder\n .addRow(v)\n .addRow('Date: ' + series.axisX.formatValue(xValue))\n .addRow('Distribution: ' + (yValueHigh - yValueLow).toFixed(2) + '%')\n })\n})\n// Create data for each Version.\nconst data = [\n [\n { x: 0, y: 1.3 },\n { x: 1, y: 1.2 },\n { x: 2, y: 1.1 },\n { x: 3, y: 1.1 },\n { x: 4, y: 1 },\n { x: 5, y: 0.9 },\n { x: 6, y: 0.8 },\n { x: 7, y: 0.8 },\n { x: 8, y: 0.7 },\n { x: 9, y: 0.7 },\n { x: 10, y: 0.6 },\n { x: 11, y: 0.6 },\n { x: 12, y: 0.5 },\n { x: 13, y: 0.5 },\n { x: 14, y: 0.5 },\n { x: 15, y: 0.4 },\n ],\n [\n { x: 0, y: 4.9 },\n { x: 1, y: 4.5 },\n { x: 2, y: 4.2 },\n { x: 3, y: 4 },\n { x: 4, y: 3.7 },\n { x: 5, y: 3.5 },\n { x: 6, y: 3.3 },\n { x: 7, y: 3.1 },\n { x: 8, y: 2.9 },\n { x: 9, y: 2.7 },\n { x: 10, y: 2.5 },\n { x: 11, y: 2.3 },\n { x: 12, y: 2.2 },\n { x: 13, y: 2 },\n { x: 14, y: 1.9 },\n { x: 15, y: 1.7 },\n ],\n [\n { x: 0, y: 6.8 },\n { x: 1, y: 6.4 },\n { x: 2, y: 5.9 },\n { x: 3, y: 5.7 },\n { x: 4, y: 5.4 },\n { x: 5, y: 5.2 },\n { x: 6, y: 4.8 },\n { x: 7, y: 4.4 },\n { x: 8, y: 4.1 },\n { x: 9, y: 3.9 },\n { x: 10, y: 3.5 },\n { x: 11, y: 3.3 },\n { x: 12, y: 3.1 },\n { x: 13, y: 3 },\n { x: 14, y: 2.9 },\n { x: 15, y: 2.6 },\n ],\n [\n { x: 0, y: 3 },\n { x: 1, y: 2.2 },\n { x: 2, y: 1.7 },\n { x: 3, y: 1.6 },\n { x: 4, y: 1.5 },\n { x: 5, y: 1.5 },\n { x: 6, y: 1.3 },\n { x: 7, y: 1.3 },\n { x: 8, y: 1.2 },\n { x: 9, y: 1.1 },\n { x: 10, y: 1 },\n { x: 11, y: 1 },\n { x: 12, y: 0.9 },\n { x: 13, y: 0.9 },\n { x: 14, y: 0.8 },\n { x: 15, y: 0.7 },\n ],\n [\n { x: 0, y: 25.2 },\n { x: 1, y: 24.5 },\n { x: 2, y: 23.5 },\n { x: 3, y: 21.9 },\n { x: 4, y: 20.8 },\n { x: 5, y: 20.5 },\n { x: 6, y: 19.5 },\n { x: 7, y: 18.6 },\n { x: 8, y: 17.6 },\n { x: 9, y: 16.5 },\n { x: 10, y: 15.3 },\n { x: 11, y: 14.7 },\n { x: 12, y: 13.8 },\n { x: 13, y: 13.4 },\n { x: 14, y: 12.8 },\n { x: 15, y: 11.7 },\n ],\n [\n { x: 0, y: 11.3 },\n { x: 1, y: 10.8 },\n { x: 2, y: 10.1 },\n { x: 3, y: 9.8 },\n { x: 4, y: 9.4 },\n { x: 5, y: 9.2 },\n { x: 6, y: 8.7 },\n { x: 7, y: 8.2 },\n { x: 8, y: 7.8 },\n { x: 9, y: 7.4 },\n { x: 10, y: 7.1 },\n { x: 11, y: 6.7 },\n { x: 12, y: 6.4 },\n { x: 13, y: 6.1 },\n { x: 14, y: 5.7 },\n { x: 15, y: 5.4 },\n ],\n [\n { x: 0, y: 22.8 },\n { x: 1, y: 23.2 },\n { x: 2, y: 23.3 },\n { x: 3, y: 23.2 },\n { x: 4, y: 23.1 },\n { x: 5, y: 23 },\n { x: 6, y: 23.3 },\n { x: 7, y: 22.6 },\n { x: 8, y: 22.3 },\n { x: 9, y: 21.8 },\n { x: 10, y: 21.7 },\n { x: 11, y: 21.2 },\n { x: 12, y: 20.8 },\n { x: 13, y: 20.2 },\n { x: 14, y: 19.8 },\n { x: 15, y: 19.2 },\n ],\n [\n { x: 0, y: 24 },\n { x: 1, y: 26.8 },\n { x: 2, y: 29.5 },\n { x: 3, y: 30.7 },\n { x: 4, y: 31.3 },\n { x: 5, y: 31.2 },\n { x: 6, y: 31.2 },\n { x: 7, y: 31.2 },\n { x: 8, y: 31.8 },\n { x: 9, y: 32.3 },\n { x: 10, y: 32.2 },\n { x: 11, y: 32 },\n { x: 12, y: 30.9 },\n { x: 13, y: 29.7 },\n { x: 14, y: 28.6 },\n { x: 15, y: 28.8 },\n ],\n [\n { x: 0, y: 0.7 },\n { x: 1, y: 0.4 },\n { x: 2, y: 0.5 },\n { x: 3, y: 1.7 },\n { x: 4, y: 3.4 },\n { x: 5, y: 4.6 },\n { x: 6, y: 6.6 },\n { x: 7, y: 9.1 },\n { x: 8, y: 10.6 },\n { x: 9, y: 12.3 },\n { x: 10, y: 14.4 },\n { x: 11, y: 16 },\n { x: 12, y: 17.8 },\n { x: 13, y: 19.3 },\n { x: 14, y: 21.1 },\n { x: 15, y: 22.3 },\n ],\n [\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: 2, y: 0.2 },\n { x: 3, y: 0.3 },\n { x: 4, y: 0.4 },\n { x: 5, y: 0.4 },\n { x: 6, y: 0.5 },\n { x: 7, y: 0.7 },\n { x: 8, y: 1 },\n { x: 9, y: 1.3 },\n { x: 10, y: 1.7 },\n { x: 11, y: 2 },\n { x: 12, y: 3.3 },\n { x: 13, y: 4.4 },\n { x: 14, y: 5.2 },\n { x: 15, y: 6.1 },\n ],\n [\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: 2, y: 0 },\n { x: 3, y: 0 },\n { x: 4, y: 0 },\n { x: 5, y: 0 },\n { x: 6, y: 0 },\n { x: 7, y: 0 },\n { x: 8, y: 0 },\n { x: 9, y: 0 },\n { x: 10, y: 0 },\n { x: 11, y: 0.2 },\n { x: 12, y: 0.3 },\n { x: 13, y: 0.5 },\n { x: 14, y: 0.5 },\n { x: 15, y: 0.8 },\n ],\n [\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: 2, y: 0 },\n { x: 3, y: 0 },\n { x: 4, y: 0 },\n { x: 5, y: 0 },\n { x: 6, y: 0 },\n { x: 7, y: 0 },\n { x: 8, y: 0 },\n { x: 9, y: 0 },\n { x: 10, y: 0 },\n { x: 11, y: 0 },\n { x: 12, y: 0 },\n { x: 13, y: 0 },\n { x: 14, y: 0.2 },\n { x: 15, y: 0.3 },\n ],\n]\n\n// Function to get the proper High value for a Series.\nconst getYHigh = (p, k) => {\n let sum = 0\n while (p >= 0) {\n sum += data[p][k].y\n p--\n }\n return sum\n}\n\n// Function to get the proper Low value for a Series.\nconst getYLow = (p, k) => {\n let sum = 0\n while (p - 1 >= 0) {\n sum += data[p - 1][k].y\n p--\n }\n return sum\n}\n\n/**\n * Fill each Area Series with the data created for them.\n */\ndata[0].forEach((point, i) => {\n version.forEach((series, index) => {\n // For the first series, only one Y value is needed.\n if (index == 0) {\n version[index].add({\n x: point.x * dataFrequency,\n y: point.y,\n })\n // Rest of the series need both the High and Low values;\n // Low is the previous Series' High value.\n } else {\n version[index].add({\n position: point.x * dataFrequency,\n high: getYHigh(index, i),\n low: getYLow(index, i),\n })\n }\n })\n})\n","url":null,"readme":"_Also known as Stacked Area Graph or Stacked Areas_\n\nThe stacked charts are a popular visual aid used for categorizing and comparing the parts of a whole using different colors to distinguish the categories.\n\nThis chart is created with custom stacking logic by using **_Area_** and **_AreaRange_** series and position each next data segment on top of the previous. Relying on characteristics and use cases of mountain series mentioned in previous examples, area is drawn on a Cartesian coordinate system and represents the quantitative data. Thus, in the example, the first data segment starts from a zero baseline and each next category would use the magnitude of previous segment as a low starting point.\n\n```javascript\n// Create one Area series to be the base.\nconst areaFirst = chart.addAreaSeries()\n\n// Create the next AreaRange series to be stacked on top of previous.\nconst areaNext1 = chart.addAreaRangeSeries()\nconst areaNext2 = chart.addAreaRangeSeries()\n```\n","image":"stackedMountains"},{"id":"lcjs-example-0105-temperatureVariations","title":"Temperature Variations JavaScript Chart","tags":["area","range","xy","date-time","legendbox"],"description":"The example shows the basic usage of Area Range series to display variation in temperature.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Area charts for Scientific use, dynamic charts, High-Performance Charts, 2D JS charts with area graphs.","src":"/*\n * LightningChartJS example that showcases a simulation of daily temperature variations.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, SolidFill, SolidLine, ColorRGBA, ColorHEX, LegendBoxBuilders, LinearGradientFill, Themes } =\n lcjs\n\n// Decide on an origin for DateTime axis.\nconst dateOrigin = new Date(2019, 3, 1)\n\n// Create a XY Chart.\nconst chart = lightningChart().ChartXY({\n // theme: Themes.darkGold\n})\nchart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\nchart.setTitle('Daily temperature range, April 2019')\n\nconst axisX = chart.getDefaultAxisX()\nconst axisY = chart.getDefaultAxisY().setTitle('Temperature (°C)').setScrollStrategy(undefined)\n\n// Daily temperature records\nconst recordRange = chart.addAreaRangeSeries()\n// Current month daily temperature variations\nconst currentRange = chart.addAreaRangeSeries()\n// ----- Series stylings\n// Temperature records fill style, gradient Red - Blue scale.\nconst recordRangeFillStyle = new LinearGradientFill({\n angle: 0,\n stops: [\n { color: ColorHEX('#0000FF9F'), offset: 0 },\n { color: ColorHEX('#FF00009F'), offset: 1 },\n ],\n})\n// Record range stroke fill style, high line\nconst recordRangeStrokeFillStyleHigh = new SolidLine().setFillStyle(new SolidFill({ color: ColorRGBA(250, 91, 70) }))\n// Record range stroke fill style, low line\nconst recordRangeStrokeFillStyleLow = new SolidLine().setFillStyle(new SolidFill({ color: ColorRGBA(63, 138, 250) }))\n// Current month temperature fill style\nconst currentRangeFillStyle = new SolidFill({ color: ColorRGBA(255, 174, 0, 200) })\n// Current range stroke fill style\nconst currentRangeStrokeFillStyle = new SolidLine().setFillStyle(new SolidFill({ color: ColorRGBA(250, 226, 105) }))\n// ----- Applying stylings\n// Record range\nrecordRange\n .setName('Temperature records range')\n .setHighFillStyle(recordRangeFillStyle)\n // Same fill style for the highlighted series\n .setHighStrokeStyle(recordRangeStrokeFillStyleHigh)\n .setLowStrokeStyle(recordRangeStrokeFillStyleLow)\n// Current range\ncurrentRange\n .setName('2019 temperatures')\n .setHighFillStyle(currentRangeFillStyle)\n .setHighStrokeStyle(currentRangeStrokeFillStyle)\n .setLowStrokeStyle(currentRangeStrokeFillStyle)\n\n// ----- Result tables settings\n// Record range\nrecordRange.setCursorResultTableFormatter((builder, series, figure, yMax, yMin) => {\n return builder\n .addRow('Temperature records range')\n .addRow('Date: ' + axisX.formatValue(figure))\n .addRow('Highest: ' + yMax.toFixed(2) + ' °C')\n .addRow('Lowest: ' + yMin.toFixed(2) + ' °C')\n})\n// Current range\ncurrentRange.setCursorResultTableFormatter((builder, series, figure, yMax, yMin) => {\n return builder\n .addRow('2019 temperatures')\n .addRow('Date: ' + axisX.formatValue(figure))\n .addRow('Highest: ' + yMax.toFixed(2) + ' °C')\n .addRow('Lowest: ' + yMin.toFixed(2) + ' °C')\n})\n// ----- Generating data\nconst randomInt = (min, max) => {\n return Math.floor(Math.random() * (max - min + 1)) + min\n}\nconst currentRangeData = []\nconst recordRangeData = []\n// Current range\nfor (let i = 0; i < 31; i++) {\n const randomPoint = () => {\n const x = i\n let yMax\n if (i > 0) {\n const previousYMax = currentRangeData[i - 1].yMax\n yMax = randomInt(previousYMax - 5, previousYMax + 5)\n } else {\n yMax = randomInt(-5, 25)\n }\n const yMin = randomInt(yMax - 5, yMax) - 5\n return {\n x,\n yMax,\n yMin,\n }\n }\n currentRangeData.push(randomPoint())\n}\n\nlet recordYMax = currentRangeData[0].yMax\nlet recordYMin = currentRangeData[0].yMin\nfor (let i = 1; i < currentRangeData.length; i++) {\n if (currentRangeData[i].yMin < recordYMin) recordYMin = currentRangeData[i].yMin\n if (currentRangeData[i].yMax > recordYMax) recordYMax = currentRangeData[i].yMax\n}\n// Set series interval\naxisY.setInterval({ start: recordYMin - 5, end: recordYMax + 5, stopAxisAfter: false })\n// ----- Generate record temperatures\nfor (let i = 0; i < 31; i++) {\n const randomPoint = () => {\n const x = i\n const yMax = randomInt(recordYMax - 2, recordYMax + 2)\n const yMin = randomInt(recordYMin - 1, recordYMin)\n return {\n x,\n yMax,\n yMin,\n }\n }\n recordRangeData.push(randomPoint())\n}\n// ----- Adding data points\nrecordRangeData.forEach((point, i) => {\n recordRange.add({ position: point.x * 24 * 60 * 60 * 1000, high: point.yMax, low: point.yMin })\n})\n\ncurrentRangeData.forEach((point, i) => {\n currentRange.add({ position: point.x * 24 * 60 * 60 * 1000, high: point.yMax, low: point.yMin })\n})\n// ----- Add legend box\nconst legendBox = chart\n .addLegendBox(LegendBoxBuilders.HorizontalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.8,\n })\n\nlegendBox.add(chart)\n","url":null,"readme":"The example shows the basic usage of Area Range series to display variation in temperature.\n\nRange charts are generally used to show variations (low & high) simultaneously in the given period.\n\n```javascript\n// Create a new ChartXY.\nconst chart = lightningChart().ChartXY()\n\n// Add an area series with bipolar direction using default X and Y axes.\nconst areaRange = chart.addAreaRangeSeries()\n```\n\nThe series accepts **_AreaPoint_** type of points either as an object in format \n`{ position: number, high: number, low: number }`,\n\n```javascript\nseries.add({ position: 20, high: 45, low: -20 })\n```\n\nor via a factory that should be additionally imported.\n\n```javascript\nseries.add(AreaPoint(20, 45, -20))\n```\n\nAny number of points can be added with a single call.\n\n```javascript\n// Single point.\nseries.add({ position: 20, high: 45, low: -20 })\n\n// Multiple points at once.\nseries.add([\n { position: 20, high: 45, low: -20 },\n { position: 40, high: 95, low: 10 },\n { position: 60, high: 25, low: 60 },\n])\n```\n","image":"temperatureVariations"},{"id":"lcjs-example-0150-ecg","title":"JavaScript ECG Chart","tags":["line","xy","realtime","datapattern","datacleaning"],"description":"This example shows a simulated electrocardiogram(ECG)-signal by using a Line Series in a XY Chart.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: High-Performance Charts, Plot millions of data points in real-time. ECG Charts, XY Charts for real-time monitoring.","src":"/*\n * LightningChartJS example that showcases a simulated ECG signal.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisScrollStrategies, Themes } = lcjs\n\n// Import data-generators from 'xydata'-library.\nconst { createSampledDataGenerator } = xydata\n\n// Create a XY Chart.\nconst chart = lightningChart()\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('ECG')\n\n// Create line series optimized for regular progressive X data.\nconst series = chart\n .addLineSeries({\n dataPattern: {\n // pattern: 'ProgressiveX' => Each consecutive data point has increased X coordinate.\n pattern: 'ProgressiveX',\n // regularProgressiveStep: true => The X step between each consecutive data point is regular (for example, always `1.0`).\n regularProgressiveStep: true,\n },\n })\n // Destroy automatically outscrolled data (old data becoming out of scrolling axis range).\n // Actual data cleaning can happen at any convenient time (not necessarily immediately when data goes out of range).\n .setDataCleaning({ minDataPointCount: 10000 })\n\n// Setup view nicely.\nchart\n .getDefaultAxisY()\n .setTitle('mV')\n .setInterval({ start: -1600, end: 1000, stopAxisAfter: false })\n .setScrollStrategy(AxisScrollStrategies.expansion)\n\nchart\n .getDefaultAxisX()\n .setTitle('milliseconds')\n .setInterval({ start: 0, end: 2500, stopAxisAfter: false })\n .setScrollStrategy(AxisScrollStrategies.progressive)\n\n// Points that are used to generate a continuous stream of data.\nconst point = [\n { x: 2, y: 81 },\n { x: 3, y: 83 },\n { x: 4, y: 88 },\n { x: 5, y: 98 },\n { x: 6, y: 92 },\n { x: 7, y: 85 },\n { x: 8, y: 73 },\n { x: 9, y: 71 },\n { x: 10, y: 70 },\n { x: 11, y: 83 },\n { x: 12, y: 73 },\n { x: 13, y: 79 },\n { x: 14, y: 84 },\n { x: 15, y: 78 },\n { x: 16, y: 67 },\n { x: 17, y: 71 },\n { x: 18, y: 76 },\n { x: 19, y: 77 },\n { x: 20, y: 64 },\n { x: 21, y: 53 },\n { x: 22, y: 0 },\n { x: 23, y: 41 },\n { x: 24, y: 51 },\n { x: 25, y: 3 },\n { x: 26, y: 31 },\n { x: 27, y: 37 },\n { x: 28, y: 35 },\n { x: 29, y: 48 },\n { x: 30, y: 40 },\n { x: 31, y: 42 },\n { x: 32, y: 42 },\n { x: 33, y: 32 },\n { x: 34, y: 21 },\n { x: 35, y: 41 },\n { x: 36, y: 48 },\n { x: 37, y: 47 },\n { x: 38, y: 45 },\n { x: 39, y: 42 },\n { x: 40, y: 28 },\n { x: 41, y: 15 },\n { x: 42, y: 1 },\n { x: 43, y: -12 },\n { x: 44, y: -4 },\n { x: 45, y: 15 },\n { x: 46, y: 23 },\n { x: 47, y: 22 },\n { x: 48, y: 40 },\n { x: 49, y: 46 },\n { x: 50, y: 49 },\n { x: 51, y: 48 },\n { x: 52, y: 43 },\n { x: 53, y: 52 },\n { x: 54, y: 49 },\n { x: 55, y: 44 },\n { x: 56, y: 41 },\n { x: 57, y: 41 },\n { x: 58, y: 45 },\n { x: 59, y: 57 },\n { x: 60, y: 67 },\n { x: 61, y: 65 },\n { x: 62, y: 58 },\n { x: 63, y: 47 },\n { x: 64, y: 34 },\n { x: 65, y: 35 },\n { x: 66, y: 23 },\n { x: 67, y: 11 },\n { x: 68, y: 7 },\n { x: 69, y: 14 },\n { x: 70, y: 23 },\n { x: 71, y: 18 },\n { x: 72, y: 31 },\n { x: 73, y: 35 },\n { x: 74, y: 44 },\n { x: 75, y: 49 },\n { x: 76, y: 34 },\n { x: 77, y: 7 },\n { x: 78, y: -3 },\n { x: 79, y: -8 },\n { x: 80, y: -11 },\n { x: 81, y: -20 },\n { x: 82, y: -28 },\n { x: 83, y: -4 },\n { x: 84, y: 15 },\n { x: 85, y: 20 },\n { x: 86, y: 26 },\n { x: 87, y: 26 },\n { x: 88, y: 24 },\n { x: 89, y: 34 },\n { x: 90, y: 35 },\n { x: 91, y: 30 },\n { x: 92, y: 22 },\n { x: 93, y: 12 },\n { x: 94, y: 15 },\n { x: 95, y: 18 },\n { x: 96, y: 24 },\n { x: 97, y: 18 },\n { x: 98, y: 26 },\n { x: 99, y: 25 },\n { x: 100, y: 13 },\n { x: 101, y: 2 },\n { x: 102, y: 1 },\n { x: 103, y: -10 },\n { x: 104, y: -10 },\n { x: 105, y: -4 },\n { x: 106, y: 8 },\n { x: 107, y: 15 },\n { x: 108, y: 15 },\n { x: 109, y: 15 },\n { x: 110, y: 15 },\n { x: 111, y: 18 },\n { x: 112, y: 19 },\n { x: 113, y: 3 },\n { x: 114, y: -12 },\n { x: 115, y: -14 },\n { x: 116, y: -10 },\n { x: 117, y: -22 },\n { x: 118, y: -24 },\n { x: 119, y: -29 },\n { x: 120, y: -21 },\n { x: 121, y: -19 },\n { x: 122, y: -26 },\n { x: 123, y: -9 },\n { x: 124, y: -10 },\n { x: 125, y: -6 },\n { x: 126, y: -8 },\n { x: 127, y: -31 },\n { x: 128, y: -52 },\n { x: 129, y: -57 },\n { x: 130, y: -40 },\n { x: 131, y: -20 },\n { x: 132, y: 7 },\n { x: 133, y: 14 },\n { x: 134, y: 10 },\n { x: 135, y: 6 },\n { x: 136, y: 12 },\n { x: 137, y: -5 },\n { x: 138, y: -2 },\n { x: 139, y: 9 },\n { x: 140, y: 23 },\n { x: 141, y: 36 },\n { x: 142, y: 52 },\n { x: 143, y: 61 },\n { x: 144, y: 56 },\n { x: 145, y: 48 },\n { x: 146, y: 48 },\n { x: 147, y: 38 },\n { x: 148, y: 29 },\n { x: 149, y: 33 },\n { x: 150, y: 20 },\n { x: 151, y: 1 },\n { x: 152, y: -7 },\n { x: 153, y: -9 },\n { x: 154, y: -4 },\n { x: 155, y: -12 },\n { x: 156, y: -3 },\n { x: 157, y: 5 },\n { x: 158, y: -3 },\n { x: 159, y: 12 },\n { x: 160, y: 6 },\n { x: 161, y: -10 },\n { x: 162, y: -2 },\n { x: 163, y: 15 },\n { x: 164, y: 17 },\n { x: 165, y: 21 },\n { x: 166, y: 22 },\n { x: 167, y: 15 },\n { x: 168, y: 16 },\n { x: 169, y: 1 },\n { x: 170, y: -2 },\n { x: 171, y: -9 },\n { x: 172, y: -16 },\n { x: 173, y: -18 },\n { x: 174, y: -15 },\n { x: 175, y: -4 },\n { x: 176, y: 0 },\n { x: 177, y: -1 },\n { x: 178, y: -1 },\n { x: 179, y: -3 },\n { x: 180, y: -12 },\n { x: 181, y: -15 },\n { x: 182, y: -13 },\n { x: 183, y: -16 },\n { x: 184, y: -29 },\n { x: 185, y: -34 },\n { x: 186, y: -28 },\n { x: 187, y: -29 },\n { x: 188, y: -27 },\n { x: 189, y: -25 },\n { x: 190, y: -25 },\n { x: 191, y: -33 },\n { x: 192, y: -38 },\n { x: 193, y: -36 },\n { x: 194, y: -12 },\n { x: 195, y: -7 },\n { x: 196, y: -20 },\n { x: 197, y: -21 },\n { x: 198, y: -14 },\n { x: 199, y: -7 },\n { x: 200, y: 7 },\n { x: 201, y: 14 },\n { x: 202, y: 18 },\n { x: 203, y: 28 },\n { x: 204, y: 27 },\n { x: 205, y: 38 },\n { x: 206, y: 33 },\n { x: 207, y: 24 },\n { x: 208, y: 20 },\n { x: 209, y: 15 },\n { x: 210, y: 6 },\n { x: 211, y: 0 },\n { x: 212, y: -2 },\n { x: 213, y: 2 },\n { x: 214, y: 0 },\n { x: 215, y: -2 },\n { x: 216, y: -12 },\n { x: 217, y: -10 },\n { x: 218, y: 20 },\n { x: 219, y: 41 },\n { x: 220, y: 35 },\n { x: 221, y: 27 },\n { x: 222, y: 12 },\n { x: 223, y: -1 },\n { x: 224, y: -15 },\n { x: 225, y: -20 },\n { x: 226, y: -23 },\n { x: 227, y: 0 },\n { x: 228, y: 24 },\n { x: 229, y: 36 },\n { x: 230, y: 52 },\n { x: 231, y: 61 },\n { x: 232, y: 67 },\n { x: 233, y: 73 },\n { x: 234, y: 88 },\n { x: 235, y: 85 },\n { x: 236, y: 71 },\n { x: 237, y: 74 },\n { x: 238, y: 67 },\n { x: 239, y: 41 },\n { x: 240, y: 26 },\n { x: 241, y: 13 },\n { x: 242, y: 10 },\n { x: 243, y: 1 },\n { x: 244, y: -10 },\n { x: 245, y: -26 },\n { x: 246, y: -33 },\n { x: 247, y: -23 },\n { x: 248, y: -25 },\n { x: 249, y: -24 },\n { x: 250, y: -24 },\n { x: 251, y: -28 },\n { x: 252, y: -24 },\n { x: 253, y: -25 },\n { x: 254, y: -21 },\n { x: 255, y: -8 },\n { x: 256, y: -5 },\n { x: 257, y: -4 },\n { x: 258, y: -13 },\n { x: 259, y: -29 },\n { x: 260, y: -42 },\n { x: 261, y: -52 },\n { x: 262, y: -52 },\n { x: 263, y: -40 },\n { x: 264, y: -40 },\n { x: 265, y: -34 },\n { x: 266, y: -28 },\n { x: 267, y: -30 },\n { x: 268, y: -37 },\n { x: 269, y: -40 },\n { x: 270, y: -38 },\n { x: 271, y: -41 },\n { x: 272, y: -39 },\n { x: 273, y: -46 },\n { x: 274, y: -48 },\n { x: 275, y: -48 },\n { x: 276, y: -40 },\n { x: 277, y: -40 },\n { x: 278, y: -45 },\n { x: 279, y: -57 },\n { x: 280, y: -61 },\n { x: 281, y: -63 },\n { x: 282, y: -78 },\n { x: 283, y: -81 },\n { x: 284, y: -87 },\n { x: 285, y: -82 },\n { x: 286, y: -88 },\n { x: 287, y: -100 },\n { x: 288, y: -100 },\n { x: 289, y: -97 },\n { x: 290, y: -104 },\n { x: 291, y: -102 },\n { x: 292, y: -79 },\n { x: 293, y: -72 },\n { x: 294, y: -72 },\n { x: 295, y: -63 },\n { x: 296, y: -35 },\n { x: 297, y: -22 },\n { x: 298, y: -10 },\n { x: 299, y: 2 },\n { x: 300, y: 5 },\n { x: 301, y: 9 },\n { x: 302, y: -10 },\n { x: 303, y: -16 },\n { x: 304, y: -16 },\n { x: 305, y: -10 },\n { x: 306, y: -4 },\n { x: 307, y: -1 },\n { x: 308, y: 2 },\n { x: 309, y: 14 },\n { x: 310, y: 21 },\n { x: 311, y: 23 },\n { x: 312, y: 17 },\n { x: 313, y: 13 },\n { x: 314, y: 10 },\n { x: 315, y: 0 },\n { x: 316, y: -6 },\n { x: 317, y: -5 },\n { x: 318, y: 11 },\n { x: 319, y: 22 },\n { x: 320, y: 28 },\n { x: 321, y: 31 },\n { x: 322, y: 33 },\n { x: 323, y: 29 },\n { x: 324, y: 26 },\n { x: 325, y: 27 },\n { x: 326, y: 28 },\n { x: 327, y: 26 },\n { x: 328, y: 35 },\n { x: 329, y: 44 },\n { x: 330, y: 52 },\n { x: 331, y: 80 },\n { x: 332, y: 100 },\n { x: 333, y: 101 },\n { x: 334, y: 111 },\n { x: 335, y: 120 },\n { x: 336, y: 128 },\n { x: 337, y: 150 },\n { x: 338, y: 174 },\n { x: 339, y: 201 },\n { x: 340, y: 232 },\n { x: 341, y: 278 },\n { x: 342, y: 350 },\n { x: 343, y: 422 },\n { x: 344, y: 510 },\n { x: 345, y: 580 },\n { x: 346, y: 662 },\n { x: 347, y: 738 },\n { x: 348, y: 806 },\n { x: 349, y: 869 },\n { x: 350, y: 907 },\n { x: 351, y: 939 },\n { x: 352, y: 954 },\n { x: 353, y: 971 },\n { x: 354, y: 961 },\n { x: 355, y: 912 },\n { x: 356, y: 826 },\n { x: 357, y: 713 },\n { x: 358, y: 553 },\n { x: 359, y: 382 },\n { x: 360, y: 166 },\n { x: 361, y: -56 },\n { x: 362, y: -275 },\n { x: 363, y: -518 },\n { x: 364, y: -824 },\n { x: 365, y: -1122 },\n { x: 366, y: -1325 },\n { x: 367, y: -1453 },\n { x: 368, y: -1507 },\n { x: 369, y: -1547 },\n { x: 370, y: -1568 },\n { x: 371, y: -1559 },\n { x: 372, y: -1553 },\n { x: 373, y: -1537 },\n { x: 374, y: -1499 },\n { x: 375, y: -1447 },\n { x: 376, y: -1424 },\n { x: 377, y: -1398 },\n { x: 378, y: -1352 },\n { x: 379, y: -1291 },\n { x: 380, y: -1189 },\n { x: 381, y: -1085 },\n { x: 382, y: -977 },\n { x: 383, y: -852 },\n { x: 384, y: -736 },\n { x: 385, y: -649 },\n { x: 386, y: -603 },\n { x: 387, y: -576 },\n { x: 388, y: -454 },\n { x: 389, y: -443 },\n { x: 390, y: -332 },\n { x: 391, y: -264 },\n { x: 392, y: -209 },\n { x: 393, y: -153 },\n { x: 394, y: -105 },\n { x: 395, y: -61 },\n { x: 396, y: -16 },\n { x: 397, y: 37 },\n { x: 398, y: 96 },\n { x: 399, y: 150 },\n { x: 400, y: 198 },\n { x: 401, y: 238 },\n { x: 402, y: 265 },\n { x: 403, y: 294 },\n { x: 404, y: 324 },\n { x: 405, y: 351 },\n { x: 406, y: 367 },\n { x: 407, y: 376 },\n { x: 408, y: 378 },\n { x: 409, y: 391 },\n { x: 410, y: 406 },\n { x: 411, y: 427 },\n { x: 412, y: 433 },\n { x: 413, y: 448 },\n { x: 414, y: 440 },\n { x: 415, y: 429 },\n { x: 416, y: 429 },\n { x: 417, y: 420 },\n { x: 418, y: 413 },\n { x: 419, y: 420 },\n { x: 420, y: 411 },\n { x: 421, y: 408 },\n { x: 422, y: 404 },\n { x: 423, y: 398 },\n { x: 424, y: 401 },\n { x: 425, y: 412 },\n { x: 426, y: 389 },\n { x: 427, y: 367 },\n { x: 428, y: 357 },\n { x: 429, y: 359 },\n { x: 430, y: 351 },\n { x: 431, y: 345 },\n { x: 432, y: 341 },\n { x: 433, y: 345 },\n { x: 434, y: 346 },\n { x: 435, y: 340 },\n { x: 436, y: 334 },\n { x: 437, y: 323 },\n { x: 438, y: 319 },\n { x: 439, y: 314 },\n { x: 440, y: 284 },\n { x: 441, y: 263 },\n { x: 442, y: 261 },\n { x: 443, y: 248 },\n { x: 444, y: 234 },\n { x: 445, y: 236 },\n { x: 446, y: 236 },\n { x: 447, y: 248 },\n { x: 448, y: 252 },\n { x: 449, y: 251 },\n { x: 450, y: 237 },\n { x: 451, y: 230 },\n { x: 452, y: 238 },\n { x: 453, y: 227 },\n { x: 454, y: 207 },\n { x: 455, y: 188 },\n { x: 456, y: 163 },\n { x: 457, y: 155 },\n { x: 458, y: 152 },\n { x: 459, y: 153 },\n { x: 460, y: 156 },\n { x: 461, y: 171 },\n { x: 462, y: 162 },\n { x: 463, y: 155 },\n { x: 464, y: 148 },\n { x: 465, y: 139 },\n { x: 466, y: 154 },\n { x: 467, y: 158 },\n { x: 468, y: 155 },\n { x: 469, y: 159 },\n { x: 470, y: 147 },\n { x: 471, y: 143 },\n { x: 472, y: 133 },\n { x: 473, y: 118 },\n { x: 474, y: 118 },\n { x: 475, y: 121 },\n { x: 476, y: 130 },\n { x: 477, y: 133 },\n { x: 478, y: 133 },\n { x: 479, y: 128 },\n { x: 480, y: 120 },\n { x: 481, y: 97 },\n { x: 482, y: 91 },\n { x: 483, y: 88 },\n { x: 484, y: 85 },\n { x: 485, y: 84 },\n { x: 486, y: 74 },\n { x: 487, y: 44 },\n { x: 488, y: 32 },\n { x: 489, y: 10 },\n { x: 490, y: -2 },\n { x: 491, y: -9 },\n { x: 492, y: -4 },\n { x: 493, y: -5 },\n { x: 494, y: 1 },\n { x: 495, y: 5 },\n { x: 496, y: 21 },\n { x: 497, y: 41 },\n { x: 498, y: 44 },\n { x: 499, y: 39 },\n { x: 500, y: 24 },\n { x: 501, y: 22 },\n { x: 502, y: 37 },\n { x: 503, y: 44 },\n { x: 504, y: 35 },\n { x: 505, y: 31 },\n { x: 506, y: 35 },\n { x: 507, y: 20 },\n { x: 508, y: 15 },\n { x: 509, y: 7 },\n { x: 510, y: 4 },\n { x: 511, y: 9 },\n { x: 512, y: 0 },\n { x: 513, y: -15 },\n { x: 514, y: -21 },\n { x: 515, y: -31 },\n { x: 516, y: -32 },\n { x: 517, y: -48 },\n { x: 518, y: -53 },\n { x: 519, y: -29 },\n { x: 520, y: -14 },\n { x: 521, y: -6 },\n { x: 522, y: 1 },\n { x: 523, y: 4 },\n { x: 524, y: -4 },\n { x: 525, y: -3 },\n { x: 526, y: 2 },\n { x: 527, y: 1 },\n { x: 528, y: -12 },\n { x: 529, y: -37 },\n { x: 530, y: -29 },\n { x: 531, y: -25 },\n { x: 532, y: -18 },\n { x: 533, y: -31 },\n { x: 534, y: -42 },\n { x: 535, y: -26 },\n { x: 536, y: -22 },\n { x: 537, y: -18 },\n { x: 538, y: -25 },\n { x: 539, y: -16 },\n { x: 540, y: -13 },\n { x: 541, y: -23 },\n { x: 542, y: -15 },\n { x: 543, y: 0 },\n { x: 544, y: 8 },\n { x: 545, y: 14 },\n { x: 546, y: 34 },\n { x: 547, y: 39 },\n { x: 548, y: 33 },\n { x: 549, y: 22 },\n { x: 550, y: 18 },\n { x: 551, y: 20 },\n { x: 552, y: 23 },\n { x: 553, y: 16 },\n { x: 554, y: 11 },\n { x: 555, y: 1 },\n { x: 556, y: 6 },\n { x: 557, y: 11 },\n { x: 558, y: 7 },\n { x: 559, y: 14 },\n { x: 560, y: 22 },\n { x: 561, y: 14 },\n { x: 562, y: 14 },\n { x: 563, y: 5 },\n { x: 564, y: -6 },\n { x: 565, y: -14 },\n { x: 566, y: -27 },\n { x: 567, y: -28 },\n { x: 568, y: -21 },\n { x: 569, y: -16 },\n { x: 570, y: -8 },\n { x: 571, y: -5 },\n { x: 572, y: -8 },\n { x: 573, y: 3 },\n { x: 574, y: 22 },\n { x: 575, y: 29 },\n { x: 576, y: 27 },\n { x: 577, y: 23 },\n { x: 578, y: 22 },\n { x: 579, y: 25 },\n { x: 580, y: 34 },\n { x: 581, y: 36 },\n { x: 582, y: 39 },\n { x: 583, y: 44 },\n { x: 584, y: 55 },\n { x: 585, y: 54 },\n { x: 586, y: 44 },\n { x: 587, y: 39 },\n { x: 588, y: 41 },\n { x: 589, y: 49 },\n { x: 590, y: 44 },\n { x: 591, y: 33 },\n { x: 592, y: 27 },\n { x: 593, y: 23 },\n { x: 594, y: 20 },\n { x: 595, y: 18 },\n { x: 596, y: 20 },\n { x: 597, y: 19 },\n { x: 598, y: 8 },\n { x: 599, y: 7 },\n { x: 600, y: 2 },\n { x: 601, y: 4 },\n { x: 602, y: -3 },\n { x: 603, y: -16 },\n { x: 604, y: -16 },\n { x: 605, y: -19 },\n { x: 606, y: -28 },\n { x: 607, y: -37 },\n { x: 608, y: -26 },\n { x: 609, y: -14 },\n { x: 610, y: -31 },\n { x: 611, y: -45 },\n { x: 612, y: -45 },\n { x: 613, y: -43 },\n { x: 614, y: -50 },\n { x: 615, y: -59 },\n { x: 616, y: -73 },\n { x: 617, y: -79 },\n { x: 618, y: -88 },\n { x: 619, y: -92 },\n { x: 620, y: -95 },\n { x: 621, y: -101 },\n { x: 622, y: -104 },\n { x: 623, y: -124 },\n { x: 624, y: -150 },\n { x: 625, y: -152 },\n { x: 626, y: -153 },\n { x: 627, y: -174 },\n { x: 628, y: -205 },\n { x: 629, y: -215 },\n { x: 630, y: -211 },\n { x: 631, y: -214 },\n { x: 632, y: -211 },\n { x: 633, y: -222 },\n { x: 634, y: -218 },\n { x: 635, y: -211 },\n { x: 636, y: -200 },\n { x: 637, y: -200 },\n { x: 638, y: -196 },\n { x: 639, y: -184 },\n { x: 640, y: -189 },\n { x: 641, y: -202 },\n { x: 642, y: -203 },\n { x: 643, y: -202 },\n { x: 644, y: -200 },\n { x: 645, y: -205 },\n { x: 646, y: -211 },\n { x: 647, y: -226 },\n { x: 648, y: -241 },\n { x: 649, y: -242 },\n { x: 650, y: -252 },\n { x: 651, y: -273 },\n { x: 652, y: -279 },\n { x: 653, y: -288 },\n { x: 654, y: -291 },\n { x: 655, y: -289 },\n { x: 656, y: -286 },\n { x: 657, y: -269 },\n { x: 658, y: -266 },\n { x: 659, y: -280 },\n { x: 660, y: -287 },\n { x: 661, y: -277 },\n { x: 662, y: -260 },\n { x: 663, y: -271 },\n { x: 664, y: -269 },\n { x: 665, y: -271 },\n { x: 666, y: -287 },\n { x: 667, y: -299 },\n { x: 668, y: -297 },\n { x: 669, y: -288 },\n { x: 670, y: -287 },\n { x: 671, y: -287 },\n { x: 672, y: -289 },\n { x: 673, y: -287 },\n { x: 674, y: -286 },\n { x: 675, y: -276 },\n { x: 676, y: -271 },\n { x: 677, y: -266 },\n { x: 678, y: -260 },\n { x: 679, y: -252 },\n { x: 680, y: -236 },\n { x: 681, y: -223 },\n { x: 682, y: -215 },\n { x: 683, y: -213 },\n { x: 684, y: -224 },\n { x: 685, y: -230 },\n { x: 686, y: -220 },\n { x: 687, y: -209 },\n { x: 688, y: -207 },\n { x: 689, y: -194 },\n { x: 690, y: -182 },\n { x: 691, y: -181 },\n { x: 692, y: -186 },\n { x: 693, y: -189 },\n { x: 694, y: -186 },\n { x: 695, y: -174 },\n { x: 696, y: -167 },\n { x: 697, y: -161 },\n { x: 698, y: -158 },\n { x: 699, y: -155 },\n { x: 700, y: -153 },\n { x: 701, y: -139 },\n { x: 702, y: -135 },\n { x: 703, y: -130 },\n { x: 704, y: -129 },\n { x: 705, y: -116 },\n { x: 706, y: -107 },\n { x: 707, y: -98 },\n { x: 708, y: -84 },\n { x: 709, y: -85 },\n { x: 710, y: -92 },\n { x: 711, y: -100 },\n { x: 712, y: -105 },\n { x: 713, y: -97 },\n { x: 714, y: -81 },\n { x: 715, y: -72 },\n { x: 716, y: -58 },\n { x: 717, y: -49 },\n { x: 718, y: -35 },\n { x: 719, y: -33 },\n { x: 720, y: -28 },\n { x: 721, y: -13 },\n { x: 722, y: -7 },\n { x: 723, y: -9 },\n { x: 724, y: -6 },\n { x: 725, y: 10 },\n { x: 726, y: 22 },\n { x: 727, y: 16 },\n { x: 728, y: 5 },\n { x: 729, y: -12 },\n { x: 730, y: -12 },\n { x: 731, y: 1 },\n { x: 732, y: 6 },\n { x: 733, y: 17 },\n { x: 734, y: 41 },\n { x: 735, y: 52 },\n { x: 736, y: 54 },\n { x: 737, y: 57 },\n { x: 738, y: 63 },\n { x: 739, y: 81 },\n { x: 740, y: 96 },\n { x: 741, y: 107 },\n { x: 742, y: 118 },\n { x: 743, y: 133 },\n { x: 744, y: 123 },\n { x: 745, y: 121 },\n { x: 746, y: 129 },\n { x: 747, y: 128 },\n { x: 748, y: 127 },\n { x: 749, y: 112 },\n { x: 750, y: 89 },\n { x: 751, y: 0 },\n { x: 752, y: 123 },\n { x: 753, y: 42 },\n { x: 754, y: 98 },\n { x: 755, y: 109 },\n { x: 756, y: 109 },\n { x: 757, y: 108 },\n { x: 758, y: 113 },\n { x: 759, y: 121 },\n { x: 760, y: 119 },\n { x: 761, y: 119 },\n { x: 762, y: 114 },\n { x: 763, y: 112 },\n { x: 764, y: 109 },\n { x: 765, y: 107 },\n { x: 766, y: 105 },\n { x: 767, y: 114 },\n { x: 768, y: 122 },\n { x: 769, y: 130 },\n { x: 770, y: 134 },\n { x: 771, y: 121 },\n { x: 772, y: 113 },\n { x: 773, y: 100 },\n { x: 774, y: 94 },\n { x: 775, y: 114 },\n { x: 776, y: 112 },\n { x: 777, y: 108 },\n { x: 778, y: 116 },\n { x: 779, y: 114 },\n { x: 780, y: 112 },\n { x: 781, y: 118 },\n { x: 782, y: 119 },\n { x: 783, y: 116 },\n { x: 784, y: 109 },\n { x: 785, y: 110 },\n { x: 786, y: 108 },\n { x: 787, y: 113 },\n { x: 788, y: 116 },\n { x: 789, y: 118 },\n { x: 790, y: 107 },\n { x: 791, y: 103 },\n { x: 792, y: 109 },\n { x: 793, y: 110 },\n { x: 794, y: 103 },\n { x: 795, y: 106 },\n { x: 796, y: 104 },\n { x: 797, y: 93 },\n { x: 798, y: 86 },\n { x: 799, y: 77 },\n { x: 800, y: 83 },\n { x: 801, y: 87 },\n { x: 802, y: 80 },\n { x: 803, y: 95 },\n { x: 804, y: 100 },\n { x: 805, y: 88 },\n { x: 806, y: 102 },\n { x: 807, y: 87 },\n { x: 808, y: 77 },\n { x: 809, y: 88 },\n { x: 810, y: 81 },\n { x: 811, y: 71 },\n { x: 812, y: 59 },\n { x: 813, y: 61 },\n { x: 814, y: 67 },\n { x: 815, y: 76 },\n { x: 816, y: 91 },\n { x: 817, y: 94 },\n { x: 818, y: 93 },\n { x: 819, y: 89 },\n { x: 820, y: 94 },\n { x: 821, y: 98 },\n { x: 822, y: 103 },\n { x: 823, y: 95 },\n { x: 824, y: 83 },\n { x: 825, y: 89 },\n { x: 826, y: 88 },\n { x: 827, y: 96 },\n { x: 828, y: 97 },\n { x: 829, y: 97 },\n { x: 830, y: 92 },\n { x: 831, y: 88 },\n { x: 832, y: 86 },\n { x: 833, y: 84 },\n { x: 834, y: 84 },\n { x: 835, y: 76 },\n { x: 836, y: 65 },\n { x: 837, y: 52 },\n { x: 838, y: 45 },\n { x: 839, y: 47 },\n { x: 840, y: 36 },\n { x: 841, y: 33 },\n { x: 842, y: 46 },\n { x: 843, y: 46 },\n { x: 844, y: 57 },\n { x: 845, y: 53 },\n { x: 846, y: 52 },\n { x: 847, y: 56 },\n { x: 848, y: 61 },\n { x: 849, y: 64 },\n { x: 850, y: 65 },\n { x: 851, y: 59 },\n { x: 852, y: 55 },\n { x: 853, y: 60 },\n { x: 854, y: 59 },\n { x: 855, y: 61 },\n { x: 856, y: 55 },\n { x: 857, y: 51 },\n { x: 858, y: 48 },\n { x: 859, y: 46 },\n { x: 860, y: 49 },\n { x: 861, y: 47 },\n { x: 862, y: 46 },\n { x: 863, y: 44 },\n { x: 864, y: 43 },\n { x: 865, y: 46 },\n { x: 866, y: 47 },\n { x: 867, y: 45 },\n { x: 868, y: 28 },\n { x: 869, y: 17 },\n { x: 870, y: 20 },\n { x: 871, y: 24 },\n { x: 872, y: 22 },\n { x: 873, y: 38 },\n { x: 874, y: 29 },\n { x: 875, y: 23 },\n { x: 876, y: 23 },\n { x: 877, y: 9 },\n { x: 878, y: 1 },\n { x: 879, y: 15 },\n { x: 880, y: 32 },\n { x: 881, y: 38 },\n { x: 882, y: 37 },\n { x: 883, y: 38 },\n { x: 884, y: 31 },\n { x: 885, y: 18 },\n { x: 886, y: 11 },\n { x: 887, y: 5 },\n { x: 888, y: 5 },\n { x: 889, y: -1 },\n { x: 890, y: -6 },\n { x: 891, y: -8 },\n { x: 892, y: -6 },\n { x: 893, y: 5 },\n { x: 894, y: 14 },\n { x: 895, y: 8 },\n { x: 896, y: 21 },\n { x: 897, y: 35 },\n { x: 898, y: 35 },\n { x: 899, y: 32 },\n { x: 900, y: 26 },\n { x: 901, y: 28 },\n { x: 902, y: 26 },\n { x: 903, y: 24 },\n { x: 904, y: 23 },\n { x: 905, y: 28 },\n { x: 906, y: 26 },\n { x: 907, y: 27 },\n { x: 908, y: 23 },\n { x: 909, y: 32 },\n { x: 910, y: 30 },\n { x: 911, y: 19 },\n { x: 912, y: 16 },\n { x: 913, y: 25 },\n { x: 914, y: 32 },\n { x: 915, y: 20 },\n { x: 916, y: 12 },\n { x: 917, y: 8 },\n { x: 918, y: 7 },\n { x: 919, y: 14 },\n { x: 920, y: 14 },\n { x: 921, y: 11 },\n { x: 922, y: 15 },\n { x: 923, y: 4 },\n { x: 924, y: -5 },\n { x: 925, y: -3 },\n { x: 926, y: -3 },\n { x: 927, y: -11 },\n { x: 928, y: -2 },\n { x: 929, y: 18 },\n { x: 930, y: 11 },\n { x: 931, y: -2 },\n { x: 932, y: 1 },\n { x: 933, y: -9 },\n { x: 934, y: -21 },\n { x: 935, y: -13 },\n { x: 936, y: -16 },\n { x: 937, y: -4 },\n { x: 938, y: 15 },\n { x: 939, y: 31 },\n { x: 940, y: 55 },\n { x: 941, y: 52 },\n { x: 942, y: 35 },\n { x: 943, y: 23 },\n { x: 944, y: 24 },\n { x: 945, y: 20 },\n { x: 946, y: 19 },\n { x: 947, y: 18 },\n { x: 948, y: 13 },\n { x: 949, y: 6 },\n { x: 950, y: 7 },\n { x: 951, y: 12 },\n { x: 952, y: 12 },\n { x: 953, y: 3 },\n { x: 954, y: 2 },\n { x: 955, y: -4 },\n { x: 956, y: -11 },\n { x: 957, y: -12 },\n { x: 958, y: -9 },\n { x: 959, y: -17 },\n { x: 960, y: -6 },\n { x: 961, y: 1 },\n { x: 962, y: -2 },\n { x: 963, y: -6 },\n { x: 964, y: -18 },\n { x: 965, y: -17 },\n { x: 966, y: -14 },\n { x: 967, y: -13 },\n { x: 968, y: -11 },\n { x: 969, y: 9 },\n { x: 970, y: 9 },\n { x: 971, y: 2 },\n { x: 972, y: -2 },\n { x: 973, y: -14 },\n { x: 974, y: -27 },\n { x: 975, y: -24 },\n { x: 976, y: -16 },\n { x: 977, y: -10 },\n { x: 978, y: -3 },\n { x: 979, y: 2 },\n { x: 980, y: 7 },\n { x: 981, y: 16 },\n { x: 982, y: 29 },\n { x: 983, y: 40 },\n { x: 984, y: 47 },\n { x: 985, y: 46 },\n { x: 986, y: 30 },\n { x: 987, y: 19 },\n { x: 988, y: 20 },\n { x: 989, y: 21 },\n { x: 990, y: 22 },\n { x: 991, y: 12 },\n { x: 992, y: 0 },\n { x: 993, y: -6 },\n { x: 994, y: -6 },\n { x: 995, y: -11 },\n { x: 996, y: -9 },\n { x: 997, y: -5 },\n { x: 998, y: -9 },\n { x: 999, y: -15 },\n { x: 1000, y: -18 },\n { x: 1001, y: -21 },\n { x: 1002, y: -19 },\n { x: 1003, y: -27 },\n { x: 1004, y: -31 },\n { x: 1005, y: -32 },\n { x: 1006, y: -35 },\n { x: 1007, y: -31 },\n { x: 1008, y: -26 },\n { x: 1009, y: -26 },\n { x: 1010, y: -19 },\n { x: 1011, y: -6 },\n { x: 1012, y: 0 },\n { x: 1013, y: -3 },\n { x: 1014, y: -16 },\n { x: 1015, y: -16 },\n { x: 1016, y: -3 },\n { x: 1017, y: 5 },\n { x: 1018, y: 13 },\n { x: 1019, y: 6 },\n { x: 1020, y: 9 },\n { x: 1021, y: 18 },\n { x: 1022, y: 40 },\n { x: 1023, y: 54 },\n { x: 1024, y: 64 },\n { x: 1025, y: 68 },\n { x: 1026, y: 57 },\n { x: 1027, y: 47 },\n { x: 1028, y: 41 },\n { x: 1029, y: 41 },\n { x: 1030, y: 50 },\n { x: 1031, y: 54 },\n { x: 1032, y: 35 },\n { x: 1033, y: 33 },\n { x: 1034, y: 33 },\n { x: 1035, y: 27 },\n { x: 1036, y: 26 },\n { x: 1037, y: 19 },\n { x: 1038, y: 16 },\n { x: 1039, y: 28 },\n { x: 1040, y: 44 },\n { x: 1041, y: 38 },\n { x: 1042, y: 42 },\n { x: 1043, y: 57 },\n { x: 1044, y: 61 },\n { x: 1045, y: 65 },\n { x: 1046, y: 55 },\n { x: 1047, y: 45 },\n { x: 1048, y: 33 },\n { x: 1049, y: 21 },\n { x: 1050, y: 11 },\n { x: 1051, y: 5 },\n { x: 1052, y: -14 },\n { x: 1053, y: -30 },\n { x: 1054, y: -35 },\n { x: 1055, y: -31 },\n { x: 1056, y: -32 },\n { x: 1057, y: -33 },\n { x: 1058, y: -25 },\n { x: 1059, y: -19 },\n { x: 1060, y: -18 },\n { x: 1061, y: -30 },\n { x: 1062, y: -42 },\n { x: 1063, y: -38 },\n { x: 1064, y: -44 },\n { x: 1065, y: -49 },\n { x: 1066, y: -43 },\n { x: 1067, y: -41 },\n { x: 1068, y: -30 },\n { x: 1069, y: -26 },\n { x: 1070, y: -29 },\n { x: 1071, y: -33 },\n { x: 1072, y: -53 },\n { x: 1073, y: -58 },\n { x: 1074, y: -58 },\n { x: 1075, y: -45 },\n { x: 1076, y: -37 },\n { x: 1077, y: -39 },\n { x: 1078, y: -51 },\n { x: 1079, y: -50 },\n { x: 1080, y: -52 },\n { x: 1081, y: -53 },\n { x: 1082, y: -36 },\n { x: 1083, y: -27 },\n { x: 1084, y: -29 },\n { x: 1085, y: -24 },\n { x: 1086, y: -27 },\n { x: 1087, y: -34 },\n { x: 1088, y: -46 },\n { x: 1089, y: -49 },\n { x: 1090, y: -42 },\n { x: 1091, y: -50 },\n { x: 1092, y: -49 },\n { x: 1093, y: -50 },\n { x: 1094, y: -42 },\n { x: 1095, y: -35 },\n { x: 1096, y: -24 },\n { x: 1097, y: -33 },\n { x: 1098, y: -40 },\n { x: 1099, y: -36 },\n { x: 1100, y: -37 },\n { x: 1101, y: -38 },\n { x: 1102, y: -51 },\n { x: 1103, y: -61 },\n { x: 1104, y: -67 },\n { x: 1105, y: -75 },\n { x: 1106, y: -81 },\n { x: 1107, y: -70 },\n { x: 1108, y: -66 },\n { x: 1109, y: -71 },\n { x: 1110, y: -72 },\n { x: 1111, y: -57 },\n { x: 1112, y: -48 },\n { x: 1113, y: -40 },\n { x: 1114, y: -31 },\n { x: 1115, y: 0 },\n { x: 1116, y: 31 },\n { x: 1117, y: -63 },\n { x: 1118, y: -16 },\n { x: 1119, y: -22 },\n { x: 1120, y: -30 },\n { x: 1121, y: -36 },\n { x: 1122, y: -37 },\n { x: 1123, y: -42 },\n { x: 1124, y: -40 },\n { x: 1125, y: -47 },\n { x: 1126, y: -38 },\n { x: 1127, y: -5 },\n { x: 1128, y: 2 },\n { x: 1129, y: -9 },\n { x: 1130, y: -2 },\n { x: 1131, y: 7 },\n { x: 1132, y: 11 },\n { x: 1133, y: 12 },\n { x: 1134, y: 22 },\n { x: 1135, y: 26 },\n { x: 1136, y: 29 },\n { x: 1137, y: 21 },\n { x: 1138, y: 25 },\n { x: 1139, y: 32 },\n { x: 1140, y: 35 },\n { x: 1141, y: 36 },\n { x: 1142, y: 48 },\n { x: 1143, y: 74 },\n { x: 1144, y: 79 },\n { x: 1145, y: 78 },\n { x: 1146, y: 92 },\n { x: 1147, y: 108 },\n { x: 1148, y: 120 },\n { x: 1149, y: 143 },\n { x: 1150, y: 172 },\n { x: 1151, y: 201 },\n { x: 1152, y: 232 },\n { x: 1153, y: 285 },\n { x: 1154, y: 363 },\n { x: 1155, y: 447 },\n { x: 1156, y: 514 },\n { x: 1157, y: 573 },\n { x: 1158, y: 663 },\n { x: 1159, y: 754 },\n { x: 1160, y: 815 },\n { x: 1161, y: 859 },\n { x: 1162, y: 895 },\n { x: 1163, y: 940 },\n { x: 1164, y: 977 },\n { x: 1165, y: 972 },\n { x: 1166, y: 945 },\n { x: 1167, y: 898 },\n { x: 1168, y: 808 },\n { x: 1169, y: 686 },\n { x: 1170, y: 532 },\n { x: 1171, y: 360 },\n { x: 1172, y: 167 },\n { x: 1173, y: -33 },\n { x: 1174, y: -232 },\n { x: 1175, y: -472 },\n { x: 1176, y: -766 },\n { x: 1177, y: -1082 },\n { x: 1178, y: -1295 },\n { x: 1179, y: -1438 },\n { x: 1180, y: -1509 },\n { x: 1181, y: -1567 },\n { x: 1182, y: -1594 },\n { x: 1183, y: -1583 },\n { x: 1184, y: -1569 },\n { x: 1185, y: -1547 },\n { x: 1186, y: -1504 },\n { x: 1187, y: -1457 },\n { x: 1188, y: -1432 },\n { x: 1189, y: -1403 },\n { x: 1190, y: -1335 },\n { x: 1191, y: -1249 },\n { x: 1192, y: -1157 },\n { x: 1193, y: -1058 },\n { x: 1194, y: -957 },\n { x: 1195, y: -835 },\n { x: 1196, y: -733 },\n { x: 1197, y: -650 },\n { x: 1198, y: -567 },\n { x: 1199, y: -508 },\n { x: 1200, y: -446 },\n { x: 1201, y: -378 },\n { x: 1202, y: -304 },\n { x: 1203, y: -240 },\n { x: 1204, y: -180 },\n { x: 1205, y: -123 },\n { x: 1206, y: -63 },\n { x: 1207, y: -11 },\n { x: 1208, y: 46 },\n { x: 1209, y: 112 },\n { x: 1210, y: 181 },\n { x: 1211, y: 221 },\n { x: 1212, y: 256 },\n { x: 1213, y: 283 },\n { x: 1214, y: 318 },\n { x: 1215, y: 348 },\n { x: 1216, y: 371 },\n { x: 1217, y: 397 },\n { x: 1218, y: 410 },\n { x: 1219, y: 409 },\n { x: 1220, y: 424 },\n { x: 1221, y: 440 },\n { x: 1222, y: 443 },\n { x: 1223, y: 429 },\n { x: 1224, y: 420 },\n { x: 1225, y: 424 },\n { x: 1226, y: 429 },\n { x: 1227, y: 415 },\n { x: 1228, y: 394 },\n { x: 1229, y: 391 },\n { x: 1230, y: 402 },\n { x: 1231, y: 410 },\n { x: 1232, y: 410 },\n { x: 1233, y: 408 },\n { x: 1234, y: 408 },\n { x: 1235, y: 405 },\n { x: 1236, y: 399 },\n { x: 1237, y: 392 },\n { x: 1238, y: 383 },\n { x: 1239, y: 376 },\n { x: 1240, y: 375 },\n { x: 1241, y: 368 },\n { x: 1242, y: 366 },\n { x: 1243, y: 363 },\n { x: 1244, y: 353 },\n { x: 1245, y: 345 },\n { x: 1246, y: 334 },\n { x: 1247, y: 326 },\n { x: 1248, y: 317 },\n { x: 1249, y: 313 },\n { x: 1250, y: 320 },\n { x: 1251, y: 318 },\n { x: 1252, y: 300 },\n { x: 1253, y: 275 },\n { x: 1254, y: 262 },\n { x: 1255, y: 252 },\n { x: 1256, y: 239 },\n { x: 1257, y: 236 },\n { x: 1258, y: 231 },\n { x: 1259, y: 236 },\n { x: 1260, y: 240 },\n { x: 1261, y: 235 },\n { x: 1262, y: 222 },\n { x: 1263, y: 220 },\n { x: 1264, y: 223 },\n { x: 1265, y: 228 },\n { x: 1266, y: 222 },\n { x: 1267, y: 205 },\n { x: 1268, y: 197 },\n { x: 1269, y: 191 },\n { x: 1270, y: 180 },\n { x: 1271, y: 185 },\n { x: 1272, y: 174 },\n { x: 1273, y: 170 },\n { x: 1274, y: 166 },\n { x: 1275, y: 161 },\n { x: 1276, y: 151 },\n { x: 1277, y: 148 },\n { x: 1278, y: 142 },\n { x: 1279, y: 136 },\n { x: 1280, y: 131 },\n { x: 1281, y: 127 },\n { x: 1282, y: 118 },\n { x: 1283, y: 111 },\n { x: 1284, y: 114 },\n { x: 1285, y: 110 },\n { x: 1286, y: 97 },\n { x: 1287, y: 85 },\n { x: 1288, y: 72 },\n { x: 1289, y: 65 },\n { x: 1290, y: 61 },\n { x: 1291, y: 62 },\n { x: 1292, y: 64 },\n { x: 1293, y: 61 },\n { x: 1294, y: 59 },\n { x: 1295, y: 56 },\n { x: 1296, y: 64 },\n { x: 1297, y: 55 },\n { x: 1298, y: 56 },\n { x: 1299, y: 73 },\n { x: 1300, y: 63 },\n { x: 1301, y: 56 },\n { x: 1302, y: 54 },\n { x: 1303, y: 35 },\n { x: 1304, y: 12 },\n { x: 1305, y: -3 },\n { x: 1306, y: -2 },\n { x: 1307, y: -9 },\n { x: 1308, y: -15 },\n { x: 1309, y: -13 },\n { x: 1310, y: 1 },\n { x: 1311, y: 27 },\n { x: 1312, y: 48 },\n { x: 1313, y: 53 },\n { x: 1314, y: 55 },\n { x: 1315, y: 54 },\n { x: 1316, y: 27 },\n { x: 1317, y: 20 },\n { x: 1318, y: 14 },\n { x: 1319, y: 10 },\n { x: 1320, y: 3 },\n { x: 1321, y: 9 },\n { x: 1322, y: 21 },\n { x: 1323, y: 15 },\n { x: 1324, y: 9 },\n { x: 1325, y: 5 },\n { x: 1326, y: 0 },\n { x: 1327, y: 0 },\n { x: 1328, y: -1 },\n { x: 1329, y: 3 },\n { x: 1330, y: 4 },\n { x: 1331, y: 2 },\n { x: 1332, y: -4 },\n { x: 1333, y: -5 },\n { x: 1334, y: -12 },\n { x: 1335, y: -14 },\n { x: 1336, y: -20 },\n { x: 1337, y: -23 },\n { x: 1338, y: -21 },\n { x: 1339, y: -20 },\n { x: 1340, y: -28 },\n { x: 1341, y: -25 },\n { x: 1342, y: -25 },\n { x: 1343, y: -30 },\n { x: 1344, y: -34 },\n { x: 1345, y: -43 },\n { x: 1346, y: -39 },\n { x: 1347, y: -36 },\n { x: 1348, y: -44 },\n { x: 1349, y: -28 },\n { x: 1350, y: -22 },\n { x: 1351, y: -11 },\n { x: 1352, y: -12 },\n { x: 1353, y: -7 },\n { x: 1354, y: -14 },\n { x: 1355, y: -11 },\n { x: 1356, y: -13 },\n { x: 1357, y: -19 },\n { x: 1358, y: -19 },\n { x: 1359, y: -13 },\n { x: 1360, y: 4 },\n { x: 1361, y: 19 },\n { x: 1362, y: 16 },\n { x: 1363, y: 19 },\n { x: 1364, y: 21 },\n { x: 1365, y: 22 },\n { x: 1366, y: 5 },\n { x: 1367, y: -12 },\n { x: 1368, y: -27 },\n { x: 1369, y: -24 },\n { x: 1370, y: -16 },\n { x: 1371, y: -15 },\n { x: 1372, y: -2 },\n { x: 1373, y: 8 },\n { x: 1374, y: -1 },\n { x: 1375, y: -7 },\n { x: 1376, y: -1 },\n { x: 1377, y: 12 },\n { x: 1378, y: 26 },\n { x: 1379, y: 27 },\n { x: 1380, y: 32 },\n { x: 1381, y: 27 },\n { x: 1382, y: 19 },\n { x: 1383, y: 22 },\n { x: 1384, y: 30 },\n { x: 1385, y: 36 },\n { x: 1386, y: 38 },\n { x: 1387, y: 43 },\n { x: 1388, y: 46 },\n { x: 1389, y: 40 },\n { x: 1390, y: 35 },\n { x: 1391, y: 27 },\n { x: 1392, y: 24 },\n { x: 1393, y: 23 },\n { x: 1394, y: 16 },\n { x: 1395, y: 7 },\n { x: 1396, y: 7 },\n { x: 1397, y: 11 },\n { x: 1398, y: 16 },\n { x: 1399, y: 10 },\n { x: 1400, y: 6 },\n { x: 1401, y: 3 },\n { x: 1402, y: 3 },\n { x: 1403, y: 12 },\n { x: 1404, y: 12 },\n { x: 1405, y: 8 },\n { x: 1406, y: 5 },\n { x: 1407, y: 4 },\n { x: 1408, y: 4 },\n { x: 1409, y: 4 },\n { x: 1410, y: 12 },\n { x: 1411, y: 22 },\n { x: 1412, y: 9 },\n { x: 1413, y: 0 },\n { x: 1414, y: -6 },\n { x: 1415, y: -23 },\n { x: 1416, y: -25 },\n { x: 1417, y: -25 },\n { x: 1418, y: -31 },\n { x: 1419, y: -45 },\n { x: 1420, y: -51 },\n { x: 1421, y: -50 },\n { x: 1422, y: -46 },\n { x: 1423, y: -55 },\n { x: 1424, y: -59 },\n { x: 1425, y: -60 },\n { x: 1426, y: -63 },\n { x: 1427, y: -62 },\n { x: 1428, y: -62 },\n { x: 1429, y: -63 },\n { x: 1430, y: -75 },\n { x: 1431, y: -85 },\n { x: 1432, y: -92 },\n { x: 1433, y: -94 },\n { x: 1434, y: -87 },\n { x: 1435, y: -85 },\n { x: 1436, y: -77 },\n { x: 1437, y: -91 },\n { x: 1438, y: -106 },\n { x: 1439, y: -114 },\n { x: 1440, y: -121 },\n { x: 1441, y: -133 },\n { x: 1442, y: -146 },\n { x: 1443, y: -159 },\n { x: 1444, y: -168 },\n { x: 1445, y: -167 },\n { x: 1446, y: -179 },\n { x: 1447, y: -190 },\n { x: 1448, y: -200 },\n { x: 1449, y: -205 },\n { x: 1450, y: -210 },\n { x: 1451, y: -213 },\n { x: 1452, y: -210 },\n { x: 1453, y: -217 },\n { x: 1454, y: -219 },\n { x: 1455, y: -225 },\n { x: 1456, y: -239 },\n { x: 1457, y: -246 },\n { x: 1458, y: -257 },\n { x: 1459, y: -276 },\n { x: 1460, y: -298 },\n { x: 1461, y: -297 },\n { x: 1462, y: -305 },\n { x: 1463, y: -312 },\n { x: 1464, y: -305 },\n { x: 1465, y: -300 },\n { x: 1466, y: -312 },\n { x: 1467, y: -321 },\n { x: 1468, y: -318 },\n { x: 1469, y: -306 },\n { x: 1470, y: -302 },\n { x: 1471, y: -296 },\n { x: 1472, y: -297 },\n { x: 1473, y: -294 },\n { x: 1474, y: -287 },\n { x: 1475, y: -290 },\n { x: 1476, y: -301 },\n { x: 1477, y: -310 },\n { x: 1478, y: -312 },\n { x: 1479, y: 0 },\n { x: 1480, y: -265 },\n { x: 1481, y: -362 },\n { x: 1482, y: -303 },\n { x: 1483, y: -302 },\n { x: 1484, y: -293 },\n { x: 1485, y: -296 },\n { x: 1486, y: -295 },\n { x: 1487, y: -286 },\n { x: 1488, y: -291 },\n { x: 1489, y: -287 },\n { x: 1490, y: -268 },\n { x: 1491, y: -243 },\n { x: 1492, y: -231 },\n { x: 1493, y: -229 },\n { x: 1494, y: -228 },\n { x: 1495, y: -229 },\n { x: 1496, y: -236 },\n { x: 1497, y: -243 },\n { x: 1498, y: -242 },\n { x: 1499, y: -217 },\n { x: 1500, y: -206 },\n { x: 1501, y: -199 },\n { x: 1502, y: -189 },\n { x: 1503, y: -187 },\n { x: 1504, y: -178 },\n { x: 1505, y: -163 },\n { x: 1506, y: -152 },\n { x: 1507, y: -150 },\n { x: 1508, y: -149 },\n { x: 1509, y: -144 },\n { x: 1510, y: -137 },\n { x: 1511, y: -121 },\n { x: 1512, y: -119 },\n { x: 1513, y: -132 },\n { x: 1514, y: -126 },\n { x: 1515, y: -123 },\n { x: 1516, y: -104 },\n { x: 1517, y: -96 },\n { x: 1518, y: -97 },\n { x: 1519, y: -82 },\n { x: 1520, y: -56 },\n { x: 1521, y: -42 },\n { x: 1522, y: -47 },\n { x: 1523, y: -40 },\n { x: 1524, y: -33 },\n { x: 1525, y: -37 },\n { x: 1526, y: -43 },\n { x: 1527, y: -51 },\n { x: 1528, y: -51 },\n { x: 1529, y: -35 },\n { x: 1530, y: -19 },\n { x: 1531, y: -12 },\n { x: 1532, y: -11 },\n { x: 1533, y: -9 },\n { x: 1534, y: -2 },\n { x: 1535, y: 12 },\n { x: 1536, y: 24 },\n { x: 1537, y: 24 },\n { x: 1538, y: 32 },\n { x: 1539, y: 42 },\n { x: 1540, y: 39 },\n { x: 1541, y: 45 },\n { x: 1542, y: 55 },\n { x: 1543, y: 43 },\n { x: 1544, y: 42 },\n { x: 1545, y: 45 },\n { x: 1546, y: 46 },\n { x: 1547, y: 51 },\n { x: 1548, y: 58 },\n { x: 1549, y: 61 },\n { x: 1550, y: 57 },\n { x: 1551, y: 55 },\n { x: 1552, y: 46 },\n { x: 1553, y: 29 },\n { x: 1554, y: 23 },\n { x: 1555, y: 24 },\n { x: 1556, y: 21 },\n { x: 1557, y: 27 },\n { x: 1558, y: 45 },\n { x: 1559, y: 56 },\n { x: 1560, y: 79 },\n { x: 1561, y: 102 },\n { x: 1562, y: 103 },\n { x: 1563, y: 114 },\n { x: 1564, y: 129 },\n { x: 1565, y: 116 },\n { x: 1566, y: 112 },\n { x: 1567, y: 127 },\n { x: 1568, y: 130 },\n { x: 1569, y: 135 },\n { x: 1570, y: 143 },\n { x: 1571, y: 144 },\n { x: 1572, y: 157 },\n { x: 1573, y: 153 },\n { x: 1574, y: 140 },\n { x: 1575, y: 135 },\n { x: 1576, y: 129 },\n { x: 1577, y: 111 },\n { x: 1578, y: 103 },\n { x: 1579, y: 106 },\n { x: 1580, y: 108 },\n { x: 1581, y: 94 },\n { x: 1582, y: 96 },\n { x: 1583, y: 89 },\n { x: 1584, y: 85 },\n { x: 1585, y: 89 },\n { x: 1586, y: 94 },\n { x: 1587, y: 82 },\n]\n// Create a data generator to supply a continuous stream of data.\ncreateSampledDataGenerator(point, 1, 10)\n .setSamplingFrequency(1)\n .setInputData(point)\n .generate()\n .setStreamBatchSize(48)\n .setStreamInterval(50)\n .setStreamRepeat(true)\n .toStream()\n .forEach((point) => {\n // Push the created points to the series.\n series.add({ x: point.timestamp, y: point.data.y })\n })\n","url":null,"readme":"This example shows a simulated ECG-signal by using a Line Series in a XY Chart.\n\nThe simulated signal pushes 960 points per second to the chart.\n\nECG stands for electrocardiogram which is a simple test that can be used to check heart's rhythm and electrical activity.\n","image":"ecg"},{"id":"lcjs-example-0200-candlesticks","title":"JavaScript Candlestick Chart","tags":["candlestick","ohlc","trading","xy","date-time"],"description":"This type of chart is used as a trading tool to visualize price movements. Also known as Japanese Candlestick Chart.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Trading Charts, High-Performance Charts, Financial Charts, Stock Charts, 2D & 3D charts, OHLC, Candlestick Charts.","src":"/*\n * LightningChartJS example that showcases creation of a Candlestick-chart.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, OHLCFigures, emptyLine, AxisScrollStrategies, Themes } = lcjs\n\n// Import data-generator from 'xydata'-library.\nconst { createOHLCGenerator } = xydata\n\n// Decide on an origin for DateTime axis.\nconst dateOrigin = new Date(2018, 0, 1)\n\n// Create a XY Chart.\nconst chart = lightningChart().ChartXY({\n // theme: Themes.darkGold\n})\n// Use DateTime X-axis using with above defined origin.\nchart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\n\nchart.setTitle('Candlesticks Chart')\n// Style AutoCursor using preset.\nchart.setAutoCursor((cursor) => {\n cursor.setTickMarkerYVisible(false)\n cursor.setGridStrokeYStyle(emptyLine)\n})\nchart.setPadding({ right: 40 })\n\n// Change the title and behavior of the default Y Axis\nchart\n .getDefaultAxisY()\n .setTitle('USD')\n .setInterval({ start: 90, end: 110, stopAxisAfter: false })\n .setScrollStrategy(AxisScrollStrategies.expansion)\n\n// Add a OHLC series with Candlestick as type of figures.\nconst series = chart.addOHLCSeries({ positiveFigure: OHLCFigures.Candlestick })\n// Generate some points using 'xydata'-library.\nconst dataSpan = 10 * 24 * 60 * 60 * 1000\nconst dataFrequency = 1000 * 60\ncreateOHLCGenerator()\n .setNumberOfPoints(dataSpan / dataFrequency)\n .setDataFrequency(dataFrequency)\n .setStart(100)\n .generate()\n .toPromise()\n .then((data) => {\n series.add(data)\n })\n","url":null,"readme":"_Also known as Japanese Candlestick Chart_\n\nThis example shows basic implementation of candlestick chart using OHLCSeries. This type of chart is used as a trading tool to visualize price movements. A candlestick figure can represent multiple recorded values, which are packed into 4 values (open, high, low and close). This makes it useful for dynamically displaying data from longer intervals as well as shorter.\n\nOHLCSeries are created using ChartXY method.\n\n```javascript\nconst chart = lightningChart().ChartXY()\n// Method for adding OHLCSeries takes one argument: seriesConstructor.\nconst ohlcSeries = chart.addOHLCSeries(\n // Specify type of figure used\n { seriesConstructor: OHLCFigures.Candlestick },\n)\n```\n\nOHLCSeries accept data in the form of interface 'XOHLC':\n\n```javascript\nconst xohlc = [\n // X-position\n 0,\n // Opening Y-value\n 100,\n // Highest Y-value\n 200,\n // Lowest Y-value\n 50,\n // Closing Y-value\n 75,\n]\n// Add new segment to series.\nohlcSeries.add(xohlc)\n```\n\nadd() can be called with a single XOHLC-object or with an array of them.\n\n## Anatomy of a candlestick figure\n\nCandlesticks are formed from two parts: _Body_ and *Line*s. Both of these can be individually styled.\n\n[//]: # 'IMPORTANT: The assets will not show before README.md is built - relative path is different!'\n\n\n","image":"candleSticks"},{"id":"lcjs-example-0201-ohlc","title":"JavaScript OHLC Chart","tags":["ohlc","trading","xy","date-time"],"description":"Basic implementation of OHLC chart. Also known as Price Chart, Bar Chart.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Trading Charts, High-Performance Charts, Financial Charts, Stock Charts, 2D & 3D charts, OHLC, Candlestick Charts.","src":"/*\n * LightningChartJS example that showcases creation of OHLC-chart.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, OHLCFigures, AxisScrollStrategies, emptyLine, Themes } = lcjs\n\n// Create a XY Chart.\nconst chart = lightningChart().ChartXY({\n // theme: Themes.darkGold\n})\n// Use DateTime TickStrategy for the X Axis, set current date as the origin.\nchart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(new Date()))\n\nchart.setTitle('Open-High-Low-Close')\n// Modify AutoCursor to only show TickMarker and GridLine over the X Axis.\nchart.setAutoCursor((cursor) => {\n cursor.setTickMarkerYVisible(false)\n cursor.setGridStrokeYStyle(emptyLine)\n})\n\n// Add a OHLC Series with Bar as type of figures.\nconst series = chart.addOHLCSeries({ positiveFigure: OHLCFigures.Bar }).setName('Open-High-Low-Close')\n// Create an array of XOHLC tuples (See API documentation) to use with the OHLC Series\n//The XOHLC tuple consists of five different values; position on X Axis (in this case, the date of each entry), the open, high, low and close values.\nconst data = [\n [new Date(2019, 6, 29).getTime(), 208.46, 210.64, 208.44, 209.68],\n [new Date(2019, 6, 30).getTime(), 208.76, 210.16, 207.31, 208.78],\n [new Date(2019, 6, 31).getTime(), 216.42, 221.37, 211.3, 213.04],\n [new Date(2019, 7, 1).getTime(), 213.9, 218.03, 206.74, 208.43],\n [new Date(2019, 7, 2).getTime(), 205.53, 206.43, 201.63, 204.02],\n [new Date(2019, 7, 5).getTime(), 197.99, 198.65, 192.58, 193.34],\n [new Date(2019, 7, 6).getTime(), 196.31, 198.07, 194.04, 197],\n [new Date(2019, 7, 7).getTime(), 195.41, 199.56, 193.82, 199.04],\n [new Date(2019, 7, 8).getTime(), 200.2, 203.53, 199.39, 203.43],\n [new Date(2019, 7, 9).getTime(), 201.3, 202.76, 199.29, 200.99],\n [new Date(2019, 7, 12).getTime(), 199.62, 202.05, 199.15, 200.48],\n [new Date(2019, 7, 13).getTime(), 201.02, 212.14, 200.48, 208.97],\n [new Date(2019, 7, 14).getTime(), 203.16, 206.44, 202.59, 202.75],\n [new Date(2019, 7, 15).getTime(), 203.46, 205.14, 199.67, 201.74],\n [new Date(2019, 7, 16).getTime(), 204.28, 207.16, 203.84, 206.5],\n [new Date(2019, 7, 19).getTime(), 210.62, 212.73, 210.03, 210.35],\n [new Date(2019, 7, 20).getTime(), 210.88, 213.35, 210.32, 210.36],\n [new Date(2019, 7, 21).getTime(), 212.99, 213.65, 211.6, 212.64],\n [new Date(2019, 7, 22).getTime(), 213.19, 214.44, 210.75, 212.46],\n [new Date(2019, 7, 23).getTime(), 209.43, 212.05, 201, 202.64],\n]\n// Modify the bars for better visibility\nseries\n .setPositiveStyle((figure) => figure.setStrokeStyle((stroke) => stroke.setThickness(2)))\n .setNegativeStyle((figure) => figure.setStrokeStyle((stroke) => stroke.setThickness(2)))\n .setFigureWidth(10)\n// Add the created data array to the OHLC series.\nseries.add(data)\n// Add a single data entry to the array.\nseries.add([new Date(2019, 7, 26).getTime(), 205.86, 207.19, 205.06, 206.49])\n// Change the title and behavior of the default Y Axis\nchart\n .getDefaultAxisY()\n .setTitle('USD')\n .setInterval({ start: 195, end: 220, stopAxisAfter: false })\n .setScrollStrategy(AxisScrollStrategies.expansion)\n// Fit the X Axis around the given data. Passing false skips animating the fitting.\nchart.getDefaultAxisX().fit(false)\n","url":null,"readme":"_Also known as Price Chart, Bar Chart_\n\n## What does OHLC chart mean?\n\nOHLC stands for open, high, low, and close. OHLC charts are important because they show the value of a stock over time. The opening price is the price at which a stock was first traded for the day, and it will usually be either higher or lower than the previous day's closing price, depending on how well the stock market has done. The highest price is simply the maximum amount that a share can sell for in order to buy. The lowest point is called the low, and it's simply what it sounds like: the lowest point of trading for that given day.\n\n## What is the function of an OHLC chart in the stock market?\n\nAn OHLC chart can be useful for analyzing how a stock's value fluctuates over time. When looking at this chart, it is important to note that the range for each bar will typically depend on the time period being analyzed (e.g., daily or weekly).\n\n## How to read the OHLC chart?\n\nThe vertical line on an OHLC chart represents the change in price movement from opening to closing and will have four points: the high point at which the highest price is reached during that day's trading session, the low point at which the lowest price is reached during that day's trading session, and finally, the opening and closing prices for that day.\n\nThis example shows basic implementation of OHLC chart using OHLC-series.\n\n```javascript\n// OHLCSeries exists inside XY-charts.\nconst chart = lightningChart().ChartXY()\nconst ohlcSeries = chart.addOHLCSeries(\n // Specify type of figure used\n { positiveFigure: OHLCFigures.Bar },\n)\n```\n\nOHLC-series accept data in the form of interface 'XOHLC':\n\n```javascript\nconst xohlc = [\n // X-position\n 0,\n // Opening Y-value\n 100,\n // Highest Y-value\n 200,\n // Lowest Y-value\n 50,\n // Closing Y-value\n 75,\n]\n// Add new segment to series.\nohlcSeries.add(xohlc)\n```\n\n`add()` can be called with a single XOHLC-object or with an array of them.\n\n## Anatomy of a Bar figure\n\nA bar figure is formed from three line segments, which can be styled with a single _LineStyle_ object.\n\n[//]: # 'IMPORTANT: The assets will not show before README.md is built - relative path is different!'\n\n\n\n## Figure styling\n\nOHLC Series provides an ability to specify styles for both positive and negative candlesticks individually.\n\n```javascript\n// Width of both positive and negative candlesticks\nconst figureWidth = 5.0\n// Green color filling\nconst fillStylePositive = new SolidFill().setColor(ColorRGBA(0, 128, 0))\n// Lime color filling\nconst fillStyleHighlightPositive = new SolidFill().setColor(ColorRGBA(0, 255, 0))\n// Black color stroke\nconst bodyStrokeStyle = new SolidLine().setFillStyle(new SolidFill().setColor(ColorRGBA(0, 0, 0))).setThickness(1.0)\n// Green color stroke\nconst strokeStylePositive = new SolidLine().setFillStyle(new SolidFill().setColor(ColorRGBA(0, 128, 0)))\n// Lime color stroke\nconst strokeStylePositiveHighlight = new SolidLine().setFillStyle(new SolidFill().setColor(ColorRGBA(0, 240, 0)))\n\nohlcSeries\n // Setting width of figures\n .setFigureWidth(figureWidth)\n // Styling positive candlestick\n .setPositiveStyle((candlestick) =>\n candlestick\n // Candlestick body fill style\n .setBodyFillStyle(fillStylePositive)\n // Candlestick body stroke style\n .setBodyStrokeStyle(bodyStrokeStyle)\n // Candlestick stroke style\n .setStrokeStyle(strokeStylePositive),\n )\n // Styling negative candlestick\n .setNegativeStyle(\n (candlestick) => candlestick,\n // etc ...\n )\n```\n","image":"ohlc"},{"id":"lcjs-example-0202-ohlcPlotAutomaticPacking","title":"JavaScript OHLC Series with Automatic Packing","tags":["ohlc","trading","date-time","line","xy"],"description":"This example shows real-time OHLC-packing using a variant of OHLC-series.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Trading Charts, High-Performance Charts, Financial Charts, Stock Charts, 2D & 3D charts, OHLC, Candlestick Charts.","src":"/*\n * LightningChartJS example that showcases real-time OHLC-packing using a variant of OHLC-series.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, AxisScrollStrategies, OHLCSeriesTypes, emptyLine, Themes } = lcjs\n\n// Import data-generator from 'xydata'-library.\nconst { createProgressiveTraceGenerator } = xydata\n\n// Decide on an origin for DateTime axis ( cur time - 5 minutes ).\nconst fiveMinutesInMs = 5 * 60 * 1000\nconst dateOrigin = new Date(new Date().getTime() - fiveMinutesInMs)\n\n// Create a XY Chart.\nconst chart = lightningChart().ChartXY({\n // theme: Themes.darkGold\n})\n// Use DateTime X-axis using previously defined origin.\nchart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\n\n// Set chart title and modify the padding of the chart.\nchart.setTitle('Realtime OHLC and line').setPadding({\n right: 42,\n})\n// Modify AutoCursor to only show TickMarker and Gridline over X Axis.\nchart.setAutoCursor((cursor) => {\n cursor.setTickMarkerYVisible(false)\n cursor.setGridStrokeYStyle(emptyLine)\n})\n\n// Configure X-axis to be progressive.\nchart\n .getDefaultAxisX()\n .setScrollStrategy(AxisScrollStrategies.progressive)\n // View fits 5 minutes.\n .setInterval({ start: 0, end: fiveMinutesInMs, stopAxisAfter: false })\n\n// Show title 'USD' on Y axis.\nchart.getDefaultAxisY().setTitle('USD')\n\n// Add underlying line series.\nconst lineSeries = chart\n .addLineSeries()\n .setCursorEnabled(false)\n .setStrokeStyle((strokeStyle) => strokeStyle.setFillStyle((fill) => fill.setA(70)).setThickness(1))\n\n// Add OHLC series with automatic packing (so we can feed it XY-points just like for the line series).\nconst ohlcSeriesAutoPacking = chart\n .addOHLCSeries(\n // Specify type of OHLC-series for adding points\n { seriesConstructor: OHLCSeriesTypes.AutomaticPacking },\n )\n // Set packing resolution to 100 ms so we can zoom to full resolution.\n .setPackingResolution(100)\n\nconst add = (points) => {\n lineSeries.add(points)\n // With automatic packing, the add method accepts data points that use the {x, y} format (for example, {x: time, y: measurement}).\n // OHLC Series can automatically pack these raw measurements into OHLC data.\n ohlcSeriesAutoPacking.add(points)\n}\n\n// Generate data using 'xydata'-library.\ncreateProgressiveTraceGenerator()\n .setNumberOfPoints(10000)\n .generate()\n .toPromise()\n .then((data) =>\n data.map((p) => ({\n // Resolution = 100 ms.\n x: p.x * 100,\n y: p.y,\n })),\n )\n .then((data) => {\n // Add 5 minutes worth of points immediately ( to simulate previous data ).\n add(data.splice(0, Math.round(5 * 60 * 10)))\n // Then stream some more\n setInterval(() => {\n add(data.splice(0, 1))\n }, 50)\n })\n","url":null,"readme":"This example shows real-time OHLC-packing using a variant of OHLC-series.\n\n## LightningChart JS OHLC Series with Automatic Packing\n\nLightningChart JS includes a variant of the OHLC series which allows inputting close prices only which results in the corresponding OHLC data being automatically calculated.\n\n```javascript\nconst chart = lightningChart().ChartXY()\nconst series = chart.addOHLCSeries(\n // Specify the type of OHLC-series for adding points\n { seriesConstructor: OHLCSeriesTypes.AutomaticPacking },\n)\n```\n\nOHLC-series that were created with type 'AutomaticPacking' accept data the same way as any other horizontally progressive XY-series:\n\n```javascript\n// Single point.\nseries.add({ x: 50, y: 60 })\n\n// Multiple points at once.\nseries.add([\n { x: 55, y: 60 },\n { x: 60, y: 62 },\n { x: 65, y: 65 },\n])\n```\n\n## Packing logic\n\nSupplied points are packed by columns, within which the Y-values are mapped to open, high, low and close -values, which are used to draw _OHLCFigures_.\n\n[//]: # 'IMPORTANT: The assets will not show before README.md is built - relative path is different!'\n\n\n","image":"ohlcAutomaticPacking"},{"id":"lcjs-example-0203-ohlcPlotAutomaticPackingResolution","title":"JavaScript OHLC Chart with Automatic Packing Resolution","tags":["ohlc","trading","xy","dashboard"],"description":"The examples purpose is to shed some light on the packing logic of OHLCSeriesWithAutomaticPacking. This is a variant of OHLCSeries.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Trading Charts, High-Performance Charts, Financial Charts, Stock Charts, 2D & 3D charts, OHLC, Candlestick Charts.","src":"/*\n * LightningChartJS example that showcases the 'packing resolution' property of StockSeries.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, OHLCSeriesTypes, emptyLine, Themes } = lcjs\n\n// Import data-generator from 'xydata'-library.\nconst { createProgressiveTraceGenerator } = xydata\n\nconst dataSpan = 60 * 60 * 1000\nconst dataFrequency = 1 * 1000\n\n// Decide on an origin for DateTime axis.\nconst dateOrigin = new Date(2018, 0, 1)\n// Create charts and series for two different packing resolutions.\nconst dashboard = lightningChart().Dashboard({ numberOfColumns: 1, numberOfRows: 2 })\nconst chartDefault = dashboard.createChartXY({\n columnIndex: 0,\n rowIndex: 0,\n // theme: Themes.darkGold\n})\n// Use DateTime TickStrategy with custom origin date.\nchartDefault.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\n\nchartDefault.setTitle('Default packing resolution').setAutoCursor((cursor) => {\n cursor.setTickMarkerYVisible(false)\n cursor.setGridStrokeYStyle(emptyLine)\n})\n// Preventing ResultTable from getting cut at the edge\nchartDefault.setPadding({\n right: 42,\n})\n\n// show title 'USD on Y axis\nchartDefault.getDefaultAxisY().setTitle('USD')\n\nconst chartLow = dashboard.createChartXY({\n columnIndex: 0,\n rowIndex: 1,\n // theme: Themes.darkGold\n})\n// Use DateTime TickStrategy with custom origin date.\nchartLow.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\n\nchartLow.setTitle('Very small packing resolution').setAutoCursor((cursor) => {\n cursor.setTickMarkerYVisible(false)\n cursor.setGridStrokeYStyle(emptyLine)\n})\n// Preventing ResultTable from getting cut at the edge\nchartLow.setPadding({\n right: 42,\n})\n\n// show title 'USD on Y axis\nchartLow.getDefaultAxisY().setTitle('USD')\n\nconst seriesDefault = chartDefault\n .addOHLCSeries(\n // Specify type of OHLC-series for adding points\n { seriesConstructor: OHLCSeriesTypes.AutomaticPacking },\n )\n .setName('Default packing resolution')\n\nconst seriesLow = chartLow\n .addOHLCSeries({ seriesConstructor: OHLCSeriesTypes.AutomaticPacking })\n .setName('Very small packing resolution')\n // Set packing resolution that is equal to the minimum resolution between two points.\n // (essentially allows users to zoom to full resolution)\n .setPackingResolution(dataFrequency)\n\n// Push points to both series.\ncreateProgressiveTraceGenerator()\n .setNumberOfPoints(dataSpan / dataFrequency)\n .generate()\n .toPromise()\n .then((data) =>\n data.map((p) => ({\n x: p.x * dataFrequency,\n y: p.y,\n })),\n )\n .then((data) => {\n seriesDefault.add(data)\n seriesLow.add(data)\n // Fit axes to fully show difference between packing resolutions. (without fitting\n // the initial pixel size of axes would drastically affect automatic packing resolution)\n chartDefault.getDefaultAxisX().fit()\n chartLow.getDefaultAxisX().fit()\n })\n","url":null,"readme":"The examples purpose is to shed some light on the packing logic of OHLCSeriesWithAutomaticPacking and how it can be fit to users needs by usage of method: `setPackingResolution`.\n\nThis class is a variant of OHLCSeries, which adds the automatic packing of XY-points to XOHLC-points. In a nutshell, when pushing points, it simply packages these points into 'XOHLC'-objects at certain intervals (which is controlled by the packing resolution property).\n\nBy default, or if packing resolution is explicitly set to 'undefined', the used value will be automatically computed based on current pixel-size. This effectively means that any newly pushed points will never be able to be zoomed closer than the view at the time of packing.\n\nTo ensure that the figures can be zoomed up to desired details, users can set an explicit value for the packing resolution, which will specify the minimum interval (in axis values) between two fully zoomed figures.\n\n[//]: # 'IMPORTANT: The assets will not show before README.md is built - relative path is different!'\n\n\n","image":"ohlcAutomaticPackingResolution"},{"id":"lcjs-example-0300-verticalBars","title":"JavaScript Vertical Bar Chart","tags":["bar","column","xy"],"description":"Bar Charts show discrete numerical comparisons across categories, where the value represents the height of a bar. Also known as Bar Graph, Column Chart or Column Graph.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: JS chart examples, covid-19 tracker chart, racing bar charts, mosaic chart, 2D range bar, grouped bar charts. And more!","src":"/*\n * LightningChartJS example for rendering a 'vertical bar chart' using user-side logic as there is no dedicated Chart type for Bars, yet.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst {\n lightningChart,\n AxisScrollStrategies,\n SolidFill,\n SolidLine,\n ColorRGBA,\n emptyLine,\n AutoCursorModes,\n UIOrigins,\n AxisTickStrategies,\n UIElementBuilders,\n Themes,\n} = lcjs\n\nconst lc = lightningChart()\n\nconst months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n// Define an interface for creating vertical bars.\nlet barChart\n{\n barChart = (options) => {\n // flat red fill style for positive bars\n const flatRedStyle = new SolidFill().setColor(ColorRGBA(242, 67, 79))\n // flat blue fill style for negative bars\n const flatBlueStyle = new SolidFill().setColor(ColorRGBA(42, 171, 240))\n\n let x = 0\n const figureThickness = 10\n const figureGap = figureThickness * 0.5\n const bars = []\n\n // Create a XY-Chart and add a RectSeries to it for rendering rectangles.\n const chart = lc\n .ChartXY(options)\n .setTitle('Changes in electricity usage between 2017 and 2018')\n .setAutoCursorMode(AutoCursorModes.onHover)\n // Disable mouse interactions (e.g. zooming and panning) of plotting area\n .setMouseInteractions(false)\n\n // Bar series represented with rectangles.\n const rectangles = chart.addRectangleSeries()\n\n // cursor\n //#region\n // Show band using Rectangle series.\n const band = chart\n .addRectangleSeries()\n .setMouseInteractions(false)\n .setCursorEnabled(false)\n .add({ x: 0, y: 0, width: 0, height: 0 })\n .setFillStyle(new SolidFill().setColor(ColorRGBA(255, 255, 255, 50)))\n .setStrokeStyle(emptyLine)\n .setVisible(false)\n // Modify AutoCursor.\n chart.setAutoCursor((cursor) =>\n cursor\n .setPointMarkerVisible(false)\n .setTickMarkerXVisible(false)\n .setTickMarkerYVisible(false)\n .setGridStrokeXStyle(emptyLine)\n .setGridStrokeYStyle(emptyLine)\n .setResultTable((table) => {\n table.setOrigin(UIOrigins.CenterBottom)\n }),\n )\n // Change how series parses its data-points using series method.\n rectangles.setCursorResultTableFormatter((builder, series, figure) => {\n let counter = 0\n // Find cached entry for the figure.\n const entry = bars.find((bar, index) => {\n counter = index\n return bar.rect == figure\n }).entry\n // Parse result table content from values of 'entry'.\n return builder.addRow(`Month: ${months[counter]}`).addRow(`Value: ${entry.value}%`)\n })\n //#endregion\n\n // X-axis of the series\n const axisX = chart\n .getDefaultAxisX()\n .setTitle('Quarter')\n .setMouseInteractions(false)\n .setScrollStrategy(undefined)\n // Disable default ticks.\n .setTickStrategy(AxisTickStrategies.Empty)\n\n // Y-axis of the series\n const axisY = chart.getDefaultAxisY().setTitle('(%)').setMouseInteractions(false).setScrollStrategy(AxisScrollStrategies.fitting)\n\n //Add middle line\n const constantLine = axisY.addConstantLine()\n constantLine\n .setValue(0)\n .setMouseInteractions(false)\n .setStrokeStyle(new SolidLine({ thickness: 2, fillStyle: new SolidFill({ color: ColorRGBA(125, 125, 125) }) }))\n\n /**\n * Add multiple bars.\n * @param entries Add multiple bars data.\n */\n const addValues = (entries) => {\n for (const entry of entries) {\n bars.push(add(entry))\n }\n }\n /**\n * Add single bar.\n * @param entry Add a single bar data.\n */\n const addValue = (entry) => {\n bars.push(add(entry))\n }\n /**\n * Construct bar to draw.\n * @param entry Single bar data.\n */\n const add = (entry) => {\n // Create rect dimensions.\n const rectDimensions = {\n x: x - figureThickness,\n y: 0,\n width: figureThickness,\n height: entry.value,\n }\n // Add rect to the series.\n const rect = rectangles.add(rectDimensions)\n // Set individual color for the bar.\n rect.setFillStyle(entry.value > 0 ? flatRedStyle : flatBlueStyle).setStrokeStyle(emptyLine)\n\n // Show cursor band when mouse is above figure.\n rect.onMouseEnter(() => {\n const dimensions = rect.getDimensionsPositionAndSize()\n // Show band.\n band.setDimensions({\n x: dimensions.x - figureGap * 0.5,\n y: rect.scale.y.getInnerStart(),\n width: dimensions.width + figureGap,\n height: rect.scale.y.getInnerInterval(),\n }).setVisible(true)\n })\n rect.onMouseLeave(() => {\n band.setVisible(false)\n })\n\n // Set view manually.\n axisX.setInterval({\n start: -(figureThickness + figureGap),\n end: x + figureGap,\n stopAxisAfter: false,\n })\n // Add custom tick, more like categorical axis.\n if (entry.category.length > 0) {\n axisX\n .addCustomTick()\n .setValue(x - figureGap)\n .setGridStrokeLength(0)\n .setTextFormatter((_) => entry.category)\n .setMarker((marker) => marker.setTextFillStyle(new SolidFill({ color: ColorRGBA(170, 170, 170) })))\n }\n x += figureThickness + figureGap\n // Return data-structure with both original 'entry' and the rectangle figure that represents it.\n return {\n entry,\n rect,\n }\n }\n\n // Return public methods of a bar chart interface.\n return {\n addValue,\n addValues,\n }\n }\n}\n\n// Use bar chart interface to construct series.\nconst chart = barChart({\n // theme: Themes.darkGold\n})\n// Add multiple bars at once.\nchart.addValues([\n { category: '', value: 20 },\n { category: 'Q1', value: 20 },\n { category: '', value: -25 },\n { category: '', value: 40 },\n { category: 'Q2', value: 28 },\n { category: '', value: -23 },\n { category: '', value: -40 },\n { category: 'Q3', value: 35 },\n { category: '', value: 17 },\n { category: '', value: 24 },\n { category: 'Q4', value: -29 },\n { category: '', value: 15 },\n])\n","url":null,"readme":"_Also known as Bar Graph, Column Chart or Column Graph_\n\nThis example shows the creation of a column chart made on user side by utilizing RectangleSeries which displays data as vertical bars. Bar Charts show discrete numerical comparisons across categories, where the value represents the height of a bar.\n\nThe following code below shows the creation of a Vertical Bar Chart using a pre-defined interface. Moreover, the current interface allows visualizing columns with negative values.\n\nThe bar series accepts points in format `{ category: string, value: number }`. Any number of points can be added with a single call.\n\n```javascript\n// Create Chart.\nconst chart = barChart()\n\n// Add bars.\nchart.addValues([\n { category: 'A', value: 20 },\n { category: 'B', value: -30 },\n])\n```\n\nThe actual Bar Chart logic just serves to provide a starting point for users to create their own API based on their needs and preferences.\n","image":"verticalBars"},{"id":"lcjs-example-0301-horizontalBars","title":"JavaScript Horizontal Bar Chart","tags":["bar","column","xy"],"description":"Horizontal variant of a Bar Chart. Also known as Bar Graph, Column Chart or Column Graph.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: JS chart examples, covid-19 tracker chart, racing bar charts, mosaic chart, 2D range bar, grouped bar charts. And more!","src":"/*\n * LightningChartJS example for rendering a 'Simple horizontal bar chart'.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst {\n lightningChart,\n SolidFill,\n SolidLine,\n ColorRGBA,\n emptyLine,\n emptyFill,\n AxisTickStrategies,\n AutoCursorModes,\n UIOrigins,\n UIElementBuilders,\n Themes,\n} = lcjs\n\nconst lc = lightningChart()\n\n// Define an interface for creating horizontal bars.\nlet barChart\n{\n barChart = (options) => {\n // flat red fill style for positive bars\n const flatRedStyle = new SolidFill().setColor(ColorRGBA(242, 67, 79))\n // flat blue fill style for negative bars\n const flatBlueStyle = new SolidFill().setColor(ColorRGBA(42, 171, 240))\n\n let y = 0\n const figureThickness = 10\n const figureGap = figureThickness * 0.5\n const bars = []\n\n // Create a XY-Chart and add a RectSeries to it for rendering rectangles.\n const chart = lc\n .ChartXY(options)\n .setTitle('Mass memory production increases in 2018')\n .setAutoCursorMode(AutoCursorModes.onHover)\n // Disable mouse interactions (e.g. zooming and panning) of plotting area\n .setMouseInteractions(false)\n .setPadding({ right: 20 })\n\n // Bar series represented with rectangles.\n const rectangles = chart.addRectangleSeries()\n\n // cursor\n //#region\n // Show band using Rectangle series.\n const band = chart\n .addRectangleSeries()\n .setMouseInteractions(false)\n .setCursorEnabled(false)\n .add({ x: 0, y: 0, width: 0, height: 0 })\n .setFillStyle(new SolidFill().setColor(ColorRGBA(255, 255, 255, 50)))\n .setStrokeStyle(emptyLine)\n .setVisible(false)\n // Modify AutoCursor.\n chart.setAutoCursor((cursor) =>\n cursor\n .setResultTableAutoTextStyle(true)\n .setPointMarkerVisible(false)\n .setTickMarkerXVisible(false)\n .setTickMarkerYVisible(false)\n .setGridStrokeXStyle(emptyLine)\n .setGridStrokeYStyle(emptyLine)\n .setResultTable((table) => {\n table.setOrigin(UIOrigins.CenterBottom)\n }),\n )\n // Change how marker displays its information.\n rectangles.setCursorResultTableFormatter((builder, series, figure) => {\n // Find cached entry for the figure.\n const entry = bars.find((bar) => bar.rect == figure).entry\n // Parse result table content from values of 'entry'.\n return builder.addRow('Month: ' + entry.category).addRow('Value: ' + String(entry.value))\n })\n //#endregion\n\n // X-axis of the series\n const axisX = chart\n .getDefaultAxisX()\n .setMouseInteractions(false)\n .setInterval({ start: -100, end: 100, stopAxisAfter: false })\n .setTitle('%')\n\n // Y-axis of the series\n const axisY = chart\n .getDefaultAxisY()\n .setMouseInteractions(false)\n .setScrollStrategy(undefined)\n // Disable default ticks.\n .setTickStrategy(AxisTickStrategies.Empty)\n\n //Add middle line\n const constantLine = axisX.addConstantLine()\n constantLine\n .setValue(0)\n .setMouseInteractions(false)\n .setStrokeStyle(new SolidLine({ thickness: 2, fillStyle: new SolidFill({ color: ColorRGBA(125, 125, 125) }) }))\n\n /**\n * Add multiple bars.\n * @param entries Add multiple bars data.\n */\n const addValues = (entries) => {\n for (const entry of entries) {\n bars.push(add(entry))\n }\n }\n /**\n * Add single bar.\n * @param entry Add a single bar data.\n */\n const addValue = (entry) => {\n bars.push(add(entry))\n }\n /**\n * Construct bar to draw.\n * @param entry Single bar data.\n */\n const add = (entry) => {\n // Create rect dimensions.\n const rectDimensions = {\n x: 0,\n y: y - figureThickness,\n width: entry.value,\n height: figureThickness,\n }\n // Add rect to the series.\n const rect = rectangles.add(rectDimensions)\n // Set individual color for the bar.\n rect.setFillStyle(entry.value > 0 ? flatRedStyle : flatBlueStyle).setStrokeStyle(emptyLine)\n\n // Show cursor band when mouse is above figure.\n rect.onMouseEnter(() => {\n const dimensions = rect.getDimensionsPositionAndSize()\n // Show band.\n band.setDimensions({\n x: rect.scale.x.getInnerStart(),\n y: dimensions.y - figureGap * 0.5,\n width: rect.scale.x.getInnerInterval(),\n height: dimensions.height + figureGap,\n }).setVisible(true)\n })\n rect.onMouseLeave(() => {\n band.setVisible(false)\n })\n\n // Set view manually.\n axisY.setInterval({\n start: -(figureThickness + figureGap),\n end: y + figureGap,\n stopAxisAfter: false,\n })\n\n // Add custom tick, more like categorical axis.\n axisY\n .addCustomTick()\n .setValue(y - figureGap)\n .setGridStrokeLength(0)\n .setTextFormatter((_) => entry.category)\n .setMarker((marker) => marker.setTextFillStyle(new SolidFill({ color: ColorRGBA(170, 170, 170) })))\n y += figureThickness + figureGap\n // Return data-structure with both original 'entry' and the rectangle figure that represents it.\n return {\n entry,\n rect,\n }\n }\n\n // Return public methods of a bar chart interface.\n return {\n addValue,\n addValues,\n }\n }\n}\n\n// Use bar chart interface to construct series.\nconst chart = barChart({\n // theme: Themes.darkGold\n})\n// Add multiple bars at once.\nchart.addValues([\n { category: 'Jan', value: 20 },\n { category: 'Feb', value: -30 },\n { category: 'Mar', value: -100 },\n { category: 'Apr', value: 100 },\n { category: 'May', value: -75 },\n { category: 'Jun', value: 80 },\n { category: 'Jul', value: -100 },\n { category: 'Aug', value: 35 },\n { category: 'Sep', value: -50 },\n { category: 'Oct', value: 100 },\n { category: 'Nov', value: 5 },\n { category: 'Dec', value: 15 },\n])\n","url":null,"readme":"_Also known as Bar Graph, Column Chart or Column Graph_\n\nSimilarly to **_Column Chart or Vertical Bar Chart_**, this example shows the creation of a column chart made on user side by utilizing RectangleSeries, but displays data as horizontal bars. Bar Charts show discrete numerical comparisons across categories, where the value represents the length of a bar.\n\nThe following code below shows the creation of a Horizontal Bar Chart using a pre-defined interface. Moreover, the current interface allows visualizing columns with negative values.\n\nThe bar series accepts points in format `{ category: string, value: number }`. Any number of points can be added with a single call.\n\n```javascript\n// Create Chart.\nconst chart = barChart()\n\n// Add bars.\nchart.addValues([\n { category: 'A', value: 20 },\n { category: 'B', value: -30 },\n])\n```\n\nThe actual Bar Chart logic just serves to provide a starting point for users to create their own API based on their needs and preferences.\n","image":"horizontalBars"},{"id":"lcjs-example-0302-groupedBars","title":"JavaScript Grouped Bars Chart","tags":["bar","column","group","xy"],"description":"Grouped bars for better categorizing than normal bar chart. Also known as Multi-set and Clustered Bar Chart.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: JS chart examples, covid-19 tracker chart, racing bar charts, mosaic chart, 2D range bar, grouped bar charts. And more!","src":"/*\n * LightningChartJS example that showcases creation of a grouped bars chart.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst {\n lightningChart,\n emptyLine,\n AutoCursorModes,\n UIOrigins,\n LegendBoxBuilders,\n AxisScrollStrategies,\n AxisTickStrategies,\n UIElementBuilders,\n Themes,\n} = lcjs\n\nconst lc = lightningChart()\n\n// Define an interface for creating vertical bars.\nlet barChart\n{\n barChart = (options) => {\n const figureThickness = 10\n const figureGap = figureThickness * 0.25\n const groupGap = figureGap * 3.0\n const groups = []\n const categories = []\n\n // Create a XY-Chart and add a RectSeries to it for rendering rectangles.\n const chart = lc\n .ChartXY(options)\n .setTitle('Grouped Bars (Employee Count)')\n .setAutoCursorMode(AutoCursorModes.onHover)\n // Disable mouse interactions (e.g. zooming and panning) of plotting area\n .setMouseInteractions(false)\n // Temporary fix for library-side bug. Remove after fixed.\n .setPadding({ bottom: 30 })\n\n // X-axis of the series\n const axisX = chart\n .getDefaultAxisX()\n .setMouseInteractions(false)\n .setScrollStrategy(undefined)\n // Disable default ticks.\n .setTickStrategy(AxisTickStrategies.Empty)\n\n // Y-axis of the series\n const axisY = chart\n .getDefaultAxisY()\n .setMouseInteractions(false)\n .setTitle('Number of Employees')\n .setInterval({ start: 0, end: 70, stopAxisAfter: false })\n .setScrollStrategy(AxisScrollStrategies.fitting)\n\n // cursor\n //#region\n // Modify AutoCursor.\n chart.setAutoCursor((cursor) =>\n cursor\n .setPointMarkerVisible(false)\n .setTickMarkerXVisible(false)\n .setTickMarkerYVisible(false)\n .setGridStrokeXStyle(emptyLine)\n .setGridStrokeYStyle(emptyLine)\n .setResultTable((table) => {\n table.setOrigin(UIOrigins.CenterBottom)\n }),\n )\n // Define function that creates a Rectangle series (for each category), that adds cursor functionality to it\n const createSeriesForCategory = (category) => {\n const series = chart.addRectangleSeries().setDefaultStyle((rect) => rect.setStrokeStyle(emptyLine))\n // Change how marker displays its information.\n series.setCursorResultTableFormatter((builder, series, figure) => {\n // Find cached entry for the figure.\n let entry = {\n name: category.name,\n value: category.data[category.figures.indexOf(figure)],\n }\n // Parse result table content from values of 'entry'.\n return builder.addRow('Department:', entry.name).addRow('# of employees:', String(entry.value))\n })\n return series\n }\n //#endregion\n // LegendBox\n //#region\n const legendBox = chart\n .addLegendBox(LegendBoxBuilders.VerticalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.2,\n })\n .setTitle('Department')\n\n //#endregion\n // Function redraws bars chart based on values of 'groups' and 'categories'\n const redraw = () => {\n let x = 0\n for (let groupIndex = 0; groupIndex < groups.length; groupIndex++) {\n const group = groups[groupIndex]\n const xStart = x\n for (const category of categories) {\n const value = category.data[groupIndex]\n if (value !== undefined) {\n // Position figure of respective value.\n const figure = category.figures[groupIndex]\n figure.setDimensions({\n x,\n y: 0,\n width: figureThickness,\n height: value,\n })\n // Figure gap\n x += figureThickness + figureGap\n }\n }\n // Position CustomTick\n group.tick.setValue((xStart + x - figureGap) / 2)\n\n // Group gap\n x += groupGap\n }\n axisX.setInterval({ start: -(groupGap + figureGap), end: x, stopAxisAfter: false })\n }\n const addGroups = (names) => {\n for (const name of names)\n groups.push({\n name,\n tick: axisX\n .addCustomTick()\n .setGridStrokeLength(0)\n .setTextFormatter((_) => name),\n })\n }\n const addCategory = (entry) => {\n // Each category has its own series.\n const series = createSeriesForCategory(entry).setName(entry.name)\n entry.figures = entry.data.map((value) => series.add({ x: 0, y: 0, width: 0, height: 0 }))\n legendBox.add(series)\n categories.push(entry)\n redraw()\n }\n // Return public methods of a bar chart interface.\n return {\n addCategory,\n addGroups,\n }\n }\n}\n\n// Use bar chart interface to construct series\nconst chart = barChart({\n // theme: Themes.darkGold\n})\n\n// Add groups\nchart.addGroups(['Finland', 'Germany', 'UK'])\n\n// Add categories of bars\nconst categories = ['Engineers', 'Sales', 'Marketing']\nconst data = [\n [48, 27, 24],\n [19, 40, 14],\n [33, 33, 62],\n]\ndata.forEach((data, i) =>\n chart.addCategory({\n name: categories[i],\n data,\n }),\n)\n","url":null,"readme":"_Also known as Multi-set / Clustered Bar Chart_\n\nThis example shows creation of a Grouped Bar Chart made on user side by utilizing RectangleSeries. This is a variation of normal Bar Chart where groups of bars are spaced apart from each other for further categorizing.\n\nHere's the creation of a Grouped Bar Chart using a pre-defined interface.\n\n```javascript\n// Create Chart.\nconst chart = barChart()\n// Add groups.\nchart.addGroups(['Group A', 'Group B'])\n// Add categories & values.\nchart\n .addCategory({\n name: 'Category #1',\n // 'data' contain values for each group in same order as they were defined before.\n data: [100, 200],\n fill: new SolidFill().setColor(prettyColor1),\n })\n .addCategory({\n name: 'Category #2',\n // 'data' contain values for each group in same order as they were defined before.\n data: [50, 160],\n fill: new SolidFill().setColor(prettyColor2),\n })\n```\n\nThe actual Grouped Bar Chart logic just serves to provide a starting point for users to create their own API based on their needs and preferences.\n","image":"groupedBars"},{"id":"lcjs-example-0303-spanChart","title":"JavaScript Span Chart","tags":["bar","xy"],"description":"Also known as a Range Bar, Column Graph, Floating Bar Graph, Difference Graph, High-Low Graph.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: JS chart examples, covid-19 tracker chart, racing bar charts, mosaic chart, 2D range bar, grouped bar charts. And more!","src":"/*\n * LightningChartJS example that showcases creation of a Span-chart.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst {\n lightningChart,\n SolidFill,\n ColorRGBA,\n emptyLine,\n emptyFill,\n AxisTickStrategies,\n ColorPalettes,\n SolidLine,\n UIOrigins,\n UIElementBuilders,\n UILayoutBuilders,\n UIDraggingModes,\n Themes,\n} = lcjs\n\nconst lc = lightningChart()\n\n// Titles for span\nconst titles = [\n 'Certificate exams',\n 'Interview',\n 'Trainee training program',\n 'Department competition training sessions',\n 'Internet security training',\n 'Scrum meeting',\n 'Development meeting',\n 'First Aid training',\n 'Conquering the silence - How to improve your marketing',\n]\n\n// Define an interface for creating span charts.\nlet spanChart\n// User side SpanChart logic.\n{\n spanChart = () => {\n // Create a XY-Chart and add a RectSeries to it for rendering rectangles.\n const chart = lc\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Conference Room Reservations')\n .setMouseInteractions(false)\n // Disable default AutoCursor\n .setAutoCursorMode(0)\n .setPadding({ right: '2' })\n const rectangles = chart.addRectangleSeries()\n\n const axisX = chart\n .getDefaultAxisX()\n .setMouseInteractions(false)\n // Hide default ticks, instead rely on CustomTicks.\n .setTickStrategy(AxisTickStrategies.Empty)\n\n const axisY = chart\n .getDefaultAxisY()\n .setMouseInteractions(false)\n .setTitle('Conference Room')\n // Hide default ticks, instead rely on CustomTicks.\n .setTickStrategy(AxisTickStrategies.Empty)\n\n let y = 0\n for (let i = 8; i <= 20; i++) {\n const label = i > 12 ? i - 12 + 'PM' : i + 'AM'\n axisX\n .addCustomTick()\n .setValue(i)\n .setTickLength(4)\n .setGridStrokeLength(0)\n .setTextFormatter((_) => label)\n .setMarker((marker) => marker.setTextFillStyle(new SolidFill({ color: ColorRGBA(170, 170, 170) })))\n }\n\n const figureHeight = 10\n const figureThickness = 10\n const figureGap = figureThickness * 0.5\n const fitAxes = () => {\n // Custom fitting for some additional margins\n axisY.setInterval({ start: y, end: figureHeight * 0.5, stopAxisAfter: false })\n }\n\n let customYRange = figureHeight + figureGap * 1.6\n const addCategory = (category) => {\n const categoryY = y\n\n const addSpan = (i, min, max, index) => {\n // Add rect\n const rectDimensions = {\n x: min,\n y: categoryY - figureHeight,\n width: max - min,\n height: figureHeight,\n }\n // Add element for span labels\n const spanText = chart\n .addUIElement(UILayoutBuilders.Row, { x: axisX, y: axisY })\n .setOrigin(UIOrigins.Center)\n .setDraggingMode(UIDraggingModes.notDraggable)\n .setPosition({\n x: (min + max) / 2,\n y: rectDimensions.y + 5,\n })\n .setBackground((background) => background.setFillStyle(emptyFill).setStrokeStyle(emptyLine))\n\n spanText.addElement(\n UIElementBuilders.TextBox.addStyler((textBox) =>\n textBox\n .setTextFont((fontSettings) => fontSettings.setSize(13))\n .setText(titles[index])\n .setTextFillStyle(new SolidFill().setColor(ColorRGBA(255, 255, 255))),\n ),\n )\n if (index != i) {\n customYRange = customYRange + figureHeight + 1\n }\n fitAxes()\n // Return figure\n return rectangles.add(rectDimensions)\n }\n\n // Add custom tick for category\n axisY\n .addCustomTick()\n .setValue(y - figureHeight * 0.5)\n .setGridStrokeLength(0)\n .setTextFormatter((_) => category)\n .setMarker((marker) => marker.setTextFillStyle(new SolidFill({ color: ColorRGBA(170, 170, 170) })))\n y -= figureHeight * 1.5\n\n fitAxes()\n // Return interface for category.\n return {\n addSpan,\n }\n }\n // Return interface for span chart.\n return {\n addCategory,\n }\n }\n}\n\n// Use the interface for example.\nconst chart = spanChart()\nconst categories = [\n '5 chair room',\n '5 chair room',\n '5 chair room',\n '10 chair room',\n '10 chair room',\n '20 chair room',\n 'Conference Hall',\n].map((name) => chart.addCategory(name))\nconst colorPalette = ColorPalettes.flatUI(categories.length)\nconst fillStyles = categories.map((_, i) => new SolidFill({ color: colorPalette(i) }))\nconst strokeStyle = new SolidLine({\n fillStyle: new SolidFill({ color: ColorRGBA(0, 0, 0) }),\n thickness: 2,\n})\nconst spans = [\n [\n [10, 13],\n [16, 18],\n ],\n [[8, 17]],\n [[12, 20]],\n [[9, 17]],\n [\n [10, 12],\n [15, 19],\n ],\n [[11, 16]],\n [[9, 18]],\n]\n\nlet index = 0\nspans.forEach((values, i) => {\n values.forEach((value, j) => {\n categories[i].addSpan(i, value[0], value[1], index).setFillStyle(fillStyles[i]).setStrokeStyle(strokeStyle)\n index = index + 1\n })\n})\n","url":null,"readme":"_Also known as a Range Bar, Column Graph, Floating Bar Graph, Difference Graph, High-Low Graph_\n\nThis example shows creation of a Span Chart made on user side by utilizing RectangleSeries. Span Charts display categorized value ranges - focusing only on the extreme values. Each category can have multiple 'spans'.\n\nHere's the creation of a Span Chart using a pre-defined interface.\n\n```javascript\n// Create Chart.\nconst chart = spanChart()\n// Add categories.\nconst tools = chart.addCategory('Tools')\nconst fools = chart.addCategory('Fools')\n// Add spans as min-max.\ntools.addSpan(100, 150)\nfools.addSpan(50, 75)\n\n// Adding a span returns the actual Figure that represents it, which can be styled.\nfools.addSpan(200, 250).setFillStyle(new SolidFill().setColor(prettyColor)).setStrokeStyle(emptyLine)\n```\n\nThe actual Span Chart logic just serves to provide a starting point for users to create their own API based on their needs and preferences. The functionality can be easily extended to construct **_Gantt Chart_**.\n","image":"spanChart"},{"id":"lcjs-example-0304-mosaicChart","title":"JavaScript Mosaic Chart","tags":["bar","xy"],"description":"Mosaic Chart can be used to compare observation counts of groups across different categories. Also known as Marimekko Chart.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: JS chart examples, covid-19 tracker chart, racing bar charts, mosaic chart, 2D range bar, grouped bar charts. And more!","src":"/*\n * LightningChartJS example for rendering a 'Mosaic chart'.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst {\n lightningChart,\n SolidFill,\n ColorRGBA,\n emptyLine,\n emptyFill,\n UIElementBuilders,\n UIBackgrounds,\n UIOrigins,\n AxisTickStrategies,\n Themes,\n} = lcjs\n\nconst lc = lightningChart()\n\n// Define an interface for creating mosaic charts.\nlet mosaicChart\n// User side MosaicChart logic.\n{\n mosaicChart = () => {\n // Create a XY-Chart and add a RectSeries to it for rendering rectangles.\n const chart = lc\n .ChartXY({\n // theme: Themes.darkGold\n })\n .setTitle('Controlled Group Testing')\n .setMouseInteractions(false)\n // Disable default AutoCursor\n .setAutoCursorMode(0)\n const rectangles = chart.addRectangleSeries()\n\n const bottomAxis = chart\n .getDefaultAxisX()\n .setInterval({ start: 0, end: 100, stopAxisAfter: false })\n .setScrollStrategy(undefined)\n .setMouseInteractions(false)\n .setTitle('%')\n const leftAxis = chart\n .getDefaultAxisY()\n .setInterval({ start: 0, end: 100, stopAxisAfter: false })\n .setMouseInteractions(false)\n // Hide default ticks of left Axis.\n .setTickStrategy(AxisTickStrategies.Empty)\n const rightAxis = chart\n .addAxisY({ opposite: true })\n .setInterval({ start: 0, end: 100, stopAxisAfter: false })\n .setScrollStrategy(undefined)\n .setMouseInteractions(false)\n .setTitle('%')\n const topAxis = chart\n .addAxisX({ opposite: true })\n .setInterval({ start: 0, end: 100, stopAxisAfter: false })\n .setMouseInteractions(false)\n // Hide default ticks of top Axis.\n .setTickStrategy(AxisTickStrategies.Empty)\n\n // Create marker for the top of each column.\n const categoryMarkerBuilder = UIElementBuilders.AxisTickMajor\n // Create text on top of each section.\n const subCategoryLabelBuilder = UIElementBuilders.TextBox\n // Style the label.\n .addStyler((label) =>\n label\n // Set the origin point and fillStyle (color) for the label.\n .setOrigin(UIOrigins.Center)\n .setTextFillStyle(new SolidFill().setColor(ColorRGBA(255, 255, 255)))\n .setMouseInteractions(false)\n .setBackground((background) => background.setFillStyle(emptyFill).setStrokeStyle(emptyLine)),\n )\n\n const categories = []\n const yCategories = []\n const subCategories = []\n let margin = 0.1\n\n // Recreate rectangle figures from scratch.\n const _updateChart = () => {\n // Remove already existing figures.\n rectangles.clear()\n // Make new figures from each category.\n const sumCategoryValues = categories.reduce((prev, cur) => prev + cur.value, 0)\n if (sumCategoryValues > 0) {\n let xPos = 0\n // For each category on a single column, recreate the marker to the left of the chart.\n for (const yCategory of yCategories) {\n yCategory.tick\n .setTextFormatter((_) => yCategory.name)\n .setValue(yCategory.value)\n .setMarkerVisible(true)\n }\n // For each category (or column)\n for (const category of categories) {\n // Calculate the correct value to display for each category\n const relativeCategoryValue = (100 * category.value) / sumCategoryValues\n const sumSubCategoryValues = category.subCategories.reduce((prev, cur) => prev + cur.value, 0)\n // If there are subCategories for the column\n if (sumSubCategoryValues > 0) {\n // Recreate the tick to display above each category and set the correct value to it\n category.tick\n .setTextFormatter((_) => category.name + ' (' + Math.round(relativeCategoryValue) + '%)')\n .setValue(xPos + relativeCategoryValue / 2)\n .setMarkerVisible(true)\n let yPos = 0\n for (const subCategory of category.subCategories) {\n // Calculate proper value for the subCategory\n const relativeSubCategoryValue = (100 * subCategory.value) / sumSubCategoryValues\n if (relativeSubCategoryValue > 0) {\n const rectangleDimensions = {\n x: xPos + margin,\n y: yPos + margin,\n width: relativeCategoryValue - 2 * margin,\n height: relativeSubCategoryValue - 2 * margin,\n }\n // Create a rectangle to represent the subCategory\n rectangles\n .add(rectangleDimensions)\n .setFillStyle(subCategory.subCategory.fillStyle)\n .setStrokeStyle(emptyLine)\n // Recreate the label for the subCategory and update the value for it\n subCategory.label\n .setText(Math.round(relativeSubCategoryValue) + '%')\n .setPosition({\n x: xPos + relativeCategoryValue / 2,\n y: yPos + relativeSubCategoryValue / 2,\n })\n .setVisible(true)\n }\n // The subCategory is not shown, so we can dispose of its label.\n else subCategory.label.setVisible(false)\n yPos += relativeSubCategoryValue\n }\n } else {\n // There are no subCategories for the column, so the elements related to it can be disposed.\n category.tick.setMarkerVisible(false)\n category.subCategories.forEach((sub) => sub.label.setVisible(false))\n }\n xPos += relativeCategoryValue\n }\n }\n }\n // Method to add a new subCategory to the chart.\n const addSubCategory = () => {\n const subCategory = {\n fillStyle: Themes.darkGold.seriesFillStyle,\n setFillStyle(fillStyle) {\n this.fillStyle = fillStyle\n // Refresh the chart.\n _updateChart()\n return this\n },\n }\n subCategories.push(subCategory)\n return subCategory\n }\n // Method to add a new main category to the chart.\n const addCategory = (name) => {\n const category = {\n name,\n value: 0,\n tick: topAxis.addCustomTick(categoryMarkerBuilder).setGridStrokeStyle(emptyLine),\n subCategories: [],\n setCategoryValue(value) {\n this.value = value\n _updateChart()\n return this\n },\n setSubCategoryValue(subCategory, value) {\n const existing = this.subCategories.find((a) => a.subCategory == subCategory)\n if (existing !== undefined) {\n existing.value = value\n } else {\n this.subCategories.push({\n subCategory,\n value,\n label: chart.addUIElement(subCategoryLabelBuilder, {\n x: bottomAxis,\n y: rightAxis,\n }),\n })\n }\n _updateChart()\n return this\n },\n }\n categories.push(category)\n return category\n }\n // Method to add subCategory markers.\n const addYCategory = (name, value) => {\n const yCategory = {\n name,\n value: value,\n tick: leftAxis.addCustomTick(categoryMarkerBuilder).setGridStrokeStyle(emptyLine),\n setCategoryYValue(value) {\n this.value = value\n _updateChart()\n return this\n },\n }\n yCategories.push(yCategory)\n return yCategory\n }\n // Return interface for mosaic chart\n return {\n addSubCategory,\n addCategory,\n addYCategory,\n }\n }\n}\n\n// Use the interface for example.\nconst chart = mosaicChart()\nchart.addYCategory('Refreshed', 80)\nchart.addYCategory('No Effect', 40)\nchart.addYCategory('Caused Exhaustion', 12)\n\nconst subCategory_exhaust = chart.addSubCategory().setFillStyle(new SolidFill().setColor(ColorRGBA(200, 0, 0)))\nconst subCategory_noEffect = chart.addSubCategory().setFillStyle(new SolidFill().setColor(ColorRGBA(240, 190, 0)))\nconst subCategory_refresh = chart.addSubCategory().setFillStyle(new SolidFill().setColor(ColorRGBA(0, 180, 0)))\n\nchart\n .addCategory('With caffeine')\n .setCategoryValue(48)\n .setSubCategoryValue(subCategory_exhaust, 25)\n .setSubCategoryValue(subCategory_noEffect, 35)\n .setSubCategoryValue(subCategory_refresh, 40)\n\nchart\n .addCategory('Decaffeinated')\n .setCategoryValue(32)\n .setSubCategoryValue(subCategory_exhaust, 10)\n .setSubCategoryValue(subCategory_noEffect, 45)\n .setSubCategoryValue(subCategory_refresh, 45)\n\nchart\n .addCategory('Placebo product')\n .setCategoryValue(20)\n .setSubCategoryValue(subCategory_exhaust, 20)\n .setSubCategoryValue(subCategory_noEffect, 50)\n .setSubCategoryValue(subCategory_refresh, 30)\n","url":null,"readme":"_Also known as Marimekko Chart_\n\nThis example shows creation of a Mosaic Chart made on user side by utilizing RectangleSeries. Mosaic Chart can be used to compare observation counts of groups (sub-categories) across different categories.\n\nHere's the creation of a Mosaic Chart using a pre-defined interface.\n\n```javascript\n// Create Chart.\nconst chart = mosaicChart()\n// Add sub-categories (Each X-category can have a single value for each sub-category).\nconst A = chart.addSubCategory('A')\nconst B = chart.addSubCategory('B')\n// Add categories (These are drawn progressively on X axis).\nconst category1 = chart.addCategory('Category #1')\nconst category2 = chart.addCategory('Category #2')\n// Set values of categories (relative X size).\ncategory1.setCategoryValue(60)\ncategory2.setCategoryValue(40)\n// Set values of sub-categories on categories (relative Y size).\ncategory1.setSubCategoryValue(A, 40).setSubCategoryValue(B, 60)\ncategory2.setSubCategoryValue(A, 80).setSubCategoryValue(B, 20)\n```\n\nThe actual Mosaic Chart logic just serves to provide a starting point for users to create their own API based on their needs and preferences.\n","image":"mosaicChart"},{"id":"lcjs-example-0305-racingBars","title":"JavaScript COVID-19 Tracker Chart","tags":["bar","column","xy"],"description":"Bar chart race shows the dynamics of the Covid-19 spread.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: JS chart examples, covid-19 tracker chart, racing bar charts, mosaic chart, 2D range bar, grouped bar charts. And more!","src":"/*\n * COVID-19 Bar chart race on LightningChartJS.\n */\n\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst {\n lightningChart,\n SolidFill,\n ColorHEX,\n AnimationEasings,\n Animator,\n UIOrigins,\n UILayoutBuilders,\n AxisTickStrategies,\n UIElementBuilders,\n AxisScrollStrategies,\n emptyLine,\n emptyFill,\n Themes,\n} = lcjs\n\nconst ls = lightningChart()\n\n// Variables used in the example\nconst rectThickness = 1\nconst rectGap = 0.5\nconst bars = []\nconst duration = 400 // duration of timer and animation\n\nlet y = 0\nlet initday = 15\n// 2 days ago. the final day of the race\nlet yesterday = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() - 2).toISOString() // ((d) => { d.setDate(d.getDate() - 2); return d })(new Date)\nlet connectionError = ''\n\nconst barChart = (options) => {\n // Create a XY chart and add a RectSeries to it for rendering rectangles.\n const chart = ls\n .ChartXY(options)\n // Use Chart's title to track date\n .setTitle(\n 'COVID-19 cases ' + new Date(2020, 2, 15).toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }),\n )\n // Disable AutoCursor (hide information of bar by hover the mouse over it)\n .setAutoCursorMode(0)\n // Add padding to Chart's right side\n .setPadding({ right: 40 })\n .setMouseInteractions(false)\n\n // Cache X axis\n const axisX = chart\n .getDefaultAxisX()\n // Disable the scrolling animation for the X Axis, so it doesn't interfere.\n .setAnimationScroll(false)\n .setMouseInteractions(false)\n\n // Cache Y axis\n const axisY = chart\n .getDefaultAxisY()\n // Hide default ticks\n .setTickStrategy(AxisTickStrategies.Empty)\n // Disable Mouse interactions for the Y Axis\n .setMouseInteractions(false)\n\n // Set custom label for Y-axis\n const createTickLabel = (entry, y) => {\n return axisY\n .addCustomTick()\n .setValue(y + rectGap)\n .setGridStrokeLength(0)\n .setTextFormatter((_) => entry.country)\n .setMarker((marker) =>\n marker\n .setTextFillStyle(new SolidFill({ color: ColorHEX('#aaaf') }))\n .setTextFont((fontSettings) => fontSettings.setSize(17)),\n )\n }\n\n // Function returns single bar with property of dimensions, data(entry) and label\n const addCountryHandler = (entry) => {\n const rectDimensions = {\n x: 0,\n y: y,\n width: entry.value,\n height: rectThickness,\n }\n\n // Each country has its own rectangle series for different style.\n const rectSeries = chart.addRectangleSeries()\n const rect = rectSeries.add(rectDimensions).setStrokeStyle(emptyLine)\n\n // Add TextBox element to the bar\n const label = chart\n .addUIElement(UILayoutBuilders.TextBox, { x: axisX, y: axisY })\n .setOrigin(UIOrigins.LeftBottom)\n .setPosition({\n x: entry.value,\n y: y,\n })\n .setText(entry.value.toLocaleString())\n .setTextFont((fontSettings) => fontSettings.setSize(15))\n .setPadding(10)\n .setBackground((background) => background.setFillStyle(emptyFill).setStrokeStyle(emptyLine))\n\n // Set label title and position\n const tick = createTickLabel(entry, y)\n\n // Set interval for Y axis\n axisY.setInterval({ start: -rectThickness, end: y, stopAxisAfter: false })\n\n // Increase value of Y variable\n y += rectThickness\n\n // Return figure\n return {\n entry,\n rect,\n label,\n tick,\n }\n }\n\n // Loop for adding bars\n const addCountries = (entries) => {\n axisX\n .setMouseInteractions(false) // Cache Y axis\n .setTickStrategy(AxisTickStrategies.Numeric, (tickStrategy) =>\n tickStrategy.setFormattingFunction((timeScaled) => {\n if (timeScaled / 1000 >= 1000) {\n return `${Math.round(timeScaled / 1000000)}M`\n }\n return `${Math.round(timeScaled / 1000)}K`\n }),\n )\n for (const entry of entries) {\n bars.push(addCountryHandler(entry))\n }\n }\n\n // Sorting and splicing array of data\n const sortCountries = (data, raceDay) => {\n let myday = raceDay.getMonth() + 1 + '/' + raceDay.getDate() + '/' + raceDay.getFullYear().toString().substr(-2)\n const countries = { ...data }\n\n // Map list of countries and sort them in the order (First sort by value, then by country)\n const countryList = Object.values(countries)\n .map((c) => ({ country: c.country, value: c.history[myday] }))\n .sort((a, b) => (a.value > b.value ? 1 : a.value === b.value ? (a.country > b.country ? 1 : -1) : -1))\n\n // Keep only top 20 countries\n countryList.splice(0, countryList.length - 20)\n\n return countryList\n }\n\n // Loop for re-rendering list of data\n const startRace = (data) => {\n // Inital day of race\n let raceDay = new Date(2020, 2, initday)\n\n // Set title of chart\n chart.setTitle(\n connectionError +\n ' COVID-19 cases ' +\n raceDay.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }),\n )\n\n // Get sorting data\n const sortedCountries = sortCountries(data, raceDay)\n\n // Check if the functions(startRace) has already done first pass\n if (bars.length > 0) {\n for (let i = 0; i < sortedCountries.length; i++) {\n // Prevent automatic scrolling of Y axis\n axisY.setScrollStrategy(AxisScrollStrategies.progressive)\n\n // Get index of each bar before sorting\n const initY = bars.map((e) => e.entry.country).indexOf(sortedCountries[i].country)\n\n // Get index of each bar after sorting\n const finalY = sortedCountries.map((e) => e.country).indexOf(sortedCountries[i].country)\n\n // Get Dimensions, Position And Size of bar[i]\n const rectDimensions = bars[i].rect.getDimensionsPositionAndSize()\n\n // Animation of changing the position of bar[i] by Y axis\n bars[i].animator = Animator(() => {\n undefined\n })(\n // function that executes after animation\n // Time for animation and easing type\n duration,\n AnimationEasings.linear,\n )(\n // functions gets 2 arrays of 2 values (range) - initY (prev Y pos) and finalY.y(new Y pos) and rectDimensions.width, sortedCountries[i].value - prev and next width of each bar\n // and creates loop with increasing intermediate value (newPos, newWidth)\n [\n [initY, finalY],\n [rectDimensions.width, sortedCountries[i].value],\n ],\n ([animatedYPosition, animatedValue]) => {\n // Reset values\n bars[i].entry.country = sortedCountries[i].country\n // Animate x and y positions\n bars[i].rect\n .setDimensions({\n x: 0,\n y: animatedYPosition,\n width: animatedValue,\n height: 0.98,\n })\n .setVisible(true)\n\n // Animate labels\n bars[i].label\n // The topmost country's label should be inside the bar, the others should be to the right of the bar.\n .setOrigin(i !== bars.length - 1 ? UIOrigins.LeftCenter : UIOrigins.RightCenter)\n // Position the label\n .setPosition({\n x: animatedValue,\n y: animatedYPosition > 0 ? animatedYPosition + rectGap : rectGap,\n })\n .setText(Math.round(animatedValue).toLocaleString())\n .setPadding(10, 0, 10, 0)\n // Disable mouse interactions for the label\n .setMouseInteractions(false)\n // update tick position\n bars[i].tick.setValue(animatedYPosition + rectGap)\n },\n )\n }\n } else {\n // If function executes for the first time, add countries to the Chart.\n addCountries(sortedCountries)\n }\n\n // we've bot reached the last day (i.e. yesterday) execute the function again and increase the day\n if (raceDay.toISOString() !== yesterday) {\n initday++\n setTimeout(() => startRace(data), duration)\n }\n }\n\n // function is used for showing errors on line 328\n const setTitle = (msg) => {\n chart.setTitle(msg)\n }\n\n return {\n addCountries,\n startRace,\n setTitle,\n }\n}\n\nconst startRaceHandler = (chart) => {\n // Fetch all countries and history of cases\n fetch('https://lightningchart.com/lightningchart-js-interactive-examples/data/covid/confirmed.json')\n .then((res) => res.json())\n .then((data) => {\n const dat = [...data.locations]\n\n // After fetching and merging data create bars\n chart.startRace(mergeData(dat))\n })\n .catch((err) => {\n yesterday = '2020-05-30T21:00:00.000Z'\n connectionError = 'Example of data'\n chart.startRace(mergeData(fallbackData))\n })\n\n // Some countries are divided by region and it is needed to megre them\n const mergeData = (data) => {\n const result = []\n // Return only specific information\n data.forEach((basket) => {\n let ob = {\n country: basket['country'],\n history: { ...basket['history'] },\n }\n\n // Check if array already contains the country\n let has = false\n result.find((obj) => (obj.country == ob.country ? (has = true) : (has = false)))\n\n // Unite object values\n const sum = (obj, newObj) => {\n Object.keys(obj).map((date) => (obj[date] += newObj[date]))\n }\n\n // Format the data\n if (has) {\n result.find((obj) => obj.country == ob.country && sum(obj.history, ob.history))\n } else {\n result.push(ob)\n }\n })\n\n return result\n }\n}\n\n// Create chart\nconst newchart = barChart({\n // theme: Themes.light\n})\n\n// Start fetching\nstartRaceHandler(newchart)\n\n//fallback data\nconst fallbackData = [\n {\n country: 'US',\n history: {\n '3/15/20': 3212,\n '3/16/20': 4679,\n '3/17/20': 6512,\n '3/18/20': 9169,\n '3/19/20': 13663,\n '3/20/20': 20030,\n '3/21/20': 26025,\n '3/22/20': 34855,\n '3/23/20': 46086,\n '3/24/20': 56698,\n '3/25/20': 68773,\n '3/26/20': 86613,\n '3/27/20': 105293,\n '3/28/20': 124900,\n '3/29/20': 143779,\n '3/30/20': 165861,\n '3/31/20': 192177,\n '4/1/20': 224418,\n '4/2/20': 256636,\n '4/3/20': 288906,\n '4/4/20': 321318,\n '4/5/20': 351203,\n '4/6/20': 382613,\n '4/7/20': 413382,\n '4/8/20': 444580,\n '4/9/20': 480534,\n '4/10/20': 514942,\n '4/11/20': 544119,\n '4/12/20': 571400,\n '4/13/20': 598310,\n '4/14/20': 627082,\n '4/15/20': 652513,\n '4/16/20': 682548,\n '4/17/20': 715267,\n '4/18/20': 743223,\n '4/19/20': 769416,\n '4/20/20': 799212,\n '4/21/20': 825046,\n '4/22/20': 853818,\n '4/23/20': 887386,\n '4/24/20': 919658,\n '4/25/20': 950100,\n '4/26/20': 976680,\n '4/27/20': 1000298,\n '4/28/20': 1024746,\n '4/29/20': 1051136,\n '4/30/20': 1080303,\n '5/1/20': 1115219,\n '5/2/20': 1142639,\n '5/3/20': 1167095,\n '5/4/20': 1191071,\n '5/5/20': 1215543,\n '5/6/20': 1240053,\n '5/7/20': 1267418,\n '5/8/20': 1294224,\n '5/9/20': 1319414,\n '5/10/20': 1338381,\n '5/11/20': 1357566,\n '5/12/20': 1380423,\n '5/13/20': 1400812,\n '5/14/20': 1427725,\n '5/15/20': 1452425,\n '5/16/20': 1476586,\n '5/17/20': 1495068,\n '5/18/20': 1517302,\n '5/19/20': 1538241,\n '5/20/20': 1560975,\n '5/21/20': 1586662,\n '5/22/20': 1610252,\n '5/23/20': 1631496,\n '5/24/20': 1651676,\n '5/25/20': 1670442,\n '5/26/20': 1689948,\n '5/27/20': 1708342,\n '5/28/20': 1730551,\n '5/29/20': 1755010,\n '5/30/20': 1778689,\n '5/31/20': 1797763,\n },\n },\n {\n country: 'Russia',\n history: {\n '3/15/20': 63,\n '3/16/20': 90,\n '3/17/20': 114,\n '3/18/20': 147,\n '3/19/20': 199,\n '3/20/20': 253,\n '3/21/20': 306,\n '3/22/20': 367,\n '3/23/20': 438,\n '3/24/20': 495,\n '3/25/20': 658,\n '3/26/20': 840,\n '3/27/20': 1036,\n '3/28/20': 1264,\n '3/29/20': 1534,\n '3/30/20': 1836,\n '3/31/20': 2337,\n '4/1/20': 2777,\n '4/2/20': 3548,\n '4/3/20': 4149,\n '4/4/20': 4731,\n '4/5/20': 5389,\n '4/6/20': 6343,\n '4/7/20': 7497,\n '4/8/20': 8672,\n '4/9/20': 10131,\n '4/10/20': 11917,\n '4/11/20': 13584,\n '4/12/20': 15770,\n '4/13/20': 18328,\n '4/14/20': 21102,\n '4/15/20': 24490,\n '4/16/20': 27938,\n '4/17/20': 32008,\n '4/18/20': 36793,\n '4/19/20': 42853,\n '4/20/20': 47121,\n '4/21/20': 52763,\n '4/22/20': 57999,\n '4/23/20': 62773,\n '4/24/20': 68622,\n '4/25/20': 74588,\n '4/26/20': 80949,\n '4/27/20': 87147,\n '4/28/20': 93558,\n '4/29/20': 99399,\n '4/30/20': 106498,\n '5/1/20': 114431,\n '5/2/20': 124054,\n '5/3/20': 134687,\n '5/4/20': 145268,\n '5/5/20': 155370,\n '5/6/20': 165929,\n '5/7/20': 177160,\n '5/8/20': 187859,\n '5/9/20': 198676,\n '5/10/20': 209688,\n '5/11/20': 221344,\n '5/12/20': 232243,\n '5/13/20': 242271,\n '5/14/20': 252245,\n '5/15/20': 262843,\n '5/16/20': 272043,\n '5/17/20': 281752,\n '5/18/20': 290678,\n '5/19/20': 299941,\n '5/20/20': 308705,\n '5/21/20': 317554,\n '5/22/20': 326448,\n '5/23/20': 335882,\n '5/24/20': 344481,\n '5/25/20': 353427,\n '5/26/20': 362342,\n '5/27/20': 370680,\n '5/28/20': 379051,\n '5/29/20': 387623,\n '5/30/20': 396575,\n '5/31/20': 405843,\n },\n },\n {\n country: 'Spain',\n history: {\n '3/15/20': 7798,\n '3/16/20': 9942,\n '3/17/20': 11748,\n '3/18/20': 13910,\n '3/19/20': 17963,\n '3/20/20': 20410,\n '3/21/20': 25374,\n '3/22/20': 28768,\n '3/23/20': 35136,\n '3/24/20': 39885,\n '3/25/20': 49515,\n '3/26/20': 57786,\n '3/27/20': 65719,\n '3/28/20': 73235,\n '3/29/20': 80110,\n '3/30/20': 87956,\n '3/31/20': 95923,\n '4/1/20': 104118,\n '4/2/20': 112065,\n '4/3/20': 119199,\n '4/4/20': 126168,\n '4/5/20': 131646,\n '4/6/20': 136675,\n '4/7/20': 141942,\n '4/8/20': 148220,\n '4/9/20': 153222,\n '4/10/20': 158273,\n '4/11/20': 163027,\n '4/12/20': 166831,\n '4/13/20': 170099,\n '4/14/20': 172541,\n '4/15/20': 177644,\n '4/16/20': 184948,\n '4/17/20': 190839,\n '4/18/20': 191726,\n '4/19/20': 198674,\n '4/20/20': 200210,\n '4/21/20': 204178,\n '4/22/20': 208389,\n '4/23/20': 213024,\n '4/24/20': 202990,\n '4/25/20': 205905,\n '4/26/20': 207634,\n '4/27/20': 209465,\n '4/28/20': 210773,\n '4/29/20': 212917,\n '4/30/20': 213435,\n '5/1/20': 215216,\n '5/2/20': 216582,\n '5/3/20': 217466,\n '5/4/20': 218011,\n '5/5/20': 219329,\n '5/6/20': 220325,\n '5/7/20': 221447,\n '5/8/20': 222857,\n '5/9/20': 223578,\n '5/10/20': 224350,\n '5/11/20': 227436,\n '5/12/20': 228030,\n '5/13/20': 228691,\n '5/14/20': 229540,\n '5/15/20': 230183,\n '5/16/20': 230698,\n '5/17/20': 230698,\n '5/18/20': 231606,\n '5/19/20': 232037,\n '5/20/20': 232555,\n '5/21/20': 233037,\n '5/22/20': 234824,\n '5/23/20': 235290,\n '5/24/20': 235772,\n '5/25/20': 235400,\n '5/26/20': 236259,\n '5/27/20': 236259,\n '5/28/20': 237906,\n '5/29/20': 238564,\n '5/30/20': 239228,\n '5/31/20': 239479,\n },\n },\n {\n country: 'Turkey',\n history: {\n '3/15/20': 6,\n '3/16/20': 18,\n '3/17/20': 47,\n '3/18/20': 98,\n '3/19/20': 192,\n '3/20/20': 359,\n '3/21/20': 670,\n '3/22/20': 1236,\n '3/23/20': 1529,\n '3/24/20': 1872,\n '3/25/20': 2433,\n '3/26/20': 3629,\n '3/27/20': 5698,\n '3/28/20': 7402,\n '3/29/20': 9217,\n '3/30/20': 10827,\n '3/31/20': 13531,\n '4/1/20': 15679,\n '4/2/20': 18135,\n '4/3/20': 20921,\n '4/4/20': 23934,\n '4/5/20': 27069,\n '4/6/20': 30217,\n '4/7/20': 34109,\n '4/8/20': 38226,\n '4/9/20': 42282,\n '4/10/20': 47029,\n '4/11/20': 52167,\n '4/12/20': 56956,\n '4/13/20': 61049,\n '4/14/20': 65111,\n '4/15/20': 69392,\n '4/16/20': 74193,\n '4/17/20': 78546,\n '4/18/20': 82329,\n '4/19/20': 86306,\n '4/20/20': 90980,\n '4/21/20': 95591,\n '4/22/20': 98674,\n '4/23/20': 101790,\n '4/24/20': 104912,\n '4/25/20': 107773,\n '4/26/20': 110130,\n '4/27/20': 112261,\n '4/28/20': 114653,\n '4/29/20': 117589,\n '4/30/20': 120204,\n '5/1/20': 122392,\n '5/2/20': 124375,\n '5/3/20': 126045,\n '5/4/20': 127659,\n '5/5/20': 129491,\n '5/6/20': 131744,\n '5/7/20': 133721,\n '5/8/20': 135569,\n '5/9/20': 137115,\n '5/10/20': 138657,\n '5/11/20': 139771,\n '5/12/20': 141475,\n '5/13/20': 143114,\n '5/14/20': 144749,\n '5/15/20': 146457,\n '5/16/20': 148067,\n '5/17/20': 149435,\n '5/18/20': 150593,\n '5/19/20': 151615,\n '5/20/20': 152587,\n '5/21/20': 153548,\n '5/22/20': 154500,\n '5/23/20': 155686,\n '5/24/20': 156827,\n '5/25/20': 157814,\n '5/26/20': 158762,\n '5/27/20': 159797,\n '5/28/20': 160979,\n '5/29/20': 162120,\n '5/30/20': 163103,\n '5/31/20': 163942,\n },\n },\n {\n country: 'Germany',\n history: {\n '3/15/20': 5795,\n '3/16/20': 7272,\n '3/17/20': 9257,\n '3/18/20': 12327,\n '3/19/20': 15320,\n '3/20/20': 19848,\n '3/21/20': 22213,\n '3/22/20': 24873,\n '3/23/20': 29056,\n '3/24/20': 32986,\n '3/25/20': 37323,\n '3/26/20': 43938,\n '3/27/20': 50871,\n '3/28/20': 57695,\n '3/29/20': 62095,\n '3/30/20': 66885,\n '3/31/20': 71808,\n '4/1/20': 77872,\n '4/2/20': 84794,\n '4/3/20': 91159,\n '4/4/20': 96092,\n '4/5/20': 100123,\n '4/6/20': 103374,\n '4/7/20': 107663,\n '4/8/20': 113296,\n '4/9/20': 118181,\n '4/10/20': 122171,\n '4/11/20': 124908,\n '4/12/20': 127854,\n '4/13/20': 130072,\n '4/14/20': 131359,\n '4/15/20': 134753,\n '4/16/20': 137698,\n '4/17/20': 141397,\n '4/18/20': 143342,\n '4/19/20': 145184,\n '4/20/20': 147065,\n '4/21/20': 148291,\n '4/22/20': 150648,\n '4/23/20': 153129,\n '4/24/20': 154999,\n '4/25/20': 156513,\n '4/26/20': 157770,\n '4/27/20': 158758,\n '4/28/20': 159912,\n '4/29/20': 161539,\n '4/30/20': 163009,\n '5/1/20': 164077,\n '5/2/20': 164967,\n '5/3/20': 165664,\n '5/4/20': 166152,\n '5/5/20': 167007,\n '5/6/20': 168162,\n '5/7/20': 169430,\n '5/8/20': 170588,\n '5/9/20': 171324,\n '5/10/20': 171879,\n '5/11/20': 172576,\n '5/12/20': 173171,\n '5/13/20': 174098,\n '5/14/20': 174478,\n '5/15/20': 175233,\n '5/16/20': 175752,\n '5/17/20': 176369,\n '5/18/20': 176551,\n '5/19/20': 177778,\n '5/20/20': 178473,\n '5/21/20': 179021,\n '5/22/20': 179710,\n '5/23/20': 179986,\n '5/24/20': 180328,\n '5/25/20': 180600,\n '5/26/20': 181200,\n '5/27/20': 181524,\n '5/28/20': 182196,\n '5/29/20': 182922,\n '5/30/20': 183189,\n '5/31/20': 183410,\n },\n },\n {\n country: 'Brazil',\n history: {\n '3/15/20': 162,\n '3/16/20': 200,\n '3/17/20': 321,\n '3/18/20': 372,\n '3/19/20': 621,\n '3/20/20': 793,\n '3/21/20': 1021,\n '3/22/20': 1546,\n '3/23/20': 1924,\n '3/24/20': 2247,\n '3/25/20': 2554,\n '3/26/20': 2985,\n '3/27/20': 3417,\n '3/28/20': 3904,\n '3/29/20': 4256,\n '3/30/20': 4579,\n '3/31/20': 5717,\n '4/1/20': 6836,\n '4/2/20': 8044,\n '4/3/20': 9056,\n '4/4/20': 10360,\n '4/5/20': 11130,\n '4/6/20': 12161,\n '4/7/20': 14034,\n '4/8/20': 16170,\n '4/9/20': 18092,\n '4/10/20': 19638,\n '4/11/20': 20727,\n '4/12/20': 22192,\n '4/13/20': 23430,\n '4/14/20': 25262,\n '4/15/20': 28320,\n '4/16/20': 30425,\n '4/17/20': 33682,\n '4/18/20': 36658,\n '4/19/20': 38654,\n '4/20/20': 40743,\n '4/21/20': 43079,\n '4/22/20': 45757,\n '4/23/20': 50036,\n '4/24/20': 54043,\n '4/25/20': 59324,\n '4/26/20': 63100,\n '4/27/20': 67446,\n '4/28/20': 73235,\n '4/29/20': 79685,\n '4/30/20': 87187,\n '5/1/20': 92202,\n '5/2/20': 97100,\n '5/3/20': 101826,\n '5/4/20': 108620,\n '5/5/20': 115455,\n '5/6/20': 126611,\n '5/7/20': 135773,\n '5/8/20': 146894,\n '5/9/20': 156061,\n '5/10/20': 162699,\n '5/11/20': 169594,\n '5/12/20': 178214,\n '5/13/20': 190137,\n '5/14/20': 203165,\n '5/15/20': 220291,\n '5/16/20': 233511,\n '5/17/20': 241080,\n '5/18/20': 255368,\n '5/19/20': 271885,\n '5/20/20': 291579,\n '5/21/20': 310087,\n '5/22/20': 330890,\n '5/23/20': 347398,\n '5/24/20': 363211,\n '5/25/20': 374898,\n '5/26/20': 391222,\n '5/27/20': 411821,\n '5/28/20': 438238,\n '5/29/20': 465166,\n '5/30/20': 498440,\n '5/31/20': 514849,\n },\n },\n {\n country: 'Italy',\n history: {\n '3/15/20': 24747,\n '3/16/20': 27980,\n '3/17/20': 31506,\n '3/18/20': 35713,\n '3/19/20': 41035,\n '3/20/20': 47021,\n '3/21/20': 53578,\n '3/22/20': 59138,\n '3/23/20': 63927,\n '3/24/20': 69176,\n '3/25/20': 74386,\n '3/26/20': 80589,\n '3/27/20': 86498,\n '3/28/20': 92472,\n '3/29/20': 97689,\n '3/30/20': 101739,\n '3/31/20': 105792,\n '4/1/20': 110574,\n '4/2/20': 115242,\n '4/3/20': 119827,\n '4/4/20': 124632,\n '4/5/20': 128948,\n '4/6/20': 132547,\n '4/7/20': 135586,\n '4/8/20': 139422,\n '4/9/20': 143626,\n '4/10/20': 147577,\n '4/11/20': 152271,\n '4/12/20': 156363,\n '4/13/20': 159516,\n '4/14/20': 162488,\n '4/15/20': 165155,\n '4/16/20': 168941,\n '4/17/20': 172434,\n '4/18/20': 175925,\n '4/19/20': 178972,\n '4/20/20': 181228,\n '4/21/20': 183957,\n '4/22/20': 187327,\n '4/23/20': 189973,\n '4/24/20': 192994,\n '4/25/20': 195351,\n '4/26/20': 197675,\n '4/27/20': 199414,\n '4/28/20': 201505,\n '4/29/20': 203591,\n '4/30/20': 205463,\n '5/1/20': 207428,\n '5/2/20': 209328,\n '5/3/20': 210717,\n '5/4/20': 211938,\n '5/5/20': 213013,\n '5/6/20': 214457,\n '5/7/20': 215858,\n '5/8/20': 217185,\n '5/9/20': 218268,\n '5/10/20': 219070,\n '5/11/20': 219814,\n '5/12/20': 221216,\n '5/13/20': 222104,\n '5/14/20': 223096,\n '5/15/20': 223885,\n '5/16/20': 224760,\n '5/17/20': 225435,\n '5/18/20': 225886,\n '5/19/20': 226699,\n '5/20/20': 227364,\n '5/21/20': 228006,\n '5/22/20': 228658,\n '5/23/20': 229327,\n '5/24/20': 229858,\n '5/25/20': 230158,\n '5/26/20': 230555,\n '5/27/20': 231139,\n '5/28/20': 231732,\n '5/29/20': 232248,\n '5/30/20': 232664,\n '5/31/20': 232997,\n },\n },\n {\n country: 'India',\n history: {\n '3/15/20': 113,\n '3/16/20': 119,\n '3/17/20': 142,\n '3/18/20': 156,\n '3/19/20': 194,\n '3/20/20': 244,\n '3/21/20': 330,\n '3/22/20': 396,\n '3/23/20': 499,\n '3/24/20': 536,\n '3/25/20': 657,\n '3/26/20': 727,\n '3/27/20': 887,\n '3/28/20': 987,\n '3/29/20': 1024,\n '3/30/20': 1251,\n '3/31/20': 1397,\n '4/1/20': 1998,\n '4/2/20': 2543,\n '4/3/20': 2567,\n '4/4/20': 3082,\n '4/5/20': 3588,\n '4/6/20': 4778,\n '4/7/20': 5311,\n '4/8/20': 5916,\n '4/9/20': 6725,\n '4/10/20': 7598,\n '4/11/20': 8446,\n '4/12/20': 9205,\n '4/13/20': 10453,\n '4/14/20': 11487,\n '4/15/20': 12322,\n '4/16/20': 13430,\n '4/17/20': 14352,\n '4/18/20': 15722,\n '4/19/20': 17615,\n '4/20/20': 18539,\n '4/21/20': 20080,\n '4/22/20': 21370,\n '4/23/20': 23077,\n '4/24/20': 24530,\n '4/25/20': 26283,\n '4/26/20': 27890,\n '4/27/20': 29451,\n '4/28/20': 31324,\n '4/29/20': 33062,\n '4/30/20': 34863,\n '5/1/20': 37257,\n '5/2/20': 39699,\n '5/3/20': 42505,\n '5/4/20': 46437,\n '5/5/20': 49400,\n '5/6/20': 52987,\n '5/7/20': 56351,\n '5/8/20': 59695,\n '5/9/20': 62808,\n '5/10/20': 67161,\n '5/11/20': 70768,\n '5/12/20': 74292,\n '5/13/20': 78055,\n '5/14/20': 81997,\n '5/15/20': 85784,\n '5/16/20': 90648,\n '5/17/20': 95698,\n '5/18/20': 100328,\n '5/19/20': 106475,\n '5/20/20': 112028,\n '5/21/20': 118226,\n '5/22/20': 124794,\n '5/23/20': 131423,\n '5/24/20': 138536,\n '5/25/20': 144950,\n '5/26/20': 150793,\n '5/27/20': 158086,\n '5/28/20': 165386,\n '5/29/20': 173491,\n '5/30/20': 181827,\n '5/31/20': 190609,\n },\n },\n]\n","url":null,"readme":"_Also known as Bar Graph, Column Chart or Column Graph_\n\nA custom chart type (Racing Bars Chart) to visualize tracking of the Co-Vid 19 virus.\nTha data (country, history of cases) that is taken from API (https://coronavirus-tracker-api.herokuapp.com/confirmed)\nIn setInterval loop data is sorted by total COVID cases per each day and top 20 cases added to\nthe bars series in format `{ category: string, value: number, color: string }`. (color - random value in HEX format)\n\nThe Animator was used to animate the changing of the value and position order of each county in the list.\n\n```javascript\n// create chart\nconst newchart = barChart()\n\n\n// Add bars.\nchart.addValues([\n { country: 'Belgium', value: 26,666, color: '#ffffff' }\n])\n```\n","image":"racingBars"},{"id":"lcjs-example-0400-spiderStatic","title":"JavaScript Static Spider Chart","tags":["spider","radar","web","legendbox","radial"],"description":"This example shows the basic use of Spider Chart. Also known as Radar Chart, Web Chart, Polar Chart, Star Series.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Many radial charts, spider charts, donut charts, radar charts, pie chart, fast & reliable JavaScript chart types.","src":"/*\n * LightningChartJS example that showcases a simple SpiderChart.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, LegendBoxBuilders, Themes } = lcjs\n\n// Create spider chart and Three series.\nconst chart = lightningChart()\n .Spider({\n // theme: Themes.darkGold\n })\n .setTitle('Company branch efficiency')\n .setAxisInterval(100)\n .setScaleLabelStrategy(undefined)\n .setPadding({ top: 100 })\n\nconst series = [chart.addSeries().setName('Sydney'), chart.addSeries().setName('Kuopio'), chart.addSeries().setName('New York')]\nseries.forEach((value, i) => {\n value.setPointSize(10).setCursorResultTableFormatter((builder, series, value, axis) => builder.addRow(`${series.getName()} ${axis}`))\n})\n\n// Add constant points to series.\nconst categories = ['Pre-planning', 'Customer contacts', 'Meetings', 'Development time', 'Releases']\n//This is for Sydney Series.\nseries[0].addPoints(\n { axis: categories[0], value: 6 },\n { axis: categories[1], value: 22 },\n { axis: categories[2], value: 61 },\n { axis: categories[3], value: 76 },\n { axis: categories[4], value: 100 },\n)\n//This is for Kuopio Series.\nseries[1].addPoints(\n { axis: categories[0], value: 44 },\n { axis: categories[1], value: 8 },\n { axis: categories[2], value: 97 },\n { axis: categories[3], value: 68 },\n { axis: categories[4], value: 69 },\n)\n//This is for New York Series.\nseries[2].addPoints(\n { axis: categories[0], value: 94 },\n { axis: categories[1], value: 63 },\n { axis: categories[2], value: 4 },\n { axis: categories[3], value: 67 },\n { axis: categories[4], value: 71 },\n)\n\n// Create LegendBox as part of SpiderChart.\nconst legend = chart\n .addLegendBox(LegendBoxBuilders.HorizontalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.8,\n })\n// Add SpiderChart to LegendBox\nlegend.add(chart)\n\n// Enable AutoCursor auto-fill.\nchart.setAutoCursor((cursor) => cursor.setResultTableAutoTextStyle(true))\n","url":null,"readme":"_Also known as Radar Chart, Web Chart, Polar Chart, Star Series_\n\nThis example shows the creation and API of Spider Chart, which is generally used to compare multivariate quantitative data set. Each quantitative variable is represented on a categorical axis starting from the same center point.\n\nTypical usage of the Radar (Spider) chart is to compare various products over a range of characteristics.\n\nSpider Charts are created in a very straight-forward manner:\n\n```javascript\n// Add a Spider Chart.\nconst spiderChart = Spider()\n```\n\nSpider Series provides an ability to specify styles for both markers and lines individually.\n\n```javascript\nconst spiderSeries = spiderChart\n .addSeries(PointShape.Circle)\n .setName('Positive feedback distribution')\n .setFillStyle(fillStyle)\n .setPointFillStyle(pointFillStyle)\n// etc ...\n```\n\nActual data is added with the format: `{ axis: string, value: number }`, where 'axis' refers to the name of a category.\n\n```javascript\nspiderSeries.addPoints(\n // Any number of { axis, value } pairs can be passed.\n { axis: 'Team spirit', value: 55 },\n { axis: 'Premises', value: 27 },\n { axis: 'Salary', value: 25 },\n)\n```\n\nAdding points with unique tags will automatically create new categorical axes for the Spider Chart in the order of adding (the first axis will always point directly up and following ones will traverse clock-wise). Adding more points to the same category tag in one series will override any previous values.\n","image":"spiderStatic"},{"id":"lcjs-example-0401-spiderAnimated","title":"Animated JavaScript Radar Chart","tags":["spider","radar","web","radial"],"description":"This example shows creation of a Radar Chart with animated transitions by using a suitably styled SpiderChart.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Many radial charts, spider charts, donut charts, radar charts, pie chart, fast & reliable JavaScript chart types.","src":"/*\n * LightningChartJS example that showcases a Spider (Radar) Chart with animated changing of values.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, SpiderWebMode, Themes } = lcjs\n\n// Create a circular spider chart and add a series to it.\nconst chart = lightningChart()\n .Spider({\n // theme: Themes.darkGold\n })\n .setTitle('Animated Radar Chart')\n .setAxisInterval(100)\n // Configure spider to be circular (like a traditional Radar Chart).\n .setWebMode(SpiderWebMode.Circle)\nconst series = chart.addSeries()\n\n// Set initial series values, creating axes.\nconst categories = ['Category A', 'Category B', 'Category C', 'Category D', 'Category E']\nseries.addPoints(\n { axis: categories[0], value: 100 },\n { axis: categories[1], value: 100 },\n { axis: categories[2], value: 100 },\n { axis: categories[3], value: 100 },\n { axis: categories[4], value: 100 },\n)\n\n// Setup randomization of series values at regular intervals.\nconst randomizePoints = () => {\n for (const category of categories) {\n const value = Math.random() * 100\n series.addPoints({ axis: category, value })\n }\n}\n// Randomize points every other second (2000 ms).\nsetInterval(randomizePoints, 2000)\n","url":null,"readme":"This example shows creation of a Radar Chart with animated transitions by using a suitably styled SpiderChart.\n\nSpiderCharts can be styled to look like traditional Radar Charts by usage of SpiderWebModes - more specifically, SpiderWebMode.Circle.\n\n```javascript\n// Set web-mode of SpiderChart, affecting the shape of its background, webs and nibs.\nspiderChart.setWebMode(SpiderWebMode.Circle)\n```\n\nTransitions can be set at regular intervals using setInterval like so:\n\n```javascript\nsetInterval(() => {\n // This code will be called approximately every 100 milliseconds.\n}, 100)\n```\n","image":"spiderAnimated"},{"id":"lcjs-example-0440-solidGaugeChart","title":"JavaScript Solid Gauge Chart","tags":["gauge","legendbox","radial"],"description":"This example shows solid gauge chart.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Many radial charts, spider charts, donut charts, radar charts, pie chart, fast & reliable JavaScript chart types.","src":"/*\n * LightningChartJS example that showcases creation and styling of radial-gauge.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, GaugeChartTypes, Themes } = lcjs\n\n// Initialize gauge\nconst gauge = lightningChart()\n .Gauge({\n // theme: Themes.darkGold\n type: GaugeChartTypes.Solid,\n })\n .setTitle('Annual sales goal')\n .setThickness(80)\n .setDataLabelFormatter(new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }))\n .setAngleInterval(225, -45)\n\n// Create slice\nconst slice = gauge\n .getDefaultSlice()\n .setInterval(0, 400000)\n .setValue(329000)\n // .setFillStyle(new SolidFill({ color: ColorRGBA(12, 213, 87) }))\n .setName('2019 sales')\n\n// Add LegendBox and define the position in the chart\nconst legend = gauge\n .addLegendBox()\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.3,\n })\n\n// Add gaugeChart to LegendBox\nlegend.add(gauge)\n","url":null,"readme":"This example shows solid gauge chart.\n\nThe chart can be created with a simple line of code.\n\n```javascript\n// Create a new Gauge chart.\nconst gauge = lightningChart().Gauge({ type: GaugeChartTypes.Solid })\n```\n\nAfter creating the Gauge Chart the value for it can be set simply.\n\n```javascript\ngauge\n // Get default slice, this is the only slice there is and\n // it should be manipulated to set wanted value to the Gauge Chart.\n .getDefaultSlice()\n // Set start and end values.\n .setInterval(0, 400000)\n // Set the displayed value.\n .setValue(329000)\n```\n","image":"solidGauge"},{"id":"lcjs-example-0450-pieChart","title":"JavaScript Pie Chart","tags":["pie","radial","legendbox"],"description":"Pie Chart (or a Circular Chart) is a chart used to show statistical graphic.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Many radial charts, spider charts, donut charts, radar charts, pie chart, fast & reliable JavaScript chart types.","src":"/*\n * LightningChartJS example that shows the creation of a Pie Chart.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, PieChartTypes, LegendBoxBuilders, SliceLabelFormatters, Themes } = lcjs\n\nconst pieType = window.innerWidth > 599 ? PieChartTypes.LabelsOnSides : PieChartTypes.LabelsInsideSlices\n\nconst pie = lightningChart()\n .Pie({\n // theme: Themes.darkGold\n type: pieType,\n })\n .setTitle('Project Time Division')\n .setMultipleSliceExplosion(true)\n\n// ----- User defined data -----\nconst data = [\n {\n name: 'Planning',\n value: 40,\n },\n {\n name: 'Development',\n value: 120,\n },\n {\n name: 'Testing',\n value: 60,\n },\n {\n name: 'Review',\n value: 24,\n },\n {\n name: 'Bug Fixing',\n value: 90,\n },\n]\n\n// ----- Create Slices -----\nconst slices = data.map((item) => pie.addSlice(item.name, item.value))\n\n// Specify function which generates text for Slice Labels(LabelFormatter).\n\npie.setLabelFormatter(SliceLabelFormatters.NamePlusRelativeValue)\n\n// ----- Add LegendBox -----\npie.addLegendBox(LegendBoxBuilders.VerticalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.3,\n })\n .add(pie)\n","url":null,"readme":"Pie Chart (or a Circular Chart) is a chart used to show statistical graphic. The Pie Chart is divided into slices, with each slice illustrating a numerical portion of the whole Pie. Each slice's size (usually depicted in the central angle and area of the slice) is proportional to its quantity.\n\nThe chart can be created with a simple line of code.\n\n```javascript\n// Create a new Pie Chart.\nconst chart = lightningChart().Pie()\n```\n\nThe Pie Chart has two types for displaying the labels for each slice; The slices can be placed either on top of each slice by using the LabelsInsideSlices type, or they can be placed on both sides of the Chart by using LabelsOnSides type. The type must be given to the Chart as a parameter when creating it.\nBy default, the LabelsOnSides type is used.\n\n```javascript\n// Create a new Pie Chart and pass the type to use when placing labels.\nconst chart = lightningChart().Pie({ type: PieChartTypes.LabelsOnSides })\n```\n\nAfter creating the Pie Chart, we can populate it by adding slices to it.\nThe slice should always get a name and value in a single object.\n\n```javascript\n// Add a slice to populate the Pie.\nchart.addSlice({ name: 'Planning', value: 100 })\n```\n\nEach slice can be 'exploded' by clicking on them, and 'imploded' by clicking on a exploded slice.\nExploding slices can be set to only one at a time, or allowing all slices to be exploded at the same time.\n\n```javascript\n// Allow multiple slices to be in exploded state at the same time.\nchart.setMultipleSliceExplosion(true)\n```\n\nThe labels for all slices can be formatted in different ways.\n\n```javascript\n// Set the label formatting to show the slice's name and the relative value\n// (size of the slice as percentage).\npie.setLabelFormatter(SliceLabelFormatters.NamePlusRelativeValue)\n```\n\nThe lines connecting each slice to its label can be modified.\n","image":"pieChart"},{"id":"lcjs-example-0451-donutChart","title":"JavaScript Donut Chart","tags":["donut","radial","legendbox"],"description":"Donut Chart is a variation of Pie chart - functionally it's the same, visually it's only missing the center.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Many radial charts, spider charts, donut charts, radar charts, pie chart, fast & reliable JavaScript chart types.","src":"/*\n * LightningChartJS example that shows the creation and styling of a donut chart.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst {\n lightningChart,\n PieChartTypes,\n UIElementBuilders,\n LegendBoxBuilders,\n UIDraggingModes,\n SliceLabelFormatters,\n UIOrigins,\n emptyFill,\n emptyLine,\n Themes,\n} = lcjs\n\nconst donut = lightningChart()\n .Pie({\n // theme: Themes.darkGold\n type: PieChartTypes.LabelsInsideSlices,\n })\n .setTitle('Inter Hotels - hotel visitors in June 2016')\n .setPadding({ top: 40 })\n .setMultipleSliceExplosion(false)\n // Style as \"Donut Chart\"\n .setInnerRadius(60)\n\n// ----- Static data -----\nconst data = {\n country: ['US', 'Canada', 'Greece', 'UK', 'Finland', 'Denmark'],\n values: [15000, 20030, 8237, 16790, 9842, 4300],\n}\n// Preparing data for each Slice\nconst processedData = []\nlet totalVisitor = 0\nfor (let i = 0; i < data.values.length; i++) {\n totalVisitor += data.values[i]\n processedData.push({ name: `${data.country[i]}`, value: data.values[i] })\n}\n\n// ----- Create Slices -----\nprocessedData.map((item) => donut.addSlice(item.name, item.value))\ndonut.setLabelFormatter(SliceLabelFormatters.NamePlusValue)\n// ----- Add LegendBox -----\ndonut\n .addLegendBox(LegendBoxBuilders.HorizontalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.8,\n })\n .add(donut)\n\n// ----- Add TextBox -----\ndonut\n .addUIElement(UIElementBuilders.TextBox)\n .setPosition({ x: 50, y: 50 })\n .setOrigin(UIOrigins.CenterTop)\n .setDraggingMode(UIDraggingModes.notDraggable)\n .setMargin(5)\n .setTextFont((fontSettings) => fontSettings.setSize(25))\n .setText(`Total: ${totalVisitor} visitors`)\n .setBackground((background) => background.setFillStyle(emptyFill).setStrokeStyle(emptyLine))\n","url":null,"readme":"Donut Chart is a variation of Pie chart - functionally it's the same, visually it's only missing the center.\n\nThe chart can be created with a few simple lines of code.\n\nThe inner radius is used to set how far inwards from the outer edge of the circle we should cut the circle from, essentially creating a ring.\nFor example, setting the inner radius as 0.50 will draw a ring, where the circle's inner radius is at 50% distance from the circle's full radius.\n\n```javascript\n// Create a new Pie Chart.\nconst chart = lightningChart().Pie()\nchart.setInnerRadius(50)\n```\n\nIt is possible to disable the animations for the Pie / Donut chart: value changes, disabling / enabling slices and the explosion / implosion of a slice.\nAnimations are enabled by default.\n\n```javascript\n// Disable all animations for the chart.\nchart.setAnimationsEnabled(false)\n```\n\nThe slice fill styles can be styled by using a palette. A palette is a collection of fill styles which can be called by index.\n\n```javascript\n// Use a palette of colors to create the Fill Styles. You can also create your own\n// - check the ColorPalettes documentation for more info.\nconst colorPalette = ColorPalettes.fullSpectrum\n// Create a palette of Fill Styles to use with the Pie Chart's Slices.\nconst fillStylePalette = SolidFillPalette(colorPalette, 10)\npie.setSliceFillStyle(fillStylePalette)\n```\n\nYou can also create a custom color palette and use it with the Chart.\nEasiest way to add a custom color palette is to create an array of colors and creating a function that returns colors from the array based on index.\n\n```javascript\n// ----- Create custom Palette for Donut (defines color of Slice filling) ----\nconst colorArray = [\n ColorRGBA(97, 33, 15, 255),\n ColorRGBA(255, 140, 66, 255),\n ColorRGBA(225, 86, 52, 255),\n ColorRGBA(234, 43, 31, 255),\n ColorRGBA(249, 223, 116, 255),\n ColorRGBA(245, 224, 183, 255),\n]\n// Create a simple function which returns a color based on index.\n// Both parameters (length and index) can be used to create more complex functions -\n// length should be the length of the color array.\nconst colorPalette = (length) => (index) => {\n return colorArray[index]\n}\n// Pass the color palette to the SolidFillPalette method,\n// which returns a fillStyle palette that can be used with the Donut Chart\nconst fillStylePalette = SolidFillPalette(colorPalette, data.values.length)\n// Set the custom fillStyle for the Donut Chart\ndonut.setSliceFillStyle(fillStylePalette)\n```\n\nAll slices in the chart can have a border surrounding them, which can be styled for the entire chart.\n\n```javascript\n// Create a StrokeStyle to use with the chart.\nconst customStrokeStyle = new SolidLine({\n fillStyle: new SolidFill({ color: ColorRGBA(30, 144, 255) }),\n thickness: 5,\n})\n// Set the StrokeStyle to use with all slices in the chart.\nchart.setSliceStrokeStyle(customStrokeStyle)\n```\n","image":"donutChart"},{"id":"lcjs-example-0452-pieLUT","title":"JavaScript Pie Chart with Lookup table","tags":["donut","radial","legendbox"],"description":"Example showcasing the use of Lookup Table with a Pie Chart.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Many radial charts, spider charts, donut charts, radar charts, pie chart, fast & reliable JavaScript chart types.","src":"/*\n * LightningChartJS example that showcases usage of color lookup table on Pie.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { PieChartTypes, lightningChart, LegendBoxBuilders, SliceLabelFormatters, SliceSorters, LUT, ColorRGBA, Themes } = lcjs\n\n// Create a new color-value lookup table\nconst lut = new LUT({\n steps: [\n { value: 20, color: ColorRGBA(255, 0, 24) },\n { value: 40, color: ColorRGBA(255, 165, 44) },\n { value: 60, color: ColorRGBA(255, 255, 65) },\n { value: 80, color: ColorRGBA(0, 128, 24) },\n { value: 100, color: ColorRGBA(0, 0, 249) },\n { value: 120, color: ColorRGBA(134, 0, 125) },\n ],\n interpolate: true,\n})\n\n// Create a Pie Chart\nconst pie = lightningChart()\n .Pie({\n // theme: Themes.darkGold\n type: PieChartTypes.LabelsOnSides,\n })\n .setTitle('Pie Chart')\n .setMultipleSliceExplosion(true)\n .setLabelFormatter(SliceLabelFormatters.NamePlusValue)\n .setSliceSorter(SliceSorters.None)\n // Attach lookup table\n .setLUT(lut)\n .setLabelConnectorGap(10)\n\nconst data = []\n\nfor (let i = 1; i <= 10; i++) data.push({ name: `Slice #${i}`, value: 1 + Math.random() * 120 })\n\n// Create Slices\nconst slices = data.map((item) => pie.addSlice(item.name, item.value))\n\n// Add LegendBox\npie.addLegendBox(LegendBoxBuilders.VerticalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.3,\n })\n .add(pie)\n\n// 2 seconds after the example has loaded, change the values of each slice.\nsetTimeout(() => {\n slices.forEach((slice) => slice.setValue(1 + Math.random() * 120))\n}, 2000)\n\n// Change value of every slice regularly\nsetInterval(() => {\n slices.forEach((slice) => slice.setValue(1 + Math.random() * 120))\n}, 5000)\n","url":null,"readme":"Lookup table stores information about values and its associated colors. It provides efficient lookup of the color based on provided value as well as linear and step interpolation between colors.\n\nThe current example shows usage of lookup table with a Pie Chart.\n\n```javascript\n// create LUT from 0..120 with gradient steps.\nconst lut = new LUT( {\n steps: [\n { value: 20, color: ColorRGBA( 255, 0, 24 ) },\n { value: 40, color: ColorRGBA( 255, 165, 44 ) },\n { value: 60, color: ColorRGBA( 255, 255, 65 ) },\n { value: 80, color: ColorRGBA( 0, 128, 24 ) },\n { value: 100, color: ColorRGBA( 0, 0, 249 ) },\n { value: 120, color: ColorRGBA( 134, 0, 125 ) }\n ],\n interpolate: true\n}\n```\n\nCreate a Pie Chart and attach lookup table to fill the slices with colors based on value.\n\n```javascript\n// Create a new Pie Chart\nconst chart = lightningChart()\n .Pie({ type: PieChartTypes.LabelsOnSides })\n .setAnimationsEnabled(true)\n .setMultipleSliceExplosion(true)\n .setLabelFormatter(SliceLabelFormatters.NamePlusValue)\n .setSliceSorter(SliceSorters.None)\n // Attach lookup table.\n .setLUT(lut)\n .setLabelConnectorGap(10)\n```\n","image":"pieLUT"},{"id":"lcjs-example-0460-simpleFunnelChart","title":"JavaScript Funnel Chart","tags":["funnel","pyramid","sliced","legendbox"],"description":"Funnel Chart is a chart used to show statistical graphic. Funnel Chart is divided into slices, with each slice illustrating the numerical portion of the Funnel. ","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: JS chart examples, covid-19 tracker chart, racing bar charts, mosaic chart, 2D range bar, grouped bar charts. And more!","src":"/*\n * LightningChartJS example that shows the creation and styling of a Funnel chart.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { FunnelChartTypes, FunnelLabelSide, SliceLabelFormatters, lightningChart, FunnelSliceModes, LegendBoxBuilders, Themes } = lcjs\n\n// Create a Funnel chart\nconst funnel = lightningChart()\n .Funnel({\n // theme: Themes.darkGold\n type: FunnelChartTypes.LabelsOnSides,\n })\n .setTitle('Customer contacts progression')\n .setSliceMode(FunnelSliceModes.VariableHeight)\n .setSliceGap(0)\n .setHeadWidth(95)\n .setNeckWidth(40)\n .setLabelSide(FunnelLabelSide.Right)\n .setPadding({ bottom: 45 })\n\n// Data for slices\nconst data = [\n {\n name: 'Prospects',\n value: 2000,\n },\n {\n name: 'Contacts',\n value: 1540,\n },\n {\n name: 'Leads',\n value: 1095,\n },\n {\n name: 'Customers',\n value: 549,\n },\n]\n// Add data to the slices\nfunnel.addSlices(data)\n\n// Set formatter of Slice Labels\nfunnel.setLabelFormatter(SliceLabelFormatters.NamePlusValue)\n\n// Add LegendBox and define the position in the chart\nconst lb = funnel\n .addLegendBox(LegendBoxBuilders.HorizontalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.8,\n })\nlb.add(funnel, { toggleVisibilityOnClick: false })\n","url":null,"readme":"Funnel Chart is a chart used to show statistical graphic. Funnel Chart is divided into slices, with each slice illustrating the numerical portion of the Funnel. Each slice's size is proportional to its quantity.\n\nThe chart can be created with a simple line of code.\n\n```javascript\n// Create a new Funnel Chart.\nconst funnel = lightningChart().Funnel()\n```\n\nThe Funnel has two types for displaying the labels for each slice; The slices can be placed either on top of each slice or the labels can be placed to the side of the Funnel, drawn with a connector line between the slice and its label.\n\nIf no type is given, the Funnel defaults to showing labels on side of Funnel.\n\n```javascript\n// Create a Funnel Chart with labels on the side.\nconst funnel = lightningChart().Funnel({ type: FunnelChartTypes.LabelsOnSide })\n\n// Create a Funnel Chart with labels inside of slices.\nconst funnel = lightningChart().Funnel({\n type: FunnelChartTypes.LabelsInsideSlices,\n})\n```\n\nAfter creating the Funnel Chart, we can populate it by adding slices to it.\nThe slice should always get a name and value as parameters.\n\nYou can alternatively add multiple slices as an array of objects containing a name and a value for each slice.\n\n```javascript\n// Add a single slice to the Funnel.\nfunnel.addSlice('Slice', 50)\n\n// Add multiple slices to populate the Funnel.\nconst data = [\n {\n name: 'Prospects',\n value: 2000,\n },\n {\n name: 'Contacts',\n value: 1540,\n },\n {\n name: 'Leads',\n value: 1095,\n },\n {\n name: 'Customers',\n value: 549,\n },\n]\n// Add data to the slices\nfunnel.addSlices(data)\n```\n\nModifying how the Funnel and its slices are drawn can be done through the Funnel Chart's API.\n\n```javascript\n// Set the gap between each of the slices. This value can be between 0 to 20 pixels.\nfunnel.setSliceGap(5)\n\n// Set the width of the Funnel's top edge. This value can be from 0 to 100 (in percents).\nfunnel.setHeadWidth(95)\n\n// Set the width of the Funnel's bottom edge. This value can be from 0 to 100 (in percents).\nfunnel.setNeckWidth(40)\n\n// If the labels are set to be placed on the side of the Funnel,\n// we can determine the side they will be placed.\nfunnel.setLabelSide(FunnelLabelSide.Right)\n```\n\nThe slices can be styled using the Funnel Chart's API.\n\n```javascript\n// Create a palette of Fill Styles to use with the Funnel's Slices.\nconst palette = SolidFillPalette(ColorPalettes.warm, data.length)\n// Set the palette used for coloring each of the slices.\nfunnel.setSliceFillStyle(palette)\n```\n\nThe Funnel Chart has different ways to draw the slices depending on their value.\n\nPerhaps the most common way is to show the value as the height of the slice in relation to the combined value of all slices.\nThis can be achieved by setting the Funnel's Slice Mode to Variable Height.\n\n```javascript\n// Set Funnel chart slice mode to Variable Height.\nfunnel.setSliceMode(FunnelSliceModes.VariableHeight)\n```\n\nAnother common way is to show all the slices with equal height, but to have their width change depending on their value relative to the combined total value.\n\n```javascript\n// Set Funnel Chart slice mode to Variable Width.\nfunnel.setSliceMode(FunnelSliceModes.VariableWidth)\n```\n\nThe labels for all slices can be formatted in different ways.\n\n```javascript\n// Set the label formatting to show the slice's name and value.\nfunnel.setLabelFormatter(SliceLabelFormatters.NamePlusValue)\n```\n\nThe lines connecting each slice to its label can be modified.\n\n```javascript\n// Set the style that will be used with each connector line.\nfunnel.setLabelConnectorStyle(\n new SolidLine({\n thickness: 2,\n fillStyle: new SolidFill({ color: ColorRGBA(125, 95, 220) }),\n }),\n)\n```\n","image":"simpleFunnel"},{"id":"lcjs-example-0465-simplePyramidChart","title":"JavaScript Pyramid Chart","tags":["pyramid","funnel","sliced","legendbox"],"description":"Pyramid Chart is a chart used to show statistical graphic. The Pyramid chart is divided into slices, with each slice illustrating the numerical portion of the whole Pyramid.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: JS chart examples, covid-19 tracker chart, racing bar charts, mosaic chart, 2D range bar, grouped bar charts. And more!","src":"/*\n * LightningChartJS example that shows the creation and styling of a Pyramid chart.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Extract required parts from LightningChartJS.\nconst { PyramidChartTypes, PyramidLabelSide, SliceLabelFormatters, lightningChart, LegendBoxBuilders, Themes } = lcjs\n\n// Create a Pyramid chart\nconst pyramid = lightningChart()\n .Pyramid({\n // theme: Themes.darkGold\n type: PyramidChartTypes.LabelsOnSides,\n })\n .setTitle('Company staff growth')\n .setNeckWidth(80)\n .setSliceGap(5)\n .setPadding({ bottom: 45 })\n .setLabelSide(PyramidLabelSide.Right)\n\n// Data for slices\nconst data = [\n {\n name: '2015 - 2016',\n value: 3,\n },\n {\n name: '2016 - 2017',\n value: 5,\n },\n {\n name: '2017 - 2018',\n value: 10,\n },\n {\n name: '2018 - 2019',\n value: 17,\n },\n]\n// Add data to the slices\npyramid.addSlices(data)\n\n// Set formatter of Slice Labels\npyramid.setLabelFormatter(SliceLabelFormatters.NamePlusValue)\n\n// Add LegendBox and define the position in the chart\nconst lb = pyramid\n .addLegendBox(LegendBoxBuilders.HorizontalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.8,\n })\n\n// Add the Pyramid to the LegendBox and disable the button click functionality.\nlb.add(pyramid, { toggleVisibilityOnClick: false })\n","url":null,"readme":"Pyramid Chart is a chart used to show statistical graphic. The Pyramid chart is divided into slices, with each slice illustrating the numerical portion of the whole Pyramid. Each slice's size (usually depicted as the slice's relative height from the Pyramid) is proportional to its quantity.\n\nThe chart can be created with a simple line of code.\n\n```javascript\n// Create a new Pyramid Chart.\nconst pyramid = lightningChart().Pyramid()\n```\n\nThe Pyramid Chart has two types for displaying the labels for each slice; The slices can be placed either on top of each slice by using the LabelsInsideSlices type, or they can be placed on both sides of the Chart by using LabelsOnSides type. The type must be given to the Chart as a parameter when creating it.\nBy default, the LabelsOnSides type is used.\n\n```javascript\n// Create a new Pyramid Chart and pass the type to use when placing labels.\nconst pyramid = lightningChart().Pyramid({\n type: PyramidChartTypes.LabelsOnSides,\n})\n```\n\nAfter creating the Pyramid Chart, we can populate it by adding slices to it.\nThe slice should always get a name and value as parameters.\n\nYou can alternatively add multiple slices as an array of objects containing a name and a value for each slice.\n\n```javascript\n// Add a single slice to populate the Pyramid.\npyramid.addSlice('Planning', 100)\n\n// Add multiple slices to populate the Pyramid.\npyramid.addSlices([\n {\n name: 'Slice1',\n value: 45,\n },\n {\n name: 'Slice2',\n value: 83,\n },\n {\n name: 'Slice3',\n value: 19,\n },\n])\n```\n\nYou can modify how the Pyramid and its slices are drawn through the Pyramid Chart's API.\n\n```javascript\n// Set the width of the Pyramid's bottom edge. This value can be from 0 to 100 (in percents).\npyramid.setNeckWidth(80)\n\n// Set the gap between each of the slices. This value can be between 0 to 20 pixels.\npyramid.setSliceGap(5)\n\n// If the labels are set to be placed on the side of the Pyramid,\n// we can determine the side here as well.\npyramid.setLabelSide(PyramidLabelSide.Right)\n```\n\nThe Slices can be styled using the Pyramid Chart's API.\n\n```javascript\n// Create a palette of Solid FillStyles to use with the Pyramid slices.\nconst palette = SolidFillPalette(ColorPalettes.warm, data.length)\n// Set the palette used for coloring each of the slices.\npyramid.setSliceFillStyle(palette)\n```\n\nThe labels for all slices can be formatted in different ways.\n\n```javascript\n// Set the label formatting to show the slice's name and the relative value\n// (size of the slice as percentage).\npyramid.setLabelFormatter(SliceLabelFormatters.NamePlusRelativeValue)\n```\n\nThe lines connecting each slice to its label can be modified.\n\n```javascript\n// Set the style used with all connector lines.\npyramid.setLabelConnectorStyle(\n new SolidLine({\n thickness: 3,\n fillStyle: new SolidFill({ color: ColorRGBA(100, 150, 195) }),\n }),\n)\n```\n","image":"simplePyramid"},{"id":"lcjs-example-0500-dashboardWithLegendBox","title":"JavaScript Dashboard With LegendBox","tags":["dashboard","legendbox","spline","spider","radar","web","xy"],"description":"Example showing a dashboard with multiple chart types and LegendBox Panel.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Scientific Chart examples, Create High-Performance Charts, Medical Charts examples, dashboard charts.","src":"/*\n * LightningChartJS example that showcases a dashboard with LegendBox.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisScrollStrategies, PointShape, AxisTickStrategies, Themes } = lcjs\n\n// Import data-generators from 'xydata'-library.\nconst { createProgressiveRandomGenerator } = xydata\n\n// Create Dashboard and stand-alone LegendBox.\nconst db = lightningChart().Dashboard({\n // theme: Themes.darkGold\n numberOfRows: 2,\n numberOfColumns: 2,\n})\n\n// Create a legendBox docked to the Dashboard.\nconst legend = db.createLegendBoxPanel({\n columnIndex: 0,\n rowIndex: 1,\n columnSpan: 1,\n rowSpan: 1,\n})\n\n// Spline\n{\n const dateOrigin = new Date()\n const dataFrequency = 1000\n const chart = db\n .createChartXY({\n columnIndex: 0,\n rowIndex: 0,\n columnSpan: 1,\n rowSpan: 1,\n })\n .setTitle('Live sales')\n .setPadding({ right: 30 })\n\n const series = chart\n .addSplineSeries({ pointShape: PointShape.Circle })\n .setName('Product')\n .setStrokeStyle((strokeStyle) => strokeStyle.setThickness(2))\n .setPointSize(5)\n .setCursorInterpolationEnabled(false)\n .setCursorResultTableFormatter((tableBuilder, series, x, y) =>\n tableBuilder\n .addRow(series.getName())\n .addRow('Time : ', series.axisX.formatValue(x))\n .addRow('Sold : ', y.toFixed(0) + ' pieces'),\n )\n\n chart\n .getDefaultAxisX()\n .setInterval({ start: -61 * 1000, end: 0, animate: 0, stopAxisAfter: false })\n .setScrollStrategy(AxisScrollStrategies.progressive)\n .setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\n chart\n .getDefaultAxisY()\n .setTitle('Units sold')\n .setInterval({ start: 0, end: 500, stopAxisAfter: false })\n .setScrollStrategy(AxisScrollStrategies.expansion)\n\n // Stream some random data.\n createProgressiveRandomGenerator()\n .setNumberOfPoints(10000)\n .generate()\n .setStreamBatchSize(1)\n .setStreamInterval(500)\n .setStreamRepeat(true)\n .toStream()\n .forEach((point) => {\n point.x = point.x * dataFrequency\n point.y = point.y * 500\n series.add(point)\n })\n\n // Add to LegendBox\n legend.add(chart)\n}\n\n// Spider\n{\n const chart = db\n .createSpiderChart({\n columnIndex: 1,\n rowIndex: 0,\n columnSpan: 1,\n rowSpan: 2,\n })\n .setTitle('Product development costs vs. sales profits')\n .setScaleLabelFont((font) => font.setSize(12))\n .setAxisLabelFont((font) => font.setSize(14).setStyle('italic'))\n\n chart\n .addSeries(PointShape.Circle)\n .setName('Sales Profits')\n .addPoints(\n { axis: 'January', value: 100 },\n { axis: 'February', value: 200 },\n { axis: 'March', value: 300 },\n { axis: 'April', value: 400 },\n { axis: 'May', value: 500 },\n { axis: 'June', value: 650 },\n { axis: 'July', value: 800 },\n { axis: 'August', value: 990 },\n { axis: 'September', value: 1200 },\n { axis: 'October', value: 1100 },\n { axis: 'November', value: 1400 },\n { axis: 'December', value: 1500 },\n )\n .setCursorResultTableFormatter((tableContentBuilder, series, value, axis, formatValue) =>\n tableContentBuilder\n .addRow(series.getName())\n .addRow(axis)\n .addRow('$' + value),\n )\n\n chart\n .addSeries(PointShape.Circle)\n .setName('Development Costs')\n .addPoints(\n { axis: 'January', value: 0 },\n { axis: 'February', value: 100 },\n { axis: 'March', value: 300 },\n { axis: 'April', value: 400 },\n { axis: 'May', value: 500 },\n { axis: 'June', value: 600 },\n { axis: 'July', value: 700 },\n { axis: 'August', value: 900 },\n { axis: 'September', value: 1000 },\n { axis: 'October', value: 1100 },\n { axis: 'November', value: 1300 },\n { axis: 'December', value: 1400 },\n )\n .setCursorResultTableFormatter((tableContentBuilder, series, value, axis, formatValue) =>\n tableContentBuilder\n .addRow(series.getName())\n .addRow(axis)\n .addRow('$' + value),\n )\n\n // Add to LegendBox\n legend.add(chart)\n\n // Set the row height\n db.setRowHeight(0, 3)\n}\n","url":null,"readme":"This example shows a simple dashboard with multiple chart types and LegendBox Panel.\n\nThe dashboard allows rendering of multiple scenes in a single view port highly efficiently with minimal memory resources. During the creation of a dashboard instance, the amount of rows and columns will have to be specified. This can not be changed afterwards.\n\n```javascript\n// Create a dashboard with three rows and two columns.\nconst dashboard = lightningChart().Dashboard({\n numberOfRows: 3,\n numberOfColumns: 2,\n})\n```\n\nCharts and Panels can then be added to the dashboard like follows:\n\n```javascript\n// Create a ChartXY that occupies the top row of the dashboard.\nconst chartXY = dashboard.createChartXY({\n // Row index (starting from bottom).\n columnIndex: 2,\n // Column index (starting from left).\n rowIndex: 0,\n // Row span (height, basically).\n columnSpan: 1,\n // Column span (width, basically).\n rowSpan: 2,\n})\n```\n\n[//]: # 'IMPORTANT: The assets will not show before README.md is built - relative path is different!'\n\n\n\nDashboards have separate methods for adding a different kind of Charts or Panels. Dashboard represents a grid with rows & columns. During the creation of the element, the row & column indices and the horizontal & vertical spans should be specified to position it in the correct place and fill the desired amount of cells.\n\n```javascript\n// Create a spider chart and attach to dashboard.\n// Row 0, Column 0, Rows to fill 2, Columns to fill 1.\nconst spiderChart = dashboard.createSpider(0, 0, 2, 1)\n\n// Create a Legend Box Panel and attach to dashboard.\n// Row 0, Column 1, Rows to fill 2, Columns to fill 1.\nconst legendBox = dashboard.createLegendBoxPanel({\n columnIndex: 0,\n rowIndex: 1,\n columnSpan: 2,\n rowSpan: 1,\n})\n```\n\nThe dashboard rows and columns can have varying heights and widths respectively - you can resize them by clicking and dragging on the grid line separating the columns and rows from each other, or by using methods to set them programmatically:\n\n```javascript\n// Set height of the first row of a dashboard.\n// By default each row and column has a size of 1.\n// The size is always relative to the combined size of each row / column.\ndashboard.setRowHeight(0, 2)\n// Set width of the first and the second column of a dashboard.\n// First column width will be 2/5 of the entire view's width.\ndashboard.setColumnWidth(0, 2)\n// Second column width will be 3/5 of the entire view's width.\ndashboard.setColumnWidth(1, 3)\n```\n","image":"dashboardWithLegendbox"},{"id":"lcjs-example-0501-dashboard5chs1000pps","title":"JavaScript Dashboard 5 Channels 1000 pps","tags":["dashboard","line","realtime","xy","datapattern","datacleaning"],"description":"Example for a dashboard with multiple progressive channels of data. Using progressive Line Series.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Scientific Chart examples, Create High-Performance Charts, Medical Charts examples, dashboard charts.","src":"/*\n * LightningChartJS example that showcases usage of Dashboard with multiple channels and axis scroll strategies.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisScrollStrategies, emptyFill, Themes } = lcjs\n\n// Import data-generator from 'xydata'-library.\nconst { createProgressiveRandomGenerator } = xydata\n\nconst channels = ['Ch 1', 'Ch 2', 'Ch 3', 'Ch 4', 'Ch 5']\nconst channelCount = channels.length\n\n// Create Dashboard.\nconst grid = lightningChart().Dashboard({\n // theme: Themes.darkGold\n numberOfRows: channelCount,\n numberOfColumns: 1,\n})\n\n// Map XY-charts to Dashboard for each channel.\nconst charts = channels.map((channelName, i) => {\n const chart = grid\n .createChartXY({\n columnIndex: 0,\n rowIndex: i,\n columnSpan: 1,\n rowSpan: 1,\n })\n // Hide titles because we have very little space.\n .setTitleFillStyle(emptyFill)\n\n // Configure X-axis of chart to be progressive and have nice interval.\n chart.getDefaultAxisX().setScrollStrategy(AxisScrollStrategies.progressive).setInterval({ start: 0, end: 10000, stopAxisAfter: false }) // 10,000 millisecond axis\n\n return chart\n})\n\n// Map progressive line series for each chart.\nconst series = charts.map((chart, i) =>\n chart\n .addLineSeries({\n dataPattern: {\n // pattern: 'ProgressiveX' => Each consecutive data point has increased X coordinate.\n pattern: 'ProgressiveX',\n // regularProgressiveStep: true => The X step between each consecutive data point is regular (for example, always `1.0`).\n regularProgressiveStep: true,\n },\n })\n // Destroy automatically outscrolled data (old data becoming out of X axis range).\n // Actual data cleaning can happen at any convenient time (not necessarily immediately when data goes out of range).\n .setDataCleaning({ minDataPointCount: 10000 })\n .setStrokeStyle((lineStyle) => lineStyle.setThickness(1.0)),\n)\n\n// Configure a common data-generator for all channels.\nconst dataGenerator = createProgressiveRandomGenerator().setNumberOfPoints(3600)\n\n// Setup a continuous data-stream for each series.\nseries.forEach((value, i) =>\n dataGenerator\n .generate()\n .setStreamRepeat(true)\n // Use 1000 points / sec data rate (1 millisecond interval for data points).\n // Requesting generator to give an array of data points after every 15 ms.\n // As using 1 millisecond data point interval, it means 15 datapoints\n // have to be generated every round, 1 for each millisecond.\n .setStreamBatchSize(15) // 15 points per batch\n .setStreamInterval(15) // interval in milliseconds\n .toStream()\n .forEach((data) => value.add(data)),\n)\n","url":null,"readme":"This example shows a dashboard with multiple progressive channels of data points using progressive line series.\n\nThe dashboard allows rendering of multiple scenes in a single view port highly efficiently with minimal memory resources. In our case, the rows of dashboard grid are filled with individual charts, where each represents the data channel.\n\n## Progressive series\n\nProgressive series are highly optimized series for the rendering of high-volume and high-density data while keeping full interactivity.\nThese optimizations are enabled by selecting a **_DataPattern_**, which needs to be specified during the creation of the series instance and cannot be changed further for performance related reasons. _More detailed description was explained in previous examples._\n","image":"dashboard5ch"},{"id":"lcjs-example-0502-dashboardTrading","title":"JavaScript Trading Dashboard","tags":["dashboard","ohlc","trading","range","area"],"description":"This example shows the creation of a simple trading dashboard with multiple individual charts on a single pane.","metaDescription":"LightningChart JS Interactive Examples. Fastest 2D & 3D JavaScript Charts: Scientific Chart examples, Create High-Performance Charts, Medical Charts examples, dashboard charts.","src":"/*\n * LightningChartJS example that showcases usage of Dashboard for trading.\n */\n// Import LightningChartJS\nconst lcjs = require('@arction/lcjs')\n\n// Import xydata\nconst xydata = require('@arction/xydata')\n\n// Extract required parts from LightningChartJS.\nconst { lightningChart, AxisTickStrategies, LegendBoxBuilders, emptyLine, SolidFill, SolidLine, Themes } = lcjs\n\n// Import data-generator from 'xydata'-library.\nconst { createOHLCGenerator, createProgressiveTraceGenerator } = xydata\n\n// Create dashboard to house two charts\nconst db = lightningChart().Dashboard({\n // theme: Themes.darkGold\n numberOfRows: 2,\n numberOfColumns: 1,\n})\nconst theme = db.getTheme()\n\n// Decide on an origin for DateTime axis.\nconst dateOrigin = new Date(2018, 0, 1)\n// Chart that contains the OHLC candle stick series and Bollinger band\nconst chartOHLC = db.createChartXY({\n columnIndex: 0,\n rowIndex: 0,\n columnSpan: 1,\n rowSpan: 1,\n})\n// Use DateTime TickStrategy with custom date origin for X Axis.\nchartOHLC.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\n// Modify Chart.\nchartOHLC\n .setTitle('Trading dashboard')\n //Style AutoCursor.\n .setAutoCursor((cursor) => {\n cursor.setTickMarkerYVisible(false)\n cursor.setGridStrokeYStyle(emptyLine)\n })\n .setPadding({ right: 40 })\n\n// The top chart should have 66% of view height allocated to it. By giving the first row a height of 2, the relative\n// height of the row becomes 2/3 of the whole view (default value for row height / column width is 1)\ndb.setRowHeight(0, 2)\n\n// Create a LegendBox for Candle-Stick and Bollinger Band\nconst legendBoxOHLC = chartOHLC\n .addLegendBox(LegendBoxBuilders.VerticalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.3,\n })\n\n// Define function which sets Y axis intervals nicely.\nlet setViewNicely\n\n// Create OHLC Figures and Area-range.\n//#region\n\n// Get Y-axis for series (view is set manually).\nconst stockAxisY = chartOHLC\n .getDefaultAxisY()\n .setScrollStrategy(undefined)\n .setTitle('USD')\n // Synchronize left margins of the stacked charts by assigning a static Y Axis thickness for both.\n .setThickness(80)\n\n// Add series.\nconst areaRange = chartOHLC\n .addAreaRangeSeries({ yAxis: stockAxisY })\n .setLowFillStyle(theme.examples.bollingerFillStyle)\n .setHighFillStyle(theme.examples.bollingerFillStyle)\n .setLowStrokeStyle(new SolidLine({ thickness: 1, fillStyle: theme.examples.bollingerBorderFillStyle }))\n .setHighStrokeStyle(new SolidLine({ thickness: 1, fillStyle: theme.examples.bollingerBorderFillStyle }))\n .setName('Bollinger band')\n .setCursorEnabled(false)\n\nconst stockFigureWidth = 5.0\nconst stock = chartOHLC\n .addOHLCSeries({ yAxis: stockAxisY })\n .setName('Candle-Sticks')\n // Setting width of figures\n .setFigureWidth(stockFigureWidth)\n\n// Make function that handles adding OHLC segments to series.\nconst add = (ohlc) => {\n // ohlc is equal to [x, open, high, low, close]\n stock.add(ohlc)\n // AreaRange looks better if it extends a bit further than the actual OHLC values.\n const areaOffset = 0.2\n areaRange.add({\n position: ohlc[0],\n high: ohlc[2] - areaOffset,\n low: ohlc[3] + areaOffset,\n })\n}\n\n// Generate some static data.\ncreateOHLCGenerator()\n .setNumberOfPoints(100)\n .setDataFrequency(24 * 60 * 60 * 1000)\n .generate()\n .toPromise()\n .then((data) => {\n data.forEach(add)\n setViewNicely()\n })\n\n//#endregion\n\n// Create volume.\n//#region\nconst chartVolume = db.createChartXY({\n columnIndex: 0,\n rowIndex: 1,\n columnSpan: 1,\n rowSpan: 1,\n})\n// Use DateTime TickStrategy with custom date origin for X Axis.\nchartVolume.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))\n// Modify Chart.\nchartVolume.setTitle('Volume').setPadding({ right: 40 })\n// Create a LegendBox as part of the chart.\nconst legendBoxVolume = chartVolume\n .addLegendBox(LegendBoxBuilders.VerticalLegendBox)\n // Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.\n .setAutoDispose({\n type: 'max-width',\n maxWidth: 0.3,\n })\n\n// Create Y-axis for series (view is set manually).\nconst volumeAxisY = chartVolume\n .getDefaultAxisY()\n .setTitle('USD')\n // Synchronize left margins of the stacked charts by assigning a static Y Axis thickness for both.\n .setThickness(80)\nconst volume = chartVolume.addAreaSeries({ yAxis: volumeAxisY }).setName('Volume')\n\ncreateProgressiveTraceGenerator()\n .setNumberOfPoints(990)\n .generate()\n .toPromise()\n .then((data) => {\n volume.add(data.map((point) => ({ x: point.x * 2.4 * 60 * 60 * 1000, y: Math.abs(point.y) * 10 })))\n setViewNicely()\n })\n\n//#endregion\n\n// Add series to LegendBox.\nlegendBoxOHLC.add(chartOHLC)\nlegendBoxVolume.add(chartVolume)\n\nsetViewNicely = () => {\n const yBoundsStock = { min: areaRange.getYMin(), max: areaRange.getYMax(), range: areaRange.getYMax() - areaRange.getYMin() }\n const yBoundsVolume = { min: volume.getYMin(), max: volume.getYMax(), range: volume.getYMax() - volume.getYMin() }\n // Set Y axis intervals so that series don't overlap and volume is under stocks.\n volumeAxisY.se