From 37b06677d1c19d6a9e346dfbab23a4d8f403cd15 Mon Sep 17 00:00:00 2001 From: athirupathiraja Date: Wed, 14 Oct 2026 16:29:23 -0400 Subject: [PATCH] added investments, drillholes, and medical imaging demo apps --- .gitignore | 4 +- drillholes-demo/app.py | 116 + drillholes-demo/assets/explorer.js | 588 ++ drillholes-demo/assets/plotly-logo-old.png | Bin 0 -> 13629 bytes drillholes-demo/assets/plotly-logo.png | Bin 0 -> 24095 bytes drillholes-demo/assets/styles.css | 390 + drillholes-demo/callbacks/__init__.py | 0 drillholes-demo/callbacks/block_model.py | 30 + drillholes-demo/callbacks/comparison.py | 31 + drillholes-demo/callbacks/cross_section.py | 102 + drillholes-demo/callbacks/downhole.py | 177 + drillholes-demo/components/__init__.py | 0 .../components/overview_widgets.py | 132 + drillholes-demo/data/assay.csv | 7665 +++++++++++++++++ drillholes-demo/data/collar.csv | 51 + drillholes-demo/data/lith.csv | 275 + drillholes-demo/data/survey.csv | 585 ++ drillholes-demo/data_generator.py | 130 + drillholes-demo/pages/__init__.py | 0 drillholes-demo/pages/block_model.py | 108 + drillholes-demo/pages/comparison.py | 202 + drillholes-demo/pages/cross_section.py | 543 ++ drillholes-demo/pages/downhole_logs.py | 430 + drillholes-demo/pages/explorer.py | 146 + drillholes-demo/requirements.txt | 9 + drillholes-demo/utils.py | 210 + investments-dashboard/Procfile | 1 + investments-dashboard/app.py | 230 + investments-dashboard/assets/DE-logo.png | Bin 0 -> 24095 bytes investments-dashboard/assets/styles.css | 137 + investments-dashboard/callbacks/__init__.py | 5 + investments-dashboard/callbacks/dashboard.py | 224 + investments-dashboard/callbacks/export_all.py | 56 + investments-dashboard/callbacks/fees.py | 129 + .../callbacks/performance.py | 341 + investments-dashboard/callbacks/portfolio.py | 192 + investments-dashboard/components/__init__.py | 1 + investments-dashboard/components/charts.py | 232 + investments-dashboard/components/kpi_cards.py | 87 + investments-dashboard/components/tables.py | 103 + investments-dashboard/data/df_after_tax.csv | 10 + investments-dashboard/data/df_avg_returns.csv | 4 + .../data/df_current_prices.csv | 7 + investments-dashboard/data/df_dividend.csv | 8 + investments-dashboard/data/df_equity_char.csv | 13 + .../data/df_equity_diver.csv | 14 + investments-dashboard/data/df_expenses.csv | 4 + investments-dashboard/data/df_fund_facts.csv | 7 + investments-dashboard/data/df_graph.csv | 2564 ++++++ investments-dashboard/data/df_hist_prices.csv | 6 + investments-dashboard/data/df_minimums.csv | 6 + investments-dashboard/data/df_price_perf.csv | 4 + investments-dashboard/data/df_realized.csv | 4 + .../data/df_recent_returns.csv | 4 + investments-dashboard/data/df_unrealized.csv | 3 + .../demos/callbacks/01_simple_callback.py | 93 + .../demos/callbacks/02_gapminder_slider.py | 75 + .../demos/callbacks/03_multiple_inputs.py | 121 + .../demos/callbacks/04_state_button.py | 118 + .../01_debug_interactions.py | 115 + .../02_hover_timeseries.py | 183 + .../interactive-graphing/03_crossfilter.py | 111 + .../demos/layout/01_hello_dash.py | 54 + .../demos/layout/02_styled_layout.py | 47 + .../demos/layout/03_core_components.py | 109 + investments-dashboard/pages/__init__.py | 1 + investments-dashboard/pages/dashboard.py | 293 + investments-dashboard/pages/fees.py | 333 + investments-dashboard/pages/performance.py | 364 + investments-dashboard/pages/portfolio.py | 414 + investments-dashboard/requirements.txt | 10 + .../scripts/dash-callbacks-intro.md | 102 + .../dash-interactive-graphing-intro.md | 90 + .../scripts/dash-layout-intro.md | 108 + investments-dashboard/utils/__init__.py | 1 + investments-dashboard/utils/data_loader.py | 135 + investments-dashboard/utils/pdf_export.py | 85 + medical-imaging-demo/.gitignore | 7 + medical-imaging-demo/Procfile | 1 + medical-imaging-demo/README.md | 69 + medical-imaging-demo/app.py | 209 + medical-imaging-demo/assets/DE-logo.png | Bin 0 -> 24095 bytes medical-imaging-demo/assets/logo.svg | 9 + medical-imaging-demo/assets/styles.css | 86 + medical-imaging-demo/assets/xrays/xray_01.png | Bin 0 -> 97988 bytes medical-imaging-demo/assets/xrays/xray_02.png | Bin 0 -> 98479 bytes medical-imaging-demo/assets/xrays/xray_03.png | Bin 0 -> 98548 bytes medical-imaging-demo/assets/xrays/xray_04.png | Bin 0 -> 98405 bytes medical-imaging-demo/assets/xrays/xray_05.png | Bin 0 -> 97777 bytes medical-imaging-demo/assets/xrays/xray_06.png | Bin 0 -> 98439 bytes medical-imaging-demo/assets/xrays/xray_07.png | Bin 0 -> 98113 bytes medical-imaging-demo/assets/xrays/xray_08.png | Bin 0 -> 98191 bytes medical-imaging-demo/callbacks/__init__.py | 3 + medical-imaging-demo/callbacks/cohort.py | 95 + medical-imaging-demo/callbacks/dashboard.py | 106 + medical-imaging-demo/callbacks/export_all.py | 33 + medical-imaging-demo/callbacks/imaging.py | 192 + medical-imaging-demo/callbacks/vitals.py | 74 + medical-imaging-demo/components/__init__.py | 0 medical-imaging-demo/components/charts.py | 287 + medical-imaging-demo/components/imaging.py | 172 + medical-imaging-demo/components/kpi_cards.py | 61 + medical-imaging-demo/components/tables.py | 110 + medical-imaging-demo/data/admissions.csv | 211 + medical-imaging-demo/data/cohort.csv | 201 + medical-imaging-demo/data/labs.csv | 201 + medical-imaging-demo/data/patients.csv | 61 + medical-imaging-demo/data/studies.csv | 9 + medical-imaging-demo/data/vitals.csv | 2305 +++++ medical-imaging-demo/pages/__init__.py | 0 medical-imaging-demo/pages/cohort.py | 214 + medical-imaging-demo/pages/dashboard.py | 286 + medical-imaging-demo/pages/imaging.py | 557 ++ medical-imaging-demo/pages/vitals.py | 176 + medical-imaging-demo/requirements.txt | 13 + medical-imaging-demo/scripts/generate_data.py | 216 + .../scripts/generate_xrays.py | 164 + medical-imaging-demo/utils/__init__.py | 0 medical-imaging-demo/utils/data_loader.py | 104 + medical-imaging-demo/utils/pdf_export.py | 214 + 120 files changed, 25727 insertions(+), 1 deletion(-) create mode 100644 drillholes-demo/app.py create mode 100644 drillholes-demo/assets/explorer.js create mode 100644 drillholes-demo/assets/plotly-logo-old.png create mode 100644 drillholes-demo/assets/plotly-logo.png create mode 100644 drillholes-demo/assets/styles.css create mode 100644 drillholes-demo/callbacks/__init__.py create mode 100644 drillholes-demo/callbacks/block_model.py create mode 100644 drillholes-demo/callbacks/comparison.py create mode 100644 drillholes-demo/callbacks/cross_section.py create mode 100644 drillholes-demo/callbacks/downhole.py create mode 100644 drillholes-demo/components/__init__.py create mode 100644 drillholes-demo/components/overview_widgets.py create mode 100644 drillholes-demo/data/assay.csv create mode 100644 drillholes-demo/data/collar.csv create mode 100644 drillholes-demo/data/lith.csv create mode 100644 drillholes-demo/data/survey.csv create mode 100644 drillholes-demo/data_generator.py create mode 100644 drillholes-demo/pages/__init__.py create mode 100644 drillholes-demo/pages/block_model.py create mode 100644 drillholes-demo/pages/comparison.py create mode 100644 drillholes-demo/pages/cross_section.py create mode 100644 drillholes-demo/pages/downhole_logs.py create mode 100644 drillholes-demo/pages/explorer.py create mode 100644 drillholes-demo/requirements.txt create mode 100644 drillholes-demo/utils.py create mode 100644 investments-dashboard/Procfile create mode 100644 investments-dashboard/app.py create mode 100644 investments-dashboard/assets/DE-logo.png create mode 100644 investments-dashboard/assets/styles.css create mode 100644 investments-dashboard/callbacks/__init__.py create mode 100644 investments-dashboard/callbacks/dashboard.py create mode 100644 investments-dashboard/callbacks/export_all.py create mode 100644 investments-dashboard/callbacks/fees.py create mode 100644 investments-dashboard/callbacks/performance.py create mode 100644 investments-dashboard/callbacks/portfolio.py create mode 100644 investments-dashboard/components/__init__.py create mode 100644 investments-dashboard/components/charts.py create mode 100644 investments-dashboard/components/kpi_cards.py create mode 100644 investments-dashboard/components/tables.py create mode 100644 investments-dashboard/data/df_after_tax.csv create mode 100644 investments-dashboard/data/df_avg_returns.csv create mode 100644 investments-dashboard/data/df_current_prices.csv create mode 100644 investments-dashboard/data/df_dividend.csv create mode 100644 investments-dashboard/data/df_equity_char.csv create mode 100644 investments-dashboard/data/df_equity_diver.csv create mode 100644 investments-dashboard/data/df_expenses.csv create mode 100644 investments-dashboard/data/df_fund_facts.csv create mode 100644 investments-dashboard/data/df_graph.csv create mode 100644 investments-dashboard/data/df_hist_prices.csv create mode 100644 investments-dashboard/data/df_minimums.csv create mode 100644 investments-dashboard/data/df_price_perf.csv create mode 100644 investments-dashboard/data/df_realized.csv create mode 100644 investments-dashboard/data/df_recent_returns.csv create mode 100644 investments-dashboard/data/df_unrealized.csv create mode 100644 investments-dashboard/demos/callbacks/01_simple_callback.py create mode 100644 investments-dashboard/demos/callbacks/02_gapminder_slider.py create mode 100644 investments-dashboard/demos/callbacks/03_multiple_inputs.py create mode 100644 investments-dashboard/demos/callbacks/04_state_button.py create mode 100644 investments-dashboard/demos/interactive-graphing/01_debug_interactions.py create mode 100644 investments-dashboard/demos/interactive-graphing/02_hover_timeseries.py create mode 100644 investments-dashboard/demos/interactive-graphing/03_crossfilter.py create mode 100644 investments-dashboard/demos/layout/01_hello_dash.py create mode 100644 investments-dashboard/demos/layout/02_styled_layout.py create mode 100644 investments-dashboard/demos/layout/03_core_components.py create mode 100644 investments-dashboard/pages/__init__.py create mode 100644 investments-dashboard/pages/dashboard.py create mode 100644 investments-dashboard/pages/fees.py create mode 100644 investments-dashboard/pages/performance.py create mode 100644 investments-dashboard/pages/portfolio.py create mode 100644 investments-dashboard/requirements.txt create mode 100644 investments-dashboard/scripts/dash-callbacks-intro.md create mode 100644 investments-dashboard/scripts/dash-interactive-graphing-intro.md create mode 100644 investments-dashboard/scripts/dash-layout-intro.md create mode 100644 investments-dashboard/utils/__init__.py create mode 100644 investments-dashboard/utils/data_loader.py create mode 100644 investments-dashboard/utils/pdf_export.py create mode 100644 medical-imaging-demo/.gitignore create mode 100644 medical-imaging-demo/Procfile create mode 100644 medical-imaging-demo/README.md create mode 100644 medical-imaging-demo/app.py create mode 100644 medical-imaging-demo/assets/DE-logo.png create mode 100644 medical-imaging-demo/assets/logo.svg create mode 100644 medical-imaging-demo/assets/styles.css create mode 100644 medical-imaging-demo/assets/xrays/xray_01.png create mode 100644 medical-imaging-demo/assets/xrays/xray_02.png create mode 100644 medical-imaging-demo/assets/xrays/xray_03.png create mode 100644 medical-imaging-demo/assets/xrays/xray_04.png create mode 100644 medical-imaging-demo/assets/xrays/xray_05.png create mode 100644 medical-imaging-demo/assets/xrays/xray_06.png create mode 100644 medical-imaging-demo/assets/xrays/xray_07.png create mode 100644 medical-imaging-demo/assets/xrays/xray_08.png create mode 100644 medical-imaging-demo/callbacks/__init__.py create mode 100644 medical-imaging-demo/callbacks/cohort.py create mode 100644 medical-imaging-demo/callbacks/dashboard.py create mode 100644 medical-imaging-demo/callbacks/export_all.py create mode 100644 medical-imaging-demo/callbacks/imaging.py create mode 100644 medical-imaging-demo/callbacks/vitals.py create mode 100644 medical-imaging-demo/components/__init__.py create mode 100644 medical-imaging-demo/components/charts.py create mode 100644 medical-imaging-demo/components/imaging.py create mode 100644 medical-imaging-demo/components/kpi_cards.py create mode 100644 medical-imaging-demo/components/tables.py create mode 100644 medical-imaging-demo/data/admissions.csv create mode 100644 medical-imaging-demo/data/cohort.csv create mode 100644 medical-imaging-demo/data/labs.csv create mode 100644 medical-imaging-demo/data/patients.csv create mode 100644 medical-imaging-demo/data/studies.csv create mode 100644 medical-imaging-demo/data/vitals.csv create mode 100644 medical-imaging-demo/pages/__init__.py create mode 100644 medical-imaging-demo/pages/cohort.py create mode 100644 medical-imaging-demo/pages/dashboard.py create mode 100644 medical-imaging-demo/pages/imaging.py create mode 100644 medical-imaging-demo/pages/vitals.py create mode 100644 medical-imaging-demo/requirements.txt create mode 100644 medical-imaging-demo/scripts/generate_data.py create mode 100644 medical-imaging-demo/scripts/generate_xrays.py create mode 100644 medical-imaging-demo/utils/__init__.py create mode 100644 medical-imaging-demo/utils/data_loader.py create mode 100644 medical-imaging-demo/utils/pdf_export.py diff --git a/.gitignore b/.gitignore index ee5f51a..2f295e9 100644 --- a/.gitignore +++ b/.gitignore @@ -146,4 +146,6 @@ cython_debug/ /output # Pycache -*.pyc \ No newline at end of file +*.pyc +# AgentOps session artifacts +.agents/ diff --git a/drillholes-demo/app.py b/drillholes-demo/app.py new file mode 100644 index 0000000..4b5ec83 --- /dev/null +++ b/drillholes-demo/app.py @@ -0,0 +1,116 @@ +import dash +from dash import dcc, html, Input, Output, callback, clientside_callback +import dash_mantine_components as dmc + +from pages import cross_section, downhole_logs, comparison, explorer, block_model +from utils import create_header, create_nav_sidebar, NAV_ITEMS +import callbacks.cross_section # noqa: F401 — registers callbacks +import callbacks.downhole # noqa: F401 +import callbacks.comparison # noqa: F401 +import callbacks.block_model # noqa: F401 +# Explorer page is fully driven by assets/explorer.js — no Python callbacks. + +app = dash.Dash( + __name__, + meta_tags=[{"name": "viewport", "content": "width=device-width, initial-scale=1"}], + external_stylesheets=dmc.styles.ALL, + suppress_callback_exceptions=True, +) +app.title = "Drillhole Visualizer — WA Au-Cu Porphyry" +server = app.server + +app.layout = dmc.MantineProvider( + id="mantine-provider", + forceColorScheme="light", + children=[ + dcc.Location(id="url", refresh=False), + dcc.Store(id="measure-store"), + dmc.AppShell( + [ + dmc.AppShellHeader(create_header(), withBorder=True), + dmc.AppShellMain( + html.Div( + [ + create_nav_sidebar(), + dmc.Container(id="page-content", fluid=True, p="md", className="main-content"), + ], + className="main-layout", + ), + ), + ], + header={"height": 60}, + padding=0, + ), + ], +) + +clientside_callback( + """ + function(n_clicks) { + if (n_clicks === undefined || n_clicks === null) { + var nu = window.dash_clientside.no_update; + return [nu, nu, nu, nu, nu, nu, nu, nu]; + } + var collapsed = (n_clicks % 2) !== 0; + if (collapsed) { + return [ + "filter-sidebar collapsed", + "pad-0 justify-center", + "basil:caret-right-solid", + {"display": "none"}, + null, + {"display": "none"}, + {"display": "none"}, + {"display": "none"} + ]; + } + return [ + "filter-sidebar", + "title-pad space-between", + "charm:cross", + null, + {"display": "none"}, + null, + null, + null + ]; + } + """, + Output("filter-sidebar", "className"), + Output("sidebar-title-div", "className"), + Output("sidebar-btn-icon", "icon"), + Output("sidebar-title", "style"), + Output("sidebar-collapsed-title-div", "style"), + Output("sidebar-outer-div", "style"), + Output("sidebar-inner-div", "style"), + Output("sidebar-btn-div", "style"), + Input("sidebar-btn", "n_clicks"), +) + + +@callback(Output("page-content", "children"), Input("url", "pathname")) +def display_page(pathname): + if pathname == "/downhole-logs": + return downhole_logs.layout() + elif pathname == "/comparison": + return comparison.layout() + elif pathname == "/explorer": + return explorer.layout() + elif pathname == "/block-model": + return block_model.layout() + else: + return cross_section.layout() + + +@callback( + [Output(item["id"], "active") for item in NAV_ITEMS], + Input("url", "pathname"), +) +def update_nav_active(pathname): + path = pathname or "/" + return [item["href"] == path for item in NAV_ITEMS] + + +if __name__ == "__main__": + app.run(debug=True, port=8051) + diff --git a/drillholes-demo/assets/explorer.js b/drillholes-demo/assets/explorer.js new file mode 100644 index 0000000..4fbfa75 --- /dev/null +++ b/drillholes-demo/assets/explorer.js @@ -0,0 +1,588 @@ +/* + * Drill-Hole Cross-Section Explorer — port of the CodePen of the same name. + * + * The CodePen renders into a single #chart div with raw Plotly.js. Dash + * unmounts/remounts the page on every SPA route change, so we wrap the + * codepen body in a MutationObserver-driven init() that re-binds whenever + * the #explorer-chart div appears in the DOM. assets/*.js loads on every + * Dash page; the early-out at the top of init() makes this a no-op when + * the explorer page isn't mounted. + */ +(function () { + var initialized = false; + var retryTimer = null; + + function scheduleRetry() { + if (retryTimer) return; + retryTimer = setTimeout(function () { + retryTimer = null; + init(); + }, 100); + } + + function init() { + var gd = document.getElementById("explorer-chart"); + if (!gd) { + initialized = false; + return; + } + if (initialized) return; + // Dash 4 lazy-loads Plotly.js when a dcc.Graph mounts. Poll until it's + // available rather than bailing once. + if (!window.Plotly) { + scheduleRetry(); + return; + } + initialized = true; + + /* ===== begin verbatim CodePen JS ===== */ + var holeNames = ["DH-001", "DH-002", "DH-003", "DH-004"]; + var holeColors = ["#2563eb", "#16a34a", "#d97706", "#9333ea"]; + var yAxes = ["y", "y2", "y3", "y4"]; + var xAxes = ["x", "x2", "x3", "x4"]; + var domainXs = [ + [0.05, 0.22], + [0.3, 0.47], + [0.55, 0.72], + [0.8, 0.97], + ]; + + function makeLog(seed, nPoints) { + var depths = [], + values = []; + var v = 30 + seed * 5; + for (var i = 0; i <= nPoints; i++) { + var d = i * (100 / nPoints); + depths.push(d); + v += + Math.sin(d * 0.12 + seed) * 3 + + Math.cos(d * 0.07 - seed * 2) * 2 + + (Math.random() - 0.5) * 4; + v = Math.max(5, Math.min(95, v)); + if (d > 35 + seed * 3 && d < 70 - seed * 2) v += 15; + values.push(v); + } + return { depths: depths, values: values }; + } + + var units = [ + { + name: "Overburden", + tops: [0, 0, 0, 0], + bots: [10, 8, 13, 9], + fill: "rgba(139,90,43,0.22)", + line: "rgba(139,90,43,0.7)", + }, + { + name: "Upper Sandstone", + tops: [10, 8, 13, 9], + bots: [28, 25, 30, 26], + fill: "rgba(194,178,128,0.22)", + line: "rgba(194,178,128,0.7)", + }, + { + name: "Ore Zone", + tops: [28, 25, 30, 26], + bots: [68, 64, 72, 66], + fill: "rgba(220,50,50,0.18)", + line: "rgba(220,50,50,0.7)", + }, + { + name: "Lower Shale", + tops: [68, 64, 72, 66], + bots: [85, 82, 88, 84], + fill: "rgba(80,120,80,0.18)", + line: "rgba(80,120,80,0.7)", + }, + { + name: "Basement Gneiss", + tops: [85, 82, 88, 84], + bots: [100, 100, 100, 100], + fill: "rgba(100,100,160,0.18)", + line: "rgba(100,100,160,0.7)", + }, + ]; + + var traces = []; + for (var h = 0; h < 4; h++) { + var log = makeLog(h, 80); + var c = holeColors[h]; + var r = parseInt(c.slice(1, 3), 16), + g = parseInt(c.slice(3, 5), 16), + b = parseInt(c.slice(5, 7), 16); + traces.push({ + x: log.values, + y: log.depths, + xaxis: xAxes[h], + yaxis: yAxes[h], + type: "scatter", + mode: "lines", + name: holeNames[h], + line: { color: c, width: 1.5 }, + fill: "tozerox", + fillcolor: "rgba(" + r + "," + g + "," + b + ",0.18)", + hoverinfo: "none", + }); + } + + var baseShapes = []; + + units.forEach(function (u) { + for (var i = 0; i < 3; i++) { + baseShapes.push({ + type: "path", + xref: "paper", + yref: [yAxes[i], yAxes[i + 1], yAxes[i + 1], yAxes[i]], + path: + "M " + + domainXs[i][1] + + " " + + u.tops[i] + + " L " + + domainXs[i + 1][0] + + " " + + u.tops[i + 1] + + " L " + + domainXs[i + 1][0] + + " " + + u.bots[i + 1] + + " L " + + domainXs[i][1] + + " " + + u.bots[i] + + " Z", + fillcolor: u.fill, + line: { color: u.line, width: 1 }, + }); + } + }); + + for (var hh = 0; hh < 4; hh++) { + baseShapes.push({ + type: "rect", + xref: xAxes[hh], + yref: yAxes[hh], + x0: 0, + x1: 100, + y0: units[2].tops[hh], + y1: units[2].bots[hh], + fillcolor: "rgba(220,50,50,0.10)", + line: { width: 0 }, + layer: "below", + }); + } + + var depthRange = [105, -5]; + var valRange = [0, 100]; + + function yAxisCfg(extra) { + return Object.assign( + { + range: depthRange, + gridcolor: "#ecedf0", + zerolinecolor: "#e2e4e9", + linecolor: "#d1d5db", + tickfont: { color: "#6b7280", size: 9 }, + }, + extra || {} + ); + } + + function xAxisCfg(domain, anchor, title) { + return { + domain: domain, + anchor: anchor, + range: valRange, + gridcolor: "#ecedf0", + zerolinecolor: "#e2e4e9", + linecolor: "#d1d5db", + tickfont: { color: "#6b7280", size: 9 }, + title: { + text: title, + font: { size: 11, color: "#4b5563" }, + standoff: 6, + }, + }; + } + + var layout = { + paper_bgcolor: "#fff", + plot_bgcolor: "#fafbfc", + font: { color: "#1e2028" }, + margin: { l: 55, r: 16, t: 44, b: 44 }, + showlegend: true, + legend: { + x: 0.5, + y: 1.07, + xanchor: "center", + orientation: "h", + bgcolor: "rgba(255,255,255,0)", + font: { color: "#4b5563", size: 11 }, + }, + + hoveranywhere: true, + clickanywhere: true, + hovermode: "closest", + + shapes: baseShapes.slice(), + + yaxis: yAxisCfg({ + domain: [0, 1], + anchor: "x", + title: { + text: "Depth (m)", + font: { size: 11, color: "#4b5563" }, + standoff: 6, + }, + }), + yaxis2: yAxisCfg({ + domain: [0, 1], + anchor: "x2", + title: { + text: "Depth (m)", + font: { size: 11, color: "#4b5563" }, + standoff: 6, + }, + }), + yaxis3: yAxisCfg({ + domain: [0, 1], + anchor: "x3", + title: { + text: "Depth (m)", + font: { size: 11, color: "#4b5563" }, + standoff: 6, + }, + }), + yaxis4: yAxisCfg({ + domain: [0, 1], + anchor: "x4", + title: { + text: "Depth (m)", + font: { size: 11, color: "#4b5563" }, + standoff: 6, + }, + }), + + xaxis: xAxisCfg(domainXs[0], "y", "DH-001"), + xaxis2: xAxisCfg(domainXs[1], "y2", "DH-002"), + xaxis3: xAxisCfg(domainXs[2], "y3", "DH-003"), + xaxis4: xAxisCfg(domainXs[3], "y4", "DH-004"), + + annotations: [], + }; + + var clicks = []; + + function dot(xa, ya, xval, depth) { + var axObj = + gd._fullLayout[ya === "y" ? "yaxis" : "yaxis" + ya.slice(1)]; + var xAxObj = + gd._fullLayout[xa === "x" ? "xaxis" : "xaxis" + xa.slice(1)]; + var px = 4; + var rx = + (px * (xAxObj.range[1] - xAxObj.range[0])) / (xAxObj._length || 1); + var ry = + (px * (axObj.range[1] - axObj.range[0])) / (axObj._length || 1); + return { + type: "circle", + xref: xa, + yref: ya, + x0: xval - rx, + x1: xval + rx, + y0: depth - ry, + y1: depth + ry, + fillcolor: "rgba(220,38,38,0.5)", + line: { color: "#dc2626", width: 1.5 }, + }; + } + + function getClickInfo(data) { + var depth, xval, holeIdx; + if (data.points && data.points.length > 0) { + var pt = data.points[0]; + depth = pt.y; + xval = pt.x; + var traceXa = pt.data.xaxis || "x"; + holeIdx = + traceXa === "x" ? 0 : parseInt(traceXa.replace("x", "")) - 1; + } else if (data.yvals && data.yvals.length > 0) { + depth = data.yvals[0]; + xval = data.xvals ? data.xvals[0] : 50; + if (data.xaxes && data.xaxes.length > 0) { + var axId = data.xaxes[0]._id || ""; + holeIdx = axId === "x" ? 0 : parseInt(axId.replace("x", "")) - 1; + } + } + if (depth !== undefined && holeIdx !== undefined) { + return { depth: depth, xval: xval, holeIdx: holeIdx }; + } + return null; + } + + Plotly.newPlot(gd, traces, layout, { + responsive: true, + displayModeBar: true, + modeBarButtonsToRemove: ["lasso2d", "select2d"], + displaylogo: false, + }).then(function () { + gd.on("plotly_hover", function (d) { + var gs = gd._fullLayout._size; + var layer = gd._fullLayout._hoverlayer; + + layer.selectAll(".pseudo-spike").remove(); + + var yPos = d.event.offsetY; + + layer + .insert("line", ":first-child") + .attr({ + x1: gs.l, + x2: gs.l + gs.w, + y1: yPos, + y2: yPos, + "stroke-width": 1, + stroke: "rgba(100,100,100,0.4)", + "stroke-dasharray": "4,3", + }) + .classed("pseudo-spike", true); + + var depthVal = d.yvals + ? d.yvals[0] + : d.points && d.points.length > 0 + ? d.points[0].y + : null; + if (depthVal !== null) { + layer + .append("rect") + .attr({ + x: gs.l - 52, + y: yPos - 9, + width: 48, + height: 18, + rx: 3, + fill: "#4b5563", + }) + .classed("pseudo-spike", true); + layer + .append("text") + .attr({ + x: gs.l - 48, + y: yPos + 4, + fill: "white", + "font-size": "10px", + "font-family": "Inter, Segoe UI, system-ui, sans-serif", + }) + .text(depthVal.toFixed(1) + " m") + .classed("pseudo-spike", true); + } + + if (d.points && d.points.length > 0) { + var pt = d.points[0]; + var tc = pt.data.line.color; + var xax = pt.xaxis; + var yax = pt.yaxis; + + var mkX = + xax._offset + + ((pt.x - xax.range[0]) / (xax.range[1] - xax.range[0])) * + xax._length; + var mkY = + yax._offset + + ((pt.y - yax.range[1]) / (yax.range[0] - yax.range[1])) * + yax._length; + + layer + .append("circle") + .attr({ + cx: mkX, + cy: mkY, + r: 4.5, + fill: tc, + stroke: "white", + "stroke-width": 2, + }) + .classed("pseudo-spike", true); + + var yStr = pt.y.toFixed(1) + " m"; + var lblW = yStr.length * 6.5 + 18; + var lblH = 20; + var gap = 10; + var lx = mkX + gap; + if (lx + lblW > gs.l + gs.w) lx = mkX - lblW - gap; + var ly = mkY - lblH / 2; + + layer + .append("rect") + .attr({ x: lx, y: ly, width: lblW, height: lblH, rx: 10, fill: tc }) + .classed("pseudo-spike", true); + + layer + .append("text") + .attr({ + x: lx + lblW / 2, + y: ly + 13, + fill: "white", + "font-size": "10.5px", + "font-family": "Inter, Segoe UI, system-ui, sans-serif", + "font-weight": "600", + "text-anchor": "middle", + }) + .text(yStr) + .classed("pseudo-spike", true); + } + + var depth, holeName, xval; + if (d.points && d.points.length > 0) { + var pt2 = d.points[0]; + depth = pt2.y; + xval = pt2.x; + holeName = pt2.data.name; + } else if (d.yvals && d.yvals.length > 0) { + depth = d.yvals[0]; + xval = d.xvals ? d.xvals[0] : null; + if (d.xaxes && d.xaxes.length > 0) { + var axId = d.xaxes[0]._id || ""; + var hIdx = axId === "x" ? 0 : parseInt(axId.replace("x", "")) - 1; + holeName = holeNames[hIdx] || "--"; + } + } + if (depth !== undefined) { + var depthEl = document.getElementById("cursor-depth"); + var holeEl = document.getElementById("cursor-hole"); + var valueEl = document.getElementById("cursor-value"); + if (depthEl) depthEl.textContent = depth.toFixed(1) + " m"; + if (holeEl) holeEl.textContent = holeName || "--"; + if (valueEl) + valueEl.textContent = + xval !== null && xval !== undefined ? xval.toFixed(1) : "--"; + } + }); + + gd.on("plotly_unhover", function () { + if (gd._fullLayout && gd._fullLayout._hoverlayer) { + gd._fullLayout._hoverlayer.selectAll(".pseudo-spike").remove(); + } + var depthEl = document.getElementById("cursor-depth"); + var holeEl = document.getElementById("cursor-hole"); + var valueEl = document.getElementById("cursor-value"); + if (depthEl) depthEl.textContent = "--"; + if (holeEl) holeEl.textContent = "--"; + if (valueEl) valueEl.textContent = "--"; + }); + + gd.on("plotly_click", function (data) { + var info = getClickInfo(data); + if (!info) return; + + var distEl = document.getElementById("distance-result"); + var xa = xAxes[info.holeIdx]; + var ya = yAxes[info.holeIdx]; + + if (clicks.length >= 2) { + clicks = []; + Plotly.relayout(gd, { + shapes: baseShapes.slice(), + annotations: [], + }); + if (distEl) distEl.style.display = "none"; + return; + } + + clicks.push({ + depth: info.depth, + xval: info.xval, + holeIdx: info.holeIdx, + xa: xa, + ya: ya, + }); + + if (clicks.length === 1) { + if (distEl) { + distEl.style.display = "block"; + distEl.innerHTML = + "Point 1: " + + info.depth.toFixed(1) + + " m on " + + holeNames[info.holeIdx]; + } + Plotly.relayout(gd, { + shapes: baseShapes.concat([dot(xa, ya, info.xval, info.depth)]), + annotations: [], + }); + } else { + var a = clicks[0], + b = clicks[1]; + + if (a.holeIdx !== b.holeIdx) { + clicks.pop(); + return; + } + + var dist = Math.abs(b.depth - a.depth); + var mx = (a.xval + b.xval) / 2; + var my = (a.depth + b.depth) / 2; + + if (distEl) { + distEl.style.display = "block"; + distEl.innerHTML = + "" + + dist.toFixed(1) + + " m on " + + holeNames[a.holeIdx]; + } + + Plotly.relayout(gd, { + shapes: baseShapes.concat([ + dot(a.xa, a.ya, a.xval, a.depth), + dot(b.xa, b.ya, b.xval, b.depth), + { + type: "line", + xref: a.xa, + yref: a.ya, + x0: a.xval, + y0: a.depth, + x1: b.xval, + y1: b.depth, + line: { color: "#dc2626", width: 2 }, + }, + ]), + annotations: [ + { + x: mx, + y: my, + xref: a.xa, + yref: a.ya, + text: dist.toFixed(1) + " m", + showarrow: false, + font: { color: "#dc2626", size: 12 }, + bgcolor: "rgba(255,255,255,0.9)", + bordercolor: "#dc2626", + borderwidth: 1, + borderpad: 4, + }, + ], + }); + } + }); + }); + /* ===== end verbatim CodePen JS ===== */ + } + + var observer = new MutationObserver(function () { + if (!document.getElementById("explorer-chart")) { + initialized = false; + return; + } + init(); + }); + + if (document.body) { + observer.observe(document.body, { childList: true, subtree: true }); + } else { + document.addEventListener("DOMContentLoaded", function () { + observer.observe(document.body, { childList: true, subtree: true }); + init(); + }); + } + init(); +})(); diff --git a/drillholes-demo/assets/plotly-logo-old.png b/drillholes-demo/assets/plotly-logo-old.png new file mode 100644 index 0000000000000000000000000000000000000000..653c836acc1a27210f5721acc6278a1cf3e6fb8b GIT binary patch literal 13629 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 F{{dS4YghmP literal 0 HcmV?d00001 diff --git a/drillholes-demo/assets/plotly-logo.png b/drillholes-demo/assets/plotly-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a0375905a3f3c3e6b871fe36c682a07be4338dda GIT binary patch literal 24095 zcmeFZJ6BHf^lFd!|>faFMbGlZZBDB#fDAdL()bV$e0-Q7bY z0|W2E`?;U@xA%wr+ke0_pIpwGYh7{1aUAEl2vky#zIW&G9S{g~4`Lbd(MpO(Qdp!@MVHQS)pML_NaqP8TocI#J; z62c=orhKv7umfKv=pDopv_!aiBjqHts;BY8?%GCO1ub+IEhL!MzT?5wH>_5%gPGCM z%Nu?O%HJ;4q zB1X__^8&frdB&xC9uT1CYLL&UxStX1@ufFW$aaox^#tQ_E=^apc~Lq!9*n-+@OGW; zo0#A@Q`hkRAUQGn^77&{+(WUDh{)?`p-<^(m#cQ~*L$jQKUBcQ`7xfNgv8qVFn-d> zLpPPK@R234S|$wFh&J{xaZqAE78tUC*wf3bw9I8qgICbjVY6XoZ|&qD1e528a#8Om;}-@o&P2ijU*73c!IuLA zQ7(}x7kuSMsAtJkVvajo=Uo~}@s&>r2aly-XMAYPZ2ft6qo0JsB+jPYQuBC^p#HGV zZw6cc_>i|$ZLUJCZ~XD@5F*C*2OELyrW0BYKNHiDMWxv`gnyybBSPrr9GK7MFKxeiN8+UTK#Z}Ag zU@(_WcfLSEP$q773LA3kW8uP5B~*`LCl2G=Y!psMQBD04y6(w(_G@(`Nm4~{%hr3s z%Wea)2QY#pad;apTwuw$OYh(L6(fC1seFvjTjISo$B1!98kh->`Lt0Bt!8wx_-?L^ zXP%Y^npxVawCBs^nFcKiekd}F8}wW4rCBS>Pd#$Nw63bpoT0oAPL22{OuH^GezeuQ z%UF=`cTQBaRh#XoelMDM-W8SZeRyOv(^cqIbd$hc{H+eb35}-5vQx7AY#_5uML++) z(+Ly1o_M2pH)_^xmYA>JJ-X+mKB35E+hKF>?By^zq|VZ9`A^@3HX3jIt$^s|6!ZXd z)=U|1;=IX2cN(flJv1TD-!%n1I0w6K>7OWlIXARDa}n}r9 z?{$jr{b-woSun1eo*lai(3}}B!Z|y4hPGBOoE_&T{ODYioh?50>3FR3-R0~A5Vvh3 zanl2dTWntUIk8e>FC`AV?hCII|Mkx>*!4vC&KHd65i@^z-gNH?e6u5v>)fS2dLp+? z0^1S*EA+THrP7U*sI1$8!Y|H~D_QGFG%7|eBD?m9x2P&H>B%26C{}i;;s%o%pJ=oc z={tN_8m-?=eBZ1Kz~)Ehh!B~HF$od&_1hA+O+^k@=%KI?K5=k1xd>0Z8{LoDHCDZ>GKlEUDYR0C{guL;d$ zEN*M`EkR+e`GAv{1s9d`V{&{DXl#yP{#(W#jh>49PnN&ux^ztnM(5GN(^VfUBi6Wx@DjkbQGLRylTM~!#F8!?SB5#IPWd<8g< zFJ8D`7~=)EJYYbPn2F{3P^^?-)SK6T$8X2~)GL0xj}gZ;Lx!D(#~m(T=2T4(C5c?l zWNcKeoSy;@3-$i9Hwi6Tv81Bj{UVO-Xx)YkmHlwB#V9hWX#jEb%_}2dthUwx>%T*S zw50mRv+H!dc1K=k>&q}OglGI%RftC9=5058zH0;-E_1PRTDv^gzYy$S)g&s@mPj^+ z17ddY#5KxIqu3t)I|I7yjs+0z1bevrMBGwqLkth~Dw$Yz9 zmN(*xIJ!r;#t0c9`1i)XyTEqvRhCDsnKwLr^s!7Y$(ick??CsT0MoGW^FwD%fAK=@ zxXmh5|6h{z^}geAj>FkWl1xb*1<{tid`aEYN_vbj;;5i#bDd!mINg6fYd54|$yI{9 z?-fhxkY~q<3MJwYZ6Q}%p$_bbC}y5vQ|F|nh)H|aeUl53Z?lqIYtG++z1f=}5pN9t zcZ>!OV46op!!DxE*gmzuf)d@j6(tVf;Ci=aqsM~UkRHbgxFYX)W?4QPlXp`P5K$G_oNwOYO-NSjBIih}sQ+3@_K(UI-v^@BTaH)uy*4)mblz z1rG7NtPwqpw{c?!Zg*d-kHx-InH)``nmFi!3?aww&df1~|6FbQe1v9HMn{qr^?tOf zU9O7rQZlcx0|qFe0UViJO-?xvU- z7L8?>1tFU?{c85h^Uovo@Kv2pZ;~b4-SE}3o$PwFVnqII#WG{+kCt<2(*J!zSN3~DPToet5!FAmOo6z*$~QBj|9k)xeXj532^k*gu~z z@lUAoJ{`GxZb(DxJ89PIT8?ecuvoFUT;wz82wZ0ld3BTyW zay36Yxi|#ioi&vea=9Kp${{eRJ?^$+XkmbrZ|vdkELomOeq39BwB#URV`P%;vT{D2 zY9oqM+)1u^LL$ZY@0yFz7G()ybq^>HTdHZRj?U^%mtgwXA)aRic#8X?W&c5N9l;l) z2SfYa-Y24EqU%jFVg)u+uFc5`-L-iU$CzK?m#ejxb;n{|UE#`S0_U7TUg#)h0KyGD z-tCrF~C>%YNgm1YhnvzWxv&f%Qj7G>u>Mgvp0d3PFMfL`L1ws?Z#X+!v@{Z<%_R$Ij>aBZXwP z*%OkY_7?6tV=DynUo%)BBrDR0C`JyMI2-;Ag`}fk&pkieS1KLn-(tLLf6BFW7(U*X z4L^-9tryv@@A$-tlaCrSrwaOy@Z{rqOZe{2T}*z+j)eEc^ckma&2lbs)$7AYC#!nV z^~1(Iat#6kjb6Pn?~5|xnb`PU8#Zs-B_xlBhDP>H?Sgr@g@q9Z!~!3GwHHH)?QBU+ zZQ~*$g1c@+d$ICN?zXDI*U&aJhwqO?r$v|C7L`HIp_XpUI!Py66IJ52uv2M!stfqs zfgAvV8eJ^Va~u;qe>z8!8ly`^6}6!r+7_F$L!Zk|^<8n_QQ~iX^UH-d)a~FjDVh?wz@%ZI}3Og8FxDKj}A!x>`J6-r$j=x zYtkfhsRq67t8bOv(lY+kIbF^>0~sc6;+E^_xb863c28*X3u8|_hVCD)dg%j*f@8WH_APsj`VHV=XW7}YpRpOJL$d1bU2z9oZS{&RO2-j$%Z^i@mV^w~$s^7lk9 z+liY>+=-hR%}PSA+3B>2%>I*KeZJ8HIwZY*)(|eLOega5h4BHBLx-JBzWjoz8HYUw zL|EYCQ*)(O((AXfNAYzY+&oifNjJ%C%9kzs)l_EHWT^GeL)RW&?d+*ai7u_Lymv|2 zMuq-2EzVHPKRzRQ^B*B|ulV8PzxUJQ|9=RUSJd^NQ7eBFH?cs-Ad5QZt7MP^glXJ& ztUY4;3W%0``HxUa|Lk4+=`Il$WfU)mS=0H|4?nkzl>IZnIQQ`UX1VtEl~hW4=Rb!p z>CB!ref2#(*Z+@M_*^U#%*SNdclKynUh+~MwY=B4MqhDGPp#}IP6a`+OlwBHx8mRE zG84ECDi)Kt#mo@txLlUSWafJyXv+vlwvwa#Q)`NlxT(WrMVYwh&+%peu0=3)qhn41 z%j94tn{MZN{&-0DBmYL3-h_`OPn#hmIwbtTL4C7G&9?vPY+Ra=iEkr@Lmt55_DVa5 zw0d|X2KL)uiYF*!dGFq(8MuGeyl(ubM!0qK-IW?W^}}jw(c}v6QFEknvSJmq7)>}d zRC;hKsO)uLwx91qrL2&vpiIkLCUO7&?C=ulv1NsmkZ;%8-+v)nN`I+q>Ha z61Spp^!ahaGPV{f1BMSSN2t`RttjlR`E%F)M7r{7MYsrEl%6LVn!BIGJ*o^Ii~98 zWS@jE-FejqGe1Oc_=s8SyH5d5Q_XSBnYZwx;ZRzvE>D!b2gtZt^KW^gA@a)RX?T2% zx$@YvC-D#Buk|Wu1XR5+-_Sqwvt`QU|3GDW118_U(Zj28LtfTBqG1qa0B+P*em|`9 z(OXnH??c|kwy3_zt2-($@;}=5TnkSFJ+HC>JXW%G_Zwg<(%o}O-|34N2xuU$I05Yf_Yi&8fT2pZvMA^i_D>rkB7I>0Xr8lS5Ua|$k6cr5uH4v!-@myFf zDp4&u9YL#J{;K!;Te2Hk$owgpfZIOg5w&3s>1NtNvKWW$i*q?`u*V5T zA!PAr#-vW$IYSRJ(++z#$%@t%6rE&U{@3XT2*j`#B?tr$ggL%K94?E5_Q(v>-KAhg zVAi?_R)#=g>jT@Plx4)9RO4cgQQm3eKe@Eo zDI_nBJjGuZM*iil;8y^gy4<5_lP(hW*wN6#b|WQRaH{B#>-hKx=CUP7QkHg7cGT+n zc=FHEI^00?`8KjSz-u!qbmm7+BXTA3IiLfc;sNqFd?s@~Vvn}gI(-r0%2x?>vgD@8T`vDBUN z7)zDOKi=I=*%@o%jjh+?4Il@mX?M}J0RNP%pjC#EfTJ0>8y}DP6j9h*~NNU5SzM zb3@ zwv`6w2U5+& zXScVrHEBM`cu8j!<%X~_GLAJa|3vabvvyQ}{wYm=rk5U>g|#fyk|Q~D^Q>IN{P5>W z$~)4C+hSda!pOr^+F+_|ZxHCkOQEdm^poA`_n8=`^FBJQ2Fgni%ec#5<<7kClIp-B zekUt>A07wR|JhXK^4N$?644Rh@-o^en%SS!FYD)w?`~*%a2G7kI^q68m1a=UYbm&` zaCjp-U}(dvYaLH5SKG?i+Rij@<^r{DxquE_!Qjs`?{{I&9+mbTVCkj%Xk zfTmmpm!6$xssM;BUC(a9-7n??c&F=mVZdAc>GOC+CuER=NRjKlhyX5|5J)sbapjsz zl`l!1z0RNMCs2-TK>53B%x4>*ZQ^$OaQ?2XkuPC`tqzC@O(%lUke4yzWpPzHWr+gY ztK}vO+6W%7W-MmIC0~%W!pM}$jbe5$*YBk-MXYb;Z7_1VT5Y+881#7*O>zZxsjnt7 zJm9TWOleA|Im~pSRfMahXsMa-ELl=T#}AYL^4xl+U*n{iN9U+~taf&D=WLBx zVP+$3D<-#u%D(*922r7!)-Q_CaqWqglf}pp0RH{c3m}&FHqzGu(knWEo*XHUwF*=a zeD2PQ|0Foi!sfv>TVqLpw#ihbcU2Gv8)7xBbm=OviqI_S2u z-cgUuv{vFJL3K}%mtFmlQ@7_V22xGK5@S37Zc~tD&7S^x9d+yVm&k?LK3xZ>?&xYaQr`Cs zaDus2#3I=}ou(kky>FRUAT;Pp3NjSF-fNUDkcj=#1%h~R7PEw^J^!$tI zVF)Di>1Qp#UG)YKerba>g~&J(czRng(y)jTGO- z33nllIeov7C)|^Q3g)m7ppv&xTfG>;!U5ID1>Nw2VPm}e92zd@oTW8m( z39IA+c!j}hfJ*JuoQo*p-akCrLRD@+osOq~V-pF)@;_(R9F2HLn{qK0Ku1?wSLXb> z%OOe40v#r>->=AT4PTA-YfI2@Mllc=WdAk~^D1L7Q|>31%CX8USo_18sp)MR>#LV7 zLg+Y`kzoP}XDK%Tuu-gOdQyc$e-H!3lfkr%xQx?JHxsPXP~)kFZ#yLDoMo+1jU@DKgW zYefLz@McX(MuuOn$|t7>j>iFvVEhw4$X(zd><;dBZ%p3?C!_MDP72-uh?JjA!WL!T zbd<>JbmiX@>Rd0_Y~@y%I~+V)h?~rNKh=IVP1lpHet^pbawm|4xz4KJ13wfjA9fo^ z4f1;#Em-vQStlat>uC}M;2tG4Psb1ATg%TdlThh{kFV)|;gFNZ2tIIl201D8?t$a> z&KQ4NgMCz}4ym+4C|YIWo=h|6Xn37iz>aZnJ!B+wnk|M#r%*F?4k5smx&)_2GVjG>C=E1iEP1J{yY!3YOrm=Thc9Uq>L_9ui`8+9CW zpE|!%$qdJ&P!8!wXmuEu+axHzWIJUwT<$k{IF;rOuokcK@DFWM-`Hj1_ylZtR@#o- z%*KXP?R1IvGoK1f?rB8y5j`?3ix0-Q4@<>LS^`@L6eb85THs5~-w@M*D|aRd-#QI( z?fVtuLbqvn&4UV)%R~v6VrJp8{jmEk;2jh1X8?S6G-Ljhq0y~lfE85@`V@0}dsl!v z8Heaj$w-^6w)I2FC{VP)JVt-Sr8%hdI8n(@n}EZAdeqtM`W2HcE;BR8XTo>*R)-Os z^@Us5iWkY_5NK7@5Oy!Yu$8Ve=;E!$IkbCr{sCk-A1c@FQd~NpJ&2jB!5$t&ATHkt z971KQUP|V(WNzB^W8Wui?gK8TxQ(jBHbX`P&d=BJfvwCyfioRmo8u$_b)3lEj!UI> z!m2#f3hd4QL5~B%dSX9lE-ZhLDC^vM~?%PfEiLDn?m?cQ@%bJNRBj0OtgI!lwHbp|q}UQ)r6 zl@AUU+&YPyj*0FZ+%BS>jigM-ZQo%4fbdKyoj+SpNPw;`y2m(zvSqd<4TqvrKYWK} z1Sh-kStJV~Oq%Lg!1(ps4&8_}akqS_P1+E&0eCe70&aul2Zm0+SdCf)N=*$JX$J~I z>p?vjv2aMSL+FU<%dz{W={hq``Iu`|y$mMrM= z2zU`p;y#VDe+yXJ0W)456X9xIO_~Fm3gluUt+|1R@ zF-kNy0D9z4=ie37RM%W}PR+x*Zg4=em64AC_-ToYCy`v0v~?)@H*-;j*5wxmKuGe| znIu^fNK#cng#butICIwKAfwp~yn6bJW=6uWu$GwZg3o2b{~L|NE=@iQmT02VG(=8# zhhW}N1)f~6w9PY}k=DyJB$Q03oguFFpw|g33DD2>G?BRPRY&yg*R@O_Clj0=e*Nsk zu8iF#F)k_t{=rrX-Q`b7vWPTp3ENRRuvgz23l|*G>VqS)qYD~phx5~N{L#~lv+F{*cLE!SnB_xVr3i5~Wnh6~E`s@KTg6+tFKCQ3@F|!XBXzA$4b-!4`V-u_!{ueOTE; zl5@SyuGGZzS~#6Q&jviKT(ucNo2jV!Jdvo$#*OF&ezoHBSiEIrKq>HS4c~>8ju)p{ z30d5}VGN~1Qx%HT>Up;r*42$-KAb)N@q5)nQ>CZT-!Bm`{GN!k!<;+Lg>2V>8b(3 znxytnrJio4cz8yc@v=ftA?E#~V4Av}lKYL+$$VfE9z^TjxNn3+dJj|NJIV5~`OUWi zl)#BmCa9H6) zeT*?2T)c5lb2h||d2`c{?8U&bt-ahK!78evVqQ0H1y-shLQmzO<~#o6=iph*?e!A+_NbPa zBFu`2VAjtbGw8D~kxDV)gJ@oopuTL@4OHQCpmsGTVB>ij4jDdby1*qX<`$;8c2(QN zLZe4z(+bt)3S4T|hfkQ5DT=>`0}vgdGRpo$tuZjxIpD8Ycys5` z{okgMH4zp!389wJT24w#A9SXq9>x24xZM((3=!0W@D&{rEU8Br_LWwVn94R8&JcA3SyRtU%or#29y{qNn3Zd%=GiiC}B9UNj{n;Lu z7k86wM7G{7JpNIE=4HcHDYl>rF9EFbE4zp)he;WIm*BYQBAr-~1R-SGO66DvT`=L) z)xDf#*uZmEQpj7lHyJ*`uQx}j#o1I%vNE2V18A3gC@q{^Utm{^Ry#8_so3&dYsYX@ zWe$AQ_t5~M@PX+_3o8*)yL7TKmkjLNh>x%iKg8aXsEGBJ$nIro?qNbr{w6n<_5M&| zrJ2xt22Fqj@N6I#2j5jWmObmURyTHAh)WM^E4M=>ULUo4&LrTSr`{qABz>{%C@##Re0pnp+<(x}W&Y3TL9#|UMVNjN~! zEyL>LPBaZfD+8LD70LivIFw7Th^7Vi`UP_+}4%7|sefYp^MC6PdHp3J=ey>Ont=*Rj zIn`=f+qS7gEglud6C*vw!Hi&$H}75Cri1Z+t#}HguTfW_h>Oz>{b~hq2x-UlgIU>* z^F#Z4fK*y+$h4D!27=Y{qt!YOLvnAG{$Hq+0*yD3q=~_@8+8&h2Ycf{!UU8{*$L}w zp9LjtTTBND9KZ?yNpoiz?3XUFK)vGK1)CycI{N8tv zhDO%gAEhFTaBDO!)vWbvGsiolV#n*DqFxK;1;SLfBwP&O^NBXMX&uzW`+Q|5?!7R5 z(>KmDXjcYD+CIH2a0Q6_f$~aKwZT*r03+GYz1l+n_JARnM{IdVn;K(Qeheo_@;(|{ zPw4U}l^px-X?zE`P9ZMWh*JO-Sij44C*O@oZS96sBF1XiWtzB%BFzXMZF^Td!uv z9WLw%Wv&TsW);0x4sBaiusZT9UUYaBcLMUde{6s0@k+Ttd2$_0Rrrh#oOk9SQ~^lg zTT7zk(LIpSZ7Tr^{z#Fm0%k&|$>eezjjjr>wet3dhYdAp7KV_1mz?;$&Sxvgse(f5 zIcz;@#Kx%I7b# zSzQ(x-Ok?)4pm&yl9nbO;k$E~p3AOLb~xs{J`%c82kp8K+i)pWF=W`@E&YaPOyzbUpPZKV_DA8RP)*KqW0dG& zKyDfpWYV(xWfCHOHU5ebR+c_GIO0FMZej%w(NsQU&-ev!GiN@x6tM=BJXJZ5^`cfH zbcBg86YPJaAv>SPPicMwL;QPP<5oTzBPbE zA#@uH+hF2F7+F2n$=9?4*@Dr|9+*JpAGAm!|0pP)+{5z{0&Y~49tG%N-3Pr%Ir{Rk zW{*i)r9(G$50>Bg8*D5W@UD#J&EJNh7{x^%c`)7;)wtuIf~40w8rQEJS08h;Lo01c z)Nh>8Vt*OAl$cn(nz<+(X`BDM7AG;hVQLE{c)`pu#jD0%YJ_AA*3rHO$!YPdEwjiFl76?Q0xIL4d&l6< zgAcW1Rvf!UAT@D@o0uK zebn+WF1}3TOow>yUF=D#=VZqBL|XRFMc72%uSZ1%!sdQ#kugQ9y3r26N)MWoz0g+Q zy?0M8I!5(R#eOxF@MzFz;yUHiiQ$-M^|r$Wmpj|njag#7+AN~2z1ude^{nsBc+@So zRPE|%4(_ktE%2DV$lAlWwM{aO6_RU(4O80lbuE(>7#TW=bP*O}tnZoUC<40 zohrR9S?^uG?HYUHvv`l}> zg95htIcEP)?1WO#-b7qFzh)b%Fy;$THb9(I1?;%L8|Vq0#Z_0(0(wNfs3W#}vrq`v zbVPtos@-zctXtVYqV?gsIzU6l?&TlAR8Lr0#D0#xu!b7RKDzL?ytuL{P4ET+{&xRPTpR`OKya zMD|k>egs;o=}bO4nR|VkCK-tcal{$|C1J{#=ZMnER29a+#Wr1Og`WopT@eF1(DJnN z8-@;?8o5>~QI4#wo5=f103T@S6&xkIF9q|Rw%_V)W3W2=)|&Uw@@^Fm{3O)t?L#~! zdzNN_NJr~xmrFY?2xZAPF}>5;2z0OjbTui^yNOUYr;woN!CI&$cl$ z%Ic;gHl?p@HRAQ^`fqZq$Tt&sNp7Ijft$f2CnKw zlr#QSfuROSOk00$_E|dVIQNB+a3+ylXJ~IZ9&n2o#@MlJ->i)K&^|sx%iASlJtx~N zd*Y!aUs+*zr;pZfv30a_YOWZHfMK>85 z-M-Hqwp^ZB01!>H{NlV8SE~-gT2AaZrwLY2pwS=!!p-@q7r>ovN&w)b0h}BDqt^-k z{i-RUVodn9q+<7-#}on|!dFo7i9ZE@db4yy%7CzM6Cx?XiIScWk<#QP@8^&%mW5`N zsu?C+6!tiH%!I6qmR3AoENdnz9CrIdWg;bUoO9($r4CU2XMbNAD=9*#qrC1%8DCPS zKFkxsb7bD}c|UAfe^2C*=-a4aplD%VLV?qThElHt6aZyLY_-X}k;{S@cZCtRGm}(PH;i&s$Uk3OPMTw7lV|!W)>>W%+D$-`;+3~<29z~Byz7=9HXu0a z%`BC_?{mIs3ZAdb088A0%1?nxzHM?W_{*@_5zKQ0^Zc^uR(tjVoUq9!1rx>=T+OfH zpZQS(bmAaLfTv1TWICfHjzlsm2J&z^-`ih08^ZlIK!g!Zhn4f@TrFdoN6l3L!JENusE}XpQw+6B`%D+3+az{7$`WJTdE<{ z!VTA~Lwc@i}MG>lixJj;dW@^M78-ydNLjV5_MzKE*)mtaL#= zDVc@_>MuV0fGv@Vjc)u5BC+pGP?bd}2p5`b4*(BmV^X^5Q*(7*ppqhD?0X~fu2)14 z{=SYWG-x@r%E%$~-2E*OK85+n4~|Csya4t6oL*On)b@CpysUcs#fuY}Yr`}@N&mfu!G7w0NxM* zey*+z!lho%71(#+k0=f0cQ9raBGegu5z>wrTBD#A5ss|m*ADu5+s zP2Xzp4HV=8U}-Qv>-2s5Do2&*@(Jk34n8|0B%G6Khy}Sl@r}-(3_1}qsYWllO^^yy z$j6mWK|b4RgVvxv^qQ*4TfXg^OL+g7q&}I6#9DsVG^hdC?KV=Il+}z(_iSUXC0%9G z4YUW5nyXTL{NNggxAc(nZ$S}qk#0_NQ_u1#|MuBkUvl{<0M_SxdUQ}=b1FWCUYO2``fNC*!OSzUQ58UwNf9yC%oEy zkGsz%3pkv&-YIE21PIz6?^&=ZKTdI71HpMl*~T_%o@(3`JU4v^Cn}xX$a?^vJuRie zBZbl(<^YVD^6HIU{ug1&J;zeDhBsNUApomI5COQbpiQ`KXnL+6 zkzrqU4W^SkN*sXRJ~RfoGK`Ze2XXP4rD?QoUyl(_~f2YG*Vox!|qh(5pbOJ z96%$}2dZ-Xu_nh68o~@yp$}Ami!?B)nP6fY{#v3+$f-Nkq(aL*4aKV-f%1@$Y@oHL zXKt!?V<$nlV}~9Ds(IcUb#|zQy#;4wxXPGeS2=p@%XUh5uRHO}n*CAdTk-3XqRq+p zge0cM>y)%|ma|{ImIw?WdqsGBcb!@(pX(|+pJ|~0Mgb#}Hy0jnnUqtf!UxrgJXkDa z)c7v>%h8S)wU$OBqtW!=pe!Q?zzNHAV^qyM0!^ad>zdAKz`v7Dr5?Gc^%PR)SN_5Y z-FIAh%?RA31e7yJJ6IOox?22=J`@5pOe5=<6rqsv#4TlBn+MHaQ@WhdoR58*SOBck-ztBH#rJQ- zr@DHPFch%Vpqrd>L8iAuZQMIZ5VyK{D3C=!o%KwrlHn|G zaIyWj8%=QsaZ^xXjs8Rr5RWPzIJRnmJK^zE2Z){Z-7>QzZ@dp|(}Wiq+XDC-Y4zVg zAe!E*zY731Xw_Iaj9;rK4e0tiZzC`a56HAD1O{pY0LGS!8yTTUhJcxquEI30Uv)bO zz}#N1lZqHwN0g*2 zq;$vmy@XCZ2lT<)0t1AP6<H$9s6XU!xlA!M?$PYlRPMP(3mKtPWsLpp$r9Ie2fv0E=5wPB=RuW0Gx3)BZMUU%2@UV33CD zcC>0XY*DR@9K|nRxS57!X7xs&*sRh*_?i@q+kcJ|ampi0>f;O&b# z2|UpJ?q9z$=bg=oI`eID?cxWX@1omAoTJ8O9^s5%UslIMIFX`x0%rUyoX0YBTd?2g(gU)d z$VP%uj6G`_a?xuK6V%DVlT=xlp?ddnCxBB8sIjygF^_2p{0$D^J}r=GW<Qp{+fZtZZ@Xd^H4tLF`PN!6gI!O7Xy-jyOv|HBj5VKQF!`8kS5-^1cmD3(Ich zDK>fD$De<_SwU4%&HCm_)LOpC=5vMkIqnChpp&2J3yHMPLi`FB{S#4P#=C-T{E2G> zrr7~tCpvrag%slZFqLlChxn^r_d{Yjq}!mQkq2-{*oS$`(Eh;Qu4Put3Yx zs4?UHdq(Vbzu{v0MF2}FM6EbB`(=Fe#sirMF&e6q~Vd7cbB}p#pdwiNuXt( zWyopVR#Aj?o-nI`;tH9~4OwdG@R$sPLK{v3+we6R4VozVu~<7MONjYhur=Wi3t$?t zb2|o361UC4)=39QKwaaU*nNt8_Evrx^Vm2udG&9NG}3>^q?223)4t*+Xj}uZVMIE= zWe(tvr1dtgig9oNd1XHo9X&}m|CFq+2K0pXioLmcsB;w`xvy#(oaJ}d)PXjcAoI5! zmiTIr6rvQ>MFhF77;-Ryieia#DdLv!`1C5=Hm5*3_xr7~@xB(d#f-Jm+eR)(@jv&AoZ)tl{v)UMD|N zKRgwJpU1?qlb_geIY6dJj9`F5oa?wp+v_Cswr_m4^Y$>$25Xq4VY0#FM2ip1=|Sqw z+S?yui4rzfW%{-1e>*k2ELam{8E5SybRAu?o;)dMfE891ZUS8zy-dt0Fg4V@>PaUM z%Ft9EEho&lPJ1*XP}$r~>+-}J)r?rNQn>lj??te^H+(CDLsh4A@h6Hrl6_Q7y@q2e zkAIUOOwO)?O3_iY^_~CL${u+eRDsuO^2OTaPfp@D6TUPj)YC%w&n0s-cj&&wp!4E8 z49Rr1C0($nD`p40RdS|-NX)eVWOj zVX)i^)5CUNo|qR#>b&f1aeOo`%Z<(}x?aTHLF<*1Hf3}KFGl31<8K-)SWCkaDII}Q ziDI>)60*;Qnwt&2xUL8dOFIlbo$%CR&kb~!kM&QkOM@VBISf6|o9hP=jc z-43J%K_(t6cf)JKF*sRa%nbZ*pnJCy*)uga5aYyIqRZ4P*s zQ{U+JsC1uM@*v~B&K%F1k?*XJ=S0kfweC*1>!cv2h|R4{z|&~*O&tJJaW{s^2i+tk zV%rEydhhs+-P*n9Ynl;5;Hst#fAp?-Z@CuZ$rNn86Fq-vgRw?T3J&msymxl>;z+*g z8R8E<7^4!G8f1RqdQFx2h3BVKg%@+T-wHSSoN0%Z<#4#-&tFdhGiu)ltAI4UZ;L8k zPfzD4dFjh)%(&5$tmcVxgMxqOW}hr9WuWKbrAUEaTzb4YT~f^QuCw#a0pKA&@?)#E z**CSknB<(x(jXfG0qdP$n?Q-EdJlH7g4lJ!IrB zsyEyGTG>a72uzk<>~JGNUUSn^BM%-j6_{SB3B;bgQ9Vfx{z*{J+pl=eS4AZwoUsaO z%PR0#ZjC(7_GTW-9vDdkc{pBc*qqi;Sa8b;7v8L<#qYC-i9Qak-p)IR)dWTz*Uzz8 z_3)4G*ahu8Td3&@b9i>d_hlqR+Ec5}1+__+0Z%>V8=~)jtz&N#<{)6oL36S?x>Hd3 zqb^%My{=-}c-rNLV7p1YM;tObeB)}r`~Z-y*EYZ=A|n^!wN_0lRz)N8NIclUISM$^ z?(KX`5Oq8$Q@6I@VFAHeLX6YU*^R^#QGDFfFGpc3IMdJpu}S}0jUouAK&;EoRTs_>8pbu0lXPcS`4a2^$7cns=iqj0E%43?+Iwlfs#|pr9ynG#nnQz>w=^3+fv$465=9W{6EjwOk8cby7 zCD;Ut<#_%YW*b*^!a?aEC>;cwT9Hdws~QLK;6AT>5eZ;d)$Flo=U#kK{6ea><6fc4 zpq^WYIxkhK7FLJnYa)%<;l(#yrk!e! zcLA5x;;LMD()btqRh%m7ONim+7So^)Y?;8O^5Uj;XL%2+Uj8IIV6nWGCqyWoyZT=u z3r{O^rE0JvSK3eSwZ`PbeH=6M&Zc!;iI{O=F?-U852FFG#Qtz5V#=?wV7|7jCCK*~ zJE9nzkcbuU{$^8w)!_8`_;-}6 zb#4ni7FJ6b^MjvD3k>CMyn*g(=DS(kr9}eC$5h+ih^;d>)1%CZqh)1#_-T}QBM{HA z<;OZ&p1oY4)LE`JXiU+DBCl<9yR;_$3WeZmrRW&R9ql(Z zwHo7i_|6tCp7@T8&mecZ14W9c+Zq7JeePjmrW>?eJG(jyy53?lT0@8R&MjVFy0js4 zcD%DzA@F|4nAy1$HYQGAVp!U$MX*y~hvOrVh-Bqe(?ZFC+vA&=GT$++uWR97g-%y^-?S!b!vaeI!JQ)OUsS7*-+oUKq~)SWq4 z;d)pz8nZq$yr`?BH$nB})4C2tqu795;b9arBeGyNm{G^?gkHZPZz{K^aNMtt#l?fn zxtv5LEn!G>eEVad2iQ}ejnK`zm4_9z`*&U=>naNYaOrp%G@`u~6e3)k#mKe&3myo)J^Eh0^1{XAye0 z%*7SXniKQ=p&a|jXs{33N7BvAJFMF*n2){t62EQq$t-^EUy>!PFQh$xyO8+utA0cv zA`~vHv=2Pz*67WS8oJ#5UdmgCm=zHtA@)$2o=7R!N~vl+)K9pU_*$3qp=!9|jeGgI z$NNKdf*bW;$I@h(1|dXbjs}7Fao0f6h^fD;saZ5e!@+Y}u09wMBn^I1dBj?qCw)-v(l*3uG=kKG_b`%oAZS;F3Fr;SuaqVs6m4! zu>&bLv;LB{+_%tWU6K>|b>(PCa{2VWBD^5O*CgpRPzQ8R)6e(!B|=3Ewf+sXemQ8L zyCo=~+~YGjY{TKLDAv-stv+)~idhXQIQikNLLxs(95WJdyqm(;8?*O%Bp}6*G*1wa z4V#0Ozn6!8stqpolD$gERyM3%S;R?r!kzbPAJRFB@g??9s&`DW!(K4dk=uW5ii|oI zB@X86)yH_=V2bgWTt!jdmw2-6$S0%31OoB~8=i%;4owkf zIMjAMZ|qx40_Ne&WEj$|3BO5{F<7YYvck&kEdWOF89w0~thPOnhRfR!E87uL%)fm_ zM?vBps8Tr(soknV6TcCCbT-hEM7}Yni4B*-gE!PAi)uSMj!UE3o6{AZ2(G23Y0Fdr5!jhK zcVwLI1hFJ!J4MJ8^2g6VM_DjRllHb1XcT2w&>>v3aDd#=@wXV<*}L0gcZ(5Iha_E> zJ?s~|^q0bL@k7W~-zU07D!kz!w`x9;Le&;L8}A z0+0y_yD$PpMw)X?WWb+TnJCe>5B@gP50a#9P~!Lz1+!)4Q$Ftz@e}l+@847|WP|gQ zKY;Z@Rcn~7;AW{*D6lyQrK(590S0+Rn|lTH5ST@JaBn z6+eL0xcQI%f!co}$qL_AUb3)t?5?ex0>fxoe~v}#mRx^&(aOP9UYru(-O4x5{SPv8mMs6hn_X1>a6qS zbkl-#<>QS&%OV9t(7x}_PWGnA^7QqiPQV6X(AlY??E^x#TPTgjK=_caAgYQEt+id1 zoo&+AxkAHOPIoK8s)xK>q)#WUCqVP4Wdg=re{#(*Vc{O&l%!>)3!_ct{RuTg7S;)> z4Ybo7_~hEV`qo9Z6O**SgYUsQ1O`*DR;a4K)X)c)k$YD|cGWjgh_S89)Rxm&sM~i? zSSNDLu~0X+npTj}1c*`k5&_<*Ct{%hyJ{-H!3xrbt+WK28htc#&pN2EQsHXcPW8uc zk{Xhr++tYtmCUmxdjkJ1`NY|PVRYmTPPe02foe0yS;aK&L6=8ot(AI`_kf#Tf$e z1$rQ*8qGp63tC8%bEo31JKhWe(6|6+SF57_!My6cuaKDlayPg`qL^*AkDkUv5{Nz4 zffwa?eeN|nyg{<-{a579p+_vdWpVW-zZxGikH1xtePx|%po5*;kP${-oSXf&E=Gr0 z|94Y>!KFQ6i~OUfW$^luSL2DeTRoQ%Uw9H{Tl=HlA#Rrbr}(d<4}3)c4iM-i@Q*s4 z$H~op%hsneTD%j=;uf&u)`G41U#2~<L#Usk0_n^hV0C4)pPz@wdja!-P7Hv{W&rmx+yEK_}WMi zmnk_ATk6d%h{Jq#Ho5tt)?`P3$Z9EEqqhB^!0N)%M#_7$gln5u@$_uhTv?Ra_fr1C z10k|NBN0=wsF=Bp2w6(gAHYQ1V1u8Bd22O&bmhOay-~dk8lfeAbHkCAZno6r?Cmcd zqE{^%SK0v@Z9+KV%WWXGg+*TZ7Guu`>ox20Kyh}I_*ed#uFRL1gM03fWVAW=I?ECU zZ7ij6Ak0q9pPMR5o)N+$^5SS?z*9%Axln53ksI1Kzemzhbp82>RZOcQ0YGQ9b%4Jt z&`ml^vIFP|^rc5956_-eTbD5^UTm@CriN2>{Wjc8KA>&?Y-&heE?mgqO${v?nsd+M zEBs(m>z-U8w~IyDWC2I;}nfX2uN?T 0) { + return {"display": "none"}; + } + return currentStyle || {"display": "flex"}; + } + """, + Output("cs-yaxis-hint", "style"), + Input("cross-section-chart", "relayoutData"), + State("cs-yaxis-hint", "style"), + prevent_initial_call=True, +) + + +# Elevation cursor — tracks mouse elevation across all three panels. +clientside_callback( + """ + function(hoverData, figure) { + if (!hoverData || !hoverData.points || !hoverData.points.length) { + return window.dash_clientside.no_update; + } + var elev = hoverData.points[0].y; + if (elev == null) return window.dash_clientside.no_update; + var fig = JSON.parse(JSON.stringify(figure)); + if (!fig.layout.shapes) return window.dash_clientside.no_update; + for (var i = 0; i < fig.layout.shapes.length; i++) { + var n = fig.layout.shapes[i].name || ""; + if (n === "elev-cursor-1" || n === "elev-cursor-2" || n === "elev-cursor-3") { + fig.layout.shapes[i].y0 = elev; + fig.layout.shapes[i].y1 = elev; + fig.layout.shapes[i].visible = true; + } + } + return fig; + } + """, + Output("cross-section-chart", "figure", allow_duplicate=True), + Input("cross-section-chart", "hoverData"), + State("cross-section-chart", "figure"), + prevent_initial_call=True, +) + + +# Click to pin a marker line at the clicked elevation across all three panels. +clientside_callback( + """ + function(clickData, figure) { + if (!clickData || !clickData.points || !clickData.points.length) { + return window.dash_clientside.no_update; + } + var elev = clickData.points[0].y; + if (elev == null) return window.dash_clientside.no_update; + var fig = JSON.parse(JSON.stringify(figure)); + if (!fig.layout.shapes) return window.dash_clientside.no_update; + for (var i = 0; i < fig.layout.shapes.length; i++) { + var n = fig.layout.shapes[i].name || ""; + if (n.indexOf("measure-span-") === 0) { + fig.layout.shapes[i].y0 = elev - 0.5; + fig.layout.shapes[i].y1 = elev + 0.5; + fig.layout.shapes[i].visible = true; + } + } + return fig; + } + """, + Output("cross-section-chart", "figure", allow_duplicate=True), + Input("cross-section-chart", "clickData"), + State("cross-section-chart", "figure"), + prevent_initial_call=True, +) diff --git a/drillholes-demo/callbacks/downhole.py b/drillholes-demo/callbacks/downhole.py new file mode 100644 index 0000000..63d751f --- /dev/null +++ b/drillholes-demo/callbacks/downhole.py @@ -0,0 +1,177 @@ +""" +Downhole callbacks: +1. Hole selector → rebuild strip log figure +2. Clientside callback: hoverData → update depth cursor shape (zero Python round-trip) +3. Python callback: clickData → click-to-measure state machine +4. Clear button → reset measurement +""" + +import json +import plotly.graph_objects as go +from dash import Input, Output, State, callback, clientside_callback, no_update, ctx +import dash + +from pages.downhole_logs import _strip_log_figure +from utils import load_data + + +@callback( + Output("strip-log-chart", "figure"), + Input("hole-selector", "value"), +) +def update_strip_log(hole_id): + collar, assay, lith, survey = load_data() + return _strip_log_figure(hole_id, collar, assay, lith, survey) + + +@callback( + [Output("kpi-hole-depth", "children"), + Output("kpi-lith-count", "children")], + Input("hole-selector", "value"), +) +def update_hole_kpis(hole_id): + collar, _, lith, _ = load_data() + row = collar.loc[collar["HOLEID"] == hole_id] + depth = int(row["TOTDEPTH"].iloc[0]) if not row.empty else 0 + lith_count = int(lith[lith["HOLEID"] == hole_id].shape[0]) + return f"{depth} m", str(lith_count) + + +# ── Depth cursor — clientside for zero latency ────────────────────────────── +# Plot-wide hover events fire even over empty plot areas (not just data points). +# The transparent sentinel traces in each panel ensure hoverData is populated +# anywhere along the depth axis. +clientside_callback( + """ + function(hoverData, figure) { + if (!hoverData || !hoverData.points || hoverData.points.length === 0) { + return window.dash_clientside.no_update; + } + var depth = hoverData.points[0].y; + if (depth === undefined || depth === null) { + return window.dash_clientside.no_update; + } + // Deep-copy so Dash detects the change + var fig = JSON.parse(JSON.stringify(figure)); + if (!fig.layout.shapes) return window.dash_clientside.no_update; + for (var i = 0; i < fig.layout.shapes.length; i++) { + if (fig.layout.shapes[i].name === 'depth-cursor') { + fig.layout.shapes[i].y0 = depth; + fig.layout.shapes[i].y1 = depth; + fig.layout.shapes[i].visible = true; + } + } + return fig; + } + """, + Output("strip-log-chart", "figure", allow_duplicate=True), + Input("strip-log-chart", "hoverData"), + State("strip-log-chart", "figure"), + prevent_initial_call=True, +) + + +# ── Click-to-measure state machine ────────────────────────────────────────── +@callback( + [Output("measure-readout", "children"), + Output("measure-store", "data"), + Output("strip-log-chart", "figure", allow_duplicate=True)], + [Input("strip-log-chart", "clickData"), + Input("measure-clear-btn", "n_clicks")], + [State("measure-store", "data"), + State("strip-log-chart", "figure")], + prevent_initial_call=True, +) +def handle_click_measure(click_data, clear_clicks, store, current_fig): + triggered = ctx.triggered_id + + # Clear button + if triggered == "measure-clear-btn": + fig = go.Figure(current_fig) + for shape in fig.layout.shapes: + if shape.name == "measure-span": + shape.visible = False + fig.layout.annotations = [ + a for a in fig.layout.annotations if "click again" not in (a.text or "") + ] + return "Click a depth to start measuring", None, fig + + # Click events + if not click_data or not click_data.get("points"): + return no_update, no_update, no_update + + depth = click_data["points"][0].get("y") + if depth is None: + return no_update, no_update, no_update + + fig = go.Figure(current_fig) + + # Strip any pending "click again" prompt before updating + fig.layout.annotations = [ + a for a in fig.layout.annotations if "click again" not in (a.text or "") + ] + + if store is None or store.get("first_depth") is None: + # First click: store depth + new_store = {"first_depth": float(depth)} + readout = f"From: {depth:.1f} m — click again to set end depth" + + # Show a thin line at the first click depth + for shape in fig.layout.shapes: + if shape.name == "measure-span": + shape.y0 = float(depth) + shape.y1 = float(depth) + 0.5 + shape.visible = True + + # On-chart prompt so user knows a second click is needed + fig.add_annotation( + x=0.5, y=float(depth) + 10, + xref="paper", yref="y", + text="↓ click again to set end depth", + showarrow=True, arrowhead=2, + arrowcolor="#e8a020", ax=0, ay=22, + font=dict(size=10, color="#e8a020", family="monospace"), + bgcolor="rgba(255,255,255,0.9)", + bordercolor="#e8a020", borderwidth=1, + xanchor="center", + ) + + return readout, new_store, fig + + else: + # Second click: compute interval, draw span + d1 = store["first_depth"] + d2 = float(depth) + lo, hi = min(d1, d2), max(d1, d2) + thickness = hi - lo + + for shape in fig.layout.shapes: + if shape.name == "measure-span": + shape.y0 = lo + shape.y1 = hi + shape.visible = True + + # Add annotation showing the thickness + fig.add_annotation( + x=0.98, y=(lo + hi) / 2, + xref="paper", yref="y", + text=f" {thickness:.1f} m ", + showarrow=False, + font=dict(size=11, color="#d48806", family="monospace"), + bgcolor="rgba(255,255,255,0.9)", + bordercolor="#e8a020", + borderwidth=1, + xanchor="right", + ) + + readout = f"{lo:.1f} m — {hi:.1f} m = {thickness:.1f} m interval" + return readout, None, fig # reset store for next measurement + + +@callback( + Output("dl-tour", "isOpen"), + Input("dl-tour-btn", "n_clicks"), + prevent_initial_call=True, +) +def open_dl_tour(_): + return True diff --git a/drillholes-demo/components/__init__.py b/drillholes-demo/components/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/drillholes-demo/components/overview_widgets.py b/drillholes-demo/components/overview_widgets.py new file mode 100644 index 0000000..373a1f0 --- /dev/null +++ b/drillholes-demo/components/overview_widgets.py @@ -0,0 +1,132 @@ +"""Reusable widgets sourced from the retired Overview page.""" + +import pandas as pd +import plotly.graph_objects as go +from dash import html + +from utils import CHART_LAYOUT + + +def best_au_intercept(assay: pd.DataFrame, min_width: float = 4.0) -> str: + """Best consecutive Au composite across all holes (min cumulative width in m).""" + best_grade, best_hole, best_from, best_to = 0.0, "", 0.0, 0.0 + for hole_id, grp in assay.groupby("HOLEID"): + grp = grp.sort_values("FROM").reset_index(drop=True) + for i in range(len(grp)): + for j in range(i + 1, min(i + 20, len(grp) + 1)): + sub = grp.iloc[i:j] + width = sub["TO"].iloc[-1] - sub["FROM"].iloc[0] + if width < min_width: + continue + avg = sub["Au_ppm"].mean() + if avg > best_grade: + best_grade = avg + best_hole = hole_id + best_from = sub["FROM"].iloc[0] + best_to = sub["TO"].iloc[-1] + width = best_to - best_from + return f"{best_grade:.2f} g/t / {width:.0f}m ({best_hole})" + + +def collar_map(collar: pd.DataFrame) -> go.Figure: + fig = go.Figure() + fig.add_trace(go.Scatter( + x=collar["EAST"], + y=collar["NORTH"], + mode="markers+text", + text=collar["HOLEID"], + textposition="top center", + textfont=dict(size=8, color="#6c757d"), + marker=dict( + size=10, + color=collar["TOTDEPTH"], + colorscale="Viridis", + showscale=True, + colorbar=dict( + title=dict(text="Total Depth (m)", font=dict(color="#495057")), + tickfont=dict(color="#495057"), + bgcolor="#ffffff", + bordercolor="#dee2e6", + ), + line=dict(width=1, color="#dee2e6"), + ), + hovertemplate=( + "%{text}
" + "Easting: %{x:.1f} m MGA94
" + "Northing: %{y:.1f} m MGA94
" + "Total Depth: %{marker.color:.0f} m" + "" + ), + )) + fig.update_layout(**{ + **CHART_LAYOUT, + "margin": dict(l=60, r=20, t=20, b=50), + "height": 460, + "xaxis": dict( + title="Easting (m MGA94 Zone 50)", + showgrid=True, gridcolor="#e9ecef", + tickfont=dict(color="#6c757d"), + title_font=dict(color="#495057"), + ), + "yaxis": dict( + title="Northing (m MGA94 Zone 50)", + showgrid=True, gridcolor="#e9ecef", + tickfont=dict(color="#6c757d"), + title_font=dict(color="#495057"), + scaleanchor="x", scaleratio=1, + ), + "hoverlabel": dict(bgcolor="#ffffff", font_color="#212529", bordercolor="#dee2e6"), + }) + return fig + + +def summary_table(collar: pd.DataFrame, n: int = 20): + cols = ["HOLEID", "EAST", "NORTH", "ELEV", "TOTDEPTH", "AZ", "DIP"] + rows = [] + for _, r in collar[cols].head(n).iterrows(): + rows.append(html.Tr([ + html.Td(str(r["HOLEID"]), style={"color": "#d48806", "fontWeight": "600"}), + html.Td(f"{r['EAST']:.0f}"), + html.Td(f"{r['NORTH']:.0f}"), + html.Td(f"{r['ELEV']:.0f} m RL"), + html.Td(f"{r['TOTDEPTH']:.0f} m"), + html.Td(f"{r['AZ']:.0f}°"), + html.Td(f"{r['DIP']:.0f}°"), + ])) + return html.Table( + [html.Thead(html.Tr([html.Th(c) for c in ["Hole", "East", "North", "RL", "Depth", "Az", "Dip"]]))] + + [html.Tbody(rows)], + className="data-table", + ) + + +def depth_histogram(collar: pd.DataFrame) -> go.Figure: + fig = go.Figure() + fig.add_trace(go.Histogram( + x=collar["TOTDEPTH"], + nbinsx=15, + marker=dict(color="#e8a020", line=dict(color="#ffffff", width=1)), + hovertemplate="Depth: %{x:.0f} m
Number of holes: %{y}", + name="", + )) + fig.update_layout(**{ + **CHART_LAYOUT, + "height": 200, + "margin": dict(l=50, r=20, t=10, b=40), + "xaxis": dict( + title="Total Depth (m)", + showgrid=True, gridcolor="#e9ecef", + tickfont=dict(color="#6c757d"), + title_font=dict(color="#495057"), + ), + "yaxis": dict( + title="Number of Holes", + showgrid=True, gridcolor="#e9ecef", + tickfont=dict(color="#6c757d"), + title_font=dict(color="#495057"), + ), + "bargap": 0.05, + "showlegend": False, + "hoverlabel": dict(bgcolor="#ffffff", font_color="#212529", bordercolor="#dee2e6"), + }) + return fig diff --git a/drillholes-demo/data/assay.csv b/drillholes-demo/data/assay.csv new file mode 100644 index 0000000..8f3d860 --- /dev/null +++ b/drillholes-demo/data/assay.csv @@ -0,0 +1,7665 @@ +HOLEID,FROM,TO,Au_ppm,Cu_pct,Ag_ppm +DH001,0.0,2.0,0.093,0.0104,0.112 +DH001,2.0,4.0,0.089,0.0057,0.092 +DH001,4.0,6.0,0.257,0.0146,0.293 +DH001,6.0,8.0,0.152,0.0169,0.199 +DH001,8.0,10.0,0.021,0.0252,0.013 +DH001,10.0,12.0,0.045,0.0195,0.064 +DH001,12.0,14.0,0.06,0.0248,0.043 +DH001,14.0,16.0,0.154,0.0091,0.088 +DH001,16.0,18.0,0.26,0.0322,0.165 +DH001,18.0,20.0,0.047,0.0141,0.059 +DH001,20.0,22.0,0.084,0.0175,0.096 +DH001,22.0,24.0,0.072,0.0089,0.068 +DH001,24.0,26.0,0.142,0.0092,0.095 +DH001,26.0,28.0,0.05,0.0194,0.033 +DH001,28.0,30.0,0.199,0.0236,0.165 +DH001,30.0,32.0,0.123,0.0124,0.071 +DH001,32.0,34.0,0.099,0.0143,0.071 +DH001,34.0,36.0,0.052,0.0134,0.041 +DH001,36.0,38.0,0.058,0.0317,0.062 +DH001,38.0,40.0,0.229,0.0569,0.257 +DH001,40.0,42.0,0.086,0.0102,0.101 +DH001,42.0,44.0,0.056,0.0108,0.053 +DH001,44.0,46.0,0.075,0.01,0.054 +DH001,46.0,48.0,0.047,0.0746,0.035 +DH001,48.0,50.0,0.068,0.0146,0.086 +DH001,50.0,52.0,0.038,0.043,0.042 +DH001,52.0,54.0,0.098,0.0093,0.101 +DH001,54.0,56.0,0.042,0.0381,0.024 +DH001,56.0,58.0,0.087,0.0054,0.124 +DH001,58.0,60.0,0.124,0.0336,0.181 +DH001,60.0,62.0,0.032,0.0213,0.023 +DH001,62.0,64.0,0.03,0.0182,0.028 +DH001,64.0,66.0,0.069,0.0073,0.036 +DH001,66.0,68.0,0.067,0.017,0.097 +DH001,68.0,70.0,0.063,0.018,0.052 +DH001,70.0,72.0,0.068,0.0149,0.086 +DH001,72.0,74.0,0.026,0.0232,0.026 +DH001,74.0,76.0,0.084,0.0296,0.126 +DH001,76.0,78.0,0.025,0.021,0.019 +DH001,78.0,80.0,0.091,0.0145,0.136 +DH001,80.0,82.0,6.815,0.3286,16.756 +DH001,82.0,84.0,0.177,0.4129,0.32 +DH001,84.0,86.0,4.823,0.1104,9.429 +DH001,86.0,88.0,6.25,0.7765,18.611 +DH001,88.0,90.0,1.696,0.4057,3.229 +DH001,90.0,92.0,0.582,0.3109,1.363 +DH001,92.0,94.0,2.473,0.266,5.225 +DH001,94.0,96.0,13.117,0.1085,26.182 +DH001,96.0,98.0,2.255,0.4508,6.26 +DH001,98.0,100.0,0.462,0.0437,1.219 +DH001,100.0,102.0,0.582,0.164,1.148 +DH001,102.0,104.0,1.031,0.2685,1.971 +DH001,104.0,106.0,4.986,0.3263,11.829 +DH001,106.0,108.0,1.818,0.5143,3.15 +DH001,108.0,110.0,0.416,0.377,0.901 +DH001,110.0,112.0,12.122,0.5063,34.421 +DH001,112.0,114.0,2.688,0.1888,7.676 +DH001,114.0,116.0,1.426,0.2694,2.573 +DH001,116.0,118.0,1.134,0.1363,2.721 +DH001,118.0,120.0,0.62,0.0517,1.21 +DH001,120.0,122.0,19.506,0.6979,35.824 +DH001,122.0,124.0,5.311,0.6961,13.635 +DH001,124.0,126.0,2.514,0.0448,6.199 +DH001,126.0,128.0,0.621,0.2618,1.687 +DH001,128.0,130.0,4.269,0.5064,9.446 +DH001,130.0,132.0,0.569,0.0398,0.889 +DH001,132.0,134.0,1.107,0.0645,2.349 +DH001,134.0,136.0,1.297,0.0944,3.746 +DH001,136.0,138.0,8.049,0.3614,12.289 +DH001,138.0,140.0,4.678,0.0881,7.102 +DH001,140.0,142.0,2.656,0.1532,7.593 +DH001,142.0,144.0,0.872,0.3355,1.411 +DH001,144.0,146.0,0.067,0.5782,0.163 +DH001,146.0,148.0,1.063,0.5068,1.839 +DH001,148.0,150.0,0.383,0.093,0.994 +DH001,150.0,152.0,0.222,0.5506,0.502 +DH001,152.0,154.0,0.532,0.1399,1.383 +DH001,154.0,156.0,6.293,0.4009,11.513 +DH001,156.0,158.0,1.371,0.1119,3.567 +DH001,158.0,160.0,0.44,0.8052,0.91 +DH001,160.0,162.0,0.552,0.1298,1.34 +DH001,162.0,164.0,0.482,0.2407,1.224 +DH001,164.0,166.0,0.163,0.1647,0.265 +DH001,166.0,168.0,0.902,0.1078,1.45 +DH001,168.0,170.0,24.561,0.2334,47.346 +DH001,170.0,172.0,0.264,0.1322,0.602 +DH001,172.0,174.0,0.651,0.4614,1.907 +DH001,174.0,176.0,1.578,0.1396,4.463 +DH001,176.0,178.0,1.032,0.1797,1.784 +DH001,178.0,180.0,0.922,0.3289,1.779 +DH001,180.0,182.0,2.001,0.1581,4.245 +DH001,182.0,184.0,1.677,0.1746,2.596 +DH001,184.0,186.0,17.046,0.0764,42.222 +DH001,186.0,188.0,0.23,0.2655,0.43 +DH001,188.0,190.0,4.0,0.2558,10.863 +DH001,190.0,192.0,2.31,0.1824,5.522 +DH001,192.0,194.0,1.572,0.2615,3.17 +DH001,194.0,196.0,0.846,0.0752,2.262 +DH001,196.0,198.0,4.282,0.2686,10.285 +DH001,198.0,200.0,2.473,0.3053,6.631 +DH001,200.0,202.0,1.994,0.1459,5.925 +DH001,202.0,204.0,1.294,0.131,3.002 +DH001,204.0,206.0,3.011,0.0725,8.977 +DH001,206.0,208.0,1.988,0.0917,5.494 +DH001,208.0,210.0,4.715,0.0811,13.991 +DH001,210.0,212.0,4.906,0.2213,14.318 +DH001,212.0,214.0,2.694,0.2182,4.408 +DH001,214.0,216.0,4.474,0.3267,10.082 +DH001,216.0,218.0,0.862,0.2476,1.946 +DH001,218.0,220.0,0.449,0.0687,0.862 +DH001,220.0,222.0,0.098,0.263,0.225 +DH001,222.0,224.0,10.696,0.1504,20.88 +DH001,224.0,226.0,1.382,0.2444,2.488 +DH001,226.0,228.0,1.278,0.4952,3.209 +DH001,228.0,230.0,3.169,0.4668,6.412 +DH001,230.0,232.0,22.192,0.1211,45.315 +DH001,232.0,234.0,0.675,0.3785,1.229 +DH001,234.0,236.0,2.516,0.0909,3.921 +DH001,236.0,238.0,0.512,0.5639,0.951 +DH001,238.0,240.0,3.455,0.3558,10.037 +DH001,240.0,242.0,0.254,0.1378,0.652 +DH001,242.0,244.0,0.392,0.885,0.684 +DH001,244.0,246.0,3.51,0.1743,6.202 +DH001,246.0,248.0,7.081,0.2174,20.476 +DH001,248.0,250.0,1.759,0.1697,2.924 +DH001,250.0,252.0,0.025,0.0161,0.013 +DH001,252.0,254.0,0.058,0.0096,0.051 +DH001,254.0,256.0,0.085,0.0062,0.07 +DH001,256.0,258.0,0.105,0.0222,0.074 +DH001,258.0,260.0,0.09,0.0305,0.129 +DH001,260.0,262.0,0.078,0.0145,0.063 +DH001,262.0,264.0,0.109,0.0202,0.146 +DH001,264.0,266.0,0.089,0.0276,0.113 +DH001,266.0,268.0,0.131,0.0283,0.188 +DH001,268.0,270.0,0.028,0.0396,0.035 +DH001,270.0,272.0,0.029,0.0128,0.016 +DH001,272.0,274.0,0.069,0.0142,0.077 +DH001,274.0,276.0,0.044,0.0123,0.034 +DH001,276.0,278.0,0.104,0.0235,0.098 +DH001,278.0,280.0,0.092,0.0234,0.086 +DH001,280.0,282.0,0.085,0.0193,0.119 +DH001,282.0,284.0,0.13,0.0242,0.131 +DH001,284.0,286.0,0.051,0.0189,0.051 +DH001,286.0,288.0,0.092,0.0552,0.098 +DH001,288.0,290.0,0.106,0.0312,0.08 +DH001,290.0,292.0,0.334,0.0152,0.49 +DH001,292.0,294.0,0.051,0.0154,0.052 +DH001,294.0,296.0,0.136,0.0215,0.148 +DH001,296.0,298.0,0.078,0.0155,0.048 +DH001,298.0,300.0,0.104,0.0128,0.058 +DH001,300.0,302.0,0.047,0.0293,0.026 +DH001,302.0,304.0,0.089,0.0177,0.103 +DH001,304.0,306.0,0.049,0.0107,0.069 +DH001,306.0,308.0,0.118,0.0216,0.128 +DH001,308.0,310.0,0.123,0.0126,0.081 +DH001,310.0,312.0,0.047,0.0351,0.046 +DH001,312.0,314.0,0.118,0.0342,0.072 +DH001,314.0,316.0,0.029,0.0127,0.024 +DH001,316.0,318.0,0.049,0.0107,0.045 +DH001,318.0,320.0,0.04,0.0217,0.03 +DH001,320.0,322.0,0.11,0.0236,0.059 +DH001,322.0,324.0,0.066,0.0529,0.076 +DH001,324.0,326.0,0.027,0.0111,0.034 +DH001,326.0,328.0,0.083,0.0172,0.068 +DH001,328.0,330.0,0.274,0.0241,0.219 +DH001,330.0,332.0,0.047,0.0111,0.035 +DH001,332.0,334.0,0.091,0.0072,0.069 +DH001,334.0,336.0,0.083,0.0164,0.07 +DH001,336.0,338.0,0.059,0.0168,0.052 +DH001,338.0,340.0,0.118,0.0314,0.121 +DH001,340.0,342.0,0.062,0.0228,0.035 +DH001,342.0,344.0,0.063,0.0272,0.094 +DH001,344.0,346.0,0.178,0.0446,0.189 +DH001,346.0,348.0,0.083,0.0184,0.083 +DH001,348.0,350.0,0.056,0.0087,0.063 +DH001,350.0,352.0,0.052,0.0191,0.069 +DH001,352.0,354.0,0.042,0.0206,0.045 +DH001,354.0,356.0,0.116,0.0546,0.133 +DH001,356.0,358.0,0.11,0.0107,0.092 +DH001,358.0,360.0,0.212,0.0115,0.126 +DH001,360.0,362.0,0.08,0.0175,0.056 +DH001,362.0,364.0,0.068,0.0339,0.083 +DH001,364.0,366.0,0.036,0.0293,0.028 +DH001,366.0,368.0,0.057,0.0083,0.031 +DH001,368.0,370.0,0.079,0.0328,0.115 +DH001,370.0,372.0,0.078,0.0257,0.077 +DH001,372.0,374.0,0.153,0.0101,0.156 +DH001,374.0,376.0,0.095,0.0315,0.133 +DH001,376.0,378.0,0.02,0.0124,0.017 +DH001,378.0,380.0,0.073,0.0233,0.058 +DH001,380.0,382.0,0.118,0.0165,0.118 +DH001,382.0,384.0,0.062,0.0226,0.035 +DH001,384.0,386.0,0.12,0.0288,0.091 +DH001,386.0,388.0,0.013,0.0097,0.009 +DH001,388.0,390.0,0.059,0.0068,0.064 +DH001,390.0,392.0,0.083,0.0318,0.053 +DH001,392.0,394.0,0.108,0.022,0.148 +DH001,394.0,396.0,0.322,0.0298,0.183 +DH001,396.0,398.0,0.107,0.0324,0.132 +DH002,0.0,2.0,0.064,0.0328,0.036 +DH002,2.0,4.0,0.384,0.0126,0.226 +DH002,4.0,6.0,0.068,0.0143,0.092 +DH002,6.0,8.0,0.016,0.0147,0.014 +DH002,8.0,10.0,0.061,0.0482,0.061 +DH002,10.0,12.0,0.178,0.0209,0.237 +DH002,12.0,14.0,0.097,0.0363,0.135 +DH002,14.0,16.0,0.111,0.022,0.084 +DH002,16.0,18.0,0.105,0.056,0.107 +DH002,18.0,20.0,0.106,0.0344,0.085 +DH002,20.0,22.0,0.083,0.0056,0.054 +DH002,22.0,24.0,0.022,0.0382,0.014 +DH002,24.0,26.0,0.15,0.0117,0.11 +DH002,26.0,28.0,0.096,0.018,0.053 +DH002,28.0,30.0,0.086,0.0731,0.047 +DH002,30.0,32.0,0.154,0.0279,0.168 +DH002,32.0,34.0,0.073,0.0066,0.037 +DH002,34.0,36.0,0.134,0.0113,0.101 +DH002,36.0,38.0,0.054,0.0388,0.057 +DH002,38.0,40.0,0.121,0.025,0.152 +DH002,40.0,42.0,0.092,0.0101,0.069 +DH002,42.0,44.0,0.09,0.0215,0.075 +DH002,44.0,46.0,0.211,0.0402,0.311 +DH002,46.0,48.0,0.066,0.0233,0.066 +DH002,48.0,50.0,0.2,0.0321,0.205 +DH002,50.0,52.0,0.048,0.0272,0.03 +DH002,52.0,54.0,0.071,0.0173,0.042 +DH002,54.0,56.0,0.066,0.0054,0.038 +DH002,56.0,58.0,0.054,0.0187,0.068 +DH002,58.0,60.0,0.07,0.0272,0.076 +DH002,60.0,62.0,0.06,0.0258,0.088 +DH002,62.0,64.0,0.031,0.0256,0.029 +DH002,64.0,66.0,0.08,0.0069,0.053 +DH002,66.0,68.0,0.03,0.0214,0.03 +DH002,68.0,70.0,0.041,0.0147,0.037 +DH002,70.0,72.0,0.056,0.0246,0.065 +DH002,72.0,74.0,0.148,0.0211,0.191 +DH002,74.0,76.0,0.049,0.008,0.038 +DH002,76.0,78.0,0.066,0.0056,0.078 +DH002,78.0,80.0,0.048,0.0403,0.035 +DH002,80.0,82.0,0.395,0.5423,0.943 +DH002,82.0,84.0,0.91,0.1346,1.975 +DH002,84.0,86.0,0.136,0.0503,0.311 +DH002,86.0,88.0,14.294,0.1575,24.508 +DH002,88.0,90.0,8.676,1.2038,25.301 +DH002,90.0,92.0,2.181,0.9585,3.618 +DH002,92.0,94.0,7.638,0.0988,15.848 +DH002,94.0,96.0,1.663,0.1037,2.772 +DH002,96.0,98.0,0.298,0.1016,0.626 +DH002,98.0,100.0,7.35,0.2011,20.766 +DH002,100.0,102.0,4.417,0.1026,8.028 +DH002,102.0,104.0,5.949,1.7912,9.226 +DH002,104.0,106.0,1.284,0.4128,3.524 +DH002,106.0,108.0,1.171,0.1616,3.408 +DH002,108.0,110.0,0.824,0.1607,2.031 +DH002,110.0,112.0,7.353,0.1376,12.347 +DH002,112.0,114.0,0.223,0.0815,0.615 +DH002,114.0,116.0,1.849,0.0862,4.294 +DH002,116.0,118.0,0.879,0.1569,2.061 +DH002,118.0,120.0,4.925,0.226,14.127 +DH002,120.0,122.0,1.323,0.29,3.776 +DH002,122.0,124.0,0.749,0.2297,1.82 +DH002,124.0,126.0,2.869,0.4105,4.375 +DH002,126.0,128.0,19.685,0.1103,52.601 +DH002,128.0,130.0,2.132,0.2059,4.828 +DH002,130.0,132.0,2.531,0.4397,5.086 +DH002,132.0,134.0,2.22,0.4284,3.905 +DH002,134.0,136.0,5.58,0.1213,12.917 +DH002,136.0,138.0,31.588,0.2024,92.394 +DH002,138.0,140.0,1.153,0.5978,1.773 +DH002,140.0,142.0,3.0,0.5,4.64 +DH002,142.0,144.0,9.595,0.4656,25.141 +DH002,144.0,146.0,3.423,0.4603,7.168 +DH002,146.0,148.0,1.081,0.8741,2.685 +DH002,148.0,150.0,5.847,0.2463,13.66 +DH002,150.0,152.0,2.255,0.7038,5.227 +DH002,152.0,154.0,0.285,0.1878,0.796 +DH002,154.0,156.0,1.722,0.0528,2.781 +DH002,156.0,158.0,5.047,0.211,10.942 +DH002,158.0,160.0,8.157,0.1446,17.754 +DH002,160.0,162.0,4.266,0.2714,12.114 +DH002,162.0,164.0,1.804,0.5151,5.178 +DH002,164.0,166.0,0.318,0.3648,0.926 +DH002,166.0,168.0,3.96,0.3092,9.905 +DH002,168.0,170.0,5.726,0.2151,8.86 +DH002,170.0,172.0,1.531,1.1236,2.83 +DH002,172.0,174.0,4.054,0.0582,11.473 +DH002,174.0,176.0,1.323,0.0421,3.517 +DH002,176.0,178.0,1.411,0.0416,2.534 +DH002,178.0,180.0,12.454,0.735,35.533 +DH002,180.0,182.0,2.352,0.6457,4.334 +DH002,182.0,184.0,8.674,0.1051,18.507 +DH002,184.0,186.0,3.771,0.0525,7.289 +DH002,186.0,188.0,34.042,0.3723,76.419 +DH002,188.0,190.0,2.772,0.2104,6.324 +DH002,190.0,192.0,0.836,0.1032,1.517 +DH002,192.0,194.0,11.551,0.101,29.744 +DH002,194.0,196.0,2.005,0.2928,5.603 +DH002,196.0,198.0,7.339,0.2384,19.039 +DH002,198.0,200.0,3.226,0.3676,8.935 +DH002,200.0,202.0,29.678,0.3249,80.749 +DH002,202.0,204.0,0.323,0.1155,0.934 +DH002,204.0,206.0,3.14,0.0483,5.209 +DH002,206.0,208.0,1.159,0.6901,2.428 +DH002,208.0,210.0,2.845,0.573,6.366 +DH002,210.0,212.0,0.676,0.1907,1.085 +DH002,212.0,214.0,0.451,0.0588,1.091 +DH002,214.0,216.0,1.079,0.163,2.383 +DH002,216.0,218.0,0.985,0.2218,2.176 +DH002,218.0,220.0,0.882,0.8402,1.775 +DH002,220.0,222.0,0.98,0.7633,1.696 +DH002,222.0,224.0,1.147,0.1971,2.994 +DH002,224.0,226.0,12.929,0.1161,24.341 +DH002,226.0,228.0,2.48,0.1014,5.138 +DH002,228.0,230.0,2.24,0.5555,6.299 +DH002,230.0,232.0,5.08,0.5862,7.864 +DH002,232.0,234.0,1.722,0.3796,4.361 +DH002,234.0,236.0,4.51,0.208,12.261 +DH002,236.0,238.0,0.706,0.7101,2.004 +DH002,238.0,240.0,15.934,0.1479,39.263 +DH002,240.0,242.0,39.3,0.0958,73.667 +DH002,242.0,244.0,2.705,0.6245,4.976 +DH002,244.0,246.0,2.171,0.1396,3.296 +DH002,246.0,248.0,0.711,0.1932,1.928 +DH002,248.0,250.0,0.664,0.1274,1.163 +DH002,250.0,252.0,0.035,0.0148,0.022 +DH002,252.0,254.0,0.065,0.016,0.032 +DH002,254.0,256.0,0.055,0.0259,0.046 +DH002,256.0,258.0,0.062,0.0233,0.042 +DH002,258.0,260.0,0.102,0.0401,0.11 +DH002,260.0,262.0,0.028,0.023,0.019 +DH002,262.0,264.0,0.072,0.0301,0.092 +DH002,264.0,266.0,0.034,0.0197,0.034 +DH002,266.0,268.0,0.071,0.0349,0.087 +DH002,268.0,270.0,0.038,0.0109,0.053 +DH002,270.0,272.0,0.066,0.0369,0.079 +DH002,272.0,274.0,0.11,0.0197,0.127 +DH002,274.0,276.0,0.049,0.0281,0.04 +DH002,276.0,278.0,0.136,0.0331,0.128 +DH002,278.0,280.0,0.074,0.0224,0.11 +DH002,280.0,282.0,0.098,0.0173,0.137 +DH002,282.0,284.0,0.125,0.0176,0.107 +DH002,284.0,286.0,0.075,0.0189,0.057 +DH002,286.0,288.0,0.09,0.0308,0.055 +DH002,288.0,290.0,0.091,0.0349,0.065 +DH002,290.0,292.0,0.091,0.0137,0.095 +DH002,292.0,294.0,0.048,0.0168,0.064 +DH002,294.0,296.0,0.038,0.0102,0.057 +DH002,296.0,298.0,0.231,0.0145,0.261 +DH002,298.0,300.0,0.064,0.0114,0.082 +DH002,300.0,302.0,0.359,0.0367,0.201 +DH002,302.0,304.0,0.121,0.0121,0.09 +DH002,304.0,306.0,0.151,0.0327,0.103 +DH002,306.0,308.0,0.062,0.0169,0.085 +DH002,308.0,310.0,0.044,0.0223,0.023 +DH002,310.0,312.0,0.031,0.0194,0.034 +DH002,312.0,314.0,0.04,0.0252,0.032 +DH002,314.0,316.0,0.129,0.0283,0.187 +DH002,316.0,318.0,0.031,0.014,0.03 +DH002,318.0,320.0,0.059,0.0129,0.073 +DH002,320.0,322.0,0.235,0.0277,0.226 +DH002,322.0,324.0,0.147,0.0244,0.168 +DH002,324.0,326.0,0.074,0.0148,0.065 +DH002,326.0,328.0,0.115,0.0145,0.107 +DH002,328.0,330.0,0.045,0.0389,0.032 +DH002,330.0,332.0,0.111,0.0312,0.063 +DH002,332.0,334.0,0.087,0.0184,0.076 +DH002,334.0,336.0,0.058,0.0146,0.048 +DH002,336.0,338.0,0.077,0.0124,0.089 +DH002,338.0,340.0,0.159,0.0257,0.145 +DH002,340.0,342.0,0.07,0.0244,0.042 +DH002,342.0,344.0,0.07,0.0297,0.064 +DH002,344.0,346.0,0.046,0.0119,0.024 +DH002,346.0,348.0,0.231,0.007,0.12 +DH002,348.0,350.0,0.036,0.0133,0.028 +DH002,350.0,352.0,0.064,0.014,0.032 +DH002,352.0,354.0,0.06,0.0088,0.062 +DH002,354.0,356.0,0.129,0.0279,0.093 +DH002,356.0,358.0,0.098,0.0257,0.06 +DH002,358.0,360.0,0.083,0.0173,0.122 +DH002,360.0,362.0,0.26,0.008,0.387 +DH002,362.0,364.0,0.047,0.0299,0.033 +DH002,364.0,366.0,0.045,0.0234,0.04 +DH002,366.0,368.0,0.114,0.0206,0.171 +DH002,368.0,370.0,0.086,0.0168,0.126 +DH002,370.0,372.0,0.116,0.0264,0.124 +DH002,372.0,374.0,0.044,0.0138,0.045 +DH002,374.0,376.0,0.132,0.0298,0.086 +DH002,376.0,378.0,0.194,0.0363,0.104 +DH002,378.0,380.0,0.05,0.0403,0.025 +DH002,380.0,382.0,0.089,0.0155,0.05 +DH002,382.0,384.0,0.034,0.0251,0.037 +DH002,384.0,386.0,0.515,0.0106,0.563 +DH002,386.0,388.0,0.111,0.0393,0.154 +DH002,388.0,390.0,0.116,0.0073,0.095 +DH002,390.0,392.0,0.043,0.0071,0.022 +DH002,392.0,394.0,0.021,0.0095,0.028 +DH002,394.0,396.0,0.05,0.0223,0.046 +DH002,396.0,398.0,0.14,0.0267,0.205 +DH002,398.0,400.0,0.082,0.0213,0.105 +DH002,400.0,402.0,0.089,0.015,0.091 +DH002,402.0,404.0,0.05,0.0226,0.026 +DH002,404.0,406.0,0.055,0.0132,0.033 +DH002,406.0,408.0,0.148,0.019,0.154 +DH002,408.0,410.0,0.133,0.0138,0.143 +DH002,410.0,412.0,0.151,0.014,0.174 +DH002,412.0,414.0,0.084,0.0324,0.085 +DH002,414.0,416.0,0.04,0.024,0.048 +DH002,416.0,418.0,0.255,0.0183,0.284 +DH002,418.0,419.0,0.102,0.0484,0.113 +DH003,0.0,2.0,0.246,0.011,0.138 +DH003,2.0,4.0,0.053,0.0205,0.059 +DH003,4.0,6.0,0.056,0.0131,0.045 +DH003,6.0,8.0,0.133,0.021,0.129 +DH003,8.0,10.0,0.068,0.0126,0.101 +DH003,10.0,12.0,0.166,0.0311,0.182 +DH003,12.0,14.0,0.016,0.0076,0.009 +DH003,14.0,16.0,0.065,0.0126,0.039 +DH003,16.0,18.0,0.175,0.0185,0.139 +DH003,18.0,20.0,0.076,0.0205,0.091 +DH003,20.0,22.0,0.106,0.0263,0.153 +DH003,22.0,24.0,0.041,0.0267,0.03 +DH003,24.0,26.0,0.067,0.0052,0.066 +DH003,26.0,28.0,0.045,0.0239,0.029 +DH003,28.0,30.0,0.092,0.0486,0.101 +DH003,30.0,32.0,0.081,0.0213,0.046 +DH003,32.0,34.0,0.083,0.0082,0.124 +DH003,34.0,36.0,0.055,0.0506,0.028 +DH003,36.0,38.0,0.152,0.0178,0.134 +DH003,38.0,40.0,0.058,0.0194,0.055 +DH003,40.0,42.0,0.051,0.0172,0.073 +DH003,42.0,44.0,0.326,0.0175,0.195 +DH003,44.0,46.0,0.073,0.0209,0.081 +DH003,46.0,48.0,0.063,0.0203,0.045 +DH003,48.0,50.0,0.094,0.0366,0.088 +DH003,50.0,52.0,0.218,0.0178,0.19 +DH003,52.0,54.0,0.061,0.0125,0.042 +DH003,54.0,56.0,0.332,0.0276,0.172 +DH003,56.0,58.0,0.174,0.0258,0.212 +DH003,58.0,60.0,0.032,0.016,0.027 +DH003,60.0,62.0,0.025,0.0311,0.019 +DH003,62.0,64.0,0.128,0.0596,0.148 +DH003,64.0,66.0,0.064,0.0194,0.052 +DH003,66.0,68.0,0.058,0.0134,0.061 +DH003,68.0,70.0,0.103,0.0066,0.151 +DH003,70.0,72.0,0.202,0.0224,0.118 +DH003,72.0,74.0,0.074,0.0184,0.108 +DH003,74.0,76.0,0.036,0.012,0.046 +DH003,76.0,78.0,0.077,0.0244,0.064 +DH003,78.0,80.0,0.102,0.0316,0.146 +DH003,80.0,82.0,2.63,0.2067,6.75 +DH003,82.0,84.0,2.041,0.6113,4.999 +DH003,84.0,86.0,0.765,0.1505,1.458 +DH003,86.0,88.0,1.422,0.329,2.841 +DH003,88.0,90.0,6.467,0.6969,11.548 +DH003,90.0,92.0,0.725,0.1083,1.228 +DH003,92.0,94.0,1.295,0.0898,2.772 +DH003,94.0,96.0,1.259,0.1304,1.97 +DH003,96.0,98.0,9.154,0.2617,25.306 +DH003,98.0,100.0,2.731,0.1769,5.639 +DH003,100.0,102.0,3.028,0.3161,9.065 +DH003,102.0,104.0,0.807,0.4436,1.985 +DH003,104.0,106.0,0.338,0.4134,0.942 +DH003,106.0,108.0,0.796,0.2215,1.908 +DH003,108.0,110.0,0.491,0.516,0.874 +DH003,110.0,112.0,0.588,0.2681,0.933 +DH003,112.0,114.0,1.265,0.4031,3.761 +DH003,114.0,116.0,0.751,0.2524,1.932 +DH003,116.0,118.0,9.833,0.1311,16.169 +DH003,118.0,120.0,0.869,0.9617,2.09 +DH003,120.0,122.0,10.959,0.132,28.123 +DH003,122.0,124.0,4.525,0.099,7.06 +DH003,124.0,126.0,5.683,0.5179,8.561 +DH003,126.0,128.0,2.348,0.4093,4.428 +DH003,128.0,130.0,0.471,0.1164,0.748 +DH003,130.0,132.0,9.569,0.8128,26.757 +DH003,132.0,134.0,3.142,0.4062,5.632 +DH003,134.0,136.0,1.852,0.1154,4.722 +DH003,136.0,138.0,3.321,0.2588,7.746 +DH003,138.0,140.0,4.286,0.2709,12.419 +DH003,140.0,142.0,2.114,0.3105,6.079 +DH003,142.0,144.0,3.468,0.3809,7.37 +DH003,144.0,146.0,2.368,0.1355,3.942 +DH003,146.0,148.0,0.577,0.6142,1.472 +DH003,148.0,150.0,4.242,1.0809,7.294 +DH003,150.0,152.0,84.615,0.186,162.536 +DH003,152.0,154.0,1.381,0.3006,3.753 +DH003,154.0,156.0,1.941,0.9244,3.317 +DH003,156.0,158.0,3.079,0.1078,5.518 +DH003,158.0,160.0,1.895,0.1372,4.091 +DH003,160.0,162.0,54.933,0.1807,90.634 +DH003,162.0,164.0,0.963,0.2141,2.822 +DH003,164.0,166.0,4.331,0.3834,8.589 +DH003,166.0,168.0,3.349,0.1107,9.64 +DH003,168.0,170.0,0.74,0.0862,1.727 +DH003,170.0,172.0,5.085,0.4874,14.336 +DH003,172.0,174.0,5.653,0.0545,13.169 +DH003,174.0,176.0,2.753,0.3685,4.283 +DH003,176.0,178.0,0.681,0.0673,1.337 +DH003,178.0,180.0,4.384,0.3875,7.097 +DH003,180.0,182.0,0.686,0.1251,1.519 +DH003,182.0,184.0,0.434,0.0715,0.774 +DH003,184.0,186.0,2.468,0.0868,4.221 +DH003,186.0,188.0,7.927,0.0788,19.52 +DH003,188.0,190.0,7.612,0.1597,20.778 +DH003,190.0,192.0,8.991,0.1747,17.853 +DH004,0.0,2.0,0.106,0.0154,0.057 +DH004,2.0,4.0,0.099,0.0305,0.069 +DH004,4.0,6.0,0.084,0.0178,0.077 +DH004,6.0,8.0,0.044,0.0305,0.038 +DH004,8.0,10.0,0.037,0.0335,0.037 +DH004,10.0,12.0,0.15,0.0374,0.188 +DH004,12.0,14.0,0.03,0.0073,0.016 +DH004,14.0,16.0,0.058,0.0116,0.044 +DH004,16.0,18.0,0.119,0.0089,0.062 +DH004,18.0,20.0,0.203,0.0107,0.291 +DH004,20.0,22.0,0.061,0.0241,0.069 +DH004,22.0,24.0,0.128,0.0289,0.158 +DH004,24.0,26.0,0.16,0.012,0.13 +DH004,26.0,28.0,0.096,0.0233,0.116 +DH004,28.0,30.0,0.049,0.0093,0.067 +DH004,30.0,32.0,0.092,0.0325,0.092 +DH004,32.0,34.0,0.035,0.0297,0.027 +DH004,34.0,36.0,0.101,0.0133,0.087 +DH004,36.0,38.0,0.049,0.0155,0.067 +DH004,38.0,40.0,0.043,0.0216,0.036 +DH004,40.0,42.0,0.061,0.0223,0.037 +DH004,42.0,44.0,0.08,0.0157,0.104 +DH004,44.0,46.0,0.157,0.0156,0.14 +DH004,46.0,48.0,0.065,0.007,0.035 +DH004,48.0,50.0,0.146,0.0064,0.125 +DH004,50.0,52.0,0.065,0.0438,0.076 +DH004,52.0,54.0,0.059,0.0352,0.05 +DH004,54.0,56.0,0.15,0.0093,0.123 +DH004,56.0,58.0,0.064,0.011,0.074 +DH004,58.0,60.0,0.097,0.0143,0.135 +DH004,60.0,62.0,0.058,0.025,0.038 +DH004,62.0,64.0,0.079,0.0147,0.04 +DH004,64.0,66.0,0.114,0.0513,0.166 +DH004,66.0,68.0,0.147,0.0858,0.21 +DH004,68.0,70.0,0.11,0.026,0.13 +DH004,70.0,72.0,0.063,0.0142,0.059 +DH004,72.0,74.0,0.074,0.0196,0.089 +DH004,74.0,76.0,0.138,0.0169,0.171 +DH004,76.0,78.0,0.162,0.027,0.099 +DH004,78.0,80.0,0.068,0.0199,0.039 +DH004,80.0,82.0,6.633,0.28,18.977 +DH004,82.0,84.0,2.404,0.1301,5.465 +DH004,84.0,86.0,2.277,0.217,3.76 +DH004,86.0,88.0,1.381,0.2334,3.131 +DH004,88.0,90.0,1.655,0.3297,3.059 +DH004,90.0,92.0,0.315,0.1689,0.5 +DH004,92.0,94.0,16.862,0.4172,33.95 +DH004,94.0,96.0,1.684,0.274,2.915 +DH004,96.0,98.0,4.251,0.1071,11.978 +DH004,98.0,100.0,3.685,0.4319,8.638 +DH004,100.0,102.0,1.471,0.0257,2.753 +DH004,102.0,104.0,10.093,0.1467,20.117 +DH004,104.0,106.0,2.715,0.2134,6.5 +DH004,106.0,108.0,2.882,0.1062,4.498 +DH004,108.0,110.0,0.478,0.2286,0.958 +DH004,110.0,112.0,3.202,0.2465,6.379 +DH004,112.0,114.0,0.352,0.0684,0.824 +DH004,114.0,116.0,2.204,0.1372,6.58 +DH004,116.0,118.0,1.592,0.1031,4.542 +DH004,118.0,120.0,2.918,0.2894,6.353 +DH004,120.0,122.0,0.997,0.2104,1.927 +DH004,122.0,124.0,2.164,0.1495,5.257 +DH004,124.0,126.0,1.206,0.0945,3.557 +DH004,126.0,128.0,0.857,0.0966,1.995 +DH004,128.0,130.0,4.578,0.1083,9.836 +DH004,130.0,132.0,0.239,0.1502,0.694 +DH004,132.0,134.0,5.989,0.1261,15.319 +DH004,134.0,136.0,0.361,0.0822,0.921 +DH004,136.0,138.0,16.533,0.3311,37.158 +DH004,138.0,140.0,0.348,0.216,0.97 +DH004,140.0,142.0,0.197,0.2475,0.535 +DH004,142.0,144.0,0.59,0.2351,1.233 +DH004,144.0,146.0,6.912,0.2489,16.284 +DH004,146.0,148.0,2.247,0.2035,5.791 +DH004,148.0,150.0,0.688,2.1203,1.868 +DH004,150.0,152.0,3.515,0.3396,10.329 +DH004,152.0,154.0,5.76,0.0618,17.033 +DH004,154.0,156.0,1.478,0.2431,3.569 +DH004,156.0,158.0,4.185,0.1325,11.081 +DH004,158.0,160.0,1.583,1.0408,2.634 +DH004,160.0,162.0,2.353,0.2348,5.056 +DH004,162.0,164.0,8.391,0.1715,23.13 +DH004,164.0,166.0,7.202,0.1451,10.981 +DH004,166.0,168.0,0.334,0.3919,0.853 +DH004,168.0,170.0,5.288,0.7185,12.63 +DH004,170.0,172.0,2.955,0.1049,8.373 +DH004,172.0,174.0,5.622,0.2421,10.332 +DH004,174.0,176.0,0.459,0.0739,1.02 +DH004,176.0,178.0,26.488,0.6636,73.581 +DH004,178.0,180.0,12.247,0.472,24.691 +DH004,180.0,182.0,1.547,0.536,4.174 +DH004,182.0,184.0,0.463,0.3637,1.126 +DH004,184.0,186.0,1.703,0.5545,3.843 +DH004,186.0,188.0,1.223,0.4545,3.62 +DH004,188.0,190.0,10.719,0.4491,23.844 +DH004,190.0,192.0,5.363,0.2759,14.174 +DH004,192.0,194.0,1.674,0.0846,3.63 +DH004,194.0,196.0,1.587,0.2707,4.332 +DH004,196.0,198.0,2.117,0.498,3.409 +DH004,198.0,200.0,1.686,0.3591,3.545 +DH004,200.0,202.0,10.876,0.3711,29.377 +DH004,202.0,204.0,2.702,0.834,7.211 +DH004,204.0,206.0,3.809,0.3453,7.587 +DH004,206.0,208.0,4.108,0.0732,6.435 +DH004,208.0,210.0,8.092,0.2968,17.458 +DH004,210.0,212.0,3.803,0.2127,8.563 +DH004,212.0,214.0,4.895,0.1247,7.372 +DH004,214.0,216.0,1.53,0.0628,2.752 +DH004,216.0,218.0,14.612,0.3035,29.097 +DH004,218.0,220.0,0.35,0.204,0.843 +DH004,220.0,222.0,1.779,0.6348,3.094 +DH004,222.0,224.0,3.918,0.0766,9.531 +DH004,224.0,226.0,1.489,0.4451,4.1 +DH004,226.0,228.0,2.752,0.2957,7.783 +DH004,228.0,230.0,3.616,0.1803,6.454 +DH004,230.0,232.0,15.281,0.5164,36.647 +DH004,232.0,234.0,4.402,0.1232,7.012 +DH004,234.0,236.0,7.695,0.0571,20.829 +DH004,236.0,238.0,1.643,0.1884,2.539 +DH004,238.0,240.0,4.47,0.1152,7.053 +DH004,240.0,242.0,2.55,0.0817,5.314 +DH004,242.0,244.0,11.676,0.8532,22.721 +DH004,244.0,246.0,0.533,0.3304,0.963 +DH004,246.0,248.0,5.317,0.4181,9.239 +DH004,248.0,250.0,2.04,0.1371,3.711 +DH004,250.0,252.0,0.101,0.0201,0.119 +DH004,252.0,254.0,0.037,0.0253,0.026 +DH004,254.0,256.0,0.086,0.0178,0.093 +DH004,256.0,258.0,0.278,0.011,0.221 +DH004,258.0,260.0,0.051,0.0139,0.07 +DH004,260.0,262.0,0.184,0.0451,0.143 +DH004,262.0,264.0,0.065,0.0637,0.044 +DH004,264.0,266.0,0.058,0.0075,0.04 +DH004,266.0,268.0,0.147,0.0614,0.213 +DH004,268.0,270.0,0.197,0.019,0.106 +DH004,270.0,272.0,0.031,0.0382,0.032 +DH004,272.0,274.0,0.08,0.0253,0.064 +DH004,274.0,276.0,0.058,0.0145,0.054 +DH004,276.0,278.0,0.089,0.0073,0.095 +DH004,278.0,280.0,0.168,0.0129,0.11 +DH004,280.0,282.0,0.07,0.0216,0.066 +DH004,282.0,284.0,0.048,0.031,0.061 +DH004,284.0,286.0,0.276,0.0187,0.373 +DH004,286.0,288.0,0.171,0.0251,0.223 +DH004,288.0,290.0,0.168,0.0132,0.191 +DH004,290.0,292.0,0.074,0.0096,0.069 +DH004,292.0,294.0,0.183,0.0206,0.268 +DH004,294.0,296.0,0.032,0.0421,0.041 +DH004,296.0,298.0,0.056,0.016,0.06 +DH004,298.0,300.0,0.193,0.015,0.284 +DH004,300.0,302.0,0.085,0.0374,0.11 +DH004,302.0,304.0,0.137,0.0262,0.094 +DH004,304.0,306.0,0.101,0.0163,0.06 +DH004,306.0,308.0,0.048,0.0184,0.066 +DH004,308.0,310.0,0.105,0.0148,0.061 +DH004,310.0,312.0,0.074,0.0083,0.093 +DH004,312.0,314.0,0.042,0.0077,0.032 +DH004,314.0,316.0,0.11,0.0238,0.073 +DH005,0.0,2.0,0.026,0.0093,0.015 +DH005,2.0,4.0,0.044,0.0249,0.056 +DH005,4.0,6.0,0.086,0.0133,0.1 +DH005,6.0,8.0,0.089,0.0146,0.13 +DH005,8.0,10.0,0.096,0.01,0.125 +DH005,10.0,12.0,0.397,0.036,0.23 +DH005,12.0,14.0,0.078,0.0069,0.046 +DH005,14.0,16.0,0.177,0.0123,0.129 +DH005,16.0,18.0,0.074,0.0108,0.109 +DH005,18.0,20.0,0.08,0.0117,0.095 +DH005,20.0,22.0,0.051,0.0238,0.027 +DH005,22.0,24.0,0.074,0.0247,0.085 +DH005,24.0,26.0,0.069,0.0232,0.064 +DH005,26.0,28.0,0.075,0.0191,0.053 +DH005,28.0,30.0,0.049,0.0269,0.025 +DH005,30.0,32.0,0.108,0.0211,0.122 +DH005,32.0,34.0,0.125,0.0292,0.133 +DH005,34.0,36.0,0.077,0.0366,0.043 +DH005,36.0,38.0,0.12,0.0211,0.111 +DH005,38.0,40.0,0.053,0.026,0.071 +DH005,40.0,42.0,0.066,0.019,0.068 +DH005,42.0,44.0,0.061,0.0396,0.064 +DH005,44.0,46.0,0.062,0.0083,0.089 +DH005,46.0,48.0,0.029,0.0251,0.033 +DH005,48.0,50.0,0.066,0.008,0.052 +DH005,50.0,52.0,0.053,0.0351,0.029 +DH005,52.0,54.0,0.056,0.0168,0.066 +DH005,54.0,56.0,0.072,0.0143,0.079 +DH005,56.0,58.0,0.075,0.0097,0.091 +DH005,58.0,60.0,0.028,0.0147,0.026 +DH005,60.0,62.0,0.098,0.0246,0.088 +DH005,62.0,64.0,0.166,0.0291,0.216 +DH005,64.0,66.0,0.143,0.0267,0.083 +DH005,66.0,68.0,0.037,0.0226,0.043 +DH005,68.0,70.0,0.158,0.0115,0.13 +DH005,70.0,72.0,0.108,0.0177,0.121 +DH005,72.0,74.0,0.103,0.0073,0.072 +DH005,74.0,76.0,0.185,0.0456,0.277 +DH005,76.0,78.0,0.067,0.0187,0.098 +DH005,78.0,80.0,0.061,0.0144,0.074 +DH005,80.0,82.0,1.419,0.3976,3.116 +DH005,82.0,84.0,1.812,0.0592,5.027 +DH005,84.0,86.0,6.092,0.2144,10.44 +DH005,86.0,88.0,0.906,0.187,2.07 +DH005,88.0,90.0,7.239,0.0273,14.236 +DH005,90.0,92.0,2.694,0.2062,4.818 +DH005,92.0,94.0,3.068,0.1748,7.846 +DH005,94.0,96.0,1.658,0.5593,4.508 +DH005,96.0,98.0,2.064,0.2584,5.634 +DH005,98.0,100.0,1.552,0.4805,4.343 +DH005,100.0,102.0,2.062,0.1885,4.035 +DH005,102.0,104.0,1.637,0.4419,4.078 +DH005,104.0,106.0,2.952,0.0907,8.265 +DH005,106.0,108.0,29.141,0.1935,52.775 +DH005,108.0,110.0,12.395,0.2796,34.0 +DH005,110.0,112.0,1.886,0.1729,4.332 +DH005,112.0,114.0,0.423,0.208,0.658 +DH005,114.0,116.0,20.503,0.239,41.293 +DH005,116.0,118.0,1.988,1.9969,3.26 +DH005,118.0,120.0,0.841,0.358,1.502 +DH005,120.0,122.0,0.438,0.1689,1.237 +DH005,122.0,124.0,0.235,0.089,0.662 +DH005,124.0,126.0,1.364,0.306,4.007 +DH005,126.0,128.0,5.243,0.0866,8.407 +DH005,128.0,130.0,0.284,0.0931,0.829 +DH005,130.0,132.0,16.397,0.2871,32.356 +DH005,132.0,134.0,2.273,0.0982,4.343 +DH005,134.0,136.0,0.52,0.0802,1.168 +DH005,136.0,138.0,1.371,0.0909,2.351 +DH005,138.0,140.0,0.467,0.2828,1.065 +DH005,140.0,142.0,12.036,0.2891,21.707 +DH005,142.0,144.0,0.899,0.2334,2.013 +DH005,144.0,146.0,1.355,0.1809,2.928 +DH005,146.0,148.0,0.518,0.072,1.065 +DH005,148.0,150.0,0.626,0.3686,1.378 +DH005,150.0,152.0,0.431,0.9349,1.28 +DH005,152.0,154.0,3.272,0.373,6.495 +DH005,154.0,156.0,0.358,0.1855,0.588 +DH005,156.0,158.0,41.912,0.0623,74.207 +DH005,158.0,160.0,0.638,0.0674,1.773 +DH005,160.0,162.0,40.729,0.1525,72.343 +DH005,162.0,164.0,0.152,0.1835,0.265 +DH005,164.0,166.0,1.019,0.2664,1.791 +DH005,166.0,168.0,3.28,0.1733,7.699 +DH005,168.0,170.0,4.948,0.2254,10.783 +DH005,170.0,172.0,5.744,0.0715,10.525 +DH005,172.0,174.0,0.899,0.0958,2.565 +DH005,174.0,176.0,3.393,0.5376,8.406 +DH005,176.0,178.0,2.859,0.5826,8.17 +DH005,178.0,180.0,2.415,0.7293,5.942 +DH005,180.0,182.0,1.545,0.1141,3.043 +DH005,182.0,183.0,9.82,0.2143,26.833 +DH006,0.0,2.0,0.025,0.0178,0.016 +DH006,2.0,4.0,0.053,0.0603,0.04 +DH006,4.0,6.0,0.064,0.0186,0.078 +DH006,6.0,8.0,0.052,0.0299,0.054 +DH006,8.0,10.0,0.05,0.0353,0.067 +DH006,10.0,12.0,0.112,0.0146,0.1 +DH006,12.0,14.0,0.051,0.0111,0.061 +DH006,14.0,16.0,0.057,0.0109,0.035 +DH006,16.0,18.0,0.094,0.0206,0.112 +DH006,18.0,20.0,0.055,0.0212,0.049 +DH006,20.0,22.0,0.07,0.0266,0.048 +DH006,22.0,24.0,0.1,0.0161,0.115 +DH006,24.0,26.0,0.036,0.0122,0.034 +DH006,26.0,28.0,0.042,0.0228,0.051 +DH006,28.0,30.0,0.048,0.0211,0.068 +DH006,30.0,32.0,0.068,0.013,0.039 +DH006,32.0,34.0,0.055,0.0304,0.069 +DH006,34.0,36.0,0.056,0.0098,0.04 +DH006,36.0,38.0,0.14,0.021,0.158 +DH006,38.0,40.0,0.194,0.0157,0.154 +DH006,40.0,42.0,0.109,0.012,0.088 +DH006,42.0,44.0,0.102,0.0208,0.124 +DH006,44.0,46.0,0.231,0.02,0.235 +DH006,46.0,48.0,0.203,0.0297,0.258 +DH006,48.0,50.0,0.082,0.0202,0.063 +DH006,50.0,52.0,0.036,0.0085,0.03 +DH006,52.0,54.0,0.046,0.0133,0.06 +DH006,54.0,56.0,0.074,0.0202,0.111 +DH006,56.0,58.0,0.062,0.0246,0.061 +DH006,58.0,60.0,0.053,0.0199,0.065 +DH006,60.0,62.0,0.081,0.013,0.082 +DH006,62.0,64.0,0.087,0.017,0.087 +DH006,64.0,66.0,0.035,0.0113,0.045 +DH006,66.0,68.0,0.074,0.0138,0.04 +DH006,68.0,70.0,0.085,0.0286,0.064 +DH006,70.0,72.0,0.104,0.014,0.098 +DH006,72.0,74.0,0.103,0.0282,0.1 +DH006,74.0,76.0,0.117,0.0174,0.165 +DH006,76.0,78.0,0.155,0.0132,0.11 +DH006,78.0,80.0,0.092,0.0225,0.124 +DH006,80.0,82.0,2.035,0.207,3.811 +DH006,82.0,84.0,1.71,0.1967,3.941 +DH006,84.0,86.0,12.171,0.0844,31.162 +DH006,86.0,88.0,0.097,0.1519,0.26 +DH006,88.0,90.0,1.207,0.5413,3.595 +DH006,90.0,92.0,2.443,0.1659,6.325 +DH006,92.0,94.0,2.173,0.1159,4.839 +DH006,94.0,96.0,1.311,0.4081,2.17 +DH006,96.0,98.0,2.396,0.121,5.367 +DH006,98.0,100.0,4.316,0.0544,10.05 +DH006,100.0,102.0,5.937,0.3163,13.529 +DH006,102.0,104.0,4.384,0.2558,7.727 +DH006,104.0,106.0,20.501,0.1684,55.546 +DH006,106.0,108.0,0.122,0.6195,0.32 +DH006,108.0,110.0,2.307,0.3489,3.673 +DH006,110.0,112.0,1.029,0.3457,2.623 +DH006,112.0,114.0,1.072,0.5497,1.79 +DH006,114.0,116.0,0.953,0.1241,2.401 +DH006,116.0,118.0,5.361,0.1003,13.546 +DH006,118.0,120.0,5.453,0.2079,10.916 +DH006,120.0,122.0,1.545,0.188,4.339 +DH006,122.0,124.0,7.543,0.1208,17.613 +DH006,124.0,126.0,2.043,0.0961,3.165 +DH006,126.0,128.0,11.698,0.2622,18.726 +DH006,128.0,130.0,3.21,0.1985,8.996 +DH006,130.0,132.0,1.727,0.2803,4.62 +DH006,132.0,134.0,12.232,0.0512,27.683 +DH006,134.0,136.0,24.369,0.2033,67.788 +DH006,136.0,138.0,1.384,0.7143,3.737 +DH006,138.0,140.0,0.813,0.129,1.448 +DH006,140.0,142.0,3.433,0.6509,5.513 +DH006,142.0,144.0,3.847,0.0769,11.287 +DH006,144.0,146.0,4.22,0.076,11.95 +DH006,146.0,148.0,3.206,0.0898,8.107 +DH006,148.0,150.0,1.988,0.3338,5.413 +DH006,150.0,152.0,4.611,0.2367,13.821 +DH006,152.0,154.0,0.772,0.1228,2.156 +DH006,154.0,156.0,1.206,0.3097,2.54 +DH006,156.0,158.0,0.179,0.119,0.457 +DH006,158.0,160.0,2.447,0.0718,5.931 +DH006,160.0,162.0,2.15,0.3035,3.728 +DH006,162.0,164.0,1.432,0.1247,4.283 +DH006,164.0,166.0,7.418,0.4307,11.853 +DH006,166.0,168.0,0.668,0.62,1.812 +DH006,168.0,170.0,3.127,0.0601,7.454 +DH006,170.0,172.0,3.261,0.1168,7.199 +DH006,172.0,174.0,4.258,1.2166,8.624 +DH006,174.0,176.0,1.634,0.2247,3.808 +DH006,176.0,178.0,8.555,0.1695,20.885 +DH006,178.0,180.0,3.192,0.3475,6.027 +DH006,180.0,182.0,1.927,0.6729,5.592 +DH006,182.0,184.0,3.947,0.8828,8.27 +DH006,184.0,186.0,15.605,0.3444,37.885 +DH006,186.0,188.0,0.532,0.1285,1.238 +DH006,188.0,190.0,3.585,1.062,9.894 +DH006,190.0,192.0,6.592,0.5655,19.181 +DH006,192.0,194.0,0.702,0.6881,1.939 +DH006,194.0,196.0,4.57,0.2628,7.026 +DH006,196.0,198.0,2.025,0.3726,3.424 +DH006,198.0,200.0,0.804,0.0964,2.351 +DH006,200.0,202.0,2.905,0.2184,6.622 +DH006,202.0,204.0,4.059,0.1351,6.505 +DH006,204.0,206.0,1.614,0.1578,4.582 +DH006,206.0,208.0,0.246,0.1185,0.484 +DH006,208.0,210.0,0.277,0.5456,0.516 +DH006,210.0,212.0,1.429,0.2818,4.24 +DH006,212.0,214.0,1.271,0.4467,3.029 +DH006,214.0,216.0,1.255,0.1177,2.417 +DH006,216.0,218.0,8.931,0.1926,15.616 +DH006,218.0,220.0,0.607,0.306,1.569 +DH006,220.0,222.0,3.57,0.1637,5.495 +DH006,222.0,224.0,1.67,0.1649,3.068 +DH006,224.0,226.0,12.063,0.0293,34.656 +DH006,226.0,228.0,1.276,0.1607,3.292 +DH006,228.0,230.0,0.945,0.1295,2.494 +DH006,230.0,232.0,3.657,0.1567,7.456 +DH006,232.0,234.0,0.788,0.6219,2.075 +DH006,234.0,236.0,3.824,0.181,10.313 +DH006,236.0,238.0,16.661,0.1919,31.818 +DH006,238.0,240.0,8.293,0.1252,23.873 +DH006,240.0,242.0,2.253,0.2232,3.932 +DH006,242.0,244.0,27.385,0.292,71.578 +DH006,244.0,246.0,3.292,0.23,8.767 +DH006,246.0,248.0,3.472,0.2716,5.219 +DH006,248.0,250.0,2.089,0.3644,3.699 +DH006,250.0,252.0,0.046,0.0831,0.051 +DH006,252.0,254.0,0.087,0.0087,0.056 +DH006,254.0,256.0,0.047,0.0147,0.038 +DH006,256.0,258.0,0.109,0.0243,0.095 +DH006,258.0,260.0,0.247,0.0101,0.328 +DH006,260.0,262.0,0.152,0.0244,0.121 +DH006,262.0,264.0,0.09,0.0145,0.124 +DH006,264.0,266.0,0.071,0.0066,0.068 +DH006,266.0,268.0,0.078,0.0144,0.082 +DH006,268.0,270.0,0.102,0.0117,0.15 +DH006,270.0,272.0,0.105,0.0237,0.108 +DH006,272.0,274.0,0.041,0.0191,0.045 +DH006,274.0,276.0,0.044,0.0126,0.041 +DH006,276.0,278.0,0.066,0.0146,0.097 +DH006,278.0,280.0,0.101,0.0217,0.067 +DH006,280.0,282.0,0.057,0.0061,0.042 +DH006,282.0,284.0,0.107,0.0167,0.123 +DH006,284.0,286.0,0.128,0.0084,0.147 +DH006,286.0,288.0,0.042,0.0444,0.055 +DH006,288.0,290.0,0.022,0.0086,0.025 +DH006,290.0,292.0,0.062,0.0094,0.084 +DH006,292.0,294.0,0.099,0.0232,0.061 +DH006,294.0,296.0,0.127,0.0151,0.13 +DH006,296.0,298.0,0.118,0.0081,0.072 +DH006,298.0,300.0,0.092,0.0348,0.09 +DH006,300.0,302.0,0.047,0.0102,0.06 +DH006,302.0,304.0,0.085,0.0145,0.095 +DH006,304.0,306.0,0.038,0.0179,0.034 +DH006,306.0,308.0,0.054,0.0397,0.068 +DH006,308.0,310.0,0.176,0.014,0.179 +DH006,310.0,312.0,0.079,0.0078,0.049 +DH006,312.0,314.0,0.076,0.0266,0.06 +DH006,314.0,316.0,0.074,0.0119,0.043 +DH006,316.0,318.0,0.099,0.022,0.134 +DH006,318.0,320.0,0.164,0.0269,0.201 +DH006,320.0,322.0,0.054,0.0111,0.057 +DH006,322.0,324.0,0.091,0.0091,0.105 +DH006,324.0,326.0,0.033,0.0178,0.02 +DH006,326.0,328.0,0.113,0.0221,0.098 +DH006,328.0,330.0,0.137,0.0148,0.203 +DH006,330.0,332.0,0.035,0.0113,0.027 +DH006,332.0,334.0,0.022,0.018,0.028 +DH006,334.0,336.0,0.087,0.0107,0.103 +DH006,336.0,338.0,0.083,0.0369,0.062 +DH006,338.0,340.0,0.052,0.0162,0.063 +DH006,340.0,342.0,0.105,0.0246,0.156 +DH006,342.0,344.0,0.057,0.016,0.074 +DH006,344.0,346.0,0.093,0.0222,0.117 +DH006,346.0,348.0,0.158,0.0135,0.169 +DH006,348.0,350.0,0.113,0.0182,0.075 +DH006,350.0,352.0,0.352,0.0122,0.243 +DH007,0.0,2.0,0.052,0.0447,0.052 +DH007,2.0,4.0,0.055,0.0237,0.071 +DH007,4.0,6.0,0.06,0.0268,0.071 +DH007,6.0,8.0,0.093,0.0179,0.132 +DH007,8.0,10.0,0.094,0.0189,0.069 +DH007,10.0,12.0,0.227,0.0108,0.159 +DH007,12.0,14.0,0.068,0.0441,0.063 +DH007,14.0,16.0,0.053,0.0113,0.047 +DH007,16.0,18.0,0.036,0.0144,0.054 +DH007,18.0,20.0,0.095,0.0143,0.078 +DH007,20.0,22.0,0.157,0.0095,0.095 +DH007,22.0,24.0,0.054,0.0408,0.043 +DH007,24.0,26.0,0.045,0.0116,0.037 +DH007,26.0,28.0,0.07,0.0168,0.074 +DH007,28.0,30.0,0.052,0.0192,0.037 +DH007,30.0,32.0,0.133,0.0169,0.187 +DH007,32.0,34.0,0.029,0.0108,0.02 +DH007,34.0,36.0,0.076,0.019,0.072 +DH007,36.0,38.0,0.04,0.0163,0.046 +DH007,38.0,40.0,0.054,0.0375,0.064 +DH007,40.0,42.0,0.098,0.0449,0.068 +DH007,42.0,44.0,0.082,0.022,0.044 +DH007,44.0,46.0,0.098,0.0105,0.139 +DH007,46.0,48.0,0.155,0.021,0.149 +DH007,48.0,50.0,0.046,0.0243,0.029 +DH007,50.0,52.0,0.016,0.0341,0.023 +DH007,52.0,54.0,0.05,0.0301,0.033 +DH007,54.0,56.0,0.054,0.0219,0.052 +DH007,56.0,58.0,0.217,0.0219,0.198 +DH007,58.0,60.0,0.132,0.0098,0.181 +DH007,60.0,62.0,0.068,0.0253,0.055 +DH007,62.0,64.0,0.099,0.0163,0.115 +DH007,64.0,66.0,0.088,0.0039,0.056 +DH007,66.0,68.0,0.121,0.0229,0.152 +DH007,68.0,70.0,0.22,0.0214,0.21 +DH007,70.0,72.0,0.154,0.022,0.149 +DH007,72.0,74.0,0.019,0.0144,0.026 +DH007,74.0,76.0,0.066,0.0273,0.06 +DH007,76.0,78.0,0.178,0.0158,0.227 +DH007,78.0,80.0,0.111,0.0388,0.094 +DH007,80.0,82.0,1.284,0.4399,2.092 +DH007,82.0,84.0,2.969,0.1765,5.995 +DH007,84.0,86.0,3.443,0.4089,8.324 +DH007,86.0,88.0,1.445,0.2906,2.588 +DH007,88.0,90.0,21.511,0.4042,48.612 +DH007,90.0,92.0,2.086,0.3485,4.828 +DH007,92.0,94.0,2.794,0.0957,4.485 +DH007,94.0,96.0,0.567,0.1579,1.07 +DH007,96.0,98.0,24.269,0.1591,47.923 +DH007,98.0,100.0,1.149,0.8412,2.132 +DH007,100.0,102.0,0.668,1.9838,1.685 +DH007,102.0,104.0,0.59,0.2158,1.451 +DH007,104.0,106.0,6.143,0.972,16.394 +DH007,106.0,108.0,1.164,0.4188,1.81 +DH007,108.0,110.0,0.644,0.0546,1.805 +DH007,110.0,112.0,0.759,0.087,1.742 +DH007,112.0,114.0,0.528,0.018,1.523 +DH007,114.0,116.0,1.263,0.1375,3.77 +DH007,116.0,118.0,1.066,0.4515,2.401 +DH007,118.0,120.0,2.115,0.1144,4.783 +DH007,120.0,122.0,0.889,0.2556,2.211 +DH007,122.0,124.0,0.716,0.4934,1.837 +DH007,124.0,126.0,1.3,0.2507,1.959 +DH007,126.0,128.0,0.786,0.2361,1.267 +DH007,128.0,130.0,0.716,0.0609,1.37 +DH007,130.0,132.0,4.395,0.128,13.168 +DH007,132.0,134.0,6.442,0.6335,19.006 +DH007,134.0,136.0,20.562,0.1189,53.962 +DH007,136.0,138.0,1.968,0.1562,4.402 +DH007,138.0,140.0,2.669,0.2781,7.829 +DH007,140.0,142.0,3.52,0.4228,6.27 +DH007,142.0,144.0,0.598,0.8116,1.576 +DH007,144.0,146.0,1.054,0.1357,1.653 +DH007,146.0,148.0,0.951,0.0799,2.466 +DH007,148.0,150.0,1.761,0.1389,3.794 +DH007,150.0,152.0,3.164,0.2759,7.977 +DH007,152.0,154.0,1.925,0.2978,4.123 +DH007,154.0,156.0,1.988,0.529,4.476 +DH007,156.0,158.0,5.763,0.1508,14.821 +DH007,158.0,160.0,3.071,0.3986,7.85 +DH007,160.0,162.0,3.694,0.1688,6.532 +DH007,162.0,164.0,4.315,0.3138,12.356 +DH007,164.0,166.0,8.426,0.1101,21.262 +DH007,166.0,168.0,15.859,0.447,43.45 +DH007,168.0,170.0,3.142,0.2525,5.293 +DH007,170.0,172.0,0.75,0.2142,1.603 +DH007,172.0,174.0,2.994,0.5508,6.264 +DH007,174.0,176.0,0.626,0.2893,1.554 +DH007,176.0,178.0,1.845,0.1767,3.326 +DH007,178.0,180.0,0.151,0.1635,0.255 +DH007,180.0,182.0,0.872,0.4583,1.913 +DH007,182.0,184.0,2.102,0.1797,4.031 +DH007,184.0,186.0,1.963,0.2096,3.743 +DH007,186.0,188.0,3.013,0.4076,5.04 +DH007,188.0,190.0,0.631,0.0551,1.365 +DH007,190.0,192.0,3.005,0.3343,5.61 +DH007,192.0,194.0,18.953,0.1371,43.192 +DH007,194.0,196.0,6.204,0.1013,15.639 +DH007,196.0,198.0,2.759,2.1946,4.759 +DH007,198.0,200.0,15.297,0.5854,30.753 +DH007,200.0,202.0,0.679,0.5209,1.13 +DH007,202.0,204.0,15.196,0.2618,45.582 +DH007,204.0,206.0,20.213,0.1699,43.724 +DH007,206.0,208.0,1.675,0.3953,3.72 +DH007,208.0,210.0,0.464,0.2107,1.316 +DH007,210.0,212.0,1.465,0.5956,2.832 +DH007,212.0,214.0,3.241,0.2356,8.313 +DH007,214.0,216.0,0.457,0.2253,0.769 +DH007,216.0,218.0,4.46,0.0561,7.496 +DH007,218.0,220.0,5.364,0.2066,15.618 +DH007,220.0,222.0,0.773,0.2953,2.029 +DH007,222.0,224.0,3.824,0.156,8.077 +DH007,224.0,226.0,2.294,0.3444,6.468 +DH007,226.0,228.0,7.162,0.1542,13.065 +DH007,228.0,230.0,23.864,0.1376,46.058 +DH007,230.0,232.0,2.057,0.2355,5.514 +DH007,232.0,234.0,2.179,0.2161,3.772 +DH008,0.0,2.0,0.02,0.0469,0.023 +DH008,2.0,4.0,0.116,0.0092,0.064 +DH008,4.0,6.0,0.055,0.0382,0.057 +DH008,6.0,8.0,0.129,0.0132,0.166 +DH008,8.0,10.0,0.071,0.0348,0.052 +DH008,10.0,12.0,0.037,0.0069,0.055 +DH008,12.0,14.0,0.05,0.0082,0.069 +DH008,14.0,16.0,0.025,0.011,0.03 +DH008,16.0,18.0,0.105,0.0201,0.103 +DH008,18.0,20.0,0.033,0.0104,0.017 +DH008,20.0,22.0,0.138,0.0288,0.073 +DH008,22.0,24.0,0.053,0.0185,0.03 +DH008,24.0,26.0,0.073,0.0507,0.079 +DH008,26.0,28.0,0.071,0.0336,0.051 +DH008,28.0,30.0,0.056,0.0141,0.079 +DH008,30.0,32.0,0.032,0.0247,0.021 +DH008,32.0,34.0,0.111,0.0119,0.126 +DH008,34.0,36.0,0.048,0.0155,0.029 +DH008,36.0,38.0,0.087,0.0101,0.105 +DH008,38.0,40.0,0.036,0.0101,0.026 +DH008,40.0,42.0,0.063,0.0293,0.054 +DH008,42.0,44.0,0.112,0.0106,0.131 +DH008,44.0,46.0,0.097,0.0134,0.053 +DH008,46.0,48.0,0.107,0.0154,0.123 +DH008,48.0,50.0,0.213,0.0168,0.157 +DH008,50.0,52.0,0.115,0.0088,0.141 +DH008,52.0,54.0,0.05,0.0119,0.05 +DH008,54.0,56.0,0.119,0.0343,0.111 +DH008,56.0,58.0,0.063,0.0065,0.087 +DH008,58.0,60.0,0.083,0.0201,0.092 +DH008,60.0,62.0,0.173,0.0271,0.189 +DH008,62.0,64.0,0.06,0.0175,0.082 +DH008,64.0,66.0,0.111,0.0219,0.124 +DH008,66.0,68.0,0.168,0.0193,0.116 +DH008,68.0,70.0,0.08,0.0211,0.059 +DH008,70.0,72.0,0.067,0.0277,0.06 +DH008,72.0,74.0,0.037,0.009,0.027 +DH008,74.0,76.0,0.168,0.0215,0.249 +DH008,76.0,78.0,0.155,0.0258,0.164 +DH008,78.0,80.0,0.232,0.0239,0.18 +DH008,80.0,82.0,0.998,0.274,2.399 +DH008,82.0,84.0,5.153,0.1041,8.976 +DH008,84.0,86.0,1.19,0.1806,3.431 +DH008,86.0,88.0,1.834,1.0116,3.735 +DH008,88.0,90.0,3.405,0.2187,6.612 +DH008,90.0,92.0,8.636,0.1149,19.506 +DH008,92.0,94.0,0.25,0.548,0.558 +DH008,94.0,96.0,2.45,0.0408,6.311 +DH008,96.0,98.0,0.752,0.1312,1.598 +DH008,98.0,100.0,3.021,0.151,6.405 +DH008,100.0,102.0,2.588,0.1608,7.522 +DH008,102.0,104.0,1.493,0.2928,3.94 +DH008,104.0,106.0,0.408,0.4923,1.221 +DH008,106.0,108.0,1.303,0.1359,3.211 +DH008,108.0,110.0,4.367,0.5496,10.239 +DH008,110.0,112.0,4.499,0.261,10.895 +DH008,112.0,114.0,21.773,0.0706,38.038 +DH008,114.0,116.0,3.554,0.2782,9.79 +DH008,116.0,118.0,6.006,0.064,15.795 +DH008,118.0,120.0,1.131,0.1298,3.269 +DH008,120.0,122.0,8.109,0.1696,12.818 +DH008,122.0,124.0,2.362,0.1092,4.631 +DH008,124.0,126.0,1.554,0.1278,3.618 +DH008,126.0,128.0,2.949,0.0625,5.37 +DH008,128.0,130.0,3.705,0.1162,7.222 +DH008,130.0,132.0,5.681,0.0807,12.593 +DH008,132.0,134.0,16.599,0.2956,25.891 +DH008,134.0,136.0,0.726,0.1483,1.765 +DH008,136.0,138.0,6.424,0.1199,18.593 +DH008,138.0,140.0,1.376,0.0968,3.913 +DH008,140.0,142.0,0.095,0.2026,0.183 +DH008,142.0,144.0,5.988,0.0493,13.238 +DH008,144.0,146.0,5.958,0.6075,8.97 +DH008,146.0,148.0,7.513,0.0688,16.4 +DH008,148.0,150.0,0.882,0.0595,2.566 +DH008,150.0,152.0,2.24,0.1154,5.541 +DH008,152.0,154.0,0.254,0.0407,0.666 +DH008,154.0,156.0,6.583,0.0964,16.054 +DH008,156.0,158.0,7.564,0.312,13.325 +DH008,158.0,160.0,8.283,0.1244,12.477 +DH008,160.0,162.0,2.178,0.1794,5.417 +DH008,162.0,164.0,2.429,0.2294,6.099 +DH008,164.0,166.0,5.825,0.1022,8.935 +DH008,166.0,168.0,1.562,0.2972,3.683 +DH008,168.0,170.0,6.482,0.1298,10.914 +DH008,170.0,172.0,1.254,0.2146,3.713 +DH008,172.0,174.0,1.596,0.6011,4.196 +DH008,174.0,176.0,3.664,0.236,6.442 +DH008,176.0,178.0,0.978,0.1015,1.716 +DH008,178.0,180.0,2.508,0.187,7.261 +DH008,180.0,182.0,10.651,0.1022,23.185 +DH008,182.0,184.0,0.397,1.1324,1.138 +DH008,184.0,186.0,3.958,0.0764,8.164 +DH008,186.0,188.0,4.1,0.1823,6.905 +DH008,188.0,190.0,35.666,0.1046,58.783 +DH008,190.0,192.0,0.776,0.8065,1.679 +DH008,192.0,194.0,1.891,0.2298,3.385 +DH008,194.0,196.0,6.476,0.1647,18.605 +DH008,196.0,198.0,4.621,0.192,11.869 +DH008,198.0,200.0,2.254,0.4216,3.745 +DH008,200.0,202.0,4.493,0.4243,7.675 +DH008,202.0,204.0,0.952,0.3765,1.801 +DH008,204.0,206.0,0.404,0.1716,0.914 +DH008,206.0,208.0,1.206,0.7301,3.296 +DH008,208.0,210.0,11.563,0.2755,21.821 +DH008,210.0,212.0,0.723,0.2253,2.035 +DH008,212.0,214.0,0.431,0.1449,0.923 +DH008,214.0,216.0,3.655,0.3227,8.691 +DH008,216.0,218.0,3.907,0.1929,8.019 +DH008,218.0,220.0,1.244,0.529,3.489 +DH008,220.0,222.0,2.548,0.7931,7.477 +DH008,222.0,224.0,2.231,0.0786,6.224 +DH008,224.0,226.0,2.014,0.2316,4.765 +DH008,226.0,228.0,4.922,0.1107,12.784 +DH008,228.0,230.0,4.031,0.1354,12.008 +DH008,230.0,232.0,2.088,0.0683,3.483 +DH008,232.0,234.0,2.751,0.1082,5.395 +DH008,234.0,236.0,0.231,0.0926,0.501 +DH008,236.0,238.0,32.4,0.399,85.651 +DH008,238.0,240.0,1.325,0.1038,2.468 +DH008,240.0,242.0,1.774,1.2123,4.136 +DH008,242.0,244.0,0.276,0.131,0.552 +DH008,244.0,246.0,2.022,0.2126,6.063 +DH008,246.0,248.0,3.534,0.0943,6.794 +DH008,248.0,250.0,4.664,0.2228,11.46 +DH008,250.0,252.0,0.044,0.0193,0.024 +DH008,252.0,254.0,0.1,0.0244,0.083 +DH008,254.0,256.0,0.144,0.019,0.196 +DH008,256.0,258.0,0.057,0.0164,0.037 +DH008,258.0,260.0,0.062,0.0115,0.058 +DH008,260.0,262.0,0.03,0.0163,0.038 +DH008,262.0,264.0,0.045,0.015,0.039 +DH008,264.0,266.0,0.103,0.0265,0.12 +DH008,266.0,268.0,0.063,0.024,0.053 +DH008,268.0,270.0,0.051,0.0333,0.056 +DH008,270.0,272.0,0.118,0.0291,0.144 +DH008,272.0,274.0,0.185,0.0223,0.13 +DH008,274.0,276.0,0.104,0.0188,0.12 +DH008,276.0,278.0,0.102,0.0157,0.146 +DH008,278.0,280.0,0.032,0.014,0.027 +DH008,280.0,282.0,0.056,0.0163,0.033 +DH008,282.0,284.0,0.1,0.0127,0.139 +DH008,284.0,286.0,0.137,0.0129,0.175 +DH008,286.0,288.0,0.134,0.031,0.087 +DH008,288.0,290.0,0.574,0.031,0.66 +DH008,290.0,292.0,0.049,0.0174,0.059 +DH008,292.0,294.0,0.229,0.0384,0.165 +DH008,294.0,296.0,0.039,0.0234,0.027 +DH008,296.0,298.0,0.034,0.0206,0.02 +DH008,298.0,300.0,0.141,0.0235,0.202 +DH008,300.0,302.0,0.045,0.0174,0.067 +DH008,302.0,304.0,0.025,0.0265,0.022 +DH008,304.0,306.0,0.139,0.0319,0.165 +DH008,306.0,308.0,0.117,0.0132,0.082 +DH008,308.0,310.0,0.088,0.0145,0.093 +DH008,310.0,312.0,0.269,0.0085,0.178 +DH008,312.0,314.0,0.045,0.0288,0.035 +DH008,314.0,316.0,0.103,0.0114,0.071 +DH008,316.0,318.0,0.143,0.0444,0.076 +DH008,318.0,320.0,0.048,0.0217,0.041 +DH008,320.0,322.0,0.087,0.038,0.112 +DH008,322.0,324.0,0.08,0.025,0.092 +DH008,324.0,326.0,0.052,0.0122,0.074 +DH008,326.0,328.0,0.168,0.039,0.158 +DH008,328.0,330.0,0.089,0.0157,0.11 +DH008,330.0,332.0,0.126,0.0112,0.089 +DH008,332.0,334.0,0.11,0.0168,0.069 +DH008,334.0,336.0,0.156,0.0268,0.194 +DH008,336.0,338.0,0.026,0.0208,0.034 +DH008,338.0,340.0,0.033,0.0132,0.031 +DH008,340.0,342.0,0.083,0.0413,0.104 +DH008,342.0,344.0,0.05,0.0238,0.052 +DH008,344.0,346.0,0.104,0.0224,0.072 +DH008,346.0,348.0,0.226,0.0318,0.138 +DH009,0.0,2.0,0.132,0.0286,0.073 +DH009,2.0,4.0,0.162,0.0201,0.104 +DH009,4.0,6.0,0.088,0.0067,0.1 +DH009,6.0,8.0,0.055,0.0101,0.039 +DH009,8.0,10.0,0.111,0.018,0.079 +DH009,10.0,12.0,0.098,0.0301,0.147 +DH009,12.0,14.0,0.073,0.0183,0.062 +DH009,14.0,16.0,0.026,0.0178,0.036 +DH009,16.0,18.0,0.076,0.0143,0.069 +DH009,18.0,20.0,0.26,0.0156,0.303 +DH009,20.0,22.0,0.272,0.0139,0.37 +DH009,22.0,24.0,0.082,0.0446,0.066 +DH009,24.0,26.0,0.099,0.0177,0.066 +DH009,26.0,28.0,0.086,0.0287,0.097 +DH009,28.0,30.0,0.068,0.0162,0.087 +DH009,30.0,32.0,0.171,0.0131,0.178 +DH009,32.0,34.0,0.103,0.0393,0.063 +DH009,34.0,36.0,0.039,0.0161,0.027 +DH009,36.0,38.0,0.07,0.0409,0.066 +DH009,38.0,40.0,0.031,0.0121,0.024 +DH009,40.0,42.0,0.119,0.0228,0.083 +DH009,42.0,44.0,0.117,0.033,0.098 +DH009,44.0,46.0,0.167,0.0157,0.142 +DH009,46.0,48.0,0.037,0.0184,0.03 +DH009,48.0,50.0,0.164,0.0083,0.082 +DH009,50.0,52.0,0.043,0.0236,0.047 +DH009,52.0,54.0,0.178,0.014,0.14 +DH009,54.0,56.0,0.186,0.0081,0.217 +DH009,56.0,58.0,0.146,0.0161,0.082 +DH009,58.0,60.0,0.145,0.0101,0.168 +DH009,60.0,62.0,0.08,0.0262,0.067 +DH009,62.0,64.0,0.054,0.0192,0.078 +DH009,64.0,66.0,0.324,0.0086,0.218 +DH009,66.0,68.0,0.043,0.0305,0.05 +DH009,68.0,70.0,0.055,0.0136,0.076 +DH009,70.0,72.0,0.1,0.0233,0.1 +DH009,72.0,74.0,0.037,0.0264,0.023 +DH009,74.0,76.0,0.165,0.0129,0.223 +DH009,76.0,78.0,0.08,0.035,0.071 +DH009,78.0,80.0,0.073,0.0119,0.089 +DH009,80.0,82.0,0.647,0.1249,1.256 +DH009,82.0,84.0,0.24,0.6186,0.514 +DH009,84.0,86.0,6.547,0.3487,9.914 +DH009,86.0,88.0,0.621,0.1995,1.785 +DH009,88.0,90.0,3.988,0.4255,8.824 +DH009,90.0,92.0,3.477,0.4675,9.895 +DH009,92.0,94.0,1.254,0.3259,2.927 +DH009,94.0,96.0,3.074,0.0955,6.59 +DH009,96.0,98.0,4.771,0.4536,12.243 +DH009,98.0,100.0,4.977,0.1457,12.146 +DH009,100.0,102.0,12.187,0.4257,33.555 +DH009,102.0,104.0,21.989,0.1271,47.592 +DH009,104.0,106.0,0.936,0.182,2.266 +DH009,106.0,108.0,1.735,0.1443,4.515 +DH009,108.0,110.0,3.397,0.138,6.643 +DH009,110.0,112.0,5.301,0.1207,11.297 +DH009,112.0,114.0,0.154,0.0932,0.386 +DH009,114.0,116.0,2.433,0.1047,3.825 +DH009,116.0,118.0,0.512,0.2559,1.379 +DH009,118.0,120.0,3.607,0.2253,8.779 +DH009,120.0,122.0,10.647,0.065,17.268 +DH009,122.0,124.0,1.365,0.1616,3.857 +DH009,124.0,126.0,12.313,0.4273,25.125 +DH009,126.0,128.0,5.023,0.3724,14.406 +DH009,128.0,130.0,6.163,0.1963,16.149 +DH009,130.0,132.0,3.843,0.2654,8.81 +DH009,132.0,134.0,2.128,0.1255,5.413 +DH009,134.0,136.0,2.112,0.2549,5.251 +DH009,136.0,138.0,0.557,0.1091,1.561 +DH009,138.0,140.0,4.383,0.0846,9.966 +DH009,140.0,142.0,3.474,0.3613,8.222 +DH009,142.0,144.0,2.058,0.8489,5.766 +DH009,144.0,146.0,7.278,0.2923,17.292 +DH009,146.0,148.0,5.272,0.1966,8.46 +DH009,148.0,150.0,1.041,0.1943,2.956 +DH009,150.0,152.0,2.991,0.3312,6.884 +DH009,152.0,154.0,0.444,0.8186,0.749 +DH009,154.0,156.0,3.807,0.0774,6.018 +DH009,156.0,158.0,4.1,0.6524,6.539 +DH009,158.0,160.0,1.917,0.261,4.068 +DH009,160.0,162.0,1.474,0.0639,2.338 +DH009,162.0,164.0,8.583,0.2089,19.961 +DH009,164.0,166.0,1.259,0.1134,2.086 +DH009,166.0,168.0,3.543,0.3303,10.612 +DH009,168.0,170.0,0.628,0.1435,1.66 +DH009,170.0,172.0,1.131,0.4175,3.203 +DH009,172.0,174.0,0.676,0.2352,1.674 +DH009,174.0,176.0,6.832,0.3056,13.309 +DH009,176.0,178.0,3.269,0.1919,8.241 +DH009,178.0,180.0,3.147,0.1709,9.217 +DH009,180.0,182.0,11.141,0.3702,31.986 +DH009,182.0,184.0,2.003,0.0814,4.927 +DH009,184.0,186.0,2.514,0.2681,6.334 +DH009,186.0,188.0,6.723,0.1283,19.706 +DH009,188.0,190.0,12.693,0.4135,19.74 +DH009,190.0,192.0,1.957,0.2055,5.145 +DH009,192.0,194.0,3.924,1.6955,6.728 +DH009,194.0,196.0,4.929,0.0579,7.786 +DH009,196.0,198.0,9.724,0.3078,25.447 +DH009,198.0,200.0,7.172,0.0539,15.204 +DH009,200.0,202.0,22.238,0.0452,45.084 +DH009,202.0,204.0,0.08,0.4726,0.225 +DH009,204.0,206.0,0.133,0.3188,0.243 +DH009,206.0,208.0,3.444,0.3562,8.002 +DH009,208.0,210.0,0.238,0.3881,0.714 +DH009,210.0,212.0,8.632,0.0455,24.162 +DH009,212.0,214.0,0.806,0.0624,2.273 +DH009,214.0,216.0,3.568,0.0711,7.831 +DH009,216.0,218.0,4.578,0.1439,7.777 +DH009,218.0,220.0,0.214,0.171,0.523 +DH009,220.0,222.0,2.725,0.3021,6.784 +DH009,222.0,224.0,1.621,0.2805,3.902 +DH009,224.0,226.0,1.985,0.2877,4.491 +DH009,226.0,228.0,1.024,0.339,2.812 +DH009,228.0,230.0,3.537,0.2282,8.032 +DH009,230.0,232.0,1.501,0.1486,3.865 +DH009,232.0,234.0,3.524,0.2685,6.872 +DH009,234.0,236.0,1.176,1.0164,2.488 +DH009,236.0,238.0,0.779,0.1008,2.01 +DH009,238.0,240.0,14.001,0.6682,24.329 +DH009,240.0,242.0,0.759,0.9503,1.737 +DH009,242.0,244.0,1.612,0.7046,3.139 +DH009,244.0,246.0,31.228,0.2723,72.581 +DH009,246.0,248.0,1.068,0.0509,2.423 +DH009,248.0,250.0,8.789,0.3603,18.154 +DH009,250.0,252.0,0.045,0.0205,0.048 +DH009,252.0,254.0,0.106,0.0199,0.153 +DH009,254.0,256.0,0.138,0.0038,0.178 +DH009,256.0,258.0,0.384,0.0086,0.201 +DH009,258.0,260.0,0.082,0.0145,0.108 +DH009,260.0,262.0,0.109,0.0198,0.115 +DH009,262.0,264.0,0.083,0.0898,0.044 +DH009,264.0,266.0,0.092,0.0078,0.108 +DH009,266.0,268.0,0.163,0.0094,0.199 +DH009,268.0,270.0,0.084,0.0363,0.095 +DH009,270.0,272.0,0.067,0.0072,0.044 +DH009,272.0,274.0,0.122,0.0075,0.135 +DH009,274.0,276.0,0.13,0.0323,0.101 +DH009,276.0,278.0,0.122,0.0238,0.156 +DH009,278.0,280.0,0.028,0.0086,0.015 +DH009,280.0,282.0,0.076,0.0222,0.102 +DH009,282.0,284.0,0.16,0.0325,0.175 +DH009,284.0,286.0,0.095,0.012,0.05 +DH009,286.0,288.0,0.1,0.0033,0.133 +DH009,288.0,290.0,0.115,0.0136,0.154 +DH009,290.0,292.0,0.067,0.0196,0.086 +DH009,292.0,294.0,0.221,0.0174,0.251 +DH009,294.0,296.0,0.169,0.0245,0.107 +DH009,296.0,298.0,0.16,0.0652,0.164 +DH009,298.0,300.0,0.088,0.0199,0.096 +DH009,300.0,302.0,0.057,0.0159,0.078 +DH009,302.0,304.0,0.04,0.0141,0.021 +DH009,304.0,306.0,0.237,0.0239,0.252 +DH009,306.0,308.0,0.053,0.0364,0.07 +DH009,308.0,310.0,0.083,0.0147,0.125 +DH009,310.0,312.0,0.045,0.0223,0.034 +DH009,312.0,314.0,0.071,0.0203,0.052 +DH009,314.0,316.0,0.105,0.0145,0.14 +DH009,316.0,318.0,0.125,0.032,0.081 +DH009,318.0,320.0,0.065,0.0113,0.05 +DH009,320.0,322.0,0.059,0.011,0.051 +DH009,322.0,324.0,0.109,0.0244,0.104 +DH009,324.0,326.0,0.13,0.0149,0.121 +DH009,326.0,328.0,0.07,0.0228,0.04 +DH009,328.0,330.0,0.065,0.0094,0.034 +DH009,330.0,332.0,0.073,0.0071,0.059 +DH009,332.0,334.0,0.146,0.0648,0.186 +DH009,334.0,336.0,0.059,0.0105,0.077 +DH009,336.0,338.0,0.093,0.0122,0.096 +DH009,338.0,340.0,0.025,0.0291,0.018 +DH009,340.0,342.0,0.08,0.009,0.053 +DH009,342.0,344.0,0.069,0.0182,0.072 +DH009,344.0,346.0,0.195,0.0264,0.227 +DH009,346.0,348.0,0.195,0.0244,0.172 +DH009,348.0,350.0,0.15,0.0313,0.091 +DH009,350.0,352.0,0.034,0.012,0.048 +DH009,352.0,354.0,0.131,0.0181,0.142 +DH009,354.0,356.0,0.181,0.0334,0.238 +DH009,356.0,358.0,0.044,0.0233,0.025 +DH009,358.0,360.0,0.031,0.0159,0.041 +DH009,360.0,362.0,0.108,0.0502,0.136 +DH009,362.0,364.0,0.357,0.02,0.401 +DH009,364.0,366.0,0.038,0.0319,0.025 +DH009,366.0,368.0,0.056,0.0348,0.081 +DH010,0.0,2.0,0.162,0.0153,0.102 +DH010,2.0,4.0,0.079,0.0271,0.109 +DH010,4.0,6.0,0.102,0.0492,0.146 +DH010,6.0,8.0,0.071,0.0277,0.068 +DH010,8.0,10.0,0.272,0.0332,0.375 +DH010,10.0,12.0,0.072,0.0244,0.052 +DH010,12.0,14.0,0.106,0.023,0.054 +DH010,14.0,16.0,0.067,0.0169,0.06 +DH010,16.0,18.0,0.23,0.0162,0.231 +DH010,18.0,20.0,0.049,0.0262,0.066 +DH010,20.0,22.0,0.218,0.0203,0.117 +DH010,22.0,24.0,0.075,0.0238,0.098 +DH010,24.0,26.0,0.085,0.0196,0.077 +DH010,26.0,28.0,0.069,0.0162,0.057 +DH010,28.0,30.0,0.417,0.01,0.303 +DH010,30.0,32.0,0.046,0.0174,0.066 +DH010,32.0,34.0,0.117,0.02,0.08 +DH010,34.0,36.0,0.054,0.0162,0.061 +DH010,36.0,38.0,0.032,0.0102,0.043 +DH010,38.0,40.0,0.13,0.0207,0.139 +DH010,40.0,42.0,0.027,0.0087,0.035 +DH010,42.0,44.0,0.015,0.0338,0.013 +DH010,44.0,46.0,0.136,0.0117,0.084 +DH010,46.0,48.0,0.563,0.0059,0.828 +DH010,48.0,50.0,0.028,0.0227,0.032 +DH010,50.0,52.0,0.089,0.0116,0.062 +DH010,52.0,54.0,0.034,0.0341,0.032 +DH010,54.0,56.0,0.035,0.0407,0.022 +DH010,56.0,58.0,0.258,0.0337,0.151 +DH010,58.0,60.0,0.078,0.0195,0.113 +DH010,60.0,62.0,0.107,0.02,0.095 +DH010,62.0,64.0,0.08,0.0352,0.04 +DH010,64.0,66.0,0.065,0.0138,0.077 +DH010,66.0,68.0,0.035,0.0126,0.029 +DH010,68.0,70.0,0.073,0.026,0.045 +DH010,70.0,72.0,0.115,0.0169,0.141 +DH010,72.0,74.0,0.091,0.0143,0.068 +DH010,74.0,76.0,0.143,0.0207,0.098 +DH010,76.0,78.0,0.046,0.0088,0.03 +DH010,78.0,80.0,0.216,0.0203,0.24 +DH010,80.0,82.0,2.916,0.2138,5.801 +DH010,82.0,84.0,4.609,0.0205,12.478 +DH010,84.0,86.0,0.668,0.0715,1.285 +DH010,86.0,88.0,3.644,0.06,7.933 +DH010,88.0,90.0,5.562,0.2317,16.115 +DH010,90.0,92.0,0.687,0.507,1.382 +DH010,92.0,94.0,7.983,0.1955,19.787 +DH010,94.0,96.0,0.287,0.1984,0.73 +DH010,96.0,98.0,0.448,0.3325,0.935 +DH010,98.0,100.0,1.028,0.4421,3.069 +DH010,100.0,102.0,3.374,0.8151,6.941 +DH010,102.0,104.0,3.553,0.1753,8.142 +DH010,104.0,106.0,1.547,0.3447,2.781 +DH010,106.0,108.0,5.523,1.2294,10.459 +DH010,108.0,110.0,0.443,0.0761,1.224 +DH010,110.0,112.0,2.072,0.45,4.617 +DH010,112.0,114.0,6.03,0.1966,16.174 +DH010,114.0,116.0,1.375,0.0856,4.105 +DH010,116.0,118.0,1.982,0.3737,3.411 +DH010,118.0,120.0,0.63,0.1851,1.219 +DH010,120.0,122.0,1.191,0.1112,1.845 +DH010,122.0,124.0,4.05,0.8305,7.02 +DH010,124.0,126.0,4.82,0.3967,8.644 +DH010,126.0,128.0,0.7,0.0938,1.278 +DH010,128.0,130.0,5.781,0.2814,13.091 +DH010,130.0,132.0,0.099,1.1553,0.195 +DH010,132.0,134.0,26.106,0.07,74.714 +DH010,134.0,136.0,0.158,0.2981,0.291 +DH010,136.0,138.0,0.614,0.0744,1.309 +DH010,138.0,140.0,5.227,0.9509,12.277 +DH010,140.0,142.0,2.894,0.0795,4.502 +DH010,142.0,144.0,1.194,0.3235,1.954 +DH010,144.0,146.0,7.31,0.1137,17.723 +DH010,146.0,148.0,2.111,0.1721,3.815 +DH010,148.0,150.0,1.137,0.8993,3.261 +DH010,150.0,152.0,2.744,0.1809,4.572 +DH010,152.0,154.0,10.655,0.1253,30.125 +DH010,154.0,156.0,1.721,0.2507,4.4 +DH010,156.0,158.0,3.768,0.713,6.074 +DH010,158.0,160.0,0.575,0.1516,0.886 +DH010,160.0,162.0,24.487,0.4973,58.539 +DH010,162.0,164.0,1.621,0.1775,4.198 +DH010,164.0,166.0,5.686,0.3305,14.926 +DH010,166.0,168.0,3.64,0.1885,6.926 +DH010,168.0,170.0,2.729,0.4554,7.527 +DH010,170.0,172.0,5.383,0.2195,15.895 +DH010,172.0,174.0,0.182,0.2001,0.471 +DH010,174.0,176.0,16.604,0.2965,49.587 +DH010,176.0,178.0,2.114,0.4784,5.721 +DH010,178.0,180.0,1.2,0.1298,3.538 +DH010,180.0,182.0,10.428,0.1335,26.944 +DH010,182.0,184.0,0.54,0.1895,1.498 +DH010,184.0,186.0,27.455,0.0591,47.638 +DH010,186.0,188.0,0.643,0.492,1.112 +DH010,188.0,190.0,1.037,0.2365,2.382 +DH010,190.0,192.0,15.442,0.3456,37.069 +DH010,192.0,194.0,0.091,0.2115,0.254 +DH010,194.0,196.0,10.928,0.0509,19.413 +DH010,196.0,198.0,0.526,0.8771,1.108 +DH010,198.0,200.0,0.886,0.2293,1.952 +DH010,200.0,202.0,0.605,0.2297,1.296 +DH010,202.0,204.0,0.217,0.1645,0.557 +DH010,204.0,206.0,0.39,0.268,1.1 +DH010,206.0,208.0,17.414,0.1856,42.783 +DH010,208.0,210.0,6.209,0.0772,13.922 +DH010,210.0,212.0,4.216,0.187,12.136 +DH010,212.0,214.0,1.884,0.4399,3.599 +DH010,214.0,216.0,0.906,0.2489,2.001 +DH010,216.0,218.0,0.821,0.2506,1.871 +DH010,218.0,220.0,2.063,0.0605,4.206 +DH010,220.0,222.0,0.879,0.5071,2.048 +DH010,222.0,224.0,1.051,0.5889,2.685 +DH010,224.0,226.0,2.859,0.4102,5.558 +DH010,226.0,228.0,2.203,0.1314,4.835 +DH010,228.0,230.0,0.968,0.7321,2.409 +DH010,230.0,232.0,2.281,0.4094,6.424 +DH010,232.0,234.0,1.557,0.2178,4.614 +DH010,234.0,236.0,1.005,0.2017,2.45 +DH010,236.0,238.0,6.281,0.206,15.085 +DH010,238.0,240.0,1.844,0.1845,3.197 +DH010,240.0,242.0,0.458,0.0974,0.798 +DH010,242.0,244.0,8.697,0.2173,19.89 +DH010,244.0,246.0,9.697,0.7718,28.542 +DH010,246.0,248.0,0.8,0.1501,1.453 +DH010,248.0,250.0,2.972,0.1801,6.394 +DH010,250.0,252.0,0.15,0.0138,0.099 +DH010,252.0,254.0,0.143,0.0103,0.197 +DH010,254.0,256.0,0.042,0.0112,0.043 +DH010,256.0,258.0,0.109,0.0156,0.063 +DH010,258.0,260.0,0.085,0.0103,0.076 +DH010,260.0,262.0,0.162,0.0176,0.147 +DH010,262.0,264.0,0.103,0.0066,0.145 +DH010,264.0,266.0,0.528,0.0172,0.532 +DH010,266.0,268.0,0.128,0.0417,0.138 +DH010,268.0,270.0,0.023,0.0243,0.03 +DH010,270.0,272.0,0.119,0.0103,0.078 +DH010,272.0,274.0,0.038,0.0339,0.045 +DH010,274.0,276.0,0.086,0.0119,0.067 +DH010,276.0,278.0,0.2,0.0193,0.234 +DH010,278.0,280.0,0.041,0.0072,0.051 +DH010,280.0,282.0,0.088,0.0299,0.064 +DH010,282.0,284.0,0.211,0.0128,0.161 +DH010,284.0,286.0,0.043,0.0301,0.032 +DH010,286.0,288.0,0.031,0.0523,0.042 +DH010,288.0,290.0,0.067,0.0345,0.099 +DH010,290.0,292.0,0.115,0.0337,0.063 +DH010,292.0,294.0,0.098,0.0241,0.073 +DH010,294.0,296.0,0.264,0.0178,0.255 +DH010,296.0,298.0,0.047,0.0299,0.07 +DH010,298.0,300.0,0.071,0.0193,0.082 +DH010,300.0,302.0,0.097,0.066,0.074 +DH010,302.0,304.0,0.063,0.0304,0.042 +DH010,304.0,306.0,0.195,0.0199,0.183 +DH010,306.0,308.0,0.028,0.0081,0.031 +DH010,308.0,310.0,0.103,0.0093,0.111 +DH010,310.0,312.0,0.084,0.0162,0.045 +DH010,312.0,314.0,0.119,0.0122,0.13 +DH010,314.0,316.0,0.167,0.0219,0.109 +DH010,316.0,318.0,0.121,0.0184,0.078 +DH010,318.0,320.0,0.05,0.0516,0.058 +DH010,320.0,322.0,0.209,0.0167,0.307 +DH010,322.0,324.0,0.128,0.0325,0.092 +DH010,324.0,326.0,0.157,0.0461,0.082 +DH010,326.0,328.0,0.084,0.0141,0.065 +DH010,328.0,330.0,0.229,0.0111,0.126 +DH010,330.0,332.0,0.216,0.025,0.134 +DH010,332.0,334.0,0.063,0.0195,0.078 +DH010,334.0,336.0,0.089,0.0075,0.127 +DH010,336.0,338.0,0.1,0.0178,0.134 +DH010,338.0,340.0,0.048,0.0264,0.059 +DH010,340.0,342.0,0.112,0.0517,0.083 +DH010,342.0,344.0,0.033,0.014,0.022 +DH010,344.0,346.0,0.079,0.0091,0.051 +DH010,346.0,348.0,0.082,0.0477,0.078 +DH010,348.0,350.0,0.165,0.0097,0.239 +DH010,350.0,352.0,0.127,0.0315,0.136 +DH010,352.0,354.0,0.083,0.0092,0.116 +DH010,354.0,356.0,0.136,0.0147,0.155 +DH010,356.0,358.0,0.042,0.0132,0.047 +DH010,358.0,360.0,0.141,0.019,0.207 +DH010,360.0,362.0,0.068,0.0082,0.075 +DH010,362.0,364.0,0.186,0.0171,0.182 +DH010,364.0,366.0,0.078,0.018,0.114 +DH010,366.0,368.0,0.017,0.0203,0.012 +DH010,368.0,370.0,0.2,0.0297,0.261 +DH010,370.0,372.0,0.173,0.0161,0.103 +DH010,372.0,374.0,0.092,0.0165,0.057 +DH010,374.0,376.0,0.101,0.0203,0.124 +DH010,376.0,378.0,0.158,0.0271,0.114 +DH010,378.0,380.0,0.118,0.0199,0.144 +DH010,380.0,381.0,0.078,0.0186,0.048 +DH011,0.0,2.0,0.217,0.0182,0.198 +DH011,2.0,4.0,0.197,0.0273,0.151 +DH011,4.0,6.0,0.068,0.0216,0.034 +DH011,6.0,8.0,0.055,0.0195,0.078 +DH011,8.0,10.0,0.066,0.0288,0.046 +DH011,10.0,12.0,0.147,0.016,0.082 +DH011,12.0,14.0,0.086,0.0099,0.111 +DH011,14.0,16.0,0.09,0.067,0.108 +DH011,16.0,18.0,0.126,0.0207,0.066 +DH011,18.0,20.0,0.045,0.0077,0.038 +DH011,20.0,22.0,0.08,0.0064,0.046 +DH011,22.0,24.0,0.071,0.0164,0.057 +DH011,24.0,26.0,0.067,0.0434,0.078 +DH011,26.0,28.0,0.059,0.0177,0.051 +DH011,28.0,30.0,0.052,0.0125,0.067 +DH011,30.0,32.0,0.064,0.0106,0.088 +DH011,32.0,34.0,0.088,0.0068,0.067 +DH011,34.0,36.0,0.138,0.023,0.135 +DH011,36.0,38.0,0.174,0.0378,0.151 +DH011,38.0,40.0,0.129,0.0199,0.121 +DH011,40.0,42.0,0.059,0.0193,0.055 +DH011,42.0,44.0,0.104,0.0132,0.1 +DH011,44.0,46.0,0.105,0.0171,0.115 +DH011,46.0,48.0,0.034,0.0103,0.029 +DH011,48.0,50.0,0.105,0.0204,0.111 +DH011,50.0,52.0,0.129,0.0313,0.072 +DH011,52.0,54.0,0.093,0.0317,0.089 +DH011,54.0,56.0,0.103,0.0346,0.064 +DH011,56.0,58.0,0.069,0.0157,0.051 +DH011,58.0,60.0,0.211,0.0089,0.131 +DH011,60.0,62.0,0.041,0.0104,0.027 +DH011,62.0,64.0,0.068,0.0084,0.045 +DH011,64.0,66.0,0.123,0.031,0.1 +DH011,66.0,68.0,0.08,0.018,0.107 +DH011,68.0,70.0,0.015,0.0114,0.017 +DH011,70.0,72.0,0.043,0.0161,0.038 +DH011,72.0,74.0,0.055,0.0189,0.051 +DH011,74.0,76.0,0.071,0.0146,0.055 +DH011,76.0,78.0,0.082,0.0077,0.107 +DH011,78.0,80.0,0.063,0.0344,0.081 +DH011,80.0,82.0,9.062,0.0994,13.793 +DH011,82.0,84.0,0.501,0.1269,1.001 +DH011,84.0,86.0,13.263,0.0891,21.101 +DH011,86.0,88.0,2.031,0.3565,3.346 +DH011,88.0,90.0,0.325,0.3301,0.71 +DH011,90.0,92.0,1.302,0.254,2.482 +DH011,92.0,94.0,1.877,0.1665,4.051 +DH011,94.0,96.0,3.134,0.133,8.862 +DH011,96.0,98.0,3.525,0.8821,5.52 +DH011,98.0,100.0,9.559,0.1369,24.058 +DH011,100.0,102.0,1.678,0.1989,4.611 +DH011,102.0,104.0,10.167,0.4523,21.227 +DH011,104.0,106.0,4.807,0.2667,10.561 +DH011,106.0,108.0,0.443,0.1986,0.921 +DH011,108.0,110.0,4.704,0.135,9.56 +DH011,110.0,112.0,0.608,0.2125,1.262 +DH011,112.0,114.0,16.785,0.3557,41.678 +DH011,114.0,116.0,2.141,0.5397,5.521 +DH011,116.0,118.0,1.881,0.0933,3.878 +DH011,118.0,120.0,40.135,0.3054,95.228 +DH011,120.0,122.0,1.94,0.3355,5.158 +DH011,122.0,124.0,1.172,0.1322,2.036 +DH011,124.0,126.0,1.448,0.1552,3.243 +DH011,126.0,128.0,2.443,0.193,6.496 +DH011,128.0,130.0,2.825,0.4059,6.036 +DH011,130.0,132.0,4.32,0.1841,8.332 +DH011,132.0,134.0,0.636,0.1388,1.433 +DH011,134.0,136.0,0.866,0.241,1.546 +DH011,136.0,138.0,0.303,0.4298,0.754 +DH011,138.0,140.0,0.815,0.093,1.263 +DH011,140.0,142.0,11.587,0.1616,17.641 +DH011,142.0,144.0,8.052,0.0524,21.073 +DH011,144.0,146.0,41.801,0.0256,78.845 +DH011,146.0,148.0,0.939,0.1805,1.637 +DH011,148.0,150.0,5.895,0.2039,17.538 +DH011,150.0,152.0,1.81,0.3368,5.405 +DH011,152.0,154.0,0.309,1.0988,0.741 +DH011,154.0,156.0,1.887,0.1623,3.402 +DH011,156.0,158.0,18.678,0.3549,38.41 +DH011,158.0,160.0,0.423,0.1622,0.723 +DH011,160.0,162.0,0.282,0.4298,0.562 +DH011,162.0,164.0,13.356,0.9574,24.39 +DH011,164.0,166.0,3.769,0.0833,7.489 +DH011,166.0,168.0,1.224,0.0935,2.786 +DH011,168.0,170.0,1.273,0.172,2.985 +DH011,170.0,172.0,0.867,0.8941,1.871 +DH011,172.0,174.0,15.464,0.0989,34.796 +DH011,174.0,176.0,1.236,0.1695,3.11 +DH011,176.0,178.0,13.461,0.5783,33.36 +DH011,178.0,180.0,2.776,0.1194,8.068 +DH011,180.0,182.0,0.562,0.1572,1.067 +DH012,0.0,2.0,0.026,0.0179,0.029 +DH012,2.0,4.0,0.161,0.0137,0.114 +DH012,4.0,6.0,0.108,0.0057,0.154 +DH012,6.0,8.0,0.072,0.0458,0.105 +DH012,8.0,10.0,0.142,0.0174,0.17 +DH012,10.0,12.0,0.036,0.0247,0.048 +DH012,12.0,14.0,0.24,0.0303,0.356 +DH012,14.0,16.0,0.045,0.0092,0.05 +DH012,16.0,18.0,0.051,0.0384,0.064 +DH012,18.0,20.0,0.076,0.0238,0.088 +DH012,20.0,22.0,0.068,0.0255,0.085 +DH012,22.0,24.0,0.066,0.0259,0.066 +DH012,24.0,26.0,0.051,0.0247,0.039 +DH012,26.0,28.0,0.11,0.0146,0.162 +DH012,28.0,30.0,0.232,0.0397,0.25 +DH012,30.0,32.0,0.065,0.0158,0.078 +DH012,32.0,34.0,0.066,0.0133,0.038 +DH012,34.0,36.0,0.08,0.0443,0.079 +DH012,36.0,38.0,0.112,0.0516,0.099 +DH012,38.0,40.0,0.07,0.0102,0.085 +DH012,40.0,42.0,0.052,0.0175,0.057 +DH012,42.0,44.0,0.209,0.0326,0.236 +DH012,44.0,46.0,0.041,0.0395,0.032 +DH012,46.0,48.0,0.042,0.0076,0.06 +DH012,48.0,50.0,0.034,0.0134,0.037 +DH012,50.0,52.0,0.066,0.0219,0.07 +DH012,52.0,54.0,0.085,0.0479,0.091 +DH012,54.0,56.0,0.103,0.0084,0.077 +DH012,56.0,58.0,0.062,0.031,0.032 +DH012,58.0,60.0,0.118,0.0256,0.152 +DH012,60.0,62.0,0.158,0.0125,0.232 +DH012,62.0,64.0,0.065,0.0218,0.053 +DH012,64.0,66.0,0.085,0.0107,0.047 +DH012,66.0,68.0,0.084,0.014,0.053 +DH012,68.0,70.0,0.089,0.0135,0.091 +DH012,70.0,72.0,0.045,0.0592,0.055 +DH012,72.0,74.0,0.097,0.0329,0.12 +DH012,74.0,76.0,0.018,0.015,0.019 +DH012,76.0,78.0,0.071,0.0203,0.068 +DH012,78.0,80.0,0.041,0.0224,0.021 +DH012,80.0,82.0,3.377,0.1472,10.012 +DH012,82.0,84.0,1.966,0.9225,3.666 +DH012,84.0,86.0,5.427,0.2127,8.363 +DH012,86.0,88.0,4.753,0.1756,14.164 +DH012,88.0,90.0,0.056,0.6175,0.125 +DH012,90.0,92.0,21.43,0.22,51.822 +DH012,92.0,94.0,1.345,0.2252,2.48 +DH012,94.0,96.0,16.091,1.3386,28.146 +DH012,96.0,98.0,2.197,0.0792,5.729 +DH012,98.0,100.0,2.439,0.177,6.074 +DH012,100.0,102.0,1.102,0.251,3.243 +DH012,102.0,104.0,8.203,0.2052,16.313 +DH012,104.0,106.0,1.748,0.2001,5.192 +DH012,106.0,108.0,5.538,0.1107,11.875 +DH012,108.0,110.0,2.228,0.2459,6.206 +DH012,110.0,112.0,1.687,0.4216,3.56 +DH012,112.0,114.0,1.699,0.2541,3.246 +DH012,114.0,116.0,0.646,0.2167,1.755 +DH012,116.0,118.0,0.63,0.1654,1.349 +DH012,118.0,120.0,6.887,0.2072,12.573 +DH012,120.0,122.0,2.486,0.0852,5.451 +DH012,122.0,124.0,0.386,0.095,0.646 +DH012,124.0,126.0,0.923,0.324,2.547 +DH012,126.0,128.0,5.537,0.0982,13.559 +DH012,128.0,130.0,2.371,1.4365,4.523 +DH012,130.0,132.0,1.093,0.386,2.425 +DH012,132.0,134.0,0.315,0.1137,0.836 +DH012,134.0,136.0,1.349,0.171,2.993 +DH012,136.0,138.0,11.998,0.0715,18.182 +DH012,138.0,140.0,7.807,0.2178,18.407 +DH012,140.0,142.0,0.441,0.1856,0.691 +DH012,142.0,144.0,2.847,0.0727,5.712 +DH012,144.0,146.0,2.557,0.2597,6.076 +DH012,146.0,148.0,1.316,0.1248,3.566 +DH012,148.0,150.0,1.766,0.2075,4.478 +DH012,150.0,152.0,0.196,0.1425,0.412 +DH012,152.0,154.0,2.621,0.5825,7.345 +DH012,154.0,156.0,5.536,0.6744,10.937 +DH012,156.0,158.0,17.32,0.9809,33.894 +DH012,158.0,160.0,5.195,0.1893,8.809 +DH012,160.0,162.0,1.484,0.3668,3.732 +DH012,162.0,164.0,1.769,0.0339,4.542 +DH012,164.0,166.0,1.708,0.3212,4.389 +DH012,166.0,168.0,3.191,0.7086,8.865 +DH012,168.0,170.0,39.522,0.5324,104.563 +DH012,170.0,172.0,12.306,0.0876,28.768 +DH012,172.0,174.0,12.592,0.0501,29.817 +DH012,174.0,176.0,4.215,1.0783,11.733 +DH012,176.0,178.0,15.357,0.1426,26.847 +DH012,178.0,180.0,0.514,0.0935,1.21 +DH012,180.0,182.0,0.586,0.4034,1.245 +DH012,182.0,184.0,0.519,0.1463,1.195 +DH012,184.0,186.0,1.595,0.2293,3.698 +DH012,186.0,188.0,8.157,0.1741,16.621 +DH012,188.0,190.0,2.438,0.3251,7.216 +DH012,190.0,192.0,0.764,0.1255,1.443 +DH012,192.0,194.0,0.893,0.3928,1.817 +DH012,194.0,196.0,0.334,0.1708,0.632 +DH012,196.0,198.0,0.388,0.1373,0.967 +DH012,198.0,200.0,1.388,0.252,3.236 +DH012,200.0,202.0,13.11,0.3297,38.466 +DH012,202.0,204.0,2.493,0.2464,6.375 +DH012,204.0,206.0,1.083,0.4122,1.633 +DH012,206.0,208.0,13.328,0.6267,28.036 +DH012,208.0,210.0,1.625,0.3346,2.86 +DH012,210.0,212.0,16.716,0.2376,44.809 +DH012,212.0,214.0,1.282,0.0845,3.491 +DH012,214.0,216.0,0.832,0.5371,2.141 +DH012,216.0,218.0,2.593,0.56,4.721 +DH012,218.0,220.0,25.076,0.1588,42.716 +DH012,220.0,222.0,4.418,0.3989,6.806 +DH012,222.0,224.0,7.366,0.338,21.972 +DH012,224.0,226.0,4.165,1.0743,7.477 +DH012,226.0,228.0,0.255,1.802,0.681 +DH012,228.0,230.0,13.392,0.228,29.771 +DH012,230.0,232.0,0.974,0.3681,1.885 +DH012,232.0,234.0,14.803,0.3169,32.539 +DH012,234.0,236.0,0.166,0.2084,0.298 +DH012,236.0,238.0,2.911,0.4814,6.701 +DH012,238.0,240.0,2.36,0.5741,5.702 +DH012,240.0,242.0,4.514,0.1708,9.807 +DH012,242.0,244.0,3.333,0.5957,5.254 +DH012,244.0,246.0,1.892,0.4496,4.39 +DH012,246.0,248.0,2.004,0.1282,3.17 +DH012,248.0,250.0,6.083,0.2157,17.453 +DH012,250.0,252.0,0.03,0.0278,0.042 +DH012,252.0,254.0,0.1,0.034,0.121 +DH012,254.0,256.0,0.08,0.0168,0.092 +DH012,256.0,258.0,0.173,0.0094,0.21 +DH012,258.0,260.0,0.152,0.0167,0.096 +DH012,260.0,262.0,0.106,0.0218,0.137 +DH012,262.0,264.0,0.115,0.0112,0.079 +DH012,264.0,266.0,0.165,0.0201,0.22 +DH012,266.0,268.0,0.077,0.0202,0.114 +DH012,268.0,270.0,0.066,0.0091,0.093 +DH012,270.0,272.0,0.091,0.008,0.105 +DH012,272.0,274.0,0.079,0.0237,0.082 +DH012,274.0,276.0,0.051,0.0125,0.065 +DH012,276.0,278.0,0.083,0.0197,0.074 +DH012,278.0,280.0,0.064,0.0154,0.071 +DH012,280.0,282.0,0.052,0.0139,0.071 +DH012,282.0,284.0,0.106,0.0092,0.087 +DH012,284.0,286.0,0.048,0.0289,0.042 +DH012,286.0,288.0,0.063,0.0409,0.054 +DH012,288.0,290.0,0.147,0.0228,0.114 +DH012,290.0,292.0,0.118,0.0335,0.164 +DH012,292.0,294.0,0.242,0.028,0.215 +DH012,294.0,296.0,0.095,0.0196,0.094 +DH012,296.0,298.0,0.078,0.0205,0.081 +DH012,298.0,300.0,0.101,0.0185,0.056 +DH012,300.0,302.0,0.122,0.0199,0.103 +DH012,302.0,304.0,0.24,0.0171,0.151 +DH012,304.0,306.0,0.067,0.0143,0.097 +DH012,306.0,308.0,0.189,0.0229,0.167 +DH012,308.0,310.0,0.119,0.019,0.092 +DH012,310.0,312.0,0.101,0.0147,0.128 +DH012,312.0,314.0,0.093,0.0248,0.063 +DH012,314.0,316.0,0.126,0.0116,0.161 +DH012,316.0,318.0,0.06,0.0107,0.048 +DH012,318.0,320.0,0.046,0.0129,0.061 +DH012,320.0,322.0,0.058,0.0167,0.034 +DH012,322.0,324.0,0.135,0.028,0.115 +DH012,324.0,326.0,0.113,0.019,0.164 +DH012,326.0,328.0,0.05,0.0349,0.065 +DH012,328.0,330.0,0.054,0.0187,0.029 +DH012,330.0,332.0,0.042,0.02,0.021 +DH012,332.0,334.0,0.046,0.0087,0.063 +DH012,334.0,336.0,0.066,0.0176,0.054 +DH012,336.0,338.0,0.121,0.0177,0.1 +DH012,338.0,340.0,0.074,0.0124,0.038 +DH012,340.0,342.0,0.038,0.024,0.042 +DH012,342.0,344.0,0.142,0.0155,0.176 +DH012,344.0,346.0,0.042,0.0131,0.048 +DH012,346.0,348.0,0.166,0.0421,0.228 +DH012,348.0,350.0,0.247,0.0158,0.15 +DH012,350.0,352.0,0.047,0.0226,0.046 +DH012,352.0,354.0,0.042,0.0231,0.063 +DH012,354.0,356.0,0.106,0.0288,0.152 +DH012,356.0,358.0,0.046,0.0144,0.056 +DH012,358.0,360.0,0.077,0.0193,0.072 +DH012,360.0,362.0,0.224,0.0128,0.162 +DH012,362.0,364.0,0.044,0.019,0.058 +DH012,364.0,366.0,0.162,0.0148,0.089 +DH012,366.0,368.0,0.106,0.014,0.092 +DH012,368.0,370.0,0.057,0.0249,0.042 +DH012,370.0,372.0,0.109,0.0243,0.12 +DH012,372.0,374.0,0.034,0.0231,0.042 +DH012,374.0,376.0,0.058,0.054,0.066 +DH012,376.0,378.0,0.053,0.0326,0.028 +DH012,378.0,380.0,0.063,0.0342,0.032 +DH012,380.0,382.0,0.032,0.024,0.041 +DH012,382.0,384.0,0.207,0.0135,0.272 +DH012,384.0,386.0,0.238,0.012,0.211 +DH012,386.0,388.0,0.104,0.0119,0.08 +DH012,388.0,390.0,0.072,0.0162,0.072 +DH012,390.0,392.0,0.086,0.0199,0.068 +DH012,392.0,394.0,0.059,0.0173,0.031 +DH012,394.0,396.0,0.063,0.0215,0.091 +DH012,396.0,398.0,0.053,0.0159,0.066 +DH012,398.0,400.0,0.218,0.0185,0.253 +DH012,400.0,402.0,0.061,0.0182,0.076 +DH012,402.0,404.0,0.074,0.0115,0.077 +DH012,404.0,406.0,0.018,0.0104,0.024 +DH012,406.0,408.0,0.135,0.0354,0.149 +DH012,408.0,410.0,0.123,0.0146,0.147 +DH012,410.0,412.0,0.163,0.0189,0.224 +DH012,412.0,414.0,0.066,0.0491,0.034 +DH012,414.0,416.0,0.183,0.0428,0.176 +DH012,416.0,418.0,0.061,0.0109,0.045 +DH012,418.0,420.0,0.122,0.0166,0.108 +DH012,420.0,422.0,0.115,0.0072,0.067 +DH012,422.0,424.0,0.067,0.0239,0.055 +DH012,424.0,425.0,0.187,0.0174,0.247 +DH013,0.0,2.0,0.085,0.0202,0.123 +DH013,2.0,4.0,0.09,0.0153,0.132 +DH013,4.0,6.0,0.123,0.0138,0.127 +DH013,6.0,8.0,0.062,0.034,0.032 +DH013,8.0,10.0,0.086,0.0147,0.069 +DH013,10.0,12.0,0.184,0.0253,0.262 +DH013,12.0,14.0,0.118,0.0092,0.16 +DH013,14.0,16.0,0.073,0.0127,0.058 +DH013,16.0,18.0,0.027,0.0093,0.021 +DH013,18.0,20.0,0.079,0.0123,0.089 +DH013,20.0,22.0,0.063,0.0316,0.073 +DH013,22.0,24.0,0.125,0.0203,0.107 +DH013,24.0,26.0,0.078,0.0099,0.109 +DH013,26.0,28.0,0.052,0.0222,0.046 +DH013,28.0,30.0,0.083,0.0244,0.107 +DH013,30.0,32.0,0.052,0.0185,0.034 +DH013,32.0,34.0,0.208,0.0087,0.195 +DH013,34.0,36.0,0.442,0.016,0.583 +DH013,36.0,38.0,0.058,0.0046,0.08 +DH013,38.0,40.0,0.133,0.0116,0.121 +DH013,40.0,42.0,0.143,0.0076,0.212 +DH013,42.0,44.0,0.072,0.0126,0.1 +DH013,44.0,46.0,0.038,0.0204,0.022 +DH013,46.0,48.0,0.114,0.0202,0.145 +DH013,48.0,50.0,0.034,0.0234,0.032 +DH013,50.0,52.0,0.074,0.0309,0.059 +DH013,52.0,54.0,0.185,0.0377,0.248 +DH013,54.0,56.0,0.046,0.0061,0.028 +DH013,56.0,58.0,0.088,0.0126,0.049 +DH013,58.0,60.0,0.049,0.0148,0.027 +DH013,60.0,62.0,0.042,0.0173,0.051 +DH013,62.0,64.0,0.093,0.0342,0.057 +DH013,64.0,66.0,0.082,0.0057,0.12 +DH013,66.0,68.0,0.13,0.0084,0.069 +DH013,68.0,70.0,0.101,0.0382,0.121 +DH013,70.0,72.0,0.056,0.0178,0.031 +DH013,72.0,74.0,0.075,0.031,0.09 +DH013,74.0,76.0,0.088,0.0229,0.048 +DH013,76.0,78.0,0.136,0.0197,0.176 +DH013,78.0,80.0,0.092,0.0221,0.097 +DH013,80.0,82.0,1.044,0.5942,2.59 +DH013,82.0,84.0,0.652,0.2579,1.419 +DH013,84.0,86.0,1.118,0.4813,2.737 +DH013,86.0,88.0,2.564,0.02,4.514 +DH013,88.0,90.0,3.34,0.3238,7.354 +DH013,90.0,92.0,1.729,0.1954,5.093 +DH013,92.0,94.0,1.741,0.0813,5.216 +DH013,94.0,96.0,0.605,0.746,1.68 +DH013,96.0,98.0,2.898,0.148,6.508 +DH013,98.0,100.0,6.844,0.0393,14.05 +DH013,100.0,102.0,2.084,0.2683,3.829 +DH013,102.0,104.0,0.245,0.1176,0.485 +DH013,104.0,106.0,0.88,0.4848,2.083 +DH013,106.0,108.0,3.194,0.2533,7.438 +DH013,108.0,110.0,1.897,0.4202,4.295 +DH013,110.0,112.0,3.748,0.067,7.72 +DH013,112.0,114.0,3.501,0.315,9.344 +DH013,114.0,116.0,1.185,0.7348,2.265 +DH013,116.0,118.0,3.688,0.3591,10.128 +DH013,118.0,120.0,1.521,0.1323,2.729 +DH013,120.0,122.0,14.337,0.3126,30.091 +DH013,122.0,124.0,93.695,0.2894,157.109 +DH013,124.0,126.0,1.759,0.1023,3.04 +DH013,126.0,128.0,1.373,0.1395,2.748 +DH013,128.0,130.0,15.044,0.2834,31.518 +DH013,130.0,132.0,5.524,0.3253,9.048 +DH013,132.0,134.0,5.063,0.2484,11.072 +DH013,134.0,136.0,5.494,0.2542,14.726 +DH013,136.0,138.0,13.964,0.1522,34.448 +DH013,138.0,140.0,3.657,0.137,10.186 +DH013,140.0,142.0,1.456,0.1505,4.036 +DH013,142.0,144.0,1.018,0.2761,1.712 +DH013,144.0,146.0,4.329,0.0279,10.164 +DH013,146.0,148.0,1.139,0.3206,2.144 +DH013,148.0,150.0,1.766,0.2056,2.659 +DH013,150.0,152.0,11.171,0.2196,33.139 +DH013,152.0,154.0,6.875,0.3805,11.268 +DH013,154.0,156.0,8.499,0.1547,21.469 +DH013,156.0,158.0,0.693,0.0865,1.947 +DH013,158.0,160.0,0.706,0.5582,1.867 +DH013,160.0,162.0,1.344,0.2153,2.466 +DH013,162.0,164.0,2.189,0.0938,5.56 +DH013,164.0,166.0,6.756,0.2734,12.556 +DH013,166.0,168.0,6.183,0.2219,10.914 +DH013,168.0,170.0,5.452,0.1952,14.192 +DH013,170.0,172.0,20.438,0.2201,42.292 +DH013,172.0,174.0,1.369,0.5735,3.704 +DH013,174.0,176.0,0.349,0.1296,0.639 +DH013,176.0,178.0,6.041,0.182,12.137 +DH013,178.0,180.0,5.46,0.1803,9.28 +DH013,180.0,182.0,3.304,0.1147,6.199 +DH013,182.0,184.0,3.223,0.0579,7.513 +DH013,184.0,186.0,1.547,0.5079,3.378 +DH013,186.0,188.0,1.408,0.1518,2.783 +DH013,188.0,190.0,2.112,0.9388,3.824 +DH013,190.0,192.0,1.36,0.2703,3.682 +DH013,192.0,194.0,6.242,0.0769,15.786 +DH013,194.0,196.0,3.845,0.5949,9.249 +DH013,196.0,198.0,11.581,0.1995,29.857 +DH013,198.0,200.0,0.061,0.0656,0.171 +DH013,200.0,202.0,2.056,0.3703,4.935 +DH013,202.0,204.0,0.589,0.1603,1.331 +DH013,204.0,206.0,2.936,0.1187,7.5 +DH013,206.0,208.0,1.056,0.1113,2.504 +DH013,208.0,210.0,8.083,0.2006,21.729 +DH013,210.0,212.0,6.762,1.2389,18.679 +DH013,212.0,214.0,9.783,0.5111,15.245 +DH013,214.0,216.0,2.298,0.08,3.506 +DH013,216.0,218.0,1.05,0.1617,2.668 +DH013,218.0,219.0,1.577,0.3416,2.984 +DH014,0.0,2.0,0.027,0.0126,0.017 +DH014,2.0,4.0,0.095,0.0236,0.14 +DH014,4.0,6.0,0.051,0.0207,0.027 +DH014,6.0,8.0,0.041,0.0265,0.023 +DH014,8.0,10.0,0.145,0.0135,0.104 +DH014,10.0,12.0,0.061,0.0254,0.063 +DH014,12.0,14.0,0.072,0.0055,0.047 +DH014,14.0,16.0,0.087,0.0149,0.094 +DH014,16.0,18.0,0.041,0.0138,0.033 +DH014,18.0,20.0,0.059,0.0307,0.085 +DH014,20.0,22.0,0.054,0.0128,0.037 +DH014,22.0,24.0,0.18,0.0321,0.181 +DH014,24.0,26.0,0.036,0.0095,0.023 +DH014,26.0,28.0,0.114,0.0065,0.16 +DH014,28.0,30.0,0.217,0.0164,0.119 +DH014,30.0,32.0,0.121,0.0107,0.14 +DH014,32.0,34.0,0.076,0.0114,0.082 +DH014,34.0,36.0,0.203,0.0112,0.139 +DH014,36.0,38.0,0.063,0.0181,0.075 +DH014,38.0,40.0,0.057,0.0243,0.033 +DH014,40.0,42.0,0.107,0.0053,0.086 +DH014,42.0,44.0,0.137,0.025,0.098 +DH014,44.0,46.0,0.041,0.013,0.035 +DH014,46.0,48.0,0.179,0.0201,0.197 +DH014,48.0,50.0,0.081,0.0214,0.074 +DH014,50.0,52.0,0.112,0.0205,0.13 +DH014,52.0,54.0,0.026,0.0196,0.014 +DH014,54.0,56.0,0.058,0.0233,0.05 +DH014,56.0,58.0,0.08,0.0242,0.116 +DH014,58.0,60.0,0.095,0.0178,0.113 +DH014,60.0,62.0,0.059,0.0162,0.078 +DH014,62.0,64.0,0.078,0.0105,0.046 +DH014,64.0,66.0,0.043,0.0177,0.028 +DH014,66.0,68.0,0.096,0.0167,0.123 +DH014,68.0,70.0,0.071,0.0105,0.104 +DH014,70.0,72.0,0.072,0.0247,0.065 +DH014,72.0,74.0,0.066,0.0146,0.098 +DH014,74.0,76.0,0.075,0.0149,0.108 +DH014,76.0,78.0,0.04,0.0137,0.054 +DH014,78.0,80.0,0.119,0.0117,0.071 +DH014,80.0,82.0,0.784,0.3499,1.575 +DH014,82.0,84.0,1.868,0.0742,3.452 +DH014,84.0,86.0,6.245,0.0814,17.776 +DH014,86.0,88.0,2.553,0.3017,6.8 +DH014,88.0,90.0,0.726,0.1022,1.977 +DH014,90.0,92.0,1.046,0.0247,3.084 +DH014,92.0,94.0,0.642,0.3242,1.311 +DH014,94.0,96.0,2.271,0.4949,6.008 +DH014,96.0,98.0,14.953,0.0954,36.461 +DH014,98.0,100.0,4.992,0.1916,14.582 +DH014,100.0,102.0,1.325,1.1682,2.956 +DH014,102.0,104.0,3.122,0.3472,9.189 +DH014,104.0,106.0,0.535,0.0781,1.096 +DH014,106.0,108.0,3.092,0.1861,4.643 +DH014,108.0,110.0,0.127,0.1916,0.284 +DH014,110.0,112.0,6.697,0.4946,11.757 +DH014,112.0,114.0,3.577,0.0673,7.822 +DH014,114.0,116.0,4.736,0.6042,12.186 +DH014,116.0,118.0,0.292,0.1635,0.741 +DH014,118.0,120.0,2.737,0.2255,7.838 +DH014,120.0,122.0,7.638,0.0924,18.201 +DH014,122.0,124.0,0.651,0.1673,1.67 +DH014,124.0,126.0,2.1,0.1955,3.883 +DH014,126.0,128.0,6.35,0.2128,18.474 +DH014,128.0,130.0,1.761,0.2189,3.733 +DH014,130.0,132.0,2.207,0.3945,4.715 +DH014,132.0,134.0,4.146,0.1165,9.012 +DH014,134.0,136.0,1.11,0.441,1.679 +DH014,136.0,138.0,13.807,0.0886,41.193 +DH014,138.0,140.0,1.062,0.0737,1.716 +DH014,140.0,142.0,4.692,0.2224,12.8 +DH014,142.0,144.0,1.399,0.1384,3.069 +DH014,144.0,146.0,0.921,0.0775,1.471 +DH014,146.0,148.0,1.718,1.14,2.692 +DH014,148.0,150.0,6.142,0.5303,14.087 +DH014,150.0,152.0,0.913,0.4038,1.641 +DH014,152.0,154.0,0.41,0.0905,1.06 +DH014,154.0,156.0,4.547,0.181,8.594 +DH014,156.0,158.0,0.292,0.0927,0.703 +DH014,158.0,160.0,0.993,0.2452,2.9 +DH014,160.0,161.0,33.904,0.2196,98.544 +DH015,0.0,2.0,0.05,0.0079,0.045 +DH015,2.0,4.0,0.031,0.0185,0.034 +DH015,4.0,6.0,0.025,0.0436,0.037 +DH015,6.0,8.0,0.031,0.0287,0.037 +DH015,8.0,10.0,0.158,0.0127,0.182 +DH015,10.0,12.0,0.101,0.0246,0.134 +DH015,12.0,14.0,0.078,0.0239,0.082 +DH015,14.0,16.0,0.093,0.0171,0.076 +DH015,16.0,18.0,0.118,0.0187,0.092 +DH015,18.0,20.0,0.177,0.009,0.191 +DH015,20.0,22.0,0.081,0.0215,0.107 +DH015,22.0,24.0,0.03,0.0171,0.031 +DH015,24.0,26.0,0.123,0.0166,0.138 +DH015,26.0,28.0,0.033,0.0511,0.023 +DH015,28.0,30.0,0.193,0.0115,0.172 +DH015,30.0,32.0,0.119,0.0122,0.086 +DH015,32.0,34.0,0.086,0.0231,0.102 +DH015,34.0,36.0,0.122,0.0403,0.109 +DH015,36.0,38.0,0.232,0.0135,0.253 +DH015,38.0,40.0,0.11,0.0107,0.153 +DH015,40.0,42.0,0.082,0.012,0.086 +DH015,42.0,44.0,0.09,0.0177,0.112 +DH015,44.0,46.0,0.078,0.0152,0.07 +DH015,46.0,48.0,0.056,0.0691,0.063 +DH015,48.0,50.0,0.058,0.0142,0.078 +DH015,50.0,52.0,0.037,0.0227,0.052 +DH015,52.0,54.0,0.1,0.034,0.095 +DH015,54.0,56.0,0.063,0.0202,0.093 +DH015,56.0,58.0,0.087,0.0123,0.07 +DH015,58.0,60.0,0.03,0.0224,0.025 +DH015,60.0,62.0,0.09,0.0099,0.083 +DH015,62.0,64.0,0.164,0.0246,0.182 +DH015,64.0,66.0,0.209,0.0124,0.283 +DH015,66.0,68.0,0.034,0.0266,0.045 +DH015,68.0,70.0,0.047,0.0249,0.039 +DH015,70.0,72.0,0.142,0.0204,0.091 +DH015,72.0,74.0,0.113,0.0213,0.163 +DH015,74.0,76.0,0.093,0.0279,0.066 +DH015,76.0,78.0,0.076,0.0092,0.106 +DH015,78.0,80.0,0.22,0.0145,0.224 +DH015,80.0,82.0,5.517,0.0427,8.764 +DH015,82.0,84.0,3.447,0.022,7.055 +DH015,84.0,86.0,8.34,0.4978,14.445 +DH015,86.0,88.0,6.415,0.265,10.126 +DH015,88.0,90.0,1.524,0.2448,3.956 +DH015,90.0,92.0,10.137,0.7537,18.254 +DH015,92.0,94.0,1.364,0.104,2.796 +DH015,94.0,96.0,4.275,0.2902,12.437 +DH015,96.0,98.0,3.709,0.0936,10.761 +DH015,98.0,100.0,11.643,0.8227,23.564 +DH015,100.0,102.0,0.424,0.2613,1.255 +DH015,102.0,104.0,0.785,0.2128,1.614 +DH015,104.0,106.0,4.667,1.6228,13.481 +DH015,106.0,108.0,0.679,0.5941,1.622 +DH015,108.0,110.0,1.757,0.2117,2.915 +DH015,110.0,112.0,4.651,0.3216,13.36 +DH015,112.0,114.0,9.564,5.5882,20.933 +DH015,114.0,116.0,2.508,0.079,5.324 +DH015,116.0,118.0,1.722,0.1455,2.589 +DH015,118.0,120.0,18.796,0.6052,39.276 +DH015,120.0,122.0,0.522,0.6504,1.372 +DH015,122.0,124.0,0.28,0.3945,0.701 +DH015,124.0,126.0,0.121,0.1154,0.344 +DH015,126.0,128.0,5.373,0.1477,10.545 +DH015,128.0,130.0,5.326,0.1534,15.329 +DH015,130.0,132.0,0.586,0.0756,1.257 +DH015,132.0,134.0,3.013,0.4667,4.806 +DH015,134.0,136.0,0.857,0.6627,1.561 +DH015,136.0,138.0,9.992,0.6417,26.998 +DH015,138.0,140.0,0.975,0.1161,2.398 +DH015,140.0,142.0,0.47,0.1034,0.856 +DH015,142.0,144.0,4.851,0.0964,8.074 +DH015,144.0,146.0,3.839,0.7467,6.701 +DH015,146.0,148.0,7.927,0.3268,16.11 +DH015,148.0,150.0,0.475,0.2024,1.159 +DH015,150.0,152.0,1.661,0.3183,2.618 +DH015,152.0,154.0,3.563,0.1937,9.662 +DH015,154.0,156.0,8.303,0.2952,22.37 +DH015,156.0,158.0,1.764,0.0553,5.016 +DH015,158.0,160.0,4.09,0.1904,11.663 +DH015,160.0,162.0,14.902,0.0885,34.73 +DH015,162.0,164.0,30.693,0.5282,80.89 +DH015,164.0,166.0,0.571,0.075,1.217 +DH015,166.0,168.0,0.976,0.1255,2.057 +DH015,168.0,170.0,1.969,0.329,5.088 +DH015,170.0,172.0,0.981,0.1964,2.095 +DH015,172.0,174.0,20.16,0.2687,33.516 +DH015,174.0,176.0,3.676,0.3453,7.642 +DH015,176.0,178.0,0.519,0.9107,1.113 +DH015,178.0,180.0,4.918,0.2619,10.586 +DH015,180.0,182.0,17.257,0.3497,27.461 +DH015,182.0,184.0,8.391,0.1347,22.112 +DH015,184.0,186.0,0.472,0.0976,1.064 +DH015,186.0,188.0,3.462,0.0572,9.524 +DH015,188.0,190.0,0.833,0.6211,1.485 +DH015,190.0,192.0,0.578,0.2371,1.457 +DH015,192.0,194.0,10.204,0.2232,25.054 +DH015,194.0,196.0,4.527,0.0999,12.412 +DH015,196.0,198.0,3.633,0.0926,7.269 +DH015,198.0,200.0,6.075,0.3396,16.792 +DH015,200.0,202.0,1.059,0.1083,2.132 +DH015,202.0,204.0,6.601,0.1593,12.218 +DH015,204.0,206.0,0.437,0.1303,0.661 +DH015,206.0,208.0,3.829,0.2064,9.45 +DH015,208.0,210.0,2.445,0.1958,5.209 +DH015,210.0,212.0,1.334,0.2686,2.346 +DH015,212.0,214.0,2.824,0.0869,5.597 +DH015,214.0,216.0,3.592,0.7242,5.507 +DH015,216.0,218.0,1.358,0.267,2.262 +DH015,218.0,220.0,0.717,0.0899,1.174 +DH015,220.0,222.0,2.784,0.1306,5.002 +DH015,222.0,224.0,1.182,0.6372,3.357 +DH015,224.0,226.0,2.682,0.3531,7.72 +DH015,226.0,228.0,2.808,0.2779,7.765 +DH015,228.0,230.0,3.014,0.2151,6.283 +DH015,230.0,232.0,2.323,0.2745,4.741 +DH015,232.0,234.0,0.54,0.1697,1.148 +DH015,234.0,236.0,3.963,0.3222,7.323 +DH015,236.0,238.0,4.65,0.5514,8.931 +DH015,238.0,240.0,0.676,0.1735,1.191 +DH015,240.0,242.0,3.626,0.3081,9.647 +DH015,242.0,244.0,1.421,0.1932,2.267 +DH015,244.0,246.0,6.104,0.0998,11.051 +DH015,246.0,248.0,1.019,0.3247,2.886 +DH015,248.0,250.0,14.57,0.1597,25.341 +DH015,250.0,252.0,0.118,0.0118,0.06 +DH015,252.0,254.0,0.07,0.0142,0.046 +DH015,254.0,256.0,0.16,0.0136,0.125 +DH015,256.0,258.0,0.099,0.0091,0.143 +DH015,258.0,260.0,0.035,0.0251,0.036 +DH015,260.0,262.0,0.082,0.0096,0.074 +DH015,262.0,264.0,0.143,0.0122,0.095 +DH015,264.0,266.0,0.108,0.0233,0.12 +DH015,266.0,268.0,0.275,0.0239,0.252 +DH015,268.0,270.0,0.075,0.0072,0.099 +DH015,270.0,272.0,0.058,0.024,0.067 +DH015,272.0,274.0,0.095,0.0124,0.136 +DH015,274.0,276.0,0.04,0.0563,0.025 +DH015,276.0,278.0,0.219,0.0347,0.166 +DH015,278.0,280.0,0.165,0.0175,0.135 +DH015,280.0,282.0,0.202,0.0322,0.203 +DH015,282.0,284.0,0.039,0.0137,0.049 +DH015,284.0,286.0,0.145,0.0082,0.166 +DH015,286.0,288.0,0.049,0.009,0.064 +DH015,288.0,290.0,0.067,0.0279,0.083 +DH015,290.0,292.0,0.052,0.0056,0.039 +DH015,292.0,294.0,0.241,0.0519,0.221 +DH015,294.0,296.0,0.05,0.0158,0.048 +DH015,296.0,298.0,0.06,0.0206,0.068 +DH015,298.0,300.0,0.058,0.0141,0.053 +DH015,300.0,302.0,0.046,0.023,0.024 +DH015,302.0,304.0,0.089,0.0366,0.058 +DH015,304.0,306.0,0.143,0.0075,0.147 +DH015,306.0,308.0,0.083,0.0479,0.072 +DH015,308.0,310.0,0.077,0.0379,0.076 +DH015,310.0,312.0,0.072,0.0216,0.039 +DH015,312.0,314.0,0.21,0.0229,0.121 +DH015,314.0,316.0,0.066,0.0126,0.076 +DH016,0.0,2.0,0.041,0.0233,0.042 +DH016,2.0,4.0,0.055,0.0235,0.082 +DH016,4.0,6.0,0.13,0.0144,0.094 +DH016,6.0,8.0,0.065,0.0251,0.042 +DH016,8.0,10.0,0.128,0.0194,0.073 +DH016,10.0,12.0,0.15,0.0175,0.161 +DH016,12.0,14.0,0.124,0.0124,0.152 +DH016,14.0,16.0,0.122,0.0157,0.085 +DH016,16.0,18.0,0.074,0.0306,0.041 +DH016,18.0,20.0,0.098,0.0152,0.089 +DH016,20.0,22.0,0.168,0.0178,0.171 +DH016,22.0,24.0,0.084,0.0195,0.051 +DH016,24.0,26.0,0.169,0.0191,0.151 +DH016,26.0,28.0,0.054,0.0168,0.042 +DH016,28.0,30.0,0.137,0.0266,0.112 +DH016,30.0,32.0,0.148,0.0175,0.175 +DH016,32.0,34.0,0.183,0.0381,0.21 +DH016,34.0,36.0,0.126,0.0269,0.186 +DH016,36.0,38.0,0.127,0.0094,0.09 +DH016,38.0,40.0,0.156,0.0142,0.166 +DH016,40.0,42.0,0.111,0.0159,0.087 +DH016,42.0,44.0,0.128,0.0138,0.074 +DH016,44.0,46.0,0.103,0.014,0.123 +DH016,46.0,48.0,0.037,0.0161,0.021 +DH016,48.0,50.0,0.118,0.0123,0.081 +DH016,50.0,52.0,0.083,0.0242,0.106 +DH016,52.0,54.0,0.06,0.0213,0.072 +DH016,54.0,56.0,0.093,0.0081,0.119 +DH016,56.0,58.0,0.28,0.0096,0.176 +DH016,58.0,60.0,0.072,0.0192,0.038 +DH016,60.0,62.0,0.163,0.0191,0.134 +DH016,62.0,64.0,0.076,0.0154,0.099 +DH016,64.0,66.0,0.028,0.021,0.024 +DH016,66.0,68.0,0.108,0.0258,0.084 +DH016,68.0,70.0,0.071,0.03,0.06 +DH016,70.0,72.0,0.2,0.0274,0.126 +DH016,72.0,74.0,0.093,0.0126,0.079 +DH016,74.0,76.0,0.042,0.0188,0.054 +DH016,76.0,78.0,0.034,0.018,0.018 +DH016,78.0,80.0,0.041,0.0152,0.042 +DH016,80.0,82.0,1.062,0.4683,2.378 +DH016,82.0,84.0,0.205,0.2237,0.464 +DH016,84.0,86.0,3.615,0.145,7.37 +DH016,86.0,88.0,2.206,0.1567,4.048 +DH016,88.0,90.0,1.508,0.2138,3.349 +DH016,90.0,92.0,1.762,0.3482,4.063 +DH016,92.0,94.0,5.353,0.2813,13.165 +DH016,94.0,96.0,2.51,0.1407,4.406 +DH016,96.0,98.0,25.39,0.5877,53.377 +DH016,98.0,100.0,6.215,0.1113,16.583 +DH016,100.0,102.0,6.941,0.7333,14.721 +DH016,102.0,104.0,1.246,1.2777,2.125 +DH016,104.0,106.0,19.847,0.2633,34.714 +DH016,106.0,108.0,1.543,0.4743,3.692 +DH016,108.0,110.0,0.643,0.1683,1.606 +DH016,110.0,112.0,1.905,0.1504,5.138 +DH016,112.0,114.0,8.366,0.1557,13.541 +DH016,114.0,116.0,0.522,0.109,1.315 +DH016,116.0,118.0,2.311,0.103,4.089 +DH016,118.0,120.0,0.62,0.3211,1.736 +DH016,120.0,122.0,0.661,0.0503,1.147 +DH016,122.0,124.0,0.256,0.2289,0.663 +DH016,124.0,126.0,16.579,0.0526,41.263 +DH016,126.0,128.0,0.679,0.0859,1.921 +DH016,128.0,130.0,9.718,0.3605,25.426 +DH016,130.0,132.0,5.186,0.0371,11.494 +DH016,132.0,134.0,0.828,0.2376,1.75 +DH016,134.0,136.0,1.878,0.194,3.177 +DH016,136.0,138.0,4.255,0.2514,9.892 +DH016,138.0,140.0,3.604,0.4321,10.323 +DH016,140.0,142.0,2.072,0.5653,6.193 +DH016,142.0,144.0,19.407,0.0764,56.732 +DH016,144.0,146.0,0.712,1.2845,1.913 +DH016,146.0,148.0,1.22,0.1659,2.533 +DH016,148.0,150.0,1.501,0.2006,3.912 +DH016,150.0,152.0,2.384,0.2263,6.154 +DH016,152.0,154.0,10.707,0.192,31.323 +DH016,154.0,156.0,0.593,0.4122,0.97 +DH016,156.0,158.0,0.537,0.1923,0.871 +DH016,158.0,160.0,2.765,0.7387,4.871 +DH016,160.0,162.0,7.826,0.1324,13.351 +DH016,162.0,164.0,2.886,0.3788,7.702 +DH016,164.0,166.0,0.917,0.4512,2.188 +DH016,166.0,168.0,1.105,0.0514,2.305 +DH016,168.0,170.0,1.496,0.2009,3.584 +DH016,170.0,172.0,1.287,0.1799,3.633 +DH016,172.0,174.0,12.984,0.2286,23.505 +DH016,174.0,176.0,0.53,0.2494,1.473 +DH016,176.0,178.0,0.341,0.371,0.754 +DH016,178.0,180.0,1.431,0.2822,3.012 +DH016,180.0,182.0,4.586,0.362,12.895 +DH016,182.0,184.0,1.987,0.1841,3.048 +DH016,184.0,186.0,1.36,0.2297,3.448 +DH016,186.0,188.0,2.453,0.7455,7.127 +DH016,188.0,190.0,1.93,0.1904,4.343 +DH016,190.0,192.0,4.84,0.1718,11.605 +DH016,192.0,194.0,2.902,0.2522,7.765 +DH016,194.0,196.0,11.894,0.2185,22.207 +DH016,196.0,198.0,2.942,0.0782,5.466 +DH016,198.0,200.0,1.423,0.3583,2.508 +DH016,200.0,202.0,1.556,0.1962,4.165 +DH016,202.0,204.0,5.893,0.3727,10.951 +DH016,204.0,206.0,1.496,0.5839,3.238 +DH016,206.0,208.0,0.421,0.0845,0.947 +DH016,208.0,210.0,9.42,0.1378,20.225 +DH016,210.0,212.0,1.717,0.3528,3.141 +DH016,212.0,214.0,1.173,0.0761,2.482 +DH016,214.0,216.0,9.143,0.24,18.438 +DH016,216.0,218.0,9.81,0.1397,25.732 +DH016,218.0,220.0,11.993,0.2334,24.297 +DH016,220.0,222.0,34.723,0.3042,59.447 +DH016,222.0,224.0,7.01,0.3913,20.594 +DH016,224.0,226.0,1.005,0.2879,2.167 +DH016,226.0,228.0,4.951,0.2191,7.939 +DH016,228.0,230.0,1.867,0.1825,4.748 +DH016,230.0,232.0,5.746,0.7347,12.486 +DH016,232.0,234.0,4.324,0.3153,9.737 +DH016,234.0,236.0,0.356,0.0788,0.788 +DH016,236.0,238.0,0.171,0.6883,0.423 +DH016,238.0,240.0,2.147,0.0387,4.005 +DH016,240.0,242.0,2.219,1.0794,5.184 +DH016,242.0,244.0,6.275,0.152,14.17 +DH016,244.0,246.0,9.56,0.1692,22.003 +DH016,246.0,248.0,12.203,0.2314,33.45 +DH016,248.0,250.0,0.978,0.6875,1.582 +DH016,250.0,252.0,0.107,0.0196,0.13 +DH016,252.0,254.0,0.082,0.0147,0.088 +DH016,254.0,256.0,0.073,0.0087,0.08 +DH016,256.0,258.0,0.029,0.0249,0.043 +DH016,258.0,260.0,0.098,0.0196,0.136 +DH016,260.0,261.0,0.107,0.0198,0.092 +DH017,0.0,2.0,0.068,0.0227,0.09 +DH017,2.0,4.0,0.226,0.0093,0.258 +DH017,4.0,6.0,0.032,0.0392,0.032 +DH017,6.0,8.0,0.101,0.0199,0.122 +DH017,8.0,10.0,0.17,0.0327,0.203 +DH017,10.0,12.0,0.067,0.0269,0.079 +DH017,12.0,14.0,0.073,0.0154,0.108 +DH017,14.0,16.0,0.223,0.0126,0.199 +DH017,16.0,18.0,0.101,0.0234,0.081 +DH017,18.0,20.0,0.254,0.0226,0.25 +DH017,20.0,22.0,0.236,0.0146,0.297 +DH017,22.0,24.0,0.039,0.0168,0.022 +DH017,24.0,26.0,0.129,0.0226,0.115 +DH017,26.0,28.0,0.077,0.0268,0.061 +DH017,28.0,30.0,0.093,0.026,0.08 +DH017,30.0,32.0,0.124,0.0079,0.079 +DH017,32.0,34.0,0.041,0.0375,0.033 +DH017,34.0,36.0,0.03,0.0196,0.028 +DH017,36.0,38.0,0.033,0.0238,0.02 +DH017,38.0,40.0,0.044,0.0137,0.057 +DH017,40.0,42.0,0.179,0.0318,0.203 +DH017,42.0,44.0,0.019,0.0223,0.026 +DH017,44.0,46.0,0.172,0.0231,0.168 +DH017,46.0,48.0,0.06,0.0482,0.066 +DH017,48.0,50.0,0.041,0.0293,0.048 +DH017,50.0,52.0,0.04,0.0393,0.033 +DH017,52.0,54.0,0.065,0.0103,0.081 +DH017,54.0,56.0,0.081,0.0368,0.096 +DH017,56.0,58.0,0.06,0.0142,0.058 +DH017,58.0,60.0,0.197,0.0072,0.14 +DH017,60.0,62.0,0.076,0.0109,0.058 +DH017,62.0,64.0,0.037,0.0145,0.034 +DH017,64.0,66.0,0.061,0.0177,0.044 +DH017,66.0,68.0,0.211,0.0234,0.203 +DH017,68.0,70.0,0.075,0.0139,0.11 +DH017,70.0,72.0,0.058,0.0168,0.057 +DH017,72.0,74.0,0.039,0.0261,0.048 +DH017,74.0,76.0,0.176,0.0286,0.231 +DH017,76.0,78.0,0.077,0.0119,0.066 +DH017,78.0,80.0,0.033,0.009,0.031 +DH017,80.0,82.0,15.642,0.2597,36.783 +DH017,82.0,84.0,0.203,0.1496,0.49 +DH017,84.0,86.0,5.677,0.0647,11.486 +DH017,86.0,88.0,4.124,0.5218,7.777 +DH017,88.0,90.0,4.411,0.3431,10.916 +DH017,90.0,92.0,0.598,0.3506,1.274 +DH017,92.0,94.0,6.507,0.2864,16.548 +DH017,94.0,96.0,5.096,0.2229,10.056 +DH017,96.0,98.0,1.563,0.1285,4.557 +DH017,98.0,100.0,0.406,0.1008,0.639 +DH017,100.0,102.0,15.433,0.5186,33.602 +DH017,102.0,104.0,11.264,0.6567,22.735 +DH017,104.0,106.0,0.108,0.2106,0.319 +DH017,106.0,108.0,15.022,0.1112,32.933 +DH017,108.0,110.0,0.154,0.1662,0.324 +DH017,110.0,112.0,8.871,0.6304,22.337 +DH017,112.0,114.0,0.44,0.4449,0.922 +DH017,114.0,116.0,0.3,0.0427,0.586 +DH017,116.0,118.0,1.793,0.0798,2.756 +DH017,118.0,120.0,3.445,0.2088,10.322 +DH017,120.0,122.0,21.385,0.4983,56.885 +DH017,122.0,124.0,1.562,0.2975,2.577 +DH017,124.0,126.0,3.278,0.077,8.622 +DH017,126.0,128.0,0.548,0.0912,1.321 +DH017,128.0,130.0,2.389,0.2634,5.248 +DH017,130.0,132.0,1.087,0.3227,2.052 +DH017,132.0,134.0,0.168,0.2633,0.394 +DH017,134.0,136.0,10.387,0.1321,23.355 +DH017,136.0,138.0,0.673,0.0928,1.461 +DH017,138.0,140.0,0.085,0.1559,0.236 +DH017,140.0,142.0,2.245,0.4571,4.194 +DH017,142.0,144.0,0.326,0.7045,0.674 +DH017,144.0,146.0,2.519,0.0912,3.803 +DH017,146.0,148.0,0.563,0.5767,1.682 +DH017,148.0,150.0,3.978,0.1343,11.8 +DH017,150.0,152.0,0.295,0.7741,0.746 +DH017,152.0,154.0,1.426,0.3769,4.273 +DH017,154.0,156.0,1.752,0.1614,3.653 +DH017,156.0,158.0,1.048,0.141,2.511 +DH017,158.0,160.0,2.78,1.2279,5.442 +DH017,160.0,162.0,8.858,0.0947,23.755 +DH017,162.0,164.0,0.935,0.3062,2.094 +DH017,164.0,166.0,2.363,1.5309,5.649 +DH017,166.0,168.0,9.14,0.4112,22.267 +DH017,168.0,170.0,0.397,0.6678,0.799 +DH017,170.0,172.0,1.131,0.3496,3.096 +DH017,172.0,174.0,0.558,0.1481,1.589 +DH017,174.0,176.0,1.78,0.4419,5.298 +DH017,176.0,178.0,3.681,0.1239,10.216 +DH017,178.0,180.0,1.506,0.1052,3.321 +DH017,180.0,182.0,3.828,0.154,10.753 +DH017,182.0,184.0,0.921,0.2028,2.654 +DH017,184.0,186.0,6.491,0.6201,10.175 +DH017,186.0,188.0,7.855,0.1311,15.476 +DH017,188.0,190.0,6.591,0.7485,19.692 +DH017,190.0,192.0,0.749,0.4311,1.672 +DH017,192.0,194.0,4.016,0.5209,9.402 +DH017,194.0,196.0,1.328,0.0945,2.8 +DH017,196.0,198.0,1.232,0.1292,2.001 +DH017,198.0,200.0,1.608,0.1779,2.656 +DH017,200.0,202.0,1.387,0.2939,2.277 +DH017,202.0,204.0,1.097,0.0571,2.048 +DH017,204.0,206.0,0.523,0.2585,1.149 +DH017,206.0,208.0,0.261,0.1438,0.525 +DH017,208.0,210.0,1.621,0.5276,3.793 +DH017,210.0,212.0,2.102,0.7148,3.695 +DH017,212.0,214.0,0.894,0.2534,1.793 +DH017,214.0,216.0,3.686,0.337,9.623 +DH017,216.0,218.0,2.746,0.2031,6.913 +DH017,218.0,220.0,6.035,0.3269,13.765 +DH017,220.0,222.0,6.821,0.111,16.382 +DH017,222.0,224.0,0.048,0.211,0.116 +DH017,224.0,226.0,3.587,0.0461,7.644 +DH017,226.0,228.0,3.913,0.0979,7.701 +DH017,228.0,230.0,1.141,0.2173,3.141 +DH017,230.0,232.0,6.982,0.2403,16.517 +DH017,232.0,234.0,1.284,0.3714,3.272 +DH017,234.0,236.0,1.797,0.1639,4.063 +DH017,236.0,238.0,0.663,0.0507,1.677 +DH017,238.0,240.0,7.078,0.0532,17.504 +DH017,240.0,242.0,8.165,0.3594,15.668 +DH017,242.0,244.0,0.717,0.2381,1.628 +DH017,244.0,246.0,2.497,0.1932,6.375 +DH017,246.0,248.0,3.696,0.3252,9.817 +DH017,248.0,250.0,2.543,0.855,6.473 +DH017,250.0,252.0,0.177,0.0127,0.127 +DH017,252.0,254.0,0.172,0.0158,0.144 +DH017,254.0,256.0,0.109,0.0118,0.1 +DH017,256.0,258.0,0.162,0.0291,0.158 +DH017,258.0,260.0,0.076,0.0203,0.099 +DH017,260.0,262.0,0.338,0.0206,0.382 +DH017,262.0,264.0,0.168,0.0153,0.119 +DH017,264.0,266.0,0.03,0.0146,0.032 +DH017,266.0,268.0,0.211,0.0124,0.246 +DH017,268.0,270.0,0.115,0.0134,0.118 +DH017,270.0,272.0,0.139,0.014,0.154 +DH017,272.0,274.0,0.038,0.0184,0.045 +DH017,274.0,276.0,0.069,0.0091,0.059 +DH017,276.0,278.0,0.301,0.0108,0.271 +DH017,278.0,280.0,0.046,0.0157,0.068 +DH017,280.0,282.0,0.062,0.0159,0.066 +DH017,282.0,284.0,0.163,0.0036,0.209 +DH017,284.0,286.0,0.08,0.0132,0.095 +DH017,286.0,288.0,0.169,0.009,0.119 +DH017,288.0,290.0,0.035,0.0349,0.044 +DH017,290.0,292.0,0.061,0.0149,0.076 +DH017,292.0,294.0,0.093,0.0116,0.099 +DH017,294.0,296.0,0.052,0.01,0.041 +DH017,296.0,298.0,0.041,0.0148,0.043 +DH017,298.0,300.0,0.088,0.0492,0.075 +DH017,300.0,302.0,0.109,0.0184,0.142 +DH017,302.0,304.0,0.126,0.0169,0.08 +DH017,304.0,306.0,0.053,0.0249,0.057 +DH017,306.0,308.0,0.131,0.0181,0.069 +DH017,308.0,310.0,0.071,0.0169,0.105 +DH017,310.0,312.0,0.571,0.0337,0.64 +DH017,312.0,314.0,0.12,0.0256,0.14 +DH017,314.0,316.0,0.039,0.0177,0.022 +DH017,316.0,318.0,0.031,0.0128,0.033 +DH017,318.0,320.0,0.084,0.0372,0.103 +DH017,320.0,322.0,0.337,0.0085,0.505 +DH017,322.0,324.0,0.079,0.0104,0.06 +DH017,324.0,326.0,0.079,0.0166,0.114 +DH017,326.0,328.0,0.106,0.0156,0.154 +DH017,328.0,330.0,0.074,0.0113,0.043 +DH017,330.0,332.0,0.074,0.0097,0.045 +DH017,332.0,334.0,0.113,0.0075,0.134 +DH017,334.0,336.0,0.09,0.0179,0.064 +DH017,336.0,338.0,0.13,0.0183,0.139 +DH017,338.0,340.0,0.093,0.0079,0.053 +DH017,340.0,342.0,0.042,0.0218,0.031 +DH017,342.0,344.0,0.154,0.0116,0.221 +DH017,344.0,346.0,0.077,0.0114,0.062 +DH017,346.0,348.0,0.079,0.0134,0.089 +DH017,348.0,350.0,0.076,0.017,0.044 +DH017,350.0,352.0,0.038,0.019,0.022 +DH017,352.0,354.0,0.045,0.0162,0.046 +DH017,354.0,356.0,0.092,0.014,0.091 +DH017,356.0,358.0,0.12,0.0055,0.163 +DH017,358.0,360.0,0.027,0.009,0.016 +DH017,360.0,362.0,0.302,0.0424,0.284 +DH017,362.0,364.0,0.102,0.0072,0.079 +DH017,364.0,366.0,0.059,0.0122,0.061 +DH017,366.0,368.0,0.062,0.0283,0.038 +DH017,368.0,370.0,0.086,0.0118,0.055 +DH017,370.0,372.0,0.099,0.0105,0.112 +DH017,372.0,374.0,0.072,0.0132,0.085 +DH017,374.0,376.0,0.075,0.0125,0.084 +DH017,376.0,378.0,0.069,0.0135,0.052 +DH017,378.0,380.0,0.105,0.0151,0.119 +DH017,380.0,382.0,0.044,0.0147,0.041 +DH017,382.0,384.0,0.039,0.0222,0.041 +DH017,384.0,386.0,0.066,0.0138,0.041 +DH017,386.0,388.0,0.055,0.0065,0.031 +DH017,388.0,390.0,0.129,0.0357,0.17 +DH017,390.0,392.0,0.177,0.0265,0.182 +DH017,392.0,394.0,0.07,0.02,0.086 +DH017,394.0,396.0,0.104,0.0131,0.118 +DH017,396.0,398.0,0.269,0.0208,0.228 +DH017,398.0,399.0,0.113,0.021,0.117 +DH018,0.0,2.0,0.141,0.0262,0.125 +DH018,2.0,4.0,0.054,0.0222,0.055 +DH018,4.0,6.0,0.068,0.0699,0.059 +DH018,6.0,8.0,0.146,0.0119,0.165 +DH018,8.0,10.0,0.383,0.0113,0.359 +DH018,10.0,12.0,0.081,0.012,0.099 +DH018,12.0,14.0,0.06,0.0254,0.086 +DH018,14.0,16.0,0.028,0.0163,0.033 +DH018,16.0,18.0,0.204,0.0085,0.296 +DH018,18.0,20.0,0.105,0.0137,0.155 +DH018,20.0,22.0,0.279,0.0111,0.32 +DH018,22.0,24.0,0.072,0.0261,0.058 +DH018,24.0,26.0,0.05,0.0156,0.07 +DH018,26.0,28.0,0.129,0.0102,0.128 +DH018,28.0,30.0,0.052,0.0182,0.036 +DH018,30.0,32.0,0.038,0.0118,0.049 +DH018,32.0,34.0,0.064,0.0112,0.059 +DH018,34.0,36.0,0.051,0.0117,0.046 +DH018,36.0,38.0,0.149,0.0204,0.114 +DH018,38.0,40.0,0.035,0.0103,0.043 +DH018,40.0,42.0,0.18,0.0239,0.246 +DH018,42.0,44.0,0.059,0.0121,0.084 +DH018,44.0,46.0,0.108,0.0159,0.066 +DH018,46.0,48.0,0.174,0.0353,0.157 +DH018,48.0,50.0,0.064,0.0247,0.034 +DH018,50.0,52.0,0.218,0.0224,0.14 +DH018,52.0,54.0,0.089,0.0437,0.121 +DH018,54.0,56.0,0.247,0.0167,0.234 +DH018,56.0,58.0,0.052,0.008,0.029 +DH018,58.0,60.0,0.044,0.0199,0.042 +DH018,60.0,62.0,0.055,0.016,0.04 +DH018,62.0,64.0,0.065,0.0663,0.096 +DH018,64.0,66.0,0.07,0.0135,0.044 +DH018,66.0,68.0,0.089,0.0149,0.114 +DH018,68.0,70.0,0.046,0.0113,0.042 +DH018,70.0,72.0,0.041,0.0264,0.02 +DH018,72.0,74.0,0.027,0.0193,0.016 +DH018,74.0,76.0,0.124,0.0162,0.153 +DH018,76.0,78.0,0.156,0.0108,0.136 +DH018,78.0,80.0,0.052,0.0099,0.039 +DH018,80.0,82.0,2.198,0.4708,6.396 +DH018,82.0,84.0,1.794,0.2174,5.364 +DH018,84.0,86.0,3.235,0.0958,7.714 +DH018,86.0,88.0,1.566,0.155,3.811 +DH018,88.0,90.0,4.765,0.2419,9.89 +DH018,90.0,92.0,1.372,0.1408,3.713 +DH018,92.0,94.0,3.88,0.3721,11.024 +DH018,94.0,96.0,6.95,0.2095,20.398 +DH018,96.0,98.0,2.824,0.0752,4.321 +DH018,98.0,100.0,0.35,0.0981,0.918 +DH018,100.0,102.0,1.709,0.194,3.191 +DH018,102.0,104.0,1.934,0.3734,5.038 +DH018,104.0,106.0,3.614,0.121,8.3 +DH018,106.0,108.0,2.227,0.1345,5.658 +DH018,108.0,110.0,7.259,0.5071,18.995 +DH018,110.0,112.0,0.834,0.1539,2.223 +DH018,112.0,114.0,8.773,1.9378,21.812 +DH018,114.0,116.0,1.351,0.3573,2.394 +DH018,116.0,118.0,1.879,0.1601,3.449 +DH018,118.0,120.0,2.58,0.1928,4.7 +DH018,120.0,122.0,2.24,0.0818,6.395 +DH018,122.0,124.0,0.181,0.0847,0.281 +DH018,124.0,126.0,1.654,0.4667,3.99 +DH018,126.0,128.0,1.664,0.1525,2.641 +DH018,128.0,130.0,4.989,0.373,12.031 +DH018,130.0,132.0,1.431,0.6493,2.628 +DH018,132.0,134.0,0.608,0.4075,0.964 +DH018,134.0,136.0,4.425,0.242,8.701 +DH018,136.0,138.0,2.072,0.2334,3.281 +DH018,138.0,140.0,1.005,0.1268,1.547 +DH018,140.0,142.0,2.149,0.1611,6.073 +DH018,142.0,144.0,15.082,0.1565,34.698 +DH018,144.0,146.0,0.287,0.2157,0.45 +DH018,146.0,148.0,6.07,0.2433,16.337 +DH018,148.0,150.0,5.352,0.5435,13.734 +DH018,150.0,152.0,14.643,0.1948,25.707 +DH018,152.0,154.0,4.936,0.4166,14.548 +DH018,154.0,156.0,10.356,1.058,18.401 +DH018,156.0,158.0,2.929,0.0737,6.823 +DH018,158.0,160.0,1.147,0.2643,2.371 +DH018,160.0,162.0,3.92,0.2064,9.985 +DH018,162.0,164.0,0.085,0.2598,0.141 +DH018,164.0,166.0,20.99,0.4007,50.774 +DH018,166.0,168.0,2.726,0.2236,4.715 +DH018,168.0,170.0,2.217,0.1193,6.405 +DH018,170.0,172.0,0.586,0.3405,0.879 +DH018,172.0,174.0,1.444,0.1418,3.945 +DH018,174.0,176.0,5.678,0.0903,11.563 +DH018,176.0,178.0,6.997,0.0743,12.334 +DH018,178.0,180.0,15.491,0.815,26.087 +DH018,180.0,182.0,2.994,0.4026,5.504 +DH018,182.0,184.0,33.191,0.0345,88.31 +DH018,184.0,186.0,6.161,0.1704,14.552 +DH018,186.0,188.0,2.123,0.2479,6.043 +DH018,188.0,190.0,1.189,0.144,2.952 +DH018,190.0,192.0,0.879,0.4783,2.532 +DH018,192.0,194.0,8.325,0.0904,21.386 +DH018,194.0,196.0,2.214,2.2683,5.675 +DH018,196.0,198.0,1.144,0.3134,2.263 +DH018,198.0,200.0,0.431,0.6674,1.056 +DH018,200.0,202.0,1.996,0.2274,3.973 +DH018,202.0,204.0,0.899,0.057,1.906 +DH018,204.0,206.0,0.192,0.1754,0.346 +DH018,206.0,208.0,4.459,0.5137,6.961 +DH018,208.0,210.0,40.141,0.1394,100.223 +DH018,210.0,212.0,1.316,0.4797,2.977 +DH018,212.0,214.0,17.507,0.1459,39.374 +DH018,214.0,216.0,4.535,0.2174,8.784 +DH018,216.0,218.0,3.045,0.2966,8.073 +DH018,218.0,220.0,0.959,0.1707,1.768 +DH018,220.0,222.0,6.113,0.0831,11.999 +DH018,222.0,224.0,4.844,0.4367,9.017 +DH018,224.0,226.0,1.993,0.3223,3.003 +DH018,226.0,228.0,11.166,0.1156,24.897 +DH018,228.0,230.0,5.885,0.1452,15.4 +DH018,230.0,232.0,1.84,0.5972,3.686 +DH018,232.0,234.0,36.715,0.1141,62.954 +DH018,234.0,236.0,0.515,0.2307,0.781 +DH018,236.0,238.0,0.373,2.1397,0.659 +DH018,238.0,240.0,1.23,0.4844,2.018 +DH018,240.0,242.0,8.6,0.0854,21.186 +DH018,242.0,244.0,0.233,0.459,0.643 +DH018,244.0,246.0,0.849,0.2226,1.631 +DH018,246.0,248.0,1.627,0.7522,3.901 +DH018,248.0,250.0,4.824,0.0834,13.257 +DH018,250.0,252.0,0.051,0.0437,0.042 +DH018,252.0,254.0,0.112,0.0307,0.097 +DH018,254.0,256.0,0.073,0.0318,0.069 +DH018,256.0,258.0,0.039,0.0158,0.034 +DH018,258.0,260.0,0.105,0.0071,0.127 +DH018,260.0,262.0,0.167,0.0144,0.134 +DH018,262.0,264.0,0.072,0.0207,0.107 +DH018,264.0,266.0,0.119,0.0081,0.146 +DH018,266.0,268.0,0.076,0.0165,0.05 +DH018,268.0,270.0,0.056,0.047,0.063 +DH018,270.0,272.0,0.094,0.0202,0.116 +DH018,272.0,274.0,0.116,0.0228,0.094 +DH018,274.0,276.0,0.027,0.0075,0.017 +DH018,276.0,278.0,0.073,0.0245,0.101 +DH018,278.0,280.0,0.116,0.0098,0.146 +DH018,280.0,282.0,0.037,0.0222,0.055 +DH018,282.0,284.0,0.14,0.0218,0.157 +DH018,284.0,286.0,0.065,0.0287,0.034 +DH018,286.0,288.0,0.031,0.0131,0.025 +DH018,288.0,290.0,0.03,0.0194,0.028 +DH018,290.0,292.0,0.107,0.0248,0.054 +DH018,292.0,294.0,0.07,0.0107,0.064 +DH018,294.0,296.0,0.037,0.012,0.019 +DH018,296.0,298.0,0.076,0.0848,0.113 +DH018,298.0,300.0,0.076,0.009,0.1 +DH018,300.0,302.0,0.067,0.0279,0.095 +DH018,302.0,304.0,0.073,0.0148,0.053 +DH018,304.0,306.0,0.056,0.0151,0.078 +DH018,306.0,308.0,0.115,0.0163,0.077 +DH018,308.0,310.0,0.029,0.024,0.02 +DH018,310.0,312.0,0.129,0.0354,0.13 +DH018,312.0,314.0,0.044,0.0182,0.065 +DH018,314.0,316.0,0.068,0.0138,0.081 +DH018,316.0,318.0,0.111,0.0154,0.11 +DH018,318.0,320.0,0.108,0.0125,0.07 +DH018,320.0,322.0,0.09,0.0071,0.104 +DH018,322.0,324.0,0.112,0.0252,0.071 +DH018,324.0,326.0,0.025,0.0347,0.032 +DH018,326.0,328.0,0.04,0.0124,0.046 +DH018,328.0,330.0,0.123,0.0144,0.179 +DH018,330.0,332.0,0.028,0.0109,0.024 +DH018,332.0,334.0,0.048,0.0389,0.065 +DH018,334.0,336.0,0.094,0.0133,0.136 +DH018,336.0,338.0,0.109,0.0084,0.089 +DH018,338.0,340.0,0.194,0.0109,0.115 +DH018,340.0,342.0,0.083,0.0211,0.066 +DH018,342.0,344.0,0.086,0.0248,0.054 +DH018,344.0,346.0,0.076,0.0179,0.046 +DH018,346.0,348.0,0.059,0.0094,0.062 +DH018,348.0,350.0,0.157,0.0219,0.185 +DH018,350.0,352.0,0.432,0.0089,0.219 +DH018,352.0,354.0,0.172,0.0099,0.11 +DH018,354.0,356.0,0.065,0.0129,0.033 +DH018,356.0,358.0,0.107,0.0227,0.126 +DH018,358.0,360.0,0.031,0.0209,0.017 +DH018,360.0,362.0,0.247,0.047,0.208 +DH018,362.0,364.0,0.047,0.0243,0.038 +DH018,364.0,366.0,0.129,0.0153,0.137 +DH018,366.0,368.0,0.082,0.0195,0.05 +DH018,368.0,370.0,0.121,0.0161,0.16 +DH018,370.0,372.0,0.095,0.02,0.095 +DH018,372.0,374.0,0.132,0.0166,0.091 +DH018,374.0,376.0,0.115,0.0122,0.068 +DH018,376.0,378.0,0.044,0.0211,0.052 +DH018,378.0,380.0,0.023,0.0151,0.016 +DH018,380.0,382.0,0.063,0.0169,0.037 +DH018,382.0,384.0,0.132,0.0305,0.098 +DH018,384.0,386.0,0.232,0.0252,0.144 +DH018,386.0,388.0,0.051,0.0076,0.026 +DH018,388.0,390.0,0.07,0.0254,0.082 +DH018,390.0,392.0,0.078,0.0162,0.09 +DH019,0.0,2.0,0.07,0.0155,0.07 +DH019,2.0,4.0,0.175,0.0315,0.177 +DH019,4.0,6.0,0.023,0.017,0.02 +DH019,6.0,8.0,0.076,0.0131,0.038 +DH019,8.0,10.0,0.044,0.0097,0.047 +DH019,10.0,12.0,0.046,0.0183,0.026 +DH019,12.0,14.0,0.142,0.0273,0.173 +DH019,14.0,16.0,0.127,0.0364,0.157 +DH019,16.0,18.0,0.027,0.0141,0.016 +DH019,18.0,20.0,0.056,0.0412,0.058 +DH019,20.0,22.0,0.086,0.0321,0.067 +DH019,22.0,24.0,0.091,0.0287,0.078 +DH019,24.0,26.0,0.069,0.0277,0.035 +DH019,26.0,28.0,0.198,0.0083,0.161 +DH019,28.0,30.0,0.13,0.0282,0.116 +DH019,30.0,32.0,0.104,0.0266,0.135 +DH019,32.0,34.0,0.054,0.0201,0.044 +DH019,34.0,36.0,0.041,0.0166,0.057 +DH019,36.0,38.0,0.105,0.0182,0.149 +DH019,38.0,40.0,0.174,0.014,0.098 +DH019,40.0,42.0,0.032,0.0128,0.029 +DH019,42.0,44.0,0.099,0.0247,0.128 +DH019,44.0,46.0,0.287,0.0126,0.388 +DH019,46.0,48.0,0.044,0.0129,0.03 +DH019,48.0,50.0,0.087,0.0343,0.084 +DH019,50.0,52.0,0.111,0.0534,0.13 +DH019,52.0,54.0,0.031,0.031,0.045 +DH019,54.0,56.0,0.052,0.0238,0.073 +DH019,56.0,58.0,0.073,0.0101,0.046 +DH019,58.0,60.0,0.15,0.0185,0.202 +DH019,60.0,62.0,0.039,0.0122,0.045 +DH019,62.0,64.0,0.101,0.0123,0.15 +DH019,64.0,66.0,0.106,0.0117,0.111 +DH019,66.0,68.0,0.052,0.0112,0.053 +DH019,68.0,70.0,0.338,0.0266,0.214 +DH019,70.0,72.0,0.102,0.0076,0.109 +DH019,72.0,74.0,0.018,0.0435,0.025 +DH019,74.0,76.0,0.104,0.0196,0.153 +DH019,76.0,78.0,0.072,0.0449,0.074 +DH019,78.0,80.0,0.058,0.0076,0.042 +DH019,80.0,82.0,2.046,0.0547,3.662 +DH019,82.0,84.0,0.48,0.2008,1.0 +DH019,84.0,86.0,1.217,0.4155,1.839 +DH019,86.0,88.0,7.963,0.1677,19.16 +DH019,88.0,90.0,1.13,0.1083,2.911 +DH019,90.0,92.0,1.728,0.0564,2.639 +DH019,92.0,94.0,0.226,0.2539,0.624 +DH019,94.0,96.0,1.408,0.3619,2.872 +DH019,96.0,98.0,0.61,0.1978,1.366 +DH019,98.0,100.0,0.784,0.1259,1.73 +DH019,100.0,102.0,1.239,1.3491,3.084 +DH019,102.0,104.0,0.662,0.1664,1.185 +DH019,104.0,106.0,5.813,0.0601,10.629 +DH019,106.0,108.0,1.094,0.3853,2.459 +DH019,108.0,110.0,11.666,0.3409,17.841 +DH019,110.0,112.0,5.775,0.0893,14.951 +DH019,112.0,114.0,3.758,0.0998,7.075 +DH019,114.0,116.0,2.569,0.2721,6.481 +DH019,116.0,118.0,6.041,0.2608,16.464 +DH019,118.0,120.0,2.533,0.1385,6.213 +DH019,120.0,122.0,51.512,0.2581,92.2 +DH019,122.0,124.0,0.954,0.5046,2.257 +DH019,124.0,126.0,5.589,0.265,12.077 +DH019,126.0,128.0,10.237,0.2798,29.18 +DH019,128.0,130.0,6.511,0.1083,11.259 +DH019,130.0,132.0,2.088,0.0554,3.789 +DH019,132.0,134.0,0.701,0.153,1.332 +DH019,134.0,136.0,2.333,0.1695,3.954 +DH019,136.0,138.0,2.072,0.156,6.109 +DH019,138.0,140.0,8.148,0.0414,12.44 +DH019,140.0,142.0,1.268,0.3119,2.259 +DH019,142.0,144.0,1.222,0.2056,2.963 +DH019,144.0,146.0,3.316,0.0866,8.876 +DH019,146.0,148.0,6.445,0.0854,9.705 +DH019,148.0,150.0,2.201,0.1639,4.934 +DH019,150.0,152.0,1.356,0.3198,3.891 +DH019,152.0,154.0,4.193,0.4478,8.201 +DH019,154.0,156.0,2.084,0.109,5.061 +DH019,156.0,158.0,7.723,0.1432,21.405 +DH019,158.0,160.0,18.512,0.1175,35.401 +DH019,160.0,162.0,15.944,0.1992,42.812 +DH019,162.0,164.0,0.51,0.0603,1.361 +DH019,164.0,166.0,3.44,0.2849,7.203 +DH019,166.0,168.0,2.28,0.0513,5.684 +DH019,168.0,170.0,2.701,1.0821,5.068 +DH019,170.0,172.0,0.718,0.2143,1.292 +DH019,172.0,174.0,3.75,0.228,6.951 +DH019,174.0,176.0,0.313,0.2754,0.86 +DH019,176.0,178.0,2.448,0.4277,5.449 +DH019,178.0,180.0,3.065,0.1163,8.718 +DH019,180.0,182.0,9.473,0.3409,25.518 +DH019,182.0,184.0,1.278,0.1898,3.133 +DH019,184.0,186.0,2.093,0.568,6.257 +DH019,186.0,188.0,2.309,0.2094,5.021 +DH019,188.0,190.0,4.983,0.125,14.206 +DH019,190.0,192.0,20.461,0.5006,52.054 +DH019,192.0,194.0,3.515,0.1956,7.201 +DH019,194.0,196.0,5.828,0.1225,14.131 +DH019,196.0,198.0,4.394,0.2134,10.438 +DH019,198.0,200.0,3.722,0.1799,9.95 +DH019,200.0,202.0,3.781,0.1372,6.595 +DH019,202.0,204.0,1.224,0.1578,2.152 +DH019,204.0,206.0,8.647,0.1783,20.681 +DH019,206.0,208.0,18.919,0.1236,49.647 +DH019,208.0,210.0,1.672,0.5146,4.755 +DH019,210.0,212.0,0.787,0.1393,1.951 +DH019,212.0,214.0,10.555,0.2536,26.847 +DH019,214.0,216.0,4.027,0.1742,10.372 +DH019,216.0,218.0,4.366,0.4301,11.068 +DH019,218.0,220.0,1.626,0.2567,4.773 +DH019,220.0,222.0,1.404,0.09,2.443 +DH019,222.0,224.0,1.667,0.379,4.607 +DH019,224.0,226.0,0.437,0.1384,1.021 +DH019,226.0,228.0,5.776,0.1462,10.521 +DH019,228.0,230.0,0.409,0.3285,1.085 +DH019,230.0,232.0,1.015,0.1813,1.634 +DH019,232.0,234.0,0.666,0.1138,1.336 +DH019,234.0,236.0,2.437,0.3813,4.358 +DH019,236.0,238.0,2.133,0.1689,3.758 +DH019,238.0,240.0,8.978,0.5312,26.052 +DH019,240.0,242.0,10.654,0.1676,22.745 +DH019,242.0,244.0,1.816,0.4338,4.57 +DH019,244.0,245.0,1.638,0.4361,3.1 +DH020,0.0,2.0,0.058,0.0129,0.053 +DH020,2.0,4.0,0.078,0.0092,0.073 +DH020,4.0,6.0,0.062,0.0406,0.091 +DH020,6.0,8.0,0.074,0.0129,0.041 +DH020,8.0,10.0,0.061,0.0444,0.057 +DH020,10.0,12.0,0.051,0.0073,0.037 +DH020,12.0,14.0,0.059,0.0133,0.083 +DH020,14.0,16.0,0.021,0.0175,0.029 +DH020,16.0,18.0,0.064,0.0306,0.04 +DH020,18.0,20.0,0.026,0.0123,0.038 +DH020,20.0,22.0,0.09,0.01,0.062 +DH020,22.0,24.0,0.084,0.0172,0.091 +DH020,24.0,26.0,0.081,0.0224,0.096 +DH020,26.0,28.0,0.036,0.0135,0.036 +DH020,28.0,30.0,0.12,0.021,0.129 +DH020,30.0,32.0,0.142,0.0093,0.105 +DH020,32.0,34.0,0.059,0.0487,0.065 +DH020,34.0,36.0,0.063,0.0131,0.093 +DH020,36.0,38.0,0.086,0.0199,0.049 +DH020,38.0,40.0,0.142,0.0166,0.149 +DH020,40.0,42.0,0.054,0.024,0.072 +DH020,42.0,44.0,0.108,0.0221,0.123 +DH020,44.0,46.0,0.132,0.0084,0.174 +DH020,46.0,48.0,0.07,0.0089,0.086 +DH020,48.0,50.0,0.066,0.0353,0.042 +DH020,50.0,52.0,0.152,0.0213,0.182 +DH020,52.0,54.0,0.089,0.0264,0.087 +DH020,54.0,56.0,0.076,0.008,0.113 +DH020,56.0,58.0,0.067,0.0057,0.076 +DH020,58.0,60.0,0.117,0.0133,0.08 +DH020,60.0,62.0,0.152,0.0105,0.197 +DH020,62.0,64.0,0.052,0.0194,0.075 +DH020,64.0,66.0,0.168,0.0309,0.21 +DH020,66.0,68.0,0.151,0.0131,0.151 +DH020,68.0,70.0,0.055,0.0122,0.074 +DH020,70.0,72.0,0.046,0.0145,0.061 +DH020,72.0,74.0,0.23,0.0077,0.341 +DH020,74.0,76.0,0.051,0.0269,0.065 +DH020,76.0,78.0,0.053,0.0262,0.059 +DH020,78.0,80.0,0.081,0.0122,0.103 +DH020,80.0,82.0,1.682,0.184,4.213 +DH020,82.0,84.0,6.753,0.2725,20.063 +DH020,84.0,86.0,11.063,0.3221,27.838 +DH020,86.0,88.0,7.755,0.3239,17.421 +DH020,88.0,90.0,3.229,0.3899,6.276 +DH020,90.0,92.0,1.976,0.1814,3.016 +DH020,92.0,94.0,4.16,0.5619,7.983 +DH020,94.0,96.0,1.277,0.1718,3.805 +DH020,96.0,98.0,16.337,0.1447,39.5 +DH020,98.0,100.0,3.101,0.2845,7.068 +DH020,100.0,102.0,0.865,0.1028,2.574 +DH020,102.0,104.0,2.552,0.5489,5.21 +DH020,104.0,106.0,1.359,0.3131,2.811 +DH020,106.0,108.0,0.555,0.1924,0.856 +DH020,108.0,110.0,1.223,0.1721,2.782 +DH020,110.0,112.0,28.046,0.0514,59.939 +DH020,112.0,114.0,1.642,0.1337,3.116 +DH020,114.0,116.0,4.957,0.3984,12.23 +DH020,116.0,118.0,8.259,0.6157,18.397 +DH020,118.0,120.0,1.156,0.3314,2.054 +DH020,120.0,122.0,0.836,0.0636,2.287 +DH020,122.0,124.0,2.42,0.2832,4.535 +DH020,124.0,126.0,7.809,0.252,21.039 +DH020,126.0,128.0,3.472,0.0951,7.41 +DH020,128.0,130.0,4.974,0.144,9.962 +DH020,130.0,132.0,2.51,0.1002,6.567 +DH020,132.0,134.0,1.365,0.8866,3.322 +DH020,134.0,136.0,2.616,0.7001,6.82 +DH020,136.0,138.0,1.839,0.1616,3.242 +DH020,138.0,140.0,2.985,0.0792,6.819 +DH020,140.0,142.0,4.134,0.1879,9.668 +DH020,142.0,144.0,7.662,0.4002,22.297 +DH020,144.0,146.0,0.471,0.1042,0.883 +DH020,146.0,148.0,0.453,0.3451,1.054 +DH020,148.0,150.0,5.744,0.1719,11.141 +DH020,150.0,152.0,6.703,0.1433,13.965 +DH020,152.0,154.0,0.346,0.1414,0.885 +DH020,154.0,156.0,0.942,0.4281,2.465 +DH020,156.0,158.0,1.137,0.1945,2.312 +DH020,158.0,160.0,0.547,0.3817,0.971 +DH020,160.0,162.0,0.936,0.1655,2.316 +DH020,162.0,164.0,0.376,0.155,0.909 +DH020,164.0,166.0,4.167,0.1968,6.514 +DH020,166.0,168.0,4.469,0.4139,8.913 +DH020,168.0,170.0,14.037,0.6396,36.035 +DH020,170.0,172.0,0.809,0.0986,2.155 +DH020,172.0,174.0,2.394,0.0542,6.483 +DH020,174.0,176.0,10.433,0.3539,26.708 +DH020,176.0,178.0,0.858,0.2836,1.939 +DH020,178.0,180.0,3.787,0.3611,9.127 +DH020,180.0,182.0,0.572,0.2664,1.092 +DH020,182.0,184.0,1.977,0.4455,4.967 +DH020,184.0,186.0,11.919,0.3136,31.509 +DH020,186.0,188.0,1.643,0.0557,3.81 +DH020,188.0,190.0,1.512,0.3344,2.386 +DH020,190.0,192.0,0.499,0.1066,1.09 +DH020,192.0,194.0,3.154,0.1402,5.967 +DH020,194.0,196.0,8.195,0.4712,15.152 +DH020,196.0,198.0,15.818,0.4833,42.221 +DH020,198.0,200.0,0.533,0.5185,1.514 +DH020,200.0,202.0,0.387,0.1853,1.074 +DH020,202.0,204.0,2.27,0.1232,4.398 +DH020,204.0,206.0,18.663,0.4396,40.979 +DH020,206.0,208.0,2.998,0.6085,5.842 +DH020,208.0,210.0,2.705,0.2807,4.48 +DH020,210.0,212.0,3.263,0.1353,6.867 +DH020,212.0,214.0,0.298,0.0348,0.476 +DH020,214.0,216.0,1.42,0.181,3.853 +DH020,216.0,218.0,11.899,0.3422,28.484 +DH020,218.0,220.0,4.068,0.2842,11.788 +DH020,220.0,222.0,0.476,0.4794,1.154 +DH020,222.0,224.0,1.101,0.2273,2.523 +DH020,224.0,226.0,1.294,0.9719,2.657 +DH020,226.0,228.0,0.977,0.1533,2.284 +DH020,228.0,230.0,5.186,0.1827,10.579 +DH020,230.0,232.0,2.512,0.317,6.499 +DH020,232.0,234.0,2.038,0.1656,3.435 +DH020,234.0,236.0,1.409,1.0931,2.911 +DH020,236.0,238.0,5.278,0.1449,15.273 +DH020,238.0,240.0,0.388,0.1542,1.127 +DH020,240.0,242.0,1.077,0.6068,2.938 +DH020,242.0,244.0,5.269,0.7511,10.935 +DH020,244.0,246.0,7.334,0.3413,19.326 +DH020,246.0,248.0,5.476,0.9723,15.998 +DH020,248.0,250.0,0.704,0.0988,2.099 +DH020,250.0,252.0,0.162,0.014,0.237 +DH020,252.0,254.0,0.055,0.0241,0.035 +DH020,254.0,256.0,0.091,0.0141,0.101 +DH020,256.0,258.0,0.101,0.0246,0.14 +DH020,258.0,260.0,0.112,0.023,0.125 +DH020,260.0,262.0,0.103,0.0272,0.074 +DH020,262.0,264.0,0.105,0.0113,0.088 +DH020,264.0,266.0,0.063,0.0201,0.04 +DH020,266.0,268.0,0.042,0.0104,0.026 +DH020,268.0,270.0,0.013,0.0171,0.014 +DH020,270.0,272.0,0.241,0.0112,0.164 +DH020,272.0,274.0,0.034,0.0095,0.029 +DH020,274.0,276.0,0.072,0.0167,0.101 +DH020,276.0,278.0,0.122,0.0155,0.169 +DH020,278.0,280.0,0.043,0.0094,0.026 +DH020,280.0,282.0,0.121,0.0155,0.102 +DH020,282.0,284.0,0.079,0.0098,0.107 +DH020,284.0,286.0,0.058,0.0258,0.086 +DH020,286.0,288.0,0.046,0.019,0.042 +DH020,288.0,290.0,0.088,0.0219,0.082 +DH020,290.0,292.0,0.114,0.0144,0.145 +DH020,292.0,294.0,0.143,0.0256,0.074 +DH020,294.0,296.0,0.121,0.0258,0.173 +DH020,296.0,298.0,0.08,0.0199,0.12 +DH020,298.0,300.0,0.061,0.0094,0.086 +DH020,300.0,302.0,0.073,0.01,0.076 +DH020,302.0,304.0,0.194,0.0081,0.16 +DH020,304.0,306.0,0.018,0.015,0.02 +DH020,306.0,308.0,0.067,0.0192,0.064 +DH020,308.0,310.0,0.029,0.019,0.019 +DH020,310.0,312.0,0.251,0.0099,0.231 +DH020,312.0,314.0,0.047,0.0109,0.034 +DH020,314.0,316.0,0.083,0.0139,0.049 +DH020,316.0,318.0,0.059,0.0145,0.043 +DH020,318.0,320.0,0.07,0.0153,0.059 +DH020,320.0,322.0,0.09,0.0206,0.083 +DH020,322.0,324.0,0.075,0.0539,0.046 +DH020,324.0,326.0,0.044,0.0116,0.064 +DH020,326.0,328.0,0.155,0.015,0.158 +DH020,328.0,330.0,0.272,0.0182,0.315 +DH020,330.0,332.0,0.112,0.0136,0.136 +DH020,332.0,334.0,0.049,0.0358,0.061 +DH020,334.0,336.0,0.062,0.0106,0.067 +DH020,336.0,338.0,0.064,0.0054,0.075 +DH020,338.0,340.0,0.061,0.0272,0.033 +DH020,340.0,342.0,0.054,0.0146,0.05 +DH020,342.0,344.0,0.2,0.0121,0.234 +DH020,344.0,346.0,0.042,0.0087,0.028 +DH020,346.0,348.0,0.093,0.0348,0.086 +DH020,348.0,350.0,0.346,0.0177,0.353 +DH020,350.0,352.0,0.038,0.0259,0.043 +DH020,352.0,354.0,0.121,0.0104,0.114 +DH020,354.0,356.0,0.093,0.0196,0.098 +DH020,356.0,358.0,0.168,0.0511,0.244 +DH020,358.0,360.0,0.126,0.0043,0.091 +DH020,360.0,362.0,0.027,0.0141,0.02 +DH020,362.0,364.0,0.072,0.0279,0.106 +DH020,364.0,366.0,0.066,0.0142,0.09 +DH020,366.0,368.0,0.106,0.0102,0.071 +DH020,368.0,370.0,0.209,0.0262,0.254 +DH020,370.0,372.0,0.07,0.0163,0.083 +DH020,372.0,374.0,0.029,0.0131,0.018 +DH020,374.0,376.0,0.065,0.0174,0.042 +DH020,376.0,378.0,0.311,0.0184,0.218 +DH020,378.0,380.0,0.057,0.0161,0.079 +DH020,380.0,382.0,0.052,0.0165,0.036 +DH020,382.0,384.0,0.051,0.0183,0.073 +DH020,384.0,386.0,0.05,0.0317,0.025 +DH020,386.0,388.0,0.074,0.0067,0.096 +DH020,388.0,390.0,0.103,0.0438,0.134 +DH020,390.0,392.0,0.161,0.01,0.163 +DH020,392.0,394.0,0.171,0.0118,0.243 +DH020,394.0,396.0,0.127,0.021,0.066 +DH020,396.0,398.0,0.045,0.0445,0.026 +DH020,398.0,400.0,0.101,0.0149,0.101 +DH020,400.0,402.0,0.091,0.0224,0.056 +DH020,402.0,404.0,0.051,0.0088,0.059 +DH020,404.0,406.0,0.029,0.0156,0.019 +DH020,406.0,408.0,0.11,0.0494,0.136 +DH020,408.0,410.0,0.321,0.0163,0.218 +DH020,410.0,412.0,0.035,0.0302,0.035 +DH020,412.0,414.0,0.079,0.007,0.05 +DH020,414.0,416.0,0.136,0.0163,0.111 +DH020,416.0,418.0,0.162,0.0133,0.096 +DH020,418.0,420.0,0.084,0.0188,0.086 +DH020,420.0,422.0,0.086,0.0049,0.098 +DH020,422.0,424.0,0.036,0.0413,0.022 +DH020,424.0,426.0,0.137,0.0163,0.167 +DH020,426.0,428.0,0.055,0.0484,0.031 +DH020,428.0,430.0,0.02,0.0307,0.026 +DH020,430.0,432.0,0.222,0.0308,0.209 +DH020,432.0,434.0,0.085,0.0065,0.054 +DH020,434.0,436.0,0.119,0.0171,0.136 +DH021,0.0,2.0,0.046,0.0111,0.034 +DH021,2.0,4.0,0.253,0.0183,0.26 +DH021,4.0,6.0,0.046,0.0253,0.034 +DH021,6.0,8.0,0.033,0.0231,0.018 +DH021,8.0,10.0,0.113,0.0416,0.111 +DH021,10.0,12.0,0.071,0.0256,0.098 +DH021,12.0,14.0,0.056,0.021,0.032 +DH021,14.0,16.0,0.093,0.0118,0.111 +DH021,16.0,18.0,0.062,0.012,0.051 +DH021,18.0,20.0,0.105,0.0299,0.074 +DH021,20.0,22.0,0.058,0.0398,0.037 +DH021,22.0,24.0,0.084,0.0168,0.067 +DH021,24.0,26.0,0.166,0.032,0.166 +DH021,26.0,28.0,0.049,0.048,0.038 +DH021,28.0,30.0,0.062,0.0373,0.058 +DH021,30.0,32.0,0.191,0.0384,0.165 +DH021,32.0,34.0,0.116,0.0271,0.115 +DH021,34.0,36.0,0.053,0.0375,0.072 +DH021,36.0,38.0,0.039,0.0172,0.039 +DH021,38.0,40.0,0.043,0.0214,0.059 +DH021,40.0,42.0,0.095,0.014,0.072 +DH021,42.0,44.0,0.082,0.0204,0.06 +DH021,44.0,46.0,0.097,0.0091,0.103 +DH021,46.0,48.0,0.091,0.0321,0.066 +DH021,48.0,50.0,0.238,0.0196,0.284 +DH021,50.0,52.0,0.034,0.0227,0.029 +DH021,52.0,54.0,0.079,0.0833,0.051 +DH021,54.0,56.0,0.049,0.0225,0.027 +DH021,56.0,58.0,0.046,0.0524,0.051 +DH021,58.0,60.0,0.101,0.0151,0.092 +DH021,60.0,62.0,0.207,0.0213,0.154 +DH021,62.0,64.0,0.351,0.0201,0.252 +DH021,64.0,66.0,0.158,0.0231,0.13 +DH021,66.0,68.0,0.064,0.0099,0.065 +DH021,68.0,70.0,0.194,0.0132,0.179 +DH021,70.0,72.0,0.171,0.0146,0.157 +DH021,72.0,74.0,0.066,0.0177,0.063 +DH021,74.0,76.0,0.059,0.0206,0.084 +DH021,76.0,78.0,0.164,0.0459,0.218 +DH021,78.0,80.0,0.142,0.017,0.115 +DH021,80.0,82.0,2.274,0.3565,3.996 +DH021,82.0,84.0,4.701,0.2025,12.783 +DH021,84.0,86.0,10.105,0.4512,17.111 +DH021,86.0,88.0,0.818,0.1124,1.308 +DH021,88.0,90.0,3.03,0.3382,7.258 +DH021,90.0,92.0,1.216,0.2711,2.174 +DH021,92.0,94.0,3.746,0.1745,7.494 +DH021,94.0,96.0,2.372,0.3054,6.071 +DH021,96.0,98.0,1.663,0.3244,3.336 +DH021,98.0,100.0,0.304,0.0653,0.652 +DH021,100.0,102.0,0.457,0.1689,1.262 +DH021,102.0,104.0,0.426,0.178,1.263 +DH021,104.0,106.0,3.632,0.1663,6.348 +DH021,106.0,108.0,3.726,0.8664,7.914 +DH021,108.0,110.0,0.897,0.074,2.035 +DH021,110.0,112.0,0.412,0.154,0.665 +DH021,112.0,114.0,8.076,0.1486,23.589 +DH021,114.0,116.0,0.325,0.2479,0.884 +DH021,116.0,118.0,1.335,1.3086,2.215 +DH021,118.0,120.0,1.908,2.8839,3.083 +DH021,120.0,122.0,9.009,0.0655,15.661 +DH021,122.0,124.0,0.442,0.2741,0.75 +DH021,124.0,126.0,1.538,0.5345,4.264 +DH021,126.0,128.0,3.294,0.4302,6.606 +DH021,128.0,130.0,0.907,0.233,2.515 +DH021,130.0,132.0,12.25,0.1877,23.295 +DH021,132.0,134.0,0.781,0.2905,1.202 +DH021,134.0,136.0,1.602,0.207,4.061 +DH021,136.0,138.0,1.131,0.1203,3.327 +DH021,138.0,140.0,0.059,0.1377,0.155 +DH021,140.0,142.0,1.662,0.5843,2.626 +DH021,142.0,144.0,1.136,0.2146,2.543 +DH021,144.0,146.0,1.373,0.2412,2.656 +DH021,146.0,148.0,1.33,0.0994,3.622 +DH021,148.0,150.0,2.394,0.2852,4.816 +DH021,150.0,152.0,5.54,0.4112,8.757 +DH021,152.0,154.0,3.19,0.3715,8.885 +DH021,154.0,156.0,1.55,0.0967,3.775 +DH021,156.0,158.0,18.298,0.9185,46.632 +DH021,158.0,160.0,0.93,0.1722,2.726 +DH021,160.0,162.0,0.475,0.0463,1.237 +DH021,162.0,164.0,3.238,0.321,4.993 +DH021,164.0,166.0,3.892,0.0664,7.959 +DH021,166.0,168.0,2.525,0.0363,5.807 +DH021,168.0,170.0,1.438,0.1751,3.278 +DH021,170.0,172.0,0.674,0.0519,1.905 +DH021,172.0,174.0,1.552,0.0743,2.337 +DH021,174.0,176.0,1.562,0.1543,4.681 +DH021,176.0,178.0,5.05,0.0832,9.586 +DH021,178.0,180.0,0.844,0.1635,1.811 +DH021,180.0,182.0,4.212,0.551,8.875 +DH021,182.0,184.0,3.58,0.0537,5.454 +DH021,184.0,186.0,1.699,0.5939,2.742 +DH021,186.0,188.0,3.058,0.2673,7.35 +DH021,188.0,190.0,1.896,0.4327,4.911 +DH021,190.0,192.0,0.321,0.0359,0.721 +DH021,192.0,194.0,1.348,0.3825,3.654 +DH021,194.0,196.0,0.987,0.1422,2.114 +DH021,196.0,198.0,12.584,0.8651,32.011 +DH021,198.0,200.0,3.311,0.6494,6.339 +DH021,200.0,202.0,1.392,0.2012,3.884 +DH021,202.0,204.0,1.804,0.0913,4.61 +DH021,204.0,206.0,4.273,0.7002,12.571 +DH021,206.0,208.0,21.803,0.0634,60.466 +DH021,208.0,210.0,1.057,0.6352,1.885 +DH021,210.0,212.0,1.661,0.1184,3.628 +DH021,212.0,214.0,8.664,0.4227,20.704 +DH021,214.0,216.0,3.583,0.027,7.108 +DH021,216.0,218.0,3.888,0.166,6.228 +DH021,218.0,220.0,0.592,0.4762,1.479 +DH021,220.0,222.0,4.061,0.1344,10.743 +DH021,222.0,224.0,0.447,0.2011,1.251 +DH021,224.0,226.0,0.339,0.1724,0.619 +DH021,226.0,228.0,0.256,0.0825,0.547 +DH021,228.0,230.0,18.603,0.2623,46.62 +DH021,230.0,232.0,1.484,0.1483,3.074 +DH021,232.0,234.0,1.01,0.3983,1.651 +DH021,234.0,236.0,6.475,0.2303,12.262 +DH021,236.0,237.0,0.31,0.1019,0.512 +DH022,0.0,2.0,0.072,0.0211,0.043 +DH022,2.0,4.0,0.081,0.0092,0.083 +DH022,4.0,6.0,0.103,0.0215,0.139 +DH022,6.0,8.0,0.067,0.024,0.043 +DH022,8.0,10.0,0.069,0.0474,0.089 +DH022,10.0,12.0,0.157,0.0103,0.184 +DH022,12.0,14.0,0.126,0.0142,0.089 +DH022,14.0,16.0,0.025,0.0135,0.029 +DH022,16.0,18.0,0.043,0.0192,0.031 +DH022,18.0,20.0,0.071,0.0103,0.072 +DH022,20.0,22.0,0.061,0.0101,0.086 +DH022,22.0,24.0,0.047,0.0095,0.027 +DH022,24.0,26.0,0.066,0.0061,0.072 +DH022,26.0,28.0,0.142,0.0125,0.121 +DH022,28.0,30.0,0.049,0.0236,0.045 +DH022,30.0,32.0,0.108,0.0092,0.114 +DH022,32.0,34.0,0.166,0.0122,0.138 +DH022,34.0,36.0,0.063,0.0197,0.095 +DH022,36.0,38.0,0.057,0.0118,0.046 +DH022,38.0,40.0,0.087,0.0231,0.1 +DH022,40.0,42.0,0.047,0.0201,0.045 +DH022,42.0,44.0,0.157,0.0173,0.153 +DH022,44.0,46.0,0.108,0.0176,0.078 +DH022,46.0,48.0,0.043,0.0311,0.044 +DH022,48.0,50.0,0.03,0.0218,0.028 +DH022,50.0,52.0,0.049,0.0103,0.065 +DH022,52.0,54.0,0.025,0.012,0.019 +DH022,54.0,56.0,0.212,0.0242,0.149 +DH022,56.0,58.0,0.205,0.0093,0.157 +DH022,58.0,60.0,0.11,0.0118,0.136 +DH022,60.0,62.0,0.06,0.0259,0.079 +DH022,62.0,64.0,0.1,0.0149,0.071 +DH022,64.0,66.0,0.08,0.0342,0.074 +DH022,66.0,68.0,0.076,0.0272,0.073 +DH022,68.0,70.0,0.109,0.0058,0.06 +DH022,70.0,72.0,0.188,0.0098,0.253 +DH022,72.0,74.0,0.125,0.0127,0.153 +DH022,74.0,76.0,0.058,0.0518,0.035 +DH022,76.0,78.0,0.051,0.0111,0.041 +DH022,78.0,80.0,0.071,0.0134,0.068 +DH022,80.0,82.0,4.461,0.1069,7.903 +DH022,82.0,84.0,8.933,0.2261,26.323 +DH022,84.0,86.0,0.262,0.0914,0.711 +DH022,86.0,88.0,0.191,0.0926,0.453 +DH022,88.0,90.0,1.277,0.8644,2.473 +DH022,90.0,92.0,1.82,0.3353,3.519 +DH022,92.0,94.0,3.597,0.2793,9.493 +DH022,94.0,96.0,61.544,0.4625,149.711 +DH022,96.0,98.0,3.47,0.1184,8.699 +DH022,98.0,100.0,0.427,0.092,0.833 +DH022,100.0,102.0,7.368,0.3336,16.289 +DH022,102.0,104.0,3.485,0.2561,10.118 +DH022,104.0,106.0,5.904,0.5066,15.538 +DH022,106.0,108.0,1.934,0.797,3.995 +DH022,108.0,110.0,2.437,0.3287,6.028 +DH022,110.0,112.0,0.832,0.3019,1.249 +DH022,112.0,114.0,20.302,0.4193,59.34 +DH022,114.0,116.0,5.338,0.2854,12.634 +DH022,116.0,118.0,1.186,0.2595,1.794 +DH022,118.0,120.0,2.387,0.1099,6.349 +DH022,120.0,122.0,3.675,0.6239,8.961 +DH022,122.0,124.0,1.358,0.4196,3.399 +DH022,124.0,126.0,8.182,0.5306,16.451 +DH022,126.0,128.0,3.497,0.1512,9.253 +DH022,128.0,130.0,3.512,0.1425,9.166 +DH022,130.0,132.0,4.464,0.1093,10.787 +DH022,132.0,134.0,2.501,0.093,6.914 +DH022,134.0,136.0,13.268,0.9608,38.475 +DH022,136.0,138.0,10.839,0.5905,28.036 +DH022,138.0,140.0,3.303,0.3437,5.188 +DH022,140.0,142.0,0.914,0.4007,1.817 +DH022,142.0,144.0,1.737,0.1737,4.419 +DH022,144.0,146.0,1.021,0.0778,1.809 +DH022,146.0,148.0,1.295,0.2264,2.352 +DH022,148.0,150.0,10.3,0.4416,19.573 +DH022,150.0,152.0,0.54,0.1691,1.558 +DH022,152.0,154.0,2.791,0.2435,8.01 +DH022,154.0,156.0,5.532,0.2158,12.736 +DH022,156.0,158.0,0.681,1.7213,1.807 +DH022,158.0,160.0,2.841,0.351,4.51 +DH022,160.0,162.0,2.247,0.2224,4.609 +DH022,162.0,164.0,3.767,0.0596,7.457 +DH022,164.0,166.0,5.764,0.3721,13.98 +DH022,166.0,168.0,0.86,0.6781,2.573 +DH022,168.0,170.0,5.443,0.5129,11.153 +DH022,170.0,172.0,7.724,0.3396,20.674 +DH022,172.0,174.0,7.346,0.0925,11.446 +DH022,174.0,176.0,0.483,0.487,0.727 +DH022,176.0,178.0,2.512,0.2204,6.753 +DH022,178.0,180.0,0.995,0.1358,2.418 +DH022,180.0,182.0,1.215,0.0939,2.902 +DH022,182.0,184.0,4.919,0.0793,10.315 +DH022,184.0,186.0,20.641,0.1018,55.603 +DH022,186.0,188.0,2.526,0.5349,4.37 +DH022,188.0,190.0,1.326,0.2354,2.498 +DH022,190.0,192.0,1.994,0.0777,3.293 +DH022,192.0,194.0,8.002,0.0968,15.368 +DH022,194.0,196.0,1.699,0.0885,4.122 +DH022,196.0,198.0,0.995,0.1678,2.399 +DH022,198.0,200.0,2.752,0.5657,7.926 +DH022,200.0,202.0,1.912,0.0512,5.209 +DH022,202.0,204.0,2.653,0.3133,7.892 +DH022,204.0,206.0,0.827,0.0224,2.108 +DH022,206.0,208.0,3.988,0.228,7.123 +DH022,208.0,210.0,0.405,0.168,1.062 +DH022,210.0,212.0,4.157,0.1606,11.152 +DH022,212.0,214.0,0.896,0.2754,2.198 +DH022,214.0,216.0,2.836,0.2577,8.064 +DH022,216.0,218.0,0.644,0.1244,1.406 +DH022,218.0,220.0,26.529,0.0758,47.154 +DH022,220.0,222.0,2.504,0.1751,5.376 +DH022,222.0,224.0,1.537,0.185,4.276 +DH022,224.0,226.0,19.548,0.688,58.414 +DH022,226.0,228.0,1.639,0.2,4.317 +DH022,228.0,230.0,2.354,0.251,4.264 +DH022,230.0,232.0,6.848,0.2632,18.014 +DH022,232.0,234.0,0.484,0.2345,0.806 +DH022,234.0,236.0,1.107,0.1422,2.522 +DH022,236.0,238.0,21.239,0.3526,39.073 +DH022,238.0,240.0,4.827,0.5488,7.993 +DH022,240.0,242.0,0.925,0.1179,2.037 +DH022,242.0,244.0,2.216,0.2661,5.042 +DH022,244.0,246.0,1.088,0.816,1.952 +DH022,246.0,248.0,5.072,0.3394,8.431 +DH022,248.0,250.0,0.821,0.1313,2.053 +DH022,250.0,252.0,0.066,0.0175,0.089 +DH022,252.0,254.0,0.331,0.019,0.432 +DH022,254.0,256.0,0.059,0.0132,0.078 +DH022,256.0,258.0,0.026,0.0211,0.022 +DH022,258.0,260.0,0.064,0.0133,0.043 +DH022,260.0,262.0,0.084,0.0051,0.118 +DH022,262.0,264.0,0.078,0.0093,0.113 +DH022,264.0,266.0,0.057,0.0163,0.032 +DH022,266.0,268.0,0.078,0.0352,0.117 +DH022,268.0,270.0,0.128,0.0316,0.092 +DH022,270.0,272.0,0.095,0.0402,0.078 +DH022,272.0,274.0,0.089,0.0218,0.1 +DH022,274.0,276.0,0.098,0.0085,0.083 +DH022,276.0,278.0,0.092,0.0105,0.104 +DH022,278.0,280.0,0.089,0.0201,0.073 +DH022,280.0,282.0,0.141,0.0175,0.145 +DH022,282.0,284.0,0.04,0.0168,0.023 +DH022,284.0,286.0,0.147,0.0123,0.081 +DH022,286.0,288.0,0.045,0.0132,0.05 +DH022,288.0,290.0,0.076,0.0251,0.091 +DH022,290.0,292.0,0.078,0.0164,0.046 +DH022,292.0,294.0,0.057,0.0137,0.06 +DH022,294.0,296.0,0.041,0.0239,0.037 +DH022,296.0,298.0,0.085,0.0346,0.105 +DH022,298.0,300.0,0.031,0.0253,0.025 +DH022,300.0,302.0,0.062,0.0216,0.091 +DH022,302.0,304.0,0.197,0.0237,0.238 +DH022,304.0,305.0,0.058,0.0078,0.031 +DH023,0.0,2.0,0.061,0.0094,0.057 +DH023,2.0,4.0,0.177,0.0181,0.158 +DH023,4.0,6.0,0.107,0.0181,0.088 +DH023,6.0,8.0,0.055,0.0158,0.07 +DH023,8.0,10.0,0.083,0.0203,0.047 +DH023,10.0,12.0,0.122,0.0183,0.09 +DH023,12.0,14.0,0.065,0.0215,0.065 +DH023,14.0,16.0,0.092,0.0177,0.057 +DH023,16.0,18.0,0.205,0.0103,0.133 +DH023,18.0,20.0,0.062,0.0167,0.068 +DH023,20.0,22.0,0.184,0.0159,0.22 +DH023,22.0,24.0,0.174,0.0142,0.09 +DH023,24.0,26.0,0.136,0.0232,0.168 +DH023,26.0,28.0,0.125,0.0174,0.101 +DH023,28.0,30.0,0.077,0.0082,0.044 +DH023,30.0,32.0,0.036,0.0159,0.044 +DH023,32.0,34.0,0.132,0.0313,0.198 +DH023,34.0,36.0,0.196,0.0294,0.228 +DH023,36.0,38.0,0.042,0.0089,0.043 +DH023,38.0,40.0,0.053,0.0334,0.069 +DH023,40.0,42.0,0.048,0.0206,0.047 +DH023,42.0,44.0,0.083,0.03,0.104 +DH023,44.0,46.0,0.088,0.0203,0.12 +DH023,46.0,48.0,0.104,0.0198,0.058 +DH023,48.0,50.0,0.118,0.0166,0.082 +DH023,50.0,52.0,0.069,0.0207,0.096 +DH023,52.0,54.0,0.108,0.0152,0.131 +DH023,54.0,56.0,0.275,0.0284,0.335 +DH023,56.0,58.0,0.033,0.009,0.017 +DH023,58.0,60.0,0.084,0.0166,0.103 +DH023,60.0,62.0,0.164,0.0538,0.158 +DH023,62.0,64.0,0.157,0.0205,0.175 +DH023,64.0,66.0,0.086,0.0525,0.068 +DH023,66.0,68.0,0.062,0.0319,0.052 +DH023,68.0,70.0,0.049,0.0161,0.041 +DH023,70.0,72.0,0.086,0.0318,0.112 +DH023,72.0,74.0,0.158,0.0193,0.177 +DH023,74.0,76.0,0.099,0.0174,0.067 +DH023,76.0,78.0,0.067,0.0075,0.077 +DH023,78.0,80.0,0.07,0.0083,0.062 +DH023,80.0,82.0,0.186,0.169,0.32 +DH023,82.0,84.0,2.5,0.1606,6.594 +DH023,84.0,86.0,0.869,0.2251,2.121 +DH023,86.0,88.0,0.756,0.2764,1.851 +DH023,88.0,90.0,1.823,1.5478,3.642 +DH023,90.0,92.0,1.6,0.1785,2.533 +DH023,92.0,94.0,0.694,0.3862,1.559 +DH023,94.0,96.0,1.126,0.1451,2.268 +DH023,96.0,98.0,0.272,0.1541,0.703 +DH023,98.0,100.0,2.819,0.7776,7.284 +DH023,100.0,102.0,4.174,1.0061,6.341 +DH023,102.0,104.0,2.401,0.2211,5.796 +DH023,104.0,106.0,2.232,0.1328,3.925 +DH023,106.0,108.0,0.836,0.3419,2.385 +DH023,108.0,110.0,1.773,0.3509,5.239 +DH023,110.0,112.0,2.706,0.1541,4.964 +DH023,112.0,114.0,2.683,0.1385,7.487 +DH023,114.0,116.0,10.66,0.1686,27.146 +DH023,116.0,118.0,3.332,0.3752,5.425 +DH023,118.0,120.0,2.279,0.2534,3.503 +DH023,120.0,122.0,3.332,0.3135,8.517 +DH023,122.0,124.0,2.381,0.1161,6.299 +DH023,124.0,126.0,5.499,0.0534,12.033 +DH023,126.0,128.0,6.699,0.7528,11.083 +DH023,128.0,130.0,2.511,0.1621,3.941 +DH023,130.0,132.0,3.211,0.0793,5.665 +DH023,132.0,134.0,1.55,0.1986,4.036 +DH023,134.0,136.0,5.741,0.1598,14.332 +DH023,136.0,138.0,3.124,0.2013,4.876 +DH023,138.0,140.0,0.726,0.073,1.39 +DH023,140.0,142.0,2.392,0.0827,5.553 +DH023,142.0,144.0,2.77,0.1217,5.564 +DH023,144.0,146.0,7.088,0.1346,12.983 +DH023,146.0,148.0,2.303,0.2825,6.094 +DH023,148.0,150.0,0.092,0.0899,0.158 +DH023,150.0,152.0,3.448,0.0533,9.715 +DH023,152.0,154.0,0.579,0.2692,1.195 +DH023,154.0,156.0,5.431,0.5239,13.488 +DH023,156.0,158.0,6.249,0.1686,14.047 +DH023,158.0,160.0,4.252,0.0842,10.682 +DH023,160.0,162.0,6.564,0.4075,15.096 +DH023,162.0,164.0,5.005,0.0421,10.982 +DH023,164.0,166.0,1.743,0.6045,3.561 +DH023,166.0,168.0,3.028,0.1422,7.212 +DH023,168.0,170.0,3.256,0.299,7.624 +DH023,170.0,172.0,2.078,0.1932,5.271 +DH023,172.0,174.0,7.295,0.2517,11.959 +DH023,174.0,176.0,2.532,1.8019,6.155 +DH023,176.0,178.0,0.063,0.2347,0.169 +DH023,178.0,180.0,1.788,0.1544,3.1 +DH023,180.0,182.0,4.317,0.089,12.137 +DH023,182.0,184.0,2.081,0.1056,5.055 +DH023,184.0,186.0,0.348,0.1431,1.013 +DH023,186.0,188.0,29.158,0.129,87.221 +DH023,188.0,190.0,1.107,0.3212,1.946 +DH023,190.0,192.0,34.187,0.6876,97.273 +DH023,192.0,194.0,0.764,0.8181,1.767 +DH023,194.0,196.0,1.01,0.1598,1.805 +DH023,196.0,198.0,1.274,0.1852,2.258 +DH023,198.0,200.0,1.397,0.0809,3.914 +DH023,200.0,202.0,2.862,0.2365,7.655 +DH023,202.0,204.0,1.27,0.3045,2.52 +DH023,204.0,206.0,0.873,0.2396,1.555 +DH023,206.0,208.0,0.877,0.2204,2.306 +DH023,208.0,210.0,0.461,0.2553,1.221 +DH023,210.0,212.0,4.332,0.0863,8.943 +DH023,212.0,214.0,11.682,1.1759,27.898 +DH023,214.0,216.0,0.542,0.3201,1.342 +DH023,216.0,218.0,3.129,0.1203,8.102 +DH023,218.0,220.0,1.472,0.3978,3.641 +DH023,220.0,222.0,3.609,0.2653,9.643 +DH023,222.0,224.0,4.201,0.1791,10.274 +DH023,224.0,226.0,18.028,0.25,27.112 +DH023,226.0,227.0,2.518,0.1874,4.892 +DH024,0.0,2.0,0.093,0.0142,0.048 +DH024,2.0,4.0,0.051,0.0193,0.059 +DH024,4.0,6.0,0.072,0.0067,0.069 +DH024,6.0,8.0,0.088,0.0111,0.054 +DH024,8.0,10.0,0.035,0.0309,0.036 +DH024,10.0,12.0,0.021,0.02,0.022 +DH024,12.0,14.0,0.059,0.0127,0.067 +DH024,14.0,16.0,0.061,0.0072,0.06 +DH024,16.0,18.0,0.071,0.0127,0.078 +DH024,18.0,20.0,0.13,0.0096,0.101 +DH024,20.0,22.0,0.058,0.0141,0.07 +DH024,22.0,24.0,0.057,0.0184,0.041 +DH024,24.0,26.0,0.113,0.0124,0.072 +DH024,26.0,28.0,0.14,0.008,0.087 +DH024,28.0,30.0,0.046,0.0108,0.059 +DH024,30.0,32.0,0.059,0.01,0.044 +DH024,32.0,34.0,0.143,0.007,0.102 +DH024,34.0,36.0,0.117,0.0159,0.129 +DH024,36.0,38.0,0.119,0.0213,0.127 +DH024,38.0,40.0,0.11,0.0097,0.15 +DH024,40.0,42.0,0.106,0.0121,0.139 +DH024,42.0,44.0,0.315,0.0164,0.214 +DH024,44.0,46.0,0.063,0.0191,0.045 +DH024,46.0,48.0,0.082,0.0187,0.081 +DH024,48.0,50.0,0.028,0.0159,0.04 +DH024,50.0,52.0,0.071,0.0168,0.052 +DH024,52.0,54.0,0.047,0.0074,0.027 +DH024,54.0,56.0,0.045,0.0194,0.049 +DH024,56.0,58.0,0.062,0.0146,0.062 +DH024,58.0,60.0,0.06,0.0108,0.03 +DH024,60.0,62.0,0.156,0.0195,0.187 +DH024,62.0,64.0,0.076,0.0066,0.077 +DH024,64.0,66.0,0.065,0.0115,0.045 +DH024,66.0,68.0,0.064,0.0301,0.092 +DH024,68.0,70.0,0.047,0.0141,0.031 +DH024,70.0,72.0,0.133,0.0197,0.154 +DH024,72.0,74.0,0.113,0.0136,0.12 +DH024,74.0,76.0,0.082,0.0119,0.066 +DH024,76.0,78.0,0.172,0.0148,0.179 +DH024,78.0,80.0,0.056,0.0125,0.046 +DH024,80.0,82.0,0.78,0.4309,1.808 +DH024,82.0,84.0,0.78,0.2107,2.162 +DH024,84.0,86.0,3.383,1.0103,7.056 +DH024,86.0,88.0,4.223,0.2275,10.316 +DH024,88.0,90.0,1.825,0.1124,3.859 +DH024,90.0,92.0,1.574,0.1082,3.791 +DH024,92.0,94.0,2.506,0.1859,5.036 +DH024,94.0,96.0,0.246,0.6177,0.498 +DH024,96.0,98.0,2.869,0.1394,5.817 +DH024,98.0,100.0,10.769,0.9851,27.126 +DH024,100.0,102.0,3.329,0.2335,6.238 +DH024,102.0,104.0,0.176,0.3017,0.376 +DH024,104.0,106.0,0.132,0.1672,0.29 +DH024,106.0,108.0,1.013,0.42,2.436 +DH024,108.0,110.0,2.192,0.2457,4.37 +DH024,110.0,112.0,0.942,0.461,2.126 +DH024,112.0,114.0,3.458,0.2482,9.707 +DH024,114.0,116.0,1.328,0.806,3.25 +DH024,116.0,118.0,16.997,0.0837,36.264 +DH024,118.0,120.0,1.388,0.2495,3.617 +DH024,120.0,122.0,3.506,0.5923,6.086 +DH024,122.0,124.0,0.829,0.226,2.028 +DH024,124.0,126.0,1.781,0.1036,4.936 +DH024,126.0,128.0,1.44,0.6983,2.433 +DH024,128.0,130.0,4.846,0.3486,13.042 +DH024,130.0,132.0,3.458,1.0436,6.616 +DH024,132.0,134.0,6.564,0.3885,17.506 +DH024,134.0,136.0,2.784,0.3457,8.099 +DH024,136.0,138.0,0.439,0.2719,0.839 +DH024,138.0,140.0,1.391,0.6292,2.785 +DH024,140.0,142.0,0.417,0.4217,0.901 +DH024,142.0,144.0,0.22,0.4614,0.333 +DH024,144.0,146.0,3.925,0.1566,8.77 +DH024,146.0,148.0,0.536,0.1795,1.065 +DH024,148.0,150.0,3.217,0.1541,9.144 +DH024,150.0,152.0,2.681,0.3041,4.795 +DH024,152.0,154.0,1.473,0.2585,3.891 +DH024,154.0,156.0,0.121,0.3743,0.229 +DH024,156.0,158.0,4.379,0.0797,11.365 +DH024,158.0,160.0,0.601,0.4048,1.76 +DH024,160.0,162.0,0.73,0.3421,1.864 +DH024,162.0,164.0,0.73,0.4609,1.17 +DH024,164.0,166.0,5.294,0.44,15.02 +DH024,166.0,168.0,1.741,0.1329,2.98 +DH024,168.0,170.0,1.181,0.1578,2.094 +DH024,170.0,172.0,9.221,0.3069,17.056 +DH024,172.0,174.0,0.954,0.0513,1.884 +DH024,174.0,176.0,0.881,0.1793,1.48 +DH024,176.0,178.0,0.757,0.0671,1.471 +DH024,178.0,180.0,1.386,0.2398,2.705 +DH024,180.0,182.0,5.014,0.0609,9.713 +DH024,182.0,184.0,2.545,0.2063,6.686 +DH024,184.0,186.0,2.845,0.1283,6.554 +DH024,186.0,188.0,9.214,0.1271,23.082 +DH024,188.0,190.0,2.067,0.0903,3.832 +DH024,190.0,192.0,1.472,0.711,2.769 +DH024,192.0,194.0,2.757,0.0406,6.851 +DH024,194.0,196.0,2.489,0.1311,4.699 +DH024,196.0,198.0,2.73,0.0956,5.725 +DH024,198.0,200.0,9.361,0.1859,15.377 +DH024,200.0,202.0,1.798,0.4421,2.958 +DH024,202.0,204.0,4.456,0.1297,11.022 +DH024,204.0,206.0,1.131,0.1418,2.109 +DH024,206.0,208.0,0.41,0.329,1.227 +DH024,208.0,210.0,5.066,0.0769,10.211 +DH024,210.0,212.0,0.903,0.2532,1.586 +DH024,212.0,214.0,0.484,0.111,1.338 +DH024,214.0,216.0,1.792,1.0917,3.609 +DH024,216.0,218.0,0.689,0.0901,1.976 +DH024,218.0,220.0,2.118,0.1089,3.647 +DH024,220.0,222.0,0.861,0.2827,1.593 +DH024,222.0,224.0,4.31,0.2071,9.087 +DH024,224.0,226.0,0.444,0.4013,0.951 +DH024,226.0,228.0,1.272,0.589,2.153 +DH024,228.0,230.0,5.639,0.2828,13.558 +DH024,230.0,232.0,1.843,0.1039,3.509 +DH024,232.0,234.0,6.113,0.1486,13.471 +DH024,234.0,236.0,0.607,0.4165,0.925 +DH024,236.0,238.0,0.526,0.1865,0.868 +DH024,238.0,240.0,0.491,0.0947,1.109 +DH024,240.0,242.0,28.789,0.1303,73.859 +DH024,242.0,244.0,3.041,0.1392,5.791 +DH024,244.0,246.0,1.3,0.1676,2.917 +DH024,246.0,248.0,2.161,0.4581,5.29 +DH024,248.0,250.0,8.237,0.355,20.223 +DH024,250.0,252.0,0.056,0.0144,0.034 +DH024,252.0,254.0,0.07,0.0197,0.05 +DH024,254.0,256.0,0.113,0.0119,0.163 +DH024,256.0,258.0,0.073,0.0275,0.084 +DH024,258.0,260.0,0.114,0.0167,0.08 +DH024,260.0,262.0,0.031,0.0408,0.042 +DH024,262.0,264.0,0.132,0.016,0.091 +DH024,264.0,266.0,0.06,0.0162,0.068 +DH024,266.0,268.0,0.108,0.0311,0.148 +DH024,268.0,270.0,0.1,0.0431,0.064 +DH024,270.0,272.0,0.157,0.0227,0.086 +DH024,272.0,274.0,0.092,0.0236,0.057 +DH024,274.0,276.0,0.105,0.0282,0.105 +DH024,276.0,278.0,0.014,0.0424,0.013 +DH024,278.0,280.0,0.05,0.0104,0.034 +DH024,280.0,282.0,0.059,0.0127,0.076 +DH024,282.0,284.0,0.113,0.0505,0.137 +DH024,284.0,286.0,0.161,0.0152,0.12 +DH024,286.0,288.0,0.076,0.0193,0.041 +DH024,288.0,290.0,0.055,0.0148,0.059 +DH024,290.0,292.0,0.158,0.0189,0.117 +DH024,292.0,294.0,0.069,0.0089,0.095 +DH024,294.0,296.0,0.096,0.016,0.062 +DH024,296.0,298.0,0.105,0.0208,0.065 +DH024,298.0,300.0,0.071,0.0225,0.061 +DH024,300.0,302.0,0.07,0.0241,0.047 +DH024,302.0,304.0,0.073,0.0325,0.044 +DH024,304.0,306.0,0.188,0.023,0.257 +DH024,306.0,308.0,0.057,0.053,0.047 +DH024,308.0,310.0,0.183,0.0156,0.175 +DH024,310.0,312.0,0.193,0.0106,0.15 +DH024,312.0,314.0,0.023,0.0168,0.025 +DH024,314.0,316.0,0.072,0.079,0.053 +DH024,316.0,318.0,0.035,0.0242,0.05 +DH024,318.0,320.0,0.067,0.02,0.085 +DH024,320.0,322.0,0.037,0.0109,0.019 +DH024,322.0,324.0,0.087,0.0129,0.069 +DH024,324.0,326.0,0.078,0.0285,0.078 +DH024,326.0,328.0,0.217,0.0129,0.246 +DH024,328.0,330.0,0.066,0.0246,0.045 +DH024,330.0,332.0,0.261,0.0079,0.156 +DH024,332.0,334.0,0.087,0.0241,0.05 +DH024,334.0,336.0,0.137,0.0127,0.147 +DH024,336.0,338.0,0.252,0.0118,0.376 +DH024,338.0,340.0,0.103,0.0147,0.085 +DH024,340.0,342.0,0.072,0.0069,0.084 +DH024,342.0,344.0,0.07,0.0107,0.093 +DH024,344.0,346.0,0.072,0.0133,0.055 +DH024,346.0,348.0,0.102,0.019,0.136 +DH024,348.0,350.0,0.089,0.0179,0.065 +DH024,350.0,352.0,0.069,0.0245,0.055 +DH024,352.0,354.0,0.072,0.0257,0.105 +DH024,354.0,356.0,0.046,0.0162,0.052 +DH024,356.0,358.0,0.091,0.016,0.09 +DH024,358.0,360.0,0.069,0.056,0.038 +DH024,360.0,362.0,0.045,0.0169,0.04 +DH024,362.0,364.0,0.051,0.0673,0.027 +DH024,364.0,366.0,0.108,0.0145,0.108 +DH024,366.0,368.0,0.073,0.0137,0.052 +DH024,368.0,370.0,0.03,0.0103,0.027 +DH024,370.0,372.0,0.185,0.0152,0.099 +DH024,372.0,374.0,0.083,0.035,0.081 +DH024,374.0,376.0,0.128,0.0166,0.088 +DH024,376.0,378.0,0.05,0.0185,0.07 +DH024,378.0,380.0,0.045,0.0097,0.047 +DH024,380.0,382.0,0.089,0.0125,0.114 +DH024,382.0,384.0,0.026,0.0152,0.029 +DH024,384.0,386.0,0.125,0.0175,0.113 +DH024,386.0,388.0,0.05,0.0413,0.074 +DH024,388.0,390.0,0.091,0.0669,0.061 +DH024,390.0,392.0,0.039,0.0128,0.034 +DH024,392.0,394.0,0.329,0.0159,0.31 +DH024,394.0,396.0,0.048,0.0324,0.029 +DH024,396.0,398.0,0.061,0.0072,0.06 +DH024,398.0,400.0,0.231,0.0258,0.117 +DH024,400.0,402.0,0.252,0.0488,0.158 +DH024,402.0,404.0,0.081,0.0137,0.116 +DH024,404.0,406.0,0.034,0.0087,0.05 +DH024,406.0,408.0,0.157,0.0084,0.096 +DH024,408.0,410.0,0.053,0.0437,0.068 +DH024,410.0,412.0,0.032,0.0348,0.047 +DH024,412.0,414.0,0.048,0.0155,0.063 +DH024,414.0,416.0,0.076,0.0193,0.06 +DH024,416.0,418.0,0.028,0.0137,0.029 +DH024,418.0,420.0,0.072,0.0155,0.058 +DH024,420.0,422.0,0.057,0.037,0.083 +DH024,422.0,424.0,0.127,0.0188,0.162 +DH024,424.0,426.0,0.053,0.0154,0.06 +DH024,426.0,428.0,0.06,0.0216,0.063 +DH024,428.0,430.0,0.302,0.021,0.413 +DH024,430.0,431.0,0.165,0.0165,0.202 +DH025,0.0,2.0,0.198,0.0142,0.184 +DH025,2.0,4.0,0.057,0.0183,0.057 +DH025,4.0,6.0,0.16,0.0287,0.101 +DH025,6.0,8.0,0.364,0.0153,0.31 +DH025,8.0,10.0,0.035,0.0383,0.044 +DH025,10.0,12.0,0.09,0.014,0.05 +DH025,12.0,14.0,0.051,0.0232,0.045 +DH025,14.0,16.0,0.107,0.0217,0.097 +DH025,16.0,18.0,0.034,0.0085,0.043 +DH025,18.0,20.0,0.199,0.0358,0.259 +DH025,20.0,22.0,0.083,0.0122,0.049 +DH025,22.0,24.0,0.058,0.0355,0.035 +DH025,24.0,26.0,0.046,0.0156,0.066 +DH025,26.0,28.0,0.058,0.0191,0.04 +DH025,28.0,30.0,0.104,0.0208,0.149 +DH025,30.0,32.0,0.059,0.0104,0.066 +DH025,32.0,34.0,0.077,0.0275,0.048 +DH025,34.0,36.0,0.097,0.0271,0.082 +DH025,36.0,38.0,0.07,0.0417,0.1 +DH025,38.0,40.0,0.027,0.0255,0.021 +DH025,40.0,42.0,0.124,0.013,0.063 +DH025,42.0,44.0,0.059,0.0183,0.054 +DH025,44.0,46.0,0.072,0.0102,0.047 +DH025,46.0,48.0,0.091,0.0082,0.113 +DH025,48.0,50.0,0.074,0.0199,0.086 +DH025,50.0,52.0,0.1,0.0328,0.091 +DH025,52.0,54.0,0.153,0.0195,0.082 +DH025,54.0,56.0,0.105,0.0341,0.139 +DH025,56.0,58.0,0.063,0.0133,0.071 +DH025,58.0,60.0,0.052,0.0108,0.05 +DH025,60.0,62.0,0.032,0.0494,0.021 +DH025,62.0,64.0,0.257,0.0224,0.162 +DH025,64.0,66.0,0.033,0.0184,0.028 +DH025,66.0,68.0,0.209,0.021,0.201 +DH025,68.0,70.0,0.046,0.012,0.032 +DH025,70.0,72.0,0.219,0.0202,0.15 +DH025,72.0,74.0,0.208,0.0112,0.261 +DH025,74.0,76.0,0.108,0.0119,0.074 +DH025,76.0,78.0,0.053,0.0372,0.071 +DH025,78.0,80.0,0.088,0.016,0.117 +DH025,80.0,82.0,2.23,0.1437,4.213 +DH025,82.0,84.0,3.654,0.1613,7.629 +DH025,84.0,86.0,1.781,0.1731,5.087 +DH025,86.0,88.0,5.555,0.0541,12.444 +DH025,88.0,90.0,2.619,0.3635,4.665 +DH025,90.0,92.0,0.952,0.1074,2.3 +DH025,92.0,94.0,1.655,0.3904,4.139 +DH025,94.0,96.0,4.616,0.0336,10.957 +DH025,96.0,98.0,9.03,0.1946,20.966 +DH025,98.0,100.0,1.012,0.0198,2.211 +DH025,100.0,102.0,7.914,0.14,19.622 +DH025,102.0,104.0,0.136,0.0605,0.226 +DH025,104.0,106.0,4.668,0.079,7.805 +DH025,106.0,108.0,2.149,0.0857,6.42 +DH025,108.0,110.0,1.838,0.3528,5.297 +DH025,110.0,112.0,6.362,0.0644,17.944 +DH025,112.0,114.0,1.613,0.2081,2.45 +DH025,114.0,116.0,1.007,0.02,2.575 +DH025,116.0,118.0,3.307,0.0681,8.416 +DH025,118.0,120.0,1.301,0.1596,2.657 +DH025,120.0,122.0,4.239,0.1177,8.513 +DH025,122.0,124.0,8.655,0.1934,21.199 +DH025,124.0,126.0,5.109,0.1308,13.653 +DH025,126.0,128.0,3.212,0.065,9.12 +DH025,128.0,130.0,0.899,0.4424,2.626 +DH025,130.0,132.0,3.66,0.0617,7.192 +DH025,132.0,134.0,7.059,0.087,10.627 +DH025,134.0,136.0,0.138,0.065,0.409 +DH025,136.0,138.0,3.466,0.1681,10.226 +DH025,138.0,140.0,0.606,0.2619,1.504 +DH025,140.0,142.0,14.239,0.1925,26.843 +DH025,142.0,144.0,0.421,0.1672,0.955 +DH025,144.0,146.0,1.423,0.1513,4.042 +DH025,146.0,148.0,13.705,0.2506,33.308 +DH025,148.0,150.0,4.692,0.5313,8.269 +DH025,150.0,152.0,1.736,0.1897,4.098 +DH025,152.0,154.0,5.76,0.2466,15.361 +DH025,154.0,156.0,1.132,0.4531,2.245 +DH025,156.0,158.0,5.018,0.2484,7.835 +DH025,158.0,160.0,0.761,0.2615,2.031 +DH025,160.0,162.0,0.451,0.3262,1.077 +DH025,162.0,164.0,1.332,0.2303,2.13 +DH025,164.0,166.0,2.457,0.2353,5.349 +DH025,166.0,168.0,4.4,0.1211,9.809 +DH025,168.0,170.0,1.952,0.0874,3.048 +DH025,170.0,172.0,8.821,0.1608,14.048 +DH025,172.0,174.0,6.199,0.16,17.184 +DH025,174.0,176.0,6.839,0.2779,16.565 +DH025,176.0,178.0,0.281,0.116,0.796 +DH025,178.0,180.0,33.562,0.9403,90.824 +DH025,180.0,182.0,0.858,0.1298,1.396 +DH025,182.0,184.0,0.869,0.7365,1.525 +DH025,184.0,186.0,1.947,0.4146,5.753 +DH025,186.0,188.0,2.371,0.0928,4.991 +DH025,188.0,190.0,1.101,0.1339,2.7 +DH025,190.0,192.0,2.902,0.1871,4.511 +DH025,192.0,194.0,0.785,0.3849,2.245 +DH025,194.0,196.0,1.246,0.1181,3.35 +DH025,196.0,198.0,21.005,0.2121,45.712 +DH025,198.0,199.0,6.703,0.153,16.681 +DH026,0.0,2.0,0.057,0.0347,0.077 +DH026,2.0,4.0,0.19,0.0108,0.246 +DH026,4.0,6.0,0.19,0.0199,0.115 +DH026,6.0,8.0,0.07,0.0208,0.078 +DH026,8.0,10.0,0.033,0.0081,0.039 +DH026,10.0,12.0,0.134,0.0082,0.09 +DH026,12.0,14.0,0.113,0.0501,0.079 +DH026,14.0,16.0,0.102,0.0361,0.126 +DH026,16.0,18.0,0.062,0.0103,0.05 +DH026,18.0,20.0,0.08,0.02,0.06 +DH026,20.0,22.0,0.072,0.0186,0.093 +DH026,22.0,24.0,0.218,0.0201,0.207 +DH026,24.0,26.0,0.028,0.0258,0.027 +DH026,26.0,28.0,0.138,0.0368,0.202 +DH026,28.0,30.0,0.114,0.035,0.135 +DH026,30.0,32.0,0.023,0.012,0.019 +DH026,32.0,34.0,0.112,0.0225,0.069 +DH026,34.0,36.0,0.069,0.0273,0.062 +DH026,36.0,38.0,0.09,0.0153,0.13 +DH026,38.0,40.0,0.081,0.0188,0.046 +DH026,40.0,42.0,0.125,0.0191,0.108 +DH026,42.0,44.0,0.066,0.0089,0.07 +DH026,44.0,46.0,0.089,0.0235,0.096 +DH026,46.0,48.0,0.24,0.0261,0.24 +DH026,48.0,50.0,0.148,0.0159,0.174 +DH026,50.0,52.0,0.157,0.0106,0.194 +DH026,52.0,54.0,0.057,0.0433,0.065 +DH026,54.0,56.0,0.212,0.0127,0.133 +DH026,56.0,58.0,0.133,0.0255,0.127 +DH026,58.0,60.0,0.061,0.0191,0.089 +DH026,60.0,62.0,0.054,0.0244,0.041 +DH026,62.0,64.0,0.093,0.0191,0.127 +DH026,64.0,66.0,0.07,0.0197,0.072 +DH026,66.0,68.0,0.211,0.0303,0.27 +DH026,68.0,70.0,0.052,0.0121,0.058 +DH026,70.0,72.0,0.045,0.0194,0.041 +DH026,72.0,74.0,0.068,0.0111,0.091 +DH026,74.0,76.0,0.059,0.0128,0.043 +DH026,76.0,78.0,0.082,0.0141,0.052 +DH026,78.0,80.0,0.123,0.0154,0.162 +DH026,80.0,82.0,0.484,0.5695,1.271 +DH026,82.0,84.0,2.101,0.1282,5.831 +DH026,84.0,86.0,0.301,0.1212,0.64 +DH026,86.0,88.0,0.702,0.0647,1.933 +DH026,88.0,90.0,1.402,0.1692,2.654 +DH026,90.0,92.0,7.684,0.6062,12.747 +DH026,92.0,94.0,0.317,0.1125,0.848 +DH026,94.0,96.0,1.291,0.4442,3.697 +DH026,96.0,98.0,14.806,0.5138,38.815 +DH026,98.0,100.0,1.358,0.2064,3.872 +DH026,100.0,102.0,0.365,0.7243,0.638 +DH026,102.0,104.0,1.471,0.6336,3.98 +DH026,104.0,106.0,0.245,0.4995,0.488 +DH026,106.0,108.0,1.76,0.2631,4.718 +DH026,108.0,110.0,6.16,0.3551,17.808 +DH026,110.0,112.0,0.862,0.2824,2.576 +DH026,112.0,114.0,14.506,0.0727,22.248 +DH026,114.0,116.0,0.457,0.1244,0.944 +DH026,116.0,118.0,1.18,0.5573,2.517 +DH026,118.0,120.0,1.277,0.2005,3.584 +DH026,120.0,122.0,6.624,0.0897,19.465 +DH026,122.0,124.0,3.934,0.296,10.795 +DH026,124.0,126.0,5.468,0.1094,15.236 +DH026,126.0,128.0,4.201,0.0902,8.039 +DH026,128.0,130.0,1.155,0.2536,2.638 +DH026,130.0,132.0,0.563,0.0731,1.506 +DH026,132.0,134.0,3.138,0.2428,4.905 +DH026,134.0,136.0,1.059,0.2585,1.787 +DH026,136.0,138.0,1.625,1.7003,3.228 +DH026,138.0,140.0,1.574,0.1468,3.83 +DH026,140.0,142.0,8.024,0.4187,17.125 +DH026,142.0,144.0,0.399,0.0885,0.991 +DH026,144.0,146.0,1.999,0.388,4.185 +DH026,146.0,148.0,7.1,0.2999,15.833 +DH026,148.0,150.0,0.181,0.0831,0.509 +DH026,150.0,152.0,2.197,0.5292,6.569 +DH026,152.0,154.0,1.827,0.1368,4.416 +DH026,154.0,156.0,6.273,0.1437,18.749 +DH026,156.0,158.0,0.916,1.2023,2.36 +DH026,158.0,160.0,0.648,0.2687,1.416 +DH026,160.0,162.0,1.698,0.4362,4.95 +DH026,162.0,163.0,4.552,0.2202,8.296 +DH027,0.0,2.0,0.078,0.02,0.106 +DH027,2.0,4.0,0.091,0.0175,0.113 +DH027,4.0,6.0,0.067,0.0157,0.049 +DH027,6.0,8.0,0.094,0.0307,0.118 +DH027,8.0,10.0,0.027,0.0256,0.035 +DH027,10.0,12.0,0.067,0.0108,0.059 +DH027,12.0,14.0,0.156,0.0292,0.226 +DH027,14.0,16.0,0.231,0.0066,0.144 +DH027,16.0,18.0,0.028,0.0251,0.04 +DH027,18.0,20.0,0.061,0.0164,0.049 +DH027,20.0,22.0,0.034,0.0098,0.038 +DH027,22.0,24.0,0.169,0.0181,0.24 +DH027,24.0,26.0,0.023,0.0295,0.024 +DH027,26.0,28.0,0.041,0.0078,0.034 +DH027,28.0,30.0,0.046,0.0163,0.031 +DH027,30.0,32.0,0.092,0.0162,0.112 +DH027,32.0,34.0,0.03,0.0199,0.03 +DH027,34.0,36.0,0.044,0.0192,0.036 +DH027,36.0,38.0,0.087,0.0366,0.053 +DH027,38.0,40.0,0.05,0.0383,0.041 +DH027,40.0,42.0,0.114,0.0339,0.084 +DH027,42.0,44.0,0.132,0.0312,0.107 +DH027,44.0,46.0,0.398,0.0202,0.248 +DH027,46.0,48.0,0.103,0.0128,0.1 +DH027,48.0,50.0,0.114,0.0136,0.08 +DH027,50.0,52.0,0.144,0.0121,0.128 +DH027,52.0,54.0,0.112,0.0153,0.128 +DH027,54.0,56.0,0.084,0.0107,0.049 +DH027,56.0,58.0,0.095,0.0068,0.112 +DH027,58.0,60.0,0.028,0.008,0.033 +DH027,60.0,62.0,0.072,0.0161,0.08 +DH027,62.0,64.0,0.055,0.0221,0.07 +DH027,64.0,66.0,0.134,0.0297,0.136 +DH027,66.0,68.0,0.027,0.0125,0.031 +DH027,68.0,70.0,0.052,0.0108,0.058 +DH027,70.0,72.0,0.353,0.0143,0.485 +DH027,72.0,74.0,0.037,0.0341,0.025 +DH027,74.0,76.0,0.133,0.0361,0.136 +DH027,76.0,78.0,0.068,0.0431,0.054 +DH027,78.0,80.0,0.022,0.023,0.02 +DH027,80.0,82.0,6.539,0.3093,14.283 +DH027,82.0,84.0,3.073,0.2641,6.05 +DH027,84.0,86.0,4.44,0.7384,11.069 +DH027,86.0,88.0,2.288,0.559,4.638 +DH027,88.0,90.0,6.673,0.2631,16.077 +DH027,90.0,92.0,3.026,0.2265,6.214 +DH027,92.0,94.0,0.906,0.5621,1.578 +DH027,94.0,96.0,0.377,0.1919,1.122 +DH027,96.0,98.0,4.451,0.24,12.281 +DH027,98.0,100.0,13.003,0.5337,24.111 +DH027,100.0,102.0,2.958,0.2168,6.388 +DH027,102.0,104.0,1.113,0.2476,2.734 +DH027,104.0,106.0,0.385,0.2471,0.606 +DH027,106.0,108.0,1.664,0.2985,4.007 +DH027,108.0,110.0,0.804,0.1705,1.344 +DH027,110.0,112.0,0.822,0.1387,1.26 +DH027,112.0,114.0,4.495,0.2883,10.85 +DH027,114.0,116.0,10.517,0.475,26.868 +DH027,116.0,118.0,9.669,0.2898,21.99 +DH027,118.0,120.0,3.42,0.2186,9.431 +DH027,120.0,122.0,2.786,0.1703,8.345 +DH027,122.0,124.0,4.19,0.1655,11.602 +DH027,124.0,126.0,3.967,0.169,7.986 +DH027,126.0,128.0,2.846,0.2543,4.307 +DH027,128.0,130.0,16.781,0.1261,35.927 +DH027,130.0,132.0,0.504,0.3991,1.353 +DH027,132.0,134.0,1.266,0.1476,2.865 +DH027,134.0,136.0,0.496,0.0371,1.28 +DH027,136.0,138.0,0.176,0.4419,0.296 +DH027,138.0,140.0,1.827,0.631,5.145 +DH027,140.0,142.0,15.167,0.1549,33.835 +DH027,142.0,144.0,2.022,0.8749,3.596 +DH027,144.0,146.0,1.199,0.2903,2.368 +DH027,146.0,148.0,2.008,1.8241,4.375 +DH027,148.0,150.0,7.411,0.4105,16.011 +DH027,150.0,152.0,1.337,0.5038,2.278 +DH027,152.0,154.0,3.339,0.0603,7.139 +DH027,154.0,156.0,3.142,0.212,7.186 +DH027,156.0,158.0,1.362,0.139,2.598 +DH027,158.0,160.0,1.275,1.2769,3.241 +DH027,160.0,162.0,0.696,1.1377,1.412 +DH027,162.0,164.0,2.306,0.4575,6.885 +DH027,164.0,166.0,1.675,0.141,2.898 +DH027,166.0,168.0,3.47,0.2098,9.819 +DH027,168.0,170.0,7.99,0.284,21.026 +DH027,170.0,172.0,2.658,0.9692,5.544 +DH027,172.0,174.0,1.2,0.0485,3.043 +DH027,174.0,176.0,1.271,0.2046,2.009 +DH027,176.0,178.0,3.392,0.1416,7.374 +DH027,178.0,180.0,4.642,0.6673,11.66 +DH027,180.0,182.0,2.982,0.0486,4.931 +DH027,182.0,184.0,1.098,0.5532,2.193 +DH027,184.0,186.0,0.836,0.2297,1.889 +DH027,186.0,188.0,0.867,1.0931,2.17 +DH027,188.0,190.0,2.551,0.1618,5.068 +DH027,190.0,192.0,9.796,0.8445,27.157 +DH027,192.0,194.0,8.339,0.3464,18.48 +DH027,194.0,196.0,1.993,0.1921,5.537 +DH027,196.0,198.0,6.998,0.7808,19.871 +DH027,198.0,200.0,1.958,0.0312,5.01 +DH027,200.0,202.0,1.387,0.0925,3.726 +DH027,202.0,204.0,0.462,0.1494,1.35 +DH027,204.0,206.0,9.447,0.1372,25.339 +DH027,206.0,208.0,2.815,0.4596,8.334 +DH027,208.0,210.0,2.138,0.0574,4.456 +DH027,210.0,212.0,2.173,0.2805,6.29 +DH027,212.0,214.0,8.75,0.2256,19.474 +DH027,214.0,216.0,1.284,1.0438,2.739 +DH027,216.0,218.0,7.831,0.097,21.154 +DH027,218.0,220.0,0.982,0.2586,1.509 +DH027,220.0,222.0,1.237,0.1668,3.374 +DH027,222.0,224.0,1.794,0.5437,5.305 +DH027,224.0,226.0,3.373,0.6731,6.412 +DH027,226.0,228.0,1.18,0.4674,3.499 +DH027,228.0,230.0,2.166,0.0971,6.492 +DH027,230.0,232.0,1.855,0.0812,2.784 +DH027,232.0,234.0,8.483,0.9835,17.576 +DH027,234.0,236.0,7.561,0.307,16.499 +DH027,236.0,238.0,0.221,0.8197,0.523 +DH027,238.0,240.0,11.697,0.3428,21.791 +DH027,240.0,242.0,3.236,1.2292,9.089 +DH027,242.0,244.0,1.203,0.1262,2.948 +DH027,244.0,246.0,1.825,0.5826,4.892 +DH027,246.0,248.0,0.292,0.322,0.62 +DH027,248.0,250.0,2.327,0.2723,4.771 +DH027,250.0,252.0,0.148,0.0126,0.111 +DH027,252.0,254.0,0.105,0.0178,0.111 +DH027,254.0,256.0,0.03,0.0173,0.037 +DH027,256.0,258.0,0.029,0.0181,0.026 +DH027,258.0,260.0,0.098,0.0113,0.095 +DH027,260.0,262.0,0.036,0.0356,0.051 +DH027,262.0,264.0,0.061,0.0525,0.049 +DH027,264.0,266.0,0.101,0.0312,0.123 +DH027,266.0,268.0,0.037,0.0128,0.029 +DH027,268.0,270.0,0.261,0.0125,0.243 +DH027,270.0,272.0,0.106,0.025,0.141 +DH027,272.0,274.0,0.049,0.014,0.044 +DH027,274.0,276.0,0.175,0.0163,0.153 +DH027,276.0,278.0,0.044,0.0465,0.029 +DH027,278.0,280.0,0.157,0.0186,0.138 +DH027,280.0,281.0,0.033,0.0062,0.049 +DH028,0.0,2.0,0.086,0.0203,0.107 +DH028,2.0,4.0,0.048,0.0312,0.048 +DH028,4.0,6.0,0.057,0.0256,0.051 +DH028,6.0,8.0,0.076,0.0462,0.071 +DH028,8.0,10.0,0.173,0.0222,0.151 +DH028,10.0,12.0,0.187,0.0212,0.095 +DH028,12.0,14.0,0.188,0.0342,0.129 +DH028,14.0,16.0,0.008,0.0228,0.004 +DH028,16.0,18.0,0.08,0.0248,0.061 +DH028,18.0,20.0,0.123,0.016,0.073 +DH028,20.0,22.0,0.131,0.024,0.195 +DH028,22.0,24.0,0.164,0.0305,0.209 +DH028,24.0,26.0,0.149,0.02,0.178 +DH028,26.0,28.0,0.159,0.0134,0.158 +DH028,28.0,30.0,0.023,0.0252,0.013 +DH028,30.0,32.0,0.254,0.0208,0.301 +DH028,32.0,34.0,0.07,0.0128,0.055 +DH028,34.0,36.0,0.067,0.0126,0.077 +DH028,36.0,38.0,0.104,0.0111,0.113 +DH028,38.0,40.0,0.099,0.0239,0.135 +DH028,40.0,42.0,0.114,0.0402,0.122 +DH028,42.0,44.0,0.41,0.0863,0.45 +DH028,44.0,46.0,0.022,0.0182,0.028 +DH028,46.0,48.0,0.078,0.026,0.09 +DH028,48.0,50.0,0.054,0.014,0.072 +DH028,50.0,52.0,0.136,0.0144,0.156 +DH028,52.0,54.0,0.116,0.0166,0.109 +DH028,54.0,56.0,0.047,0.0104,0.043 +DH028,56.0,58.0,0.105,0.0119,0.141 +DH028,58.0,60.0,0.261,0.0134,0.26 +DH028,60.0,62.0,0.02,0.0314,0.012 +DH028,62.0,64.0,0.147,0.0113,0.185 +DH028,64.0,66.0,0.05,0.0165,0.068 +DH028,66.0,68.0,0.077,0.0526,0.081 +DH028,68.0,70.0,0.201,0.0081,0.211 +DH028,70.0,72.0,0.06,0.0395,0.035 +DH028,72.0,74.0,0.023,0.0095,0.025 +DH028,74.0,76.0,0.144,0.0274,0.094 +DH028,76.0,78.0,0.059,0.0262,0.073 +DH028,78.0,80.0,0.051,0.0104,0.066 +DH028,80.0,82.0,3.48,0.1791,9.92 +DH028,82.0,84.0,2.516,0.3322,4.958 +DH028,84.0,86.0,4.652,0.5073,10.739 +DH028,86.0,88.0,4.579,0.2043,7.65 +DH028,88.0,90.0,2.407,0.0891,3.787 +DH028,90.0,92.0,0.313,0.2798,0.714 +DH028,92.0,94.0,1.3,0.256,2.582 +DH028,94.0,96.0,4.115,0.2335,10.259 +DH028,96.0,98.0,11.087,0.2628,23.741 +DH028,98.0,100.0,12.181,0.684,35.701 +DH028,100.0,102.0,1.548,0.0711,2.355 +DH028,102.0,104.0,8.277,0.2963,16.887 +DH028,104.0,106.0,6.322,0.4701,17.029 +DH028,106.0,108.0,7.287,0.3688,15.802 +DH028,108.0,110.0,10.232,0.0809,25.096 +DH028,110.0,112.0,1.843,0.1153,2.95 +DH028,112.0,114.0,10.724,0.6054,21.375 +DH028,114.0,116.0,0.291,0.0766,0.615 +DH028,116.0,118.0,2.136,0.1498,5.571 +DH028,118.0,120.0,12.795,1.0246,19.483 +DH028,120.0,122.0,4.267,0.4918,6.416 +DH028,122.0,124.0,49.863,0.1052,137.762 +DH028,124.0,126.0,0.718,0.7789,1.295 +DH028,126.0,128.0,1.158,0.1118,2.816 +DH028,128.0,130.0,3.435,0.6896,8.404 +DH028,130.0,132.0,4.112,0.2837,11.109 +DH028,132.0,134.0,1.872,0.0865,3.941 +DH028,134.0,136.0,5.548,0.4927,9.772 +DH028,136.0,138.0,1.908,0.7723,4.152 +DH028,138.0,140.0,11.778,0.7125,29.998 +DH028,140.0,142.0,3.401,0.3043,7.941 +DH028,142.0,144.0,0.56,0.0906,1.154 +DH028,144.0,146.0,1.955,0.1709,4.687 +DH028,146.0,148.0,2.662,0.2067,5.451 +DH028,148.0,150.0,24.918,0.3215,73.156 +DH028,150.0,152.0,4.836,0.2248,9.272 +DH028,152.0,154.0,0.791,0.1539,1.504 +DH028,154.0,156.0,5.841,0.3358,12.017 +DH028,156.0,158.0,4.999,0.3133,13.566 +DH028,158.0,160.0,0.641,0.1414,1.042 +DH028,160.0,162.0,0.103,0.0996,0.25 +DH028,162.0,164.0,3.464,0.1651,8.778 +DH028,164.0,166.0,0.214,0.2796,0.467 +DH028,166.0,168.0,1.924,0.0541,3.403 +DH028,168.0,170.0,10.331,0.2744,19.102 +DH028,170.0,172.0,38.136,0.0818,59.151 +DH028,172.0,174.0,0.641,0.0974,1.374 +DH028,174.0,176.0,4.775,0.6265,10.225 +DH028,176.0,178.0,0.662,0.3272,1.423 +DH028,178.0,180.0,2.97,0.2782,6.185 +DH028,180.0,182.0,2.504,0.193,7.426 +DH028,182.0,184.0,32.27,0.2576,84.753 +DH028,184.0,186.0,3.025,0.1318,8.771 +DH028,186.0,188.0,3.779,0.1594,11.133 +DH028,188.0,190.0,2.277,0.1027,3.958 +DH028,190.0,192.0,2.958,0.4811,6.975 +DH028,192.0,194.0,1.952,0.1529,5.491 +DH028,194.0,196.0,3.442,0.3286,9.838 +DH028,196.0,198.0,1.996,0.4953,5.765 +DH028,198.0,200.0,43.61,0.4108,93.794 +DH028,200.0,202.0,2.78,0.414,7.944 +DH028,202.0,204.0,0.37,0.0972,0.79 +DH028,204.0,206.0,0.271,0.07,0.426 +DH028,206.0,208.0,1.704,0.1279,3.597 +DH028,208.0,210.0,0.381,0.3288,0.96 +DH028,210.0,212.0,1.17,0.2945,3.323 +DH028,212.0,214.0,0.955,0.0454,2.375 +DH028,214.0,216.0,2.447,0.1475,6.291 +DH028,216.0,218.0,2.26,0.3277,6.434 +DH028,218.0,220.0,15.89,0.3921,44.853 +DH028,220.0,222.0,5.397,0.232,11.162 +DH028,222.0,224.0,10.545,0.1088,15.838 +DH028,224.0,226.0,9.278,0.2857,15.086 +DH028,226.0,228.0,0.287,0.0363,0.75 +DH028,228.0,230.0,3.223,0.1398,9.294 +DH028,230.0,232.0,0.714,0.1712,2.079 +DH028,232.0,234.0,0.408,0.0414,0.679 +DH028,234.0,236.0,7.58,0.1013,19.211 +DH028,236.0,238.0,7.014,0.2261,10.992 +DH028,238.0,240.0,2.611,0.1599,6.651 +DH028,240.0,242.0,21.154,0.7117,38.516 +DH028,242.0,244.0,1.317,0.2239,2.311 +DH028,244.0,246.0,0.28,0.0553,0.716 +DH028,246.0,248.0,1.138,0.0679,2.953 +DH028,248.0,250.0,3.556,0.1156,5.763 +DH028,250.0,252.0,0.046,0.0077,0.033 +DH028,252.0,254.0,0.104,0.0155,0.112 +DH028,254.0,256.0,0.198,0.0246,0.219 +DH028,256.0,258.0,0.058,0.0188,0.073 +DH028,258.0,260.0,0.059,0.0175,0.041 +DH028,260.0,262.0,0.104,0.0095,0.086 +DH028,262.0,264.0,0.099,0.0165,0.053 +DH028,264.0,266.0,0.066,0.0131,0.063 +DH028,266.0,268.0,0.117,0.0142,0.113 +DH028,268.0,270.0,0.074,0.0139,0.1 +DH028,270.0,272.0,0.099,0.0184,0.117 +DH028,272.0,274.0,0.128,0.0135,0.104 +DH028,274.0,276.0,0.13,0.0222,0.157 +DH028,276.0,278.0,0.075,0.0195,0.058 +DH028,278.0,280.0,0.09,0.0074,0.067 +DH028,280.0,282.0,0.046,0.0211,0.028 +DH028,282.0,284.0,0.049,0.007,0.069 +DH028,284.0,286.0,0.266,0.0164,0.338 +DH028,286.0,288.0,0.136,0.0185,0.193 +DH028,288.0,290.0,0.143,0.0232,0.164 +DH028,290.0,292.0,0.076,0.0154,0.084 +DH028,292.0,294.0,0.067,0.0339,0.075 +DH028,294.0,296.0,0.194,0.0232,0.135 +DH028,296.0,298.0,0.111,0.0132,0.126 +DH028,298.0,300.0,0.061,0.0171,0.044 +DH028,300.0,302.0,0.112,0.0104,0.067 +DH028,302.0,304.0,0.097,0.0217,0.136 +DH028,304.0,306.0,0.213,0.0275,0.317 +DH028,306.0,308.0,0.053,0.0163,0.069 +DH028,308.0,310.0,0.174,0.03,0.241 +DH028,310.0,312.0,0.123,0.0276,0.124 +DH028,312.0,314.0,0.105,0.0247,0.055 +DH028,314.0,316.0,0.051,0.0131,0.047 +DH028,316.0,318.0,0.054,0.0088,0.063 +DH028,318.0,320.0,0.101,0.0094,0.065 +DH028,320.0,322.0,0.073,0.0201,0.105 +DH028,322.0,324.0,0.036,0.0238,0.045 +DH028,324.0,326.0,0.071,0.0156,0.046 +DH028,326.0,328.0,0.096,0.0407,0.141 +DH028,328.0,330.0,0.139,0.0052,0.101 +DH028,330.0,332.0,0.024,0.0619,0.028 +DH028,332.0,334.0,0.178,0.0315,0.138 +DH028,334.0,336.0,0.066,0.0121,0.064 +DH028,336.0,338.0,0.064,0.0122,0.051 +DH028,338.0,340.0,0.048,0.0155,0.055 +DH028,340.0,342.0,0.056,0.0143,0.083 +DH028,342.0,344.0,0.073,0.0153,0.046 +DH028,344.0,346.0,0.108,0.0109,0.084 +DH028,346.0,348.0,0.096,0.0075,0.117 +DH028,348.0,350.0,0.197,0.0123,0.281 +DH028,350.0,352.0,0.094,0.009,0.069 +DH028,352.0,354.0,0.062,0.0412,0.091 +DH028,354.0,356.0,0.077,0.0345,0.065 +DH028,356.0,358.0,0.097,0.0316,0.053 +DH028,358.0,360.0,0.039,0.0088,0.035 +DH028,360.0,362.0,0.104,0.0311,0.106 +DH028,362.0,364.0,0.035,0.0056,0.052 +DH028,364.0,366.0,0.113,0.0196,0.118 +DH028,366.0,368.0,0.035,0.0123,0.025 +DH028,368.0,370.0,0.122,0.0125,0.16 +DH028,370.0,372.0,0.06,0.0156,0.075 +DH028,372.0,374.0,0.073,0.0101,0.101 +DH028,374.0,376.0,0.096,0.0097,0.111 +DH028,376.0,378.0,0.17,0.0196,0.241 +DH028,378.0,380.0,0.06,0.008,0.083 +DH028,380.0,382.0,0.099,0.0117,0.06 +DH028,382.0,384.0,0.132,0.0075,0.077 +DH028,384.0,386.0,0.045,0.0402,0.038 +DH028,386.0,388.0,0.217,0.0184,0.249 +DH028,388.0,390.0,0.039,0.0218,0.039 +DH028,390.0,392.0,0.071,0.0411,0.04 +DH028,392.0,394.0,0.182,0.0083,0.131 +DH028,394.0,396.0,0.066,0.0261,0.068 +DH028,396.0,398.0,0.061,0.0276,0.036 +DH028,398.0,400.0,0.054,0.0129,0.034 +DH028,400.0,402.0,0.077,0.0368,0.093 +DH028,402.0,404.0,0.079,0.0248,0.057 +DH028,404.0,406.0,0.057,0.0212,0.078 +DH028,406.0,408.0,0.093,0.038,0.113 +DH028,408.0,410.0,0.061,0.0171,0.074 +DH028,410.0,412.0,0.063,0.0394,0.06 +DH028,412.0,414.0,0.099,0.0265,0.115 +DH028,414.0,416.0,0.059,0.0176,0.042 +DH028,416.0,418.0,0.061,0.0107,0.051 +DH028,418.0,420.0,0.104,0.0303,0.071 +DH028,420.0,422.0,0.304,0.032,0.208 +DH028,422.0,424.0,0.109,0.0139,0.112 +DH028,424.0,426.0,0.035,0.0159,0.029 +DH028,426.0,428.0,0.079,0.0106,0.096 +DH028,428.0,430.0,0.291,0.0215,0.362 +DH028,430.0,432.0,0.108,0.0547,0.157 +DH028,432.0,434.0,0.015,0.069,0.011 +DH028,434.0,436.0,0.073,0.0104,0.085 +DH028,436.0,438.0,0.097,0.0065,0.098 +DH028,438.0,440.0,0.163,0.012,0.182 +DH028,440.0,442.0,0.076,0.0155,0.079 +DH028,442.0,444.0,0.04,0.0237,0.035 +DH028,444.0,446.0,0.043,0.0115,0.06 +DH028,446.0,448.0,0.046,0.02,0.04 +DH029,0.0,2.0,0.079,0.01,0.103 +DH029,2.0,4.0,0.074,0.017,0.039 +DH029,4.0,6.0,0.124,0.0186,0.129 +DH029,6.0,8.0,0.099,0.0514,0.07 +DH029,8.0,10.0,0.135,0.0196,0.094 +DH029,10.0,12.0,0.161,0.0197,0.195 +DH029,12.0,14.0,0.071,0.0113,0.094 +DH029,14.0,16.0,0.124,0.0201,0.093 +DH029,16.0,18.0,0.046,0.0179,0.049 +DH029,18.0,20.0,0.023,0.009,0.03 +DH029,20.0,22.0,0.048,0.0212,0.066 +DH029,22.0,24.0,0.076,0.037,0.08 +DH029,24.0,26.0,0.076,0.0179,0.102 +DH029,26.0,28.0,0.087,0.0196,0.086 +DH029,28.0,30.0,0.048,0.0317,0.053 +DH029,30.0,32.0,0.184,0.0235,0.144 +DH029,32.0,34.0,0.05,0.0473,0.061 +DH029,34.0,36.0,0.076,0.0196,0.082 +DH029,36.0,38.0,0.089,0.0131,0.068 +DH029,38.0,40.0,0.243,0.0175,0.145 +DH029,40.0,42.0,0.036,0.0195,0.052 +DH029,42.0,44.0,0.095,0.0081,0.052 +DH029,44.0,46.0,0.043,0.0187,0.061 +DH029,46.0,48.0,0.23,0.02,0.31 +DH029,48.0,50.0,0.115,0.0374,0.16 +DH029,50.0,52.0,0.101,0.0337,0.139 +DH029,52.0,54.0,0.113,0.0155,0.101 +DH029,54.0,56.0,0.162,0.0359,0.167 +DH029,56.0,58.0,0.053,0.0117,0.048 +DH029,58.0,60.0,0.047,0.0276,0.025 +DH029,60.0,62.0,0.059,0.04,0.056 +DH029,62.0,64.0,0.222,0.0215,0.244 +DH029,64.0,66.0,0.213,0.0298,0.166 +DH029,66.0,68.0,0.046,0.0084,0.051 +DH029,68.0,70.0,0.047,0.0097,0.046 +DH029,70.0,72.0,0.031,0.0112,0.025 +DH029,72.0,74.0,0.108,0.0151,0.068 +DH029,74.0,76.0,0.063,0.0178,0.066 +DH029,76.0,78.0,0.058,0.0135,0.083 +DH029,78.0,80.0,0.154,0.0269,0.141 +DH029,80.0,82.0,0.531,0.1968,1.186 +DH029,82.0,84.0,0.648,0.1961,0.983 +DH029,84.0,86.0,1.954,0.1547,3.243 +DH029,86.0,88.0,3.84,0.439,8.995 +DH029,88.0,90.0,6.506,0.7926,14.224 +DH029,90.0,92.0,36.226,0.5909,63.658 +DH029,92.0,94.0,6.152,0.3939,17.298 +DH029,94.0,96.0,1.259,0.1029,1.964 +DH029,96.0,98.0,0.983,0.3362,2.068 +DH029,98.0,100.0,3.957,0.0722,8.0 +DH029,100.0,102.0,2.85,0.252,4.715 +DH029,102.0,104.0,1.406,0.2934,2.656 +DH029,104.0,106.0,2.823,1.3198,5.94 +DH029,106.0,108.0,1.127,0.9967,3.002 +DH029,108.0,110.0,0.324,0.1234,0.713 +DH029,110.0,112.0,0.257,0.1669,0.533 +DH029,112.0,114.0,9.176,0.3692,23.013 +DH029,114.0,116.0,0.762,0.4529,1.666 +DH029,116.0,118.0,3.573,0.3129,6.429 +DH029,118.0,120.0,7.888,0.9274,22.506 +DH029,120.0,122.0,1.091,0.196,1.731 +DH029,122.0,124.0,1.444,0.3747,3.392 +DH029,124.0,126.0,7.424,0.3002,13.122 +DH029,126.0,128.0,1.22,0.1422,1.855 +DH029,128.0,130.0,19.176,1.066,41.131 +DH029,130.0,132.0,2.566,0.0751,5.609 +DH029,132.0,134.0,0.862,0.8224,1.771 +DH029,134.0,136.0,3.53,0.1109,9.939 +DH029,136.0,138.0,4.949,0.5054,8.415 +DH029,138.0,140.0,5.548,0.1313,12.789 +DH029,140.0,142.0,7.409,0.291,15.028 +DH029,142.0,144.0,1.592,0.5028,4.16 +DH029,144.0,146.0,0.717,0.3611,1.979 +DH029,146.0,148.0,0.389,0.6575,0.914 +DH029,148.0,150.0,1.752,0.1359,2.695 +DH029,150.0,152.0,0.77,0.3951,1.896 +DH029,152.0,154.0,7.246,0.1371,20.229 +DH029,154.0,156.0,0.226,0.0628,0.628 +DH029,156.0,158.0,3.931,0.2932,6.967 +DH029,158.0,160.0,4.417,0.2836,12.423 +DH029,160.0,162.0,4.578,0.103,8.954 +DH029,162.0,164.0,4.918,0.6996,8.135 +DH029,164.0,166.0,3.309,0.0836,7.412 +DH029,166.0,168.0,0.656,0.2924,1.922 +DH029,168.0,170.0,1.327,0.4112,2.296 +DH029,170.0,172.0,4.12,0.1162,11.039 +DH029,172.0,174.0,0.884,0.1903,1.83 +DH029,174.0,176.0,20.352,0.1813,41.128 +DH029,176.0,178.0,11.871,0.3196,31.276 +DH029,178.0,180.0,1.317,0.1046,3.373 +DH029,180.0,182.0,2.368,0.0556,5.9 +DH029,182.0,184.0,9.463,0.2529,20.921 +DH029,184.0,186.0,0.678,0.1071,1.876 +DH029,186.0,188.0,2.042,0.0583,3.234 +DH029,188.0,190.0,2.636,0.1558,5.566 +DH029,190.0,192.0,0.621,0.5322,1.408 +DH029,192.0,194.0,3.953,0.2714,6.484 +DH029,194.0,196.0,1.269,0.1893,3.768 +DH029,196.0,198.0,12.152,0.0839,27.656 +DH029,198.0,200.0,6.093,1.0057,17.087 +DH029,200.0,202.0,0.856,0.6188,2.415 +DH029,202.0,204.0,7.794,0.4192,23.101 +DH029,204.0,206.0,4.306,0.4989,9.708 +DH029,206.0,208.0,1.656,0.0635,4.502 +DH029,208.0,210.0,2.859,0.1067,4.377 +DH029,210.0,212.0,2.679,0.1427,6.529 +DH029,212.0,214.0,6.188,0.2236,14.51 +DH029,214.0,216.0,11.238,0.226,18.379 +DH029,216.0,218.0,0.116,0.5083,0.231 +DH029,218.0,220.0,2.866,0.4453,7.861 +DH029,220.0,222.0,2.81,0.1821,4.989 +DH029,222.0,224.0,3.688,0.6822,9.058 +DH029,224.0,226.0,13.089,0.3007,30.895 +DH029,226.0,228.0,39.89,0.8371,96.179 +DH029,228.0,230.0,0.855,1.2888,2.093 +DH029,230.0,232.0,1.694,0.0397,2.603 +DH029,232.0,234.0,0.607,0.3093,1.329 +DH029,234.0,236.0,19.245,0.3469,53.397 +DH029,236.0,238.0,0.652,0.7705,1.947 +DH029,238.0,240.0,2.857,0.1346,6.558 +DH029,240.0,242.0,1.197,0.1073,2.589 +DH029,242.0,244.0,1.309,0.2448,3.08 +DH029,244.0,246.0,3.172,0.5674,7.096 +DH029,246.0,248.0,1.324,0.3941,2.353 +DH029,248.0,250.0,0.792,0.4711,2.121 +DH029,250.0,252.0,0.051,0.0234,0.052 +DH029,252.0,254.0,0.06,0.0139,0.033 +DH029,254.0,256.0,0.065,0.0317,0.094 +DH029,256.0,258.0,0.146,0.0237,0.126 +DH029,258.0,260.0,0.031,0.0115,0.045 +DH029,260.0,262.0,0.052,0.0299,0.028 +DH029,262.0,264.0,0.309,0.0125,0.221 +DH029,264.0,266.0,0.213,0.0163,0.175 +DH029,266.0,268.0,0.173,0.0178,0.112 +DH029,268.0,270.0,0.056,0.0056,0.057 +DH029,270.0,272.0,0.054,0.0107,0.062 +DH029,272.0,274.0,0.034,0.0274,0.031 +DH029,274.0,276.0,0.065,0.0177,0.087 +DH029,276.0,278.0,0.129,0.0201,0.099 +DH029,278.0,280.0,0.111,0.0133,0.08 +DH029,280.0,282.0,0.146,0.0258,0.188 +DH029,282.0,284.0,0.105,0.0344,0.101 +DH029,284.0,286.0,0.058,0.0087,0.042 +DH029,286.0,288.0,0.068,0.0381,0.056 +DH029,288.0,290.0,0.057,0.0135,0.063 +DH029,290.0,292.0,0.082,0.0097,0.048 +DH029,292.0,294.0,0.075,0.0633,0.045 +DH029,294.0,296.0,0.213,0.0367,0.249 +DH029,296.0,298.0,0.065,0.0116,0.053 +DH029,298.0,300.0,0.082,0.0185,0.061 +DH029,300.0,302.0,0.325,0.0161,0.252 +DH029,302.0,304.0,0.056,0.016,0.072 +DH029,304.0,306.0,0.082,0.0182,0.056 +DH029,306.0,308.0,0.094,0.026,0.094 +DH029,308.0,310.0,0.094,0.0162,0.077 +DH029,310.0,312.0,0.1,0.0169,0.115 +DH029,312.0,314.0,0.077,0.0186,0.077 +DH029,314.0,316.0,0.059,0.0268,0.069 +DH029,316.0,318.0,0.239,0.0135,0.188 +DH029,318.0,320.0,0.026,0.0277,0.015 +DH029,320.0,322.0,0.045,0.0216,0.067 +DH029,322.0,324.0,0.052,0.0144,0.056 +DH029,324.0,326.0,0.047,0.0178,0.031 +DH029,326.0,328.0,0.134,0.028,0.163 +DH029,328.0,330.0,0.154,0.0135,0.103 +DH029,330.0,332.0,0.047,0.0221,0.046 +DH029,332.0,334.0,0.089,0.0146,0.046 +DH029,334.0,336.0,0.034,0.0378,0.018 +DH029,336.0,338.0,0.044,0.011,0.055 +DH029,338.0,340.0,0.144,0.0103,0.161 +DH029,340.0,342.0,0.078,0.0115,0.101 +DH029,342.0,344.0,0.234,0.0091,0.307 +DH029,344.0,346.0,0.145,0.0204,0.191 +DH029,346.0,348.0,0.146,0.0304,0.21 +DH029,348.0,350.0,0.057,0.0146,0.051 +DH029,350.0,352.0,0.037,0.0356,0.046 +DH029,352.0,354.0,0.071,0.0219,0.049 +DH029,354.0,356.0,0.265,0.0399,0.154 +DH029,356.0,358.0,0.068,0.0235,0.089 +DH029,358.0,360.0,0.239,0.0414,0.28 +DH029,360.0,362.0,0.074,0.0126,0.085 +DH029,362.0,364.0,0.072,0.0295,0.098 +DH029,364.0,366.0,0.017,0.0082,0.016 +DH029,366.0,368.0,0.055,0.0201,0.053 +DH029,368.0,370.0,0.04,0.0115,0.044 +DH029,370.0,372.0,0.059,0.0136,0.084 +DH029,372.0,374.0,0.045,0.0153,0.027 +DH029,374.0,376.0,0.133,0.017,0.179 +DH029,376.0,378.0,0.041,0.0179,0.044 +DH029,378.0,380.0,0.039,0.0177,0.044 +DH029,380.0,382.0,0.049,0.0172,0.053 +DH029,382.0,384.0,0.034,0.0124,0.036 +DH029,384.0,386.0,0.064,0.0164,0.094 +DH029,386.0,388.0,0.056,0.0235,0.054 +DH029,388.0,390.0,0.066,0.0212,0.072 +DH029,390.0,392.0,0.101,0.0086,0.06 +DH029,392.0,394.0,0.102,0.0188,0.083 +DH029,394.0,396.0,0.067,0.0134,0.09 +DH029,396.0,398.0,0.248,0.0129,0.343 +DH029,398.0,400.0,0.154,0.0176,0.201 +DH029,400.0,402.0,0.131,0.0138,0.105 +DH029,402.0,404.0,0.082,0.01,0.118 +DH029,404.0,406.0,0.055,0.0291,0.046 +DH029,406.0,408.0,0.129,0.0228,0.11 +DH029,408.0,410.0,0.249,0.0225,0.193 +DH029,410.0,412.0,0.105,0.0232,0.064 +DH029,412.0,414.0,0.051,0.0109,0.037 +DH029,414.0,416.0,0.221,0.0062,0.215 +DH029,416.0,418.0,0.086,0.0304,0.091 +DH030,0.0,2.0,0.195,0.0203,0.258 +DH030,2.0,4.0,0.077,0.0237,0.059 +DH030,4.0,6.0,0.122,0.0177,0.081 +DH030,6.0,8.0,0.043,0.0151,0.06 +DH030,8.0,10.0,0.025,0.0124,0.022 +DH030,10.0,12.0,0.057,0.0333,0.069 +DH030,12.0,14.0,0.125,0.0761,0.093 +DH030,14.0,16.0,0.089,0.0281,0.118 +DH030,16.0,18.0,0.032,0.0186,0.037 +DH030,18.0,20.0,0.158,0.0138,0.081 +DH030,20.0,22.0,0.09,0.0172,0.125 +DH030,22.0,24.0,0.049,0.0211,0.063 +DH030,24.0,26.0,0.063,0.0256,0.09 +DH030,26.0,28.0,0.123,0.0109,0.109 +DH030,28.0,30.0,0.048,0.0192,0.069 +DH030,30.0,32.0,0.177,0.0271,0.255 +DH030,32.0,34.0,0.154,0.016,0.217 +DH030,34.0,36.0,0.233,0.0169,0.229 +DH030,36.0,38.0,0.15,0.0197,0.125 +DH030,38.0,40.0,0.095,0.0181,0.067 +DH030,40.0,42.0,0.033,0.0137,0.028 +DH030,42.0,44.0,0.022,0.0283,0.026 +DH030,44.0,46.0,0.141,0.0222,0.078 +DH030,46.0,48.0,0.062,0.0125,0.086 +DH030,48.0,50.0,0.142,0.0179,0.097 +DH030,50.0,52.0,0.04,0.0203,0.046 +DH030,52.0,54.0,0.079,0.0163,0.081 +DH030,54.0,56.0,0.098,0.0242,0.06 +DH030,56.0,58.0,0.129,0.0406,0.092 +DH030,58.0,60.0,0.031,0.0182,0.019 +DH030,60.0,62.0,0.125,0.0336,0.139 +DH030,62.0,64.0,0.174,0.0217,0.21 +DH030,64.0,66.0,0.127,0.0199,0.116 +DH030,66.0,68.0,0.149,0.0227,0.182 +DH030,68.0,70.0,0.075,0.0082,0.049 +DH030,70.0,72.0,0.19,0.0098,0.174 +DH030,72.0,74.0,0.048,0.0146,0.063 +DH030,74.0,76.0,0.063,0.0254,0.038 +DH030,76.0,78.0,0.159,0.0105,0.175 +DH030,78.0,80.0,0.198,0.0398,0.152 +DH030,80.0,82.0,0.903,0.1015,1.665 +DH030,82.0,84.0,2.257,0.4397,5.495 +DH030,84.0,86.0,1.243,0.2163,3.047 +DH030,86.0,88.0,1.038,0.402,2.801 +DH030,88.0,90.0,2.638,0.2972,7.732 +DH030,90.0,92.0,4.602,0.1141,13.434 +DH030,92.0,94.0,3.024,0.1576,6.891 +DH030,94.0,96.0,3.365,0.5302,9.757 +DH030,96.0,98.0,10.913,0.2273,20.095 +DH030,98.0,100.0,1.169,0.1001,2.13 +DH030,100.0,102.0,5.017,1.0884,13.154 +DH030,102.0,104.0,0.711,0.4071,1.47 +DH030,104.0,106.0,6.058,0.2057,15.272 +DH030,106.0,108.0,1.697,0.0332,3.179 +DH030,108.0,110.0,6.944,0.579,11.049 +DH030,110.0,112.0,3.777,0.0367,10.872 +DH030,112.0,114.0,10.909,0.8175,28.166 +DH030,114.0,116.0,1.676,0.0785,2.521 +DH030,116.0,118.0,2.265,0.7807,4.334 +DH030,118.0,120.0,2.271,0.2366,4.457 +DH030,120.0,122.0,4.72,0.125,11.2 +DH030,122.0,124.0,11.527,0.06,20.992 +DH030,124.0,126.0,0.225,0.1398,0.607 +DH030,126.0,128.0,2.226,0.0778,4.298 +DH030,128.0,130.0,2.412,0.1877,5.546 +DH030,130.0,132.0,2.135,0.1401,4.749 +DH030,132.0,134.0,1.669,0.1655,2.592 +DH030,134.0,136.0,18.772,0.0601,46.926 +DH030,136.0,138.0,1.67,0.0715,4.216 +DH030,138.0,140.0,3.255,0.1117,6.954 +DH030,140.0,142.0,17.725,0.2558,32.362 +DH030,142.0,144.0,0.806,0.1776,1.699 +DH030,144.0,146.0,2.671,0.2865,6.453 +DH030,146.0,148.0,2.216,0.0888,3.999 +DH030,148.0,150.0,10.131,0.2687,28.734 +DH030,150.0,152.0,4.698,0.1885,12.269 +DH030,152.0,154.0,4.376,0.4556,9.519 +DH030,154.0,156.0,0.926,0.2674,2.117 +DH030,156.0,158.0,2.466,0.2446,6.489 +DH030,158.0,160.0,2.869,0.4035,5.358 +DH030,160.0,162.0,0.898,0.1944,1.395 +DH030,162.0,164.0,1.129,0.0612,1.7 +DH030,164.0,166.0,3.956,0.1971,8.906 +DH030,166.0,168.0,3.677,0.69,6.45 +DH030,168.0,170.0,0.546,0.2076,1.518 +DH030,170.0,172.0,0.553,0.3754,1.333 +DH030,172.0,174.0,0.13,0.3098,0.328 +DH030,174.0,176.0,1.615,0.133,3.838 +DH030,176.0,178.0,1.5,0.1752,2.66 +DH030,178.0,180.0,1.472,0.5785,4.367 +DH030,180.0,182.0,0.273,0.5859,0.745 +DH030,182.0,184.0,1.397,0.2041,3.217 +DH030,184.0,186.0,1.187,0.3345,3.222 +DH030,186.0,188.0,1.549,0.0379,4.027 +DH030,188.0,190.0,1.802,0.3814,2.779 +DH030,190.0,192.0,4.305,0.2217,8.271 +DH030,192.0,194.0,0.702,0.0874,1.322 +DH030,194.0,196.0,0.984,0.6979,1.714 +DH030,196.0,198.0,0.942,0.1796,2.663 +DH030,198.0,200.0,2.051,0.2773,3.129 +DH030,200.0,202.0,0.419,0.0399,1.202 +DH030,202.0,204.0,4.361,0.167,11.955 +DH030,204.0,206.0,2.104,0.6608,5.058 +DH030,206.0,208.0,7.858,0.0852,11.801 +DH030,208.0,210.0,9.654,0.2774,20.72 +DH030,210.0,212.0,0.421,1.0357,0.822 +DH030,212.0,214.0,0.203,0.1685,0.452 +DH030,214.0,216.0,0.605,1.7277,0.924 +DH030,216.0,218.0,0.401,0.2277,1.172 +DH030,218.0,220.0,6.28,0.1095,15.652 +DH030,220.0,222.0,0.562,1.7847,1.194 +DH030,222.0,224.0,1.869,0.1765,4.749 +DH030,224.0,226.0,0.893,0.1188,1.803 +DH030,226.0,228.0,1.147,0.0406,2.57 +DH030,228.0,230.0,6.775,0.1823,17.865 +DH030,230.0,232.0,9.059,0.1198,16.033 +DH030,232.0,234.0,0.999,0.3537,2.268 +DH030,234.0,236.0,1.666,0.43,3.74 +DH030,236.0,238.0,2.668,0.4059,5.065 +DH030,238.0,240.0,1.264,0.802,3.237 +DH030,240.0,242.0,1.392,0.1323,4.162 +DH030,242.0,244.0,2.556,0.1958,5.316 +DH030,244.0,246.0,3.338,0.2132,9.287 +DH030,246.0,248.0,10.087,0.3415,29.634 +DH030,248.0,250.0,2.248,0.3876,3.773 +DH030,250.0,252.0,0.151,0.029,0.086 +DH030,252.0,254.0,0.266,0.014,0.238 +DH030,254.0,256.0,0.072,0.0152,0.072 +DH030,256.0,258.0,0.187,0.011,0.096 +DH030,258.0,260.0,0.035,0.025,0.045 +DH030,260.0,262.0,0.042,0.0202,0.06 +DH030,262.0,264.0,0.058,0.02,0.069 +DH030,264.0,266.0,0.05,0.0112,0.025 +DH030,266.0,268.0,0.113,0.0381,0.121 +DH030,268.0,270.0,0.068,0.033,0.084 +DH030,270.0,272.0,0.045,0.0127,0.024 +DH030,272.0,274.0,0.058,0.0125,0.067 +DH030,274.0,276.0,0.208,0.0095,0.306 +DH030,276.0,278.0,0.058,0.0218,0.057 +DH030,278.0,280.0,0.1,0.0158,0.123 +DH030,280.0,282.0,0.074,0.0238,0.075 +DH030,282.0,284.0,0.138,0.0091,0.154 +DH030,284.0,286.0,0.035,0.0178,0.043 +DH030,286.0,288.0,0.054,0.0105,0.045 +DH030,288.0,290.0,0.045,0.0096,0.024 +DH030,290.0,292.0,0.226,0.0173,0.311 +DH030,292.0,294.0,0.178,0.0284,0.184 +DH030,294.0,296.0,0.058,0.023,0.034 +DH030,296.0,298.0,0.056,0.0375,0.046 +DH030,298.0,300.0,0.107,0.007,0.154 +DH030,300.0,302.0,0.055,0.0168,0.071 +DH030,302.0,304.0,0.071,0.0443,0.099 +DH030,304.0,306.0,0.094,0.011,0.113 +DH030,306.0,308.0,0.039,0.0079,0.054 +DH030,308.0,310.0,0.103,0.0113,0.119 +DH030,310.0,312.0,0.198,0.0487,0.109 +DH030,312.0,314.0,0.074,0.0265,0.054 +DH030,314.0,316.0,0.025,0.0384,0.029 +DH030,316.0,318.0,0.06,0.0153,0.083 +DH030,318.0,320.0,0.042,0.0159,0.054 +DH030,320.0,322.0,0.094,0.0222,0.074 +DH030,322.0,324.0,0.124,0.0311,0.139 +DH030,324.0,326.0,0.106,0.0293,0.154 +DH030,326.0,328.0,0.409,0.0337,0.462 +DH030,328.0,330.0,0.048,0.0161,0.061 +DH030,330.0,332.0,0.112,0.0129,0.076 +DH030,332.0,334.0,0.036,0.0081,0.023 +DH030,334.0,336.0,0.05,0.0098,0.072 +DH030,336.0,338.0,0.052,0.0184,0.056 +DH030,338.0,340.0,0.059,0.0183,0.055 +DH030,340.0,342.0,0.198,0.0197,0.152 +DH030,342.0,344.0,0.074,0.0233,0.041 +DH030,344.0,346.0,0.182,0.0071,0.119 +DH030,346.0,348.0,0.101,0.0181,0.125 +DH030,348.0,350.0,0.038,0.0274,0.042 +DH030,350.0,352.0,0.029,0.0281,0.034 +DH030,352.0,354.0,0.077,0.0116,0.087 +DH030,354.0,356.0,0.17,0.0082,0.248 +DH030,356.0,358.0,0.056,0.0181,0.079 +DH030,358.0,360.0,0.121,0.0316,0.079 +DH030,360.0,362.0,0.115,0.021,0.086 +DH030,362.0,364.0,0.038,0.011,0.027 +DH030,364.0,366.0,0.075,0.0206,0.056 +DH030,366.0,368.0,0.086,0.0118,0.058 +DH030,368.0,370.0,0.056,0.0105,0.052 +DH030,370.0,372.0,0.074,0.0275,0.085 +DH030,372.0,374.0,0.064,0.0467,0.072 +DH030,374.0,375.0,0.177,0.0419,0.231 +DH031,0.0,2.0,0.067,0.0374,0.037 +DH031,2.0,4.0,0.054,0.0151,0.064 +DH031,4.0,6.0,0.047,0.0319,0.048 +DH031,6.0,8.0,0.081,0.0089,0.111 +DH031,8.0,10.0,0.041,0.0102,0.022 +DH031,10.0,12.0,0.155,0.0228,0.091 +DH031,12.0,14.0,0.076,0.0155,0.093 +DH031,14.0,16.0,0.059,0.0278,0.056 +DH031,16.0,18.0,0.05,0.0129,0.03 +DH031,18.0,20.0,0.034,0.0145,0.037 +DH031,20.0,22.0,0.044,0.0355,0.055 +DH031,22.0,24.0,0.054,0.0147,0.047 +DH031,24.0,26.0,0.055,0.017,0.08 +DH031,26.0,28.0,0.054,0.0358,0.056 +DH031,28.0,30.0,0.152,0.0095,0.143 +DH031,30.0,32.0,0.046,0.0094,0.047 +DH031,32.0,34.0,0.094,0.0188,0.112 +DH031,34.0,36.0,0.139,0.0382,0.094 +DH031,36.0,38.0,0.202,0.0469,0.231 +DH031,38.0,40.0,0.03,0.0092,0.039 +DH031,40.0,42.0,0.275,0.0185,0.274 +DH031,42.0,44.0,0.061,0.013,0.037 +DH031,44.0,46.0,0.139,0.0175,0.188 +DH031,46.0,48.0,0.12,0.0277,0.122 +DH031,48.0,50.0,0.043,0.0118,0.042 +DH031,50.0,52.0,0.142,0.0151,0.184 +DH031,52.0,54.0,0.089,0.0158,0.074 +DH031,54.0,56.0,0.098,0.0164,0.12 +DH031,56.0,58.0,0.053,0.0249,0.065 +DH031,58.0,60.0,0.097,0.0271,0.135 +DH031,60.0,62.0,0.256,0.0221,0.237 +DH031,62.0,64.0,0.08,0.0124,0.088 +DH031,64.0,66.0,0.176,0.0111,0.254 +DH031,66.0,68.0,0.105,0.029,0.082 +DH031,68.0,70.0,0.051,0.0221,0.047 +DH031,70.0,72.0,0.039,0.0483,0.046 +DH031,72.0,74.0,0.045,0.0162,0.038 +DH031,74.0,76.0,0.022,0.0329,0.016 +DH031,76.0,78.0,0.096,0.0131,0.131 +DH031,78.0,80.0,0.088,0.0129,0.072 +DH031,80.0,82.0,2.478,0.2572,4.794 +DH031,82.0,84.0,2.222,0.0741,3.913 +DH031,84.0,86.0,4.609,0.1306,9.029 +DH031,86.0,88.0,2.312,0.1875,6.839 +DH031,88.0,90.0,0.276,0.13,0.542 +DH031,90.0,92.0,20.007,1.3893,37.646 +DH031,92.0,94.0,3.855,0.4291,10.811 +DH031,94.0,96.0,3.24,0.4681,7.44 +DH031,96.0,98.0,4.165,0.107,6.393 +DH031,98.0,100.0,1.188,0.0862,3.56 +DH031,100.0,102.0,1.339,0.1807,2.602 +DH031,102.0,104.0,4.336,0.2594,7.726 +DH031,104.0,106.0,0.742,0.4501,2.097 +DH031,106.0,108.0,1.322,0.1922,2.886 +DH031,108.0,110.0,1.177,0.1423,2.363 +DH031,110.0,112.0,4.889,0.309,12.543 +DH031,112.0,114.0,9.526,1.0673,16.756 +DH031,114.0,116.0,4.27,0.1511,8.749 +DH031,116.0,118.0,1.013,0.0688,2.612 +DH031,118.0,120.0,0.497,0.317,0.894 +DH031,120.0,122.0,8.602,0.6128,15.866 +DH031,122.0,124.0,9.931,0.2244,22.139 +DH031,124.0,126.0,5.449,0.1086,10.249 +DH031,126.0,128.0,1.853,0.1826,5.448 +DH031,128.0,130.0,3.54,0.0736,8.624 +DH031,130.0,132.0,1.473,0.1219,2.372 +DH031,132.0,134.0,0.054,0.113,0.101 +DH031,134.0,136.0,1.04,0.3042,1.68 +DH031,136.0,138.0,4.136,0.5072,11.881 +DH031,138.0,140.0,0.655,0.317,1.654 +DH031,140.0,142.0,1.319,0.1185,3.804 +DH031,142.0,144.0,0.376,0.0934,0.591 +DH031,144.0,146.0,3.821,0.2658,9.147 +DH031,146.0,148.0,0.736,0.1022,1.298 +DH031,148.0,150.0,0.854,0.1377,2.547 +DH031,150.0,152.0,3.155,0.7657,7.457 +DH031,152.0,154.0,7.584,0.2128,13.485 +DH031,154.0,156.0,0.761,0.1038,1.777 +DH031,156.0,158.0,3.682,0.9794,8.659 +DH031,158.0,160.0,1.244,0.109,2.467 +DH031,160.0,162.0,2.496,0.2234,6.502 +DH031,162.0,164.0,2.275,0.0851,3.417 +DH031,164.0,166.0,10.21,0.3232,25.506 +DH031,166.0,168.0,1.18,0.2354,2.781 +DH031,168.0,170.0,3.885,0.2061,8.825 +DH031,170.0,172.0,0.458,0.124,0.988 +DH031,172.0,174.0,6.113,0.2405,11.391 +DH031,174.0,176.0,4.094,0.1852,11.383 +DH031,176.0,178.0,12.509,0.4132,37.226 +DH031,178.0,180.0,29.971,0.0797,67.197 +DH031,180.0,182.0,0.072,0.4652,0.167 +DH031,182.0,184.0,2.503,0.0837,3.809 +DH031,184.0,186.0,2.778,0.4174,6.395 +DH031,186.0,188.0,4.936,0.202,13.436 +DH031,188.0,190.0,4.75,0.0863,10.404 +DH031,190.0,192.0,9.686,0.3238,16.578 +DH031,192.0,194.0,16.286,0.0604,44.536 +DH031,194.0,196.0,1.257,0.5359,3.56 +DH031,196.0,198.0,0.501,0.15,1.465 +DH031,198.0,200.0,1.729,0.1357,3.048 +DH031,200.0,202.0,4.81,0.9053,14.274 +DH031,202.0,204.0,64.124,0.2626,159.473 +DH031,204.0,206.0,1.318,0.2225,2.272 +DH031,206.0,208.0,0.632,0.1171,0.996 +DH031,208.0,210.0,0.345,0.3175,0.678 +DH031,210.0,212.0,0.703,1.0806,1.767 +DH031,212.0,214.0,0.573,0.1921,0.897 +DH031,214.0,216.0,2.243,0.2527,4.271 +DH031,216.0,218.0,1.918,0.1272,4.102 +DH031,218.0,220.0,1.946,0.1501,3.573 +DH031,220.0,222.0,1.924,0.5345,4.915 +DH031,222.0,224.0,10.435,0.3879,29.351 +DH031,224.0,226.0,2.061,0.1835,4.54 +DH031,226.0,228.0,5.273,0.2713,13.483 +DH031,228.0,230.0,1.934,0.3798,5.699 +DH031,230.0,232.0,0.547,0.0308,1.398 +DH031,232.0,234.0,15.172,0.1203,30.413 +DH031,234.0,236.0,3.325,0.1588,5.989 +DH031,236.0,238.0,47.168,0.2166,105.907 +DH031,238.0,240.0,0.996,0.1943,1.711 +DH031,240.0,242.0,10.618,0.2094,25.596 +DH031,242.0,244.0,1.325,0.3138,3.468 +DH031,244.0,246.0,9.339,0.6373,26.503 +DH031,246.0,248.0,2.211,0.0307,5.091 +DH031,248.0,250.0,8.244,0.4572,12.481 +DH031,250.0,252.0,0.228,0.0151,0.212 +DH031,252.0,254.0,0.062,0.0104,0.054 +DH031,254.0,256.0,0.098,0.0248,0.076 +DH031,256.0,258.0,0.079,0.0062,0.072 +DH031,258.0,260.0,0.087,0.0106,0.089 +DH031,260.0,262.0,0.07,0.0443,0.057 +DH031,262.0,264.0,0.1,0.0106,0.082 +DH031,264.0,266.0,0.097,0.0165,0.097 +DH031,266.0,268.0,0.1,0.0143,0.087 +DH031,268.0,270.0,0.068,0.0174,0.079 +DH031,270.0,272.0,0.094,0.0253,0.063 +DH031,272.0,274.0,0.109,0.0156,0.092 +DH031,274.0,276.0,0.035,0.0079,0.047 +DH031,276.0,278.0,0.022,0.0333,0.019 +DH031,278.0,280.0,0.167,0.0061,0.193 +DH031,280.0,282.0,0.196,0.0262,0.276 +DH031,282.0,284.0,0.026,0.0095,0.015 +DH031,284.0,286.0,0.067,0.0177,0.07 +DH031,286.0,288.0,0.038,0.0225,0.029 +DH031,288.0,290.0,0.098,0.0137,0.097 +DH031,290.0,292.0,0.064,0.0252,0.056 +DH031,292.0,294.0,0.084,0.0287,0.055 +DH031,294.0,296.0,0.085,0.0144,0.123 +DH031,296.0,298.0,0.098,0.0139,0.096 +DH031,298.0,300.0,0.159,0.0126,0.102 +DH031,300.0,302.0,0.337,0.0273,0.373 +DH031,302.0,304.0,0.059,0.0313,0.037 +DH031,304.0,306.0,0.102,0.0503,0.053 +DH031,306.0,308.0,0.083,0.0117,0.111 +DH031,308.0,310.0,0.059,0.0305,0.071 +DH031,310.0,312.0,0.114,0.0133,0.112 +DH031,312.0,314.0,0.081,0.014,0.114 +DH031,314.0,316.0,0.049,0.0278,0.034 +DH031,316.0,318.0,0.07,0.0218,0.042 +DH031,318.0,320.0,0.082,0.0162,0.103 +DH031,320.0,322.0,0.024,0.0101,0.023 +DH031,322.0,324.0,0.054,0.0082,0.069 +DH031,324.0,326.0,0.096,0.0196,0.08 +DH031,326.0,328.0,0.086,0.0237,0.056 +DH031,328.0,330.0,0.107,0.0123,0.135 +DH031,330.0,332.0,0.163,0.0339,0.14 +DH031,332.0,334.0,0.097,0.0186,0.125 +DH031,334.0,336.0,0.028,0.0093,0.028 +DH031,336.0,338.0,0.077,0.0371,0.075 +DH031,338.0,340.0,0.054,0.0276,0.071 +DH031,340.0,342.0,0.124,0.0274,0.089 +DH031,342.0,344.0,0.061,0.0304,0.068 +DH031,344.0,346.0,0.179,0.0181,0.156 +DH031,346.0,348.0,0.024,0.0151,0.025 +DH031,348.0,350.0,0.064,0.0262,0.048 +DH031,350.0,352.0,0.155,0.0202,0.231 +DH031,352.0,354.0,0.085,0.0408,0.057 +DH031,354.0,356.0,0.077,0.0566,0.072 +DH031,356.0,358.0,0.134,0.0215,0.096 +DH031,358.0,360.0,0.13,0.0061,0.101 +DH031,360.0,362.0,0.075,0.0143,0.094 +DH031,362.0,364.0,0.032,0.0074,0.035 +DH031,364.0,366.0,0.108,0.0055,0.126 +DH031,366.0,368.0,0.139,0.0159,0.183 +DH031,368.0,370.0,0.154,0.0093,0.156 +DH031,370.0,372.0,0.063,0.0091,0.036 +DH031,372.0,374.0,0.051,0.0133,0.033 +DH031,374.0,376.0,0.154,0.0237,0.122 +DH031,376.0,378.0,0.07,0.0248,0.097 +DH031,378.0,380.0,0.063,0.0473,0.094 +DH031,380.0,382.0,0.027,0.0222,0.038 +DH031,382.0,384.0,0.035,0.0108,0.034 +DH031,384.0,386.0,0.14,0.0336,0.102 +DH031,386.0,388.0,0.032,0.0092,0.019 +DH031,388.0,390.0,0.178,0.0226,0.135 +DH031,390.0,392.0,0.094,0.0178,0.081 +DH031,392.0,394.0,0.112,0.0167,0.165 +DH031,394.0,396.0,0.116,0.0148,0.118 +DH031,396.0,398.0,0.076,0.0286,0.087 +DH031,398.0,400.0,0.048,0.0215,0.031 +DH031,400.0,402.0,0.112,0.0307,0.062 +DH031,402.0,404.0,0.123,0.0077,0.066 +DH031,404.0,406.0,0.07,0.0378,0.036 +DH031,406.0,408.0,0.118,0.0076,0.063 +DH031,408.0,410.0,0.049,0.0631,0.064 +DH031,410.0,412.0,0.086,0.0195,0.104 +DH031,412.0,414.0,0.06,0.0224,0.061 +DH031,414.0,416.0,0.021,0.0138,0.014 +DH031,416.0,417.0,0.117,0.0337,0.097 +DH032,0.0,2.0,0.177,0.0179,0.108 +DH032,2.0,4.0,0.082,0.0066,0.12 +DH032,4.0,6.0,0.063,0.0152,0.085 +DH032,6.0,8.0,0.217,0.0141,0.134 +DH032,8.0,10.0,0.063,0.0115,0.084 +DH032,10.0,12.0,0.079,0.0177,0.088 +DH032,12.0,14.0,0.062,0.0227,0.06 +DH032,14.0,16.0,0.059,0.0148,0.03 +DH032,16.0,18.0,0.199,0.0158,0.208 +DH032,18.0,20.0,0.426,0.0147,0.22 +DH032,20.0,22.0,0.066,0.0159,0.042 +DH032,22.0,24.0,0.143,0.0224,0.211 +DH032,24.0,26.0,0.154,0.0203,0.141 +DH032,26.0,28.0,0.16,0.0105,0.159 +DH032,28.0,30.0,0.06,0.0154,0.052 +DH032,30.0,32.0,0.04,0.0298,0.054 +DH032,32.0,34.0,0.058,0.0218,0.075 +DH032,34.0,36.0,0.15,0.0555,0.088 +DH032,36.0,38.0,0.071,0.0239,0.05 +DH032,38.0,40.0,0.081,0.0106,0.048 +DH032,40.0,42.0,0.163,0.0342,0.165 +DH032,42.0,44.0,0.096,0.0333,0.119 +DH032,44.0,46.0,0.063,0.0502,0.065 +DH032,46.0,48.0,0.042,0.0194,0.026 +DH032,48.0,50.0,0.018,0.02,0.025 +DH032,50.0,52.0,0.031,0.0191,0.042 +DH032,52.0,54.0,0.081,0.0154,0.09 +DH032,54.0,56.0,0.034,0.013,0.05 +DH032,56.0,58.0,0.094,0.0177,0.116 +DH032,58.0,60.0,0.066,0.0265,0.071 +DH032,60.0,62.0,0.062,0.005,0.057 +DH032,62.0,64.0,0.061,0.0116,0.079 +DH032,64.0,66.0,0.134,0.018,0.078 +DH032,66.0,68.0,0.033,0.0157,0.029 +DH032,68.0,70.0,0.064,0.0109,0.061 +DH032,70.0,72.0,0.105,0.0304,0.07 +DH032,72.0,74.0,0.045,0.0108,0.047 +DH032,74.0,76.0,0.243,0.0225,0.251 +DH032,76.0,78.0,0.073,0.018,0.064 +DH032,78.0,80.0,0.172,0.0209,0.154 +DH032,80.0,82.0,3.187,0.3314,6.846 +DH032,82.0,84.0,0.808,0.5096,2.275 +DH032,84.0,86.0,6.948,0.8327,15.963 +DH032,86.0,88.0,3.422,2.8869,7.136 +DH032,88.0,90.0,0.601,0.1782,1.773 +DH032,90.0,92.0,0.471,0.1222,1.219 +DH032,92.0,94.0,1.606,0.2043,3.888 +DH032,94.0,96.0,0.942,0.0689,1.558 +DH032,96.0,98.0,4.473,0.2745,10.438 +DH032,98.0,100.0,0.554,0.1797,1.116 +DH032,100.0,102.0,0.816,0.1313,1.836 +DH032,102.0,104.0,2.346,0.1663,5.143 +DH032,104.0,106.0,28.168,0.2656,74.333 +DH032,106.0,108.0,6.268,0.3894,18.103 +DH032,108.0,110.0,35.25,0.2188,89.128 +DH032,110.0,112.0,4.313,0.2943,12.927 +DH032,112.0,114.0,1.096,0.4176,1.881 +DH032,114.0,116.0,7.237,0.1879,18.186 +DH032,116.0,118.0,5.357,0.2971,8.346 +DH032,118.0,120.0,11.187,0.4009,16.827 +DH032,120.0,122.0,1.269,0.2986,2.971 +DH032,122.0,124.0,0.329,0.3014,0.859 +DH032,124.0,126.0,0.132,0.261,0.309 +DH032,126.0,128.0,4.469,0.424,11.361 +DH032,128.0,130.0,0.639,0.0529,1.376 +DH032,130.0,132.0,5.174,0.5682,11.27 +DH032,132.0,134.0,5.839,0.0671,15.108 +DH032,134.0,136.0,2.589,0.3793,6.309 +DH032,136.0,138.0,4.561,0.1841,9.315 +DH032,138.0,140.0,0.74,0.1287,2.05 +DH032,140.0,142.0,5.519,0.5434,13.659 +DH032,142.0,144.0,2.221,0.3904,6.344 +DH032,144.0,146.0,1.569,0.1301,4.702 +DH032,146.0,148.0,0.83,0.156,1.252 +DH032,148.0,150.0,0.83,0.2805,1.262 +DH032,150.0,152.0,1.795,0.1151,3.432 +DH032,152.0,154.0,1.214,0.2316,3.322 +DH032,154.0,156.0,0.495,1.2697,1.119 +DH032,156.0,158.0,3.648,0.1222,10.249 +DH032,158.0,160.0,1.914,0.1628,3.732 +DH032,160.0,162.0,1.613,0.3118,2.816 +DH032,162.0,164.0,2.122,0.1263,3.692 +DH032,164.0,166.0,1.28,0.3225,2.96 +DH032,166.0,168.0,5.792,0.2229,15.597 +DH032,168.0,170.0,1.818,0.0554,4.811 +DH032,170.0,172.0,1.419,0.0972,3.839 +DH032,172.0,174.0,2.617,0.0901,4.349 +DH032,174.0,176.0,14.26,0.0619,29.783 +DH032,176.0,178.0,0.549,0.1223,1.354 +DH032,178.0,180.0,0.68,0.3532,1.495 +DH032,180.0,182.0,6.111,0.5065,9.688 +DH032,182.0,184.0,1.662,0.3243,3.26 +DH032,184.0,186.0,18.247,0.5248,28.416 +DH032,186.0,188.0,52.474,0.241,120.661 +DH032,188.0,190.0,2.753,0.1073,7.829 +DH032,190.0,192.0,0.28,0.1461,0.486 +DH032,192.0,194.0,6.956,0.5427,12.586 +DH032,194.0,196.0,26.876,0.2513,72.309 +DH032,196.0,198.0,0.319,0.1359,0.687 +DH032,198.0,200.0,2.728,0.2432,6.268 +DH032,200.0,202.0,0.394,0.2065,0.708 +DH032,202.0,204.0,8.199,0.2019,17.854 +DH032,204.0,206.0,0.491,0.1026,1.012 +DH032,206.0,208.0,4.453,0.1771,11.718 +DH032,208.0,210.0,0.845,0.2784,1.445 +DH032,210.0,212.0,2.279,0.0882,3.982 +DH032,212.0,214.0,1.179,0.1014,3.072 +DH032,214.0,216.0,30.074,1.0556,88.535 +DH032,216.0,218.0,1.618,0.2109,2.799 +DH032,218.0,220.0,1.344,0.6409,2.702 +DH032,220.0,222.0,1.561,0.4235,3.736 +DH032,222.0,224.0,1.668,0.3588,4.632 +DH032,224.0,226.0,0.471,0.0747,1.124 +DH032,226.0,228.0,0.352,0.069,1.023 +DH032,228.0,230.0,9.779,0.1738,20.273 +DH032,230.0,232.0,0.707,0.3704,1.987 +DH032,232.0,234.0,0.767,0.8867,2.127 +DH032,234.0,236.0,2.271,0.3073,3.968 +DH032,236.0,238.0,20.667,0.3383,36.372 +DH032,238.0,240.0,1.342,0.4366,2.642 +DH032,240.0,242.0,2.537,2.2403,6.594 +DH032,242.0,244.0,2.944,0.2773,4.472 +DH032,244.0,246.0,1.741,0.2401,5.142 +DH032,246.0,248.0,2.905,0.1511,8.63 +DH032,248.0,250.0,1.645,0.3519,4.315 +DH032,250.0,252.0,0.066,0.0131,0.088 +DH032,252.0,254.0,0.127,0.0226,0.071 +DH032,254.0,256.0,0.052,0.0426,0.032 +DH032,256.0,258.0,0.121,0.0114,0.147 +DH032,258.0,260.0,0.054,0.0113,0.063 +DH032,260.0,262.0,0.059,0.0224,0.031 +DH032,262.0,264.0,0.043,0.0181,0.03 +DH032,264.0,266.0,0.121,0.0277,0.076 +DH032,266.0,268.0,0.097,0.044,0.097 +DH032,268.0,270.0,0.047,0.0245,0.045 +DH032,270.0,272.0,0.072,0.0136,0.04 +DH032,272.0,274.0,0.071,0.0287,0.079 +DH032,274.0,276.0,0.143,0.0217,0.181 +DH032,276.0,278.0,0.02,0.022,0.017 +DH032,278.0,280.0,0.026,0.0169,0.014 +DH032,280.0,282.0,0.063,0.0395,0.088 +DH032,282.0,284.0,0.071,0.0366,0.095 +DH032,284.0,286.0,0.112,0.0124,0.116 +DH032,286.0,288.0,0.034,0.0179,0.05 +DH032,288.0,290.0,0.067,0.0209,0.083 +DH032,290.0,292.0,0.038,0.0142,0.025 +DH032,292.0,294.0,0.061,0.016,0.091 +DH032,294.0,296.0,0.034,0.014,0.03 +DH032,296.0,298.0,0.068,0.0194,0.053 +DH032,298.0,300.0,0.124,0.0133,0.121 +DH032,300.0,302.0,0.176,0.0222,0.251 +DH032,302.0,304.0,0.097,0.0312,0.144 +DH032,304.0,306.0,0.095,0.0311,0.102 +DH032,306.0,308.0,0.08,0.0155,0.064 +DH032,308.0,310.0,0.216,0.0208,0.145 +DH032,310.0,312.0,0.038,0.0417,0.02 +DH032,312.0,314.0,0.107,0.0154,0.113 +DH032,314.0,316.0,0.045,0.0222,0.06 +DH032,316.0,318.0,0.066,0.0133,0.057 +DH032,318.0,320.0,0.067,0.0117,0.093 +DH032,320.0,322.0,0.082,0.0443,0.065 +DH032,322.0,324.0,0.1,0.0235,0.059 +DH032,324.0,326.0,0.108,0.0211,0.064 +DH032,326.0,328.0,0.019,0.0521,0.016 +DH032,328.0,330.0,0.094,0.009,0.137 +DH032,330.0,332.0,0.054,0.0239,0.074 +DH032,332.0,334.0,0.312,0.0089,0.313 +DH032,334.0,336.0,0.023,0.0179,0.022 +DH032,336.0,338.0,0.162,0.0148,0.2 +DH032,338.0,340.0,0.044,0.0159,0.035 +DH032,340.0,342.0,0.111,0.022,0.06 +DH032,342.0,344.0,0.096,0.0255,0.082 +DH032,344.0,346.0,0.104,0.0409,0.154 +DH032,346.0,348.0,0.11,0.0257,0.091 +DH032,348.0,350.0,0.127,0.0193,0.074 +DH032,350.0,352.0,0.053,0.0151,0.076 +DH032,352.0,354.0,0.2,0.0229,0.285 +DH032,354.0,356.0,0.097,0.0327,0.105 +DH032,356.0,358.0,0.047,0.0038,0.048 +DH032,358.0,360.0,0.048,0.025,0.069 +DH032,360.0,362.0,0.16,0.0438,0.118 +DH032,362.0,364.0,0.235,0.0365,0.136 +DH032,364.0,366.0,0.08,0.0096,0.12 +DH032,366.0,368.0,0.085,0.0339,0.121 +DH032,368.0,370.0,0.146,0.0054,0.19 +DH032,370.0,372.0,0.077,0.0231,0.043 +DH032,372.0,374.0,0.043,0.0255,0.026 +DH032,374.0,376.0,0.335,0.0261,0.218 +DH032,376.0,378.0,0.038,0.0457,0.033 +DH032,378.0,380.0,0.081,0.0081,0.07 +DH032,380.0,382.0,0.12,0.0219,0.147 +DH032,382.0,384.0,0.12,0.0084,0.069 +DH032,384.0,386.0,0.093,0.0145,0.077 +DH032,386.0,388.0,0.101,0.0355,0.065 +DH032,388.0,390.0,0.089,0.0159,0.068 +DH032,390.0,392.0,0.227,0.0142,0.311 +DH032,392.0,394.0,0.048,0.0065,0.043 +DH032,394.0,396.0,0.103,0.0173,0.058 +DH032,396.0,398.0,0.099,0.0209,0.07 +DH032,398.0,400.0,0.036,0.0161,0.021 +DH032,400.0,402.0,0.105,0.0118,0.106 +DH032,402.0,404.0,0.14,0.0102,0.14 +DH032,404.0,406.0,0.183,0.0097,0.107 +DH032,406.0,408.0,0.217,0.0164,0.176 +DH032,408.0,410.0,0.153,0.0167,0.185 +DH032,410.0,412.0,0.077,0.0232,0.081 +DH032,412.0,414.0,0.048,0.016,0.033 +DH032,414.0,416.0,0.079,0.0085,0.099 +DH032,416.0,418.0,0.072,0.0316,0.087 +DH033,0.0,2.0,0.076,0.0236,0.039 +DH033,2.0,4.0,0.04,0.0056,0.025 +DH033,4.0,6.0,0.095,0.0328,0.078 +DH033,6.0,8.0,0.117,0.0156,0.101 +DH033,8.0,10.0,0.194,0.0191,0.265 +DH033,10.0,12.0,0.033,0.0082,0.04 +DH033,12.0,14.0,0.05,0.0509,0.041 +DH033,14.0,16.0,0.213,0.0285,0.238 +DH033,16.0,18.0,0.03,0.0387,0.033 +DH033,18.0,20.0,0.212,0.0256,0.107 +DH033,20.0,22.0,0.107,0.0231,0.133 +DH033,22.0,24.0,0.076,0.0374,0.071 +DH033,24.0,26.0,0.09,0.0136,0.079 +DH033,26.0,28.0,0.024,0.0229,0.014 +DH033,28.0,30.0,0.05,0.0298,0.025 +DH033,30.0,32.0,0.059,0.0296,0.063 +DH033,32.0,34.0,0.138,0.0068,0.142 +DH033,34.0,36.0,0.084,0.014,0.126 +DH033,36.0,38.0,0.045,0.0176,0.065 +DH033,38.0,40.0,0.115,0.023,0.089 +DH033,40.0,42.0,0.062,0.0158,0.055 +DH033,42.0,44.0,0.074,0.0319,0.102 +DH033,44.0,46.0,0.103,0.0091,0.15 +DH033,46.0,48.0,0.058,0.0109,0.07 +DH033,48.0,50.0,0.125,0.0299,0.176 +DH033,50.0,52.0,0.078,0.0159,0.095 +DH033,52.0,54.0,0.162,0.0177,0.238 +DH033,54.0,56.0,0.073,0.0091,0.108 +DH033,56.0,58.0,0.03,0.0149,0.031 +DH033,58.0,60.0,0.124,0.0181,0.069 +DH033,60.0,62.0,0.084,0.0184,0.069 +DH033,62.0,64.0,0.193,0.0085,0.102 +DH033,64.0,66.0,0.074,0.0271,0.083 +DH033,66.0,68.0,0.083,0.016,0.088 +DH033,68.0,70.0,0.082,0.049,0.089 +DH033,70.0,72.0,0.083,0.017,0.096 +DH033,72.0,74.0,0.058,0.0197,0.029 +DH033,74.0,76.0,0.1,0.0218,0.103 +DH033,76.0,78.0,0.087,0.0401,0.089 +DH033,78.0,80.0,0.392,0.0188,0.567 +DH033,80.0,82.0,0.931,0.6843,1.559 +DH033,82.0,84.0,3.846,0.1806,10.977 +DH033,84.0,86.0,1.679,0.1187,3.213 +DH033,86.0,88.0,14.153,0.3243,37.127 +DH033,88.0,90.0,8.285,0.1093,21.503 +DH033,90.0,92.0,4.322,0.3653,11.26 +DH033,92.0,94.0,0.823,0.3637,1.836 +DH033,94.0,96.0,1.028,0.1229,1.774 +DH033,96.0,98.0,3.286,0.0722,8.31 +DH033,98.0,100.0,0.411,0.6279,0.952 +DH033,100.0,102.0,22.104,0.381,34.098 +DH033,102.0,104.0,0.853,0.2701,1.286 +DH033,104.0,106.0,9.238,0.1062,15.328 +DH033,106.0,108.0,10.275,0.1896,22.981 +DH033,108.0,110.0,0.87,0.263,2.103 +DH033,110.0,112.0,20.407,0.0597,59.104 +DH033,112.0,114.0,1.039,0.6427,3.049 +DH033,114.0,116.0,2.577,0.5042,6.408 +DH033,116.0,118.0,3.695,0.8364,9.872 +DH033,118.0,120.0,0.887,0.3251,2.079 +DH033,120.0,122.0,2.541,0.4979,3.901 +DH033,122.0,124.0,2.594,0.3011,5.766 +DH033,124.0,126.0,1.574,0.8111,3.108 +DH033,126.0,128.0,1.545,0.3404,2.734 +DH033,128.0,130.0,5.635,0.3965,15.524 +DH033,130.0,132.0,0.112,0.6189,0.192 +DH033,132.0,134.0,2.169,0.3889,4.032 +DH033,134.0,136.0,12.137,0.4818,32.79 +DH033,136.0,138.0,0.897,0.0331,1.735 +DH033,138.0,140.0,8.418,0.5782,16.77 +DH033,140.0,142.0,1.85,0.1421,2.943 +DH033,142.0,144.0,1.829,0.1021,4.762 +DH033,144.0,146.0,0.466,0.1906,0.767 +DH033,146.0,148.0,3.177,0.2227,9.322 +DH033,148.0,150.0,0.727,0.2236,1.684 +DH033,150.0,152.0,1.888,1.0682,5.046 +DH033,152.0,154.0,4.218,0.1539,8.197 +DH033,154.0,156.0,2.165,1.6539,4.776 +DH033,156.0,158.0,3.434,0.115,8.339 +DH033,158.0,160.0,0.863,1.4987,1.814 +DH033,160.0,162.0,15.944,0.1689,38.427 +DH033,162.0,164.0,0.588,0.3065,1.363 +DH033,164.0,166.0,2.198,0.146,5.768 +DH033,166.0,168.0,0.187,0.4732,0.498 +DH033,168.0,170.0,3.22,0.2609,6.094 +DH033,170.0,172.0,0.773,0.1585,1.284 +DH033,172.0,174.0,8.457,0.5048,24.899 +DH033,174.0,176.0,0.396,0.5364,0.798 +DH033,176.0,178.0,2.624,0.1659,4.883 +DH033,178.0,180.0,6.302,0.5763,17.187 +DH033,180.0,182.0,0.891,0.6022,1.801 +DH033,182.0,184.0,18.819,0.2045,44.29 +DH033,184.0,186.0,2.349,0.1638,5.283 +DH033,186.0,188.0,0.282,0.4532,0.791 +DH033,188.0,190.0,2.777,0.1549,7.819 +DH033,190.0,192.0,1.335,0.7213,3.358 +DH033,192.0,194.0,1.994,0.1063,3.712 +DH033,194.0,196.0,2.622,0.2011,6.743 +DH033,196.0,198.0,1.207,0.1729,3.194 +DH033,198.0,200.0,0.458,0.2872,0.897 +DH033,200.0,202.0,1.122,0.127,2.997 +DH033,202.0,204.0,0.813,0.2719,1.694 +DH033,204.0,206.0,2.358,1.4667,4.951 +DH033,206.0,208.0,4.599,0.3965,12.982 +DH033,208.0,210.0,3.091,0.2269,7.61 +DH033,210.0,212.0,1.101,0.1503,3.104 +DH033,212.0,214.0,0.209,0.7385,0.43 +DH033,214.0,216.0,2.73,0.38,6.021 +DH033,216.0,218.0,0.454,0.4689,1.223 +DH033,218.0,220.0,34.774,0.1919,96.379 +DH033,220.0,222.0,1.797,1.2935,3.799 +DH033,222.0,224.0,9.008,0.3684,18.968 +DH033,224.0,226.0,2.929,0.1309,8.778 +DH033,226.0,228.0,8.079,0.1509,18.975 +DH033,228.0,230.0,3.394,0.5829,7.556 +DH033,230.0,232.0,0.116,0.3649,0.331 +DH033,232.0,234.0,9.007,0.3581,26.281 +DH033,234.0,236.0,1.605,0.1075,3.719 +DH033,236.0,238.0,0.257,0.1391,0.429 +DH033,238.0,240.0,0.396,0.2449,1.095 +DH033,240.0,242.0,2.142,0.1497,4.539 +DH033,242.0,244.0,1.521,0.1156,2.856 +DH033,244.0,246.0,0.358,0.391,0.896 +DH033,246.0,248.0,3.496,0.4537,10.171 +DH033,248.0,250.0,5.806,0.0427,10.388 +DH033,250.0,252.0,0.159,0.0236,0.234 +DH033,252.0,254.0,0.228,0.0213,0.318 +DH033,254.0,256.0,0.046,0.0144,0.049 +DH033,256.0,258.0,0.058,0.0116,0.081 +DH033,258.0,260.0,0.227,0.0292,0.146 +DH033,260.0,262.0,0.151,0.0218,0.151 +DH033,262.0,264.0,0.077,0.0166,0.053 +DH033,264.0,266.0,0.089,0.0127,0.083 +DH033,266.0,268.0,0.099,0.0227,0.12 +DH033,268.0,270.0,0.042,0.0342,0.029 +DH033,270.0,272.0,0.025,0.0358,0.022 +DH033,272.0,274.0,0.092,0.0324,0.079 +DH033,274.0,276.0,0.15,0.0207,0.186 +DH033,276.0,278.0,0.024,0.0284,0.02 +DH033,278.0,280.0,0.05,0.016,0.059 +DH033,280.0,282.0,0.058,0.0314,0.052 +DH033,282.0,284.0,0.072,0.0692,0.058 +DH033,284.0,286.0,0.114,0.0108,0.129 +DH033,286.0,288.0,0.09,0.0279,0.083 +DH033,288.0,290.0,0.066,0.0159,0.073 +DH033,290.0,292.0,0.12,0.0211,0.089 +DH033,292.0,294.0,0.051,0.0228,0.026 +DH033,294.0,296.0,0.073,0.033,0.077 +DH033,296.0,298.0,0.192,0.0221,0.234 +DH033,298.0,300.0,0.064,0.0166,0.094 +DH033,300.0,302.0,0.136,0.0158,0.18 +DH033,302.0,304.0,0.073,0.013,0.052 +DH033,304.0,306.0,0.13,0.0125,0.188 +DH034,0.0,2.0,0.051,0.0139,0.052 +DH034,2.0,4.0,0.16,0.0113,0.159 +DH034,4.0,6.0,0.047,0.0091,0.04 +DH034,6.0,8.0,0.181,0.0167,0.218 +DH034,8.0,10.0,0.105,0.0196,0.125 +DH034,10.0,12.0,0.019,0.012,0.028 +DH034,12.0,14.0,0.25,0.0161,0.145 +DH034,14.0,16.0,0.097,0.0228,0.139 +DH034,16.0,18.0,0.018,0.0888,0.017 +DH034,18.0,20.0,0.073,0.0128,0.089 +DH034,20.0,22.0,0.11,0.0192,0.105 +DH034,22.0,24.0,0.077,0.0224,0.095 +DH034,24.0,26.0,0.101,0.0212,0.097 +DH034,26.0,28.0,0.031,0.0123,0.024 +DH034,28.0,30.0,0.053,0.015,0.046 +DH034,30.0,32.0,0.075,0.0073,0.04 +DH034,32.0,34.0,0.085,0.0187,0.122 +DH034,34.0,36.0,0.109,0.0171,0.091 +DH034,36.0,38.0,0.063,0.0134,0.049 +DH034,38.0,40.0,0.124,0.0224,0.115 +DH034,40.0,42.0,0.065,0.0389,0.085 +DH034,42.0,44.0,0.088,0.0248,0.07 +DH034,44.0,46.0,0.023,0.0135,0.016 +DH034,46.0,48.0,0.086,0.0171,0.127 +DH034,48.0,50.0,0.025,0.0373,0.023 +DH034,50.0,52.0,0.063,0.0131,0.039 +DH034,52.0,54.0,0.139,0.0113,0.111 +DH034,54.0,56.0,0.075,0.0135,0.076 +DH034,56.0,58.0,0.051,0.0095,0.028 +DH034,58.0,60.0,0.072,0.0249,0.095 +DH034,60.0,62.0,0.114,0.0066,0.077 +DH034,62.0,64.0,0.116,0.0097,0.148 +DH034,64.0,66.0,0.036,0.0185,0.035 +DH034,66.0,68.0,0.131,0.0073,0.141 +DH034,68.0,70.0,0.245,0.0742,0.232 +DH034,70.0,72.0,0.036,0.0228,0.025 +DH034,72.0,74.0,0.073,0.0309,0.077 +DH034,74.0,76.0,0.103,0.0053,0.096 +DH034,76.0,78.0,0.082,0.0153,0.097 +DH034,78.0,80.0,0.061,0.0216,0.039 +DH034,80.0,82.0,2.394,0.4007,3.663 +DH034,82.0,84.0,11.37,0.1011,29.34 +DH034,84.0,86.0,8.463,0.1678,22.664 +DH034,86.0,88.0,2.852,0.3602,4.609 +DH034,88.0,90.0,0.445,0.3166,0.983 +DH034,90.0,92.0,1.799,0.714,3.308 +DH034,92.0,94.0,0.327,0.2662,0.846 +DH034,94.0,96.0,3.289,0.0486,8.441 +DH034,96.0,98.0,2.503,0.0869,3.787 +DH034,98.0,100.0,2.816,0.1508,6.752 +DH034,100.0,102.0,4.52,0.5882,11.425 +DH034,102.0,104.0,1.859,0.191,5.313 +DH034,104.0,106.0,5.04,0.1326,8.327 +DH034,106.0,108.0,0.909,0.2649,2.629 +DH034,108.0,110.0,1.296,1.2686,2.785 +DH034,110.0,112.0,1.544,0.1312,2.322 +DH034,112.0,114.0,1.971,0.0911,5.331 +DH034,114.0,116.0,4.626,0.5074,9.549 +DH034,116.0,118.0,2.389,0.1672,7.034 +DH034,118.0,120.0,0.738,0.0642,2.153 +DH034,120.0,122.0,6.585,0.1589,17.479 +DH034,122.0,124.0,1.435,0.604,3.227 +DH034,124.0,126.0,3.641,0.1062,9.683 +DH034,126.0,128.0,2.05,0.2356,5.082 +DH034,128.0,130.0,2.384,0.4208,6.271 +DH034,130.0,132.0,18.052,0.2312,53.962 +DH034,132.0,134.0,4.787,0.3053,10.785 +DH034,134.0,136.0,1.63,0.0411,3.3 +DH034,136.0,138.0,16.071,0.1397,46.474 +DH034,138.0,140.0,0.325,0.0966,0.69 +DH034,140.0,142.0,1.968,0.3431,4.82 +DH034,142.0,144.0,2.659,0.189,5.612 +DH034,144.0,146.0,0.531,0.6853,0.978 +DH034,146.0,148.0,0.64,0.0922,1.581 +DH034,148.0,150.0,3.349,0.1929,7.677 +DH034,150.0,152.0,2.098,0.2036,3.815 +DH034,152.0,154.0,1.185,0.8286,2.384 +DH034,154.0,156.0,4.075,0.0478,11.495 +DH034,156.0,158.0,1.2,0.2267,1.96 +DH034,158.0,160.0,5.515,0.4907,10.17 +DH034,160.0,162.0,1.407,0.0956,3.742 +DH034,162.0,164.0,18.307,0.2359,52.967 +DH034,164.0,166.0,1.679,0.1492,3.604 +DH034,166.0,168.0,1.96,0.3081,4.558 +DH034,168.0,170.0,3.377,0.3486,9.165 +DH034,170.0,172.0,0.743,0.2157,2.093 +DH034,172.0,174.0,1.189,0.2706,2.857 +DH034,174.0,176.0,9.254,0.6906,27.499 +DH034,176.0,178.0,0.551,0.177,1.456 +DH034,178.0,180.0,1.672,0.1434,2.575 +DH034,180.0,182.0,3.975,0.077,11.108 +DH034,182.0,184.0,2.282,0.5172,5.728 +DH034,184.0,186.0,4.434,0.2417,7.195 +DH034,186.0,188.0,1.754,0.772,4.889 +DH034,188.0,190.0,6.954,0.2454,18.766 +DH034,190.0,192.0,23.161,0.9792,64.806 +DH034,192.0,194.0,2.751,0.3924,5.879 +DH034,194.0,196.0,13.717,0.6352,36.279 +DH034,196.0,198.0,34.21,0.4721,54.372 +DH034,198.0,200.0,1.147,0.6033,3.301 +DH034,200.0,202.0,1.361,0.1842,3.148 +DH034,202.0,204.0,1.764,0.0778,3.174 +DH034,204.0,206.0,1.37,1.1229,3.966 +DH034,206.0,208.0,10.182,0.3696,23.8 +DH034,208.0,210.0,4.412,0.2693,13.058 +DH034,210.0,212.0,43.955,0.1798,93.966 +DH034,212.0,214.0,2.212,0.3345,5.402 +DH034,214.0,216.0,0.167,0.1901,0.274 +DH034,216.0,218.0,0.888,0.4662,1.695 +DH034,218.0,220.0,1.769,0.4605,2.912 +DH034,220.0,222.0,3.686,0.5029,6.983 +DH034,222.0,224.0,0.309,0.1649,0.519 +DH034,224.0,226.0,4.898,0.457,10.567 +DH034,226.0,228.0,4.002,0.484,10.475 +DH034,228.0,230.0,1.956,0.0719,4.097 +DH034,230.0,232.0,15.479,0.535,27.341 +DH034,232.0,234.0,1.79,0.1008,3.391 +DH034,234.0,236.0,8.439,0.3097,17.223 +DH034,236.0,238.0,2.523,0.0483,6.847 +DH034,238.0,240.0,0.969,0.0839,1.776 +DH034,240.0,242.0,4.355,0.2687,10.453 +DH034,242.0,244.0,4.768,0.1332,14.013 +DH034,244.0,245.0,1.579,0.6147,4.465 +DH035,0.0,2.0,0.103,0.0089,0.129 +DH035,2.0,4.0,0.079,0.011,0.071 +DH035,4.0,6.0,0.107,0.0183,0.078 +DH035,6.0,8.0,0.07,0.0145,0.064 +DH035,8.0,10.0,0.086,0.0149,0.057 +DH035,10.0,12.0,0.085,0.0296,0.098 +DH035,12.0,14.0,0.193,0.0323,0.211 +DH035,14.0,16.0,0.187,0.04,0.269 +DH035,16.0,18.0,0.121,0.0337,0.089 +DH035,18.0,20.0,0.052,0.0254,0.033 +DH035,20.0,22.0,0.249,0.0092,0.296 +DH035,22.0,24.0,0.028,0.0197,0.02 +DH035,24.0,26.0,0.08,0.0193,0.064 +DH035,26.0,28.0,0.077,0.022,0.079 +DH035,28.0,30.0,0.049,0.0175,0.034 +DH035,30.0,32.0,0.143,0.0351,0.097 +DH035,32.0,34.0,0.102,0.0267,0.1 +DH035,34.0,36.0,0.056,0.0172,0.056 +DH035,36.0,38.0,0.105,0.0309,0.135 +DH035,38.0,40.0,0.107,0.0134,0.144 +DH035,40.0,42.0,0.282,0.0111,0.343 +DH035,42.0,44.0,0.093,0.0209,0.079 +DH035,44.0,46.0,0.273,0.0124,0.339 +DH035,46.0,48.0,0.216,0.0293,0.194 +DH035,48.0,50.0,0.058,0.0322,0.086 +DH035,50.0,52.0,0.092,0.0137,0.047 +DH035,52.0,54.0,0.221,0.0106,0.29 +DH035,54.0,56.0,0.056,0.0149,0.07 +DH035,56.0,58.0,0.146,0.0231,0.128 +DH035,58.0,60.0,0.097,0.025,0.092 +DH035,60.0,62.0,0.156,0.0121,0.141 +DH035,62.0,64.0,0.101,0.0176,0.134 +DH035,64.0,66.0,0.089,0.0158,0.077 +DH035,66.0,68.0,0.126,0.0213,0.167 +DH035,68.0,70.0,0.054,0.0543,0.039 +DH035,70.0,72.0,0.088,0.0159,0.08 +DH035,72.0,74.0,0.063,0.0125,0.084 +DH035,74.0,76.0,0.04,0.03,0.032 +DH035,76.0,78.0,0.065,0.0239,0.034 +DH035,78.0,80.0,0.042,0.0106,0.06 +DH035,80.0,82.0,4.592,0.2708,7.982 +DH035,82.0,84.0,1.771,0.172,3.269 +DH035,84.0,86.0,2.395,0.3389,4.962 +DH035,86.0,88.0,18.597,0.0999,49.651 +DH035,88.0,90.0,2.611,0.2712,5.729 +DH035,90.0,92.0,4.587,0.2722,9.362 +DH035,92.0,94.0,1.935,0.1169,3.133 +DH035,94.0,96.0,0.447,0.3113,1.172 +DH035,96.0,98.0,3.059,0.0397,7.576 +DH035,98.0,100.0,1.762,0.0925,2.717 +DH035,100.0,102.0,6.396,0.1307,14.093 +DH035,102.0,104.0,0.199,0.131,0.533 +DH035,104.0,106.0,1.198,0.1292,3.461 +DH035,106.0,108.0,3.878,0.2618,6.885 +DH035,108.0,110.0,1.013,0.093,2.838 +DH035,110.0,112.0,1.095,0.0432,2.511 +DH035,112.0,114.0,8.38,0.4235,21.269 +DH035,114.0,116.0,2.606,0.7111,5.709 +DH035,116.0,118.0,0.699,0.5485,1.444 +DH035,118.0,120.0,0.995,0.347,2.506 +DH035,120.0,122.0,0.815,0.1117,1.398 +DH035,122.0,124.0,2.849,0.7508,5.516 +DH035,124.0,126.0,1.539,0.7059,2.717 +DH035,126.0,128.0,2.648,0.064,5.289 +DH035,128.0,130.0,0.628,0.2297,1.675 +DH035,130.0,132.0,15.233,0.0635,41.678 +DH035,132.0,134.0,2.985,0.3386,6.65 +DH035,134.0,136.0,0.277,0.1807,0.557 +DH035,136.0,138.0,21.441,0.1602,40.779 +DH035,138.0,140.0,0.815,0.3703,1.462 +DH035,140.0,142.0,10.047,0.218,18.168 +DH035,142.0,144.0,2.248,0.6734,5.864 +DH035,144.0,146.0,0.252,0.1673,0.535 +DH035,146.0,148.0,0.25,0.2686,0.497 +DH035,148.0,150.0,20.736,0.0768,32.428 +DH035,150.0,152.0,7.101,0.3381,20.991 +DH035,152.0,154.0,0.62,0.2412,1.753 +DH035,154.0,156.0,1.137,0.6271,2.448 +DH035,156.0,158.0,0.229,0.1865,0.484 +DH035,158.0,160.0,3.355,0.2915,6.706 +DH035,160.0,162.0,0.584,0.159,1.182 +DH035,162.0,164.0,0.21,0.2137,0.465 +DH035,164.0,166.0,9.553,0.3784,25.912 +DH035,166.0,168.0,0.638,0.6693,1.67 +DH035,168.0,170.0,0.566,0.3043,1.473 +DH035,170.0,172.0,2.852,0.3149,7.423 +DH035,172.0,174.0,3.745,0.136,8.806 +DH035,174.0,176.0,0.82,0.4633,1.235 +DH035,176.0,178.0,3.599,0.0537,6.028 +DH035,178.0,180.0,0.367,0.9018,0.884 +DH035,180.0,182.0,5.359,0.1335,9.211 +DH035,182.0,184.0,2.109,0.8311,4.815 +DH035,184.0,186.0,3.533,0.6296,8.854 +DH035,186.0,188.0,8.021,0.4589,17.148 +DH035,188.0,190.0,1.848,0.1573,4.646 +DH035,190.0,192.0,0.845,0.1071,2.41 +DH035,192.0,194.0,1.692,0.3151,3.331 +DH035,194.0,196.0,0.624,0.0933,1.19 +DH035,196.0,198.0,0.878,0.1103,2.376 +DH035,198.0,200.0,0.353,1.1258,0.653 +DH035,200.0,202.0,5.156,0.4911,10.45 +DH035,202.0,204.0,4.666,0.8432,10.2 +DH035,204.0,206.0,1.845,0.1128,4.828 +DH035,206.0,208.0,1.007,0.998,1.59 +DH035,208.0,210.0,24.052,1.1837,49.559 +DH035,210.0,212.0,1.239,1.0247,3.015 +DH035,212.0,214.0,3.288,0.2678,5.009 +DH035,214.0,216.0,2.226,0.2515,5.631 +DH035,216.0,218.0,1.273,0.0741,3.66 +DH035,218.0,220.0,0.969,0.1393,2.013 +DH035,220.0,222.0,1.424,0.5423,4.137 +DH035,222.0,224.0,8.958,0.2631,20.284 +DH035,224.0,226.0,2.691,0.0794,6.23 +DH035,226.0,228.0,6.166,0.493,14.9 +DH035,228.0,230.0,0.36,0.1452,0.656 +DH035,230.0,232.0,2.901,0.1201,5.281 +DH035,232.0,234.0,0.979,0.1223,2.684 +DH035,234.0,236.0,7.501,0.0963,12.022 +DH035,236.0,238.0,4.859,0.0868,8.289 +DH035,238.0,240.0,3.35,0.2543,9.262 +DH035,240.0,242.0,2.605,0.3712,6.831 +DH035,242.0,244.0,0.997,0.1442,2.274 +DH035,244.0,246.0,3.156,0.2411,6.161 +DH035,246.0,248.0,0.577,0.3065,1.285 +DH035,248.0,250.0,1.874,0.8749,5.216 +DH035,250.0,252.0,0.069,0.0097,0.088 +DH035,252.0,254.0,0.154,0.0199,0.174 +DH035,254.0,256.0,0.182,0.0216,0.195 +DH035,256.0,258.0,0.126,0.0043,0.143 +DH035,258.0,260.0,0.043,0.0121,0.051 +DH035,260.0,262.0,0.066,0.0472,0.09 +DH035,262.0,264.0,0.043,0.0268,0.028 +DH035,264.0,266.0,0.099,0.0173,0.05 +DH035,266.0,268.0,0.068,0.02,0.082 +DH035,268.0,270.0,0.216,0.0166,0.305 +DH035,270.0,272.0,0.06,0.0382,0.078 +DH035,272.0,274.0,0.026,0.0069,0.031 +DH035,274.0,276.0,0.094,0.018,0.077 +DH035,276.0,278.0,0.074,0.0368,0.079 +DH035,278.0,280.0,0.086,0.0325,0.063 +DH035,280.0,282.0,0.078,0.0196,0.095 +DH035,282.0,284.0,0.029,0.0161,0.024 +DH035,284.0,286.0,0.109,0.0331,0.156 +DH035,286.0,288.0,0.079,0.0257,0.071 +DH035,288.0,290.0,0.09,0.0273,0.102 +DH035,290.0,292.0,0.102,0.0296,0.144 +DH035,292.0,294.0,0.172,0.0587,0.143 +DH035,294.0,296.0,0.062,0.0237,0.081 +DH035,296.0,298.0,0.119,0.0387,0.145 +DH035,298.0,300.0,0.204,0.0462,0.212 +DH035,300.0,302.0,0.117,0.0162,0.073 +DH035,302.0,304.0,0.125,0.0251,0.15 +DH035,304.0,306.0,0.12,0.0287,0.079 +DH035,306.0,308.0,0.044,0.0278,0.059 +DH035,308.0,310.0,0.081,0.0388,0.066 +DH035,310.0,312.0,0.081,0.0133,0.099 +DH035,312.0,314.0,0.22,0.0174,0.242 +DH035,314.0,316.0,0.221,0.018,0.17 +DH035,316.0,318.0,0.127,0.012,0.161 +DH035,318.0,320.0,0.297,0.0143,0.35 +DH035,320.0,322.0,0.112,0.0169,0.129 +DH035,322.0,324.0,0.235,0.0242,0.196 +DH035,324.0,326.0,0.214,0.0158,0.157 +DH035,326.0,328.0,0.237,0.0196,0.189 +DH035,328.0,330.0,0.052,0.0222,0.031 +DH035,330.0,332.0,0.085,0.0132,0.069 +DH035,332.0,334.0,0.068,0.0058,0.039 +DH035,334.0,336.0,0.131,0.0218,0.107 +DH035,336.0,338.0,0.114,0.0118,0.162 +DH035,338.0,340.0,0.077,0.0156,0.089 +DH035,340.0,342.0,0.381,0.0125,0.491 +DH035,342.0,344.0,0.131,0.0113,0.189 +DH035,344.0,346.0,0.057,0.0268,0.052 +DH035,346.0,348.0,0.071,0.0289,0.059 +DH035,348.0,350.0,0.078,0.0086,0.08 +DH035,350.0,352.0,0.094,0.0273,0.124 +DH035,352.0,354.0,0.073,0.0097,0.066 +DH035,354.0,356.0,0.2,0.0156,0.145 +DH035,356.0,358.0,0.055,0.0082,0.04 +DH035,358.0,360.0,0.123,0.0089,0.065 +DH035,360.0,362.0,0.083,0.014,0.108 +DH035,362.0,364.0,0.047,0.0279,0.07 +DH035,364.0,366.0,0.065,0.0142,0.078 +DH035,366.0,368.0,0.114,0.0049,0.101 +DH035,368.0,370.0,0.029,0.0154,0.019 +DH035,370.0,372.0,0.066,0.0235,0.085 +DH035,372.0,374.0,0.052,0.0122,0.071 +DH035,374.0,376.0,0.033,0.0144,0.018 +DH035,376.0,378.0,0.033,0.0155,0.036 +DH035,378.0,380.0,0.273,0.014,0.319 +DH035,380.0,382.0,0.044,0.0184,0.035 +DH036,0.0,2.0,0.048,0.03,0.051 +DH036,2.0,4.0,0.137,0.0155,0.107 +DH036,4.0,6.0,0.072,0.038,0.038 +DH036,6.0,8.0,0.083,0.0146,0.109 +DH036,8.0,10.0,0.095,0.0276,0.111 +DH036,10.0,12.0,0.089,0.0201,0.124 +DH036,12.0,14.0,0.029,0.0115,0.036 +DH036,14.0,16.0,0.084,0.0117,0.065 +DH036,16.0,18.0,0.04,0.015,0.039 +DH036,18.0,20.0,0.129,0.0233,0.101 +DH036,20.0,22.0,0.068,0.0066,0.063 +DH036,22.0,24.0,0.052,0.0207,0.075 +DH036,24.0,26.0,0.1,0.0344,0.093 +DH036,26.0,28.0,0.057,0.0308,0.079 +DH036,28.0,30.0,0.071,0.0461,0.067 +DH036,30.0,32.0,0.073,0.013,0.08 +DH036,32.0,34.0,0.093,0.0185,0.061 +DH036,34.0,36.0,0.139,0.0241,0.2 +DH036,36.0,38.0,0.108,0.0242,0.144 +DH036,38.0,40.0,0.243,0.0099,0.293 +DH036,40.0,42.0,0.037,0.0174,0.022 +DH036,42.0,44.0,0.089,0.0217,0.127 +DH036,44.0,46.0,0.081,0.0368,0.096 +DH036,46.0,48.0,0.049,0.0282,0.062 +DH036,48.0,50.0,0.09,0.0305,0.13 +DH036,50.0,52.0,0.06,0.0133,0.055 +DH036,52.0,54.0,0.183,0.0078,0.157 +DH036,54.0,56.0,0.036,0.0369,0.051 +DH036,56.0,58.0,0.067,0.0082,0.077 +DH036,58.0,60.0,0.138,0.0208,0.105 +DH036,60.0,62.0,0.032,0.0155,0.017 +DH036,62.0,64.0,0.045,0.0254,0.042 +DH036,64.0,66.0,0.06,0.0263,0.083 +DH036,66.0,68.0,0.163,0.0506,0.159 +DH036,68.0,70.0,0.13,0.0352,0.136 +DH036,70.0,72.0,0.058,0.0137,0.038 +DH036,72.0,74.0,0.066,0.0166,0.054 +DH036,74.0,76.0,0.026,0.0113,0.018 +DH036,76.0,78.0,0.114,0.0108,0.075 +DH036,78.0,80.0,0.182,0.0179,0.269 +DH036,80.0,82.0,6.359,0.8855,18.324 +DH036,82.0,84.0,2.333,0.5337,4.473 +DH036,84.0,86.0,0.273,0.3181,0.555 +DH036,86.0,88.0,0.484,0.056,0.879 +DH036,88.0,90.0,0.817,0.2913,1.662 +DH036,90.0,92.0,2.703,0.2829,7.352 +DH036,92.0,94.0,2.627,0.1215,6.214 +DH036,94.0,96.0,1.962,0.2017,5.601 +DH036,96.0,98.0,8.348,0.2938,23.904 +DH036,98.0,100.0,0.162,0.1206,0.393 +DH036,100.0,102.0,0.926,0.2709,2.269 +DH036,102.0,104.0,20.693,0.3284,37.068 +DH036,104.0,106.0,5.25,0.5318,11.047 +DH036,106.0,108.0,0.613,0.1558,1.726 +DH036,108.0,110.0,1.047,0.1002,2.397 +DH036,110.0,112.0,0.666,0.0654,1.068 +DH036,112.0,114.0,1.68,0.101,3.852 +DH036,114.0,116.0,4.575,0.3533,9.723 +DH036,116.0,118.0,0.465,0.1408,1.008 +DH036,118.0,120.0,6.469,0.2959,18.957 +DH036,120.0,122.0,17.726,0.1516,38.898 +DH036,122.0,124.0,1.628,0.5045,4.361 +DH036,124.0,126.0,0.208,0.103,0.61 +DH036,126.0,128.0,0.262,0.4509,0.673 +DH036,128.0,130.0,1.634,0.4419,4.546 +DH036,130.0,132.0,2.858,0.2187,4.885 +DH036,132.0,134.0,4.242,0.4492,7.084 +DH036,134.0,136.0,3.717,0.2142,9.599 +DH036,136.0,138.0,6.536,0.0798,15.132 +DH036,138.0,140.0,5.512,0.0896,12.281 +DH036,140.0,142.0,28.382,0.2094,67.563 +DH036,142.0,144.0,5.819,0.1203,13.784 +DH036,144.0,146.0,4.153,0.1072,11.112 +DH036,146.0,148.0,0.839,0.3929,2.254 +DH036,148.0,150.0,0.1,0.3029,0.211 +DH036,150.0,152.0,12.183,0.3061,36.36 +DH036,152.0,154.0,0.949,0.1186,1.781 +DH036,154.0,156.0,1.444,0.6508,3.028 +DH036,156.0,158.0,0.512,0.1151,0.935 +DH036,158.0,160.0,1.821,0.187,2.951 +DH036,160.0,162.0,0.743,0.0373,1.998 +DH036,162.0,164.0,2.976,0.1828,6.091 +DH036,164.0,166.0,7.533,0.2543,16.203 +DH036,166.0,168.0,3.682,0.079,10.529 +DH036,168.0,170.0,6.612,0.5556,11.857 +DH036,170.0,172.0,4.12,0.0556,10.819 +DH036,172.0,174.0,0.706,0.6223,1.676 +DH036,174.0,176.0,0.711,0.2151,1.892 +DH036,176.0,178.0,6.56,0.0584,18.368 +DH036,178.0,180.0,2.33,0.0294,4.842 +DH036,180.0,182.0,4.53,0.5998,10.691 +DH036,182.0,184.0,2.7,0.3758,6.814 +DH036,184.0,186.0,6.675,0.2779,17.899 +DH036,186.0,188.0,2.637,0.1996,7.612 +DH036,188.0,190.0,1.444,0.2676,3.86 +DH036,190.0,192.0,0.722,0.2559,1.828 +DH036,192.0,194.0,5.816,0.3584,10.095 +DH036,194.0,196.0,2.876,0.1205,6.403 +DH036,196.0,198.0,1.087,0.2143,2.522 +DH036,198.0,200.0,2.663,0.4612,5.777 +DH036,200.0,202.0,1.416,0.8315,2.356 +DH036,202.0,204.0,1.294,0.0947,2.231 +DH036,204.0,206.0,1.321,0.3612,2.809 +DH036,206.0,208.0,0.465,0.1394,0.697 +DH036,208.0,210.0,5.405,1.5626,8.685 +DH036,210.0,212.0,0.66,0.207,1.125 +DH036,212.0,214.0,1.193,0.325,2.869 +DH036,214.0,216.0,4.322,0.1524,12.244 +DH036,216.0,218.0,12.921,0.0813,32.09 +DH036,218.0,220.0,5.77,0.2557,17.159 +DH036,220.0,222.0,11.251,0.1884,26.304 +DH036,222.0,224.0,1.533,0.1644,3.647 +DH036,224.0,226.0,2.713,0.1384,4.448 +DH036,226.0,228.0,4.142,0.8192,10.193 +DH036,228.0,230.0,0.849,0.0689,2.06 +DH036,230.0,232.0,4.926,0.1282,9.034 +DH036,232.0,234.0,11.329,0.0757,28.228 +DH036,234.0,236.0,1.899,0.0948,4.296 +DH036,236.0,238.0,5.23,0.0744,7.949 +DH036,238.0,240.0,9.045,0.3073,23.868 +DH036,240.0,242.0,0.998,0.4337,2.975 +DH036,242.0,244.0,2.978,0.2277,4.92 +DH036,244.0,246.0,1.106,0.1498,2.853 +DH036,246.0,248.0,3.761,0.159,10.387 +DH036,248.0,250.0,0.887,0.3429,1.767 +DH036,250.0,252.0,0.045,0.0287,0.03 +DH036,252.0,254.0,0.146,0.0153,0.073 +DH036,254.0,256.0,0.09,0.0366,0.075 +DH036,256.0,258.0,0.164,0.0134,0.155 +DH036,258.0,260.0,0.13,0.0365,0.194 +DH036,260.0,262.0,0.083,0.0264,0.087 +DH036,262.0,264.0,0.09,0.0202,0.091 +DH036,264.0,266.0,0.051,0.013,0.073 +DH036,266.0,268.0,0.031,0.0197,0.016 +DH036,268.0,270.0,0.13,0.0344,0.074 +DH036,270.0,272.0,0.192,0.0125,0.137 +DH036,272.0,274.0,0.143,0.0366,0.192 +DH036,274.0,276.0,0.11,0.0067,0.115 +DH036,276.0,278.0,0.115,0.0343,0.154 +DH036,278.0,280.0,0.142,0.0137,0.172 +DH036,280.0,282.0,0.113,0.0123,0.11 +DH036,282.0,284.0,0.03,0.0243,0.023 +DH036,284.0,286.0,0.073,0.0115,0.081 +DH036,286.0,288.0,0.06,0.0142,0.037 +DH036,288.0,290.0,0.051,0.023,0.068 +DH036,290.0,292.0,0.109,0.006,0.094 +DH036,292.0,294.0,0.075,0.0045,0.045 +DH036,294.0,296.0,0.049,0.0132,0.039 +DH036,296.0,298.0,0.055,0.0122,0.045 +DH036,298.0,300.0,0.134,0.0334,0.069 +DH036,300.0,302.0,0.081,0.0104,0.052 +DH036,302.0,304.0,0.094,0.0164,0.113 +DH036,304.0,306.0,0.099,0.0108,0.123 +DH036,306.0,308.0,0.072,0.0423,0.094 +DH036,308.0,310.0,0.268,0.033,0.148 +DH036,310.0,312.0,0.053,0.0129,0.077 +DH036,312.0,314.0,0.089,0.0136,0.106 +DH036,314.0,316.0,0.084,0.0279,0.114 +DH036,316.0,318.0,0.15,0.0235,0.129 +DH036,318.0,320.0,0.148,0.0176,0.168 +DH036,320.0,322.0,0.239,0.0158,0.28 +DH036,322.0,324.0,0.065,0.0072,0.065 +DH036,324.0,326.0,0.105,0.026,0.082 +DH036,326.0,328.0,0.163,0.0223,0.16 +DH036,328.0,330.0,0.117,0.0199,0.15 +DH036,330.0,332.0,0.109,0.0191,0.088 +DH036,332.0,334.0,0.074,0.0371,0.088 +DH036,334.0,336.0,0.092,0.0188,0.066 +DH036,336.0,338.0,0.23,0.0308,0.162 +DH036,338.0,340.0,0.021,0.0187,0.025 +DH036,340.0,342.0,0.124,0.0146,0.141 +DH036,342.0,344.0,0.119,0.0124,0.122 +DH036,344.0,346.0,0.092,0.0358,0.133 +DH036,346.0,348.0,0.156,0.0189,0.173 +DH037,0.0,2.0,0.029,0.0503,0.036 +DH037,2.0,4.0,0.108,0.0278,0.122 +DH037,4.0,6.0,0.072,0.0135,0.036 +DH037,6.0,8.0,0.115,0.0226,0.167 +DH037,8.0,10.0,0.087,0.0087,0.129 +DH037,10.0,12.0,0.039,0.0138,0.056 +DH037,12.0,14.0,0.105,0.0089,0.087 +DH037,14.0,16.0,0.034,0.025,0.029 +DH037,16.0,18.0,0.039,0.0301,0.043 +DH037,18.0,20.0,0.055,0.0068,0.069 +DH037,20.0,22.0,0.057,0.0396,0.073 +DH037,22.0,24.0,0.045,0.0197,0.065 +DH037,24.0,26.0,0.112,0.0112,0.082 +DH037,26.0,28.0,0.103,0.0439,0.125 +DH037,28.0,30.0,0.044,0.0136,0.056 +DH037,30.0,32.0,0.166,0.0062,0.086 +DH037,32.0,34.0,0.061,0.007,0.037 +DH037,34.0,36.0,0.058,0.0189,0.062 +DH037,36.0,38.0,0.102,0.0294,0.051 +DH037,38.0,40.0,0.054,0.0167,0.077 +DH037,40.0,42.0,0.153,0.017,0.163 +DH037,42.0,44.0,0.1,0.0233,0.06 +DH037,44.0,46.0,0.055,0.0131,0.051 +DH037,46.0,48.0,0.064,0.0146,0.035 +DH037,48.0,50.0,0.036,0.0512,0.026 +DH037,50.0,52.0,0.138,0.0173,0.072 +DH037,52.0,54.0,0.07,0.0281,0.076 +DH037,54.0,56.0,0.058,0.0454,0.073 +DH037,56.0,58.0,0.055,0.0087,0.074 +DH037,58.0,60.0,0.059,0.0514,0.046 +DH037,60.0,62.0,0.089,0.0199,0.121 +DH037,62.0,64.0,0.022,0.0204,0.015 +DH037,64.0,66.0,0.072,0.0197,0.076 +DH037,66.0,68.0,0.092,0.0181,0.112 +DH037,68.0,70.0,0.103,0.0262,0.147 +DH037,70.0,72.0,0.252,0.0357,0.179 +DH037,72.0,74.0,0.135,0.0186,0.16 +DH037,74.0,76.0,0.211,0.0274,0.27 +DH037,76.0,78.0,0.08,0.0244,0.052 +DH037,78.0,80.0,0.078,0.0138,0.087 +DH037,80.0,82.0,0.615,0.1051,1.329 +DH037,82.0,84.0,0.717,0.6052,2.113 +DH037,84.0,86.0,2.036,0.3319,3.057 +DH037,86.0,88.0,0.532,1.3159,1.38 +DH037,88.0,90.0,3.405,0.1125,7.193 +DH037,90.0,92.0,0.97,0.2412,2.609 +DH037,92.0,94.0,1.478,0.0697,3.857 +DH037,94.0,96.0,2.96,0.3215,6.194 +DH037,96.0,98.0,0.341,0.2087,0.735 +DH037,98.0,100.0,5.214,0.4606,14.182 +DH037,100.0,102.0,7.286,0.9445,11.34 +DH037,102.0,104.0,8.323,0.3312,24.92 +DH037,104.0,106.0,1.849,0.1115,2.89 +DH037,106.0,108.0,0.861,0.3622,2.388 +DH037,108.0,110.0,9.434,0.815,17.43 +DH037,110.0,112.0,0.528,2.3216,0.986 +DH037,112.0,114.0,2.913,0.2289,7.114 +DH037,114.0,116.0,0.219,0.1203,0.576 +DH037,116.0,118.0,0.943,0.1397,2.098 +DH037,118.0,120.0,1.645,0.2787,4.043 +DH037,120.0,122.0,4.515,0.1523,12.545 +DH037,122.0,124.0,3.79,0.0797,5.912 +DH037,124.0,126.0,1.81,0.1874,3.957 +DH037,126.0,128.0,4.767,0.3373,9.32 +DH037,128.0,130.0,2.466,0.0399,5.377 +DH037,130.0,132.0,3.999,0.1015,8.517 +DH037,132.0,134.0,4.843,0.5695,10.353 +DH037,134.0,136.0,3.274,0.4759,8.679 +DH037,136.0,138.0,3.649,0.1358,10.123 +DH037,138.0,140.0,0.322,0.4289,0.787 +DH037,140.0,142.0,7.088,0.1195,11.959 +DH037,142.0,144.0,11.119,0.2398,20.979 +DH037,144.0,146.0,3.746,0.0965,7.29 +DH037,146.0,148.0,0.243,0.1308,0.68 +DH037,148.0,150.0,6.013,0.3073,17.608 +DH037,150.0,152.0,13.037,0.1733,35.203 +DH037,152.0,154.0,2.409,0.2083,7.139 +DH037,154.0,156.0,27.065,0.158,64.656 +DH037,156.0,158.0,3.264,0.2908,8.628 +DH037,158.0,160.0,1.492,0.0127,2.728 +DH037,160.0,162.0,0.967,0.1839,1.674 +DH037,162.0,164.0,0.869,0.2704,1.474 +DH037,164.0,166.0,0.942,0.2514,1.772 +DH037,166.0,168.0,6.776,0.0764,18.412 +DH037,168.0,170.0,5.314,0.1337,9.393 +DH037,170.0,172.0,1.096,0.2058,2.269 +DH037,172.0,174.0,1.73,0.098,3.376 +DH037,174.0,176.0,10.929,0.0484,23.904 +DH037,176.0,178.0,7.414,0.7834,21.876 +DH037,178.0,180.0,5.921,0.8272,14.931 +DH037,180.0,182.0,14.814,0.1935,39.489 +DH037,182.0,184.0,0.939,0.497,1.732 +DH037,184.0,186.0,17.631,0.7064,39.696 +DH037,186.0,188.0,92.764,0.6575,248.91 +DH037,188.0,190.0,0.673,0.0656,1.876 +DH037,190.0,192.0,0.726,0.6716,1.831 +DH037,192.0,194.0,1.066,0.2001,3.048 +DH037,194.0,196.0,5.813,0.1105,11.331 +DH037,196.0,198.0,3.19,0.1131,7.162 +DH037,198.0,200.0,1.561,0.1008,2.874 +DH037,200.0,202.0,2.376,0.3094,3.823 +DH037,202.0,204.0,5.9,1.2686,17.088 +DH037,204.0,206.0,3.404,0.119,8.192 +DH037,206.0,208.0,9.851,0.2796,19.699 +DH037,208.0,210.0,0.682,0.4054,1.894 +DH037,210.0,212.0,0.451,0.2247,0.681 +DH037,212.0,214.0,3.511,0.157,7.553 +DH037,214.0,216.0,0.791,0.3684,1.219 +DH037,216.0,218.0,4.576,0.5744,12.168 +DH037,218.0,220.0,1.007,0.0578,2.45 +DH037,220.0,222.0,1.802,0.2047,4.894 +DH037,222.0,224.0,0.782,0.7548,2.276 +DH037,224.0,226.0,0.49,0.1566,0.947 +DH037,226.0,228.0,1.049,0.1168,1.628 +DH037,228.0,230.0,8.238,0.5741,19.314 +DH037,230.0,232.0,3.868,0.222,9.259 +DH037,232.0,234.0,1.558,0.0812,2.531 +DH037,234.0,236.0,14.339,0.1607,33.948 +DH037,236.0,238.0,7.889,0.5903,14.594 +DH037,238.0,240.0,1.863,0.2129,5.043 +DH037,240.0,242.0,3.537,0.1275,9.458 +DH037,242.0,244.0,1.971,0.0678,3.273 +DH037,244.0,246.0,6.699,0.1234,18.745 +DH037,246.0,248.0,23.717,0.1488,66.064 +DH037,248.0,250.0,6.856,0.1332,11.43 +DH037,250.0,252.0,0.124,0.0186,0.069 +DH037,252.0,254.0,0.072,0.0103,0.065 +DH037,254.0,256.0,0.125,0.0153,0.1 +DH037,256.0,258.0,0.033,0.0192,0.024 +DH037,258.0,260.0,0.142,0.0127,0.077 +DH037,260.0,262.0,0.301,0.0157,0.237 +DH038,0.0,2.0,0.117,0.0075,0.112 +DH038,2.0,4.0,0.149,0.0238,0.146 +DH038,4.0,6.0,0.07,0.0097,0.105 +DH038,6.0,8.0,0.154,0.0222,0.165 +DH038,8.0,10.0,0.201,0.0161,0.144 +DH038,10.0,12.0,0.096,0.0236,0.127 +DH038,12.0,14.0,0.191,0.0248,0.157 +DH038,14.0,16.0,0.091,0.0179,0.083 +DH038,16.0,18.0,0.195,0.0305,0.221 +DH038,18.0,20.0,0.027,0.0275,0.016 +DH038,20.0,22.0,0.084,0.0173,0.101 +DH038,22.0,24.0,0.103,0.0538,0.132 +DH038,24.0,26.0,0.13,0.0595,0.126 +DH038,26.0,28.0,0.056,0.0206,0.074 +DH038,28.0,30.0,0.194,0.0336,0.169 +DH038,30.0,32.0,0.049,0.0177,0.046 +DH038,32.0,34.0,0.009,0.0127,0.012 +DH038,34.0,36.0,0.06,0.0111,0.03 +DH038,36.0,38.0,0.101,0.0145,0.108 +DH038,38.0,40.0,0.085,0.0118,0.102 +DH038,40.0,42.0,0.072,0.032,0.044 +DH038,42.0,44.0,0.117,0.0192,0.115 +DH038,44.0,46.0,0.104,0.0129,0.084 +DH038,46.0,48.0,0.13,0.015,0.16 +DH038,48.0,50.0,0.113,0.0189,0.092 +DH038,50.0,52.0,0.096,0.0133,0.117 +DH038,52.0,54.0,0.066,0.0348,0.072 +DH038,54.0,56.0,0.145,0.021,0.096 +DH038,56.0,58.0,0.087,0.0105,0.062 +DH038,58.0,60.0,0.057,0.0369,0.056 +DH038,60.0,62.0,0.043,0.0188,0.041 +DH038,62.0,64.0,0.075,0.014,0.09 +DH038,64.0,66.0,0.081,0.0204,0.063 +DH038,66.0,68.0,0.044,0.0193,0.025 +DH038,68.0,70.0,0.199,0.0103,0.236 +DH038,70.0,72.0,0.085,0.0319,0.076 +DH038,72.0,74.0,0.123,0.0093,0.165 +DH038,74.0,76.0,0.022,0.0171,0.024 +DH038,76.0,78.0,0.183,0.0399,0.138 +DH038,78.0,80.0,0.033,0.0221,0.048 +DH038,80.0,82.0,3.939,0.5758,10.65 +DH038,82.0,84.0,0.782,0.2108,1.452 +DH038,84.0,86.0,33.68,0.2495,66.608 +DH038,86.0,88.0,1.279,0.0649,3.102 +DH038,88.0,90.0,0.578,0.295,1.696 +DH038,90.0,92.0,2.432,0.1191,5.982 +DH038,92.0,94.0,0.712,0.4263,1.367 +DH038,94.0,96.0,2.169,0.1416,3.647 +DH038,96.0,98.0,0.467,0.0648,1.145 +DH038,98.0,100.0,1.633,0.5369,3.126 +DH038,100.0,102.0,2.306,0.333,6.014 +DH038,102.0,104.0,27.779,0.2733,58.906 +DH038,104.0,106.0,2.824,0.0275,5.312 +DH038,106.0,108.0,8.261,0.3612,21.94 +DH038,108.0,110.0,4.851,0.5393,13.52 +DH038,110.0,112.0,3.807,0.1733,7.837 +DH038,112.0,114.0,7.198,0.3369,10.922 +DH038,114.0,116.0,0.975,0.4829,2.211 +DH038,116.0,118.0,2.135,0.2134,3.72 +DH038,118.0,120.0,0.561,0.35,0.923 +DH038,120.0,122.0,0.977,0.453,2.493 +DH038,122.0,124.0,6.425,0.242,10.41 +DH038,124.0,126.0,11.443,0.286,32.684 +DH038,126.0,128.0,7.454,0.7404,12.688 +DH038,128.0,130.0,4.668,0.3003,7.549 +DH038,130.0,132.0,0.333,0.265,0.849 +DH038,132.0,134.0,4.482,0.095,8.32 +DH038,134.0,136.0,1.535,0.0419,3.727 +DH038,136.0,138.0,0.716,0.9274,1.829 +DH038,138.0,140.0,1.693,0.3222,2.855 +DH038,140.0,142.0,7.389,0.27,21.805 +DH038,142.0,144.0,2.563,0.3554,6.539 +DH038,144.0,146.0,0.298,0.1772,0.617 +DH038,146.0,148.0,3.304,0.0717,9.537 +DH038,148.0,150.0,0.822,0.3631,2.254 +DH038,150.0,152.0,1.385,0.1032,4.109 +DH038,152.0,154.0,6.344,0.252,18.437 +DH038,154.0,156.0,2.459,0.1358,6.659 +DH038,156.0,158.0,1.955,0.4137,4.33 +DH038,158.0,160.0,2.289,0.5889,4.357 +DH038,160.0,162.0,0.871,0.0785,1.999 +DH038,162.0,164.0,0.486,1.1136,1.348 +DH038,164.0,166.0,1.984,0.8848,5.114 +DH038,166.0,168.0,1.888,1.1049,3.942 +DH038,168.0,170.0,41.937,0.4183,75.485 +DH038,170.0,172.0,11.044,0.2234,31.513 +DH038,172.0,174.0,1.938,0.1013,4.381 +DH038,174.0,176.0,2.214,0.8619,6.169 +DH038,176.0,178.0,37.907,0.0397,69.027 +DH039,0.0,2.0,0.066,0.0386,0.059 +DH039,2.0,4.0,0.034,0.0162,0.025 +DH039,4.0,6.0,0.036,0.0498,0.052 +DH039,6.0,8.0,0.091,0.0175,0.104 +DH039,8.0,10.0,0.05,0.0157,0.026 +DH039,10.0,12.0,0.192,0.0294,0.115 +DH039,12.0,14.0,0.149,0.0232,0.117 +DH039,14.0,16.0,0.092,0.0244,0.115 +DH039,16.0,18.0,0.109,0.0119,0.133 +DH039,18.0,20.0,0.026,0.0245,0.026 +DH039,20.0,22.0,0.121,0.0129,0.099 +DH039,22.0,24.0,0.077,0.0101,0.055 +DH039,24.0,26.0,0.088,0.0082,0.099 +DH039,26.0,28.0,0.154,0.0457,0.129 +DH039,28.0,30.0,0.066,0.0119,0.049 +DH039,30.0,32.0,0.064,0.0443,0.085 +DH039,32.0,34.0,0.072,0.0139,0.039 +DH039,34.0,36.0,0.178,0.0085,0.244 +DH039,36.0,38.0,0.2,0.0264,0.107 +DH039,38.0,40.0,0.229,0.0093,0.242 +DH039,40.0,42.0,0.079,0.0248,0.118 +DH039,42.0,44.0,0.07,0.0265,0.045 +DH039,44.0,46.0,0.174,0.0337,0.163 +DH039,46.0,48.0,0.135,0.0111,0.119 +DH039,48.0,50.0,0.122,0.0121,0.075 +DH039,50.0,52.0,0.061,0.0137,0.07 +DH039,52.0,54.0,0.05,0.0118,0.042 +DH039,54.0,56.0,0.088,0.0089,0.094 +DH039,56.0,58.0,0.064,0.0091,0.079 +DH039,58.0,60.0,0.141,0.0119,0.101 +DH039,60.0,62.0,0.12,0.0274,0.144 +DH039,62.0,64.0,0.142,0.0512,0.207 +DH039,64.0,66.0,0.168,0.0214,0.196 +DH039,66.0,68.0,0.079,0.0228,0.057 +DH039,68.0,70.0,0.052,0.009,0.073 +DH039,70.0,72.0,0.086,0.0132,0.074 +DH039,72.0,74.0,0.044,0.013,0.053 +DH039,74.0,76.0,0.143,0.0123,0.146 +DH039,76.0,78.0,0.051,0.0166,0.059 +DH039,78.0,80.0,0.115,0.0215,0.132 +DH039,80.0,82.0,0.61,0.3044,1.405 +DH039,82.0,84.0,5.087,0.1255,9.191 +DH039,84.0,86.0,0.458,0.1581,1.05 +DH039,86.0,88.0,0.489,0.1768,0.838 +DH039,88.0,90.0,0.249,0.1627,0.465 +DH039,90.0,92.0,25.786,0.2645,63.34 +DH039,92.0,94.0,2.94,0.3619,4.723 +DH039,94.0,96.0,0.341,0.6364,0.697 +DH039,96.0,98.0,2.055,0.2029,3.774 +DH039,98.0,100.0,0.5,0.3379,1.286 +DH039,100.0,102.0,5.337,0.21,14.847 +DH039,102.0,104.0,7.435,0.1628,20.682 +DH039,104.0,106.0,0.597,0.0687,1.038 +DH039,106.0,108.0,0.896,0.1666,1.581 +DH039,108.0,110.0,2.137,0.2217,4.069 +DH039,110.0,112.0,0.139,0.0664,0.292 +DH039,112.0,114.0,0.809,0.1854,1.618 +DH039,114.0,116.0,2.035,0.0775,5.979 +DH039,116.0,118.0,17.334,0.7603,41.766 +DH039,118.0,120.0,0.341,0.2852,0.584 +DH039,120.0,122.0,2.295,0.1414,5.661 +DH039,122.0,124.0,1.033,0.0893,2.858 +DH039,124.0,126.0,6.416,0.1776,19.013 +DH039,126.0,128.0,3.552,1.454,9.709 +DH039,128.0,130.0,6.06,0.23,9.279 +DH039,130.0,132.0,11.696,0.376,29.424 +DH039,132.0,134.0,3.837,0.436,7.057 +DH039,134.0,136.0,0.736,0.2983,2.193 +DH039,136.0,138.0,0.267,0.1797,0.418 +DH039,138.0,140.0,4.243,0.7913,10.408 +DH039,140.0,142.0,1.423,0.0784,4.237 +DH039,142.0,144.0,5.202,0.4075,9.084 +DH039,144.0,146.0,4.291,0.6195,11.297 +DH039,146.0,148.0,11.482,0.1248,17.501 +DH039,148.0,150.0,1.25,0.4207,3.463 +DH039,150.0,152.0,1.513,0.0504,3.073 +DH039,152.0,154.0,9.936,0.4623,19.599 +DH039,154.0,156.0,6.094,0.3905,14.315 +DH039,156.0,158.0,5.026,0.1321,12.714 +DH039,158.0,160.0,2.421,0.1706,4.968 +DH039,160.0,162.0,0.506,0.2682,1.278 +DH039,162.0,164.0,2.251,2.0378,4.783 +DH039,164.0,166.0,3.796,0.6269,7.599 +DH039,166.0,168.0,4.885,0.5253,12.867 +DH039,168.0,170.0,16.37,0.6228,38.485 +DH039,170.0,172.0,3.274,0.0647,6.71 +DH039,172.0,174.0,2.913,0.6564,5.489 +DH039,174.0,176.0,0.24,1.8402,0.362 +DH039,176.0,178.0,0.67,0.558,1.505 +DH039,178.0,180.0,1.746,0.2061,4.106 +DH039,180.0,182.0,0.587,0.1284,1.528 +DH039,182.0,184.0,1.899,0.1142,2.986 +DH039,184.0,186.0,8.064,0.0459,16.929 +DH039,186.0,188.0,42.72,1.133,110.682 +DH039,188.0,190.0,10.802,0.6347,28.532 +DH039,190.0,192.0,6.751,0.9332,13.877 +DH039,192.0,194.0,4.446,0.298,11.716 +DH039,194.0,196.0,2.265,0.2686,3.517 +DH039,196.0,198.0,8.519,0.3267,17.703 +DH039,198.0,200.0,0.812,0.1529,2.022 +DH039,200.0,202.0,0.954,0.4755,2.737 +DH039,202.0,204.0,8.778,0.1338,17.137 +DH039,204.0,206.0,8.7,0.2476,22.833 +DH039,206.0,208.0,1.859,0.1898,3.114 +DH039,208.0,210.0,4.922,0.0817,10.915 +DH039,210.0,212.0,1.36,0.8694,2.733 +DH039,212.0,214.0,3.257,0.1923,7.734 +DH039,214.0,216.0,4.903,0.0479,10.319 +DH039,216.0,218.0,8.374,0.146,21.648 +DH039,218.0,220.0,5.815,0.1828,16.676 +DH039,220.0,222.0,10.278,0.0877,27.544 +DH039,222.0,224.0,6.295,0.0833,11.748 +DH039,224.0,226.0,1.716,0.4492,4.35 +DH039,226.0,228.0,1.854,0.1521,4.877 +DH039,228.0,230.0,5.234,0.1014,13.518 +DH039,230.0,232.0,13.211,0.1239,20.601 +DH039,232.0,234.0,1.746,0.1967,4.895 +DH039,234.0,236.0,2.009,0.1677,5.362 +DH039,236.0,238.0,1.216,0.1305,2.566 +DH039,238.0,240.0,16.377,0.3942,40.434 +DH039,240.0,242.0,7.228,0.0627,17.511 +DH039,242.0,244.0,10.53,1.3352,29.426 +DH039,244.0,246.0,3.761,0.6268,6.57 +DH039,246.0,248.0,1.385,0.212,3.587 +DH039,248.0,250.0,0.797,0.1033,1.838 +DH039,250.0,252.0,0.126,0.0129,0.124 +DH039,252.0,254.0,0.187,0.0334,0.125 +DH039,254.0,256.0,0.078,0.0436,0.097 +DH039,256.0,258.0,0.144,0.0488,0.207 +DH039,258.0,260.0,0.045,0.0099,0.035 +DH039,260.0,262.0,0.126,0.0229,0.182 +DH039,262.0,264.0,0.107,0.0155,0.061 +DH039,264.0,266.0,0.167,0.0183,0.202 +DH039,266.0,268.0,0.083,0.0111,0.106 +DH039,268.0,270.0,0.082,0.0116,0.056 +DH039,270.0,272.0,0.053,0.0128,0.029 +DH039,272.0,274.0,0.061,0.0117,0.034 +DH039,274.0,276.0,0.093,0.0333,0.123 +DH039,276.0,278.0,0.123,0.0229,0.111 +DH039,278.0,280.0,0.109,0.0188,0.095 +DH039,280.0,282.0,0.044,0.0279,0.033 +DH039,282.0,284.0,0.196,0.0289,0.294 +DH039,284.0,286.0,0.096,0.0134,0.116 +DH039,286.0,288.0,0.018,0.0481,0.021 +DH039,288.0,290.0,0.11,0.0227,0.082 +DH039,290.0,292.0,0.067,0.0063,0.036 +DH039,292.0,294.0,0.072,0.0066,0.063 +DH039,294.0,296.0,0.043,0.0253,0.06 +DH039,296.0,298.0,0.266,0.0161,0.176 +DH039,298.0,300.0,0.072,0.0081,0.092 +DH039,300.0,302.0,0.129,0.0247,0.17 +DH039,302.0,304.0,0.034,0.0253,0.044 +DH039,304.0,306.0,0.136,0.016,0.099 +DH039,306.0,308.0,0.113,0.0182,0.069 +DH039,308.0,310.0,0.084,0.0179,0.055 +DH039,310.0,312.0,0.057,0.0133,0.051 +DH039,312.0,314.0,0.047,0.0163,0.035 +DH039,314.0,316.0,0.153,0.0214,0.17 +DH039,316.0,318.0,0.05,0.0636,0.028 +DH039,318.0,320.0,0.273,0.0498,0.231 +DH039,320.0,322.0,0.198,0.0159,0.117 +DH039,322.0,324.0,0.112,0.0111,0.088 +DH039,324.0,326.0,0.047,0.02,0.038 +DH039,326.0,328.0,0.104,0.0153,0.081 +DH039,328.0,330.0,0.035,0.012,0.02 +DH039,330.0,332.0,0.132,0.0224,0.152 +DH039,332.0,334.0,0.081,0.0124,0.078 +DH039,334.0,336.0,0.054,0.0226,0.075 +DH039,336.0,338.0,0.115,0.0135,0.11 +DH039,338.0,340.0,0.188,0.0301,0.119 +DH039,340.0,342.0,0.063,0.0751,0.091 +DH039,342.0,344.0,0.139,0.0216,0.123 +DH039,344.0,346.0,0.092,0.0142,0.121 +DH039,346.0,348.0,0.099,0.0699,0.143 +DH039,348.0,350.0,0.112,0.0244,0.07 +DH039,350.0,352.0,0.103,0.0459,0.113 +DH039,352.0,354.0,0.074,0.0071,0.059 +DH039,354.0,356.0,0.137,0.0111,0.165 +DH039,356.0,358.0,0.053,0.0154,0.027 +DH039,358.0,360.0,0.214,0.0119,0.308 +DH039,360.0,362.0,0.131,0.0243,0.184 +DH039,362.0,364.0,0.13,0.0139,0.144 +DH039,364.0,366.0,0.077,0.0162,0.057 +DH039,366.0,368.0,0.056,0.0215,0.073 +DH039,368.0,370.0,0.372,0.0581,0.2 +DH039,370.0,372.0,0.112,0.0184,0.156 +DH039,372.0,374.0,0.088,0.0179,0.12 +DH040,0.0,2.0,0.096,0.0179,0.05 +DH040,2.0,4.0,0.078,0.0153,0.074 +DH040,4.0,6.0,0.113,0.0368,0.103 +DH040,6.0,8.0,0.073,0.0249,0.098 +DH040,8.0,10.0,0.29,0.021,0.282 +DH040,10.0,12.0,0.049,0.0105,0.032 +DH040,12.0,14.0,0.102,0.0217,0.129 +DH040,14.0,16.0,0.056,0.0087,0.072 +DH040,16.0,18.0,0.038,0.0092,0.035 +DH040,18.0,20.0,0.106,0.0495,0.13 +DH040,20.0,22.0,0.194,0.0254,0.107 +DH040,22.0,24.0,0.369,0.0095,0.299 +DH040,24.0,26.0,0.067,0.0286,0.084 +DH040,26.0,28.0,0.13,0.0245,0.129 +DH040,28.0,30.0,0.115,0.0275,0.095 +DH040,30.0,32.0,0.207,0.0179,0.269 +DH040,32.0,34.0,0.053,0.0113,0.037 +DH040,34.0,36.0,0.05,0.0252,0.034 +DH040,36.0,38.0,0.166,0.008,0.24 +DH040,38.0,40.0,0.079,0.0136,0.111 +DH040,40.0,42.0,0.153,0.0264,0.116 +DH040,42.0,44.0,0.041,0.0107,0.026 +DH040,44.0,46.0,0.038,0.0173,0.048 +DH040,46.0,48.0,0.108,0.0265,0.145 +DH040,48.0,50.0,0.039,0.0273,0.02 +DH040,50.0,52.0,0.166,0.0197,0.226 +DH040,52.0,54.0,0.062,0.0222,0.09 +DH040,54.0,56.0,0.162,0.024,0.231 +DH040,56.0,58.0,0.072,0.0382,0.051 +DH040,58.0,60.0,0.037,0.0153,0.05 +DH040,60.0,62.0,0.079,0.0211,0.118 +DH040,62.0,64.0,0.039,0.012,0.035 +DH040,64.0,66.0,0.18,0.0321,0.17 +DH040,66.0,68.0,0.08,0.0339,0.081 +DH040,68.0,70.0,0.123,0.0304,0.107 +DH040,70.0,72.0,0.084,0.0161,0.051 +DH040,72.0,74.0,0.199,0.0147,0.195 +DH040,74.0,76.0,0.181,0.0085,0.108 +DH040,76.0,78.0,0.074,0.0193,0.079 +DH040,78.0,80.0,0.094,0.0209,0.051 +DH040,80.0,82.0,25.538,0.3147,50.964 +DH040,82.0,84.0,0.388,0.0691,0.895 +DH040,84.0,86.0,20.611,0.0995,35.182 +DH040,86.0,88.0,0.506,0.1256,1.253 +DH040,88.0,90.0,1.232,0.0785,1.991 +DH040,90.0,92.0,0.231,0.3267,0.472 +DH040,92.0,94.0,4.532,0.1078,11.434 +DH040,94.0,96.0,5.197,0.2244,8.834 +DH040,96.0,98.0,1.021,0.2602,1.699 +DH040,98.0,100.0,8.718,0.1818,15.102 +DH040,100.0,102.0,0.594,0.4001,0.92 +DH040,102.0,104.0,5.095,2.3995,11.805 +DH040,104.0,106.0,74.245,0.3304,175.521 +DH040,106.0,108.0,0.857,1.4799,2.289 +DH040,108.0,110.0,1.128,0.1896,3.27 +DH040,110.0,112.0,2.202,0.2943,4.948 +DH040,112.0,114.0,0.575,0.3737,1.087 +DH040,114.0,116.0,1.223,0.5261,2.979 +DH040,116.0,118.0,0.13,0.267,0.249 +DH040,118.0,120.0,0.439,0.0568,0.986 +DH040,120.0,122.0,3.879,0.2267,8.7 +DH040,122.0,124.0,7.587,0.9189,18.349 +DH040,124.0,126.0,0.516,0.3656,0.795 +DH040,126.0,128.0,9.97,0.0605,26.115 +DH040,128.0,130.0,7.295,0.4719,16.795 +DH040,130.0,132.0,4.147,0.12,8.01 +DH040,132.0,134.0,0.637,0.1216,1.055 +DH040,134.0,136.0,1.063,0.1507,2.942 +DH040,136.0,138.0,0.468,1.0713,1.076 +DH040,138.0,140.0,3.307,0.0546,8.975 +DH040,140.0,142.0,2.72,0.1564,4.174 +DH040,142.0,144.0,6.317,0.021,18.395 +DH040,144.0,146.0,1.929,0.201,4.307 +DH040,146.0,148.0,1.484,0.4927,2.437 +DH040,148.0,150.0,4.977,0.1302,9.895 +DH040,150.0,152.0,5.444,0.832,15.692 +DH040,152.0,154.0,9.778,1.7746,28.814 +DH040,154.0,156.0,0.594,0.2324,1.513 +DH040,156.0,158.0,1.651,0.7442,2.504 +DH040,158.0,160.0,3.324,0.1685,9.544 +DH040,160.0,162.0,2.872,0.0616,5.602 +DH040,162.0,164.0,0.507,0.1611,0.813 +DH040,164.0,166.0,7.495,0.506,14.878 +DH040,166.0,168.0,0.486,0.2063,1.412 +DH040,168.0,170.0,1.865,0.3745,5.21 +DH040,170.0,172.0,3.925,0.6107,8.213 +DH040,172.0,174.0,1.682,0.4488,4.215 +DH040,174.0,176.0,1.186,0.3022,2.753 +DH040,176.0,178.0,0.2,0.3173,0.551 +DH040,178.0,180.0,3.3,0.0653,9.615 +DH040,180.0,182.0,1.323,0.5836,2.827 +DH040,182.0,184.0,0.613,0.2986,1.632 +DH040,184.0,186.0,5.747,0.0993,15.257 +DH040,186.0,188.0,43.098,0.1843,81.766 +DH040,188.0,190.0,0.303,0.1128,0.467 +DH040,190.0,192.0,1.498,0.3648,3.182 +DH040,192.0,194.0,0.458,0.5027,1.014 +DH040,194.0,196.0,0.889,0.2681,2.44 +DH040,196.0,198.0,0.667,0.2511,1.657 +DH040,198.0,200.0,4.898,0.5754,13.032 +DH040,200.0,202.0,7.495,0.6468,22.374 +DH040,202.0,204.0,4.065,0.2531,6.964 +DH040,204.0,206.0,0.386,0.1786,0.69 +DH040,206.0,208.0,7.919,0.2044,18.139 +DH040,208.0,210.0,0.389,0.1929,0.945 +DH040,210.0,212.0,7.35,0.3653,20.942 +DH040,212.0,214.0,1.435,0.0548,2.343 +DH040,214.0,216.0,0.118,0.172,0.221 +DH040,216.0,218.0,1.301,1.2676,3.873 +DH040,218.0,220.0,7.686,0.1064,12.521 +DH040,220.0,222.0,4.677,0.105,8.856 +DH040,222.0,224.0,7.031,0.1382,18.642 +DH040,224.0,226.0,3.254,0.0925,8.685 +DH040,226.0,228.0,0.65,0.4471,1.638 +DH040,228.0,229.0,3.159,0.0734,6.964 +DH041,0.0,2.0,0.04,0.0158,0.031 +DH041,2.0,4.0,0.102,0.0076,0.091 +DH041,4.0,6.0,0.052,0.0239,0.073 +DH041,6.0,8.0,0.078,0.0126,0.067 +DH041,8.0,10.0,0.038,0.015,0.038 +DH041,10.0,12.0,0.071,0.0125,0.106 +DH041,12.0,14.0,0.054,0.0113,0.038 +DH041,14.0,16.0,0.319,0.0179,0.468 +DH041,16.0,18.0,0.128,0.0112,0.15 +DH041,18.0,20.0,0.056,0.0143,0.046 +DH041,20.0,22.0,0.037,0.0129,0.044 +DH041,22.0,24.0,0.08,0.0195,0.05 +DH041,24.0,26.0,0.145,0.013,0.143 +DH041,26.0,28.0,0.09,0.0138,0.119 +DH041,28.0,30.0,0.303,0.0274,0.263 +DH041,30.0,32.0,0.244,0.0205,0.243 +DH041,32.0,34.0,0.062,0.0265,0.08 +DH041,34.0,36.0,0.061,0.0192,0.088 +DH041,36.0,38.0,0.1,0.0157,0.073 +DH041,38.0,40.0,0.062,0.0154,0.074 +DH041,40.0,42.0,0.097,0.0378,0.064 +DH041,42.0,44.0,0.059,0.0178,0.078 +DH041,44.0,46.0,0.11,0.0189,0.129 +DH041,46.0,48.0,0.083,0.0231,0.058 +DH041,48.0,50.0,0.099,0.0083,0.081 +DH041,50.0,52.0,0.113,0.0414,0.069 +DH041,52.0,54.0,0.162,0.0292,0.083 +DH041,54.0,56.0,0.065,0.0106,0.055 +DH041,56.0,58.0,0.052,0.0098,0.038 +DH041,58.0,60.0,0.033,0.0197,0.047 +DH041,60.0,62.0,0.102,0.0229,0.073 +DH041,62.0,64.0,0.176,0.0294,0.228 +DH041,64.0,66.0,0.087,0.0158,0.071 +DH041,66.0,68.0,0.289,0.0101,0.25 +DH041,68.0,70.0,0.115,0.0313,0.086 +DH041,70.0,72.0,0.128,0.0368,0.127 +DH041,72.0,74.0,0.198,0.0285,0.221 +DH041,74.0,76.0,0.082,0.0213,0.084 +DH041,76.0,78.0,0.08,0.0401,0.1 +DH041,78.0,80.0,0.133,0.0215,0.173 +DH041,80.0,82.0,0.611,0.0572,1.548 +DH041,82.0,84.0,2.063,0.1153,4.533 +DH041,84.0,86.0,3.741,0.1942,7.581 +DH041,86.0,88.0,0.7,0.1844,1.246 +DH041,88.0,90.0,1.498,0.0862,2.258 +DH041,90.0,92.0,7.804,0.2304,19.081 +DH041,92.0,94.0,1.506,0.1095,3.511 +DH041,94.0,96.0,0.303,0.5741,0.815 +DH041,96.0,98.0,2.457,0.2827,7.178 +DH041,98.0,100.0,0.922,0.172,1.615 +DH041,100.0,102.0,45.318,0.5047,85.764 +DH041,102.0,104.0,11.464,0.6015,33.526 +DH041,104.0,106.0,1.703,0.2202,3.952 +DH041,106.0,108.0,1.701,0.2062,2.819 +DH041,108.0,110.0,7.836,0.0703,22.524 +DH041,110.0,112.0,0.244,0.0979,0.464 +DH041,112.0,114.0,3.331,0.1737,7.253 +DH041,114.0,116.0,11.301,0.2111,25.733 +DH041,116.0,118.0,1.293,0.3684,2.158 +DH041,118.0,120.0,19.202,0.5554,46.105 +DH041,120.0,122.0,0.863,0.3125,1.38 +DH041,122.0,124.0,4.278,0.1674,9.6 +DH041,124.0,126.0,2.248,1.5472,6.056 +DH041,126.0,128.0,0.441,1.1844,0.982 +DH041,128.0,130.0,3.512,0.3743,9.189 +DH041,130.0,132.0,0.255,0.2158,0.526 +DH041,132.0,134.0,3.578,0.8758,6.588 +DH041,134.0,136.0,2.281,0.5752,4.162 +DH041,136.0,138.0,2.021,0.1881,5.492 +DH041,138.0,140.0,0.123,0.2792,0.353 +DH041,140.0,142.0,2.647,0.294,5.007 +DH041,142.0,144.0,0.203,0.8437,0.54 +DH041,144.0,146.0,1.06,0.6613,1.959 +DH041,146.0,148.0,3.088,0.4129,7.199 +DH041,148.0,150.0,2.02,0.6287,5.83 +DH041,150.0,152.0,0.672,0.2376,1.899 +DH041,152.0,154.0,4.841,0.0741,13.442 +DH041,154.0,156.0,6.723,0.0938,16.827 +DH041,156.0,158.0,0.162,0.5058,0.371 +DH041,158.0,160.0,3.229,0.2844,8.447 +DH041,160.0,162.0,0.682,0.1555,1.092 +DH041,162.0,164.0,1.607,0.2717,2.626 +DH041,164.0,166.0,0.377,0.2216,0.677 +DH041,166.0,168.0,0.734,0.1912,1.556 +DH041,168.0,170.0,2.256,0.3826,5.994 +DH041,170.0,172.0,1.531,0.0873,3.535 +DH041,172.0,174.0,2.509,0.1008,5.765 +DH041,174.0,176.0,10.191,0.1316,24.706 +DH041,176.0,178.0,0.89,0.0583,2.48 +DH041,178.0,180.0,1.299,0.1123,2.131 +DH041,180.0,182.0,1.397,0.1279,3.126 +DH041,182.0,184.0,0.497,0.0652,1.287 +DH041,184.0,186.0,1.957,0.1867,3.49 +DH041,186.0,188.0,2.622,0.2149,4.184 +DH041,188.0,190.0,0.301,0.1274,0.486 +DH041,190.0,192.0,3.074,0.0529,5.14 +DH041,192.0,194.0,1.808,0.2162,3.826 +DH041,194.0,196.0,1.504,0.1308,4.222 +DH041,196.0,198.0,1.516,0.6944,3.501 +DH041,198.0,200.0,2.183,0.1997,6.21 +DH041,200.0,202.0,1.345,0.241,3.49 +DH041,202.0,204.0,7.835,0.5192,22.946 +DH041,204.0,206.0,0.54,0.2656,1.341 +DH041,206.0,208.0,1.194,0.1277,2.141 +DH041,208.0,210.0,5.069,0.5202,7.831 +DH041,210.0,212.0,1.192,0.4767,2.665 +DH041,212.0,214.0,0.902,0.1369,2.149 +DH041,214.0,216.0,1.205,0.4494,2.642 +DH041,216.0,218.0,4.734,0.1266,12.568 +DH041,218.0,220.0,1.867,0.187,4.289 +DH041,220.0,222.0,1.306,0.1413,3.611 +DH041,222.0,224.0,2.293,0.2017,4.916 +DH041,224.0,226.0,1.364,0.1336,2.927 +DH041,226.0,228.0,0.901,0.037,2.371 +DH041,228.0,230.0,1.592,0.1396,4.588 +DH041,230.0,232.0,0.084,0.7874,0.181 +DH041,232.0,234.0,1.047,0.1556,2.209 +DH041,234.0,236.0,4.21,0.1344,6.837 +DH041,236.0,238.0,28.119,0.4795,42.571 +DH041,238.0,240.0,2.748,0.3668,7.661 +DH041,240.0,242.0,0.182,0.1685,0.32 +DH041,242.0,244.0,1.834,0.4134,5.495 +DH041,244.0,246.0,0.441,0.1293,0.915 +DH041,246.0,248.0,6.041,0.8229,10.4 +DH041,248.0,250.0,6.029,0.3938,16.685 +DH041,250.0,252.0,0.081,0.015,0.075 +DH041,252.0,254.0,0.042,0.0218,0.058 +DH041,254.0,256.0,0.064,0.0255,0.041 +DH041,256.0,258.0,0.047,0.016,0.062 +DH041,258.0,260.0,0.044,0.0203,0.057 +DH041,260.0,262.0,0.052,0.0158,0.043 +DH041,262.0,264.0,0.088,0.0093,0.085 +DH041,264.0,266.0,0.078,0.0138,0.092 +DH041,266.0,268.0,0.044,0.0126,0.032 +DH041,268.0,270.0,0.18,0.0467,0.235 +DH041,270.0,272.0,0.05,0.019,0.031 +DH041,272.0,274.0,0.081,0.0173,0.084 +DH041,274.0,276.0,0.046,0.0202,0.033 +DH041,276.0,278.0,0.064,0.0077,0.036 +DH041,278.0,280.0,0.058,0.0294,0.044 +DH041,280.0,282.0,0.088,0.0181,0.109 +DH041,282.0,284.0,0.025,0.0156,0.031 +DH041,284.0,286.0,0.071,0.0119,0.056 +DH041,286.0,288.0,0.067,0.027,0.089 +DH041,288.0,290.0,0.059,0.0179,0.045 +DH041,290.0,292.0,0.106,0.0418,0.066 +DH041,292.0,294.0,0.166,0.0103,0.15 +DH041,294.0,296.0,0.023,0.0198,0.02 +DH041,296.0,298.0,0.018,0.0201,0.026 +DH041,298.0,300.0,0.114,0.0101,0.079 +DH041,300.0,302.0,0.083,0.0246,0.104 +DH041,302.0,304.0,0.103,0.0319,0.078 +DH041,304.0,306.0,0.097,0.0342,0.098 +DH041,306.0,308.0,0.042,0.0257,0.044 +DH041,308.0,310.0,0.178,0.0262,0.264 +DH041,310.0,312.0,0.056,0.0137,0.056 +DH041,312.0,314.0,0.226,0.0107,0.225 +DH041,314.0,316.0,0.065,0.0125,0.053 +DH041,316.0,318.0,0.143,0.0253,0.119 +DH041,318.0,320.0,0.111,0.0109,0.091 +DH041,320.0,322.0,0.078,0.0122,0.045 +DH041,322.0,324.0,0.058,0.0164,0.077 +DH041,324.0,326.0,0.153,0.0131,0.224 +DH041,326.0,328.0,0.156,0.0147,0.098 +DH041,328.0,330.0,0.062,0.0241,0.047 +DH041,330.0,332.0,0.064,0.0187,0.062 +DH041,332.0,334.0,0.078,0.0253,0.089 +DH041,334.0,336.0,0.145,0.0152,0.108 +DH041,336.0,338.0,0.042,0.015,0.024 +DH041,338.0,340.0,0.097,0.0137,0.142 +DH041,340.0,342.0,0.031,0.0121,0.042 +DH041,342.0,344.0,0.064,0.0113,0.052 +DH041,344.0,346.0,0.121,0.0176,0.165 +DH041,346.0,348.0,0.068,0.0552,0.083 +DH041,348.0,350.0,0.198,0.0076,0.226 +DH041,350.0,352.0,0.056,0.024,0.052 +DH041,352.0,354.0,0.1,0.0118,0.092 +DH041,354.0,356.0,0.119,0.0263,0.153 +DH041,356.0,358.0,0.089,0.0188,0.11 +DH041,358.0,360.0,0.237,0.0262,0.343 +DH041,360.0,362.0,0.083,0.0179,0.084 +DH041,362.0,364.0,0.051,0.0123,0.04 +DH041,364.0,366.0,0.054,0.0275,0.074 +DH041,366.0,368.0,0.134,0.0252,0.133 +DH041,368.0,370.0,0.062,0.0225,0.057 +DH041,370.0,372.0,0.032,0.0429,0.035 +DH041,372.0,374.0,0.145,0.0274,0.078 +DH041,374.0,376.0,0.068,0.0173,0.081 +DH041,376.0,378.0,0.046,0.0108,0.03 +DH041,378.0,380.0,0.122,0.0119,0.139 +DH041,380.0,382.0,0.077,0.011,0.064 +DH041,382.0,384.0,0.044,0.0209,0.066 +DH041,384.0,386.0,0.11,0.0248,0.145 +DH041,386.0,388.0,0.05,0.0221,0.057 +DH041,388.0,390.0,0.141,0.0222,0.135 +DH041,390.0,392.0,0.062,0.0312,0.069 +DH041,392.0,394.0,0.085,0.0235,0.074 +DH041,394.0,396.0,0.08,0.0286,0.097 +DH041,396.0,398.0,0.061,0.0246,0.049 +DH041,398.0,400.0,0.104,0.0275,0.067 +DH041,400.0,402.0,0.076,0.0278,0.044 +DH041,402.0,404.0,0.059,0.0183,0.033 +DH041,404.0,406.0,0.117,0.0338,0.12 +DH041,406.0,408.0,0.089,0.0164,0.049 +DH041,408.0,410.0,0.094,0.0124,0.086 +DH041,410.0,412.0,0.048,0.0246,0.061 +DH041,412.0,414.0,0.063,0.0187,0.089 +DH041,414.0,416.0,0.163,0.0147,0.21 +DH041,416.0,418.0,0.054,0.0275,0.08 +DH041,418.0,420.0,0.157,0.0382,0.201 +DH041,420.0,422.0,0.173,0.0413,0.101 +DH041,422.0,424.0,0.057,0.0087,0.034 +DH041,424.0,426.0,0.033,0.0075,0.02 +DH041,426.0,428.0,0.029,0.021,0.039 +DH041,428.0,430.0,0.03,0.0179,0.023 +DH041,430.0,431.0,0.027,0.0128,0.03 +DH042,0.0,2.0,0.066,0.0155,0.082 +DH042,2.0,4.0,0.298,0.0157,0.328 +DH042,4.0,6.0,0.071,0.0202,0.045 +DH042,6.0,8.0,0.118,0.0554,0.118 +DH042,8.0,10.0,0.061,0.0396,0.074 +DH042,10.0,12.0,0.132,0.0251,0.078 +DH042,12.0,14.0,0.259,0.0216,0.223 +DH042,14.0,16.0,0.054,0.0546,0.038 +DH042,16.0,18.0,0.111,0.0052,0.151 +DH042,18.0,20.0,0.14,0.0186,0.16 +DH042,20.0,22.0,0.05,0.0067,0.055 +DH042,22.0,24.0,0.069,0.0086,0.043 +DH042,24.0,26.0,0.116,0.0166,0.088 +DH042,26.0,28.0,0.084,0.0129,0.095 +DH042,28.0,30.0,0.128,0.0307,0.086 +DH042,30.0,32.0,0.055,0.0252,0.058 +DH042,32.0,34.0,0.054,0.0145,0.036 +DH042,34.0,36.0,0.188,0.0074,0.157 +DH042,36.0,38.0,0.165,0.0202,0.126 +DH042,38.0,40.0,0.104,0.0133,0.133 +DH042,40.0,42.0,0.034,0.0077,0.029 +DH042,42.0,44.0,0.085,0.0203,0.118 +DH042,44.0,46.0,0.05,0.0157,0.069 +DH042,46.0,48.0,0.073,0.0126,0.076 +DH042,48.0,50.0,0.092,0.0223,0.072 +DH042,50.0,52.0,0.074,0.0168,0.107 +DH042,52.0,54.0,0.047,0.0072,0.06 +DH042,54.0,56.0,0.056,0.0107,0.076 +DH042,56.0,58.0,0.075,0.0097,0.113 +DH042,58.0,60.0,0.031,0.0175,0.026 +DH042,60.0,62.0,0.097,0.0133,0.081 +DH042,62.0,64.0,0.081,0.036,0.044 +DH042,64.0,66.0,0.031,0.0206,0.016 +DH042,66.0,68.0,0.028,0.0108,0.015 +DH042,68.0,70.0,0.209,0.0261,0.187 +DH042,70.0,72.0,0.109,0.0066,0.131 +DH042,72.0,74.0,0.104,0.0199,0.068 +DH042,74.0,76.0,0.08,0.0217,0.05 +DH042,76.0,78.0,0.138,0.0215,0.182 +DH042,78.0,80.0,0.229,0.0277,0.284 +DH042,80.0,82.0,0.994,0.0624,2.514 +DH042,82.0,84.0,1.698,0.7172,3.995 +DH042,84.0,86.0,2.025,0.3086,3.824 +DH042,86.0,88.0,1.812,0.2973,4.023 +DH042,88.0,90.0,14.054,0.2291,22.887 +DH042,90.0,92.0,14.033,0.0942,42.032 +DH042,92.0,94.0,11.167,0.7346,22.884 +DH042,94.0,96.0,0.176,0.0972,0.493 +DH042,96.0,98.0,3.384,0.13,7.093 +DH042,98.0,100.0,4.643,0.1948,10.277 +DH042,100.0,102.0,6.442,0.3369,13.634 +DH042,102.0,104.0,5.225,0.2408,10.69 +DH042,104.0,106.0,2.668,0.6435,5.436 +DH042,106.0,108.0,3.862,0.1623,9.221 +DH042,108.0,110.0,8.937,0.4544,19.827 +DH042,110.0,112.0,5.252,0.3589,12.132 +DH042,112.0,114.0,0.817,0.0625,1.572 +DH042,114.0,116.0,1.799,0.4221,4.442 +DH042,116.0,118.0,0.624,0.2701,1.072 +DH042,118.0,120.0,0.725,0.0626,2.089 +DH042,120.0,122.0,3.803,0.3483,10.558 +DH042,122.0,124.0,2.733,0.0743,4.57 +DH042,124.0,126.0,2.317,0.2752,5.569 +DH042,126.0,128.0,0.626,0.1666,1.054 +DH042,128.0,130.0,0.839,0.2497,1.927 +DH042,130.0,132.0,1.649,0.2765,3.923 +DH042,132.0,134.0,1.013,0.7029,2.26 +DH042,134.0,136.0,6.12,0.5381,13.559 +DH042,136.0,138.0,0.713,0.174,1.597 +DH042,138.0,140.0,1.529,0.4049,2.644 +DH042,140.0,142.0,3.412,0.219,9.352 +DH042,142.0,144.0,0.087,0.6222,0.208 +DH042,144.0,146.0,0.237,0.3168,0.423 +DH042,146.0,148.0,5.593,0.5448,10.106 +DH042,148.0,150.0,0.779,0.1729,1.681 +DH042,150.0,152.0,0.178,0.2472,0.354 +DH042,152.0,154.0,6.482,0.3933,10.711 +DH042,154.0,156.0,0.082,0.8112,0.158 +DH042,156.0,158.0,11.041,0.0872,30.683 +DH042,158.0,160.0,18.985,0.1063,50.323 +DH042,160.0,162.0,4.191,0.4141,9.243 +DH042,162.0,164.0,2.91,0.096,7.923 +DH042,164.0,166.0,5.297,0.0522,13.763 +DH042,166.0,168.0,0.113,0.5104,0.268 +DH042,168.0,170.0,5.189,0.3356,13.711 +DH042,170.0,172.0,3.824,0.2082,6.822 +DH042,172.0,174.0,30.641,0.0763,85.115 +DH042,174.0,176.0,1.351,0.1515,3.625 +DH042,176.0,178.0,0.732,0.4484,1.485 +DH042,178.0,180.0,3.823,0.3719,7.006 +DH042,180.0,182.0,3.993,0.4768,9.017 +DH042,182.0,184.0,1.468,0.3293,2.83 +DH042,184.0,186.0,6.473,0.0567,9.817 +DH042,186.0,188.0,0.62,0.3495,1.564 +DH042,188.0,190.0,1.601,0.1245,4.4 +DH042,190.0,192.0,1.897,0.6985,5.315 +DH042,192.0,194.0,7.395,0.2688,12.296 +DH042,194.0,196.0,2.971,0.1521,6.357 +DH042,196.0,198.0,0.957,0.222,2.573 +DH042,198.0,200.0,0.407,0.1558,0.929 +DH042,200.0,202.0,4.818,0.2186,10.989 +DH042,202.0,204.0,0.503,0.1076,1.429 +DH042,204.0,206.0,4.107,0.2685,11.776 +DH042,206.0,208.0,1.676,0.7479,3.7 +DH042,208.0,210.0,1.831,0.0982,5.321 +DH042,210.0,212.0,2.243,0.2782,5.962 +DH042,212.0,214.0,3.545,0.1659,7.024 +DH042,214.0,216.0,25.956,0.143,77.552 +DH042,216.0,218.0,0.311,0.1682,0.566 +DH042,218.0,220.0,1.115,0.7276,1.673 +DH042,220.0,222.0,8.427,0.1217,18.166 +DH043,0.0,2.0,0.087,0.0233,0.089 +DH043,2.0,4.0,0.098,0.0246,0.131 +DH043,4.0,6.0,0.067,0.0141,0.089 +DH043,6.0,8.0,0.105,0.0142,0.104 +DH043,8.0,10.0,0.071,0.0108,0.066 +DH043,10.0,12.0,0.133,0.0062,0.161 +DH043,12.0,14.0,0.101,0.0091,0.107 +DH043,14.0,16.0,0.154,0.0169,0.101 +DH043,16.0,18.0,0.021,0.0275,0.013 +DH043,18.0,20.0,0.241,0.0166,0.202 +DH043,20.0,22.0,0.136,0.0172,0.173 +DH043,22.0,24.0,0.098,0.0192,0.135 +DH043,24.0,26.0,0.156,0.0141,0.107 +DH043,26.0,28.0,0.018,0.0154,0.019 +DH043,28.0,30.0,0.106,0.0155,0.068 +DH043,30.0,32.0,0.134,0.0223,0.068 +DH043,32.0,34.0,0.226,0.0265,0.123 +DH043,34.0,36.0,0.066,0.0272,0.05 +DH043,36.0,38.0,0.042,0.0286,0.045 +DH043,38.0,40.0,0.167,0.0396,0.247 +DH043,40.0,42.0,0.232,0.0217,0.273 +DH043,42.0,44.0,0.027,0.0184,0.014 +DH043,44.0,46.0,0.084,0.0071,0.065 +DH043,46.0,48.0,0.121,0.011,0.078 +DH043,48.0,50.0,0.106,0.032,0.141 +DH043,50.0,52.0,0.065,0.0201,0.06 +DH043,52.0,54.0,0.121,0.024,0.166 +DH043,54.0,56.0,0.02,0.0226,0.024 +DH043,56.0,58.0,0.071,0.0059,0.089 +DH043,58.0,60.0,0.054,0.0424,0.07 +DH043,60.0,62.0,0.051,0.0066,0.066 +DH043,62.0,64.0,0.125,0.0164,0.148 +DH043,64.0,66.0,0.067,0.0312,0.082 +DH043,66.0,68.0,0.031,0.0091,0.038 +DH043,68.0,70.0,0.144,0.0097,0.102 +DH043,70.0,72.0,0.093,0.0103,0.089 +DH043,72.0,74.0,0.08,0.0175,0.105 +DH043,74.0,76.0,0.247,0.0144,0.363 +DH043,76.0,78.0,0.104,0.0414,0.148 +DH043,78.0,80.0,0.137,0.0121,0.086 +DH043,80.0,82.0,0.552,0.2251,1.584 +DH043,82.0,84.0,4.617,0.9254,7.998 +DH043,84.0,86.0,0.202,0.1898,0.309 +DH043,86.0,88.0,2.836,0.1967,6.189 +DH043,88.0,90.0,2.621,0.2052,4.133 +DH043,90.0,92.0,0.274,0.2904,0.52 +DH043,92.0,94.0,0.624,0.2153,1.189 +DH043,94.0,96.0,1.052,0.1183,2.424 +DH043,96.0,98.0,1.697,0.1391,3.116 +DH043,98.0,100.0,1.904,0.4675,3.977 +DH043,100.0,102.0,1.674,0.2856,3.13 +DH043,102.0,104.0,4.009,0.2748,6.236 +DH043,104.0,106.0,1.841,0.2585,4.296 +DH043,106.0,108.0,0.346,0.2935,0.734 +DH043,108.0,110.0,1.576,0.511,4.317 +DH043,110.0,112.0,0.266,0.1277,0.548 +DH043,112.0,114.0,3.339,0.1223,6.615 +DH043,114.0,116.0,7.075,0.1065,11.802 +DH043,116.0,118.0,4.226,0.4886,10.125 +DH043,118.0,120.0,3.121,0.0385,5.815 +DH043,120.0,122.0,8.268,2.4789,12.617 +DH043,122.0,124.0,0.498,0.148,1.217 +DH043,124.0,126.0,0.996,0.1065,1.762 +DH043,126.0,128.0,3.578,0.1948,7.18 +DH043,128.0,130.0,0.996,0.1602,2.583 +DH043,130.0,132.0,0.953,0.3734,1.466 +DH043,132.0,134.0,0.271,0.5066,0.57 +DH043,134.0,136.0,0.423,0.1666,0.685 +DH043,136.0,138.0,5.014,0.1657,8.561 +DH043,138.0,140.0,1.774,0.0683,2.82 +DH043,140.0,142.0,4.927,0.1227,7.534 +DH043,142.0,144.0,7.163,0.2333,14.361 +DH043,144.0,146.0,73.805,0.2017,157.205 +DH043,146.0,148.0,0.679,0.038,1.346 +DH043,148.0,150.0,1.456,0.4495,3.533 +DH043,150.0,152.0,0.608,0.106,1.344 +DH043,152.0,154.0,2.046,0.1316,4.535 +DH043,154.0,156.0,1.878,0.7455,3.429 +DH043,156.0,158.0,2.768,0.7952,5.135 +DH043,158.0,160.0,3.323,2.0563,5.118 +DH043,160.0,162.0,8.311,0.1629,24.395 +DH043,162.0,164.0,1.652,0.3227,3.39 +DH043,164.0,166.0,6.974,0.3268,16.08 +DH043,166.0,168.0,2.79,0.0996,7.823 +DH043,168.0,170.0,6.26,0.1933,13.984 +DH043,170.0,172.0,13.839,0.2515,30.26 +DH043,172.0,174.0,1.098,0.1795,2.182 +DH043,174.0,176.0,1.254,0.2053,3.477 +DH043,176.0,178.0,4.447,0.5055,8.341 +DH043,178.0,180.0,0.087,0.1822,0.238 +DH043,180.0,182.0,1.071,0.7129,2.003 +DH043,182.0,184.0,0.836,0.4333,2.447 +DH043,184.0,186.0,0.874,1.1342,2.327 +DH043,186.0,187.0,6.829,0.3315,14.15 +DH044,0.0,2.0,0.175,0.0475,0.171 +DH044,2.0,4.0,0.08,0.0179,0.053 +DH044,4.0,6.0,0.148,0.0208,0.092 +DH044,6.0,8.0,0.159,0.0362,0.194 +DH044,8.0,10.0,0.051,0.0128,0.056 +DH044,10.0,12.0,0.046,0.0115,0.056 +DH044,12.0,14.0,0.428,0.0171,0.393 +DH044,14.0,16.0,0.041,0.0296,0.025 +DH044,16.0,18.0,0.046,0.0127,0.053 +DH044,18.0,20.0,0.051,0.0392,0.046 +DH044,20.0,22.0,0.054,0.0302,0.043 +DH044,22.0,24.0,0.058,0.0287,0.035 +DH044,24.0,26.0,0.128,0.0128,0.182 +DH044,26.0,28.0,0.266,0.014,0.35 +DH044,28.0,30.0,0.097,0.0222,0.126 +DH044,30.0,32.0,0.068,0.0393,0.084 +DH044,32.0,34.0,0.061,0.0109,0.071 +DH044,34.0,36.0,0.148,0.033,0.212 +DH044,36.0,38.0,0.031,0.0267,0.034 +DH044,38.0,40.0,0.091,0.0493,0.054 +DH044,40.0,42.0,0.124,0.011,0.072 +DH044,42.0,44.0,0.119,0.0451,0.153 +DH044,44.0,46.0,0.064,0.0143,0.059 +DH044,46.0,48.0,0.06,0.0359,0.036 +DH044,48.0,50.0,0.033,0.0187,0.042 +DH044,50.0,52.0,0.051,0.0228,0.071 +DH044,52.0,54.0,0.14,0.0359,0.198 +DH044,54.0,56.0,0.084,0.0125,0.043 +DH044,56.0,58.0,0.1,0.0296,0.134 +DH044,58.0,60.0,0.124,0.0119,0.168 +DH044,60.0,62.0,0.112,0.0388,0.056 +DH044,62.0,64.0,0.033,0.0519,0.039 +DH044,64.0,66.0,0.091,0.0102,0.057 +DH044,66.0,68.0,0.124,0.0236,0.1 +DH044,68.0,70.0,0.079,0.0135,0.118 +DH044,70.0,72.0,0.14,0.0141,0.156 +DH044,72.0,74.0,0.097,0.0143,0.052 +DH044,74.0,76.0,0.042,0.011,0.026 +DH044,76.0,78.0,0.07,0.0638,0.102 +DH044,78.0,80.0,0.041,0.0085,0.028 +DH044,80.0,82.0,1.382,0.6474,2.66 +DH044,82.0,84.0,0.206,0.0987,0.515 +DH044,84.0,86.0,3.783,0.0961,5.723 +DH044,86.0,88.0,0.448,0.2242,1.28 +DH044,88.0,90.0,12.856,0.2716,21.068 +DH044,90.0,92.0,13.351,0.1927,38.599 +DH044,92.0,94.0,1.067,0.2399,1.794 +DH044,94.0,96.0,3.276,0.4245,8.334 +DH044,96.0,98.0,1.149,0.2968,2.119 +DH044,98.0,100.0,0.36,0.296,0.967 +DH044,100.0,102.0,1.907,0.3385,5.089 +DH044,102.0,104.0,1.835,0.0909,3.7 +DH044,104.0,106.0,4.49,0.2489,7.036 +DH044,106.0,108.0,0.868,0.3658,1.663 +DH044,108.0,110.0,5.492,0.4509,8.433 +DH044,110.0,112.0,6.956,0.2493,14.638 +DH044,112.0,114.0,0.161,0.1026,0.379 +DH044,114.0,116.0,1.518,0.2445,2.596 +DH044,116.0,118.0,3.136,0.129,6.798 +DH044,118.0,120.0,19.514,0.1682,35.773 +DH044,120.0,122.0,0.978,0.2389,1.607 +DH044,122.0,124.0,0.279,0.0696,0.709 +DH044,124.0,126.0,10.362,0.8024,25.804 +DH044,126.0,128.0,0.678,0.1572,1.895 +DH044,128.0,130.0,0.355,0.2737,0.554 +DH044,130.0,132.0,23.337,0.2088,69.023 +DH044,132.0,134.0,1.923,0.178,4.798 +DH044,134.0,136.0,3.362,0.0845,6.346 +DH044,136.0,138.0,4.864,0.6947,9.377 +DH044,138.0,140.0,7.781,0.1564,22.369 +DH044,140.0,142.0,11.217,0.0745,17.909 +DH044,142.0,144.0,8.62,0.1885,24.655 +DH044,144.0,146.0,1.619,0.2451,3.304 +DH044,146.0,148.0,6.747,0.2252,10.626 +DH044,148.0,150.0,3.354,0.4437,6.035 +DH044,150.0,152.0,17.926,0.2661,40.074 +DH044,152.0,154.0,16.304,0.224,29.887 +DH044,154.0,156.0,1.076,0.3171,1.759 +DH044,156.0,158.0,1.114,0.1434,2.991 +DH044,158.0,160.0,1.199,0.4414,3.54 +DH044,160.0,162.0,9.962,0.2772,25.131 +DH044,162.0,164.0,4.631,0.2071,12.423 +DH044,164.0,166.0,19.418,0.4686,53.377 +DH044,166.0,168.0,7.702,0.1544,18.753 +DH044,168.0,170.0,0.509,0.3713,1.351 +DH044,170.0,172.0,1.345,0.0303,3.783 +DH044,172.0,174.0,0.608,0.125,1.529 +DH044,174.0,176.0,0.647,0.1057,1.495 +DH044,176.0,178.0,6.34,0.1617,12.865 +DH044,178.0,180.0,0.48,0.0697,1.035 +DH044,180.0,182.0,0.306,0.2921,0.492 +DH044,182.0,184.0,0.41,0.3024,1.057 +DH044,184.0,186.0,7.854,0.4494,20.041 +DH044,186.0,188.0,3.1,0.332,6.23 +DH044,188.0,190.0,2.712,0.082,5.346 +DH044,190.0,192.0,3.477,0.7453,8.752 +DH044,192.0,194.0,4.919,0.2378,13.859 +DH044,194.0,196.0,0.392,0.1144,0.993 +DH044,196.0,198.0,4.436,0.4752,7.113 +DH044,198.0,200.0,9.2,0.2364,15.426 +DH044,200.0,202.0,2.096,0.1249,4.028 +DH044,202.0,204.0,1.446,0.2062,3.06 +DH044,204.0,206.0,0.915,0.4825,2.216 +DH044,206.0,208.0,3.215,0.2075,7.096 +DH044,208.0,210.0,0.428,0.0656,0.669 +DH044,210.0,212.0,1.392,0.2075,2.267 +DH044,212.0,214.0,6.655,0.2835,18.716 +DH044,214.0,216.0,1.097,0.2705,2.861 +DH044,216.0,218.0,4.063,0.1009,11.019 +DH044,218.0,220.0,0.432,0.1969,0.932 +DH044,220.0,222.0,2.921,0.1567,7.16 +DH044,222.0,224.0,2.52,0.2352,6.696 +DH044,224.0,226.0,0.639,0.243,1.408 +DH044,226.0,228.0,4.44,0.0923,12.044 +DH044,228.0,230.0,0.118,0.8518,0.31 +DH044,230.0,232.0,0.527,0.2834,0.823 +DH044,232.0,234.0,1.584,0.4557,3.378 +DH044,234.0,236.0,1.378,0.1752,3.69 +DH044,236.0,238.0,0.218,0.2188,0.618 +DH044,238.0,240.0,8.116,0.0798,17.253 +DH044,240.0,242.0,9.433,0.2821,23.861 +DH044,242.0,244.0,3.835,0.3218,7.623 +DH044,244.0,246.0,2.484,0.0994,5.27 +DH044,246.0,248.0,1.128,0.2043,2.791 +DH044,248.0,250.0,0.831,0.1483,1.525 +DH044,250.0,252.0,0.059,0.0298,0.037 +DH044,252.0,254.0,0.045,0.0475,0.039 +DH044,254.0,256.0,0.081,0.0462,0.051 +DH044,256.0,258.0,0.184,0.0254,0.138 +DH044,258.0,260.0,0.076,0.0063,0.087 +DH044,260.0,262.0,0.094,0.0206,0.129 +DH044,262.0,264.0,0.097,0.0251,0.127 +DH044,264.0,266.0,0.114,0.0175,0.119 +DH044,266.0,268.0,0.147,0.0154,0.133 +DH044,268.0,270.0,0.074,0.025,0.074 +DH044,270.0,272.0,0.09,0.0398,0.082 +DH044,272.0,274.0,0.248,0.0199,0.222 +DH044,274.0,276.0,0.088,0.0157,0.099 +DH044,276.0,278.0,0.139,0.0548,0.152 +DH044,278.0,280.0,0.114,0.0167,0.136 +DH044,280.0,282.0,0.08,0.0209,0.089 +DH044,282.0,284.0,0.06,0.022,0.056 +DH044,284.0,286.0,0.144,0.0083,0.12 +DH044,286.0,288.0,0.117,0.0126,0.069 +DH044,288.0,290.0,0.031,0.0174,0.039 +DH044,290.0,292.0,0.11,0.0109,0.136 +DH044,292.0,294.0,0.091,0.0238,0.133 +DH044,294.0,296.0,0.066,0.027,0.066 +DH044,296.0,298.0,0.181,0.0178,0.176 +DH044,298.0,300.0,0.079,0.0191,0.052 +DH044,300.0,302.0,0.033,0.0157,0.022 +DH044,302.0,304.0,0.077,0.0157,0.094 +DH044,304.0,306.0,0.043,0.0339,0.03 +DH044,306.0,308.0,0.072,0.018,0.09 +DH044,308.0,310.0,0.092,0.0136,0.086 +DH044,310.0,312.0,0.066,0.0156,0.084 +DH044,312.0,314.0,0.021,0.0192,0.027 +DH044,314.0,316.0,0.027,0.0154,0.021 +DH044,316.0,318.0,0.176,0.014,0.097 +DH044,318.0,320.0,0.188,0.0134,0.237 +DH044,320.0,322.0,0.232,0.0205,0.294 +DH044,322.0,324.0,0.064,0.0258,0.072 +DH044,324.0,326.0,0.027,0.0153,0.04 +DH044,326.0,328.0,0.088,0.0116,0.082 +DH044,328.0,330.0,0.084,0.0098,0.047 +DH044,330.0,332.0,0.119,0.0325,0.173 +DH044,332.0,334.0,0.042,0.0486,0.037 +DH044,334.0,336.0,0.087,0.0127,0.111 +DH044,336.0,338.0,0.23,0.0208,0.303 +DH044,338.0,340.0,0.084,0.011,0.047 +DH044,340.0,342.0,0.042,0.0204,0.055 +DH044,342.0,344.0,0.09,0.0157,0.12 +DH044,344.0,346.0,0.102,0.0099,0.099 +DH044,346.0,348.0,0.141,0.0159,0.161 +DH044,348.0,350.0,0.074,0.0263,0.038 +DH044,350.0,352.0,0.053,0.0129,0.06 +DH044,352.0,354.0,0.098,0.018,0.09 +DH044,354.0,356.0,0.084,0.018,0.09 +DH044,356.0,358.0,0.159,0.0144,0.161 +DH044,358.0,360.0,0.024,0.0164,0.014 +DH044,360.0,362.0,0.046,0.0615,0.058 +DH044,362.0,364.0,0.171,0.0281,0.162 +DH044,364.0,366.0,0.073,0.0409,0.078 +DH044,366.0,368.0,0.084,0.0209,0.043 +DH044,368.0,370.0,0.085,0.0179,0.078 +DH044,370.0,372.0,0.233,0.01,0.163 +DH044,372.0,374.0,0.066,0.0346,0.052 +DH044,374.0,376.0,0.105,0.0169,0.077 +DH044,376.0,378.0,0.233,0.0114,0.207 +DH044,378.0,380.0,0.044,0.0094,0.039 +DH044,380.0,382.0,0.057,0.0102,0.058 +DH044,382.0,384.0,0.034,0.0195,0.026 +DH044,384.0,386.0,0.019,0.0141,0.024 +DH044,386.0,388.0,0.043,0.0237,0.045 +DH044,388.0,390.0,0.045,0.0182,0.025 +DH044,390.0,392.0,0.049,0.0165,0.063 +DH044,392.0,394.0,0.049,0.023,0.064 +DH044,394.0,396.0,0.075,0.0229,0.102 +DH044,396.0,398.0,0.06,0.0227,0.053 +DH044,398.0,399.0,0.06,0.0105,0.055 +DH045,0.0,2.0,0.068,0.0241,0.053 +DH045,2.0,4.0,0.063,0.0313,0.058 +DH045,4.0,6.0,0.168,0.0355,0.197 +DH045,6.0,8.0,0.074,0.0655,0.047 +DH045,8.0,10.0,0.095,0.0181,0.091 +DH045,10.0,12.0,0.179,0.0138,0.221 +DH045,12.0,14.0,0.165,0.0248,0.191 +DH045,14.0,16.0,0.067,0.0048,0.067 +DH045,16.0,18.0,0.069,0.0173,0.048 +DH045,18.0,20.0,0.071,0.0136,0.064 +DH045,20.0,22.0,0.17,0.0178,0.211 +DH045,22.0,24.0,0.058,0.0204,0.045 +DH045,24.0,26.0,0.285,0.02,0.319 +DH045,26.0,28.0,0.064,0.0393,0.057 +DH045,28.0,30.0,0.136,0.01,0.156 +DH045,30.0,32.0,0.043,0.0208,0.042 +DH045,32.0,34.0,0.078,0.0317,0.052 +DH045,34.0,36.0,0.039,0.0071,0.04 +DH045,36.0,38.0,0.212,0.0113,0.158 +DH045,38.0,40.0,0.082,0.0069,0.111 +DH045,40.0,42.0,0.13,0.0195,0.191 +DH045,42.0,44.0,0.04,0.0194,0.02 +DH045,44.0,46.0,0.075,0.0151,0.077 +DH045,46.0,48.0,0.091,0.0213,0.092 +DH045,48.0,50.0,0.169,0.01,0.148 +DH045,50.0,52.0,0.151,0.0114,0.178 +DH045,52.0,54.0,0.057,0.0133,0.041 +DH045,54.0,56.0,0.058,0.0253,0.08 +DH045,56.0,58.0,0.111,0.0143,0.139 +DH045,58.0,60.0,0.06,0.0288,0.06 +DH045,60.0,62.0,0.023,0.0215,0.031 +DH045,62.0,64.0,0.059,0.0334,0.069 +DH045,64.0,66.0,0.123,0.0438,0.092 +DH045,66.0,68.0,0.072,0.0174,0.063 +DH045,68.0,70.0,0.105,0.0535,0.07 +DH045,70.0,72.0,0.055,0.0137,0.028 +DH045,72.0,74.0,0.024,0.0144,0.02 +DH045,74.0,76.0,0.095,0.0484,0.084 +DH045,76.0,78.0,0.026,0.0116,0.026 +DH045,78.0,80.0,0.087,0.0413,0.084 +DH045,80.0,82.0,6.795,0.1876,20.17 +DH045,82.0,84.0,0.759,0.4841,1.598 +DH045,84.0,86.0,0.392,0.3586,0.793 +DH045,86.0,88.0,1.366,0.779,2.766 +DH045,88.0,90.0,0.529,0.1984,1.027 +DH045,90.0,92.0,0.999,0.2483,2.505 +DH045,92.0,94.0,1.447,0.2788,4.168 +DH045,94.0,96.0,1.96,0.1331,4.329 +DH045,96.0,98.0,5.565,0.8748,10.962 +DH045,98.0,100.0,3.314,0.1336,9.756 +DH045,100.0,102.0,7.912,0.036,18.456 +DH045,102.0,104.0,5.371,0.0898,8.291 +DH045,104.0,106.0,3.499,0.0697,5.513 +DH045,106.0,108.0,3.667,0.3813,6.331 +DH045,108.0,110.0,2.428,0.2811,4.514 +DH045,110.0,112.0,2.145,0.118,5.427 +DH045,112.0,114.0,5.053,0.3846,13.241 +DH045,114.0,116.0,1.498,0.1438,3.501 +DH045,116.0,118.0,0.325,0.0659,0.703 +DH045,118.0,120.0,0.417,0.0944,0.867 +DH045,120.0,122.0,1.357,0.4532,3.575 +DH045,122.0,124.0,0.854,0.4854,2.496 +DH045,124.0,126.0,0.409,0.273,0.842 +DH045,126.0,128.0,0.914,0.9956,2.242 +DH045,128.0,130.0,1.714,0.2388,5.01 +DH045,130.0,132.0,0.959,0.1459,2.61 +DH045,132.0,134.0,0.361,0.4929,0.605 +DH045,134.0,136.0,1.657,0.0621,3.551 +DH045,136.0,138.0,10.561,0.5146,21.574 +DH045,138.0,140.0,0.391,0.0962,0.893 +DH045,140.0,142.0,5.251,0.1177,14.28 +DH045,142.0,144.0,0.573,0.8408,0.949 +DH045,144.0,146.0,2.311,0.2386,5.025 +DH045,146.0,148.0,0.71,0.5681,1.181 +DH045,148.0,150.0,9.015,0.0566,15.399 +DH045,150.0,152.0,15.651,0.3898,42.316 +DH045,152.0,154.0,0.632,0.124,1.502 +DH045,154.0,156.0,3.923,0.4548,8.135 +DH045,156.0,158.0,1.587,0.412,2.706 +DH045,158.0,160.0,1.815,0.072,2.903 +DH045,160.0,162.0,3.774,0.1374,6.214 +DH045,162.0,164.0,2.982,0.2755,5.463 +DH045,164.0,166.0,4.965,0.2822,11.307 +DH045,166.0,168.0,24.056,0.1241,61.728 +DH045,168.0,170.0,2.012,0.321,3.175 +DH045,170.0,172.0,1.531,0.3611,3.513 +DH045,172.0,174.0,1.031,0.6105,2.076 +DH045,174.0,176.0,1.321,0.5395,2.071 +DH045,176.0,178.0,2.15,0.1583,3.88 +DH045,178.0,180.0,1.252,0.4093,2.667 +DH045,180.0,182.0,1.419,0.9644,3.398 +DH045,182.0,184.0,0.41,0.4426,1.122 +DH045,184.0,186.0,13.332,0.2421,31.104 +DH045,186.0,188.0,0.713,0.0604,1.282 +DH045,188.0,190.0,0.453,0.3334,1.034 +DH045,190.0,192.0,1.258,0.3354,2.19 +DH045,192.0,194.0,8.802,0.1344,19.872 +DH045,194.0,196.0,1.038,0.2542,2.251 +DH046,0.0,2.0,0.064,0.0149,0.073 +DH046,2.0,4.0,0.082,0.0236,0.093 +DH046,4.0,6.0,0.058,0.0202,0.035 +DH046,6.0,8.0,0.115,0.0159,0.136 +DH046,8.0,10.0,0.094,0.0408,0.132 +DH046,10.0,12.0,0.086,0.013,0.059 +DH046,12.0,14.0,0.07,0.0085,0.072 +DH046,14.0,16.0,0.092,0.0122,0.047 +DH046,16.0,18.0,0.079,0.0178,0.106 +DH046,18.0,20.0,0.037,0.0506,0.052 +DH046,20.0,22.0,0.116,0.0195,0.072 +DH046,22.0,24.0,0.044,0.0141,0.057 +DH046,24.0,26.0,0.036,0.0119,0.051 +DH046,26.0,28.0,0.109,0.0229,0.144 +DH046,28.0,30.0,0.031,0.024,0.031 +DH046,30.0,32.0,0.067,0.0103,0.077 +DH046,32.0,34.0,0.104,0.0163,0.101 +DH046,34.0,36.0,0.143,0.0201,0.136 +DH046,36.0,38.0,0.054,0.0139,0.068 +DH046,38.0,40.0,0.092,0.0204,0.135 +DH046,40.0,42.0,0.133,0.0185,0.088 +DH046,42.0,44.0,0.128,0.0125,0.188 +DH046,44.0,46.0,0.075,0.039,0.071 +DH046,46.0,48.0,0.195,0.0117,0.145 +DH046,48.0,50.0,0.046,0.0311,0.065 +DH046,50.0,52.0,0.126,0.0179,0.165 +DH046,52.0,54.0,0.015,0.0642,0.019 +DH046,54.0,56.0,0.014,0.0213,0.015 +DH046,56.0,58.0,0.053,0.0129,0.034 +DH046,58.0,60.0,0.169,0.0193,0.183 +DH046,60.0,62.0,0.162,0.0163,0.113 +DH046,62.0,64.0,0.072,0.0238,0.081 +DH046,64.0,66.0,0.12,0.0282,0.103 +DH046,66.0,68.0,0.07,0.0238,0.103 +DH046,68.0,70.0,0.034,0.0234,0.033 +DH046,70.0,72.0,0.041,0.0302,0.035 +DH046,72.0,74.0,0.034,0.0262,0.019 +DH046,74.0,76.0,0.079,0.0156,0.097 +DH046,76.0,78.0,0.077,0.0145,0.095 +DH046,78.0,80.0,0.067,0.0107,0.06 +DH046,80.0,82.0,2.563,0.3084,7.075 +DH046,82.0,84.0,2.972,0.1527,6.079 +DH046,84.0,86.0,3.169,0.2031,8.366 +DH046,86.0,88.0,3.05,0.3381,6.919 +DH046,88.0,90.0,1.814,0.1175,2.941 +DH046,90.0,92.0,6.159,0.159,12.543 +DH046,92.0,94.0,8.949,0.105,15.307 +DH046,94.0,96.0,4.012,0.2237,6.766 +DH046,96.0,98.0,8.574,0.3049,25.197 +DH046,98.0,100.0,5.719,0.0408,14.814 +DH046,100.0,102.0,0.453,0.0942,0.899 +DH046,102.0,104.0,3.832,0.2379,7.409 +DH046,104.0,106.0,10.99,0.2162,27.904 +DH046,106.0,108.0,9.765,0.2659,19.787 +DH046,108.0,110.0,4.424,1.5118,7.572 +DH046,110.0,112.0,2.269,0.3969,5.024 +DH046,112.0,114.0,5.831,0.0211,12.098 +DH046,114.0,116.0,1.967,0.1996,4.234 +DH046,116.0,118.0,6.602,0.149,13.942 +DH046,118.0,120.0,2.128,0.333,5.943 +DH046,120.0,122.0,2.813,0.4374,5.314 +DH046,122.0,124.0,1.213,0.1992,2.527 +DH046,124.0,126.0,4.401,0.243,8.584 +DH046,126.0,128.0,1.705,0.0658,4.314 +DH046,128.0,130.0,2.229,0.9482,4.477 +DH046,130.0,132.0,0.643,0.2622,1.458 +DH046,132.0,134.0,1.688,0.1953,2.607 +DH046,134.0,136.0,21.057,0.1599,58.037 +DH046,136.0,138.0,0.107,0.4312,0.214 +DH046,138.0,140.0,0.63,0.1482,1.214 +DH046,140.0,142.0,2.278,0.324,5.386 +DH046,142.0,144.0,1.028,0.1773,2.08 +DH046,144.0,146.0,0.996,1.9218,1.977 +DH046,146.0,148.0,6.041,0.0971,11.045 +DH046,148.0,150.0,4.594,0.0409,10.053 +DH046,150.0,152.0,3.418,0.2006,7.852 +DH046,152.0,154.0,8.123,0.11,18.063 +DH046,154.0,156.0,1.024,0.3356,2.797 +DH046,156.0,158.0,1.225,0.0562,2.805 +DH046,158.0,160.0,5.3,0.4036,14.542 +DH046,160.0,162.0,4.221,0.1924,12.608 +DH046,162.0,164.0,1.904,0.0207,5.59 +DH046,164.0,166.0,1.283,0.1792,2.0 +DH046,166.0,168.0,0.403,0.2369,0.784 +DH046,168.0,170.0,3.445,0.1382,6.064 +DH046,170.0,172.0,0.672,0.1353,1.401 +DH046,172.0,174.0,3.173,0.1721,8.681 +DH046,174.0,176.0,3.172,0.2371,7.791 +DH046,176.0,178.0,5.363,0.2705,13.937 +DH046,178.0,180.0,8.227,0.2455,23.701 +DH046,180.0,182.0,1.367,0.0517,2.795 +DH046,182.0,184.0,0.717,0.3375,2.112 +DH046,184.0,186.0,3.197,0.0962,5.335 +DH046,186.0,188.0,11.392,0.0782,31.966 +DH046,188.0,190.0,21.142,1.2309,57.399 +DH046,190.0,192.0,1.477,0.2967,2.976 +DH046,192.0,194.0,1.019,0.0925,2.32 +DH046,194.0,196.0,0.881,0.6021,2.578 +DH046,196.0,198.0,2.496,0.4899,6.743 +DH046,198.0,200.0,2.858,0.3034,5.104 +DH046,200.0,202.0,7.596,0.6131,20.884 +DH046,202.0,204.0,18.459,0.1274,39.205 +DH047,0.0,2.0,0.086,0.0178,0.058 +DH047,2.0,4.0,0.045,0.0238,0.03 +DH047,4.0,6.0,0.037,0.0109,0.032 +DH047,6.0,8.0,0.06,0.0233,0.051 +DH047,8.0,10.0,0.147,0.0173,0.131 +DH047,10.0,12.0,0.083,0.0368,0.122 +DH047,12.0,14.0,0.222,0.0296,0.167 +DH047,14.0,16.0,0.167,0.0156,0.213 +DH047,16.0,18.0,0.059,0.0297,0.087 +DH047,18.0,20.0,0.08,0.0257,0.097 +DH047,20.0,22.0,0.05,0.0267,0.068 +DH047,22.0,24.0,0.023,0.0126,0.024 +DH047,24.0,26.0,0.081,0.014,0.082 +DH047,26.0,28.0,0.083,0.025,0.09 +DH047,28.0,30.0,0.077,0.0195,0.116 +DH047,30.0,32.0,0.036,0.0153,0.049 +DH047,32.0,34.0,0.083,0.0139,0.097 +DH047,34.0,36.0,0.065,0.0213,0.056 +DH047,36.0,38.0,0.022,0.025,0.027 +DH047,38.0,40.0,0.113,0.0331,0.062 +DH047,40.0,42.0,0.145,0.0098,0.074 +DH047,42.0,44.0,0.071,0.0187,0.104 +DH047,44.0,46.0,0.107,0.0405,0.127 +DH047,46.0,48.0,0.092,0.0281,0.047 +DH047,48.0,50.0,0.186,0.0148,0.21 +DH047,50.0,52.0,0.045,0.0195,0.04 +DH047,52.0,54.0,0.12,0.0133,0.155 +DH047,54.0,56.0,0.108,0.0368,0.144 +DH047,56.0,58.0,0.249,0.0242,0.35 +DH047,58.0,60.0,0.123,0.0385,0.122 +DH047,60.0,62.0,0.043,0.0273,0.044 +DH047,62.0,64.0,0.073,0.0075,0.062 +DH047,64.0,66.0,0.066,0.0088,0.076 +DH047,66.0,68.0,0.126,0.0137,0.064 +DH047,68.0,70.0,0.043,0.0213,0.051 +DH047,70.0,72.0,0.035,0.0126,0.047 +DH047,72.0,74.0,0.111,0.0199,0.14 +DH047,74.0,76.0,0.076,0.0215,0.079 +DH047,76.0,78.0,0.061,0.0133,0.054 +DH047,78.0,80.0,0.073,0.0513,0.102 +DH047,80.0,82.0,3.151,0.3239,6.419 +DH047,82.0,84.0,0.841,0.6516,1.751 +DH047,84.0,86.0,44.773,0.2982,123.991 +DH047,86.0,88.0,1.757,0.6499,3.669 +DH047,88.0,90.0,2.072,0.3966,3.25 +DH047,90.0,92.0,1.728,0.1048,4.482 +DH047,92.0,94.0,0.513,0.2555,1.29 +DH047,94.0,96.0,2.189,0.0818,4.097 +DH047,96.0,98.0,4.166,0.1196,6.879 +DH047,98.0,100.0,3.541,0.111,10.202 +DH047,100.0,102.0,1.747,0.1827,2.964 +DH047,102.0,104.0,0.568,0.1153,1.295 +DH047,104.0,106.0,0.564,0.395,1.076 +DH047,106.0,108.0,0.391,0.1427,0.667 +DH047,108.0,110.0,1.303,0.3072,2.779 +DH047,110.0,112.0,39.727,0.5602,101.203 +DH047,112.0,114.0,1.444,0.1803,3.88 +DH047,114.0,116.0,0.726,0.1459,1.585 +DH047,116.0,118.0,1.08,0.142,3.083 +DH047,118.0,120.0,0.536,0.4895,1.033 +DH047,120.0,122.0,0.391,0.2278,1.078 +DH047,122.0,124.0,11.142,0.8116,29.313 +DH047,124.0,126.0,0.8,0.1311,2.31 +DH047,126.0,128.0,1.958,0.6679,3.25 +DH047,128.0,130.0,7.136,0.2558,19.671 +DH047,130.0,132.0,0.883,0.2342,2.613 +DH047,132.0,134.0,3.205,0.4249,7.353 +DH047,134.0,136.0,4.081,0.0501,9.671 +DH047,136.0,138.0,0.339,0.1975,0.663 +DH047,138.0,140.0,3.422,0.0803,5.662 +DH047,140.0,142.0,3.141,0.3358,6.215 +DH047,142.0,144.0,3.565,0.0664,7.303 +DH047,144.0,146.0,0.771,0.238,1.601 +DH047,146.0,148.0,8.96,0.2708,23.397 +DH047,148.0,150.0,3.426,1.2385,9.48 +DH047,150.0,152.0,2.073,0.1145,4.529 +DH047,152.0,154.0,5.033,0.1098,7.552 +DH047,154.0,156.0,12.493,0.2517,26.891 +DH047,156.0,158.0,30.369,0.9139,70.849 +DH047,158.0,160.0,10.287,0.1802,30.551 +DH047,160.0,162.0,1.339,0.0754,3.259 +DH047,162.0,164.0,0.412,0.2831,1.171 +DH047,164.0,166.0,4.134,0.2077,11.673 +DH047,166.0,168.0,2.628,0.3276,3.942 +DH047,168.0,170.0,2.05,0.0775,6.022 +DH047,170.0,172.0,4.233,0.2637,11.438 +DH047,172.0,174.0,0.667,0.444,1.14 +DH047,174.0,176.0,4.689,0.0756,9.381 +DH047,176.0,178.0,6.564,0.2091,11.244 +DH047,178.0,180.0,5.415,0.0766,16.016 +DH047,180.0,182.0,3.975,0.127,6.323 +DH047,182.0,184.0,7.276,0.2642,19.852 +DH047,184.0,186.0,2.298,0.1,6.446 +DH047,186.0,188.0,1.756,0.2193,3.884 +DH047,188.0,190.0,6.315,0.4683,18.805 +DH047,190.0,192.0,3.531,0.2456,8.849 +DH047,192.0,194.0,1.293,0.0434,2.853 +DH047,194.0,196.0,0.487,0.4594,1.096 +DH047,196.0,198.0,2.595,0.2157,5.201 +DH047,198.0,200.0,9.5,0.218,22.308 +DH047,200.0,202.0,6.744,0.1023,12.535 +DH047,202.0,204.0,4.047,0.5914,10.057 +DH047,204.0,206.0,3.616,0.16,9.854 +DH047,206.0,208.0,8.282,0.1808,17.983 +DH047,208.0,210.0,0.387,0.4679,1.129 +DH047,210.0,212.0,3.478,0.4156,6.74 +DH047,212.0,214.0,1.823,0.4962,3.512 +DH047,214.0,216.0,0.747,0.185,2.161 +DH047,216.0,218.0,15.377,0.2062,42.578 +DH047,218.0,220.0,7.98,0.0587,15.175 +DH047,220.0,222.0,2.111,0.6282,5.512 +DH047,222.0,224.0,0.718,0.2552,1.376 +DH047,224.0,226.0,1.565,0.3656,4.432 +DH047,226.0,228.0,2.809,0.4799,5.584 +DH047,228.0,230.0,3.147,0.2452,8.108 +DH047,230.0,232.0,14.924,0.3317,28.34 +DH047,232.0,234.0,2.465,0.2978,6.299 +DH047,234.0,236.0,6.519,0.8095,10.104 +DH047,236.0,238.0,18.266,0.5201,28.012 +DH047,238.0,240.0,0.301,0.2389,0.893 +DH047,240.0,242.0,0.878,0.2383,1.328 +DH047,242.0,244.0,6.893,0.1636,16.771 +DH047,244.0,246.0,3.14,0.1113,8.077 +DH047,246.0,248.0,0.912,0.0514,2.168 +DH047,248.0,250.0,6.77,1.0067,17.099 +DH047,250.0,252.0,0.123,0.022,0.128 +DH047,252.0,254.0,0.112,0.0139,0.124 +DH047,254.0,256.0,0.067,0.0349,0.04 +DH047,256.0,258.0,0.04,0.0246,0.041 +DH047,258.0,260.0,0.11,0.03,0.073 +DH047,260.0,262.0,0.056,0.0348,0.08 +DH047,262.0,264.0,0.083,0.0181,0.097 +DH047,264.0,266.0,0.068,0.0081,0.057 +DH047,266.0,268.0,0.124,0.0058,0.114 +DH047,268.0,270.0,0.235,0.0104,0.15 +DH047,270.0,272.0,0.074,0.042,0.078 +DH047,272.0,274.0,0.048,0.0217,0.042 +DH047,274.0,276.0,0.056,0.0182,0.061 +DH047,276.0,278.0,0.057,0.0442,0.073 +DH047,278.0,280.0,0.036,0.0141,0.048 +DH047,280.0,282.0,0.051,0.0213,0.043 +DH047,282.0,284.0,0.04,0.0138,0.031 +DH047,284.0,286.0,0.125,0.014,0.175 +DH047,286.0,288.0,0.069,0.0264,0.072 +DH047,288.0,290.0,0.066,0.0233,0.067 +DH047,290.0,292.0,0.108,0.0232,0.119 +DH047,292.0,294.0,0.067,0.0171,0.038 +DH047,294.0,296.0,0.044,0.0146,0.057 +DH047,296.0,298.0,0.128,0.0212,0.152 +DH047,298.0,300.0,0.061,0.0116,0.035 +DH047,300.0,302.0,0.038,0.0361,0.051 +DH047,302.0,304.0,0.026,0.0212,0.026 +DH047,304.0,306.0,0.093,0.0136,0.054 +DH047,306.0,308.0,0.105,0.0307,0.155 +DH047,308.0,310.0,0.036,0.0228,0.034 +DH047,310.0,312.0,0.155,0.0063,0.163 +DH047,312.0,314.0,0.057,0.0155,0.074 +DH047,314.0,316.0,0.104,0.0252,0.113 +DH047,316.0,318.0,0.074,0.0526,0.098 +DH047,318.0,320.0,0.068,0.0171,0.062 +DH047,320.0,322.0,0.102,0.0113,0.07 +DH047,322.0,324.0,0.022,0.015,0.013 +DH047,324.0,326.0,0.075,0.0175,0.085 +DH047,326.0,328.0,0.045,0.0185,0.054 +DH047,328.0,330.0,0.099,0.0299,0.148 +DH048,0.0,2.0,0.122,0.0128,0.124 +DH048,2.0,4.0,0.262,0.0214,0.148 +DH048,4.0,6.0,0.049,0.0175,0.052 +DH048,6.0,8.0,0.083,0.0141,0.095 +DH048,8.0,10.0,0.168,0.0256,0.11 +DH048,10.0,12.0,0.107,0.0101,0.056 +DH048,12.0,14.0,0.156,0.0161,0.131 +DH048,14.0,16.0,0.114,0.0277,0.1 +DH048,16.0,18.0,0.14,0.0088,0.088 +DH048,18.0,20.0,0.126,0.0212,0.109 +DH048,20.0,22.0,0.075,0.0139,0.092 +DH048,22.0,24.0,0.07,0.0237,0.09 +DH048,24.0,26.0,0.035,0.033,0.03 +DH048,26.0,28.0,0.076,0.0138,0.083 +DH048,28.0,30.0,0.087,0.0257,0.076 +DH048,30.0,32.0,0.104,0.0137,0.096 +DH048,32.0,34.0,0.264,0.0254,0.276 +DH048,34.0,36.0,0.032,0.0222,0.041 +DH048,36.0,38.0,0.055,0.0181,0.069 +DH048,38.0,40.0,0.056,0.0201,0.078 +DH048,40.0,42.0,0.125,0.0205,0.067 +DH048,42.0,44.0,0.148,0.0242,0.074 +DH048,44.0,46.0,0.023,0.0237,0.022 +DH048,46.0,48.0,0.078,0.022,0.076 +DH048,48.0,50.0,0.248,0.0116,0.37 +DH048,50.0,52.0,0.1,0.0207,0.135 +DH048,52.0,54.0,0.081,0.0247,0.099 +DH048,54.0,56.0,0.045,0.0133,0.035 +DH048,56.0,58.0,0.124,0.0156,0.157 +DH048,58.0,60.0,0.316,0.0114,0.293 +DH048,60.0,62.0,0.123,0.03,0.162 +DH048,62.0,64.0,0.243,0.0215,0.15 +DH048,64.0,66.0,0.087,0.0138,0.114 +DH048,66.0,68.0,0.146,0.0083,0.126 +DH048,68.0,70.0,0.144,0.0156,0.147 +DH048,70.0,72.0,0.189,0.0068,0.176 +DH048,72.0,74.0,0.158,0.0175,0.233 +DH048,74.0,76.0,0.087,0.0124,0.054 +DH048,76.0,78.0,0.126,0.0133,0.091 +DH048,78.0,80.0,0.088,0.0142,0.065 +DH048,80.0,82.0,2.426,0.4122,5.012 +DH048,82.0,84.0,0.619,0.3281,1.827 +DH048,84.0,86.0,31.679,0.7071,58.305 +DH048,86.0,88.0,6.232,0.274,13.446 +DH048,88.0,90.0,3.129,1.0356,5.211 +DH048,90.0,92.0,0.66,0.2256,1.404 +DH048,92.0,94.0,0.279,0.0575,0.745 +DH048,94.0,96.0,2.722,0.0512,5.901 +DH048,96.0,98.0,8.202,0.1874,20.154 +DH048,98.0,100.0,4.418,0.317,9.848 +DH048,100.0,102.0,0.751,0.1626,1.968 +DH048,102.0,104.0,12.941,0.3707,35.67 +DH048,104.0,106.0,1.721,0.5512,4.03 +DH048,106.0,108.0,6.184,0.6747,16.224 +DH048,108.0,110.0,2.763,0.607,4.287 +DH048,110.0,112.0,43.95,0.2705,129.528 +DH048,112.0,114.0,1.441,0.3327,3.051 +DH048,114.0,116.0,0.73,0.1036,1.389 +DH048,116.0,118.0,8.385,0.0516,20.687 +DH048,118.0,120.0,10.717,0.0833,27.207 +DH048,120.0,122.0,0.575,0.1072,1.411 +DH048,122.0,124.0,21.076,0.1337,42.532 +DH048,124.0,126.0,0.414,0.4703,1.15 +DH048,126.0,128.0,9.259,0.2359,15.791 +DH048,128.0,130.0,3.18,0.1176,5.996 +DH048,130.0,132.0,0.532,0.6565,1.543 +DH048,132.0,134.0,3.768,0.0975,10.251 +DH048,134.0,136.0,1.421,2.4232,3.734 +DH048,136.0,138.0,0.83,0.1564,2.279 +DH048,138.0,140.0,1.831,0.9811,4.896 +DH048,140.0,142.0,6.58,0.1077,17.499 +DH048,142.0,144.0,2.842,0.1249,5.009 +DH048,144.0,146.0,4.658,0.3445,7.941 +DH048,146.0,148.0,8.241,0.1816,22.278 +DH048,148.0,150.0,12.552,0.092,37.094 +DH048,150.0,152.0,0.786,0.3042,2.346 +DH048,152.0,154.0,1.007,0.953,1.9 +DH048,154.0,156.0,1.937,0.113,3.619 +DH048,156.0,158.0,1.858,0.0769,3.794 +DH048,158.0,160.0,3.569,0.4228,8.566 +DH048,160.0,162.0,4.652,0.4867,10.509 +DH048,162.0,164.0,5.368,0.2171,12.106 +DH048,164.0,166.0,2.569,0.1624,3.973 +DH048,166.0,168.0,4.064,0.4296,7.567 +DH048,168.0,170.0,24.534,0.5179,61.98 +DH048,170.0,172.0,3.833,0.6908,6.105 +DH048,172.0,174.0,24.955,0.1201,49.319 +DH048,174.0,176.0,2.243,0.2142,6.712 +DH048,176.0,178.0,6.613,0.0796,19.662 +DH048,178.0,180.0,8.95,0.934,13.749 +DH048,180.0,182.0,7.417,0.422,11.314 +DH048,182.0,184.0,11.056,0.1958,20.217 +DH048,184.0,186.0,0.494,0.0847,1.156 +DH048,186.0,188.0,4.312,0.1991,11.237 +DH048,188.0,190.0,21.688,0.3171,39.481 +DH048,190.0,192.0,1.947,0.1146,4.797 +DH048,192.0,194.0,0.724,0.0857,1.61 +DH048,194.0,196.0,2.72,0.0355,7.757 +DH048,196.0,198.0,5.121,0.1252,10.331 +DH048,198.0,200.0,2.052,0.115,5.44 +DH048,200.0,202.0,0.644,0.2052,1.19 +DH048,202.0,204.0,2.195,0.8254,5.005 +DH048,204.0,206.0,4.077,0.1354,11.55 +DH048,206.0,208.0,1.6,0.2285,4.594 +DH048,208.0,210.0,1.221,0.1623,2.831 +DH048,210.0,212.0,1.213,0.2563,2.797 +DH048,212.0,214.0,13.431,1.9028,33.669 +DH048,214.0,216.0,3.167,0.5119,4.827 +DH048,216.0,218.0,0.675,0.8963,1.09 +DH048,218.0,220.0,3.262,0.7121,8.242 +DH048,220.0,222.0,2.101,0.1022,3.728 +DH048,222.0,224.0,9.448,0.3851,27.382 +DH048,224.0,226.0,18.539,0.1968,33.54 +DH048,226.0,228.0,2.898,1.0475,5.238 +DH048,228.0,230.0,2.352,0.1934,6.634 +DH048,230.0,232.0,0.932,0.0748,1.993 +DH048,232.0,234.0,1.173,0.1453,2.211 +DH048,234.0,236.0,2.369,0.2245,7.044 +DH048,236.0,238.0,4.928,1.2047,10.416 +DH048,238.0,240.0,5.7,0.1642,13.223 +DH048,240.0,242.0,29.214,0.1207,58.814 +DH048,242.0,244.0,0.952,0.0448,2.632 +DH048,244.0,246.0,0.794,0.2295,2.067 +DH048,246.0,248.0,9.348,0.0498,24.946 +DH048,248.0,250.0,1.508,0.4318,2.402 +DH048,250.0,252.0,0.167,0.0153,0.11 +DH048,252.0,254.0,0.105,0.0306,0.074 +DH048,254.0,256.0,0.1,0.0206,0.088 +DH048,256.0,258.0,0.105,0.0507,0.075 +DH048,258.0,260.0,0.066,0.0147,0.076 +DH048,260.0,262.0,0.023,0.0171,0.034 +DH048,262.0,264.0,0.06,0.0201,0.082 +DH048,264.0,266.0,0.1,0.006,0.145 +DH048,266.0,268.0,0.071,0.0123,0.045 +DH048,268.0,270.0,0.069,0.0328,0.058 +DH048,270.0,272.0,0.072,0.0204,0.085 +DH048,272.0,274.0,0.09,0.0055,0.046 +DH048,274.0,276.0,0.075,0.0282,0.08 +DH048,276.0,278.0,0.095,0.0214,0.138 +DH048,278.0,280.0,0.164,0.021,0.118 +DH048,280.0,282.0,0.056,0.0101,0.077 +DH048,282.0,284.0,0.066,0.0053,0.069 +DH048,284.0,286.0,0.101,0.0178,0.107 +DH048,286.0,288.0,0.084,0.0195,0.046 +DH048,288.0,290.0,0.056,0.0284,0.075 +DH048,290.0,292.0,0.061,0.0428,0.049 +DH048,292.0,294.0,0.055,0.0098,0.067 +DH048,294.0,296.0,0.089,0.0261,0.09 +DH048,296.0,298.0,0.068,0.0098,0.064 +DH048,298.0,300.0,0.032,0.0265,0.038 +DH048,300.0,302.0,0.08,0.0228,0.044 +DH048,302.0,304.0,0.087,0.0368,0.083 +DH048,304.0,306.0,0.067,0.0145,0.087 +DH048,306.0,308.0,0.035,0.0378,0.036 +DH048,308.0,310.0,0.235,0.0179,0.221 +DH048,310.0,312.0,0.122,0.0307,0.099 +DH048,312.0,314.0,0.025,0.0073,0.013 +DH048,314.0,316.0,0.207,0.0096,0.236 +DH048,316.0,318.0,0.067,0.0478,0.058 +DH048,318.0,320.0,0.106,0.0287,0.099 +DH048,320.0,322.0,0.038,0.026,0.028 +DH048,322.0,324.0,0.074,0.0324,0.074 +DH048,324.0,326.0,0.159,0.0351,0.189 +DH048,326.0,328.0,0.022,0.0327,0.016 +DH048,328.0,330.0,0.096,0.0223,0.066 +DH048,330.0,332.0,0.139,0.0157,0.113 +DH048,332.0,334.0,0.067,0.0207,0.043 +DH048,334.0,336.0,0.049,0.0126,0.035 +DH048,336.0,338.0,0.048,0.022,0.051 +DH048,338.0,340.0,0.079,0.0256,0.055 +DH048,340.0,342.0,0.049,0.024,0.028 +DH048,342.0,344.0,0.233,0.0227,0.138 +DH048,344.0,346.0,0.101,0.0115,0.141 +DH048,346.0,348.0,0.072,0.0121,0.089 +DH048,348.0,350.0,0.354,0.0192,0.407 +DH048,350.0,352.0,0.057,0.0232,0.032 +DH048,352.0,354.0,0.043,0.018,0.032 +DH048,354.0,356.0,0.064,0.0117,0.042 +DH048,356.0,358.0,0.062,0.0135,0.04 +DH048,358.0,360.0,0.312,0.0356,0.339 +DH048,360.0,362.0,0.058,0.0423,0.082 +DH048,362.0,364.0,0.148,0.023,0.192 +DH048,364.0,366.0,0.126,0.0233,0.171 +DH048,366.0,368.0,0.076,0.0283,0.042 +DH048,368.0,370.0,0.109,0.0126,0.071 +DH048,370.0,372.0,0.077,0.0165,0.051 +DH048,372.0,374.0,0.142,0.0218,0.129 +DH048,374.0,376.0,0.281,0.0232,0.414 +DH048,376.0,378.0,0.097,0.0154,0.103 +DH048,378.0,380.0,0.095,0.0048,0.108 +DH048,380.0,382.0,0.099,0.0164,0.051 +DH048,382.0,384.0,0.039,0.0366,0.025 +DH048,384.0,386.0,0.046,0.024,0.052 +DH048,386.0,388.0,0.066,0.0145,0.041 +DH048,388.0,390.0,0.184,0.0232,0.116 +DH048,390.0,392.0,0.137,0.0186,0.125 +DH048,392.0,394.0,0.09,0.0246,0.095 +DH048,394.0,396.0,0.041,0.0288,0.03 +DH048,396.0,398.0,0.043,0.02,0.023 +DH048,398.0,400.0,0.139,0.0207,0.085 +DH048,400.0,402.0,0.069,0.0395,0.065 +DH048,402.0,404.0,0.113,0.0187,0.057 +DH048,404.0,406.0,0.083,0.0323,0.122 +DH048,406.0,408.0,0.075,0.0159,0.09 +DH048,408.0,410.0,0.137,0.0312,0.11 +DH048,410.0,412.0,0.152,0.0083,0.21 +DH049,0.0,2.0,0.076,0.0191,0.097 +DH049,2.0,4.0,0.078,0.0151,0.079 +DH049,4.0,6.0,0.186,0.0137,0.205 +DH049,6.0,8.0,0.056,0.0207,0.081 +DH049,8.0,10.0,0.069,0.0366,0.054 +DH049,10.0,12.0,0.073,0.0364,0.067 +DH049,12.0,14.0,0.058,0.0243,0.058 +DH049,14.0,16.0,0.1,0.0172,0.064 +DH049,16.0,18.0,0.162,0.0207,0.16 +DH049,18.0,20.0,0.047,0.039,0.027 +DH049,20.0,22.0,0.097,0.036,0.064 +DH049,22.0,24.0,0.052,0.011,0.051 +DH049,24.0,26.0,0.044,0.0139,0.057 +DH049,26.0,28.0,0.072,0.0244,0.096 +DH049,28.0,30.0,0.072,0.0257,0.089 +DH049,30.0,32.0,0.058,0.011,0.067 +DH049,32.0,34.0,0.037,0.0348,0.044 +DH049,34.0,36.0,0.054,0.0108,0.029 +DH049,36.0,38.0,0.032,0.0235,0.018 +DH049,38.0,40.0,0.104,0.024,0.125 +DH049,40.0,42.0,0.095,0.0321,0.093 +DH049,42.0,44.0,0.096,0.0215,0.1 +DH049,44.0,46.0,0.045,0.0348,0.059 +DH049,46.0,48.0,0.124,0.0136,0.106 +DH049,48.0,50.0,0.072,0.0123,0.061 +DH049,50.0,52.0,0.211,0.0105,0.224 +DH049,52.0,54.0,0.467,0.0293,0.521 +DH049,54.0,56.0,0.043,0.0079,0.038 +DH049,56.0,58.0,0.127,0.0391,0.094 +DH049,58.0,60.0,0.037,0.0173,0.027 +DH049,60.0,62.0,0.14,0.0221,0.185 +DH049,62.0,64.0,0.023,0.0187,0.032 +DH049,64.0,66.0,0.07,0.0151,0.093 +DH049,66.0,68.0,0.046,0.0367,0.055 +DH049,68.0,70.0,0.07,0.018,0.092 +DH049,70.0,72.0,0.049,0.0299,0.057 +DH049,72.0,74.0,0.074,0.0417,0.046 +DH049,74.0,76.0,0.127,0.0303,0.18 +DH049,76.0,78.0,0.076,0.053,0.057 +DH049,78.0,80.0,0.093,0.0155,0.129 +DH049,80.0,82.0,7.078,0.179,15.909 +DH049,82.0,84.0,4.122,0.0942,7.598 +DH049,84.0,86.0,2.222,0.4745,4.368 +DH049,86.0,88.0,1.171,0.17,2.621 +DH049,88.0,90.0,8.446,0.0608,19.85 +DH049,90.0,92.0,3.703,0.1903,7.157 +DH049,92.0,94.0,3.259,0.162,5.106 +DH049,94.0,96.0,5.352,0.1048,9.215 +DH049,96.0,98.0,0.095,0.0477,0.16 +DH049,98.0,100.0,1.348,0.1127,2.537 +DH049,100.0,102.0,1.384,0.1012,3.323 +DH049,102.0,104.0,0.21,0.4029,0.329 +DH049,104.0,106.0,7.124,0.1578,12.833 +DH049,106.0,108.0,1.915,0.2312,2.899 +DH049,108.0,110.0,1.304,0.0834,2.41 +DH049,110.0,112.0,15.063,0.8415,29.549 +DH049,112.0,114.0,0.923,0.1432,2.28 +DH049,114.0,116.0,2.09,0.1004,5.402 +DH049,116.0,118.0,2.363,0.0132,3.752 +DH049,118.0,120.0,1.958,0.1048,4.399 +DH049,120.0,122.0,7.824,0.5257,22.308 +DH049,122.0,124.0,0.57,0.1163,1.421 +DH049,124.0,126.0,0.309,0.6803,0.649 +DH049,126.0,128.0,4.056,0.0537,9.504 +DH049,128.0,130.0,0.226,0.5051,0.43 +DH049,130.0,132.0,4.417,0.2347,9.447 +DH049,132.0,134.0,1.484,0.1896,3.911 +DH049,134.0,136.0,3.621,0.3153,10.759 +DH049,136.0,138.0,16.742,0.0538,41.205 +DH049,138.0,140.0,1.367,0.6213,2.873 +DH049,140.0,142.0,3.885,0.0344,9.37 +DH049,142.0,144.0,27.406,0.2323,64.676 +DH049,144.0,146.0,2.979,0.0961,4.588 +DH049,146.0,148.0,0.389,0.1187,0.89 +DH049,148.0,150.0,8.541,0.3234,13.822 +DH049,150.0,152.0,2.158,0.431,6.038 +DH049,152.0,154.0,0.924,0.3092,2.616 +DH049,154.0,156.0,2.189,0.1957,4.356 +DH049,156.0,158.0,10.662,0.1352,27.57 +DH049,158.0,160.0,0.948,0.1089,2.834 +DH049,160.0,162.0,6.717,0.0978,14.8 +DH049,162.0,164.0,0.377,0.2485,1.063 +DH049,164.0,166.0,5.737,0.3321,10.284 +DH049,166.0,168.0,0.35,0.1352,0.777 +DH049,168.0,170.0,1.166,0.0607,1.827 +DH049,170.0,172.0,1.113,0.5221,2.51 +DH049,172.0,174.0,1.596,0.664,4.427 +DH049,174.0,176.0,12.442,0.1338,23.468 +DH049,176.0,178.0,2.735,0.1585,7.063 +DH049,178.0,180.0,1.428,0.0991,3.423 +DH049,180.0,182.0,1.249,0.5639,3.251 +DH049,182.0,184.0,3.44,0.2002,9.152 +DH049,184.0,186.0,4.422,0.2418,11.384 +DH049,186.0,188.0,0.251,0.7462,0.411 +DH049,188.0,190.0,2.815,0.1849,4.855 +DH049,190.0,192.0,0.567,0.2954,0.875 +DH049,192.0,194.0,61.143,0.2476,122.98 +DH049,194.0,196.0,0.368,0.5046,1.047 +DH049,196.0,198.0,3.076,0.2799,6.685 +DH049,198.0,200.0,3.023,0.1192,8.297 +DH049,200.0,202.0,5.933,0.3192,16.529 +DH049,202.0,204.0,4.127,0.0939,11.261 +DH049,204.0,206.0,0.846,0.1781,1.618 +DH049,206.0,208.0,13.773,0.3077,25.683 +DH049,208.0,209.0,71.827,0.2316,133.552 +DH050,0.0,2.0,0.054,0.0343,0.059 +DH050,2.0,4.0,0.081,0.024,0.108 +DH050,4.0,6.0,0.038,0.0119,0.031 +DH050,6.0,8.0,0.066,0.0091,0.033 +DH050,8.0,10.0,0.076,0.02,0.079 +DH050,10.0,12.0,0.109,0.0125,0.113 +DH050,12.0,14.0,0.143,0.014,0.077 +DH050,14.0,16.0,0.033,0.0181,0.018 +DH050,16.0,18.0,0.025,0.0107,0.03 +DH050,18.0,20.0,0.132,0.007,0.182 +DH050,20.0,22.0,0.126,0.0201,0.15 +DH050,22.0,24.0,0.101,0.0308,0.053 +DH050,24.0,26.0,0.021,0.0325,0.014 +DH050,26.0,28.0,0.08,0.0068,0.083 +DH050,28.0,30.0,0.049,0.01,0.031 +DH050,30.0,32.0,0.06,0.0145,0.079 +DH050,32.0,34.0,0.096,0.0143,0.138 +DH050,34.0,36.0,0.062,0.0162,0.068 +DH050,36.0,38.0,0.044,0.038,0.037 +DH050,38.0,40.0,0.016,0.0191,0.013 +DH050,40.0,42.0,0.104,0.0149,0.13 +DH050,42.0,44.0,0.091,0.0269,0.135 +DH050,44.0,46.0,0.057,0.0416,0.064 +DH050,46.0,48.0,0.205,0.0815,0.143 +DH050,48.0,50.0,0.04,0.016,0.035 +DH050,50.0,52.0,0.173,0.057,0.087 +DH050,52.0,54.0,0.11,0.0128,0.078 +DH050,54.0,56.0,0.08,0.0103,0.113 +DH050,56.0,58.0,0.027,0.0127,0.02 +DH050,58.0,60.0,0.103,0.0179,0.101 +DH050,60.0,62.0,0.21,0.013,0.314 +DH050,62.0,64.0,0.236,0.0172,0.296 +DH050,64.0,66.0,0.08,0.0133,0.074 +DH050,66.0,68.0,0.181,0.0228,0.119 +DH050,68.0,70.0,0.047,0.0125,0.03 +DH050,70.0,72.0,0.142,0.0119,0.084 +DH050,72.0,74.0,0.092,0.0197,0.123 +DH050,74.0,76.0,0.136,0.0091,0.133 +DH050,76.0,78.0,0.072,0.0219,0.077 +DH050,78.0,80.0,0.085,0.0429,0.11 +DH050,80.0,82.0,1.168,0.1747,2.076 +DH050,82.0,84.0,8.947,0.0243,14.825 +DH050,84.0,86.0,8.827,0.1738,24.293 +DH050,86.0,88.0,31.1,0.238,74.118 +DH050,88.0,90.0,40.567,0.3078,76.73 +DH050,90.0,92.0,6.573,0.5754,13.666 +DH050,92.0,94.0,1.245,0.8815,2.159 +DH050,94.0,96.0,9.323,0.2754,17.153 +DH050,96.0,98.0,0.803,0.113,1.756 +DH050,98.0,100.0,0.573,0.245,0.935 +DH050,100.0,102.0,0.261,0.3078,0.478 +DH050,102.0,104.0,2.157,0.1063,5.748 +DH050,104.0,106.0,0.814,0.2358,1.429 +DH050,106.0,108.0,1.202,0.324,2.212 +DH050,108.0,110.0,3.298,0.6537,8.615 +DH050,110.0,112.0,1.101,0.278,2.175 +DH050,112.0,114.0,0.376,0.2966,1.091 +DH050,114.0,116.0,3.98,0.0643,7.663 +DH050,116.0,118.0,0.338,0.3825,0.92 +DH050,118.0,120.0,1.236,0.5495,2.347 +DH050,120.0,122.0,2.542,0.1903,4.004 +DH050,122.0,124.0,7.78,0.4354,16.747 +DH050,124.0,126.0,9.496,0.1072,22.275 +DH050,126.0,128.0,1.909,0.5155,3.866 +DH050,128.0,130.0,6.487,0.2136,10.229 +DH050,130.0,132.0,8.309,0.1174,23.289 +DH050,132.0,134.0,1.8,0.2515,4.249 +DH050,134.0,136.0,2.749,0.5776,8.198 +DH050,136.0,138.0,1.309,0.3065,3.632 +DH050,138.0,140.0,5.605,0.3832,14.342 +DH050,140.0,142.0,3.935,0.0402,8.822 +DH050,142.0,144.0,0.814,0.2868,1.539 +DH050,144.0,146.0,2.356,0.0921,3.825 +DH050,146.0,148.0,0.668,0.4321,1.949 +DH050,148.0,150.0,0.774,0.3117,2.124 +DH050,150.0,152.0,1.16,0.2382,2.683 +DH050,152.0,154.0,0.633,0.2498,1.285 +DH050,154.0,156.0,0.483,0.265,0.861 +DH050,156.0,158.0,2.582,0.3979,5.847 +DH050,158.0,160.0,6.66,0.4201,10.3 +DH050,160.0,162.0,3.61,0.5383,6.883 +DH050,162.0,164.0,0.301,0.1184,0.861 +DH050,164.0,166.0,2.004,0.2971,5.748 +DH050,166.0,168.0,24.79,0.2056,60.464 +DH050,168.0,170.0,0.995,0.1,2.279 +DH050,170.0,172.0,2.3,0.2081,6.898 +DH050,172.0,174.0,1.913,0.2083,5.145 +DH050,174.0,176.0,1.813,0.3435,5.364 +DH050,176.0,178.0,0.484,0.246,0.739 +DH050,178.0,180.0,0.843,0.246,1.766 +DH050,180.0,182.0,0.949,0.1473,2.335 +DH050,182.0,184.0,0.654,0.1376,1.517 +DH050,184.0,186.0,2.163,0.1523,6.016 +DH050,186.0,188.0,0.66,0.2008,1.208 +DH050,188.0,190.0,4.388,0.0768,7.763 +DH050,190.0,192.0,0.895,0.2223,2.289 +DH050,192.0,194.0,25.212,0.0901,67.647 +DH050,194.0,196.0,0.978,0.403,2.628 +DH050,196.0,198.0,10.029,0.3963,23.426 +DH050,198.0,200.0,73.659,0.348,141.882 +DH050,200.0,202.0,2.848,0.3696,4.412 +DH050,202.0,204.0,4.036,0.4834,6.51 +DH050,204.0,206.0,0.805,1.205,2.246 +DH050,206.0,208.0,5.819,0.2301,9.868 +DH050,208.0,210.0,1.509,0.191,3.084 +DH050,210.0,212.0,13.962,0.5723,23.209 +DH050,212.0,214.0,6.475,0.2218,16.052 +DH050,214.0,216.0,4.021,0.0553,9.053 +DH050,216.0,218.0,2.448,0.238,7.128 +DH050,218.0,220.0,3.805,0.5209,5.956 +DH050,220.0,222.0,1.69,1.9179,5.056 +DH050,222.0,224.0,5.63,0.2711,14.55 +DH050,224.0,226.0,3.54,0.3609,6.342 +DH050,226.0,228.0,0.625,0.1113,1.186 +DH050,228.0,230.0,7.021,0.2689,16.178 +DH050,230.0,232.0,11.549,0.0457,23.697 +DH050,232.0,234.0,0.111,0.5866,0.252 +DH050,234.0,236.0,7.096,0.2045,17.008 +DH050,236.0,238.0,1.912,0.3097,5.126 +DH050,238.0,240.0,3.338,0.8588,6.064 +DH050,240.0,242.0,2.05,0.2614,3.091 +DH050,242.0,243.0,1.381,0.1455,3.622 diff --git a/drillholes-demo/data/collar.csv b/drillholes-demo/data/collar.csv new file mode 100644 index 0000000..b928671 --- /dev/null +++ b/drillholes-demo/data/collar.csv @@ -0,0 +1,51 @@ +HOLEID,EAST,NORTH,ELEV,TOTDEPTH,AZ,DIP +DH001,350008.2,7199991.0,408.2,398.0,279.9,-70.4 +DH002,350098.2,7199985.2,404.0,419.0,349.9,-64.0 +DH003,350210.8,7200008.6,395.3,192.0,180.3,-76.4 +DH004,350305.9,7200004.9,409.4,316.0,51.8,-82.6 +DH005,350387.8,7200006.2,405.6,183.0,5.0,-82.9 +DH006,350514.3,7200008.4,404.3,352.0,82.7,-67.6 +DH007,350607.8,7199998.8,399.0,234.0,47.5,-65.5 +DH008,350008.6,7200102.1,395.4,348.0,244.0,-86.8 +DH009,350088.8,7200089.2,391.9,368.0,43.9,-88.0 +DH010,350198.5,7200088.4,408.1,381.0,182.3,-72.2 +DH011,350296.1,7200105.1,399.1,182.0,249.9,-85.6 +DH012,350412.8,7200099.1,394.0,425.0,209.2,-65.3 +DH013,350504.3,7200102.0,396.1,219.0,71.9,-80.7 +DH014,350609.7,7200107.9,401.6,161.0,289.5,-85.7 +DH015,349998.3,7200204.0,393.5,316.0,257.5,-62.4 +DH016,350091.8,7200201.6,407.1,261.0,266.0,-85.0 +DH017,350201.6,7200201.8,405.2,399.0,47.2,-81.5 +DH018,350286.9,7200194.1,404.4,392.0,44.6,-85.4 +DH019,350409.8,7200185.9,398.6,245.0,333.9,-86.5 +DH020,350503.9,7200198.1,402.5,436.0,143.1,-89.4 +DH021,350607.7,7200191.4,401.7,237.0,108.3,-88.3 +DH022,349995.6,7200297.3,403.0,305.0,175.9,-84.8 +DH023,350114.1,7200310.6,391.7,227.0,238.6,-88.4 +DH024,350211.8,7200292.0,398.3,431.0,344.0,-72.3 +DH025,350308.4,7200286.7,390.8,199.0,103.1,-69.6 +DH026,350390.8,7200293.4,399.9,163.0,332.9,-78.2 +DH027,350499.0,7200293.8,396.6,281.0,8.9,-80.5 +DH028,350586.3,7200304.9,392.9,448.0,199.9,-74.9 +DH029,349989.6,7200401.7,392.1,418.0,228.2,-63.7 +DH030,350105.5,7200408.5,401.8,375.0,38.1,-64.5 +DH031,350207.3,7200404.9,393.4,417.0,50.5,-88.7 +DH032,350314.0,7200397.2,408.5,418.0,150.9,-84.6 +DH033,350394.8,7200409.4,401.6,306.0,347.8,-82.9 +DH034,350496.1,7200390.0,396.9,245.0,214.6,-82.5 +DH035,350599.1,7200385.7,401.8,382.0,335.9,-72.9 +DH036,349990.7,7200487.7,390.5,348.0,289.6,-77.5 +DH037,350088.9,7200506.7,409.2,262.0,168.3,-88.5 +DH038,350199.3,7200498.9,399.6,178.0,282.5,-78.8 +DH039,350291.8,7200489.8,405.7,374.0,6.4,-74.3 +DH040,350405.1,7200500.0,391.7,229.0,39.3,-86.9 +DH041,350498.1,7200489.6,399.7,431.0,298.6,-65.0 +DH042,350610.0,7200505.9,399.8,222.0,286.9,-88.4 +DH043,350006.0,7200598.4,408.8,187.0,83.8,-62.3 +DH044,350094.4,7200596.4,401.4,399.0,191.1,-87.0 +DH045,350210.0,7200594.0,399.5,196.0,218.2,-64.7 +DH046,350309.1,7200603.9,395.3,204.0,312.4,-62.9 +DH047,350396.6,7200595.9,396.6,330.0,217.1,-60.6 +DH048,350493.6,7200587.6,400.4,412.0,148.5,-65.9 +DH049,350605.5,7200588.5,398.8,209.0,134.7,-66.6 +DH050,349989.2,7200713.9,390.4,243.0,153.3,-70.7 diff --git a/drillholes-demo/data/lith.csv b/drillholes-demo/data/lith.csv new file mode 100644 index 0000000..d0f1c0d --- /dev/null +++ b/drillholes-demo/data/lith.csv @@ -0,0 +1,275 @@ +HOLEID,FROM,TO,LITHOLOGY +DH001,0.0,26.7,Alluvium +DH001,26.7,50.1,Weathered Granite +DH001,50.1,133.1,Granite +DH001,133.1,170.6,Quartz Diorite +DH001,170.6,268.2,Mineralized Porphyry +DH001,268.2,398.0,Fresh Granite +DH002,0.0,20.6,Alluvium +DH002,20.6,60.2,Weathered Granite +DH002,60.2,118.1,Granite +DH002,118.1,194.8,Quartz Diorite +DH002,194.8,279.6,Mineralized Porphyry +DH002,279.6,419.0,Fresh Granite +DH003,0.0,17.7,Alluvium +DH003,17.7,47.0,Weathered Granite +DH003,47.0,122.8,Granite +DH003,122.8,171.8,Quartz Diorite +DH003,171.8,192.0,Mineralized Porphyry +DH004,0.0,6.5,Alluvium +DH004,6.5,74.4,Weathered Granite +DH004,74.4,119.1,Granite +DH004,119.1,191.9,Quartz Diorite +DH004,191.9,279.3,Mineralized Porphyry +DH004,279.3,316.0,Fresh Granite +DH005,0.0,29.7,Alluvium +DH005,29.7,64.4,Weathered Granite +DH005,64.4,128.5,Granite +DH005,128.5,177.8,Quartz Diorite +DH005,177.8,183.0,Mineralized Porphyry +DH006,0.0,30.7,Alluvium +DH006,30.7,63.9,Weathered Granite +DH006,63.9,115.4,Granite +DH006,115.4,184.9,Quartz Diorite +DH006,184.9,285.2,Mineralized Porphyry +DH006,285.2,352.0,Fresh Granite +DH007,0.0,16.1,Alluvium +DH007,16.1,57.8,Weathered Granite +DH007,57.8,129.4,Granite +DH007,129.4,180.2,Quartz Diorite +DH007,180.2,234.0,Mineralized Porphyry +DH008,0.0,18.8,Alluvium +DH008,18.8,51.5,Weathered Granite +DH008,51.5,127.4,Granite +DH008,127.4,168.9,Quartz Diorite +DH008,168.9,271.0,Mineralized Porphyry +DH008,271.0,348.0,Fresh Granite +DH009,0.0,27.4,Alluvium +DH009,27.4,71.8,Weathered Granite +DH009,71.8,113.2,Granite +DH009,113.2,168.3,Quartz Diorite +DH009,168.3,293.7,Mineralized Porphyry +DH009,293.7,368.0,Fresh Granite +DH010,0.0,10.9,Alluvium +DH010,10.9,53.7,Weathered Granite +DH010,53.7,120.9,Granite +DH010,120.9,191.5,Quartz Diorite +DH010,191.5,287.8,Mineralized Porphyry +DH010,287.8,381.0,Fresh Granite +DH011,0.0,10.3,Alluvium +DH011,10.3,55.7,Weathered Granite +DH011,55.7,119.4,Granite +DH011,119.4,169.4,Quartz Diorite +DH011,169.4,182.0,Mineralized Porphyry +DH012,0.0,14.2,Alluvium +DH012,14.2,48.8,Weathered Granite +DH012,48.8,121.5,Granite +DH012,121.5,186.2,Quartz Diorite +DH012,186.2,267.1,Mineralized Porphyry +DH012,267.1,425.0,Fresh Granite +DH013,0.0,28.5,Alluvium +DH013,28.5,67.4,Weathered Granite +DH013,67.4,129.5,Granite +DH013,129.5,178.4,Quartz Diorite +DH013,178.4,219.0,Mineralized Porphyry +DH014,0.0,12.2,Alluvium +DH014,12.2,55.8,Weathered Granite +DH014,55.8,110.3,Granite +DH014,110.3,161.0,Quartz Diorite +DH015,0.0,16.8,Alluvium +DH015,16.8,52.2,Weathered Granite +DH015,52.2,127.6,Granite +DH015,127.6,174.4,Quartz Diorite +DH015,174.4,273.2,Mineralized Porphyry +DH015,273.2,316.0,Fresh Granite +DH016,0.0,18.2,Alluvium +DH016,18.2,54.1,Weathered Granite +DH016,54.1,116.1,Granite +DH016,116.1,172.1,Quartz Diorite +DH016,172.1,261.0,Mineralized Porphyry +DH017,0.0,32.9,Alluvium +DH017,32.9,59.9,Weathered Granite +DH017,59.9,124.3,Granite +DH017,124.3,191.0,Quartz Diorite +DH017,191.0,295.0,Mineralized Porphyry +DH017,295.0,399.0,Fresh Granite +DH018,0.0,31.7,Alluvium +DH018,31.7,72.3,Weathered Granite +DH018,72.3,128.7,Granite +DH018,128.7,178.8,Quartz Diorite +DH018,178.8,267.4,Mineralized Porphyry +DH018,267.4,392.0,Fresh Granite +DH019,0.0,19.3,Alluvium +DH019,19.3,59.8,Weathered Granite +DH019,59.8,117.2,Granite +DH019,117.2,182.0,Quartz Diorite +DH019,182.0,245.0,Mineralized Porphyry +DH020,0.0,30.1,Alluvium +DH020,30.1,48.3,Weathered Granite +DH020,48.3,111.8,Granite +DH020,111.8,188.8,Quartz Diorite +DH020,188.8,290.4,Mineralized Porphyry +DH020,290.4,436.0,Fresh Granite +DH021,0.0,31.2,Alluvium +DH021,31.2,71.7,Weathered Granite +DH021,71.7,114.4,Granite +DH021,114.4,177.0,Quartz Diorite +DH021,177.0,237.0,Mineralized Porphyry +DH022,0.0,23.2,Alluvium +DH022,23.2,73.2,Weathered Granite +DH022,73.2,115.3,Granite +DH022,115.3,181.7,Quartz Diorite +DH022,181.7,273.9,Mineralized Porphyry +DH022,273.9,305.0,Fresh Granite +DH023,0.0,10.9,Alluvium +DH023,10.9,46.7,Weathered Granite +DH023,46.7,133.5,Granite +DH023,133.5,177.1,Quartz Diorite +DH023,177.1,227.0,Mineralized Porphyry +DH024,0.0,25.4,Alluvium +DH024,25.4,50.8,Weathered Granite +DH024,50.8,110.3,Granite +DH024,110.3,189.4,Quartz Diorite +DH024,189.4,272.9,Mineralized Porphyry +DH024,272.9,431.0,Fresh Granite +DH025,0.0,9.2,Alluvium +DH025,9.2,65.3,Weathered Granite +DH025,65.3,129.4,Granite +DH025,129.4,172.1,Quartz Diorite +DH025,172.1,199.0,Mineralized Porphyry +DH026,0.0,33.9,Alluvium +DH026,33.9,52.9,Weathered Granite +DH026,52.9,117.9,Granite +DH026,117.9,163.0,Quartz Diorite +DH027,0.0,12.6,Alluvium +DH027,12.6,68.3,Weathered Granite +DH027,68.3,128.2,Granite +DH027,128.2,176.3,Quartz Diorite +DH027,176.3,281.0,Mineralized Porphyry +DH028,0.0,11.4,Alluvium +DH028,11.4,45.1,Weathered Granite +DH028,45.1,122.1,Granite +DH028,122.1,194.8,Quartz Diorite +DH028,194.8,266.2,Mineralized Porphyry +DH028,266.2,448.0,Fresh Granite +DH029,0.0,20.6,Alluvium +DH029,20.6,69.3,Weathered Granite +DH029,69.3,107.7,Granite +DH029,107.7,176.9,Quartz Diorite +DH029,176.9,287.4,Mineralized Porphyry +DH029,287.4,418.0,Fresh Granite +DH030,0.0,10.7,Alluvium +DH030,10.7,50.9,Weathered Granite +DH030,50.9,117.3,Granite +DH030,117.3,179.4,Quartz Diorite +DH030,179.4,290.9,Mineralized Porphyry +DH030,290.9,375.0,Fresh Granite +DH031,0.0,25.7,Alluvium +DH031,25.7,74.5,Weathered Granite +DH031,74.5,117.4,Granite +DH031,117.4,177.1,Quartz Diorite +DH031,177.1,292.7,Mineralized Porphyry +DH031,292.7,417.0,Fresh Granite +DH032,0.0,26.9,Alluvium +DH032,26.9,67.6,Weathered Granite +DH032,67.6,107.9,Granite +DH032,107.9,179.0,Quartz Diorite +DH032,179.0,271.0,Mineralized Porphyry +DH032,271.0,418.0,Fresh Granite +DH033,0.0,18.9,Alluvium +DH033,18.9,53.7,Weathered Granite +DH033,53.7,128.9,Granite +DH033,128.9,192.2,Quartz Diorite +DH033,192.2,289.1,Mineralized Porphyry +DH033,289.1,306.0,Fresh Granite +DH034,0.0,13.2,Alluvium +DH034,13.2,52.6,Weathered Granite +DH034,52.6,109.1,Granite +DH034,109.1,193.3,Quartz Diorite +DH034,193.3,245.0,Mineralized Porphyry +DH035,0.0,11.7,Alluvium +DH035,11.7,70.4,Weathered Granite +DH035,70.4,117.0,Granite +DH035,117.0,166.1,Quartz Diorite +DH035,166.1,269.9,Mineralized Porphyry +DH035,269.9,382.0,Fresh Granite +DH036,0.0,28.5,Alluvium +DH036,28.5,51.3,Weathered Granite +DH036,51.3,132.5,Granite +DH036,132.5,190.5,Quartz Diorite +DH036,190.5,290.5,Mineralized Porphyry +DH036,290.5,348.0,Fresh Granite +DH037,0.0,6.5,Alluvium +DH037,6.5,71.0,Weathered Granite +DH037,71.0,114.2,Granite +DH037,114.2,183.6,Quartz Diorite +DH037,183.6,262.0,Mineralized Porphyry +DH038,0.0,8.8,Alluvium +DH038,8.8,68.4,Weathered Granite +DH038,68.4,133.2,Granite +DH038,133.2,178.0,Quartz Diorite +DH039,0.0,18.2,Alluvium +DH039,18.2,71.3,Weathered Granite +DH039,71.3,120.8,Granite +DH039,120.8,187.3,Quartz Diorite +DH039,187.3,289.6,Mineralized Porphyry +DH039,289.6,374.0,Fresh Granite +DH040,0.0,13.6,Alluvium +DH040,13.6,48.5,Weathered Granite +DH040,48.5,112.2,Granite +DH040,112.2,180.1,Quartz Diorite +DH040,180.1,229.0,Mineralized Porphyry +DH041,0.0,22.5,Alluvium +DH041,22.5,56.9,Weathered Granite +DH041,56.9,128.6,Granite +DH041,128.6,192.4,Quartz Diorite +DH041,192.4,272.4,Mineralized Porphyry +DH041,272.4,431.0,Fresh Granite +DH042,0.0,25.3,Alluvium +DH042,25.3,60.7,Weathered Granite +DH042,60.7,110.7,Granite +DH042,110.7,188.9,Quartz Diorite +DH042,188.9,222.0,Mineralized Porphyry +DH043,0.0,26.7,Alluvium +DH043,26.7,72.5,Weathered Granite +DH043,72.5,134.5,Granite +DH043,134.5,175.6,Quartz Diorite +DH043,175.6,187.0,Mineralized Porphyry +DH044,0.0,19.2,Alluvium +DH044,19.2,74.6,Weathered Granite +DH044,74.6,107.8,Granite +DH044,107.8,177.4,Quartz Diorite +DH044,177.4,291.3,Mineralized Porphyry +DH044,291.3,399.0,Fresh Granite +DH045,0.0,28.6,Alluvium +DH045,28.6,56.5,Weathered Granite +DH045,56.5,134.4,Granite +DH045,134.4,191.5,Quartz Diorite +DH045,191.5,196.0,Mineralized Porphyry +DH046,0.0,28.1,Alluvium +DH046,28.1,55.1,Weathered Granite +DH046,55.1,123.2,Granite +DH046,123.2,184.8,Quartz Diorite +DH046,184.8,204.0,Mineralized Porphyry +DH047,0.0,5.7,Alluvium +DH047,5.7,51.6,Weathered Granite +DH047,51.6,126.4,Granite +DH047,126.4,181.9,Quartz Diorite +DH047,181.9,279.9,Mineralized Porphyry +DH047,279.9,330.0,Fresh Granite +DH048,0.0,15.4,Alluvium +DH048,15.4,71.0,Weathered Granite +DH048,71.0,105.9,Granite +DH048,105.9,176.9,Quartz Diorite +DH048,176.9,293.4,Mineralized Porphyry +DH048,293.4,412.0,Fresh Granite +DH049,0.0,27.5,Alluvium +DH049,27.5,52.7,Weathered Granite +DH049,52.7,131.0,Granite +DH049,131.0,187.4,Quartz Diorite +DH049,187.4,209.0,Mineralized Porphyry +DH050,0.0,11.5,Alluvium +DH050,11.5,60.9,Weathered Granite +DH050,60.9,128.4,Granite +DH050,128.4,172.4,Quartz Diorite +DH050,172.4,243.0,Mineralized Porphyry diff --git a/drillholes-demo/data/survey.csv b/drillholes-demo/data/survey.csv new file mode 100644 index 0000000..a67e692 --- /dev/null +++ b/drillholes-demo/data/survey.csv @@ -0,0 +1,585 @@ +HOLEID,DEPTH,AZ,DIP +DH001,0.0,282.7,-72.6 +DH001,30.0,280.3,-70.3 +DH001,60.0,283.5,-70.6 +DH001,90.0,278.8,-69.6 +DH001,120.0,277.6,-72.6 +DH001,150.0,279.7,-70.9 +DH001,180.0,277.2,-71.2 +DH001,210.0,278.6,-71.4 +DH001,240.0,278.7,-69.3 +DH001,270.0,277.9,-67.7 +DH001,300.0,284.1,-70.5 +DH001,330.0,278.2,-70.2 +DH001,360.0,283.4,-69.5 +DH001,390.0,282.9,-70.2 +DH001,398.0,281.2,-71.7 +DH002,0.0,352.2,-65.8 +DH002,30.0,351.8,-61.8 +DH002,60.0,346.2,-63.3 +DH002,90.0,345.9,-62.6 +DH002,120.0,345.7,-61.4 +DH002,150.0,346.3,-61.2 +DH002,180.0,352.9,-63.4 +DH002,210.0,352.7,-62.2 +DH002,240.0,354.4,-65.5 +DH002,270.0,350.8,-66.4 +DH002,300.0,351.1,-66.0 +DH002,330.0,350.5,-63.6 +DH002,360.0,349.6,-63.9 +DH002,390.0,352.5,-62.2 +DH002,419.0,349.8,-63.4 +DH003,0.0,184.6,-78.7 +DH003,30.0,176.5,-78.9 +DH003,60.0,181.9,-76.9 +DH003,90.0,183.0,-75.4 +DH003,120.0,178.6,-74.0 +DH003,150.0,182.9,-77.8 +DH003,180.0,178.9,-77.5 +DH003,192.0,176.9,-78.5 +DH004,0.0,56.2,-83.0 +DH004,30.0,50.6,-81.2 +DH004,60.0,52.3,-80.0 +DH004,90.0,54.6,-82.7 +DH004,120.0,50.6,-79.7 +DH004,150.0,54.0,-79.9 +DH004,180.0,48.0,-80.5 +DH004,210.0,53.2,-84.9 +DH004,240.0,52.7,-81.5 +DH004,270.0,46.9,-82.9 +DH004,300.0,55.1,-83.8 +DH004,316.0,51.4,-82.9 +DH005,0.0,3.0,-80.4 +DH005,30.0,7.8,-85.2 +DH005,60.0,10.0,-80.6 +DH005,90.0,2.8,-80.9 +DH005,120.0,1.1,-79.9 +DH005,150.0,6.7,-82.0 +DH005,180.0,0.9,-80.5 +DH005,183.0,0.3,-84.5 +DH006,0.0,79.1,-65.9 +DH006,30.0,79.7,-65.1 +DH006,60.0,84.3,-70.4 +DH006,90.0,77.8,-70.3 +DH006,120.0,83.8,-65.8 +DH006,150.0,80.1,-65.5 +DH006,180.0,78.3,-65.8 +DH006,210.0,87.0,-66.0 +DH006,240.0,84.7,-65.6 +DH006,270.0,78.1,-69.4 +DH006,300.0,78.9,-67.6 +DH006,330.0,85.2,-66.8 +DH006,352.0,86.2,-69.7 +DH007,0.0,49.8,-67.3 +DH007,30.0,45.2,-64.2 +DH007,60.0,52.3,-64.8 +DH007,90.0,43.0,-64.8 +DH007,120.0,42.9,-63.2 +DH007,150.0,49.6,-67.5 +DH007,180.0,43.4,-67.4 +DH007,210.0,52.3,-65.7 +DH007,234.0,50.3,-64.7 +DH008,0.0,244.7,-88.9 +DH008,30.0,248.5,-88.0 +DH008,60.0,244.8,-85.6 +DH008,90.0,245.5,-84.2 +DH008,120.0,240.5,-86.7 +DH008,150.0,243.0,-87.0 +DH008,180.0,240.2,-89.0 +DH008,210.0,241.8,-88.0 +DH008,240.0,243.3,-86.1 +DH008,270.0,245.3,-87.3 +DH008,300.0,243.1,-88.5 +DH008,330.0,244.9,-87.9 +DH008,348.0,239.4,-87.3 +DH009,0.0,43.6,-89.6 +DH009,30.0,44.6,-87.6 +DH009,60.0,45.9,-87.1 +DH009,90.0,45.4,-89.1 +DH009,120.0,46.8,-87.7 +DH009,150.0,43.2,-87.2 +DH009,180.0,42.5,-87.9 +DH009,210.0,46.3,-85.7 +DH009,240.0,48.1,-88.0 +DH009,270.0,44.1,-86.2 +DH009,300.0,42.0,-86.0 +DH009,330.0,43.8,-90.3 +DH009,360.0,39.6,-85.9 +DH009,368.0,39.5,-89.3 +DH010,0.0,180.6,-74.2 +DH010,30.0,180.4,-70.7 +DH010,60.0,177.4,-70.2 +DH010,90.0,185.9,-73.0 +DH010,120.0,178.8,-71.6 +DH010,150.0,178.5,-73.0 +DH010,180.0,186.9,-69.2 +DH010,210.0,185.0,-73.3 +DH010,240.0,184.2,-71.0 +DH010,270.0,181.2,-71.4 +DH010,300.0,177.4,-73.9 +DH010,330.0,182.6,-74.2 +DH010,360.0,179.0,-70.2 +DH010,381.0,187.2,-71.9 +DH011,0.0,253.3,-82.7 +DH011,30.0,246.3,-85.9 +DH011,60.0,248.8,-88.1 +DH011,90.0,252.5,-86.0 +DH011,120.0,249.6,-87.7 +DH011,150.0,246.7,-83.2 +DH011,180.0,245.3,-87.2 +DH011,182.0,247.8,-85.7 +DH012,0.0,210.1,-65.3 +DH012,30.0,205.0,-66.8 +DH012,60.0,212.6,-64.5 +DH012,90.0,210.7,-64.3 +DH012,120.0,211.8,-68.0 +DH012,150.0,207.9,-65.1 +DH012,180.0,207.6,-63.2 +DH012,210.0,209.0,-63.7 +DH012,240.0,212.7,-65.3 +DH012,270.0,213.3,-64.8 +DH012,300.0,212.7,-66.3 +DH012,330.0,209.2,-65.1 +DH012,360.0,205.2,-65.9 +DH012,390.0,213.4,-64.5 +DH012,420.0,206.0,-66.3 +DH012,425.0,206.1,-68.2 +DH013,0.0,76.2,-81.0 +DH013,30.0,70.0,-80.1 +DH013,60.0,67.0,-82.0 +DH013,90.0,73.9,-79.9 +DH013,120.0,76.7,-80.0 +DH013,150.0,71.7,-79.1 +DH013,180.0,75.9,-79.4 +DH013,210.0,76.5,-79.0 +DH013,219.0,75.6,-83.0 +DH014,0.0,291.8,-86.1 +DH014,30.0,290.0,-84.8 +DH014,60.0,294.2,-82.8 +DH014,90.0,287.4,-84.3 +DH014,120.0,292.0,-86.6 +DH014,150.0,285.7,-88.5 +DH014,161.0,292.3,-85.8 +DH015,0.0,262.4,-62.6 +DH015,30.0,262.3,-62.9 +DH015,60.0,260.4,-64.9 +DH015,90.0,258.1,-60.6 +DH015,120.0,261.7,-60.5 +DH015,150.0,252.9,-63.2 +DH015,180.0,253.0,-64.7 +DH015,210.0,259.3,-61.1 +DH015,240.0,260.2,-60.2 +DH015,270.0,259.9,-60.6 +DH015,300.0,253.0,-64.0 +DH015,316.0,258.7,-60.3 +DH016,0.0,261.0,-84.9 +DH016,30.0,267.8,-87.8 +DH016,60.0,265.0,-82.6 +DH016,90.0,267.7,-86.6 +DH016,120.0,269.5,-85.9 +DH016,150.0,269.5,-86.2 +DH016,180.0,266.9,-85.6 +DH016,210.0,263.7,-82.7 +DH016,240.0,262.9,-87.5 +DH016,261.0,264.4,-83.7 +DH017,0.0,50.3,-78.5 +DH017,30.0,45.2,-82.1 +DH017,60.0,43.6,-81.1 +DH017,90.0,52.2,-80.3 +DH017,120.0,48.2,-82.1 +DH017,150.0,51.4,-81.5 +DH017,180.0,43.5,-82.3 +DH017,210.0,42.9,-83.3 +DH017,240.0,42.4,-81.8 +DH017,270.0,48.5,-82.4 +DH017,300.0,46.4,-78.7 +DH017,330.0,49.7,-81.3 +DH017,360.0,45.0,-79.1 +DH017,390.0,44.6,-82.5 +DH017,399.0,51.3,-81.3 +DH018,0.0,47.0,-84.9 +DH018,30.0,46.1,-86.6 +DH018,60.0,42.0,-86.5 +DH018,90.0,41.2,-83.2 +DH018,120.0,42.4,-85.0 +DH018,150.0,47.5,-83.7 +DH018,180.0,44.0,-85.5 +DH018,210.0,49.5,-84.4 +DH018,240.0,47.7,-83.0 +DH018,270.0,47.5,-87.3 +DH018,300.0,45.2,-87.8 +DH018,330.0,46.1,-82.7 +DH018,360.0,44.7,-85.8 +DH018,390.0,40.0,-82.6 +DH018,392.0,40.6,-88.2 +DH019,0.0,331.4,-89.1 +DH019,30.0,333.5,-86.4 +DH019,60.0,332.0,-89.2 +DH019,90.0,330.0,-87.2 +DH019,120.0,329.5,-85.3 +DH019,150.0,331.0,-87.7 +DH019,180.0,332.8,-87.0 +DH019,210.0,328.9,-88.8 +DH019,240.0,337.5,-89.5 +DH019,245.0,334.0,-86.6 +DH020,0.0,141.4,-89.8 +DH020,30.0,145.9,-87.4 +DH020,60.0,140.7,-90.5 +DH020,90.0,140.5,-89.5 +DH020,120.0,144.9,-91.0 +DH020,150.0,141.4,-86.8 +DH020,180.0,138.6,-89.6 +DH020,210.0,145.2,-91.5 +DH020,240.0,138.6,-91.6 +DH020,270.0,147.3,-92.3 +DH020,300.0,140.0,-92.2 +DH020,330.0,139.2,-88.7 +DH020,360.0,140.5,-89.0 +DH020,390.0,144.0,-87.3 +DH020,420.0,138.1,-87.3 +DH020,436.0,144.3,-91.4 +DH021,0.0,111.0,-86.2 +DH021,30.0,105.8,-85.8 +DH021,60.0,107.8,-87.7 +DH021,90.0,113.1,-89.1 +DH021,120.0,111.4,-89.4 +DH021,150.0,111.3,-87.7 +DH021,180.0,105.5,-88.8 +DH021,210.0,106.5,-90.8 +DH021,237.0,103.6,-89.2 +DH022,0.0,171.1,-86.8 +DH022,30.0,178.2,-83.6 +DH022,60.0,178.3,-85.9 +DH022,90.0,179.8,-84.2 +DH022,120.0,172.2,-86.9 +DH022,150.0,177.8,-86.8 +DH022,180.0,176.0,-81.8 +DH022,210.0,170.9,-87.7 +DH022,240.0,180.8,-84.3 +DH022,270.0,172.2,-82.4 +DH022,300.0,179.7,-84.6 +DH022,305.0,177.1,-86.2 +DH023,0.0,234.1,-87.8 +DH023,30.0,236.5,-87.4 +DH023,60.0,242.0,-91.3 +DH023,90.0,239.6,-90.0 +DH023,120.0,242.3,-89.9 +DH023,150.0,239.7,-88.1 +DH023,180.0,237.6,-87.3 +DH023,210.0,240.9,-88.0 +DH023,227.0,241.2,-85.5 +DH024,0.0,343.2,-72.2 +DH024,30.0,339.1,-70.5 +DH024,60.0,344.2,-72.9 +DH024,90.0,339.9,-70.0 +DH024,120.0,343.0,-71.2 +DH024,150.0,340.5,-69.5 +DH024,180.0,340.8,-74.1 +DH024,210.0,347.6,-69.8 +DH024,240.0,341.1,-72.5 +DH024,270.0,346.3,-70.0 +DH024,300.0,342.8,-72.2 +DH024,330.0,346.4,-70.9 +DH024,360.0,346.8,-71.9 +DH024,390.0,340.0,-69.9 +DH024,420.0,347.7,-70.5 +DH024,431.0,340.0,-74.1 +DH025,0.0,105.5,-72.5 +DH025,30.0,107.9,-70.3 +DH025,60.0,105.3,-67.3 +DH025,90.0,102.0,-70.7 +DH025,120.0,104.2,-69.1 +DH025,150.0,102.2,-69.0 +DH025,180.0,107.5,-69.8 +DH025,199.0,100.1,-70.3 +DH026,0.0,331.8,-80.4 +DH026,30.0,329.5,-77.1 +DH026,60.0,331.3,-75.5 +DH026,90.0,330.3,-80.6 +DH026,120.0,335.4,-75.9 +DH026,150.0,330.7,-80.0 +DH026,163.0,329.8,-78.1 +DH027,0.0,8.6,-81.9 +DH027,30.0,4.4,-80.6 +DH027,60.0,13.5,-79.6 +DH027,90.0,8.9,-82.8 +DH027,120.0,6.4,-81.7 +DH027,150.0,11.5,-78.2 +DH027,180.0,12.9,-77.6 +DH027,210.0,13.7,-77.8 +DH027,240.0,4.6,-82.7 +DH027,270.0,6.9,-80.2 +DH027,281.0,4.9,-78.4 +DH028,0.0,201.1,-74.6 +DH028,30.0,196.6,-76.4 +DH028,60.0,196.5,-72.8 +DH028,90.0,200.7,-73.5 +DH028,120.0,197.9,-75.7 +DH028,150.0,198.9,-73.3 +DH028,180.0,202.6,-76.7 +DH028,210.0,204.3,-77.2 +DH028,240.0,203.9,-77.3 +DH028,270.0,197.5,-72.8 +DH028,300.0,196.7,-75.4 +DH028,330.0,199.4,-76.4 +DH028,360.0,202.0,-72.8 +DH028,390.0,203.6,-75.9 +DH028,420.0,200.2,-76.4 +DH028,448.0,197.3,-76.9 +DH029,0.0,232.6,-61.4 +DH029,30.0,231.0,-63.6 +DH029,60.0,228.1,-63.5 +DH029,90.0,228.6,-64.1 +DH029,120.0,224.5,-65.9 +DH029,150.0,232.7,-63.8 +DH029,180.0,232.7,-65.7 +DH029,210.0,228.7,-65.5 +DH029,240.0,225.7,-66.5 +DH029,270.0,224.4,-61.2 +DH029,300.0,226.4,-63.1 +DH029,330.0,227.9,-64.3 +DH029,360.0,228.5,-65.6 +DH029,390.0,233.1,-61.8 +DH029,418.0,230.6,-63.9 +DH030,0.0,34.6,-62.0 +DH030,30.0,36.5,-67.2 +DH030,60.0,36.5,-62.7 +DH030,90.0,39.3,-63.0 +DH030,120.0,41.0,-66.2 +DH030,150.0,42.3,-64.9 +DH030,180.0,39.5,-67.5 +DH030,210.0,43.0,-65.8 +DH030,240.0,33.7,-64.8 +DH030,270.0,34.4,-66.6 +DH030,300.0,39.4,-65.1 +DH030,330.0,42.3,-65.6 +DH030,360.0,40.4,-64.7 +DH030,375.0,39.7,-63.9 +DH031,0.0,50.2,-86.0 +DH031,30.0,48.9,-90.6 +DH031,60.0,52.3,-86.6 +DH031,90.0,45.9,-89.0 +DH031,120.0,54.4,-87.2 +DH031,150.0,55.4,-88.5 +DH031,180.0,52.1,-89.9 +DH031,210.0,55.0,-89.5 +DH031,240.0,52.9,-89.3 +DH031,270.0,51.1,-87.4 +DH031,300.0,50.6,-86.3 +DH031,330.0,49.7,-87.8 +DH031,360.0,48.9,-89.3 +DH031,390.0,49.9,-90.9 +DH031,417.0,46.4,-87.7 +DH032,0.0,152.5,-83.6 +DH032,30.0,146.1,-85.6 +DH032,60.0,147.9,-82.9 +DH032,90.0,154.5,-86.1 +DH032,120.0,152.6,-86.8 +DH032,150.0,148.7,-86.8 +DH032,180.0,148.7,-83.6 +DH032,210.0,155.0,-86.4 +DH032,240.0,151.3,-83.4 +DH032,270.0,155.4,-83.9 +DH032,300.0,148.5,-83.8 +DH032,330.0,149.1,-81.7 +DH032,360.0,149.9,-83.5 +DH032,390.0,146.1,-85.2 +DH032,418.0,154.7,-83.9 +DH033,0.0,347.2,-80.3 +DH033,30.0,351.3,-84.0 +DH033,60.0,348.2,-83.0 +DH033,90.0,349.1,-83.9 +DH033,120.0,345.2,-80.4 +DH033,150.0,352.0,-80.8 +DH033,180.0,352.6,-81.4 +DH033,210.0,350.4,-81.3 +DH033,240.0,347.6,-83.2 +DH033,270.0,345.2,-82.0 +DH033,300.0,345.7,-84.4 +DH033,306.0,348.7,-83.4 +DH034,0.0,211.8,-80.6 +DH034,30.0,218.2,-84.5 +DH034,60.0,209.7,-83.5 +DH034,90.0,217.6,-80.5 +DH034,120.0,211.0,-80.9 +DH034,150.0,210.8,-83.2 +DH034,180.0,219.6,-84.3 +DH034,210.0,211.1,-83.0 +DH034,240.0,215.8,-79.9 +DH034,245.0,219.4,-85.1 +DH035,0.0,332.3,-71.2 +DH035,30.0,333.6,-70.6 +DH035,60.0,337.5,-75.2 +DH035,90.0,339.2,-74.8 +DH035,120.0,335.1,-72.6 +DH035,150.0,335.9,-71.8 +DH035,180.0,337.4,-69.9 +DH035,210.0,340.9,-72.8 +DH035,240.0,331.9,-71.5 +DH035,270.0,340.7,-74.0 +DH035,300.0,335.5,-73.4 +DH035,330.0,331.4,-71.9 +DH035,360.0,334.4,-71.2 +DH035,382.0,339.2,-71.0 +DH036,0.0,288.8,-78.6 +DH036,30.0,292.1,-75.7 +DH036,60.0,289.5,-75.1 +DH036,90.0,286.0,-75.2 +DH036,120.0,285.6,-79.6 +DH036,150.0,289.9,-80.1 +DH036,180.0,285.1,-80.5 +DH036,210.0,289.0,-75.9 +DH036,240.0,284.9,-76.6 +DH036,270.0,292.8,-79.5 +DH036,300.0,286.1,-75.3 +DH036,330.0,292.8,-77.3 +DH036,348.0,292.8,-79.9 +DH037,0.0,167.2,-87.1 +DH037,30.0,165.9,-87.0 +DH037,60.0,168.3,-87.0 +DH037,90.0,167.9,-89.3 +DH037,120.0,165.5,-90.2 +DH037,150.0,170.8,-90.8 +DH037,180.0,164.2,-90.4 +DH037,210.0,165.1,-86.6 +DH037,240.0,167.3,-85.6 +DH037,262.0,164.7,-87.6 +DH038,0.0,282.0,-79.4 +DH038,30.0,286.3,-75.9 +DH038,60.0,286.2,-80.6 +DH038,90.0,279.7,-77.9 +DH038,120.0,280.4,-77.4 +DH038,150.0,283.2,-78.5 +DH038,178.0,285.8,-77.5 +DH039,0.0,1.7,-77.0 +DH039,30.0,7.4,-74.4 +DH039,60.0,4.0,-74.8 +DH039,90.0,9.0,-72.3 +DH039,120.0,7.0,-75.0 +DH039,150.0,4.1,-74.2 +DH039,180.0,4.5,-73.9 +DH039,210.0,8.2,-76.9 +DH039,240.0,1.4,-76.0 +DH039,270.0,10.3,-73.4 +DH039,300.0,3.1,-72.0 +DH039,330.0,6.1,-74.4 +DH039,360.0,10.8,-76.9 +DH039,374.0,3.6,-73.8 +DH040,0.0,36.3,-85.8 +DH040,30.0,36.4,-89.3 +DH040,60.0,36.4,-87.4 +DH040,90.0,36.1,-89.1 +DH040,120.0,42.9,-88.0 +DH040,150.0,37.9,-89.6 +DH040,180.0,37.9,-88.3 +DH040,210.0,40.4,-88.7 +DH040,229.0,43.2,-84.3 +DH041,0.0,294.6,-67.4 +DH041,30.0,294.8,-64.3 +DH041,60.0,294.8,-62.9 +DH041,90.0,301.1,-63.1 +DH041,120.0,298.9,-62.0 +DH041,150.0,294.0,-65.6 +DH041,180.0,296.8,-62.3 +DH041,210.0,299.4,-63.2 +DH041,240.0,295.3,-62.1 +DH041,270.0,298.6,-65.0 +DH041,300.0,303.3,-65.7 +DH041,330.0,297.6,-64.5 +DH041,360.0,294.9,-66.1 +DH041,390.0,295.5,-67.4 +DH041,420.0,302.3,-64.5 +DH041,431.0,297.2,-65.5 +DH042,0.0,286.2,-87.6 +DH042,30.0,291.2,-85.8 +DH042,60.0,285.8,-89.4 +DH042,90.0,286.4,-88.0 +DH042,120.0,286.5,-87.4 +DH042,150.0,287.4,-89.5 +DH042,180.0,285.4,-89.1 +DH042,210.0,282.8,-90.4 +DH042,222.0,289.1,-89.1 +DH043,0.0,80.9,-61.9 +DH043,30.0,86.4,-63.8 +DH043,60.0,87.1,-59.7 +DH043,90.0,84.8,-61.3 +DH043,120.0,79.3,-59.6 +DH043,150.0,82.7,-59.8 +DH043,180.0,84.6,-65.3 +DH043,187.0,79.2,-61.2 +DH044,0.0,191.7,-89.8 +DH044,30.0,193.5,-84.9 +DH044,60.0,191.1,-87.2 +DH044,90.0,186.2,-85.3 +DH044,120.0,189.4,-84.7 +DH044,150.0,189.8,-86.6 +DH044,180.0,188.8,-89.0 +DH044,210.0,193.8,-87.0 +DH044,240.0,191.5,-84.2 +DH044,270.0,195.7,-84.9 +DH044,300.0,188.0,-86.4 +DH044,330.0,194.9,-87.8 +DH044,360.0,187.1,-85.1 +DH044,390.0,190.9,-86.6 +DH044,399.0,195.9,-86.4 +DH045,0.0,217.4,-65.5 +DH045,30.0,217.4,-67.0 +DH045,60.0,221.1,-62.7 +DH045,90.0,216.0,-65.9 +DH045,120.0,221.9,-67.6 +DH045,150.0,218.4,-64.9 +DH045,180.0,220.1,-66.7 +DH045,196.0,219.9,-65.4 +DH046,0.0,313.6,-65.7 +DH046,30.0,312.0,-62.8 +DH046,60.0,309.5,-65.1 +DH046,90.0,309.3,-63.8 +DH046,120.0,308.4,-60.2 +DH046,150.0,311.4,-61.0 +DH046,180.0,317.1,-65.4 +DH046,204.0,313.9,-60.7 +DH047,0.0,218.4,-61.0 +DH047,30.0,216.4,-63.4 +DH047,60.0,217.4,-57.6 +DH047,90.0,221.7,-63.4 +DH047,120.0,219.2,-61.8 +DH047,150.0,221.1,-63.3 +DH047,180.0,221.5,-58.6 +DH047,210.0,213.3,-63.2 +DH047,240.0,220.4,-62.7 +DH047,270.0,217.4,-58.1 +DH047,300.0,217.8,-61.2 +DH047,330.0,216.6,-63.2 +DH048,0.0,153.2,-67.0 +DH048,30.0,145.4,-67.2 +DH048,60.0,153.1,-68.3 +DH048,90.0,152.2,-64.7 +DH048,120.0,151.8,-63.0 +DH048,150.0,151.9,-63.2 +DH048,180.0,144.8,-64.1 +DH048,210.0,149.0,-65.6 +DH048,240.0,152.5,-63.1 +DH048,270.0,150.5,-66.0 +DH048,300.0,148.1,-66.6 +DH048,330.0,147.1,-66.6 +DH048,360.0,144.4,-68.4 +DH048,390.0,151.3,-66.2 +DH048,412.0,152.8,-65.2 +DH049,0.0,130.1,-68.7 +DH049,30.0,131.8,-63.7 +DH049,60.0,131.9,-66.5 +DH049,90.0,139.1,-63.7 +DH049,120.0,132.1,-69.3 +DH049,150.0,131.2,-69.2 +DH049,180.0,131.7,-66.2 +DH049,209.0,138.8,-66.4 +DH050,0.0,154.6,-72.5 +DH050,30.0,156.3,-70.0 +DH050,60.0,156.9,-68.0 +DH050,90.0,151.8,-73.2 +DH050,120.0,150.6,-71.1 +DH050,150.0,157.8,-71.4 +DH050,180.0,156.0,-70.5 +DH050,210.0,150.1,-71.8 +DH050,240.0,154.8,-69.7 +DH050,243.0,152.6,-72.3 diff --git a/drillholes-demo/data_generator.py b/drillholes-demo/data_generator.py new file mode 100644 index 0000000..eae323d --- /dev/null +++ b/drillholes-demo/data_generator.py @@ -0,0 +1,130 @@ +""" +Generate synthetic Western Australia mineral exploration drillhole data. +Modeled on the Kaggle "mineral-exploration-drillholes-western-australia" structure. +Au-Cu porphyry prospect, ~50 holes in a 7x7 grid pattern. +Run once: python data_generator.py +""" + +import numpy as np +import pandas as pd +import pathlib + +DATA_PATH = pathlib.Path(__file__).parent / "data" +DATA_PATH.mkdir(exist_ok=True) + +rng = np.random.default_rng(42) + +EAST_ORIGIN = 350000.0 +NORTH_ORIGIN = 7200000.0 +SPACING = 100.0 +N_HOLES = 50 + +# --- COLLAR --- + +hole_ids = [f"DH{i:03d}" for i in range(1, N_HOLES + 1)] + +cols = 7 +east_base = [EAST_ORIGIN + (i % cols) * SPACING for i in range(N_HOLES)] +north_base = [NORTH_ORIGIN + (i // cols) * SPACING for i in range(N_HOLES)] + +collar = pd.DataFrame({ + "HOLEID": hole_ids, + "EAST": np.round(np.array(east_base) + rng.uniform(-15, 15, N_HOLES), 1), + "NORTH": np.round(np.array(north_base) + rng.uniform(-15, 15, N_HOLES), 1), + "ELEV": np.round(400 + rng.uniform(-10, 10, N_HOLES), 1), + "TOTDEPTH": np.round(rng.uniform(150, 450, N_HOLES), 0), + "AZ": np.round(rng.uniform(0, 360, N_HOLES), 1), + "DIP": np.round(rng.uniform(-90, -60, N_HOLES), 1), +}) + +collar.to_csv(DATA_PATH / "collar.csv", index=False) +print(f"collar.csv: {len(collar)} holes") + +# --- SURVEY --- + +survey_rows = [] +for _, hole in collar.iterrows(): + depths = np.arange(0, hole["TOTDEPTH"] + 30, 30) + for d in depths: + d = min(d, hole["TOTDEPTH"]) + survey_rows.append({ + "HOLEID": hole["HOLEID"], + "DEPTH": round(float(d), 1), + "AZ": round(float(hole["AZ"]) + float(rng.uniform(-5, 5)), 1), + "DIP": round(float(hole["DIP"]) + float(rng.uniform(-3, 3)), 1), + }) + +survey = pd.DataFrame(survey_rows).drop_duplicates(["HOLEID", "DEPTH"]) +survey.to_csv(DATA_PATH / "survey.csv", index=False) +print(f"survey.csv: {len(survey)} stations") + +# --- LITHOLOGY --- + +LITH_SEQUENCE = [ + ("Alluvium", 0, 20), + ("Weathered Granite", 20, 60), + ("Granite", 60, 120), + ("Quartz Diorite", 120, 180), + ("Mineralized Porphyry",180, 280), + ("Fresh Granite", 280, 9999), +] + +lith_rows = [] +for _, hole in collar.iterrows(): + depth = 0.0 + for lith, base_from, base_to in LITH_SEQUENCE: + jitter = float(rng.uniform(-15, 15)) + actual_from = round(depth, 1) + actual_to = round(min(float(hole["TOTDEPTH"]), base_to + jitter), 1) + if actual_from >= float(hole["TOTDEPTH"]): + break + actual_to = max(actual_to, actual_from + 2.0) + actual_to = min(actual_to, float(hole["TOTDEPTH"])) + lith_rows.append({ + "HOLEID": hole["HOLEID"], + "FROM": actual_from, + "TO": actual_to, + "LITHOLOGY": lith, + }) + depth = actual_to + if depth >= float(hole["TOTDEPTH"]): + break + +lith = pd.DataFrame(lith_rows) +lith.to_csv(DATA_PATH / "lith.csv", index=False) +print(f"lith.csv: {len(lith)} intervals") + +# --- ASSAY (2m composites) --- + +assay_rows = [] +for _, hole in collar.iterrows(): + depth = 0.0 + tot = float(hole["TOTDEPTH"]) + while depth < tot: + to = min(depth + 2.0, tot) + mid = (depth + to) / 2.0 + in_zone = 80 <= mid <= 250 + + if in_zone: + au = float(max(0, rng.lognormal(mean=0.8, sigma=1.2))) + cu = float(max(0, rng.lognormal(mean=-1.5, sigma=0.8))) + ag = au * float(rng.uniform(1.5, 3.0)) + else: + au = float(max(0, rng.lognormal(mean=-2.5, sigma=0.6))) + cu = float(max(0, rng.lognormal(mean=-4.0, sigma=0.5))) + ag = au * float(rng.uniform(0.5, 1.5)) + + assay_rows.append({ + "HOLEID": hole["HOLEID"], + "FROM": round(depth, 1), + "TO": round(to, 1), + "Au_ppm": round(au, 3), + "Cu_pct": round(cu, 4), + "Ag_ppm": round(ag, 3), + }) + depth = to + +assay = pd.DataFrame(assay_rows) +assay.to_csv(DATA_PATH / "assay.csv", index=False) +print(f"assay.csv: {len(assay)} intervals") +print("Done — all CSVs written to data/") diff --git a/drillholes-demo/pages/__init__.py b/drillholes-demo/pages/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/drillholes-demo/pages/block_model.py b/drillholes-demo/pages/block_model.py new file mode 100644 index 0000000..2b3445b --- /dev/null +++ b/drillholes-demo/pages/block_model.py @@ -0,0 +1,108 @@ +from dash import dcc, html +import dash_ag_grid as dag +import dash_mantine_components as dmc +from dash_iconify import DashIconify + +from utils import load_data + +COLUMN_DEFS = [ + { + "field": "HOLEID", + "headerName": "Hole ID", + "pinned": "left", + "lockPinned": True, + "filter": "agTextColumnFilter", + "minWidth": 110, + }, + {"field": "FROM", "headerName": "From (m)", "filter": "agNumberColumnFilter", "minWidth": 110}, + {"field": "TO", "headerName": "To (m)", "filter": "agNumberColumnFilter", "minWidth": 110}, + { + "field": "Au_ppm", + "headerName": "Au (g/t)", + "filter": "agNumberColumnFilter", + "minWidth": 110, + "cellStyle": { + "styleConditions": [ + {"condition": "params.value >= 1.0", "style": {"backgroundColor": "#c6efce", "color": "#276221", "fontWeight": "600"}}, + {"condition": "params.value >= 0.3 && params.value < 1.0", "style": {"backgroundColor": "#ffeb9c", "color": "#9c6500"}}, + ], + "defaultStyle": {"backgroundColor": "white", "color": "#495057"}, + }, + }, + { + "field": "Cu_pct", + "headerName": "Cu (%)", + "filter": "agNumberColumnFilter", + "minWidth": 110, + "cellStyle": { + "styleConditions": [ + {"condition": "params.value >= 0.5", "style": {"backgroundColor": "#c6efce", "color": "#276221", "fontWeight": "600"}}, + {"condition": "params.value >= 0.2 && params.value < 0.5", "style": {"backgroundColor": "#ffeb9c", "color": "#9c6500"}}, + ], + "defaultStyle": {"backgroundColor": "white", "color": "#495057"}, + }, + }, + { + "field": "Ag_ppm", + "headerName": "Ag (ppm)", + "filter": "agNumberColumnFilter", + "minWidth": 110, + "cellStyle": { + "styleConditions": [ + {"condition": "params.value >= 5.0", "style": {"backgroundColor": "#c6efce", "color": "#276221", "fontWeight": "600"}}, + {"condition": "params.value >= 1.0 && params.value < 5.0", "style": {"backgroundColor": "#ffeb9c", "color": "#9c6500"}}, + ], + "defaultStyle": {"backgroundColor": "white", "color": "#495057"}, + }, + }, +] + + +def layout(): + _, assay, _, _ = load_data() + + return dmc.Stack([ + dmc.Group([ + DashIconify(icon="tabler:cube", width=22, color="#868e96"), + dmc.Title("Block Model", order=3, c="dark"), + ], gap="sm"), + + dmc.Group([ + dcc.Input( + id="bm-quick-filter", + placeholder="Search all columns...", + debounce=True, + style={"width": 280, "padding": "6px 10px", "border": "1px solid #dee2e6", "borderRadius": 6, "fontSize": 13}, + ), + dmc.Text(id="bm-row-count", size="sm", c="dimmed"), + dmc.Button( + "Export CSV", + id="bm-export-btn", + leftSection=DashIconify(icon="tabler:download", width=16), + variant="light", + color="gray", + size="sm", + ), + ], gap="sm", align="center"), + + dag.AgGrid( + id="bm-grid", + columnDefs=COLUMN_DEFS, + rowData=assay.to_dict("records"), + columnSize="autoSize", + dashGridOptions={ + "theme": "themeAlpine", + "pagination": True, + "paginationPageSize": 20, + "paginationPageSizeSelector": [20, 50, 100], + }, + defaultColDef={ + "filter": True, + "floatingFilter": True, + "sortable": True, + "resizable": True, + "minWidth": 100, + }, + style={"height": "600px"}, + ), + ], gap="md", p="md") diff --git a/drillholes-demo/pages/comparison.py b/drillholes-demo/pages/comparison.py new file mode 100644 index 0000000..a4d6ed3 --- /dev/null +++ b/drillholes-demo/pages/comparison.py @@ -0,0 +1,202 @@ +""" +Comparison page — compare Au/Cu/Ag grade profiles across multiple holes +side by side, with shared depth axis. +""" + +import plotly.graph_objects as go +from plotly.subplots import make_subplots +from dash import html, dcc +import dash_mantine_components as dmc +import plotly.express as px + +from utils import load_data, CHART_LAYOUT, GRADE_COLORS, GRADE_LABELS + + +DEFAULT_HOLES = ["DH001", "DH002", "DH003", "DH004", "DH005"] +DEFAULT_GRADE = "Au_ppm" +SUBPLOT_COLORS = px.colors.qualitative.Set2 + + +def build_comparison_figure(selected_holes, grade_col): + collar, assay, lith, _ = load_data() + + if not selected_holes: + fig = go.Figure() + fig.update_layout(**{**CHART_LAYOUT, "height": 500, + "title_text": "Select at least one hole"}) + return fig + + n = len(selected_holes) + grade_label = GRADE_LABELS.get(grade_col, grade_col) + + fig = make_subplots( + rows=1, cols=n, + shared_yaxes=True, + subplot_titles=selected_holes, + horizontal_spacing=max(0.01, 0.04 - 0.003 * n), + ) + for ann in fig.layout.annotations: + ann.font = dict(size=10, color="#495057") + + for i, hole_id in enumerate(selected_holes, start=1): + hole_assay = assay[assay["HOLEID"] == hole_id].sort_values("FROM") + if hole_assay.empty: + continue + + mid_depths = (hole_assay["FROM"] + hole_assay["TO"]) / 2 + widths = hole_assay["TO"] - hole_assay["FROM"] + color = SUBPLOT_COLORS[(i - 1) % len(SUBPLOT_COLORS)] + + grade_max = float(hole_assay[grade_col].quantile(0.98)) or 1.0 + + fig.add_trace(go.Bar( + x=hole_assay[grade_col], + y=mid_depths, + orientation="h", + width=widths, + marker=dict( + color=hole_assay[grade_col], + colorscale=[ + [0, "#f0f0f0"], + [0.4, color], + [1.0, "#212529"], + ], + cmin=0, cmax=grade_max, + showscale=False, + line_width=0, + ), + name=hole_id, + showlegend=False, + hovertemplate=f"{hole_id}
Depth: %{{y:.1f}} m
{grade_label}: %{{x:.4g}}", + ), row=1, col=i) + + # Best intercept annotation + peak_idx = hole_assay[grade_col].idxmax() + peak_row = hole_assay.loc[peak_idx] + fig.add_annotation( + x=float(peak_row[grade_col]), + y=float((peak_row["FROM"] + peak_row["TO"]) / 2), + xref=f"x{i}" if i > 1 else "x", + yref="y", + text=f" {peak_row[grade_col]:.2g} ←peak", + showarrow=False, + font=dict(size=8, color="#d48806"), + xanchor="left", + ) + + fig.update_xaxes( + title_text=grade_label, + title_font=dict(color="#495057", size=10), + showgrid=True, gridcolor="#e9ecef", + tickfont=dict(color="#6c757d", size=8), + zeroline=True, zerolinecolor="#ced4da", + row=1, col=i, + ) + + fig.update_yaxes( + autorange="reversed", + title_text="Depth (m ↓)", + showgrid=True, gridcolor="#e9ecef", + tickfont=dict(color="#6c757d"), + title_font=dict(color="#495057"), + row=1, col=1, + ) + fig.update_layout(**{ + **CHART_LAYOUT, + "height": 650, + "margin": dict(l=60, r=20, t=45, b=50), + "bargap": 0, "bargroupgap": 0, + "hoverlabel": dict(bgcolor="#ffffff", font_color="#212529", bordercolor="#dee2e6"), + "title_text": f"{grade_label} Grade Profile Comparison", + "title_font": dict(color="#212529", size=13), + }) + return fig + + +def layout(): + collar, assay, _, _ = load_data() + all_hole_ids = sorted(collar["HOLEID"].tolist()) + + default_total_m = int(collar.loc[collar["HOLEID"].isin(DEFAULT_HOLES), "TOTDEPTH"].sum()) + + badge_strip = dmc.Group(gap="sm", id="comparison-badges", children=[ + dmc.Badge(f"Holes selected: {len(DEFAULT_HOLES)}", color="orange", variant="light", + id="badge-hole-count", size="lg"), + dmc.Badge(f"Combined meters: {default_total_m:,} m", color="gray", variant="light", + id="badge-total-meters", size="lg"), + dmc.Badge(f"Grade: {GRADE_LABELS[DEFAULT_GRADE]}", color="orange", variant="filled", + id="badge-grade", size="lg"), + ]) + + return dmc.Stack([ + # Header + badge strip + dmc.Group([ + html.Div([ + html.P("Grade Profile Comparison", className="section-title"), + html.P( + "Side-by-side grade profiles across selected holes on a shared depth axis.", + className="section-description", + ), + ], style={"flex": 1}), + badge_strip, + ], justify="space-between", align="center", wrap="nowrap"), + + dmc.Grid(gutter="md", children=[ + # Controls panel + dmc.GridCol( + dmc.Paper([ + html.P("Grade Type", className="section-title"), + html.P( + "Au = gold (g/t). Cu = copper (%). Ag = silver (ppm).", + className="section-description", + ), + dmc.SegmentedControl( + id="grade-selector", + data=[ + {"value": "Au_ppm", "label": "Au (g/t)"}, + {"value": "Cu_pct", "label": "Cu (%)"}, + {"value": "Ag_ppm", "label": "Ag (ppm)"}, + ], + value=DEFAULT_GRADE, + color="orange", + size="xs", + fullWidth=True, + mb="md", + ), + html.P("Select Holes (up to 10)", className="section-title"), + dmc.CheckboxGroup( + id="hole-checklist", + value=DEFAULT_HOLES, + children=dmc.Stack([ + dmc.Checkbox( + label=h, value=h, + styles={"label": {"color": "#495057", "fontSize": "0.8rem"}}, + ) + for h in all_hole_ids[:20] + ], gap=6), + ), + ], p="md", radius="md", withBorder=True, className="chart-paper", + style={"maxHeight": "700px", "overflowY": "auto"}), + span={"base": 12, "md": 3}, + ), + + # Comparison chart + dmc.GridCol( + dmc.Paper([ + html.P("Grade Profiles", className="section-title"), + html.P( + "Each panel is one hole's grade profile vs. downhole depth on a shared Y-axis. " + "Peak-grade interval is annotated.", + className="section-description", + ), + dcc.Graph( + id="comparison-chart", + figure=build_comparison_figure(DEFAULT_HOLES, DEFAULT_GRADE), + config={"displayModeBar": True, "scrollZoom": True}, + style={"height": "650px"}, + ), + ], p="md", radius="md", withBorder=True, className="chart-paper"), + span={"base": 12, "md": 9}, + ), + ]), + ], gap="md") diff --git a/drillholes-demo/pages/cross_section.py b/drillholes-demo/pages/cross_section.py new file mode 100644 index 0000000..4b6ef5a --- /dev/null +++ b/drillholes-demo/pages/cross_section.py @@ -0,0 +1,543 @@ +""" +Cross-Section page — showcases Plotly.js multi-axis shapes. + +Each geological formation contact is a line shape whose left endpoint +anchors to one subplot x-axis and the right endpoint anchors to a DIFFERENT +subplot x-axis, via the new xref array syntax: xref=["x", "x2"]. +When the user pans or zooms col 1, only the left endpoint pixel moves; +the right endpoint stays locked to col 2's coordinate system — correct +geological cross-section behaviour. +""" + +import plotly.graph_objects as go +from plotly.subplots import make_subplots +from dash import html, dcc +import dash_mantine_components as dmc +from dash_iconify import DashIconify +import dash_tour_component as dtc +import numpy as np + +from utils import load_data, CHART_LAYOUT, LITH_COLORS, compute_trace_easting_elevation, kpi_card +from components.overview_widgets import collar_map, summary_table, depth_histogram + +# Formation contacts: approximate elevations (m RL) at deposit centre +FORMATION_CONTACTS = [ + {"name": "Alluvium / Weathered Granite", "elev": 382, "color": "#8B6914", "dip_m_per_m": 0.04}, + {"name": "Weathered Granite / Granite", "elev": 350, "color": "#7B5C2A", "dip_m_per_m": 0.06}, + {"name": "Granite / Quartz Diorite", "elev": 290, "color": "#6B4E2A", "dip_m_per_m": 0.08}, + {"name": "Porphyry Top (mineralised)", "elev": 220, "color": "#A0522D", "dip_m_per_m": 0.10}, +] + +AXIS_STYLE = dict( + showgrid=True, gridcolor="#e9ecef", + tickfont=dict(color="#6c757d"), + title_font=dict(color="#495057"), + zeroline=False, +) + +CS_TOUR_STEPS = [ + { + "selector": "#cs-chart-paper", + "content": "Welcome to Cross-Section View! Step through to discover all the interactive features on this page.", + "position": "bottom", + }, + { + "selector": "#cross-section-chart", + "content": "Hover anywhere on the chart — a gold cursor line tracks your elevation across all three panels simultaneously. Click once to pin a start elevation, then click again to measure the vertical distance between any two contacts.", + "position": "right", + }, + { + "selector": "#cross-section-chart", + "content": "Drag the Elevation (Y) axis — hover the tick labels on the left edge, then drag up or down to pan the elevation range. Scroll over the axis to zoom into any elevation band. Double-click anywhere to reset.", + "position": "right", + }, + { + "selector": "#cross-section-chart", + "content": "Each of the three panels has its own independent X-axis. Scroll or drag within Section A to zoom its grade range — Sections B and C stay exactly where they are.", + "position": "top", + }, + { + "selector": "#cs-formation-legend", + "content": "These dotted formation contact lines span all three panels simultaneously. Each endpoint is anchored to its own panel axis — zoom Section A and only its segment moves, keeping the geology correct.", + "position": "bottom", + }, +] + + +def _build_figure(collar, survey, orientation="EW"): + """ + Build the cross-section figure with multi-axis formation shapes. + orientation: "EW" groups holes by northing thirds; "NS" by easting thirds. + """ + if orientation == "EW": + sort_col, split_col = "NORTH", "EAST" + x_title = "Easting (m)" + else: + sort_col, split_col = "EAST", "NORTH" + x_title = "Northing (m)" + + sorted_collar = collar.sort_values(sort_col).reset_index(drop=True) + n = len(sorted_collar) + thirds = [ + sorted_collar.iloc[: n // 3], + sorted_collar.iloc[n // 3: 2 * n // 3], + sorted_collar.iloc[2 * n // 3:], + ] + section_labels = ["Section A (South)" if orientation == "EW" else "Section A (West)", + "Section B (Central)", + "Section C (North)" if orientation == "EW" else "Section C (East)"] + + fig = make_subplots( + rows=1, cols=3, + shared_yaxes=False, + column_widths=[0.33, 0.34, 0.33], + subplot_titles=section_labels, + horizontal_spacing=0.04, + ) + + for ann in fig.layout.annotations: + ann.font = dict(size=11, color="#495057") + + colors = ["#1971c2", "#2f9e44", "#e67700", "#c92a2a", "#862e9c", + "#0c8599", "#1864ab", "#5c940d", "#e67700", "#a61e4d"] + + for col_idx, (section_holes, _) in enumerate(zip(thirds, section_labels), start=1): + for hi, (_, hole) in enumerate(section_holes.iterrows()): + east_list, elev_list = compute_trace_easting_elevation( + hole["HOLEID"], collar, survey + ) + x_vals = east_list if orientation == "EW" else [hole["NORTH"]] * len(east_list) + + fig.add_trace(go.Scatter( + x=x_vals, + y=elev_list, + mode="lines", + line=dict(color=colors[hi % len(colors)], width=2), + name=hole["HOLEID"], + hovertemplate=( + f"{hole['HOLEID']}
" + f"{x_title[:-4]}: %{{x:.0f}} m
" + "Elevation RL: %{y:.0f} m" + ), + legendgroup=hole["HOLEID"], + showlegend=(col_idx == 1), + ), row=1, col=col_idx) + + x0 = east_list[0] if orientation == "EW" else hole["NORTH"] + fig.add_trace(go.Scatter( + x=[x0], + y=[elev_list[0]], + mode="markers+text", + marker=dict(color=colors[hi % len(colors)], size=7, symbol="triangle-down"), + text=[hole["HOLEID"]] if hi == 0 else [], + textposition="top center", + textfont=dict(size=7, color="#6c757d"), + showlegend=False, + hoverinfo="skip", + legendgroup=hole["HOLEID"], + ), row=1, col=col_idx) + + # ─── Multi-axis formation contact shapes ───────────────────────────────── + def section_x_range(section_holes): + xs = section_holes["EAST"].tolist() if orientation == "EW" else section_holes["NORTH"].tolist() + if not xs: + return 350000, 350600 + return min(xs) - 20, max(xs) + 20 + + x_ranges = [section_x_range(s) for s in thirds] + mids = [(lo + hi) / 2 for lo, hi in x_ranges] + + # ─── Sentinel traces for plot-wide hover ───────────────────────────────── + # Invisible scatter points spanning the elevation range ensure hoverData + # fires anywhere in the chart, not just near actual hole trace data. + elev_sentinel = list(np.linspace(50, 450, 150)) + for col_idx, x_range in enumerate(x_ranges, start=1): + x_mid = (x_range[0] + x_range[1]) / 2 + fig.add_trace(go.Scatter( + x=[x_mid] * len(elev_sentinel), + y=elev_sentinel, + mode="markers", + marker=dict(opacity=0, size=3), + hoverinfo="skip", + showlegend=False, + ), row=1, col=col_idx) + + # ─── Elevation cursor + measure shapes (one per panel) ──────────────────── + # Each shape anchored to its own yref so they align correctly even when + # panels are zoomed independently. + for cidx, (xref, yref, x_range) in enumerate( + zip(["x", "x2", "x3"], ["y", "y2", "y3"], x_ranges), start=1 + ): + fig.add_shape( + type="line", + x0=x_range[0], x1=x_range[1], + y0=-1000, y1=-1000, + xref=xref, yref=yref, + line=dict(color="#e8a020", width=1.5, dash="dash"), + name=f"elev-cursor-{cidx}", + visible=False, + ) + fig.add_shape( + type="rect", + x0=x_range[0], x1=x_range[1], + y0=0, y1=0, + xref=xref, yref=yref, + fillcolor="rgba(232,160,32,0.12)", + line=dict(color="#e8a020", width=1), + name=f"measure-span-{cidx}", + visible=False, + ) + + for contact in FORMATION_CONTACTS: + elev_base = contact["elev"] + dip = contact["dip_m_per_m"] + color = contact["color"] + + # Elevation at each panel's (lo, hi) x-edge, computed from the dip slope + ys = [ + (elev_base + dip * (x_ranges[i][0] - mids[i]), + elev_base + dip * (x_ranges[i][1] - mids[i])) + for i in range(3) + ] + + # Single multi-axis path traversing both panels and the gaps between them. + # Each coordinate in the path maps to the matching xref entry. + fig.add_shape( + type="path", + path=( + f"M {x_ranges[0][0]} {ys[0][0]} " + f"L {x_ranges[0][1]} {ys[0][1]} " + f"L {x_ranges[1][0]} {ys[1][0]} " + f"L {x_ranges[1][1]} {ys[1][1]} " + f"L {x_ranges[2][0]} {ys[2][0]} " + f"L {x_ranges[2][1]} {ys[2][1]}" + ), + xref=["x", "x", "x2", "x2", "x3", "x3"], + yref=["y", "y", "y2", "y2", "y3", "y3"], + line=dict(color=color, width=1.5, dash="dot"), + layer="below", + ) + + # Label at right edge of col3, anchored to panel 3's own y-axis. + x_col3_right = x_ranges[2][1] + elev_label = ys[2][1] + fig.add_annotation( + x=x_col3_right, + y=elev_label, + xref="x3", yref="y3", + text=contact["name"], + showarrow=False, + xanchor="left", + font=dict(size=9, color=color), + bgcolor="rgba(255,255,255,0.85)", + ) + + # ─── Spanning Mineralised Porphyry Zone rect ───────────────────────────── + porphyry_top = 220 + porphyry_bottom = 90 + + fig.add_shape( + type="rect", + xref=["x", "x3"], + yref=["y", "y3"], + x0=x_ranges[0][0], y0=porphyry_bottom, + x1=x_ranges[2][1], y1=porphyry_top, + fillcolor="rgba(232, 160, 32, 0.10)", + line=dict(color="#e8a020", width=1, dash="dash"), + layer="below", + label=dict( + text="Mineralised Porphyry Zone", + textposition="top left", + font=dict(size=10, color="#d48806", family="Inter, sans-serif"), + padding=6, + ), + ) + + # ─── Layout ────────────────────────────────────────────────────────────── + fig.update_layout(**{ + **CHART_LAYOUT, + "height": 600, + "margin": dict(l=60, r=140, t=50, b=50), + "hovermode": "closest", + "legend": dict( + bgcolor="#ffffff", + bordercolor="#dee2e6", + font=dict(color="#495057", size=9), + orientation="v", + x=1.01, y=1, + ), + "hoverlabel": dict(bgcolor="#ffffff", font_color="#212529", bordercolor="#dee2e6"), + }) + + for col_idx in range(1, 4): + fig.update_yaxes( + title_text="Elevation RL (m)" if col_idx == 1 else None, + showgrid=True, gridcolor="#e9ecef", + tickfont=dict(color="#6c757d"), + title_font=dict(color="#495057"), + zeroline=False, + range=[150, 450], + row=1, col=col_idx, + ) + fig.update_xaxes( + title_text=x_title, + showgrid=True, gridcolor="#e9ecef", + tickfont=dict(color="#6c757d"), + title_font=dict(color="#495057"), + zeroline=False, + row=1, col=col_idx, + ) + + return fig + + +def layout(): + collar, assay, lith, survey = load_data() + + total_holes = len(collar) + total_meters = int(collar["TOTDEPTH"].sum()) + east_range = collar["EAST"].max() - collar["EAST"].min() + north_range = collar["NORTH"].max() - collar["NORTH"].min() + area_km2 = (east_range * north_range) / 1e6 + + formation_legend = dmc.Group( + id="cs-formation-legend", + gap="md", + children=[ + dmc.Group(gap="xs", children=[ + html.Span(style={ + "display": "inline-block", + "width": "24px", "height": "3px", + "borderTop": f"2px dotted {c['color']}", + "verticalAlign": "middle", + }), + dmc.Text(c["name"], size="xs", c="dimmed"), + ]) + for c in FORMATION_CONTACTS + ], + ) + + feature_chips = dmc.Group(gap="xs", mt="xs", mb="xs", children=[ + dmc.Tooltip( + label="Hover the Elevation (Y) axis tick labels and drag up/down to pan · scroll over the axis to zoom · double-click anywhere to reset", + multiline=True, w=300, withArrow=True, position="bottom", + children=dmc.Badge("↕ Drag Y-Axis", color="blue", variant="light", size="sm", + style={"cursor": "help"}), + ), + ]) + + things_to_try = dmc.Paper([ + dmc.Group(gap="xs", mb="sm", children=[ + DashIconify(icon="tabler:bulb", width=16, color="#e8a020"), + dmc.Text("Things to Try", fw=600, size="sm", c="orange"), + ]), + dmc.Stack(gap="sm", children=[ + dmc.Group(gap="sm", wrap="nowrap", align="flex-start", children=[ + dmc.ThemeIcon( + DashIconify(icon="tabler:arrows-up-down", width=14), + size="sm", variant="light", color="blue", radius="xl", + style={"flexShrink": 0}, + ), + html.Div([ + dmc.Text("Drag the Elevation (Y) axis", fw=600, size="xs"), + dmc.Text( + "Hover the tick labels on the left edge and drag up or down to pan. " + "Scroll over the axis to zoom into any elevation band.", + size="xs", c="dimmed", + ), + ]), + ]), + dmc.Group(gap="sm", wrap="nowrap", align="flex-start", children=[ + dmc.ThemeIcon( + DashIconify(icon="tabler:zoom", width=14), + size="sm", variant="light", color="teal", radius="xl", + style={"flexShrink": 0}, + ), + html.Div([ + dmc.Text("Zoom any single panel independently", fw=600, size="xs"), + dmc.Text( + "Each section panel has its own X-axis. Scroll or drag within Section A — " + "Sections B and C are completely unaffected.", + size="xs", c="dimmed", + ), + ]), + ]), + dmc.Group(gap="sm", wrap="nowrap", align="flex-start", children=[ + dmc.ThemeIcon( + DashIconify(icon="tabler:line-dashed", width=14), + size="sm", variant="light", color="orange", radius="xl", + style={"flexShrink": 0}, + ), + html.Div([ + dmc.Text("Watch the formation contacts span all panels", fw=600, size="xs"), + dmc.Text( + "Dotted lines and the Porphyry Zone rect are anchored to each panel's own axis " + "via xref/yref arrays. Zoom Section A — only its segment moves.", + size="xs", c="dimmed", + ), + ]), + ]), + dmc.Group(gap="sm", wrap="nowrap", align="flex-start", children=[ + dmc.ThemeIcon( + DashIconify(icon="tabler:rotate-2", width=14), + size="sm", variant="light", color="gray", radius="xl", + style={"flexShrink": 0}, + ), + html.Div([ + dmc.Text("Double-click to reset view", fw=600, size="xs"), + dmc.Text( + "Double-click anywhere on the chart to reset all axes to their default range.", + size="xs", c="dimmed", + ), + ]), + ]), + dmc.Group(gap="sm", wrap="nowrap", align="flex-start", children=[ + dmc.ThemeIcon( + DashIconify(icon="tabler:crosshair", width=14), + size="sm", variant="light", color="grape", radius="xl", + style={"flexShrink": 0}, + ), + html.Div([ + dmc.Text("Hover to track elevation · click to pin", fw=600, size="xs"), + dmc.Text( + "A gold cursor line tracks your elevation across all three panels simultaneously. " + "Click anywhere to pin the marker at that elevation.", + size="xs", c="dimmed", + ), + ]), + ]), + ]), + ], p="md", radius="md", withBorder=True, className="tip-paper") + + return [ + dtc.DashTour( + id="cs-tour", + isOpen=False, + accentColor="#e8a020", + rounded=8, + showNumber=True, + steps=CS_TOUR_STEPS, + ), + + dmc.Stack([ + things_to_try, + + dmc.SimpleGrid( + cols={"base": 2, "md": 4}, + spacing="md", + children=[ + kpi_card("Total Holes", str(total_holes), "drillholes in program", icon="tabler:drone"), + kpi_card("Meters Drilled", f"{total_meters:,} m", "cumulative penetration", icon="tabler:ruler-measure"), + kpi_card("Prospect Area", f"{area_km2:.2f} km²", "surface footprint", icon="tabler:map-pin"), + kpi_card("Section Panels", "3", "South · Central · North", icon="tabler:chart-grid-dots"), + ], + ), + + # Cross-section chart card + dmc.Paper([ + dmc.Group([ + html.Div([ + html.P("Cross-Section View", className="section-title"), + html.P( + "Three geographic panels. Drag the Elevation axis to pan · " + "scroll to zoom · hover a panel's X-axis to zoom grade independently.", + className="section-description", + ), + ], style={"flex": 1}), + html.Div( + id="cs-orientation-group", + children=dmc.Group(gap="xs", align="center", children=[ + dmc.Button( + dmc.Group([DashIconify(icon="tabler:help", width=13), "Tour"], + gap=4, align="center"), + id="cs-tour-btn", + variant="subtle", + color="gray", + size="xs", + ), + dmc.SegmentedControl( + id="section-orientation", + data=[ + {"value": "EW", "label": "E–W Sections"}, + {"value": "NS", "label": "N–S Sections"}, + ], + value="EW", + color="orange", + size="xs", + ), + ]), + ), + ], justify="space-between", align="flex-start", wrap="nowrap", mb="xs"), + + # Feature interaction chips + feature_chips, + + formation_legend, + + # Chart with Y-axis hint overlay + html.Div( + style={"position": "relative"}, + children=[ + html.Div( + id="cs-yaxis-hint", + className="y-axis-hint", + children=[ + DashIconify(icon="tabler:arrows-up-down", width=10, color="#adb5bd"), + " drag · scroll to zoom", + ], + ), + dcc.Graph( + id="cross-section-chart", + figure=_build_figure(collar, survey, "EW"), + config={"displayModeBar": True, "scrollZoom": True}, + style={"height": "600px", "marginTop": "8px"}, + ), + ], + ), + ], id="cs-chart-paper", p="md", radius="md", withBorder=True, className="chart-paper"), + + dmc.Grid(gutter="md", children=[ + dmc.GridCol( + dmc.Paper([ + html.P("Collar Plan Map", className="section-title"), + html.P( + "Plan view of drillhole collar positions. Marker colour = total depth drilled. " + "Equal-aspect projection preserves true spatial relationships.", + className="section-description", + ), + dcc.Graph( + figure=collar_map(collar), + config={"displayModeBar": False, "scrollZoom": True}, + ), + ], p="md", radius="md", withBorder=True, className="chart-paper"), + span={"base": 12, "md": 8}, + ), + dmc.GridCol( + dmc.Paper([ + html.P("Hole Summary", className="section-title"), + html.P( + "AZ = azimuth from North. DIP = downhole inclination (negative = sub-vertical).", + className="section-description", + ), + html.Div(summary_table(collar), className="table-scroll"), + dmc.Text( + f"Showing 20 of {total_holes} holes · scroll for more", + size="xs", c="dimmed", mt="xs", + ), + ], p="md", radius="md", withBorder=True, className="chart-paper"), + span={"base": 12, "md": 4}, + ), + ]), + + # Depth distribution + dmc.Paper([ + html.P("Hole Depth Distribution", className="section-title"), + html.P( + "Most holes target the 200–350 m depth range where the Au-Cu mineralized porphyry sits. " + "Shallower holes test the weathered zone; deeper holes test the fresh granite footwall.", + className="section-description", + ), + dcc.Graph(figure=depth_histogram(collar), config={"displayModeBar": False}), + ], p="md", radius="md", withBorder=True, className="chart-paper"), + ], gap="md"), + ] diff --git a/drillholes-demo/pages/downhole_logs.py b/drillholes-demo/pages/downhole_logs.py new file mode 100644 index 0000000..7148832 --- /dev/null +++ b/drillholes-demo/pages/downhole_logs.py @@ -0,0 +1,430 @@ +""" +Downhole Logs page — showcases Plotly.js plot-wide hover/click events. + +Two new-feature demonstrations: +1. Depth cursor: a horizontal gold line that tracks the mouse across ALL + four strip-log panels simultaneously, even over empty areas between + data points (plot-wide hover events via transparent sentinel traces + + clientside callback for zero-latency response). + +2. Click-to-measure: clicking anywhere on the plot (plot-wide click events) + records a start depth, then a second click computes the interval + thickness and draws a shaded span across all panels. +""" + +import plotly.graph_objects as go +from plotly.subplots import make_subplots +from dash import html, dcc +import dash_mantine_components as dmc +from dash_iconify import DashIconify +import dash_tour_component as dtc +import numpy as np +import pandas as pd + +from utils import load_data, CHART_LAYOUT, LITH_COLORS, LITH_ORDER + +DL_TOUR_STEPS = [ + { + "selector": "#strip-log-chart-paper", + "content": "Welcome to Downhole Logs! Step through to discover all the interactive features on this page.", + "position": "bottom", + }, + { + "selector": "#strip-log-chart", + "content": "Hover anywhere on the chart — even over lithology blocks and empty areas — to see a gold dashed cursor track depth across all four panels simultaneously.", + "position": "right", + }, + { + "selector": "#strip-log-chart", + "content": "Click once anywhere to mark a start depth (a gold line snaps to that position). Then click a second time to measure the interval — a shaded span appears across all panels and the exact thickness is shown.", + "position": "right", + }, + { + "selector": "#hole-selector", + "content": "Use this dropdown to switch between drillholes. All four panels update together.", + "position": "bottom", + }, +] + + +def _strip_log_figure(hole_id: str, collar, assay, lith, survey) -> go.Figure: + hole_assay = assay[assay["HOLEID"] == hole_id].sort_values("FROM") + hole_lith = lith[lith["HOLEID"] == hole_id].sort_values("FROM") + hole_survey = survey[survey["HOLEID"] == hole_id].sort_values("DEPTH") + hole_collar = collar[collar["HOLEID"] == hole_id].iloc[0] + + max_depth = float(hole_collar["TOTDEPTH"]) + depth_range = list(np.arange(0, max_depth + 5, 5)) + + fig = make_subplots( + rows=1, cols=4, + shared_yaxes=True, + column_widths=[0.14, 0.30, 0.30, 0.26], + subplot_titles=["Lithology", "Au Grade (g/t)", "Cu Grade (%)", "Hole Deviation (°)"], + horizontal_spacing=0.03, + ) + + for ann in fig.layout.annotations: + ann.font = dict(size=11, color="#495057") + + # ── Col 1: Lithology rectangles ───────────────────────────────────────── + for _, row in hole_lith.iterrows(): + color = LITH_COLORS.get(row["LITHOLOGY"], "#aaa") + fig.add_shape( + type="rect", + x0=0, x1=1, + y0=row["FROM"], y1=row["TO"], + xref="x", yref="y", + fillcolor=color, + line_width=0, + layer="below", + ) + mid = (row["FROM"] + row["TO"]) / 2 + if row["TO"] - row["FROM"] >= 8: + fig.add_annotation( + x=0.5, y=mid, + text=row["LITHOLOGY"], + xref="x", yref="y", + showarrow=False, + font=dict(size=8, color="#212529"), + bgcolor="rgba(255,255,255,0.75)", + borderpad=2, + ) + + # Invisible trace on col1 so axis is registered + fig.add_trace(go.Scatter( + x=[0.5] * len(depth_range), + y=depth_range, + mode="markers", + marker=dict(opacity=0, size=1), + hoverinfo="skip", + showlegend=False, + ), row=1, col=1) + + fig.update_xaxes( + showticklabels=False, showgrid=False, zeroline=False, + range=[0, 1], row=1, col=1, + ) + + # ── Col 2: Au grade bars ───────────────────────────────────────────────── + mid_depths = (hole_assay["FROM"] + hole_assay["TO"]) / 2 + widths = hole_assay["TO"] - hole_assay["FROM"] + + fig.add_trace(go.Bar( + x=hole_assay["Au_ppm"], + y=mid_depths, + orientation="h", + width=widths, + marker=dict( + color=hole_assay["Au_ppm"], + colorscale=[[0, "#f8f9fa"], [0.3, "#e8a020"], [1, "#ff6b35"]], + cmin=0, cmax=float(hole_assay["Au_ppm"].quantile(0.99)), + showscale=False, + line_width=0, + ), + hovertemplate="Depth: %{y:.1f} m
Au: %{x:.3f} g/t", + name="Au (g/t)", + showlegend=False, + ), row=1, col=2) + + # Sentinel trace for hover coverage on col2 + fig.add_trace(go.Scatter( + x=[0] * len(depth_range), y=depth_range, + mode="markers", marker=dict(opacity=0, size=3), + hoverinfo="skip", showlegend=False, + ), row=1, col=2) + + # ── Col 3: Cu grade bars ───────────────────────────────────────────────── + fig.add_trace(go.Bar( + x=hole_assay["Cu_pct"], + y=mid_depths, + orientation="h", + width=widths, + marker=dict( + color=hole_assay["Cu_pct"], + colorscale=[[0, "#f8f9fa"], [0.3, "#FF8C00"], [1, "#ff4444"]], + cmin=0, cmax=float(hole_assay["Cu_pct"].quantile(0.99)), + showscale=False, + line_width=0, + ), + hovertemplate="Depth: %{y:.1f} m
Cu: %{x:.4f} %", + name="Cu (%)", + showlegend=False, + ), row=1, col=3) + + fig.add_trace(go.Scatter( + x=[0] * len(depth_range), y=depth_range, + mode="markers", marker=dict(opacity=0, size=3), + hoverinfo="skip", showlegend=False, + ), row=1, col=3) + + # ── Col 4: Survey dip line ──────────────────────────────────────────────── + fig.add_trace(go.Scatter( + x=hole_survey["DIP"], + y=hole_survey["DEPTH"], + mode="lines+markers", + line=dict(color="#1971c2", width=2), + marker=dict(size=4, color="#1971c2"), + hovertemplate="Depth: %{y:.1f} m
Dip: %{x:.1f}° from vertical", + name="Dip (°)", + showlegend=False, + ), row=1, col=4) + + fig.add_trace(go.Scatter( + x=[hole_survey["DIP"].mean()] * len(depth_range), y=depth_range, + mode="markers", marker=dict(opacity=0, size=3), + hoverinfo="skip", showlegend=False, + ), row=1, col=4) + + # ── Depth cursor shape ────────────────────────────────────────────────── + # xref="paper" spans the full plot width across all 4 panels. + # Updated by a clientside callback on hoverData (plot-wide hover feature). + fig.add_shape( + type="line", + x0=0, x1=1, + y0=-10, y1=-10, + xref="paper", yref="y", + line=dict(color="#e8a020", width=1.5, dash="dash"), + name="depth-cursor", + visible=False, + ) + + # ── Measurement span shape (hidden initially) ──────────────────────────── + fig.add_shape( + type="rect", + x0=0, x1=1, + y0=0, y1=0, + xref="paper", yref="y", + fillcolor="rgba(232,160,32,0.12)", + line=dict(color="#e8a020", width=1), + name="measure-span", + visible=False, + ) + + # ── Layout ──────────────────────────────────────────────────────────────── + fig.update_yaxes( + autorange="reversed", + title_text="Depth (m ↓ downhole)", + showgrid=True, gridcolor="#e9ecef", + tickfont=dict(color="#6c757d"), + title_font=dict(color="#495057"), + range=[max_depth + 5, -5], + row=1, col=1, + ) + for col_idx in range(2, 5): + fig.update_xaxes( + showgrid=True, gridcolor="#e9ecef", + tickfont=dict(color="#6c757d"), + zeroline=True, zerolinecolor="#ced4da", + row=1, col=col_idx, + ) + fig.update_xaxes( + title_text="Au (g/t) — gold grade", title_font=dict(color="#495057"), row=1, col=2, + ) + fig.update_xaxes( + title_text="Cu (%) — copper grade", title_font=dict(color="#495057"), row=1, col=3, + ) + fig.update_xaxes( + title_text="Dip (°) from vertical", title_font=dict(color="#495057"), row=1, col=4, + ) + + fig.update_layout(**{ + **CHART_LAYOUT, + "height": 750, + "margin": dict(l=60, r=20, t=40, b=50), + "hovermode": "y", + "hoverdistance": 30, + "bargap": 0, + "bargroupgap": 0, + "hoverlabel": dict(bgcolor="#ffffff", font_color="#212529", bordercolor="#dee2e6"), + }) + + return fig + + +def layout(): + collar, assay, lith, survey = load_data() + hole_ids = sorted(collar["HOLEID"].tolist()) + default_hole = hole_ids[0] + + default_depth = int(collar.loc[collar["HOLEID"] == default_hole, "TOTDEPTH"].iloc[0]) + default_lith_count = int(lith[lith["HOLEID"] == default_hole].shape[0]) + + things_to_try = dmc.Paper([ + dmc.Group(gap="xs", mb="sm", children=[ + DashIconify(icon="tabler:bulb", width=16, color="#e8a020"), + dmc.Text("Things to Try", fw=600, size="sm", c="orange"), + ]), + dmc.Stack(gap="sm", children=[ + dmc.Group(gap="sm", wrap="nowrap", align="flex-start", children=[ + dmc.ThemeIcon( + DashIconify(icon="tabler:arrow-move-down", width=14), + size="sm", variant="light", color="orange", radius="xl", + style={"flexShrink": 0}, + ), + html.Div([ + dmc.Text("Hover to track depth", fw=600, size="xs"), + dmc.Text( + "The gold depth cursor tracks your mouse across all four panels simultaneously, " + "even over lithology rectangles and empty areas.", + size="xs", c="dimmed", + ), + ]), + ]), + dmc.Group(gap="sm", wrap="nowrap", align="flex-start", children=[ + dmc.ThemeIcon( + DashIconify(icon="tabler:vector-triangle", width=14), + size="sm", variant="light", color="grape", radius="xl", + style={"flexShrink": 0}, + ), + html.Div([ + dmc.Text("Click once · click again to measure", fw=600, size="xs"), + dmc.Text( + "Click anywhere to mark a start depth (a gold line appears and the readout confirms it). " + "Click a second time — the shaded span and thickness annotation appear across all panels.", + size="xs", c="dimmed", + ), + ]), + ]), + dmc.Group(gap="sm", wrap="nowrap", align="flex-start", children=[ + dmc.ThemeIcon( + DashIconify(icon="tabler:rotate-2", width=14), + size="sm", variant="light", color="gray", radius="xl", + style={"flexShrink": 0}, + ), + html.Div([ + dmc.Text("Clear and restart", fw=600, size="xs"), + dmc.Text( + "Hit the Clear button to dismiss the span and reset to a fresh measurement.", + size="xs", c="dimmed", + ), + ]), + ]), + dmc.Group(gap="sm", wrap="nowrap", align="flex-start", children=[ + dmc.ThemeIcon( + DashIconify(icon="tabler:adjustments-horizontal", width=14), + size="sm", variant="light", color="blue", radius="xl", + style={"flexShrink": 0}, + ), + html.Div([ + dmc.Text("Switch drillholes", fw=600, size="xs"), + dmc.Text( + "Use the Hole Selector dropdown to jump between holes — all panels update together.", + size="xs", c="dimmed", + ), + ]), + ]), + ]), + ], p="md", radius="md", withBorder=True, className="tip-paper") + + return [ + dtc.DashTour( + id="dl-tour", + isOpen=False, + accentColor="#e8a020", + rounded=8, + showNumber=True, + steps=DL_TOUR_STEPS, + ), + dmc.Stack([ + things_to_try, + + dmc.SimpleGrid( + cols={"base": 1, "sm": 2}, + spacing="md", + children=[ + dmc.Paper([ + dmc.Group([ + dmc.Text("Current Hole Depth", size="xs", c="dimmed", tt="uppercase", fw=600), + DashIconify(icon="tabler:arrow-down-to-arc", width=16, color="#868e96"), + ], justify="space-between"), + dmc.Text(f"{default_depth} m", id="kpi-hole-depth", size="xl", fw=700, c="dark", mt=4), + dmc.Text("total drilled depth", size="xs", c="dimmed"), + ], p="md", radius="md", withBorder=True, className="kpi-card"), + dmc.Paper([ + dmc.Group([ + dmc.Text("Lithology Intervals", size="xs", c="dimmed", tt="uppercase", fw=600), + DashIconify(icon="tabler:layers-difference", width=16, color="#868e96"), + ], justify="space-between"), + dmc.Text(str(default_lith_count), id="kpi-lith-count", size="xl", fw=700, c="dark", mt=4), + dmc.Text("logged intervals for hole", size="xs", c="dimmed"), + ], p="md", radius="md", withBorder=True, className="kpi-card"), + ], + ), + + # Strip log card + dmc.Paper([ + dmc.Group([ + html.Div([ + html.P("Downhole Strip Log", className="section-title"), + html.P( + "Four-panel strip log: lithology, Au (g/t), Cu (%), hole deviation. " + "Hover anywhere to track depth across all panels. Click once to start an interval, " + "click again to measure its thickness.", + className="section-description", + ), + ], style={"flex": 1}), + html.Div(children=dmc.Group(gap="xs", align="center", children=[ + dmc.Button( + dmc.Group([DashIconify(icon="tabler:help", width=13), "Tour"], + gap=4, align="center"), + id="dl-tour-btn", + variant="subtle", + color="gray", + size="xs", + ), + dmc.Select( + id="hole-selector", + label="Select Hole", + data=[{"value": h, "label": h} for h in hole_ids], + value=default_hole, + w=160, + size="xs", + styles={"label": {"color": "#6c757d", "fontSize": "0.75rem"}}, + ), + ])), + ], justify="space-between", align="flex-end", wrap="nowrap", mb="xs"), + dmc.Group(gap="xs", mt="xs", mb="xs", children=[ + dmc.Tooltip( + label=( + "Click once anywhere on the chart to mark a start depth — " + "a gold line appears. Click a second time to measure the interval " + "and see the thickness." + ), + multiline=True, w=300, withArrow=True, position="bottom", + children=dmc.Badge( + "⊕ Click to Measure", color="orange", variant="light", size="sm", + style={"cursor": "help"}, + ), + ), + ]), + + # Measurement readout + dmc.Group(gap="xs", mb="sm", children=[ + dmc.Text("Interval:", size="sm", c="dimmed"), + html.Div(id="measure-readout", className="measure-readout", + children="Click a depth to start measuring"), + dmc.Button("Clear", id="measure-clear-btn", variant="subtle", + color="gray", size="xs"), + ]), + + dcc.Graph( + id="strip-log-chart", + figure=_strip_log_figure(default_hole, collar, assay, lith, survey), + config={"displayModeBar": True, "scrollZoom": True}, + style={"height": "750px"}, + ), + ], id="strip-log-chart-paper", p="md", radius="md", withBorder=True, className="chart-paper"), + + dmc.Paper([ + html.P("Lithology Key", className="section-title"), + dmc.Group(gap="md", wrap="wrap", children=[ + dmc.Group(gap="xs", children=[ + html.Span(className="lith-swatch", style={"backgroundColor": color}), + dmc.Text(lith_name, size="xs", c="dimmed"), + ]) + for lith_name, color in LITH_COLORS.items() + ]), + ], p="md", radius="md", withBorder=True, className="chart-paper"), + ], gap="md"), + ] diff --git a/drillholes-demo/pages/explorer.py b/drillholes-demo/pages/explorer.py new file mode 100644 index 0000000..62bb50f --- /dev/null +++ b/drillholes-demo/pages/explorer.py @@ -0,0 +1,146 @@ +""" +Explorer page — port of the "Drill-Hole Cross-Section Explorer" CodePen. + +Dash owns the page shell only. The chart (4-hole subplots, multi-axis spanning +geological bands) and all hover/click interactivity are built in +assets/explorer.js using Plotly.js 3.x's hoveranywhere/clickanywhere flags. +The sidebar exposes id-tagged spans the JS writes into directly. +""" + +from dash import html, dcc +import dash_mantine_components as dmc +from dash_iconify import DashIconify + + +def _things_to_try(): + return dmc.Paper([ + dmc.Group(gap="xs", mb="sm", children=[ + DashIconify(icon="tabler:bulb", width=16, color="#e8a020"), + dmc.Text("Things to Try", fw=600, size="sm", c="orange"), + ]), + dmc.Stack(gap="sm", children=[ + dmc.Group(gap="sm", wrap="nowrap", align="flex-start", children=[ + dmc.ThemeIcon( + DashIconify(icon="tabler:crosshair", width=14), + size="sm", variant="light", color="grape", radius="xl", + style={"flexShrink": 0}, + ), + html.Div([ + dmc.Text("Hover anywhere to track depth", fw=600, size="xs"), + dmc.Text( + "A horizontal crosshair plus depth pill follows the cursor across all four " + "hole panels — including the empty space between them. Powered by Plotly 3.x's " + "hoveranywhere flag.", + size="xs", c="dimmed", + ), + ]), + ]), + dmc.Group(gap="sm", wrap="nowrap", align="flex-start", children=[ + dmc.ThemeIcon( + DashIconify(icon="tabler:layers-intersect", width=14), + size="sm", variant="light", color="orange", radius="xl", + style={"flexShrink": 0}, + ), + html.Div([ + dmc.Text("Multi-axis spanning bands", fw=600, size="xs"), + dmc.Text( + "Geological units are quadrilateral paths anchored to consecutive y-axes " + '(yref=["y","y2","y2","y"]) — they connect adjacent subplots automatically ' + "even when each hole has its own axis pair.", + size="xs", c="dimmed", + ), + ]), + ]), + dmc.Group(gap="sm", wrap="nowrap", align="flex-start", children=[ + dmc.ThemeIcon( + DashIconify(icon="tabler:vector-triangle", width=14), + size="sm", variant="light", color="red", radius="xl", + style={"flexShrink": 0}, + ), + html.Div([ + dmc.Text("Click two points to measure", fw=600, size="xs"), + dmc.Text( + "Click two depths inside the same hole panel to drop markers and read out the " + "depth interval. A third click resets. Cross-hole clicks are ignored.", + size="xs", c="dimmed", + ), + ]), + ]), + dmc.Group(gap="sm", wrap="nowrap", align="flex-start", children=[ + dmc.ThemeIcon( + DashIconify(icon="tabler:zoom", width=14), + size="sm", variant="light", color="teal", radius="xl", + style={"flexShrink": 0}, + ), + html.Div([ + dmc.Text("Each hole is independent", fw=600, size="xs"), + dmc.Text( + "Every hole has its own x/y axis pair. Pan or zoom one panel without disturbing " + "the others — the spanning geological bands stretch correctly.", + size="xs", c="dimmed", + ), + ]), + ]), + ]), + ], p="md", radius="md", withBorder=True, className="tip-paper") + + +def _sidebar(): + cursor_panel = dmc.Paper([ + dmc.Text("Cursor Position", className="explorer-panel-title"), + html.Div(className="explorer-info-row", children=[ + html.Span("Depth", className="explorer-info-label"), + html.Span("--", id="cursor-depth", className="explorer-info-value"), + ]), + html.Div(className="explorer-info-row", children=[ + html.Span("Hole", className="explorer-info-label"), + html.Span("--", id="cursor-hole", className="explorer-info-value"), + ]), + html.Div(className="explorer-info-row", children=[ + html.Span("Value", className="explorer-info-label"), + html.Span("--", id="cursor-value", className="explorer-info-value"), + ]), + ], p="md", radius="md", withBorder=True, className="chart-paper explorer-info-panel") + + measure_panel = dmc.Paper([ + dmc.Text("Click-to-Measure", className="explorer-panel-title"), + dmc.Text( + "Click two points in the same subplot to measure the depth interval. " + "Click again to reset.", + size="xs", c="dimmed", mb=6, + ), + html.Div(id="distance-result", className="explorer-distance-result"), + ], p="md", radius="md", withBorder=True, className="chart-paper explorer-info-panel") + + return dmc.Stack([cursor_panel, measure_panel], gap="md") + + +def _chart_paper(): + return dmc.Paper([ + html.P("Drill-Hole Cross-Section Explorer", className="section-title"), + html.P( + "Four drill holes side by side. Geological units span between panels via multi-axis " + "shapes. Hover anywhere for the depth crosshair; click two points within one hole to " + "measure interval thickness.", + className="section-description", + ), + html.Div( + id="explorer-chart", + style={"height": "640px", "width": "100%"}, + ), + ], p="md", radius="md", withBorder=True, className="chart-paper") + + +def layout(): + return [ + # Hidden dcc.Graph forces Dash 4 to lazy-load Plotly.js on this page. + # The visible chart is rendered by assets/explorer.js into #explorer-chart. + dcc.Graph(id="_explorer-plotly-loader", figure={}, style={"display": "none"}), + dmc.Stack([ + _things_to_try(), + dmc.Grid(gutter="md", children=[ + dmc.GridCol(_sidebar(), span={"base": 12, "md": 3}), + dmc.GridCol(_chart_paper(), span={"base": 12, "md": 9}), + ]), + ], gap="md"), + ] diff --git a/drillholes-demo/requirements.txt b/drillholes-demo/requirements.txt new file mode 100644 index 0000000..294daa7 --- /dev/null +++ b/drillholes-demo/requirements.txt @@ -0,0 +1,9 @@ +dash>=3.0.0 +dash-ag-grid>=33.0.0 +dash-mantine-components>=0.14.0 +dash-iconify>=0.1.2 +dash-tour-component>=0.0.2 +plotly>=6.0.0 +pandas>=2.0.0 +numpy>=1.26.0 +gunicorn>=21.0.0 diff --git a/drillholes-demo/utils.py b/drillholes-demo/utils.py new file mode 100644 index 0000000..cc0f823 --- /dev/null +++ b/drillholes-demo/utils.py @@ -0,0 +1,210 @@ +import pathlib +from functools import lru_cache +import numpy as np +import pandas as pd +from dash import html +import dash_mantine_components as dmc +from dash_iconify import DashIconify + +PATH = pathlib.Path(__file__).parent +DATA_PATH = PATH / "data" + +LITH_COLORS = { + "Alluvium": "#C2B280", + "Weathered Granite": "#D4A574", + "Granite": "#9E8B6B", + "Quartz Diorite": "#8B7355", + "Mineralized Porphyry": "#A0522D", + "Fresh Granite": "#6B5B45", +} + +LITH_ORDER = list(LITH_COLORS.keys()) + +CHART_LAYOUT = dict( + paper_bgcolor="#ffffff", + plot_bgcolor="#f8f9fa", + font=dict(family="Inter, sans-serif", size=12, color="#495057"), + margin=dict(l=50, r=20, t=40, b=50), +) + +# Keep alias so any external references still work +DARK_CHART_LAYOUT = CHART_LAYOUT + +GRADE_COLORS = { + "Au_ppm": "#FFD700", + "Cu_pct": "#FF8C00", + "Ag_ppm": "#C0C0C0", +} + +GRADE_LABELS = { + "Au_ppm": "Au (g/t)", + "Cu_pct": "Cu (%)", + "Ag_ppm": "Ag (ppm)", +} + + +@lru_cache(maxsize=1) +def load_data(): + collar = pd.read_csv(DATA_PATH / "collar.csv") + assay = pd.read_csv(DATA_PATH / "assay.csv") + lith = pd.read_csv(DATA_PATH / "lith.csv") + survey = pd.read_csv(DATA_PATH / "survey.csv") + return collar, assay, lith, survey + + +def compute_trace_easting_elevation(hole_id, collar_df, survey_df): + """ + Minimum-curvature method: converts downhole survey (depth, az, dip) + to (easting, elevation) pairs for cross-section plotting. + """ + hole = collar_df[collar_df["HOLEID"] == hole_id].iloc[0] + surveys = survey_df[survey_df["HOLEID"] == hole_id].sort_values("DEPTH").copy() + + e, z = float(hole["EAST"]), float(hole["ELEV"]) + east_list, elev_list = [e], [z] + + prev_depth = 0.0 + prev_az = np.radians(float(hole["AZ"])) + prev_dip = np.radians(abs(float(hole["DIP"]))) + + for _, svy in surveys.iterrows(): + dl = float(svy["DEPTH"]) - prev_depth + if dl <= 0: + continue + az2 = np.radians(float(svy["AZ"])) + dip2 = np.radians(abs(float(svy["DIP"]))) + + dl_cos = (np.cos(dip2 - prev_dip) + - np.sin(prev_dip) * np.sin(dip2) * (1 - np.cos(az2 - prev_az))) + rf = 2.0 / (1.0 + dl_cos) if abs(1.0 + dl_cos) > 0.001 else 1.0 + + de = (dl / 2.0) * (np.sin(prev_dip) * np.sin(prev_az) + + np.sin(dip2) * np.sin(az2)) * rf + dz = -(dl / 2.0) * (np.cos(prev_dip) + np.cos(dip2)) * rf + + e += de + z += dz + east_list.append(round(e, 2)) + elev_list.append(round(z, 2)) + + prev_depth = float(svy["DEPTH"]) + prev_az, prev_dip = az2, dip2 + + return east_list, elev_list + + +NAV_ITEMS = [ + {"label": "Cross-Section", "href": "/", "icon": "tabler:chart-grid-dots", "id": "nav-cross-section"}, + {"label": "Explorer", "href": "/explorer", "icon": "tabler:compass", "id": "nav-explorer"}, + {"label": "Downhole Logs", "href": "/downhole-logs", "icon": "tabler:align-left", "id": "nav-downhole"}, + {"label": "Comparison", "href": "/comparison", "icon": "tabler:columns-3", "id": "nav-comparison"}, + {"label": "Block Model", "href": "/block-model", "icon": "tabler:cube", "id": "nav-block-model"}, +] + + +def create_header(): + brand = dmc.Group([ + html.Img(src="/assets/plotly-logo.png", height=40, alt="Plotly"), + dmc.Divider(orientation="vertical", size="sm"), + html.Div([ + html.P("Drillhole Visualizer", className="brand-title"), + html.P("Western Australia", className="brand-subtitle"), + ]), + ], gap="sm", align="center", wrap="nowrap") + + status = dmc.Group([ + dmc.Group([ + DashIconify(icon="tabler:circle-filled", width=10, color="#40c057"), + dmc.Text("Active", size="xs", c="dimmed"), + ], gap=4), + dmc.Divider(orientation="vertical", size="sm"), + dmc.Text("Prospect", size="xs", c="dimmed"), + dmc.Badge("WA Au-Cu Porphyry", color="orange", variant="light", size="sm"), + dmc.Divider(orientation="vertical", size="sm"), + dmc.Text("Last Survey", size="xs", c="dimmed"), + dmc.Text("Apr 2026", size="xs", fw=500), + dmc.ActionIcon( + DashIconify(icon="tabler:bell", width=18), + variant="subtle", + color="gray", + size="lg", + ), + ], gap="sm", wrap="nowrap") + + return dmc.Paper( + dmc.Group([brand, status], justify="space-between", align="center"), + px="md", + py="sm", + radius=0, + withBorder=False, + className="app-header", + ) + + +def create_nav_sidebar(): + nav_links = [ + dmc.NavLink( + label=item["label"], + leftSection=DashIconify(icon=item["icon"], width=16), + href=item["href"], + id=item["id"], + variant="subtle", + ) + for item in NAV_ITEMS + ] + + return html.Div( + [ + dmc.Group( + [ + dmc.Text("Navigation", id="sidebar-title", size="xs", fw=600, c="dimmed", tt="uppercase"), + dmc.ActionIcon( + DashIconify(icon="charm:cross", width=14, id="sidebar-btn-icon"), + id="sidebar-btn", + size="sm", + variant="subtle", + color="gray", + ), + ], + id="sidebar-title-div", + justify="space-between", + align="center", + className="title-pad space-between", + ), + html.Div( + [ + dmc.Space(h="35vh"), + html.Div( + html.Div("▾ Navigation ▾", className="sidebar-collapsed-title"), + style={"transform": "rotate(270deg)"}, + ), + ], + id="sidebar-collapsed-title-div", + style={"display": "none"}, + ), + html.Div( + html.Div( + html.Div(nav_links, id="sidebar-inner-div", className="sidebar-inner"), + id="sidebar-outer-div", + className="sidebar-outer", + ), + id="sidebar-btn-div", + ), + ], + id="filter-sidebar", + className="filter-sidebar flex-column", + ) + + +def kpi_card(title, value, unit="", icon=None): + header_children = [ + dmc.Text(title, size="xs", c="dimmed", tt="uppercase", fw=600), + ] + if icon: + header_children.append(DashIconify(icon=icon, width=16, color="#868e96")) + + return dmc.Paper([ + dmc.Group(header_children, justify="space-between", align="center"), + dmc.Text(value, size="xl", fw=700, c="dark", mt=4), + dmc.Text(unit, size="xs", c="dimmed") if unit else None, + ], p="md", radius="md", withBorder=True, className="kpi-card") diff --git a/investments-dashboard/Procfile b/investments-dashboard/Procfile new file mode 100644 index 0000000..673048e --- /dev/null +++ b/investments-dashboard/Procfile @@ -0,0 +1 @@ +web: uvicorn app:server --host 0.0.0.0 --port 8000 diff --git a/investments-dashboard/app.py b/investments-dashboard/app.py new file mode 100644 index 0000000..3bbc775 --- /dev/null +++ b/investments-dashboard/app.py @@ -0,0 +1,230 @@ +import dash +from dash import html, dcc, Input, Output, callback +import dash_mantine_components as dmc +from dash_iconify import DashIconify + +from pages import dashboard, performance, portfolio, fees +from callbacks import dashboard as dashboard_callbacks +from callbacks import performance as performance_callbacks +from callbacks import portfolio as portfolio_callbacks +from callbacks import fees as fees_callbacks +from callbacks import export_all as export_all_callbacks + +app = dash.Dash( + __name__, + backend="fastapi", + websocket_callbacks=True, + suppress_callback_exceptions=True, + external_stylesheets=dmc.styles.ALL, + title="Investment Insights" +) +server = app.server + +def create_nav_link(icon, label, href): + return dmc.NavLink( + label=label, + leftSection=DashIconify(icon=icon, width=20), + href=href, + variant="subtle", + active=True, + ) + +def create_header(): + return dmc.Paper( + dmc.Group([ + dmc.Group([ + dmc.Title("Investment Insights", order=3), + dmc.Divider(orientation="vertical", size="sm"), + html.Img(src="/assets/DE-logo.png", height=40), + ], gap="sm", align="center", wrap="nowrap"), + dmc.Group([ + dmc.Group([ + DashIconify(icon="tabler:circle-filled", width=10, color="#40c057"), + dmc.Text("Market Open", size="xs", c="dimmed"), + ], gap=4), + dmc.Text("NYSE", size="xs", fw=500), + dmc.Divider(orientation="vertical", size="sm"), + dmc.Text("Last Updated", size="xs", c="dimmed"), + dmc.Text("Apr 8, 2026 3:45 PM", size="xs", fw=500), + dmc.Divider(orientation="vertical", size="sm"), + dmc.Button( + "Download PDF", + id="generate-pdf-all-btn", + size="xs", + variant="light", + color="blue", + leftSection=DashIconify(icon="tabler:file-type-pdf", width=14), + ), + dmc.ActionIcon( + DashIconify(icon="tabler:bell", width=20), + variant="subtle", + size="lg", + ), + ], gap="sm", align="center", wrap="nowrap"), + ], justify="space-between", align="center", wrap="nowrap"), + p="md", + withBorder=True, + radius=0, + ) + +def create_navbar(): + return dmc.Paper( + dmc.Stack([ + dmc.Stack([ + dmc.Text("Navigation", size="xs", c="dimmed", fw=600, tt="uppercase", mb="xs"), + dmc.NavLink( + label="Dashboard", + leftSection=DashIconify(icon="tabler:dashboard", width=20), + href="/", + id="nav-dashboard", + ), + dmc.NavLink( + label="Price Performance", + leftSection=DashIconify(icon="tabler:chart-line", width=20), + href="/performance", + id="nav-performance", + ), + dmc.NavLink( + label="Portfolio Analysis", + leftSection=DashIconify(icon="tabler:chart-donut", width=20), + href="/portfolio", + id="nav-portfolio", + ), + dmc.NavLink( + label="Fees & Distributions", + leftSection=DashIconify(icon="tabler:receipt", width=20), + href="/fees", + id="nav-fees", + ), + dmc.Divider(my="md"), + dmc.Text("Fund Info", size="xs", c="dimmed", fw=600, tt="uppercase", mb="xs"), + dmc.Stack([ + dmc.Group([ + dmc.Text("Fund:", size="sm", c="dimmed"), + dmc.Text("500 Index Fund", size="sm", fw=500), + ], justify="space-between"), + dmc.Group([ + dmc.Text("Category:", size="sm", c="dimmed"), + dmc.Text("Large Blend", size="sm", fw=500), + ], justify="space-between"), + dmc.Group([ + dmc.Text("Expense:", size="sm", c="dimmed"), + dmc.Badge("0.14%", color="green", size="sm"), + ], justify="space-between"), + ], gap="xs"), + dmc.Divider(my="md"), + dmc.Text("Resources", size="xs", c="dimmed", fw=600, tt="uppercase", mb="xs"), + dmc.Anchor( + dmc.NavLink( + label="Prospectus", + leftSection=DashIconify(icon="tabler:file-text", width=18), + rightSection=DashIconify(icon="tabler:external-link", width=14, color="gray"), + variant="subtle", + py=6, + ), + href="https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0000036405&type=485&dateb=&owner=include&count=40", + target="_blank", + underline=False, + ), + dmc.Anchor( + dmc.NavLink( + label="Fact Sheet", + leftSection=DashIconify(icon="tabler:file-description", width=18), + rightSection=DashIconify(icon="tabler:external-link", width=14, color="gray"), + variant="subtle", + py=6, + ), + href="https://investor.vanguard.com/investment-products/mutual-funds/profile/vfiax", + target="_blank", + underline=False, + ), + dmc.Anchor( + dmc.NavLink( + label="Annual Report", + leftSection=DashIconify(icon="tabler:report", width=18), + rightSection=DashIconify(icon="tabler:external-link", width=14, color="gray"), + variant="subtle", + py=6, + ), + href="https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0000036405&type=N-CSR&dateb=&owner=include&count=40", + target="_blank", + underline=False, + ), + dmc.Anchor( + dmc.NavLink( + label="Tax Documents", + leftSection=DashIconify(icon="tabler:file-invoice", width=18), + rightSection=DashIconify(icon="tabler:external-link", width=14, color="gray"), + variant="subtle", + py=6, + ), + href="https://investor.vanguard.com/client-benefits/tax-center", + target="_blank", + underline=False, + ), + ], gap=4, style={"flex": 1}), + ], gap="md", justify="space-between", h="100%"), + p="md", + h="100%", + withBorder=True, + radius=0, + style={"minWidth": "250px"} + ) + +app.layout = dmc.MantineProvider( + id="mantine-provider", + forceColorScheme="light", + children=[ + dcc.Location(id="url", refresh=False), + dcc.Download(id="download-pdf-all"), + html.Div(id="pdf-status-all", style={"display": "none"}), + dmc.AppShell( + [ + dmc.AppShellHeader(create_header()), + dmc.AppShellNavbar(create_navbar()), + dmc.AppShellMain( + dmc.Container( + id="page-content", + fluid=True, + p="md", + ) + ), + ], + header={"height": 73}, + navbar={"width": 280, "breakpoint": "sm", "collapsed": {"mobile": True}}, + padding="md", + ), + ] +) + +@callback( + Output("page-content", "children"), + Input("url", "pathname") +) +def display_page(pathname): + if pathname == "/performance": + return performance.layout + elif pathname == "/portfolio": + return portfolio.layout + elif pathname == "/fees": + return fees.layout + else: + return dashboard.layout + +@callback( + [Output("nav-dashboard", "active"), + Output("nav-performance", "active"), + Output("nav-portfolio", "active"), + Output("nav-fees", "active")], + Input("url", "pathname") +) +def update_nav_active(pathname): + return [ + pathname == "/" or pathname is None, + pathname == "/performance", + pathname == "/portfolio", + pathname == "/fees", + ] + +if __name__ == "__main__": + app.run(debug=True) diff --git a/investments-dashboard/assets/DE-logo.png b/investments-dashboard/assets/DE-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a0375905a3f3c3e6b871fe36c682a07be4338dda GIT binary patch literal 24095 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 0 else "↓" + trend_value = f"{trend_icon} {abs(metrics['period_return']):.1f}% {period}" + trend_color = "teal" if metrics['period_return'] > 0 else "red" + + period_labels = {"1Y": "1 Year", "3Y": "3 Year", "5Y": "5 Year", "10Y": "10 Year", "All": "All Time"} + period_title = f"{period_labels.get(period, period)} Return" + + period_return_map = {"1Y": metrics['1y_return'], "3Y": metrics['3y_return'], + "5Y": metrics['5y_return'], "10Y": metrics['10y_return'], "All": metrics['period_return']} + period_value = f"{period_return_map.get(period, metrics['1y_return']):.2f}%" + + growth_chart = create_dynamic_growth_chart(fund, investment, show_benchmark) + + return ( + nav_value, + trend_value, + trend_color, + period_value, + period_title, + "vs S&P 500", + metrics['expense_ratio'], + metrics['category'], + metrics['asset_class'], + growth_chart, + f"{metrics['1y_return']:.2f}%", + f"{metrics['3y_return']:.2f}%", + f"{metrics['5y_return']:.2f}%", + metrics['min_investment'].replace('"', ''), + risk['volatility_pct'], + risk['volatility_level'], + risk['beta_pct'], + f"{risk['beta']:.2f}", + risk['sharpe_pct'], + f"{risk['sharpe']:.2f}", + risk['alpha_pct'], + f"{risk['alpha']:.2f}%", + ) + +@callback( + Output("live-streaming", "data"), + Input("live-toggle", "checked"), +) +def toggle_streaming(checked): + return checked + + +@callback(persistent=True) +async def stream_market_prices(): + ws = ctx.websocket + prices = {"AAPL": 189.50, "GOOGL": 176.30, "MSFT": 420.15, "AMZN": 185.60, "TSLA": 178.90} + base_prices = dict(prices) + history = {s: [p] for s, p in prices.items()} + + while not ws.is_shutdown: + streaming = await ws.get_prop("live-streaming", "data") + if streaming: + for sym in prices: + change_pct = round(random.gauss(0, 0.3), 2) + prices[sym] = round(prices[sym] * (1 + change_pct / 100), 2) + history[sym].append(prices[sym]) + if len(history[sym]) > 30: + history[sym] = history[sym][-30:] + + dollar_change = round(prices[sym] - base_prices[sym], 2) + total_pct = round((prices[sym] - base_prices[sym]) / base_prices[sym] * 100, 2) + sign = "+" if dollar_change >= 0 else "" + color = "#40c057" if dollar_change >= 0 else "#fa5252" + + set_props(f"live-price-{sym}", {"children": f"${prices[sym]:.2f}"}) + set_props(f"live-change-{sym}", { + "children": f"{sign}{dollar_change:.2f} ({sign}{total_pct:.2f}%)", + "style": {"color": color}, + }) + + selected = await ws.get_prop("sparkline-symbol", "value") + if selected and selected in history: + fig = create_sparkline(history[selected], selected) + set_props("sparkline-chart", {"figure": fig}) + + await asyncio.sleep(1) + else: + await asyncio.sleep(0.5) + + diff --git a/investments-dashboard/callbacks/export_all.py b/investments-dashboard/callbacks/export_all.py new file mode 100644 index 0000000..42067e3 --- /dev/null +++ b/investments-dashboard/callbacks/export_all.py @@ -0,0 +1,56 @@ +from datetime import datetime + +from dash import callback, Input, Output, dcc, html + +from utils.pdf_export import create_pdf_report +from utils.data_loader import get_time_series_data, get_sector_allocation +from components.charts import ( + create_hypothetical_growth_chart, + create_performance_line_chart, + create_sector_donut_chart, + create_fee_comparison_chart, +) +from pages.performance import create_drawdown_chart + + +@callback( + Output("download-pdf-all", "data"), + Output("pdf-status-all", "children"), + Input("generate-pdf-all-btn", "n_clicks"), + prevent_initial_call=True, +) +def generate_all_pdf(n_clicks): + if not n_clicks: + return None, "" + try: + ts_data = get_time_series_data() + sector_data = get_sector_allocation() + + figures = [ + create_hypothetical_growth_chart().to_dict(), + create_performance_line_chart(ts_data, "Performance Over Time").to_dict(), + create_drawdown_chart(ts_data).to_dict(), + create_sector_donut_chart(sector_data, "Sector Allocation").to_dict(), + create_fee_comparison_chart().to_dict(), + ] + titles = [ + "Hypothetical Growth", + "Price Performance", + "Drawdown Analysis", + "Sector Allocation", + "Fee Comparison", + ] + + pdf_bytes = create_pdf_report( + figures=figures, + titles=titles, + report_title="Investment Report", + ) + filename = f"investment_report_{datetime.now().strftime('%Y%m%d_%H%M%S')}.pdf" + return dcc.send_bytes(pdf_bytes, filename), "" + except Exception as e: + import traceback + return None, html.Div( + f"PDF error: {e}\n{traceback.format_exc()}", + style={"color": "red", "white-space": "pre-wrap", "fontSize": "12px"}, + ) diff --git a/investments-dashboard/callbacks/fees.py b/investments-dashboard/callbacks/fees.py new file mode 100644 index 0000000..755e7ab --- /dev/null +++ b/investments-dashboard/callbacks/fees.py @@ -0,0 +1,129 @@ +from dash import callback, Input, Output, State, dcc, html +import plotly.graph_objects as go +import pandas as pd +from datetime import datetime + +from utils.data_loader import get_dividend_history +from components.charts import CHART_COLORS, CHART_LAYOUT + +def calculate_fees(investment, years, fund_expense=0.0014, avg_expense=0.0099, annual_return=0.07): + """Calculate fee impact over time""" + fund_values = [] + avg_values = [] + + fund_value = investment + avg_value = investment + + for _ in range(years): + fund_value *= (1 + annual_return - fund_expense) + avg_value *= (1 + annual_return - avg_expense) + fund_values.append(fund_value) + avg_values.append(avg_value) + + fund_fees = investment * (1 + annual_return) ** years - fund_values[-1] + avg_fees = investment * (1 + annual_return) ** years - avg_values[-1] + savings = avg_fees - fund_fees + + return { + 'fund_values': fund_values, + 'avg_values': avg_values, + 'fund_final': fund_values[-1], + 'avg_final': avg_values[-1], + 'fund_fees': fund_fees, + 'avg_fees': avg_fees, + 'savings': savings + } + +def create_dynamic_fee_comparison(investment, years): + """Create fee comparison chart with custom investment amount""" + results = calculate_fees(investment, years) + + fig = go.Figure() + + fig.add_trace(go.Bar( + x=['Category Average', 'This Fund'], + y=[results['avg_fees'], results['fund_fees']], + marker_color=[CHART_COLORS['gray'], CHART_COLORS['primary']], + text=[f"${results['avg_fees']:,.0f}", f"${results['fund_fees']:,.0f}"], + textposition='outside', + )) + + fig.add_annotation( + x=1, y=results['fund_fees'] + results['savings'] * 0.15, + text=f"Save ${results['savings']:,.0f}", + showarrow=True, + arrowhead=2, + arrowcolor=CHART_COLORS['secondary'], + font={'color': CHART_COLORS['secondary'], 'weight': 600}, + ) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': f'Fees on ${investment:,} Over {years} Years', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + yaxis={'showgrid': True, 'gridcolor': 'rgba(0,0,0,0.05)', 'tickprefix': '$', 'tickformat': ','}, + showlegend=False, + ) + + return fig + +def create_dynamic_cost_impact(investment, years): + """Create cost impact chart with custom parameters""" + all_years = list(range(1, years + 1)) + results = calculate_fees(investment, years) + + fig = go.Figure() + + fig.add_trace(go.Scatter( + x=all_years, + y=results['avg_values'], + name='Category Avg (0.99%)', + line={'color': CHART_COLORS['gray'], 'width': 2}, + )) + + fig.add_trace(go.Scatter( + x=all_years, + y=results['fund_values'], + name='This Fund (0.14%)', + line={'color': CHART_COLORS['primary'], 'width': 2}, + fill='tonexty', + fillcolor='rgba(34, 139, 230, 0.1)', + )) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': f'Long-Term Cost Impact (7% annual return)', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + xaxis={'title': 'Years'}, + yaxis={'title': 'Portfolio Value', 'tickprefix': '$', 'tickformat': ','}, + legend={'orientation': 'h', 'y': -0.15}, + ) + + return fig + +@callback( + [Output("fee-comparison-chart", "figure"), + Output("cost-impact-chart", "figure"), + Output("savings-amount", "children"), + Output("final-value-fund", "children"), + Output("final-value-avg", "children")], + [Input("investment-amount", "value"), + Input("time-horizon", "value")] +) +def update_fee_calculations(amount, years): + if amount is None or amount <= 0: + amount = 10000 + if years is None or years <= 0: + years = 10 + + results = calculate_fees(amount, years) + + fee_chart = create_dynamic_fee_comparison(amount, years) + cost_chart = create_dynamic_cost_impact(amount, years) + + return ( + fee_chart, + cost_chart, + f"${results['savings']:,.0f}", + f"${results['fund_final']:,.0f}", + f"${results['avg_final']:,.0f}" + ) + diff --git a/investments-dashboard/callbacks/performance.py b/investments-dashboard/callbacks/performance.py new file mode 100644 index 0000000..b042c18 --- /dev/null +++ b/investments-dashboard/callbacks/performance.py @@ -0,0 +1,341 @@ +from dash import callback, Input, Output, State, dcc, html +import plotly.graph_objects as go +import pandas as pd +from datetime import datetime, timedelta + +from utils.data_loader import get_time_series_data +from components.charts import CHART_COLORS, CHART_LAYOUT + +BENCHMARK_COLUMNS = { + "calibre": ("Calibre Index Fund", CHART_COLORS['primary']), + "msci": ("MSCI EAFE Index Fund (ETF)", CHART_COLORS['secondary']), + "sp500": ('"S&P 500 Index, y"', CHART_COLORS['tertiary']), +} + +BENCHMARK_LABELS = { + "calibre": "Calibre Index Fund", + "msci": "MSCI EAFE Index", + "sp500": "S&P 500", +} + +def calculate_date_range_from_period(period, df): + """Calculate date range based on period selector""" + if period == "All" or not period: + return None + + end_date = df['Date'].max() + + period_map = { + "1M": timedelta(days=30), + "3M": timedelta(days=90), + "6M": timedelta(days=180), + "1Y": timedelta(days=365), + "3Y": timedelta(days=365 * 3), + "5Y": timedelta(days=365 * 5), + } + + delta = period_map.get(period, timedelta(days=365)) + start_date = end_date - delta + + return [start_date.strftime('%Y-%m-%d'), end_date.strftime('%Y-%m-%d')] + +def filter_data_by_date(df, date_range): + """Filter dataframe by date range""" + if date_range and len(date_range) == 2 and date_range[0] and date_range[1]: + start_date = pd.to_datetime(date_range[0]) + end_date = pd.to_datetime(date_range[1]) + return df[(df['Date'] >= start_date) & (df['Date'] <= end_date)] + return df + +def normalize_series(df, columns): + """Normalize series to start at 100""" + normalized_df = df.copy() + for col in columns: + if col in normalized_df.columns: + first_val = normalized_df[col].iloc[0] + if first_val != 0: + normalized_df[col] = (normalized_df[col] / first_val) * 100 + return normalized_df + +def calculate_moving_average(df, col_name, window): + """Calculate moving average""" + if col_name in df.columns and window > 0: + return df[col_name].rolling(window=window).mean() + return None + +def calculate_performance_metrics(df, col_name): + """Calculate volatility, max drawdown, Sharpe, best/worst day""" + if col_name not in df.columns or len(df) < 2: + return { + 'volatility': 0, 'max_drawdown': 0, 'sharpe': 0, + 'best_day': 0, 'worst_day': 0 + } + + returns = df[col_name].pct_change().dropna() + + if len(returns) == 0: + return { + 'volatility': 0, 'max_drawdown': 0, 'sharpe': 0, + 'best_day': 0, 'worst_day': 0 + } + + volatility = returns.std() * (252 ** 0.5) * 100 + + prices = df[col_name].values + peak = prices[0] + max_dd = 0 + for price in prices: + if price > peak: + peak = price + dd = (price - peak) / peak * 100 + if dd < max_dd: + max_dd = dd + + risk_free = 0.02 + excess = returns.mean() * 252 - risk_free + std_ann = returns.std() * (252 ** 0.5) + sharpe = excess / std_ann if std_ann > 0 else 0 + + best_day = returns.max() * 100 + worst_day = returns.min() * 100 + + return { + 'volatility': volatility, + 'max_drawdown': max_dd, + 'sharpe': sharpe, + 'best_day': best_day, + 'worst_day': worst_day + } + +def create_dynamic_performance_chart(df, benchmarks, normalize=False, ma_period=None, log_scale=False, title="Performance Over Time"): + """Create performance chart with selected benchmarks, normalization, MA, and log scale""" + fig = go.Figure() + + columns_to_plot = [] + for benchmark in benchmarks: + if benchmark in BENCHMARK_COLUMNS: + col_name, _ = BENCHMARK_COLUMNS[benchmark] + if col_name in df.columns: + columns_to_plot.append(col_name) + + plot_df = df.copy() + if normalize and columns_to_plot: + plot_df = normalize_series(plot_df, columns_to_plot) + + for benchmark in benchmarks: + if benchmark in BENCHMARK_COLUMNS: + col_name, color = BENCHMARK_COLUMNS[benchmark] + if col_name in plot_df.columns: + fig.add_trace(go.Scatter( + x=plot_df['Date'], + y=plot_df[col_name], + name=BENCHMARK_LABELS.get(benchmark, benchmark), + line={'color': color, 'width': 2}, + hovertemplate='%{y:.2f}' + )) + + if ma_period and ma_period != "none": + window = int(ma_period) + ma = calculate_moving_average(plot_df, col_name, window) + if ma is not None: + fig.add_trace(go.Scatter( + x=plot_df['Date'], + y=ma, + name=f"{BENCHMARK_LABELS.get(benchmark, benchmark)} {window}MA", + line={'color': color, 'width': 1, 'dash': 'dot'}, + hovertemplate='%{y:.2f}' + )) + + y_prefix = '' if normalize else '$' + y_type = 'log' if log_scale else 'linear' + + fig.update_layout( + **CHART_LAYOUT, + title={'text': title, 'x': 0, 'font': {'size': 16, 'weight': 600}}, + legend={'orientation': 'h', 'y': -0.15}, + xaxis={ + 'showgrid': True, + 'gridcolor': 'rgba(0,0,0,0.05)', + }, + yaxis={'showgrid': True, 'gridcolor': 'rgba(0,0,0,0.05)', 'tickprefix': y_prefix, 'type': y_type}, + ) + + return fig + +def create_dynamic_drawdown_chart(df, benchmarks, show_all=False): + """Calculate and plot drawdown for selected benchmarks""" + fig = go.Figure() + + colors = [CHART_COLORS['danger'], CHART_COLORS['secondary'], CHART_COLORS['tertiary']] + fill_colors = ['rgba(250, 82, 82, 0.2)', 'rgba(64, 192, 87, 0.15)', 'rgba(250, 176, 5, 0.15)'] + + benchmarks_to_show = benchmarks if show_all else [benchmarks[0]] if benchmarks else ["calibre"] + + for idx, benchmark in enumerate(benchmarks_to_show): + col_name = BENCHMARK_COLUMNS.get(benchmark, BENCHMARK_COLUMNS["calibre"])[0] + + if col_name not in df.columns: + continue + + prices = df[col_name].values + peak = prices[0] + drawdowns = [] + + for price in prices: + if price > peak: + peak = price + drawdown = (price - peak) / peak * 100 + drawdowns.append(drawdown) + + color = colors[idx % len(colors)] + fill = fill_colors[idx % len(fill_colors)] if idx == 0 else 'rgba(0,0,0,0)' + + fig.add_trace(go.Scatter( + x=df['Date'], + y=drawdowns, + fill='tozeroy' if idx == 0 else 'none', + line={'color': color, 'width': 2 if idx == 0 else 1}, + fillcolor=fill, + name=BENCHMARK_LABELS.get(benchmark, benchmark), + )) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': 'Drawdown Analysis', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + yaxis={'showgrid': True, 'gridcolor': 'rgba(0,0,0,0.05)', 'ticksuffix': '%'}, + showlegend=len(benchmarks_to_show) > 1, + legend={'orientation': 'h', 'y': -0.15}, + ) + return fig + +def create_rolling_returns_chart(df, benchmarks, show_all=False, window=252): + """Create rolling returns chart for selected benchmarks""" + fig = go.Figure() + + if len(df) < window + 1: + fig.update_layout( + **CHART_LAYOUT, + title={'text': f'Rolling 1-Year Returns', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + annotations=[{'text': 'Insufficient data for rolling calculation', 'showarrow': False, 'x': 0.5, 'y': 0.5, 'xref': 'paper', 'yref': 'paper'}] + ) + return fig + + benchmarks_to_show = benchmarks if show_all else [benchmarks[0]] if benchmarks else ["calibre"] + + for idx, benchmark in enumerate(benchmarks_to_show): + col_name, color = BENCHMARK_COLUMNS.get(benchmark, BENCHMARK_COLUMNS["calibre"]) + + if col_name not in df.columns: + continue + + rolling_returns = (df[col_name] / df[col_name].shift(window) - 1) * 100 + + fill = 'tozeroy' if idx == 0 else 'none' + fill_color = 'rgba(34, 139, 230, 0.15)' if idx == 0 else 'rgba(0,0,0,0)' + + fig.add_trace(go.Scatter( + x=df['Date'], + y=rolling_returns, + fill=fill, + line={'color': color, 'width': 2 if idx == 0 else 1}, + fillcolor=fill_color, + name=BENCHMARK_LABELS.get(benchmark, benchmark), + )) + + fig.add_hline(y=0, line_dash="dash", line_color="gray", line_width=1) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': f'Rolling 1-Year Returns', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + yaxis={'showgrid': True, 'gridcolor': 'rgba(0,0,0,0.05)', 'ticksuffix': '%'}, + showlegend=len(benchmarks_to_show) > 1, + legend={'orientation': 'h', 'y': -0.15}, + ) + return fig + +def calculate_stats(df, col_name="Calibre Index Fund"): + """Calculate stats for the filtered data""" + if col_name not in df.columns: + col_name = "Calibre Index Fund" + + high_val = df[col_name].max() + high_date = df.loc[df[col_name].idxmax(), 'Date'] + + low_val = df[col_name].min() + low_date = df.loc[df[col_name].idxmin(), 'Date'] + + current_val = df[col_name].iloc[-1] + + total_return = ((df[col_name].iloc[-1] - df[col_name].iloc[0]) / df[col_name].iloc[0]) * 100 + + return { + 'high': high_val, + 'high_date': high_date, + 'low': low_val, + 'low_date': low_date, + 'current': current_val, + 'total_return': total_return + } + +@callback( + [Output("performance-chart", "figure"), + Output("drawdown-chart", "figure"), + Output("rolling-returns-chart", "figure"), + Output("period-high-value", "children"), + Output("period-high-date", "children"), + Output("period-low-value", "children"), + Output("period-low-date", "children"), + Output("current-price-value", "children"), + Output("total-return-value", "children"), + Output("total-return-value", "c"), + Output("perf-volatility", "children"), + Output("perf-max-drawdown", "children"), + Output("perf-sharpe", "children"), + Output("perf-best-day", "children"), + Output("perf-worst-day", "children")], + [Input("benchmark-selector", "value"), + Input("performance-period", "value"), + Input("normalize-toggle", "checked"), + Input("ma-selector", "value"), + Input("log-scale-toggle", "checked")] +) +def update_performance(benchmarks, period, normalize, ma_period, log_scale): + df = get_time_series_data() + + date_range = calculate_date_range_from_period(period, df) + filtered_df = filter_data_by_date(df, date_range) + + if not benchmarks: + benchmarks = ["calibre"] + + primary_benchmark = benchmarks[0] if benchmarks else "calibre" + col_name = BENCHMARK_COLUMNS.get(primary_benchmark, BENCHMARK_COLUMNS["calibre"])[0] + + perf_chart = create_dynamic_performance_chart(filtered_df, benchmarks, normalize, ma_period, log_scale) + drawdown_chart = create_dynamic_drawdown_chart(filtered_df, benchmarks, show_all=normalize) + rolling_chart = create_rolling_returns_chart(filtered_df, benchmarks, show_all=normalize) + + stats = calculate_stats(filtered_df, col_name) + metrics = calculate_performance_metrics(filtered_df, col_name) + + high_date_str = stats['high_date'].strftime('%Y-%m-%d') if hasattr(stats['high_date'], 'strftime') else str(stats['high_date']) + low_date_str = stats['low_date'].strftime('%Y-%m-%d') if hasattr(stats['low_date'], 'strftime') else str(stats['low_date']) + + return ( + perf_chart, + drawdown_chart, + rolling_chart, + f"${stats['high']:.2f}", + high_date_str, + f"${stats['low']:.2f}", + low_date_str, + f"${stats['current']:.2f}", + f"{stats['total_return']:.1f}%", + "green" if stats['total_return'] > 0 else "red", + f"{metrics['volatility']:.1f}%", + f"{metrics['max_drawdown']:.1f}%", + f"{metrics['sharpe']:.2f}", + f"+{metrics['best_day']:.1f}%", + f"{metrics['worst_day']:.1f}%", + ) + diff --git a/investments-dashboard/callbacks/portfolio.py b/investments-dashboard/callbacks/portfolio.py new file mode 100644 index 0000000..418bccf --- /dev/null +++ b/investments-dashboard/callbacks/portfolio.py @@ -0,0 +1,192 @@ +from dash import callback, Input, Output, State, dcc, html +import plotly.graph_objects as go +import plotly.express as px +from datetime import datetime + +from utils.data_loader import get_sector_allocation +from components.charts import CHART_COLORS, CHART_LAYOUT + +sector_data = get_sector_allocation() + +def create_sector_bar_with_highlight(highlighted_sector=None): + """Create sector bar chart with optional highlight""" + fig = go.Figure() + + colors = [CHART_COLORS['primary'] if (highlighted_sector is None or s == highlighted_sector) + else 'rgba(34, 139, 230, 0.3)' + for s in sector_data['Sector']] + + fig.add_trace(go.Bar( + y=sector_data['Sector'], + x=sector_data['Fund'], + name='Fund', + orientation='h', + marker_color=colors, + )) + + benchmark_colors = [CHART_COLORS['gray'] if (highlighted_sector is None or s == highlighted_sector) + else 'rgba(134, 142, 150, 0.3)' + for s in sector_data['Sector']] + + fig.add_trace(go.Bar( + y=sector_data['Sector'], + x=sector_data['Benchmark'], + name='Benchmark', + orientation='h', + marker_color=benchmark_colors, + )) + + title = 'Sector Allocation vs Benchmark' + if highlighted_sector: + title = f'Sector Allocation - {highlighted_sector} Highlighted' + + fig.update_layout( + **CHART_LAYOUT, + title={'text': title, 'x': 0, 'font': {'size': 16, 'weight': 600}}, + barmode='group', + bargap=0.3, + legend={'orientation': 'h', 'y': -0.15}, + xaxis={'title': 'Allocation %', 'ticksuffix': '%'}, + yaxis={'title': ''}, + height=450, + ) + + return fig + +@callback( + [Output("allocation-view", "style"), + Output("characteristics-view", "style"), + Output("risk-view", "style")], + Input("portfolio-view", "value") +) +def switch_portfolio_view(view): + """Switch between allocation, characteristics, and risk views""" + hidden = {"display": "none"} + visible = {"display": "block"} + + if view == "allocation": + return visible, hidden, hidden + elif view == "characteristics": + return hidden, visible, hidden + else: + return hidden, hidden, visible + +@callback( + Output("sector-bar-chart", "figure"), + Input("sector-donut", "clickData"), + State("sector-donut", "figure"), + prevent_initial_call=True +) +def highlight_sector(click_data, current_figure): + """Highlight selected sector in bar chart (synced with donut toggle)""" + if click_data and 'points' in click_data: + selected_idx = click_data['points'][0].get('pointNumber', None) + sector_name = click_data['points'][0].get('label', None) + + current_pull = current_figure.get('data', [{}])[0].get('pull', []) + already_selected = ( + current_pull and + selected_idx is not None and + len(current_pull) > selected_idx and + current_pull[selected_idx] > 0 + ) + + if not already_selected: + return create_sector_bar_with_highlight(sector_name) + return create_sector_bar_with_highlight(None) + +@callback( + Output("sector-detail-text", "children"), + Input("sector-donut", "clickData"), + State("sector-donut", "figure") +) +def update_sector_detail(click_data, current_figure): + """Show sector details when clicked (synced with donut toggle)""" + if click_data and 'points' in click_data: + point = click_data['points'][0] + selected_idx = point.get('pointNumber', None) + sector = point.get('label', 'Unknown') + value = point.get('value', 0) + + current_pull = current_figure.get('data', [{}])[0].get('pull', []) if current_figure else [] + already_selected = ( + current_pull and + selected_idx is not None and + len(current_pull) > selected_idx and + current_pull[selected_idx] > 0 + ) + + if not already_selected: + return f"Selected: {sector} ({value:.1f}% allocation)" + return "Click on a sector to see details" + +@callback( + Output("sector-donut", "figure"), + Input("sector-donut", "clickData"), + State("sector-donut", "figure"), + prevent_initial_call=True +) +def highlight_donut_sector(click_data, current_figure): + """Highlight selected sector in donut chart (click again to reset)""" + import re + colors = px.colors.qualitative.Set3[:len(sector_data)] + + pull_values = [0] * len(sector_data) + opacities = [1] * len(sector_data) + + if click_data and 'points' in click_data: + selected_idx = click_data['points'][0].get('pointNumber', None) + if selected_idx is not None: + current_pull = current_figure.get('data', [{}])[0].get('pull', []) + already_selected = ( + current_pull and + len(current_pull) > selected_idx and + current_pull[selected_idx] > 0 + ) + + if not already_selected: + pull_values = [0.15 if i == selected_idx else 0 for i in range(len(sector_data))] + opacities = [1 if i == selected_idx else 0.4 for i in range(len(sector_data))] + + adjusted_colors = [] + for i, c in enumerate(colors): + if c.startswith('rgb('): + rgb_match = re.match(r'rgb\((\d+),\s*(\d+),\s*(\d+)\)', c) + if rgb_match: + r, g, b = rgb_match.groups() + adjusted_colors.append(f'rgba({r}, {g}, {b}, {opacities[i]})') + else: + adjusted_colors.append(c) + elif c.startswith('#'): + rgb = px.colors.hex_to_rgb(c) + adjusted_colors.append(f'rgba({rgb[0]}, {rgb[1]}, {rgb[2]}, {opacities[i]})') + else: + adjusted_colors.append(c) + + fig = go.Figure(go.Pie( + labels=sector_data['Sector'], + values=sector_data['Fund'], + hole=0.6, + marker={'colors': adjusted_colors, 'line': {'color': 'white', 'width': 2}}, + textinfo='percent', + textposition='outside', + pull=pull_values, + hovertemplate='%{label}
%{value:.1f}%' + )) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': 'Sector Allocation (Click to highlight)', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + showlegend=True, + legend={'orientation': 'v', 'x': 1.05, 'y': 0.5}, + annotations=[{ + 'text': 'Sectors', + 'x': 0.5, 'y': 0.5, + 'font': {'size': 14, 'weight': 600}, + 'showarrow': False + }] + ) + + return fig + + diff --git a/investments-dashboard/components/__init__.py b/investments-dashboard/components/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/investments-dashboard/components/__init__.py @@ -0,0 +1 @@ + diff --git a/investments-dashboard/components/charts.py b/investments-dashboard/components/charts.py new file mode 100644 index 0000000..9377d30 --- /dev/null +++ b/investments-dashboard/components/charts.py @@ -0,0 +1,232 @@ +import dash_mantine_components as dmc +from dash import dcc +import plotly.graph_objects as go +import plotly.express as px + +CHART_COLORS = { + 'primary': '#228be6', + 'secondary': '#40c057', + 'tertiary': '#fab005', + 'danger': '#fa5252', + 'gray': '#868e96', +} + +CHART_LAYOUT = { + 'paper_bgcolor': 'rgba(0,0,0,0)', + 'plot_bgcolor': 'rgba(0,0,0,0)', + 'font': {'family': 'Inter, sans-serif'}, + 'margin': {'l': 40, 'r': 20, 't': 40, 'b': 40}, + 'hovermode': 'x unified', + 'hoverlabel': { + 'bgcolor': 'white', + 'bordercolor': '#dee2e6', + 'font': {'family': 'Inter, sans-serif', 'size': 13, 'color': '#333'}, + }, +} + +def create_performance_line_chart(df, title="Performance Over Time"): + """Create multi-series line chart for fund performance""" + + fig = go.Figure() + + fig.add_trace(go.Scatter( + x=df['Date'], + y=df['Calibre Index Fund'], + name='Calibre Index Fund', + line={'color': CHART_COLORS['primary'], 'width': 2}, + hovertemplate='%{y:.2f}' + )) + + fig.add_trace(go.Scatter( + x=df['Date'], + y=df['MSCI EAFE Index Fund (ETF)'], + name='MSCI EAFE Index', + line={'color': CHART_COLORS['secondary'], 'width': 2}, + hovertemplate='%{y:.2f}' + )) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': title, 'x': 0, 'font': {'size': 16, 'weight': 600}}, + legend={'orientation': 'h', 'y': -0.15}, + xaxis={ + 'showgrid': True, + 'gridcolor': 'rgba(0,0,0,0.05)', + 'rangeselector': { + 'buttons': [ + {'count': 1, 'label': '1M', 'step': 'month'}, + {'count': 6, 'label': '6M', 'step': 'month'}, + {'count': 1, 'label': 'YTD', 'step': 'year', 'stepmode': 'todate'}, + {'count': 1, 'label': '1Y', 'step': 'year'}, + {'count': 3, 'label': '3Y', 'step': 'year'}, + {'count': 5, 'label': '5Y', 'step': 'year'}, + {'step': 'all', 'label': 'All'} + ], + 'bgcolor': 'rgba(0,0,0,0.02)', + 'activecolor': CHART_COLORS['primary'], + }, + 'rangeslider': {'visible': False}, + }, + yaxis={'showgrid': True, 'gridcolor': 'rgba(0,0,0,0.05)', 'tickprefix': '$'}, + ) + fig.update_layout(margin={'l': 40, 'r': 20, 't': 100, 'b': 40}) + + return fig + +def create_sparkline(prices, symbol=""): + """Minimal area sparkline for live price history""" + color = CHART_COLORS['secondary'] if len(prices) > 1 and prices[-1] >= prices[0] else CHART_COLORS['danger'] + hex_to_rgba = lambda c, a: f"rgba({int(c[1:3],16)},{int(c[3:5],16)},{int(c[5:7],16)},{a})" + + fig = go.Figure(go.Scatter( + y=prices, + mode='lines', + fill='tozeroy', + line={'color': color, 'width': 2.5}, + fillcolor=hex_to_rgba(color, 0.15), + hovertemplate='$%{y:.2f}', + )) + + if len(prices) > 1: + ymin, ymax = min(prices), max(prices) + padding = max((ymax - ymin) * 0.3, 0.10) + yrange = [ymin - padding, ymax + padding] + else: + yrange = None + + fig.update_layout( + paper_bgcolor='rgba(0,0,0,0)', + plot_bgcolor='rgba(0,0,0,0)', + font={'family': 'Inter, sans-serif'}, + margin={'l': 0, 'r': 0, 't': 20, 'b': 0}, + xaxis={'visible': False}, + yaxis={'visible': False, 'range': yrange}, + showlegend=False, + title={'text': symbol, 'x': 0, 'font': {'size': 13, 'weight': 600}}, + hovermode='x unified', + ) + return fig + +def create_sector_donut_chart(sector_data, title="Sector Allocation"): + """Create donut chart for sector allocation""" + + colors = px.colors.qualitative.Set3[:len(sector_data)] + + fig = go.Figure(go.Pie( + labels=sector_data['Sector'], + values=sector_data['Fund'], + hole=0.6, + marker={'colors': colors}, + textinfo='percent', + textposition='outside', + hovertemplate='%{label}
%{value:.1f}%' + )) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': title, 'x': 0, 'font': {'size': 16, 'weight': 600}}, + showlegend=True, + legend={'orientation': 'v', 'x': 1.05, 'y': 0.5}, + annotations=[{ + 'text': 'Sectors', + 'x': 0.5, 'y': 0.5, + 'font': {'size': 14, 'weight': 600}, + 'showarrow': False + }] + ) + + return fig + +def create_hypothetical_growth_chart(initial=10000): + """Create hypothetical growth of $10k chart""" + + years = ['2008', '2010', '2012', '2014', '2016', '2018'] + fund_values = [10000, 11500, 14000, 18500, 22000, 27500] + benchmark_values = [10000, 10800, 13200, 17000, 20500, 25000] + + fig = go.Figure() + + fig.add_trace(go.Scatter( + x=years, + y=fund_values, + name='Calibre Index Fund', + fill='tozeroy', + line={'color': CHART_COLORS['primary'], 'width': 2}, + fillcolor='rgba(34, 139, 230, 0.1)', + hovertemplate='$%{y:,.2f}', + )) + + fig.add_trace(go.Scatter( + x=years, + y=benchmark_values, + name='S&P 500 Index', + line={'color': CHART_COLORS['gray'], 'width': 2, 'dash': 'dash'}, + hovertemplate='$%{y:,.2f}', + )) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': f'Hypothetical Growth of ${initial:,}', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + legend={'orientation': 'h', 'y': -0.15}, + yaxis={'showgrid': True, 'gridcolor': 'rgba(0,0,0,0.05)', 'tickprefix': '$', 'tickformat': ','}, + xaxis={'showgrid': False}, + ) + + return fig + +def create_fee_comparison_chart(fund_fee=329, avg_fee=2242): + """Create fee comparison bar chart""" + + savings = avg_fee - fund_fee + + fig = go.Figure() + + fig.add_trace(go.Bar( + x=['Category Average', 'This Fund'], + y=[avg_fee, fund_fee], + marker_color=[CHART_COLORS['gray'], CHART_COLORS['primary']], + text=[f'${avg_fee:,}', f'${fund_fee:,}'], + textposition='outside', + )) + + fig.add_annotation( + x=1, y=fund_fee + 300, + text=f'Save ${savings:,}', + showarrow=True, + arrowhead=2, + arrowcolor=CHART_COLORS['secondary'], + font={'color': CHART_COLORS['secondary'], 'weight': 600}, + ) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': 'Fees on $10,000 Over 10 Years', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + yaxis={'showgrid': True, 'gridcolor': 'rgba(0,0,0,0.05)', 'tickprefix': '$'}, + showlegend=False, + ) + + return fig + +def create_dividend_timeline(dividend_data): + """Create dividend history chart""" + + df = dividend_data.copy() + df['Amount'] = df['Amount'].str.replace('$', '').astype(float) + + fig = go.Figure() + + fig.add_trace(go.Bar( + x=df['Payable_Date'], + y=df['Amount'], + marker_color=CHART_COLORS['primary'], + name='Dividend', + )) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': 'Dividend History', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + yaxis={'showgrid': True, 'gridcolor': 'rgba(0,0,0,0.05)', 'tickprefix': '$'}, + xaxis={'title': 'Payment Date'}, + ) + + return fig diff --git a/investments-dashboard/components/kpi_cards.py b/investments-dashboard/components/kpi_cards.py new file mode 100644 index 0000000..036d311 --- /dev/null +++ b/investments-dashboard/components/kpi_cards.py @@ -0,0 +1,87 @@ +import dash_mantine_components as dmc +from dash import html +from dash_iconify import DashIconify + +def create_kpi_card(title, value, subtitle=None, trend=None, trend_positive=True, icon=None): + """Create a KPI card with optional trend indicator""" + + trend_color = "teal" if trend_positive else "red" + trend_icon = "tabler:trending-up" if trend_positive else "tabler:trending-down" + + content = [ + dmc.Group([ + dmc.Text(title, size="sm", c="dimmed", fw=500), + DashIconify(icon=icon, width=20, color="gray") if icon else None, + ], justify="space-between"), + dmc.Group([ + dmc.Text(value, size="xl", fw=700), + dmc.Group([ + DashIconify(icon=trend_icon, width=16, color=trend_color) if trend else None, + dmc.Text(trend, size="sm", c=trend_color, fw=500) if trend else None, + ], gap=4) if trend else None, + ], justify="space-between", mt="xs"), + ] + + if subtitle: + content.append(dmc.Text(subtitle, size="xs", c="dimmed", mt=4)) + + return dmc.Paper( + dmc.Stack(content, gap="xs"), + p="md", + radius="md", + withBorder=True, + style={"minWidth": "200px"} + ) + +def create_kpi_grid(metrics): + """Create a grid of KPI cards from metrics dict""" + + cards = [ + create_kpi_card( + title="Net Asset Value", + value=f"${metrics['nav']:.2f}", + trend=f"{metrics['ytd_return']:.1f}% YTD", + trend_positive=metrics['ytd_return'] > 0, + icon="tabler:currency-dollar" + ), + create_kpi_card( + title="1 Year Return", + value=f"{metrics['1y_return']:.2f}%", + subtitle="vs S&P 500", + trend_positive=True, + icon="tabler:chart-line" + ), + create_kpi_card( + title="Expense Ratio", + value=metrics['expense_ratio'], + subtitle="vs 0.99% category avg", + trend="85% lower", + trend_positive=True, + icon="tabler:percentage" + ), + create_kpi_card( + title="Category", + value=metrics['category'], + subtitle=metrics['asset_class'], + icon="tabler:category" + ), + ] + + return dmc.SimpleGrid( + cards, + cols={"base": 1, "sm": 2, "lg": 4}, + spacing="md" + ) + +def create_stat_card(label, value, description=None): + """Simple stat card for fund facts""" + return dmc.Paper( + dmc.Stack([ + dmc.Text(label, size="xs", c="dimmed", tt="uppercase", fw=600), + dmc.Text(value, size="lg", fw=600), + dmc.Text(description, size="xs", c="dimmed") if description else None, + ], gap=4), + p="sm", + radius="sm", + withBorder=True, + ) diff --git a/investments-dashboard/components/tables.py b/investments-dashboard/components/tables.py new file mode 100644 index 0000000..e14c6c8 --- /dev/null +++ b/investments-dashboard/components/tables.py @@ -0,0 +1,103 @@ +import dash_mantine_components as dmc +from dash import html +import pandas as pd + +def create_data_table(df, title=None, striped=True): + """Create a styled Mantine table from DataFrame""" + + columns = df.columns.tolist() + + header = dmc.TableThead( + dmc.TableTr([ + dmc.TableTh(col, style={'fontWeight': 600}) for col in columns + ]) + ) + + rows = [] + for _, row in df.iterrows(): + cells = [] + for i, val in enumerate(row): + style = {} + if isinstance(val, str): + if '%' in val: + try: + num = float(val.replace('%', '')) + style['color'] = '#40c057' if num > 0 else '#fa5252' if num < 0 else None + style['fontWeight'] = 500 + except: + pass + cells.append(dmc.TableTd(val, style=style)) + rows.append(dmc.TableTr(cells)) + + body = dmc.TableTbody(rows) + + table = dmc.Table( + [header, body], + striped=striped, + highlightOnHover=True, + withTableBorder=True, + withColumnBorders=True, + ) + + if title: + return dmc.Stack([ + dmc.Text(title, fw=600, size="lg"), + dmc.ScrollArea(table, type="auto"), + ], gap="sm") + + return dmc.ScrollArea(table, type="auto") + +def create_returns_table(df): + """Create formatted returns comparison table""" + return create_data_table(df, title="Average Annual Returns") + +def create_fund_facts_table(df): + """Create fund facts key-value table""" + + rows = [] + for _, row in df.iterrows(): + rows.append( + dmc.TableTr([ + dmc.TableTd(row['label'], style={'fontWeight': 500, 'color': 'dimmed'}), + dmc.TableTd(str(row['value']).replace('"', ''), style={'fontWeight': 600}), + ]) + ) + + return dmc.Table( + dmc.TableTbody(rows), + withTableBorder=True, + highlightOnHover=True, + ) + +def create_dividend_table(df): + """Create dividend history table""" + return create_data_table(df, title="Distribution History") + +def create_comparison_table(data, columns, title=None): + """Create a generic comparison table""" + + header = dmc.TableThead( + dmc.TableTr([dmc.TableTh(col, style={'fontWeight': 600}) for col in columns]) + ) + + rows = [] + for row_data in data: + cells = [dmc.TableTd(cell) for cell in row_data] + rows.append(dmc.TableTr(cells)) + + body = dmc.TableTbody(rows) + + table = dmc.Table( + [header, body], + striped=True, + highlightOnHover=True, + withTableBorder=True, + ) + + if title: + return dmc.Stack([ + dmc.Text(title, fw=600, size="lg"), + table + ], gap="sm") + + return table diff --git a/investments-dashboard/data/df_after_tax.csv b/investments-dashboard/data/df_after_tax.csv new file mode 100644 index 0000000..9ca9949 --- /dev/null +++ b/investments-dashboard/data/df_after_tax.csv @@ -0,0 +1,10 @@ +A,B,C,D,E,F +'-,1 Year,3 Year,5 Year,10 Year,Since Inception 08/31/1976 +500 Index Fund Inv,'-,'-,'-,'-,'- +Returns before taxes,21.67%,11.26%,15.62%,8.37%,11.11% +Returns after taxes on distributions,21.15%,10.75%,15.10%,7.95%,— +Returns after taxes on distributions and sale of fund shares,12.64%,8.71%,12.51%,6.75%,— +Average Large Blend Fund,'-,'-,'-,'-,'- +Returns before taxes,20.44%,9.70%,14.24%,7.61%,— +Returns after taxes on distributions,—,—,—,—,— +Returns after taxes on distributions and sale of fund shares,—,—,—,—,— diff --git a/investments-dashboard/data/df_avg_returns.csv b/investments-dashboard/data/df_avg_returns.csv new file mode 100644 index 0000000..b659957 --- /dev/null +++ b/investments-dashboard/data/df_avg_returns.csv @@ -0,0 +1,4 @@ +A,B,C,D,E,F +'-,1 Year,3 Year,5 Year,10 Year,Since Inception 08/31/1976 +500 Index Fund Inv,16.94%,11.00%,14.57%,9.60%,11.12% +S&P 500 Index*,17.10%,11.14%,14.73%,9.73%,'- diff --git a/investments-dashboard/data/df_current_prices.csv b/investments-dashboard/data/df_current_prices.csv new file mode 100644 index 0000000..b8c13ad --- /dev/null +++ b/investments-dashboard/data/df_current_prices.csv @@ -0,0 +1,7 @@ +label,price,percent +Price as of 02/27/2018,$254.07, +Change,'-$3.23,'-1.26% +SEC yield,,1.67% +52-week high 01/26/2018,$265.42, +52-week low 04/13/2017,$215.11, +Range,$50.31,23.39% diff --git a/investments-dashboard/data/df_dividend.csv b/investments-dashboard/data/df_dividend.csv new file mode 100644 index 0000000..9a2e8ef --- /dev/null +++ b/investments-dashboard/data/df_dividend.csv @@ -0,0 +1,8 @@ +A,B,C,D,E,F,G,H +Distribution Type,Most Recent Distribution,Record Date,Reinvest Date,Payable Date,Reinvest Price,Distribution Yield,SEC Yield +Dividend,$1.12620,12/21/2017,12/22/2017,12/26/2017,$247.63,—,1.77% B +Dividend,$1.12900,09/18/2017,09/19/2017,09/20/2017,$231.32,—,— +Dividend,$0.96000,06/21/2017,06/22/2017,06/23/2017,$224.71,—,— +Dividend,$0.96100,03/20/2017,03/21/2017,03/22/2017,$216.27,—,— +Dividend,$1.25400,12/20/2016,12/21/2016,12/22/2016,$208.90,—,— +Dividend,$0.85200,09/09/2016,09/12/2016,09/13/2016,$199.17,—,— diff --git a/investments-dashboard/data/df_equity_char.csv b/investments-dashboard/data/df_equity_char.csv new file mode 100644 index 0000000..766bdf9 --- /dev/null +++ b/investments-dashboard/data/df_equity_char.csv @@ -0,0 +1,13 @@ +A,B,C +'-,500 Index Fund Inv,S&P 500 Index +Number of stocks,507,505 +Median market cap,$105.4 billion,$105.4 billion +Price/earnings ratio,23.9x,24.3x +Price/book ratio,3.3x,3.3x +Return on equity,16.1%,16.1% +Earnings growth rate,9.9%,8.9% +Foreign holdings,0.1%,— +Turnover rate (as of fiscal year end December),4.1%,— +Short-term reserves,0.0%,— +Fund total net assets,$421.1 billion,— +Share class total net assets,$29.0 billion,— diff --git a/investments-dashboard/data/df_equity_diver.csv b/investments-dashboard/data/df_equity_diver.csv new file mode 100644 index 0000000..ef345d8 --- /dev/null +++ b/investments-dashboard/data/df_equity_diver.csv @@ -0,0 +1,14 @@ +A,B,C +'-,500 Index Fund Inv as of 01/31/2018,S&P 500 Index as of 01/31/2018 +Consumer Discretionary,12.60%,12.60% +Consumer Staples,7.90%,7.90% +Energy,6.00%,6.00% +Financials,14.90%,14.90% +Health Care,13.90%,13.90% +Industrials,10.30%,10.30% +Information Technology,24.20%,24.20% +Materials,2.90%,2.90% +Other,0.00%,— +Real Estate,2.70%,2.70% +Telecommunication Services,1.90%,1.90% +Utilities,2.70%,2.70% diff --git a/investments-dashboard/data/df_expenses.csv b/investments-dashboard/data/df_expenses.csv new file mode 100644 index 0000000..5fa99cf --- /dev/null +++ b/investments-dashboard/data/df_expenses.csv @@ -0,0 +1,4 @@ +A,B +'-,Expense Ratio +500 Index Fund Inv,0.14% +Average expense ratio of similar funds*,0.99% diff --git a/investments-dashboard/data/df_fund_facts.csv b/investments-dashboard/data/df_fund_facts.csv new file mode 100644 index 0000000..9136141 --- /dev/null +++ b/investments-dashboard/data/df_fund_facts.csv @@ -0,0 +1,7 @@ +label,value +Asset Class,Domestic Stock - General +Category,Large Blend +Expense ratio as of 04/27/2017,0.14% +Minimum investment,"""$3,000""" +Fund number,0040 +Fund advisor,Equity Index Group diff --git a/investments-dashboard/data/df_graph.csv b/investments-dashboard/data/df_graph.csv new file mode 100644 index 0000000..6ca62e7 --- /dev/null +++ b/investments-dashboard/data/df_graph.csv @@ -0,0 +1,2564 @@ +Date,Calibre Index Fund,"""Nasdaq Composite, x""","""Nasdaq Composite, y""","""MSCI EAFE Index Fund (ETF), x""",MSCI EAFE Index Fund (ETF),"""Dow Jones Industrial Average, y""","""S&P 500 Index, y""" +2007-12-31,135.149994,2018-02-07,7051.97998,2008-01-02,78.22,13264.820313,1468.359985 +2008-01-02,133.220001,2018-02-08,6777.160156,2008-01-03,78.35,13043.959961,1447.160034 +2008-01-03,133.220001,2018-02-09,6874.490234000001,2008-01-04,76.57,13056.719727,1447.160034 +2008-01-04,129.949997,2018-02-12,6981.959961,2008-01-07,76.65,12800.179688,1411.630005 +2008-01-07,130.369995,2018-02-13,7013.509765999999,2008-01-08,76.22,12827.490234,1416.180054 +2008-01-08,128.020004,2018-02-14,7143.620117,2008-01-09,76.77,12589.070313,1390.189941 +2008-01-09,129.770004,2018-02-15,7256.430176000001,2008-01-10,76.69,12735.30957,1409.130005 +2008-01-10,130.800003,2018-02-16,7239.470215,2008-01-11,75.16,12853.089844,1420.329956 +2008-01-11,129.03999299999998,2018-02-20,7234.310059,2008-01-14,76.36,12606.299805,1401.02002 +2008-01-14,130.440002,2018-02-21,7218.22998,2008-01-15,73.88,12778.150391,1416.25 +2008-01-15,127.190002,2018-02-22,7210.089844,2008-01-16,72.39,12501.110352,1380.949951 +2008-01-16,126.480003,2018-02-23,7337.390137,2008-01-17,71.3,12466.160156,1373.199951 +2008-01-17,122.809998,2018-02-26,7421.459961,2008-01-18,71.71,12159.209961,1333.25 +2008-01-18,122.07,2018-02-27,7330.350098000001,2008-01-22,69.71,12099.299805,1325.189941 +2008-01-22,120.709999,2018-02-28,7273.009765999999,2008-01-23,69.3,11971.19043,1310.5 +2008-01-23,123.300003,2018-03-01,7180.560059,2008-01-24,71.73,12270.169922,1338.599976 +2008-01-24,124.540001,2018-03-02,7257.870117,2008-01-25,70.69,12378.610352,1352.069946 +2008-01-25,122.57,2018-03-05,7330.709961,2008-01-28,71.48,12207.169922,1330.609985 +2008-01-28,124.720001,2018-03-06,7372.009765999999,2008-01-29,71.91,12383.889648,1353.959961 +2008-01-29,125.5,,,2008-01-30,71.58,12480.299805,1362.300049 +2008-01-30,124.910004,,,2008-01-31,72.34,12442.830078,1355.810059 +2008-01-31,127.019997,,,2008-02-01,73.55,12650.360352,1378.550049 +2008-02-01,128.580002,,,2008-02-04,72.8,12743.19043,1395.420044 +2008-02-04,127.230003,,,2008-02-05,69.46,12635.160156,1380.819946 +2008-02-05,123.16999799999999,,,2008-02-06,69.4,12265.129883,1336.640015 +2008-02-06,122.279999,,,2008-02-07,69.05,12200.099609,1326.449951 +2008-02-07,123.279999,,,2008-02-08,68.34,12247.0,1336.910034 +2008-02-08,122.760002,,,2008-02-11,68.7,12182.129883,1331.290039 +2008-02-11,123.489998,,,2008-02-12,70.18,12240.009766,1339.130005 +2008-02-12,124.389999,,,2008-02-13,70.66,12373.410156,1348.859985 +2008-02-13,126.129997,,,2008-02-14,70.34,12552.240234,1367.209961 +2008-02-14,124.440002,,,2008-02-15,70.6,12376.980469,1348.859985 +2008-02-15,124.550003,,,2008-02-19,71.29,12348.209961,1349.98999 +2008-02-19,124.449997,,,2008-02-20,70.92,12337.219727,1348.780029 +2008-02-20,125.489998,,,2008-02-21,70.79,12427.259766,1360.030029 +2008-02-21,123.91999799999999,,,2008-02-22,71.69,12284.299805,1342.530029 +2008-02-22,124.910004,,,2008-02-25,72.83,12381.019531,1353.109985 +2008-02-25,126.639999,,,2008-02-26,73.91,12570.219727,1371.800049 +2008-02-26,127.519997,,,2008-02-27,74.15,12684.919922,1381.290039 +2008-02-27,127.43,,,2008-02-28,73.44,12694.280273,1380.02002 +2008-02-28,126.300003,,,2008-02-29,71.6,12582.179688,1367.680054 +2008-02-29,122.889999,,,2008-03-03,71.81,12266.389648,1330.630005 +2008-03-03,122.949997,,,2008-03-04,70.72,12258.900391,1331.339966 +2008-03-04,122.529999,,,2008-03-05,71.57,12213.799805,1326.75 +2008-03-05,123.230003,,,2008-03-06,70.55,12254.990234,1333.699951 +2008-03-06,120.540001,,,2008-03-07,69.72,12040.389648,1304.339966 +2008-03-07,119.519997,,,2008-03-10,69.37,11893.69043,1293.369995 +2008-03-10,117.690002,,,2008-03-11,71.56,11740.150391,1273.369995 +2008-03-11,122.059998,,,2008-03-12,71.56,12156.80957,1320.650024 +2008-03-12,120.989998,,,2008-03-13,71.68,12110.240234,1308.77002 +2008-03-13,121.620003,,,2008-03-14,69.95,12145.740234,1315.47998 +2008-03-14,119.089996,,,2008-03-17,68.89,11951.089844,1288.140015 +2008-03-17,118.040001,,,2008-03-18,71.0,11972.25,1276.599976 +2008-03-18,123.050003,,,2008-03-19,68.43,12392.660156,1330.73999 +2008-03-19,120.059998,,,2008-03-20,69.46,12099.660156,1298.420044 +2008-03-20,122.940002,,,2008-03-24,70.73,12361.320313,1329.51001 +2008-03-24,124.82,,,2008-03-25,71.76,12548.639648,1349.880005 +2008-03-25,125.110001,,,2008-03-26,71.76,12532.599609,1352.98999 +2008-03-26,124.019997,,,2008-03-27,71.7,12422.860352,1341.130005 +2008-03-27,122.019997,,,2008-03-28,71.64,12302.459961,1325.76001 +2008-03-28,121.059998,,,2008-03-31,71.9,12216.400391,1315.219971 +2008-03-31,121.75,,,2008-04-01,74.17,12262.889648,1322.699951 +2008-04-01,126.120003,,,2008-04-02,74.33,12654.360352,1370.180054 +2008-04-02,125.900002,,,2008-04-03,74.55,12608.919922,1367.530029 +2008-04-03,126.059998,,,2008-04-04,74.8,12626.030273,1369.310059 +2008-04-04,126.160004,,,2008-04-07,75.26,12609.419922,1370.400024 +2008-04-07,126.360001,,,2008-04-08,74.47,12612.429688,1372.540039 +2008-04-08,125.760002,,,2008-04-09,73.86,12576.44043,1365.540039 +2008-04-09,124.75,,,2008-04-10,73.63,12527.259766,1354.48999 +2008-04-10,125.309998,,,2008-04-11,72.64,12581.980469,1360.550049 +2008-04-11,122.769997,,,2008-04-14,72.8,12325.419922,1332.829956 +2008-04-14,122.349998,,,2008-04-15,73.31,12302.05957,1328.319946 +2008-04-15,122.91999799999999,,,2008-04-16,75.62,12362.469727,1334.430054 +2008-04-16,125.720001,,,2008-04-17,74.78,12619.269531,1364.709961 +2008-04-17,125.809998,,,2008-04-18,75.31,12620.490234,1365.560059 +2008-04-18,128.080002,,,2008-04-21,75.9,12849.360352,1390.329956 +2008-04-21,127.889999,,,2008-04-22,75.11,12825.019531,1388.170044 +2008-04-22,126.760002,,,2008-04-23,75.5,12720.230469,1375.939941 +2008-04-23,127.129997,,,2008-04-24,75.01,12763.219727,1379.930054 +2008-04-24,127.949997,,,2008-04-25,75.63,12848.950195,1388.819946 +2008-04-25,128.779999,,,2008-04-28,76.07,12891.860352,1397.839966 +2008-04-28,128.649994,,,2008-04-29,75.4,12871.75,1396.369995 +2008-04-29,128.149994,,,2008-04-30,75.81,12831.94043,1390.939941 +2008-04-30,127.66999799999999,,,2008-05-01,76.27,12820.129883,1385.589966 +2008-05-01,129.880005,,,2008-05-02,76.48,13010.0,1409.339966 +2008-05-02,130.300003,,,2008-05-05,76.61,13058.200195,1413.900024 +2008-05-05,129.720001,,,2008-05-06,77.18,12969.540039,1407.48999 +2008-05-06,130.71000700000002,,,2008-05-07,75.83,13020.830078,1418.26001 +2008-05-07,128.399994,,,2008-05-08,76.49,12814.349609,1392.569946 +2008-05-08,128.869995,,,2008-05-09,75.88,12866.780273,1397.680054 +2008-05-09,128.029999,,,2008-05-12,76.64,12745.879883,1388.280029 +2008-05-12,129.449997,,,2008-05-13,76.38,12876.30957,1403.579956 +2008-05-13,129.429993,,,2008-05-14,76.38,12832.179688,1403.040039 +2008-05-14,129.970001,,,2008-05-15,77.68,12898.379883,1408.660034 +2008-05-15,131.369995,,,2008-05-16,78.52,12992.660156,1423.569946 +2008-05-16,131.53999299999998,,,2008-05-19,78.2,12986.799805,1425.349976 +2008-05-19,131.669998,,,2008-05-20,77.48,13028.160156,1426.630005 +2008-05-20,130.449997,,,2008-05-21,76.6,12828.679688,1413.400024 +2008-05-21,128.360001,,,2008-05-22,77.49,12601.19043,1390.709961 +2008-05-22,128.720001,,,2008-05-23,76.61,12625.620117,1394.349976 +2008-05-23,127.019997,,,2008-05-27,76.46,12479.629883,1375.930054 +2008-05-27,127.889999,,,2008-05-28,76.45,12548.349609,1385.349976 +2008-05-28,128.419998,,,2008-05-29,76.28,12594.030273,1390.839966 +2008-05-29,129.119995,,,2008-05-30,76.71,12646.219727,1398.26001 +2008-05-30,129.309998,,,2008-06-02,75.91,12638.320313,1400.380005 +2008-06-02,127.959999,,,2008-06-03,75.75,12503.820313,1385.670044 +2008-06-03,127.220001,,,2008-06-04,75.31,12402.849609,1377.650024 +2008-06-04,127.239998,,,2008-06-05,76.56,12390.480469,1377.199951 +2008-06-05,129.729996,,,2008-06-06,74.36,12604.450195,1404.050049 +2008-06-06,125.739998,,,2008-06-09,74.26,12209.80957,1360.680054 +2008-06-09,125.839996,,,2008-06-10,73.0,12280.320313,1361.76001 +2008-06-10,125.540001,,,2008-06-11,72.07,12289.759766,1358.439941 +2008-06-11,123.440002,,,2008-06-12,71.82,12083.769531,1335.48999 +2008-06-12,123.860001,,,2008-06-13,72.48,12141.580078,1339.869995 +2008-06-13,125.720001,,,2008-06-16,72.85,12307.349609,1360.030029 +2008-06-16,125.730003,,,2008-06-17,73.07,12269.080078,1360.140015 +2008-06-17,124.879997,,,2008-06-18,72.47,12160.299805,1350.930054 +2008-06-18,123.66999799999999,,,2008-06-19,72.33,12029.05957,1337.810059 +2008-06-19,124.16999799999999,,,2008-06-20,70.75,12063.089844,1342.829956 +2008-06-20,121.870003,,,2008-06-23,70.74,11842.69043,1317.930054 +2008-06-23,121.870003,,,2008-06-24,70.42,11842.360352,1318.0 +2008-06-24,121.529999,,,2008-06-25,69.85,11807.429688,1314.290039 +2008-06-25,122.25,,,2008-06-26,68.08,11811.830078,1321.969971 +2008-06-26,118.120003,,,2008-06-27,68.26,11453.419922,1283.150024 +2008-06-27,117.68,,,2008-06-30,68.67,11346.509766,1278.380005 +2008-06-30,117.83000200000001,,,2008-07-01,67.93,11350.009766,1280.0 +2008-07-01,118.309998,,,2008-07-02,66.85,11382.259766,1284.910034 +2008-07-02,116.160004,,,2008-07-03,67.28,11215.509766,1261.52002 +2008-07-03,116.290001,,,2008-07-07,66.7,11288.540039,1262.900024 +2008-07-07,115.32,,,2008-07-08,67.05,11231.959961,1252.310059 +2008-07-08,117.33000200000001,,,2008-07-09,66.18,11384.209961,1273.699951 +2008-07-09,114.66999799999999,,,2008-07-10,66.75,11147.44043,1244.689941 +2008-07-10,115.470001,,,2008-07-11,65.7,11229.019531,1253.390015 +2008-07-11,114.199997,,,2008-07-14,65.56,11100.540039,1239.48999 +2008-07-14,113.16999799999999,,,2008-07-15,64.51,11055.19043,1228.300049 +2008-07-15,111.940002,,,2008-07-16,65.7,10962.540039,1214.910034 +2008-07-16,114.760002,,,2008-07-17,66.7,11239.280273,1245.359985 +2008-07-17,116.139999,,,2008-07-18,67.13,11446.660156,1260.319946 +2008-07-18,116.18,,,2008-07-21,67.52,11496.570313,1260.680054 +2008-07-21,116.120003,,,2008-07-22,67.75,11467.339844,1260.0 +2008-07-22,117.690002,,,2008-07-23,68.0,11602.5,1277.0 +2008-07-23,118.160004,,,2008-07-24,66.76,11632.379883,1282.189941 +2008-07-24,115.43,,,2008-07-25,66.9,11349.280273,1252.540039 +2008-07-25,115.91999799999999,,,2008-07-28,65.78,11370.69043,1257.76001 +2008-07-28,113.760002,,,2008-07-29,66.43,11131.080078,1234.369995 +2008-07-29,116.43,,,2008-07-30,67.05,11397.55957,1263.199951 +2008-07-30,118.379997,,,2008-07-31,66.39,11583.69043,1284.26001 +2008-07-31,116.849998,,,2008-08-01,65.4,11378.019531,1267.380005 +2008-08-01,116.199997,,,2008-08-04,64.78,11326.320313,1260.310059 +2008-08-04,115.160004,,,2008-08-05,66.42,11284.150391,1249.01001 +2008-08-05,118.470001,,,2008-08-06,66.44,11615.769531,1284.880005 +2008-08-06,118.93,,,2008-08-07,65.11,11656.070313,1289.189941 +2008-08-07,116.809998,,,2008-08-08,65.38,11431.429688,1266.069946 +2008-08-08,119.599998,,,2008-08-11,65.32,11734.320313,1296.319946 +2008-08-11,120.459999,,,2008-08-12,64.85,11782.349609,1305.319946 +2008-08-12,119.010002,,,2008-08-13,63.83,11642.469727,1289.589966 +2008-08-13,118.709999,,,2008-08-14,63.58,11532.959961,1285.829956 +2008-08-14,119.370003,,,2008-08-15,63.16,11615.929688,1292.930054 +2008-08-15,119.870003,,,2008-08-18,62.84,11659.900391,1298.199951 +2008-08-18,118.07,,,2008-08-19,62.13,11479.389648,1278.599976 +2008-08-19,116.980003,,,2008-08-20,62.5,11348.549805,1266.689941 +2008-08-20,117.709999,,,2008-08-21,62.75,11417.429688,1274.540039 +2008-08-21,118.010002,,,2008-08-22,63.04,11430.209961,1277.719971 +2008-08-22,119.360001,,,2008-08-25,62.05,11628.05957,1292.199951 +2008-08-25,117.019997,,,2008-08-26,62.36,11386.25,1266.839966 +2008-08-26,117.449997,,,2008-08-27,62.95,11412.870117,1271.51001 +2008-08-27,118.410004,,,2008-08-28,63.76,11502.509766,1281.660034 +2008-08-28,120.18,,,2008-08-29,63.57,11715.179688,1300.680054 +2008-08-29,118.540001,,,2008-09-02,62.59,11543.959961,1282.829956 +2008-09-02,118.050003,,,2008-09-03,62.33,11516.919922,1277.579956 +2008-09-03,117.870003,,,2008-09-04,59.66,11532.879883,1274.97998 +2008-09-04,114.349998,,,2008-09-05,59.44,11188.230469,1236.829956 +2008-09-05,114.860001,,,2008-09-08,60.77,11220.959961,1242.310059 +2008-09-08,117.230003,,,2008-09-09,58.8,11510.740234,1267.790039 +2008-09-09,113.230003,,,2008-09-10,59.37,11230.730469,1224.51001 +2008-09-10,113.93,,,2008-09-11,59.24,11268.919922,1232.040039 +2008-09-11,115.540001,,,2008-09-12,60.4,11433.709961,1249.050049 +2008-09-12,115.790001,,,2008-09-15,57.83,11421.990234,1251.699951 +2008-09-15,110.360001,,,2008-09-16,57.4,10917.509766,1192.699951 +2008-09-16,112.269997,,,2008-09-17,55.21,11059.019531,1213.599976 +2008-09-17,106.980003,,,2008-09-18,57.72,10609.660156,1156.390015 +2008-09-18,111.639999,,,2008-09-19,61.81,11019.69043,1206.51001 +2008-09-19,116.139999,,,2008-09-22,59.7,11388.44043,1255.079956 +2008-09-22,111.709999,,,2008-09-23,58.86,11015.69043,1207.089966 +2008-09-23,109.959999,,,2008-09-24,59.03,10854.169922,1188.219971 +2008-09-24,109.75,,,2008-09-25,60.39,10825.169922,1185.869995 +2008-09-25,111.269997,,,2008-09-26,59.75,11022.05957,1209.180054 +2008-09-26,111.650002,,,2008-09-29,53.08,11143.129883,1213.27002 +2008-09-29,101.849998,,,2008-09-30,56.3,10365.450195,1106.420044 +2008-09-30,107.370003,,,2008-10-01,55.88,10850.660156,1166.359985 +2008-10-01,106.900002,,,2008-10-02,53.44,10831.070313,1161.060059 +2008-10-02,102.610001,,,2008-10-03,53.23,10482.849609,1114.280029 +2008-10-03,101.230003,,,2008-10-06,50.22,10325.379883,1099.22998 +2008-10-06,97.33000200000001,,,2008-10-07,47.87,9955.5,1056.890015 +2008-10-07,91.739998,,,2008-10-08,46.8,9447.110352,996.2299800000001 +2008-10-08,90.75,,,2008-10-09,44.0,9258.099609,984.9400019999999 +2008-10-09,83.839996,,,2008-10-10,42.36,8579.19043,909.919983 +2008-10-10,82.870003,,,2008-10-13,49.09,8451.19043,899.2199710000001 +2008-10-13,92.459999,,,2008-10-14,48.08,9387.610352,1003.349976 +2008-10-14,91.970001,,,2008-10-15,42.95,9310.990234,998.01001 +2008-10-15,83.66999799999999,,,2008-10-16,45.48,8577.910156,907.840027 +2008-10-16,87.230003,,,2008-10-17,44.51,8979.259766,946.429993 +2008-10-17,86.690002,,,2008-10-20,47.35,8852.219727,940.5499880000001 +2008-10-20,90.82,,,2008-10-21,44.68,9265.429688,985.400024 +2008-10-21,88.029999,,,2008-10-22,41.18,9033.660156,955.0499880000001 +2008-10-22,82.66999799999999,,,2008-10-23,42.33,8519.209961,896.7800289999999 +2008-10-23,83.720001,,,2008-10-24,39.59,8691.25,908.1099849999999 +2008-10-24,80.82,,,2008-10-27,37.51,8378.950195,876.7700199999999 +2008-10-27,78.25,,,2008-10-28,42.68,8175.77002,848.919983 +2008-10-28,86.699997,,,2008-10-29,42.78,9065.120117,940.51001 +2008-10-29,85.75,,,2008-10-30,44.28,8990.959961,930.090027 +2008-10-30,87.989998,,,2008-10-31,44.57,9180.69043,954.090027 +2008-10-31,89.339996,,,2008-11-03,44.75,9325.009766,968.75 +2008-11-03,89.120003,,,2008-11-04,47.82,9319.830078,966.2999880000001 +2008-11-04,92.75,,,2008-11-05,45.22,9625.280273,1005.75 +2008-11-05,87.91999799999999,,,2008-11-06,42.3,9139.269531,952.7700199999999 +2008-11-06,83.519997,,,2008-11-07,44.69,8695.790039,904.8800050000001 +2008-11-07,85.959999,,,2008-11-10,44.02,8943.80957,930.98999 +2008-11-10,84.889999,,,2008-11-11,42.57,8870.540039,919.2100220000001 +2008-11-11,83.010002,,,2008-11-12,40.28,8693.959961,898.9500119999999 +2008-11-12,78.75,,,2008-11-13,43.71,8282.660156,852.2999880000001 +2008-11-13,84.199997,,,2008-11-14,41.2,8835.25,911.2899779999999 +2008-11-14,80.699997,,,2008-11-17,40.45,8497.30957,873.2899779999999 +2008-11-17,78.629997,,,2008-11-18,40.52,8273.580078,850.75 +2008-11-18,79.43,,,2008-11-19,37.81,8424.75,859.1199949999999 +2008-11-19,74.58000200000001,,,2008-11-20,35.73,7997.279785,806.580017 +2008-11-20,69.57,,,2008-11-21,38.27,7552.290039,752.4400019999999 +2008-11-21,73.989998,,,2008-11-24,40.56,8046.419922,800.030029 +2008-11-24,78.779999,,,2008-11-25,41.3,8443.389648,851.8099980000001 +2008-11-25,79.300003,,,2008-11-26,41.75,8479.469727,857.3900150000001 +2008-11-26,82.139999,,,2008-11-28,41.73,8726.610352,887.679993 +2008-11-28,82.93,,,2008-12-01,38.32,8829.040039,896.23999 +2008-12-01,75.540001,,,2008-12-02,40.4,8149.089844,816.210022 +2008-12-02,78.559998,,,2008-12-03,40.94,8419.089844,848.8099980000001 +2008-12-03,80.629997,,,2008-12-04,39.68,8591.69043,870.73999 +2008-12-04,78.269997,,,2008-12-05,40.18,8376.240234,845.2199710000001 +2008-12-05,81.120003,,,2008-12-08,42.09,8635.419922,876.070007 +2008-12-08,84.25,,,2008-12-09,41.7,8934.179688,909.7000119999999 +2008-12-09,82.309998,,,2008-12-10,42.8,8691.330078,888.669983 +2008-12-10,83.290001,,,2008-12-11,42.61,8761.419922,899.23999 +2008-12-11,80.940002,,,2008-12-12,43.03,8565.089844,873.590027 +2008-12-12,81.510002,,,2008-12-15,43.14,8629.679688,879.7299800000001 +2008-12-15,80.489998,,,2008-12-16,45.62,8564.530273,868.570007 +2008-12-16,84.620003,,,2008-12-17,45.49,8924.139648,913.179993 +2008-12-17,83.809998,,,2008-12-18,44.0,8824.339844,904.419983 +2008-12-18,82.050003,,,2008-12-19,43.36,8604.990234,885.2800289999999 +2008-12-19,82.269997,,,2008-12-22,43.06,8579.110352,887.8800050000001 +2008-12-22,80.779999,,,2008-12-23,42.2,8519.69043,871.6300050000001 +2008-12-23,80.0,,,2008-12-24,42.76,8419.490234,863.159973 +2008-12-24,80.5,,,2008-12-26,42.96,8468.480469,868.150024 +2008-12-26,80.230003,,,2008-12-29,42.97,8515.549805,872.7999880000001 +2008-12-29,79.970001,,,2008-12-30,44.26,8483.929688,869.419983 +2008-12-30,81.93,,,2008-12-31,44.86,8668.389648,890.6400150000001 +2008-12-31,83.089996,,,2009-01-02,45.44,8776.389648,903.25 +2009-01-02,85.75,,,2009-01-05,44.71,9034.69043,931.7999880000001 +2009-01-05,85.349998,,,2009-01-06,45.19,8952.889648,927.4500119999999 +2009-01-06,86.019997,,,2009-01-07,44.41,9015.099609,934.7000119999999 +2009-01-07,83.480003,,,2009-01-08,45.07,8769.700195,906.650024 +2009-01-08,83.769997,,,2009-01-09,43.51,8742.459961,909.7299800000001 +2009-01-09,81.980003,,,2009-01-12,42.46,8599.179688,890.349976 +2009-01-12,80.139999,,,2009-01-13,41.68,8473.969727,870.26001 +2009-01-13,80.279999,,,2009-01-14,39.97,8448.55957,871.7899779999999 +2009-01-14,77.599998,,,2009-01-15,40.33,8200.139648,842.6199949999999 +2009-01-15,77.709999,,,2009-01-16,40.57,8212.490234,843.73999 +2009-01-16,78.300003,,,2009-01-20,37.6,8281.219727,850.1199949999999 +2009-01-20,74.16999799999999,,,2009-01-21,39.44,7949.089844,805.219971 +2009-01-21,77.400002,,,2009-01-22,38.52,8228.099609,840.23999 +2009-01-22,76.230003,,,2009-01-23,38.25,8122.799805,827.5 +2009-01-23,76.639999,,,2009-01-26,39.0,8077.560059,831.950012 +2009-01-26,77.059998,,,2009-01-27,39.76,8116.029785,836.570007 +2009-01-27,77.910004,,,2009-01-28,40.93,8174.72998,845.7100220000001 +2009-01-28,80.529999,,,2009-01-29,39.07,8375.450195,874.090027 +2009-01-29,77.870003,,,2009-01-30,38.7,8149.009765999999,845.1400150000001 +2009-01-30,76.099998,,,2009-02-02,38.32,8000.859863,825.880005 +2009-02-02,76.050003,,,2009-02-03,39.42,7936.75,825.4400019999999 +2009-02-03,77.260002,,,2009-02-04,39.22,8078.359863,838.51001 +2009-02-04,76.739998,,,2009-02-05,39.78,7956.660156,832.22998 +2009-02-05,78.0,,,2009-02-06,40.7,8063.069823999999,845.849976 +2009-02-06,80.129997,,,2009-02-09,40.69,8280.589844,868.599976 +2009-02-09,80.25,,,2009-02-10,38.67,8270.870117,869.8900150000001 +2009-02-10,76.309998,,,2009-02-11,39.09,7888.879883,827.159973 +2009-02-11,76.949997,,,2009-02-12,38.97,7939.529785,833.73999 +2009-02-12,77.099998,,,2009-02-13,38.55,7932.759765999999,835.1900019999999 +2009-02-13,76.33000200000001,,,2009-02-17,36.5,7850.410156,826.840027 +2009-02-17,72.870003,,,2009-02-18,36.47,7552.600098000001,789.169983 +2009-02-18,72.809998,,,2009-02-19,36.42,7555.629883,788.419983 +2009-02-19,71.989998,,,2009-02-20,35.89,7465.950195,778.9400019999999 +2009-02-20,71.190002,,,2009-02-23,34.52,7365.669922,770.049988 +2009-02-23,68.720001,,,2009-02-24,35.96,7114.779785,743.330017 +2009-02-24,71.470001,,,2009-02-25,34.97,7350.939941,773.1400150000001 +2009-02-25,70.730003,,,2009-02-26,34.68,7270.890137,764.900024 +2009-02-26,69.629997,,,2009-02-27,34.68,7182.080078,752.830017 +2009-02-27,67.989998,,,2009-03-02,32.69,7062.930176000001,735.090027 +2009-03-02,64.83000200000001,,,2009-03-03,32.56,6763.290039,700.820007 +2009-03-03,64.400002,,,2009-03-04,34.01,6726.02002,696.330017 +2009-03-04,65.959999,,,2009-03-05,32.64,6875.839844,712.869995 +2009-03-05,63.16,,,2009-03-06,32.58,6594.439941,682.549988 +2009-03-06,63.259997999999996,,,2009-03-09,31.7,6626.939941,683.380005 +2009-03-09,62.650002,,,2009-03-10,33.83,6547.049805,676.530029 +2009-03-10,66.629997,,,2009-03-11,34.02,6926.490234000001,719.599976 +2009-03-11,66.82,,,2009-03-12,34.79,6930.399901999999,721.3599849999999 +2009-03-12,69.550003,,,2009-03-13,35.02,7170.060059,750.73999 +2009-03-13,70.089996,,,2009-03-16,35.4,7223.97998,756.549988 +2009-03-16,69.839996,,,2009-03-17,36.33,7216.970215,753.8900150000001 +2009-03-17,72.08000200000001,,,2009-03-18,37.37,7395.700195,778.119995 +2009-03-18,73.57,,,2009-03-19,37.35,7486.580078,794.349976 +2009-03-19,72.629997,,,2009-03-20,36.83,7400.799805,784.039978 +2009-03-20,71.199997,,,2009-03-23,39.48,7278.379883,768.539978 +2009-03-23,76.239998,,,2009-03-24,38.24,7775.859863,822.919983 +2009-03-24,74.690002,,,2009-03-25,38.83,7659.970215,806.119995 +2009-03-25,75.410004,,,2009-03-26,39.35,7749.810059,813.880005 +2009-03-26,76.639999,,,2009-03-27,38.09,7924.560059,832.8599849999999 +2009-03-27,75.110001,,,2009-03-30,36.64,7776.180176000001,815.9400019999999 +2009-03-30,72.489998,,,2009-03-31,37.59,7522.02002,787.530029 +2009-03-31,73.440002,,,2009-04-01,38.57,7608.919922,797.869995 +2009-04-01,74.66999799999999,,,2009-04-02,40.31,7761.600098000001,811.080017 +2009-04-02,76.82,,,2009-04-03,40.54,7978.080078,834.380005 +2009-04-03,77.57,,,2009-04-06,39.7,8017.589844,842.5 +2009-04-06,76.91999799999999,,,2009-04-07,38.87,7975.850098000001,835.47998 +2009-04-07,75.139999,,,2009-04-08,39.26,7789.560059,815.549988 +2009-04-08,76.029999,,,2009-04-09,40.31,7837.109863,825.159973 +2009-04-09,78.91999799999999,,,2009-04-13,40.71,8083.379883,856.5599980000001 +2009-04-13,79.110001,,,2009-04-14,40.32,8057.810059,858.7299800000001 +2009-04-14,77.519997,,,2009-04-15,40.85,7920.180176000001,841.5 +2009-04-15,78.5,,,2009-04-16,41.11,8029.620117,852.0599980000001 +2009-04-16,79.720001,,,2009-04-17,40.97,8125.430176000001,865.2999880000001 +2009-04-17,80.120003,,,2009-04-20,39.29,8131.330078,869.599976 +2009-04-20,76.709999,,,2009-04-21,40.19,7841.72998,832.3900150000001 +2009-04-21,78.33000200000001,,,2009-04-22,39.87,7969.560059,850.080017 +2009-04-22,77.739998,,,2009-04-23,40.87,7886.569823999999,843.5499880000001 +2009-04-23,78.519997,,,2009-04-24,41.5,7957.060059,851.919983 +2009-04-24,79.839996,,,2009-04-27,41.01,8076.290039,866.2299800000001 +2009-04-27,79.040001,,,2009-04-28,40.62,8025.0,857.51001 +2009-04-28,78.82,,,2009-04-29,41.66,8016.950195,855.159973 +2009-04-29,80.529999,,,2009-04-30,41.92,8185.72998,873.6400150000001 +2009-04-30,80.459999,,,2009-05-01,42.41,8168.120117,872.8099980000001 +2009-05-01,80.900002,,,2009-05-04,44.17,8212.410156,877.5200199999999 +2009-05-04,83.639999,,,2009-05-05,43.73,8426.740234,907.23999 +2009-05-05,83.339996,,,2009-05-06,44.79,8410.650391,903.7999880000001 +2009-05-06,84.800003,,,2009-05-07,44.04,8512.280273,919.5300289999999 +2009-05-07,83.699997,,,2009-05-08,45.95,8409.849609,907.3900150000001 +2009-05-08,85.699997,,,2009-05-11,44.78,8574.650391,929.2299800000001 +2009-05-11,83.910004,,,2009-05-12,45.26,8418.769531,909.23999 +2009-05-12,83.83000200000001,,,2009-05-13,43.72,8469.110352,908.349976 +2009-05-13,81.610001,,,2009-05-14,44.15,8284.889648,883.919983 +2009-05-14,82.459999,,,2009-05-15,43.75,8331.320313,893.070007 +2009-05-15,81.550003,,,2009-05-18,45.42,8268.639648,882.8800050000001 +2009-05-18,84.029999,,,2009-05-19,45.83,8504.080078,909.7100220000001 +2009-05-19,83.900002,,,2009-05-20,46.13,8474.849609,908.1300050000001 +2009-05-20,83.470001,,,2009-05-21,45.78,8422.040039,903.4699710000001 +2009-05-21,82.099998,,,2009-05-22,46.04,8292.129883,888.330017 +2009-05-22,81.980003,,,2009-05-26,46.96,8277.320313,887.0 +2009-05-26,84.139999,,,2009-05-27,46.05,8473.490234,910.330017 +2009-05-27,82.559998,,,2009-05-28,46.52,8300.019531,893.0599980000001 +2009-05-28,83.839996,,,2009-05-29,47.45,8403.799805,906.830017 +2009-05-29,84.980003,,,2009-06-01,48.62,8500.330078,919.1400150000001 +2009-06-01,87.16999799999999,,,2009-06-02,49.04,8721.44043,942.8699949999999 +2009-06-02,87.349998,,,2009-06-03,47.58,8740.870117,944.73999 +2009-06-03,86.16999799999999,,,2009-06-04,47.88,8675.240234,931.76001 +2009-06-04,87.18,,,2009-06-05,47.29,8750.240234,942.4600220000001 +2009-06-05,86.959999,,,2009-06-08,47.19,8763.129883,940.090027 +2009-06-08,86.900002,,,2009-06-09,47.77,8764.490234,939.1400150000001 +2009-06-09,87.209999,,,2009-06-10,47.86,8763.05957,942.429993 +2009-06-10,86.910004,,,2009-06-11,48.68,8739.019531,939.150024 +2009-06-11,87.459999,,,2009-06-12,48.43,8770.919922,944.8900150000001 +2009-06-12,87.58000200000001,,,2009-06-15,46.69,8799.259766,946.2100220000001 +2009-06-15,85.510002,,,2009-06-16,46.15,8612.129883,923.7199710000001 +2009-06-16,84.43,,,2009-06-17,46.28,8504.669922,911.9699710000001 +2009-06-17,84.32,,,2009-06-18,46.2,8497.179688,910.7100220000001 +2009-06-18,85.040001,,,2009-06-19,46.93,8555.599609,918.3699949999999 +2009-06-19,85.300003,,,2009-06-22,45.42,8539.730469,921.2299800000001 +2009-06-22,82.709999,,,2009-06-23,45.06,8339.009766,893.0399779999999 +2009-06-23,82.459999,,,2009-06-24,45.1,8322.910156,895.099976 +2009-06-24,83.010002,,,2009-06-25,46.05,8299.860352,900.9400019999999 +2009-06-25,84.790001,,,2009-06-26,45.96,8472.400391,920.26001 +2009-06-26,84.68,,,2009-06-29,46.35,8438.389648,918.900024 +2009-06-29,85.440002,,,2009-06-30,45.81,8529.379883,927.2299800000001 +2009-06-30,84.720001,,,2009-07-01,46.57,8447.0,919.320007 +2009-07-01,85.099998,,,2009-07-02,45.23,8504.05957,923.330017 +2009-07-02,82.629997,,,2009-07-06,45.29,8280.740234,896.419983 +2009-07-06,82.839996,,,2009-07-07,44.19,8324.870117,898.7199710000001 +2009-07-07,81.209999,,,2009-07-08,44.01,8163.600098000001,881.0300289999999 +2009-07-08,81.120003,,,2009-07-09,44.55,8178.410156,879.5599980000001 +2009-07-09,81.410004,,,2009-07-10,44.03,8183.169922,882.679993 +2009-07-10,81.08000200000001,,,2009-07-13,44.8,8146.52002,879.1300050000001 +2009-07-13,83.099998,,,2009-07-14,45.04,8331.679688,901.0499880000001 +2009-07-14,83.540001,,,2009-07-15,46.58,8359.490234,905.840027 +2009-07-15,86.029999,,,2009-07-16,46.99,8616.209961,932.679993 +2009-07-16,86.779999,,,2009-07-17,46.82,8711.820313,940.73999 +2009-07-17,86.75,,,2009-07-20,47.73,8743.94043,940.3800050000001 +2009-07-20,87.739998,,,2009-07-21,48.03,8848.150391,951.1300050000001 +2009-07-21,88.07,,,2009-07-22,48.15,8915.94043,954.580017 +2009-07-22,88.019997,,,2009-07-23,48.96,8881.259766,954.070007 +2009-07-23,90.08000200000001,,,2009-07-24,49.26,9069.290039,976.2899779999999 +2009-07-24,90.360001,,,2009-07-27,49.31,9093.240234,979.26001 +2009-07-27,90.629997,,,2009-07-28,49.1,9108.509766,982.179993 +2009-07-28,90.389999,,,2009-07-29,48.7,9096.719727,979.6199949999999 +2009-07-29,89.989998,,,2009-07-30,49.65,9070.719727,975.150024 +2009-07-30,91.07,,,2009-07-31,50.41,9154.459961,986.75 +2009-07-31,91.139999,,,2009-08-03,51.58,9171.610352,987.4799800000001 +2009-08-03,92.540001,,,2009-08-04,51.5,9286.55957,1002.6300050000001 +2009-08-04,92.82,,,2009-08-05,51.29,9320.19043,1005.650024 +2009-08-05,92.58000200000001,,,2009-08-06,50.97,9280.969727,1002.7199710000001 +2009-08-06,92.07,,,2009-08-07,50.92,9256.259766,997.080017 +2009-08-07,93.300003,,,2009-08-10,50.61,9370.070313,1010.4799800000001 +2009-08-10,92.989998,,,2009-08-12,50.89,9337.950195,1007.099976 +2009-08-11,91.839996,,,2009-08-13,51.67,9241.450195,994.349976 +2009-08-12,92.93,,,2009-08-14,51.23,9361.610352,1005.8099980000001 +2009-08-13,93.58000200000001,,,2009-08-17,49.58,9398.19043,1012.7299800000001 +2009-08-14,92.779999,,,2009-08-18,50.44,9321.400391,1004.090027 +2009-08-17,90.550003,,,2009-08-19,50.87,9135.339844,979.7299800000001 +2009-08-18,91.489998,,,2009-08-20,51.23,9217.94043,989.669983 +2009-08-19,92.129997,,,2009-08-21,52.35,9279.160156,996.4600220000001 +2009-08-20,93.139999,,,2009-08-24,52.34,9350.049805,1007.3699949999999 +2009-08-21,94.889999,,,2009-08-25,52.86,9505.959961,1026.130005 +2009-08-24,94.839996,,,2009-08-26,52.64,9509.280273,1025.569946 +2009-08-25,95.059998,,,2009-08-27,53.04,9539.290039,1028.0 +2009-08-26,95.089996,,,2009-08-28,53.07,9543.519531,1028.119995 +2009-08-27,95.360001,,,2009-08-31,52.68,9580.629883,1030.97998 +2009-08-28,95.18,,,2009-09-01,51.37,9544.200195,1028.930054 +2009-08-31,94.41999799999999,,,2009-09-02,51.31,9496.280273,1020.6199949999999 +2009-09-01,92.33000200000001,,,2009-09-03,51.71,9310.599609,998.0399779999999 +2009-09-02,92.050003,,,2009-09-04,52.5,9280.669922,994.75 +2009-09-03,92.839996,,,2009-09-08,53.54,9344.610352,1003.23999 +2009-09-04,94.07,,,2009-09-09,54.2,9441.269531,1016.400024 +2009-09-08,94.910004,,,2009-09-10,54.68,9497.339844,1025.390015 +2009-09-09,95.650002,,,2009-09-11,54.61,9547.219727,1033.369995 +2009-09-10,96.650002,,,2009-09-14,54.72,9627.480469,1044.140015 +2009-09-11,96.540001,,,2009-09-15,54.73,9605.410156,1042.72998 +2009-09-14,97.150002,,,2009-09-16,55.81,9626.799805,1049.339966 +2009-09-15,97.459999,,,2009-09-17,55.45,9683.410156,1052.630005 +2009-09-16,98.959999,,,2009-09-18,55.6,9791.709961,1068.76001 +2009-09-17,98.66999799999999,,,2009-09-21,55.01,9783.919922,1065.48999 +2009-09-18,98.93,,,2009-09-22,55.77,9820.200195,1068.300049 +2009-09-21,98.589996,,,2009-09-23,55.29,9778.860352,1064.660034 +2009-09-22,99.239998,,,2009-09-24,54.48,9829.870117,1071.660034 +2009-09-23,98.239998,,,2009-09-25,54.25,9748.549805,1060.869995 +2009-09-24,97.32,,,2009-09-28,54.99,9707.44043,1050.780029 +2009-09-25,96.730003,,,2009-09-29,54.66,9665.19043,1044.380005 +2009-09-28,97.980003,,,2009-09-30,54.68,9789.360352,1062.97998 +2009-09-29,97.769997,,,2009-10-01,53.25,9742.200195,1060.609985 +2009-09-30,97.449997,,,2009-10-02,52.66,9712.280273,1057.079956 +2009-10-01,94.940002,,,2009-10-05,53.42,9509.280273,1029.849976 +2009-10-02,94.519997,,,2009-10-06,54.32,9487.669922,1025.209961 +2009-10-05,95.91999799999999,,,2009-10-07,54.52,9599.75,1040.459961 +2009-10-06,97.239998,,,2009-10-08,55.31,9731.25,1054.719971 +2009-10-07,97.550003,,,2009-10-09,55.17,9725.580078,1057.579956 +2009-10-08,98.279999,,,2009-10-12,55.5,9786.870117,1065.47998 +2009-10-09,98.839996,,,2009-10-13,55.38,9864.94043,1071.48999 +2009-10-12,99.269997,,,2009-10-14,56.71,9885.799805,1076.189941 +2009-10-13,99.0,,,2009-10-15,56.97,9871.05957,1073.189941 +2009-10-14,100.739998,,,2009-10-16,56.11,10015.860352,1092.02002 +2009-10-15,101.160004,,,2009-10-19,57.01,10062.94043,1096.560059 +2009-10-16,100.339996,,,2009-10-20,56.71,9995.910156,1087.680054 +2009-10-19,101.279999,,,2009-10-21,56.52,10092.19043,1097.910034 +2009-10-20,100.660004,,,2009-10-22,57.07,10041.480469,1091.060059 +2009-10-21,99.779999,,,2009-10-23,56.17,9949.360352,1081.400024 +2009-10-22,100.849998,,,2009-10-26,55.32,10081.30957,1092.910034 +2009-10-23,99.620003,,,2009-10-27,54.88,9972.179688,1079.599976 +2009-10-26,98.449997,,,2009-10-28,53.56,9867.959961,1066.949951 +2009-10-27,98.120003,,,2009-10-29,55.14,9882.169922,1063.410034 +2009-10-28,96.220001,,,2009-10-30,53.3,9762.69043,1042.630005 +2009-10-29,98.389999,,,2009-11-02,53.82,9962.580078,1066.109985 +2009-10-30,95.629997,,,2009-11-03,53.61,9712.730469,1036.189941 +2009-11-02,96.25,,,2009-11-04,54.15,9789.44043,1042.880005 +2009-11-03,96.480003,,,2009-11-05,54.85,9771.910156,1045.410034 +2009-11-04,96.620003,,,2009-11-06,55.01,9802.139648,1046.5 +2009-11-05,98.480003,,,2009-11-09,56.55,10005.959961,1066.630005 +2009-11-06,98.739998,,,2009-11-10,56.25,10023.419922,1069.300049 +2009-11-09,100.959999,,,2009-11-11,56.42,10226.94043,1093.079956 +2009-11-10,100.980003,,,2009-11-12,55.6,10246.969727,1093.01001 +2009-11-11,101.489998,,,2009-11-13,56.38,10291.259766,1098.51001 +2009-11-12,100.459999,,,2009-11-16,57.28,10197.469727,1087.23999 +2009-11-13,101.040001,,,2009-11-17,56.9,10270.469727,1093.47998 +2009-11-16,102.519997,,,2009-11-18,56.72,10406.959961,1109.300049 +2009-11-17,102.620003,,,2009-11-19,55.65,10437.419922,1110.319946 +2009-11-18,102.589996,,,2009-11-20,55.34,10426.30957,1109.800049 +2009-11-19,101.209999,,,2009-11-23,56.33,10332.44043,1094.900024 +2009-11-20,100.910004,,,2009-11-24,56.1,10318.160156,1091.380005 +2009-11-23,102.279999,,,2009-11-25,56.85,10450.950195,1106.23999 +2009-11-24,102.239998,,,2009-11-27,55.21,10433.709961,1105.650024 +2009-11-25,102.709999,,,2009-11-30,55.39,10464.400391,1110.630005 +2009-11-27,100.959999,,,2009-12-01,56.91,10309.919922,1091.48999 +2009-11-30,101.349998,,,2009-12-02,57.0,10344.839844,1095.630005 +2009-12-01,102.58000200000001,,,2009-12-03,56.87,10471.580078,1108.859985 +2009-12-02,102.629997,,,2009-12-04,56.67,10452.679688,1109.23999 +2009-12-03,101.769997,,,2009-12-07,56.36,10366.150391,1099.920044 +2009-12-04,102.33000200000001,,,2009-12-08,55.38,10388.900391,1105.97998 +2009-12-07,102.08000200000001,,,2009-12-09,55.31,10390.110352,1103.25 +2009-12-08,101.050003,,,2009-12-10,55.48,10285.969727,1091.939941 +2009-12-09,101.43,,,2009-12-11,55.46,10337.049805,1095.949951 +2009-12-10,102.029999,,,2009-12-14,56.0,10405.830078,1102.349976 +2009-12-11,102.41999799999999,,,2009-12-15,55.38,10471.5,1106.410034 +2009-12-14,103.139999,,,2009-12-16,56.03,10501.049805,1114.109985 +2009-12-15,102.57,,,2009-12-17,54.71,10452.0,1107.930054 +2009-12-16,102.690002,,,2009-12-18,54.84,10441.120117,1109.180054 +2009-12-17,101.480003,,,2009-12-21,55.0,10308.259766,1096.079956 +2009-12-18,102.07,,,2009-12-22,54.85,10328.889648,1102.469971 +2009-12-21,103.150002,,,2009-12-23,55.35,10414.139648,1114.050049 +2009-12-22,103.519997,,,2009-12-24,55.57,10464.929688,1118.02002 +2009-12-23,103.790001,,,2009-12-28,55.81,10466.44043,1120.589966 +2009-12-24,104.339996,,,2009-12-29,55.9,10520.089844,1126.47998 +2009-12-28,103.809998,,,2009-12-30,55.67,10547.080078,1127.780029 +2009-12-29,103.68,,,2009-12-31,55.28,10545.410156,1126.199951 +2009-12-30,103.709999,,,2010-01-04,56.73,10548.509766,1126.420044 +2009-12-31,102.66999799999999,,,2010-01-05,56.78,10428.049805,1115.099976 +2010-01-04,104.32,,,2010-01-06,57.02,10583.959961,1132.98999 +2010-01-05,104.639999,,,2010-01-07,56.8,10572.019531,1136.52002 +2010-01-06,104.75,,,2010-01-08,57.25,10573.679688,1137.140015 +2010-01-07,105.16999799999999,,,2010-01-11,57.72,10606.860352,1141.689941 +2010-01-08,105.480003,,,2010-01-12,57.04,10618.19043,1144.97998 +2010-01-11,105.660004,,,2010-01-13,57.52,10663.990234,1146.97998 +2010-01-12,104.66999799999999,,,2010-01-14,57.96,10627.259766,1136.219971 +2010-01-13,105.550003,,,2010-01-15,57.05,10680.769531,1145.680054 +2010-01-14,105.809998,,,2010-01-19,57.61,10710.549805,1148.459961 +2010-01-15,104.66999799999999,,,2010-01-20,56.14,10609.650391,1136.030029 +2010-01-19,105.970001,,,2010-01-21,54.94,10725.429688,1150.22998 +2010-01-20,104.860001,,,2010-01-22,53.87,10603.150391,1138.040039 +2010-01-21,102.879997,,,2010-01-25,54.53,10389.879883,1116.47998 +2010-01-22,100.599998,,,2010-01-26,54.22,10172.980469,1091.76001 +2010-01-25,101.059998,,,2010-01-27,54.16,10196.860352,1096.780029 +2010-01-26,100.639999,,,2010-01-28,53.25,10194.290039,1092.170044 +2010-01-27,101.139999,,,2010-01-29,52.48,10236.160156,1097.5 +2010-01-28,99.949997,,,2010-02-01,53.44,10120.459961,1084.530029 +2010-01-29,98.970001,,,2010-02-02,54.33,10067.330078,1073.869995 +2010-02-01,100.379997,,,2010-02-03,53.76,10185.530273,1089.189941 +2010-02-02,101.68,,,2010-02-04,51.57,10296.849609,1103.319946 +2010-02-03,101.160004,,,2010-02-05,51.48,10270.549805,1097.280029 +2010-02-04,98.010002,,,2010-02-08,50.46,10002.179688,1063.109985 +2010-02-05,98.290001,,,2010-02-09,52.05,10012.230469,1066.189941 +2010-02-08,97.449997,,,2010-02-10,51.72,9908.389648,1056.73999 +2010-02-09,98.730003,,,2010-02-11,52.2,10058.639648,1070.52002 +2010-02-10,98.529999,,,2010-02-12,51.75,10038.379883,1068.130005 +2010-02-11,99.5,,,2010-02-16,52.9,10144.19043,1078.469971 +2010-02-12,99.25,,,2010-02-17,52.97,10099.139648,1075.51001 +2010-02-16,101.050003,,,2010-02-18,53.27,10268.80957,1094.869995 +2010-02-17,101.5,,,2010-02-19,52.94,10309.240234,1099.51001 +2010-02-18,102.16999799999999,,,2010-02-22,53.04,10392.900391,1106.75 +2010-02-19,102.410004,,,2010-02-23,52.29,10402.349609,1109.170044 +2010-02-22,102.300003,,,2010-02-24,52.62,10383.379883,1108.01001 +2010-02-23,101.07,,,2010-02-25,52.3,10282.410156,1094.599976 +2010-02-24,102.07,,,2010-02-26,52.62,10374.160156,1105.23999 +2010-02-25,101.879997,,,2010-03-01,53.03,10321.030273,1102.939941 +2010-02-26,102.029999,,,2010-03-02,53.43,10325.259766,1104.48999 +2010-03-01,103.059998,,,2010-03-03,54.07,10403.790039,1115.709961 +2010-03-02,103.300003,,,2010-03-04,53.93,10405.980469,1118.310059 +2010-03-03,103.360001,,,2010-03-05,54.98,10396.759766,1118.790039 +2010-03-04,103.75,,,2010-03-08,54.98,10444.139648,1122.969971 +2010-03-05,105.209999,,,2010-03-09,54.85,10566.200195,1138.699951 +2010-03-08,105.209999,,,2010-03-10,55.08,10552.519531,1138.5 +2010-03-09,105.389999,,,2010-03-11,55.29,10564.379883,1140.449951 +2010-03-10,105.879997,,,2010-03-12,55.66,10567.330078,1145.609985 +2010-03-11,106.33000200000001,,,2010-03-15,55.27,10611.839844,1150.23999 +2010-03-12,106.309998,,,2010-03-16,55.97,10624.69043,1149.98999 +2010-03-15,106.360001,,,2010-03-17,56.27,10642.150391,1150.51001 +2010-03-16,107.199997,,,2010-03-18,55.94,10685.980469,1159.459961 +2010-03-17,107.83000200000001,,,2010-03-19,55.37,10733.669922,1166.209961 +2010-03-18,107.790001,,,2010-03-22,55.53,10779.169922,1165.829956 +2010-03-19,107.239998,,,2010-03-23,55.92,10741.980469,1159.900024 +2010-03-22,107.790001,,,2010-03-24,55.0,10785.889648,1165.810059 +2010-03-23,108.58000200000001,,,2010-03-25,54.97,10888.830078,1174.170044 +2010-03-24,107.980003,,,2010-03-26,55.51,10836.150391,1167.719971 +2010-03-25,107.800003,,,2010-03-29,55.98,10841.209961,1165.72998 +2010-03-26,107.879997,,,2010-03-30,55.98,10850.360352,1166.589966 +2010-03-29,108.07,,,2010-03-31,55.98,10895.860352,1173.219971 +2010-03-30,108.089996,,,2010-04-01,56.97,10907.419922,1173.27002 +2010-03-31,107.730003,,,2010-04-05,57.03,10856.629883,1169.430054 +2010-04-01,108.540001,,,2010-04-06,56.87,10927.070313,1178.099976 +2010-04-05,109.400002,,,2010-04-07,56.47,10973.549805,1187.439941 +2010-04-06,109.589996,,,2010-04-08,56.41,10969.990234,1189.439941 +2010-04-07,108.989998,,,2010-04-09,57.15,10897.519531,1182.449951 +2010-04-08,109.360001,,,2010-04-12,57.33,10927.070313,1186.439941 +2010-04-09,110.089996,,,2010-04-13,57.28,10997.349609,1194.369995 +2010-04-12,110.290001,,,2010-04-14,58.04,11005.969727,1196.47998 +2010-04-13,110.370003,,,2010-04-15,58.0,11019.419922,1197.300049 +2010-04-14,111.599998,,,2010-04-16,56.72,11123.110352,1210.650024 +2010-04-15,111.699997,,,2010-04-19,56.57,11144.570313,1211.670044 +2010-04-16,109.900002,,,2010-04-20,56.92,11018.660156,1192.130005 +2010-04-19,110.389999,,,2010-04-21,56.55,11092.049805,1197.52002 +2010-04-20,111.279999,,,2010-04-22,56.04,11117.05957,1207.170044 +2010-04-21,111.16999799999999,,,2010-04-23,56.46,11124.919922,1205.939941 +2010-04-22,111.43,,,2010-04-26,56.52,11134.290039,1208.670044 +2010-04-23,112.220001,,,2010-04-27,54.25,11204.280273,1217.280029 +2010-04-26,111.739998,,,2010-04-28,54.26,11205.030273,1212.050049 +2010-04-27,109.120003,,,2010-04-29,55.1,10991.990234,1183.709961 +2010-04-28,109.849998,,,2010-04-30,54.41,11045.269531,1191.359985 +2010-04-29,111.279999,,,2010-05-03,54.8,11167.320313,1206.780029 +2010-04-30,109.43,,,2010-05-04,52.63,11008.610352,1186.689941 +2010-05-03,110.860001,,,2010-05-05,51.62,11151.830078,1202.26001 +2010-05-04,108.220001,,,2010-05-06,49.32,10926.769531,1173.599976 +2010-05-05,107.540001,,,2010-05-07,49.21,10866.830078,1165.869995 +2010-05-06,104.08000200000001,,,2010-05-10,52.4,10520.320313,1128.150024 +2010-05-07,102.480003,,,2010-05-11,51.55,10380.429688,1110.880005 +2010-05-10,106.989998,,,2010-05-12,52.13,10785.139648,1159.72998 +2010-05-11,106.650002,,,2010-05-13,51.45,10748.259766,1155.790039 +2010-05-12,108.150002,,,2010-05-14,49.99,10896.910156,1171.670044 +2010-05-13,106.849998,,,2010-05-17,50.06,10782.950195,1157.439941 +2010-05-14,104.839996,,,2010-05-18,48.98,10620.160156,1135.680054 +2010-05-17,104.970001,,,2010-05-19,49.17,10625.830078,1136.939941 +2010-05-18,103.5,,,2010-05-20,47.46,10510.950195,1120.800049 +2010-05-19,102.980003,,,2010-05-21,48.62,10444.370117,1115.050049 +2010-05-20,98.970001,,,2010-05-24,47.51,10068.009766,1071.589966 +2010-05-21,100.459999,,,2010-05-25,47.32,10193.389648,1087.689941 +2010-05-24,99.160004,,,2010-05-26,46.62,10066.570313,1073.650024 +2010-05-25,99.199997,,,2010-05-27,49.27,10043.75,1074.030029 +2010-05-26,98.650002,,,2010-05-28,48.32,9974.450195,1067.949951 +2010-05-27,101.93,,,2010-06-01,47.84,10258.990234,1103.060059 +2010-05-28,100.68,,,2010-06-02,49.12,10136.629883,1089.410034 +2010-06-01,98.949997,,,2010-06-03,48.97,10024.019531,1070.709961 +2010-06-02,101.519997,,,2010-06-04,46.88,10249.540039,1098.380005 +2010-06-03,101.940002,,,2010-06-07,46.29,10255.280273,1102.829956 +2010-06-04,98.43,,,2010-06-08,47.03,9931.969727,1064.880005 +2010-06-07,97.110001,,,2010-06-09,46.86,9816.490234,1050.469971 +2010-06-08,98.190002,,,2010-06-10,48.84,9939.980469,1062.0 +2010-06-09,97.610001,,,2010-06-11,48.91,9899.25,1055.689941 +2010-06-10,100.489998,,,2010-06-14,49.22,10172.530273,1086.839966 +2010-06-11,100.959999,,,2010-06-15,50.78,10211.070313,1091.599976 +2010-06-14,100.779999,,,2010-06-16,50.54,10190.889648,1089.630005 +2010-06-15,103.150002,,,2010-06-17,50.7,10404.769531,1115.22998 +2010-06-16,103.099998,,,2010-06-18,50.61,10409.459961,1114.609985 +2010-06-17,103.239998,,,2010-06-21,50.6,10434.169922,1116.040039 +2010-06-18,103.379997,,,2010-06-22,49.96,10450.639648,1117.51001 +2010-06-21,102.980003,,,2010-06-23,49.43,10442.410156,1113.199951 +2010-06-22,101.339996,,,2010-06-24,48.57,10293.519531,1095.310059 +2010-06-23,101.040001,,,2010-06-25,48.85,10298.44043,1092.040039 +2010-06-24,99.339996,,,2010-06-28,48.49,10152.799805,1073.689941 +2010-06-25,99.620003,,,2010-06-29,46.83,10143.80957,1076.76001 +2010-06-28,98.93,,,2010-06-30,46.51,10138.519531,1074.569946 +2010-06-29,95.870003,,,2010-07-01,47.19,9870.299805,1041.23999 +2010-06-30,94.910004,,,2010-07-02,47.09,9774.019531,1030.709961 +2010-07-01,94.610001,,,2010-07-06,48.03,9732.530273,1027.369995 +2010-07-02,94.16999799999999,,,2010-07-07,49.52,9686.480469,1022.580017 +2010-07-06,94.66999799999999,,,2010-07-08,50.01,9743.620117,1028.060059 +2010-07-07,97.690002,,,2010-07-09,50.06,10018.280273,1060.27002 +2010-07-08,98.610001,,,2010-07-12,49.87,10138.990234,1070.25 +2010-07-09,99.32,,,2010-07-13,50.79,10198.030273,1077.959961 +2010-07-12,99.389999,,,2010-07-14,50.97,10216.269531,1078.75 +2010-07-13,100.93,,,2010-07-15,51.22,10363.019531,1095.339966 +2010-07-14,100.910004,,,2010-07-16,49.58,10366.719727,1095.170044 +2010-07-15,101.029999,,,2010-07-19,49.9,10359.30957,1096.47998 +2010-07-16,98.129997,,,2010-07-20,50.24,10097.900391,1064.880005 +2010-07-19,98.709999,,,2010-07-21,49.33,10154.429688,1071.25 +2010-07-20,99.839996,,,2010-07-22,50.99,10229.959961,1083.47998 +2010-07-21,98.57,,,2010-07-23,51.59,10120.530273,1069.589966 +2010-07-22,100.800003,,,2010-07-26,51.95,10322.299805,1093.670044 +2010-07-23,101.629997,,,2010-07-27,52.1,10424.620117,1102.660034 +2010-07-26,102.760002,,,2010-07-28,51.83,10525.429688,1115.01001 +2010-07-27,102.660004,,,2010-07-29,52.07,10537.69043,1113.839966 +2010-07-28,101.949997,,,2010-07-30,51.91,10497.879883,1106.130005 +2010-07-29,101.540001,,,2010-08-02,53.66,10467.160156,1101.530029 +2010-07-30,101.550003,,,2010-08-03,53.58,10465.94043,1101.599976 +2010-08-02,103.790001,,,2010-08-04,53.63,10674.379883,1125.859985 +2010-08-03,103.290001,,,2010-08-05,53.59,10636.379883,1120.459961 +2010-08-04,103.949997,,,2010-08-06,53.75,10680.429688,1127.23999 +2010-08-05,103.82,,,2010-08-09,53.81,10674.980469,1125.810059 +2010-08-06,103.449997,,,2010-08-10,53.38,10653.55957,1121.640015 +2010-08-09,104.010002,,,2010-08-11,50.95,10698.75,1127.790039 +2010-08-10,103.400002,,,2010-08-12,50.89,10644.25,1121.060059 +2010-08-11,100.529999,,,2010-08-13,50.71,10378.830078,1089.469971 +2010-08-12,100.0,,,2010-08-16,51.12,10319.950195,1083.609985 +2010-08-13,99.599998,,,2010-08-17,51.69,10303.150391,1079.25 +2010-08-16,99.620003,,,2010-08-18,51.67,10302.009766,1079.380005 +2010-08-17,100.860001,,,2010-08-19,50.84,10405.849609,1092.540039 +2010-08-18,101.029999,,,2010-08-20,50.31,10415.540039,1094.160034 +2010-08-19,99.32,,,2010-08-23,50.21,10271.209961,1075.630005 +2010-08-20,98.949997,,,2010-08-24,49.52,10213.620117,1071.689941 +2010-08-23,98.550003,,,2010-08-25,49.57,10174.410156,1067.359985 +2010-08-24,97.129997,,,2010-08-26,49.55,10040.450195,1051.869995 +2010-08-25,97.459999,,,2010-08-27,50.52,10060.05957,1055.329956 +2010-08-26,96.709999,,,2010-08-30,49.79,9985.80957,1047.219971 +2010-08-27,98.339996,,,2010-08-31,49.94,10150.650391,1064.589966 +2010-08-30,96.910004,,,2010-09-01,51.72,10009.730469,1048.920044 +2010-08-31,96.949997,,,2010-09-02,52.01,10014.719727,1049.329956 +2010-09-01,99.82,,,2010-09-03,52.49,10269.469727,1080.290039 +2010-09-02,100.739998,,,2010-09-07,51.76,10320.099609,1090.099976 +2010-09-03,102.07,,,2010-09-08,52.16,10447.929688,1104.51001 +2010-09-07,100.910004,,,2010-09-09,52.65,10340.69043,1091.839966 +2010-09-08,101.58000200000001,,,2010-09-10,52.81,10387.009766,1098.869995 +2010-09-09,102.07,,,2010-09-13,53.77,10415.240234,1104.180054 +2010-09-10,102.57,,,2010-09-14,54.13,10462.769531,1109.550049 +2010-09-13,103.739998,,,2010-09-15,54.15,10544.129883,1121.900024 +2010-09-14,103.66999799999999,,,2010-09-16,53.89,10526.490234,1121.099976 +2010-09-15,104.040001,,,2010-09-17,53.63,10572.730469,1125.069946 +2010-09-16,104.019997,,,2010-09-20,54.56,10594.830078,1124.660034 +2010-09-17,104.099998,,,2010-09-21,54.55,10607.849609,1125.589966 +2010-09-20,105.690002,,,2010-09-22,54.47,10753.620117,1142.709961 +2010-09-21,105.41999799999999,,,2010-09-23,53.88,10761.030273,1139.780029 +2010-09-22,104.91999799999999,,,2010-09-24,55.38,10739.30957,1134.280029 +2010-09-23,103.519997,,,2010-09-27,55.1,10662.419922,1124.829956 +2010-09-24,105.709999,,,2010-09-28,55.42,10860.259766,1148.670044 +2010-09-27,105.120003,,,2010-09-29,55.33,10812.040039,1142.160034 +2010-09-28,105.639999,,,2010-09-30,54.92,10858.139648,1147.699951 +2010-09-29,105.379997,,,2010-10-01,55.47,10835.280273,1144.72998 +2010-09-30,105.059998,,,2010-10-04,54.67,10788.049805,1141.199951 +2010-10-01,105.519997,,,2010-10-05,56.22,10829.679688,1146.23999 +2010-10-04,104.68,,,2010-10-06,56.69,10751.269531,1137.030029 +2010-10-05,106.860001,,,2010-10-07,56.5,10944.719727,1160.75 +2010-10-06,106.849998,,,2010-10-08,56.87,10967.650391,1159.969971 +2010-10-07,106.66999799999999,,,2010-10-11,56.8,10948.580078,1158.060059 +2010-10-08,107.32,,,2010-10-12,56.68,11006.480469,1165.150024 +2010-10-11,107.339996,,,2010-10-13,57.32,11010.339844,1165.319946 +2010-10-12,107.75,,,2010-10-14,57.72,11020.400391,1169.77002 +2010-10-13,108.519997,,,2010-10-15,57.53,11096.080078,1178.099976 +2010-10-14,108.129997,,,2010-10-18,57.66,11094.570313,1173.810059 +2010-10-15,108.349998,,,2010-10-19,56.39,11062.780273,1176.189941 +2010-10-18,109.129997,,,2010-10-20,57.45,11143.69043,1184.709961 +2010-10-19,107.400002,,,2010-10-21,57.14,10978.620117,1165.900024 +2010-10-20,108.550003,,,2010-10-22,57.29,11107.969727,1178.170044 +2010-10-21,108.75,,,2010-10-25,57.51,11146.570313,1180.26001 +2010-10-22,109.0,,,2010-10-26,57.14,11132.55957,1183.079956 +2010-10-25,109.239998,,,2010-10-27,56.59,11164.049805,1185.619995 +2010-10-26,109.239998,,,2010-10-28,57.03,11169.459961,1185.640015 +2010-10-27,108.959999,,,2010-10-29,57.01,11126.280273,1182.449951 +2010-10-28,109.089996,,,2010-11-01,56.8,11113.950195,1183.780029 +2010-10-29,109.040001,,,2010-11-02,57.74,11118.490234,1183.26001 +2010-11-01,109.139999,,,2010-11-03,58.14,11124.620117,1184.380005 +2010-11-02,109.989998,,,2010-11-04,59.46,11188.719727,1193.569946 +2010-11-03,110.41999799999999,,,2010-11-05,59.2,11215.129883,1197.959961 +2010-11-04,112.559998,,,2010-11-08,58.84,11434.839844,1221.060059 +2010-11-05,113.010002,,,2010-11-09,58.25,11444.080078,1225.849976 +2010-11-08,112.779999,,,2010-11-10,58.42,11406.839844,1223.25 +2010-11-09,111.910004,,,2010-11-11,57.92,11346.75,1213.400024 +2010-11-10,112.41999799999999,,,2010-11-12,57.44,11357.040039,1218.709961 +2010-11-11,111.949997,,,2010-11-15,57.4,11283.099609,1213.540039 +2010-11-12,110.629997,,,2010-11-16,56.05,11192.580078,1199.209961 +2010-11-15,110.5,,,2010-11-17,56.36,11201.969727,1197.75 +2010-11-16,108.739998,,,2010-11-18,57.77,11023.5,1178.339966 +2010-11-17,108.779999,,,2010-11-19,57.77,11007.879883,1178.589966 +2010-11-18,110.449997,,,2010-11-22,57.15,11181.230469,1196.689941 +2010-11-19,110.739998,,,2010-11-23,55.43,11203.549805,1199.72998 +2010-11-22,110.57,,,2010-11-24,56.31,11178.580078,1197.839966 +2010-11-23,108.989998,,,2010-11-26,55.37,11036.370117,1180.72998 +2010-11-24,110.620003,,,2010-11-29,54.88,11187.280273,1198.349976 +2010-11-26,109.82,,,2010-11-30,54.26,11091.870117,1189.400024 +2010-11-29,109.699997,,,2010-12-01,55.8,11052.490234,1187.76001 +2010-11-30,109.040001,,,2010-12-02,56.86,11006.019531,1180.550049 +2010-12-01,111.410004,,,2010-12-03,57.41,11255.780273,1206.069946 +2010-12-02,112.839996,,,2010-12-06,57.15,11362.410156,1221.530029 +2010-12-03,113.139999,,,2010-12-07,57.18,11382.089844,1224.709961 +2010-12-06,113.0,,,2010-12-08,57.35,11362.19043,1223.119995 +2010-12-07,113.059998,,,2010-12-09,57.5,11359.160156,1223.75 +2010-12-08,113.510002,,,2010-12-10,57.63,11372.480469,1228.280029 +2010-12-09,113.949997,,,2010-12-13,58.25,11370.05957,1233.0 +2010-12-10,114.639999,,,2010-12-14,58.34,11410.320313,1240.400024 +2010-12-13,114.660004,,,2010-12-15,57.57,11428.55957,1240.459961 +2010-12-14,114.760002,,,2010-12-16,57.89,11476.540039,1241.589966 +2010-12-15,114.18,,,2010-12-17,57.57,11457.469727,1235.22998 +2010-12-16,114.889999,,,2010-12-20,57.7,11499.25,1242.869995 +2010-12-17,114.980003,,,2010-12-21,57.64,11491.910156,1243.910034 +2010-12-20,115.279999,,,2010-12-22,57.75,11478.129883,1247.079956 +2010-12-21,115.989998,,,2010-12-23,57.72,11533.160156,1254.599976 +2010-12-22,116.400002,,,2010-12-27,57.6,11559.490234,1258.839966 +2010-12-23,115.720001,,,2010-12-28,57.65,11573.490234,1256.77002 +2010-12-27,115.790001,,,2010-12-29,58.15,11555.030273,1257.540039 +2010-12-28,115.879997,,,2010-12-30,57.87,11575.540039,1258.51001 +2010-12-29,116.019997,,,2010-12-31,58.22,11585.379883,1259.780029 +2010-12-30,115.839996,,,2011-01-03,58.7,11569.709961,1257.880005 +2010-12-31,115.82,,,2011-01-04,58.52,11577.509766,1257.640015 +2011-01-03,117.129997,,,2011-01-05,58.27,11670.75,1271.869995 +2011-01-04,116.980003,,,2011-01-06,57.6,11691.179688,1270.199951 +2011-01-05,117.58000200000001,,,2011-01-07,57.37,11722.889648,1276.560059 +2011-01-06,117.379997,,,2011-01-10,57.27,11697.30957,1273.849976 +2011-01-07,117.160004,,,2011-01-11,57.66,11674.759766,1271.5 +2011-01-10,117.0,,,2011-01-12,58.93,11637.450195,1269.75 +2011-01-11,117.43,,,2011-01-13,59.09,11671.879883,1274.47998 +2011-01-12,118.5,,,2011-01-14,59.45,11755.44043,1285.959961 +2011-01-13,118.300003,,,2011-01-18,59.84,11731.900391,1283.76001 +2011-01-14,119.18,,,2011-01-19,59.43,11787.379883,1293.23999 +2011-01-18,119.349998,,,2011-01-20,58.92,11837.929688,1295.02002 +2011-01-19,118.150002,,,2011-01-21,59.24,11825.290039,1281.920044 +2011-01-20,118.0,,,2011-01-24,59.87,11822.799805,1280.26001 +2011-01-21,118.290001,,,2011-01-25,59.75,11871.839844,1283.349976 +2011-01-24,118.980003,,,2011-01-26,60.13,11980.519531,1290.839966 +2011-01-25,119.010002,,,2011-01-27,60.27,11977.19043,1291.180054 +2011-01-26,119.519997,,,2011-01-28,58.93,11985.44043,1296.630005 +2011-01-27,119.790001,,,2011-01-31,59.44,11989.830078,1299.540039 +2011-01-28,117.650002,,,2011-02-01,60.85,11823.700195,1276.339966 +2011-01-31,118.550003,,,2011-02-02,60.78,11891.929688,1286.119995 +2011-02-01,120.529999,,,2011-02-03,60.81,12040.160156,1307.589966 +2011-02-02,120.220001,,,2011-02-04,60.79,12041.969727,1304.030029 +2011-02-03,120.519997,,,2011-02-07,60.98,12062.259766,1307.099976 +2011-02-04,120.870003,,,2011-02-08,61.38,12092.150391,1310.869995 +2011-02-07,121.629997,,,2011-02-09,61.2,12161.629883,1319.050049 +2011-02-08,122.16999799999999,,,2011-02-10,60.8,12233.150391,1324.569946 +2011-02-09,121.849998,,,2011-02-11,60.83,12239.889648,1320.880005 +2011-02-10,121.949997,,,2011-02-14,60.95,12229.290039,1321.869995 +2011-02-11,122.639999,,,2011-02-15,60.82,12273.259766,1329.150024 +2011-02-14,122.949997,,,2011-02-16,61.5,12268.19043,1332.319946 +2011-02-15,122.57,,,2011-02-17,61.71,12226.639648,1328.01001 +2011-02-16,123.360001,,,2011-02-18,61.91,12288.169922,1336.319946 +2011-02-17,123.75,,,2011-02-22,60.13,12318.139648,1340.430054 +2011-02-18,123.989998,,,2011-02-23,60.22,12391.25,1343.01001 +2011-02-22,121.440002,,,2011-02-24,60.27,12212.790039,1315.439941 +2011-02-23,120.699997,,,2011-02-25,61.04,12105.780273,1307.400024 +2011-02-24,120.610001,,,2011-02-28,61.55,12068.5,1306.099976 +2011-02-25,121.91999799999999,,,2011-03-01,60.69,12130.450195,1319.880005 +2011-02-28,122.599998,,,2011-03-02,60.99,12226.339844,1327.219971 +2011-03-01,120.66999799999999,,,2011-03-03,61.79,12058.019531,1306.329956 +2011-03-02,120.879997,,,2011-03-04,61.23,12066.799805,1308.439941 +2011-03-03,122.970001,,,2011-03-07,60.62,12258.200195,1330.969971 +2011-03-04,122.059998,,,2011-03-08,60.85,12169.879883,1321.150024 +2011-03-07,121.050003,,,2011-03-09,60.85,12090.030273,1310.130005 +2011-03-08,122.150002,,,2011-03-10,59.35,12214.379883,1321.819946 +2011-03-09,122.0,,,2011-03-11,59.34,12213.089844,1320.02002 +2011-03-10,119.699997,,,2011-03-14,58.28,11984.610352,1295.109985 +2011-03-11,120.58000200000001,,,2011-03-15,57.06,12044.400391,1304.280029 +2011-03-14,119.849998,,,2011-03-16,55.31,11993.160156,1296.390015 +2011-03-15,118.510002,,,2011-03-17,57.13,11855.419922,1281.869995 +2011-03-16,116.209999,,,2011-03-18,57.9,11613.299805,1256.880005 +2011-03-17,117.760002,,,2011-03-21,59.37,11774.589844,1273.719971 +2011-03-18,118.269997,,,2011-03-22,59.18,11858.519531,1279.209961 +2011-03-21,120.040001,,,2011-03-23,59.25,12036.530273,1298.380005 +2011-03-22,119.629997,,,2011-03-24,60.04,12018.629883,1293.77002 +2011-03-23,119.980003,,,2011-03-25,59.38,12086.019531,1297.540039 +2011-03-24,120.589996,,,2011-03-28,59.35,12170.55957,1309.660034 +2011-03-25,120.980003,,,2011-03-29,59.66,12220.589844,1313.800049 +2011-03-28,120.639999,,,2011-03-30,60.37,12197.879883,1310.189941 +2011-03-29,121.519997,,,2011-03-31,60.09,12279.009766,1319.439941 +2011-03-30,122.339996,,,2011-04-01,60.65,12350.610352,1328.26001 +2011-03-31,122.120003,,,2011-04-04,60.73,12319.730469,1325.829956 +2011-04-01,122.730003,,,2011-04-05,60.57,12376.719727,1332.410034 +2011-04-04,122.779999,,,2011-04-06,61.08,12400.030273,1332.869995 +2011-04-05,122.760002,,,2011-04-07,60.78,12393.900391,1332.630005 +2011-04-06,123.08000200000001,,,2011-04-08,61.28,12426.75,1335.540039 +2011-04-07,122.900002,,,2011-04-11,61.16,12409.490234,1333.51001 +2011-04-08,122.400002,,,2011-04-12,60.59,12380.049805,1328.170044 +2011-04-11,122.059998,,,2011-04-13,60.74,12381.110352,1324.459961 +2011-04-12,121.120003,,,2011-04-14,61.04,12263.580078,1314.160034 +2011-04-13,121.150002,,,2011-04-15,60.95,12270.990234,1314.410034 +2011-04-14,121.160004,,,2011-04-18,59.7,12285.150391,1314.52002 +2011-04-15,121.639999,,,2011-04-19,60.14,12341.830078,1319.680054 +2011-04-18,120.300003,,,2011-04-20,61.71,12201.589844,1305.140015 +2011-04-19,120.989998,,,2011-04-21,62.07,12266.75,1312.619995 +2011-04-20,122.629997,,,2011-04-25,62.07,12453.540039,1330.359985 +2011-04-21,123.279999,,,2011-04-26,62.56,12505.990234,1337.380005 +2011-04-25,123.08000200000001,,,2011-04-27,63.32,12479.879883,1335.25 +2011-04-26,124.18,,,2011-04-28,63.76,12595.370117,1347.23999 +2011-04-27,124.980003,,,2011-04-29,63.46,12690.959961,1355.660034 +2011-04-28,125.43,,,2011-05-02,63.87,12763.30957,1360.47998 +2011-04-29,125.720001,,,2011-05-03,63.35,12810.540039,1363.609985 +2011-05-02,125.5,,,2011-05-04,62.82,12807.360352,1361.219971 +2011-05-03,125.08000200000001,,,2011-05-05,61.55,12807.509766,1356.619995 +2011-05-04,124.239998,,,2011-05-06,61.6,12723.580078,1347.319946 +2011-05-05,123.120003,,,2011-05-09,62.04,12584.169922,1335.099976 +2011-05-06,123.599998,,,2011-05-10,62.63,12638.740234,1340.199951 +2011-05-09,124.16999799999999,,,2011-05-11,61.37,12684.679688,1346.290039 +2011-05-10,125.16999799999999,,,2011-05-12,61.57,12760.360352,1357.160034 +2011-05-11,123.849998,,,2011-05-13,60.61,12630.030273,1342.079956 +2011-05-12,124.470001,,,2011-05-16,60.5,12695.919922,1348.650024 +2011-05-13,123.470001,,,2011-05-17,60.64,12595.75,1337.77002 +2011-05-16,122.709999,,,2011-05-18,60.99,12548.370117,1329.469971 +2011-05-17,122.690002,,,2011-05-19,61.36,12479.580078,1328.97998 +2011-05-18,123.800003,,,2011-05-20,60.43,12560.179688,1340.680054 +2011-05-19,124.08000200000001,,,2011-05-23,59.08,12605.320313,1343.599976 +2011-05-20,123.120003,,,2011-05-24,59.42,12512.040039,1333.27002 +2011-05-23,121.650002,,,2011-05-25,59.8,12381.259766,1317.369995 +2011-05-24,121.550003,,,2011-05-26,60.36,12356.209961,1316.280029 +2011-05-25,121.949997,,,2011-05-27,60.8,12394.660156,1320.469971 +2011-05-26,122.459999,,,2011-05-31,62.06,12402.759766,1325.689941 +2011-05-27,122.980003,,,2011-06-01,60.59,12441.580078,1331.099976 +2011-05-31,124.279999,,,2011-06-02,60.91,12569.790039,1345.199951 +2011-06-01,121.470001,,,2011-06-03,60.93,12290.139648,1314.550049 +2011-06-02,121.32,,,2011-06-06,60.14,12248.549805,1312.939941 +2011-06-03,120.150002,,,2011-06-07,60.68,12151.259766,1300.160034 +2011-06-06,118.860001,,,2011-06-08,59.93,12089.959961,1286.170044 +2011-06-07,118.75,,,2011-06-09,60.55,12070.80957,1284.939941 +2011-06-08,118.269997,,,2011-06-10,59.11,12048.94043,1279.560059 +2011-06-09,119.150002,,,2011-06-13,59.22,12124.360352,1289.0 +2011-06-10,117.480003,,,2011-06-14,60.26,11951.910156,1270.97998 +2011-06-13,117.599998,,,2011-06-15,58.27,11952.969727,1271.829956 +2011-06-14,119.089996,,,2011-06-16,58.07,12076.110352,1287.869995 +2011-06-15,117.019997,,,2011-06-17,58.68,11897.269531,1265.420044 +2011-06-16,117.239998,,,2011-06-20,58.6,11961.519531,1267.640015 +2011-06-17,117.599998,,,2011-06-21,59.85,12004.360352,1271.5 +2011-06-20,118.230003,,,2011-06-22,58.14,12080.379883,1278.359985 +2011-06-21,119.83000200000001,,,2011-06-23,57.65,12190.009766,1295.52002 +2011-06-22,119.059998,,,2011-06-24,57.1,12109.669922,1287.140015 +2011-06-23,118.190002,,,2011-06-27,57.6,12050.0,1283.5 +2011-06-24,116.800003,,,2011-06-28,58.26,11934.580078,1268.449951 +2011-06-27,117.870003,,,2011-06-29,59.28,12043.55957,1280.099976 +2011-06-28,119.41999799999999,,,2011-06-30,60.14,12188.69043,1296.670044 +2011-06-29,120.43,,,2011-07-01,60.8,12261.419922,1307.410034 +2011-06-30,121.650002,,,2011-07-05,60.44,12414.339844,1320.640015 +2011-07-01,123.410004,,,2011-07-06,60.06,12582.769531,1339.670044 +2011-07-05,123.25,,,2011-07-07,60.59,12569.870117,1337.880005 +2011-07-06,123.41999799999999,,,2011-07-08,59.82,12626.019531,1339.219971 +2011-07-07,124.720001,,,2011-07-11,58.03,12719.490234,1353.219971 +2011-07-08,123.849998,,,2011-07-12,57.66,12657.200195,1343.800049 +2011-07-11,121.610001,,,2011-07-13,58.48,12505.759766,1319.48999 +2011-07-12,121.07,,,2011-07-14,57.99,12446.879883,1313.640015 +2011-07-13,121.459999,,,2011-07-15,58.18,12491.610352,1317.719971 +2011-07-14,120.639999,,,2011-07-18,57.32,12437.120117,1308.869995 +2011-07-15,121.309998,,,2011-07-19,58.2,12479.730469,1316.140015 +2011-07-18,120.33000200000001,,,2011-07-20,58.87,12385.160156,1305.439941 +2011-07-19,122.290001,,,2011-07-21,60.13,12587.419922,1326.72998 +2011-07-20,122.230003,,,2011-07-22,60.22,12571.910156,1325.839966 +2011-07-21,123.889999,,,2011-07-25,59.79,12724.410156,1343.800049 +2011-07-22,124.010002,,,2011-07-26,60.16,12681.160156,1345.02002 +2011-07-25,123.309998,,,2011-07-27,58.69,12592.799805,1337.430054 +2011-07-26,122.800003,,,2011-07-28,58.56,12501.299805,1331.939941 +2011-07-27,120.309998,,,2011-07-29,58.65,12302.549805,1304.890015 +2011-07-28,119.93,,,2011-08-01,57.97,12240.110352,1300.670044 +2011-07-29,119.160004,,,2011-08-02,56.44,12143.240234,1292.280029 +2011-08-01,118.660004,,,2011-08-03,56.79,12132.490234,1286.939941 +2011-08-02,115.629997,,,2011-08-04,52.79,11866.620117,1254.050049 +2011-08-03,116.25,,,2011-08-05,53.75,11896.44043,1260.339966 +2011-08-04,110.699997,,,2011-08-08,49.73,11383.679688,1200.069946 +2011-08-05,110.639999,,,2011-08-09,53.08,11444.610352,1199.380005 +2011-08-08,103.279999,,,2011-08-10,49.89,10809.849609,1119.459961 +2011-08-09,108.18,,,2011-08-11,52.3,11239.769531,1172.530029 +2011-08-10,103.449997,,,2011-08-12,52.91,10719.94043,1120.76001 +2011-08-11,108.25,,,2011-08-15,54.13,11143.30957,1172.640015 +2011-08-12,108.82,,,2011-08-16,53.34,11269.019531,1178.810059 +2011-08-15,111.199997,,,2011-08-17,53.65,11482.900391,1204.48999 +2011-08-16,110.139999,,,2011-08-18,51.03,11405.929688,1192.76001 +2011-08-17,110.269997,,,2011-08-19,50.17,11410.209961,1193.890015 +2011-08-18,105.360001,,,2011-08-22,50.47,10990.580078,1140.650024 +2011-08-19,103.779999,,,2011-08-23,52.16,10817.650391,1123.530029 +2011-08-22,103.809998,,,2011-08-24,52.15,10854.650391,1123.819946 +2011-08-23,107.360001,,,2011-08-25,50.87,11176.759766,1162.349976 +2011-08-24,108.790001,,,2011-08-26,51.69,11320.709961,1177.599976 +2011-08-25,107.099998,,,2011-08-29,52.93,11149.820313,1159.27002 +2011-08-26,108.730003,,,2011-08-30,52.63,11284.540039,1176.800049 +2011-08-29,111.82,,,2011-08-31,53.59,11539.25,1210.079956 +2011-08-30,112.099998,,,2011-09-01,52.91,11559.950195,1212.920044 +2011-08-31,112.66999799999999,,,2011-09-02,51.7,11613.530273,1218.890015 +2011-09-01,111.339996,,,2011-09-06,50.02,11493.570313,1204.420044 +2011-09-02,108.529999,,,2011-09-07,51.52,11240.259766,1173.969971 +2011-09-06,107.730003,,,2011-09-08,50.49,11139.299805,1165.23999 +2011-09-07,110.839996,,,2011-09-09,48.76,11414.860352,1198.619995 +2011-09-08,109.660004,,,2011-09-12,48.56,11295.80957,1185.900024 +2011-09-09,106.739998,,,2011-09-13,49.09,10992.129883,1154.22998 +2011-09-12,107.489998,,,2011-09-14,49.8,11061.120117,1162.27002 +2011-09-13,108.5,,,2011-09-15,50.89,11105.849609,1172.869995 +2011-09-14,109.959999,,,2011-09-16,50.85,11246.730469,1188.680054 +2011-09-15,111.879997,,,2011-09-19,49.48,11433.179688,1209.109985 +2011-09-16,112.519997,,,2011-09-20,49.7,11509.089844,1216.01001 +2011-09-19,111.410004,,,2011-09-21,48.25,11401.009766,1204.089966 +2011-09-20,111.230003,,,2011-09-22,46.66,11408.660156,1202.089966 +2011-09-21,107.959999,,,2011-09-23,47.19,11124.839844,1166.76001 +2011-09-22,103.970001,,,2011-09-26,48.16,10733.830078,1129.560059 +2011-09-23,104.610001,,,2011-09-27,49.35,10771.480469,1136.430054 +2011-09-26,107.050003,,,2011-09-28,48.54,11043.860352,1162.949951 +2011-09-27,108.199997,,,2011-09-29,49.46,11190.69043,1175.380005 +2011-09-28,105.989998,,,2011-09-30,47.75,11010.900391,1151.060059 +2011-09-29,106.849998,,,2011-10-03,46.52,11153.980469,1160.400024 +2011-09-30,104.18,,,2011-10-04,47.3,10913.379883,1131.420044 +2011-10-03,101.220001,,,2011-10-05,48.03,10655.299805,1099.22998 +2011-10-04,103.510002,,,2011-10-06,49.32,10808.709961,1123.949951 +2011-10-05,105.410004,,,2011-10-07,48.98,10939.950195,1144.030029 +2011-10-06,107.349998,,,2011-10-10,50.83,11123.330078,1164.969971 +2011-10-07,106.480003,,,2011-10-11,50.76,11103.120117,1155.459961 +2011-10-10,110.110001,,,2011-10-12,51.5,11433.179688,1194.890015 +2011-10-11,110.16999799999999,,,2011-10-13,51.52,11416.299805,1195.540039 +2011-10-12,111.269997,,,2011-10-14,52.12,11518.849609,1207.25 +2011-10-13,110.949997,,,2011-10-17,50.92,11478.129883,1203.660034 +2011-10-14,112.870003,,,2011-10-18,51.65,11644.490234,1224.579956 +2011-10-17,110.690002,,,2011-10-19,50.68,11397.0,1200.859985 +2011-10-18,112.949997,,,2011-10-20,50.85,11577.049805,1225.380005 +2011-10-19,111.540001,,,2011-10-21,52.1,11504.620117,1209.880005 +2011-10-20,112.050003,,,2011-10-24,52.86,11541.780273,1215.390015 +2011-10-21,114.160004,,,2011-10-25,51.95,11808.790039,1238.25 +2011-10-24,115.629997,,,2011-10-26,52.68,11913.620117,1254.189941 +2011-10-25,113.309998,,,2011-10-27,55.43,11706.620117,1229.050049 +2011-10-26,114.5,,,2011-10-28,55.2,11869.040039,1242.0 +2011-10-27,118.440002,,,2011-10-31,52.37,12208.549805,1284.589966 +2011-10-28,118.480003,,,2011-11-01,50.69,12231.110352,1285.089966 +2011-10-31,115.550003,,,2011-11-02,51.17,11955.009766,1253.300049 +2011-11-01,112.33000200000001,,,2011-11-03,52.46,11657.959961,1218.280029 +2011-11-02,114.150002,,,2011-11-04,51.8,11836.040039,1237.900024 +2011-11-03,116.309998,,,2011-11-07,52.02,12044.469727,1261.150024 +2011-11-04,115.58000200000001,,,2011-11-08,52.62,11983.240234,1253.22998 +2011-11-07,116.32,,,2011-11-09,49.95,12068.389648,1261.119995 +2011-11-08,117.75,,,2011-11-10,50.54,12170.179688,1275.920044 +2011-11-09,113.440002,,,2011-11-11,51.8,11780.94043,1229.099976 +2011-11-10,114.43,,,2011-11-14,50.88,11893.860352,1239.699951 +2011-11-11,116.660004,,,2011-11-15,50.74,12153.679688,1263.849976 +2011-11-14,115.559998,,,2011-11-16,49.77,12078.980469,1251.780029 +2011-11-15,116.139999,,,2011-11-17,49.23,12096.160156,1257.810059 +2011-11-16,114.239998,,,2011-11-18,49.4,11905.589844,1236.910034 +2011-11-17,112.33000200000001,,,2011-11-21,48.15,11770.730469,1216.130005 +2011-11-18,112.290001,,,2011-11-22,48.01,11796.160156,1215.650024 +2011-11-21,110.199997,,,2011-11-23,46.68,11547.30957,1192.97998 +2011-11-22,109.75,,,2011-11-25,46.45,11493.719727,1188.040039 +2011-11-23,107.33000200000001,,,2011-11-28,48.44,11257.549805,1161.790039 +2011-11-25,107.059998,,,2011-11-29,48.75,11231.650391,1158.670044 +2011-11-28,110.199997,,,2011-11-30,51.29,11523.009766,1192.550049 +2011-11-29,110.480003,,,2011-12-01,50.8,11555.629883,1195.189941 +2011-11-30,115.279999,,,2011-12-02,50.83,12045.679688,1246.959961 +2011-12-01,115.07,,,2011-12-05,51.37,12020.030273,1244.579956 +2011-12-02,115.040001,,,2011-12-06,51.13,12019.419922,1244.280029 +2011-12-05,116.230003,,,2011-12-07,51.49,12097.830078,1257.079956 +2011-12-06,116.360001,,,2011-12-08,49.81,12150.129883,1258.469971 +2011-12-07,116.629997,,,2011-12-09,51.04,12196.370117,1261.01001 +2011-12-08,114.16999799999999,,,2011-12-12,49.53,11997.700195,1234.349976 +2011-12-09,116.089996,,,2011-12-13,48.88,12184.259766,1255.189941 +2011-12-12,114.360001,,,2011-12-14,48.27,12021.389648,1236.469971 +2011-12-13,113.389999,,,2011-12-15,48.56,11954.94043,1225.72998 +2011-12-14,112.120003,,,2011-12-16,48.35,11823.480469,1211.819946 +2011-12-15,112.489998,,,2011-12-19,47.9,11868.80957,1215.75 +2011-12-16,112.860001,,,2011-12-20,49.01,11866.389648,1219.660034 +2011-12-19,111.529999,,,2011-12-21,48.73,11766.259766,1205.349976 +2011-12-20,114.879997,,,2011-12-22,49.18,12103.580078,1241.300049 +2011-12-21,115.099998,,,2011-12-23,49.5,12107.740234,1243.719971 +2011-12-22,115.43,,,2011-12-27,49.31,12169.650391,1254.0 +2011-12-23,116.470001,,,2011-12-28,48.43,12294.0,1265.329956 +2011-12-27,116.480003,,,2011-12-29,49.31,12291.349609,1265.430054 +2011-12-28,115.059998,,,2011-12-30,49.53,12151.410156,1249.640015 +2011-12-29,116.290001,,,2012-01-03,50.89,12287.040039,1263.02002 +2011-12-30,115.800003,,,2012-01-04,50.58,12217.55957,1257.599976 +2012-01-03,117.589996,,,2012-01-05,49.84,12397.379883,1277.060059 +2012-01-04,117.639999,,,2012-01-06,49.15,12418.419922,1277.300049 +2012-01-05,117.980003,,,2012-01-09,49.36,12415.700195,1281.060059 +2012-01-06,117.730003,,,2012-01-10,50.09,12359.919922,1277.810059 +2012-01-09,117.989998,,,2012-01-11,49.95,12392.69043,1280.699951 +2012-01-10,119.040001,,,2012-01-12,50.14,12462.469727,1292.079956 +2012-01-11,119.089996,,,2012-01-13,49.61,12449.450195,1292.47998 +2012-01-12,119.370003,,,2012-01-17,50.16,12471.019531,1295.5 +2012-01-13,118.779999,,,2012-01-18,51.03,12422.05957,1289.089966 +2012-01-17,119.199997,,,2012-01-19,51.66,12482.070313,1293.670044 +2012-01-18,120.540001,,,2012-01-20,51.93,12578.950195,1308.040039 +2012-01-19,121.139999,,,2012-01-23,52.13,12623.980469,1314.5 +2012-01-20,121.230003,,,2012-01-24,51.84,12720.480469,1315.380005 +2012-01-23,121.279999,,,2012-01-25,52.38,12708.820313,1316.0 +2012-01-24,121.160004,,,2012-01-26,52.4,12675.75,1314.650024 +2012-01-25,122.209999,,,2012-01-27,52.49,12758.849609,1326.060059 +2012-01-26,121.519997,,,2012-01-30,51.87,12734.629883,1318.430054 +2012-01-27,121.33000200000001,,,2012-01-31,52.14,12660.459961,1316.329956 +2012-01-30,121.019997,,,2012-02-01,52.97,12653.719727,1313.01001 +2012-01-31,120.970001,,,2012-02-03,53.91,12632.910156,1312.410034 +2012-02-01,122.07,,,2012-02-06,53.64,12716.459961,1324.089966 +2012-02-02,122.209999,,,2012-02-07,53.97,12705.410156,1325.540039 +2012-02-03,124.010002,,,2012-02-08,54.16,12862.230469,1344.900024 +2012-02-06,123.959999,,,2012-02-09,54.3,12845.129883,1344.329956 +2012-02-07,124.209999,,,2012-02-10,53.28,12878.200195,1347.050049 +2012-02-08,124.519997,,,2012-02-13,53.9,12883.950195,1349.959961 +2012-02-09,124.709999,,,2012-02-14,53.48,12890.459961,1351.949951 +2012-02-10,123.849998,,,2012-02-15,53.54,12801.230469,1342.640015 +2012-02-13,124.720001,,,2012-02-16,54.28,12874.040039,1351.77002 +2012-02-14,124.620003,,,2012-02-17,54.52,12878.280273,1350.5 +2012-02-15,124.0,,,2012-02-21,54.53,12780.950195,1343.22998 +2012-02-16,125.379997,,,2012-02-22,54.34,12904.080078,1358.040039 +2012-02-17,125.68,,,2012-02-23,54.82,12949.870117,1361.22998 +2012-02-21,125.769997,,,2012-02-24,55.15,12965.69043,1362.209961 +2012-02-22,125.349998,,,2012-02-27,54.87,12938.669922,1357.660034 +2012-02-23,125.910004,,,2012-02-28,55.38,12984.69043,1363.459961 +2012-02-24,126.139999,,,2012-02-29,54.7,12982.950195,1365.73999 +2012-02-27,126.32,,,2012-03-01,55.28,12981.509766,1367.589966 +2012-02-28,126.760002,,,2012-03-02,54.76,13005.120117,1372.180054 +2012-02-29,126.18,,,2012-03-05,54.48,12952.070313,1365.680054 +2012-03-01,126.970001,,,2012-03-06,52.74,12980.299805,1374.089966 +2012-03-02,126.559998,,,2012-03-07,53.39,12977.570313,1369.630005 +2012-03-05,126.08000200000001,,,2012-03-08,54.53,12962.80957,1364.329956 +2012-03-06,124.139999,,,2012-03-09,54.37,12759.150391,1343.359985 +2012-03-07,125.040001,,,2012-03-12,54.21,12837.330078,1352.630005 +2012-03-08,126.279999,,,2012-03-13,55.08,12907.94043,1365.910034 +2012-03-09,126.739998,,,2012-03-14,54.63,12922.019531,1370.869995 +2012-03-12,126.760002,,,2012-03-15,55.13,12959.709961,1371.089966 +2012-03-13,129.100006,,,2012-03-16,55.49,13177.679688,1395.949951 +2012-03-14,128.949997,,,2012-03-19,55.8,13194.099609,1394.280029 +2012-03-15,129.720001,,,2012-03-20,55.15,13252.759766,1402.599976 +2012-03-16,129.869995,,,2012-03-21,54.76,13232.620117,1404.170044 +2012-03-19,130.380005,,,2012-03-22,54.37,13239.129883,1409.75 +2012-03-20,129.990005,,,2012-03-23,54.78,13170.19043,1405.52002 +2012-03-21,129.759995,,,2012-03-26,55.47,13124.620117,1402.890015 +2012-03-22,128.830002,,,2012-03-27,55.14,13046.139648,1392.780029 +2012-03-23,128.690002,,,2012-03-28,54.75,13080.730469,1397.109985 +2012-03-26,130.479996,,,2012-03-29,54.42,13241.629883,1416.51001 +2012-03-27,130.119995,,,2012-03-30,54.9,13197.730469,1412.52002 +2012-03-28,129.509995,,,2012-04-02,55.51,13126.209961,1405.540039 +2012-03-29,129.300003,,,2012-04-03,54.57,13145.820313,1403.280029 +2012-03-30,129.779999,,,2012-04-04,53.35,13212.040039,1408.469971 +2012-04-02,130.759995,,,2012-04-05,53.02,13264.490234,1419.040039 +2012-04-03,130.270004,,,2012-04-09,52.78,13199.549805,1413.380005 +2012-04-04,128.940002,,,2012-04-10,51.67,13074.75,1398.959961 +2012-04-05,128.91000400000001,,,2012-04-11,52.38,13060.139648,1398.079956 +2012-04-09,127.440002,,,2012-04-12,53.33,12929.589844,1382.199951 +2012-04-10,125.269997,,,2012-04-13,52.34,12715.929688,1358.589966 +2012-04-11,126.220001,,,2012-04-16,52.68,12805.389648,1368.709961 +2012-04-12,127.959999,,,2012-04-17,53.54,12986.580078,1387.569946 +2012-04-13,126.360001,,,2012-04-18,53.28,12849.589844,1370.26001 +2012-04-16,126.300003,,,2012-04-19,52.94,12921.410156,1369.569946 +2012-04-17,128.259995,,,2012-04-20,53.43,13115.540039,1390.780029 +2012-04-18,127.739998,,,2012-04-23,52.38,13032.75,1385.140015 +2012-04-19,126.980003,,,2012-04-24,52.8,12964.099609,1376.920044 +2012-04-20,127.139999,,,2012-04-25,53.52,13029.259766,1378.530029 +2012-04-23,126.07,,,2012-04-26,53.84,12927.169922,1366.939941 +2012-04-24,126.529999,,,2012-04-27,54.06,13001.55957,1371.969971 +2012-04-25,128.270004,,,2012-04-30,53.75,13090.719727,1390.689941 +2012-04-26,129.139999,,,2012-05-01,53.97,13204.620117,1399.97998 +2012-04-27,129.449997,,,2012-05-02,53.57,13228.30957,1403.359985 +2012-04-30,128.949997,,,2012-05-03,53.08,13213.629883,1397.910034 +2012-05-01,129.679993,,,2012-05-04,52.27,13279.320313,1405.819946 +2012-05-02,129.369995,,,2012-05-07,52.65,13268.570313,1402.310059 +2012-05-03,128.399994,,,2012-05-08,51.86,13206.589844,1391.569946 +2012-05-04,126.33000200000001,,,2012-05-09,51.25,13038.269531,1369.099976 +2012-05-07,126.379997,,,2012-05-10,51.48,13008.530273,1369.579956 +2012-05-08,125.849998,,,2012-05-11,51.17,12932.089844,1363.719971 +2012-05-09,125.040001,,,2012-05-14,50.18,12835.05957,1354.579956 +2012-05-10,125.400002,,,2012-05-15,49.55,12855.040039,1357.98999 +2012-05-11,124.980003,,,2012-05-16,49.02,12820.599609,1353.390015 +2012-05-14,123.610001,,,2012-05-17,48.46,12695.349609,1338.349976 +2012-05-15,122.91999799999999,,,2012-05-18,48.13,12632.0,1330.660034 +2012-05-16,122.41999799999999,,,2012-05-21,49.17,12598.549805,1324.800049 +2012-05-17,120.589996,,,2012-05-22,48.99,12442.490234,1304.859985 +2012-05-18,119.699997,,,2012-05-23,48.59,12369.379883,1295.219971 +2012-05-21,121.620003,,,2012-05-24,48.27,12504.480469,1315.98999 +2012-05-22,121.68,,,2012-05-25,48.1,12502.80957,1316.630005 +2012-05-23,121.889999,,,2012-05-29,48.71,12496.150391,1318.859985 +2012-05-24,122.08000200000001,,,2012-05-30,47.56,12529.75,1320.680054 +2012-05-25,121.82,,,2012-05-31,47.76,12454.830078,1317.819946 +2012-05-29,123.18,,,2012-06-01,46.55,12580.69043,1332.420044 +2012-05-30,121.449997,,,2012-06-04,46.95,12419.860352,1313.319946 +2012-05-31,121.190002,,,2012-06-05,47.23,12393.450195,1310.329956 +2012-06-01,118.209999,,,2012-06-06,48.58,12118.570313,1278.040039 +2012-06-04,118.220001,,,2012-06-07,48.67,12101.459961,1278.180054 +2012-06-05,118.900002,,,2012-06-08,48.51,12127.950195,1285.5 +2012-06-06,121.66999799999999,,,2012-06-11,48.01,12414.790039,1315.130005 +2012-06-07,121.66999799999999,,,2012-06-12,48.85,12460.959961,1314.98999 +2012-06-08,122.660004,,,2012-06-13,48.44,12554.200195,1325.660034 +2012-06-11,121.110001,,,2012-06-14,48.82,12411.230469,1308.930054 +2012-06-12,122.529999,,,2012-06-15,49.48,12573.799805,1324.180054 +2012-06-13,121.709999,,,2012-06-18,49.36,12496.379883,1314.880005 +2012-06-14,123.029999,,,2012-06-19,50.18,12651.910156,1329.099976 +2012-06-15,124.300003,,,2012-06-20,50.47,12767.169922,1342.839966 +2012-06-18,124.480003,,,2012-06-21,48.04,12741.820313,1344.780029 +2012-06-19,125.699997,,,2012-06-22,48.49,12837.330078,1357.97998 +2012-06-20,125.5,,,2012-06-25,47.36,12824.389648,1355.689941 +2012-06-21,122.720001,,,2012-06-26,47.68,12573.570313,1325.51001 +2012-06-22,122.989998,,,2012-06-27,48.11,12640.780273,1335.02002 +2012-06-25,121.040001,,,2012-06-28,48.22,12502.660156,1313.719971 +2012-06-26,121.620003,,,2012-06-29,49.96,12534.669922,1319.98999 +2012-06-27,122.739998,,,2012-07-02,50.28,12627.009766,1331.849976 +2012-06-28,122.489998,,,2012-07-03,50.75,12602.259766,1329.040039 +2012-06-29,125.550003,,,2012-07-05,49.91,12880.089844,1362.160034 +2012-07-02,125.860001,,,2012-07-06,49.44,12871.389648,1365.51001 +2012-07-03,126.66999799999999,,,2012-07-09,49.33,12943.660156,1374.02002 +2012-07-05,126.08000200000001,,,2012-07-10,49.03,12896.669922,1367.579956 +2012-07-06,124.93,,,2012-07-11,49.15,12772.469727,1354.680054 +2012-07-09,124.730003,,,2012-07-12,48.7,12736.290039,1352.459961 +2012-07-10,123.720001,,,2012-07-13,49.34,12653.120117,1341.469971 +2012-07-11,123.730003,,,2012-07-16,49.34,12604.530273,1341.449951 +2012-07-12,123.110001,,,2012-07-17,49.48,12573.269531,1334.76001 +2012-07-13,125.139999,,,2012-07-18,49.87,12777.089844,1356.780029 +2012-07-16,124.849998,,,2012-07-19,50.34,12727.209961,1353.640015 +2012-07-17,125.779999,,,2012-07-20,49.17,12805.540039,1363.670044 +2012-07-18,126.639999,,,2012-07-23,48.14,12908.700195,1372.780029 +2012-07-19,126.989998,,,2012-07-24,47.62,12943.360352,1376.51001 +2012-07-20,125.720001,,,2012-07-25,47.88,12822.570313,1362.660034 +2012-07-23,124.599998,,,2012-07-26,49.32,12721.459961,1350.52002 +2012-07-24,123.470001,,,2012-07-27,50.39,12617.320313,1338.310059 +2012-07-25,123.440002,,,2012-07-30,50.31,12676.049805,1337.890015 +2012-07-26,125.480003,,,2012-07-31,50.0,12887.929688,1360.02002 +2012-07-27,127.879997,,,2012-08-01,50.01,13075.660156,1385.969971 +2012-07-30,127.83000200000001,,,2012-08-02,49.31,13073.009766,1385.300049 +2012-07-31,127.269997,,,2012-08-03,50.99,13008.679688,1379.319946 +2012-08-01,126.91999799999999,,,2012-08-06,51.35,12976.129883,1375.319946 +2012-08-02,125.980003,,,2012-08-07,51.82,12878.879883,1365.0 +2012-08-03,128.399994,,,2012-08-08,51.75,13096.169922,1390.98999 +2012-08-06,128.690002,,,2012-08-09,51.78,13117.509766,1394.22998 +2012-08-07,129.350006,,,2012-08-10,51.87,13168.599609,1401.349976 +2012-08-08,129.470001,,,2012-08-13,51.62,13175.639648,1402.219971 +2012-08-09,129.580002,,,2012-08-14,51.74,13165.19043,1402.800049 +2012-08-10,129.869995,,,2012-08-15,51.59,13207.950195,1405.869995 +2012-08-13,129.729996,,,2012-08-16,52.22,13169.429688,1404.109985 +2012-08-14,129.740005,,,2012-08-17,52.3,13172.139648,1403.930054 +2012-08-15,129.929993,,,2012-08-20,52.24,13164.780273,1405.530029 +2012-08-16,130.860001,,,2012-08-21,52.54,13250.110352,1415.51001 +2012-08-17,131.110001,,,2012-08-22,52.48,13275.200195,1418.160034 +2012-08-20,131.100006,,,2012-08-23,52.18,13271.639648,1418.130005 +2012-08-21,130.649994,,,2012-08-24,52.1,13203.580078,1413.170044 +2012-08-22,130.690002,,,2012-08-27,52.13,13172.759766,1413.48999 +2012-08-23,129.630005,,,2012-08-28,52.08,13057.459961,1402.079956 +2012-08-24,130.490005,,,2012-08-29,51.92,13157.969727,1411.130005 +2012-08-27,130.419998,,,2012-08-30,51.15,13124.669922,1410.439941 +2012-08-28,130.330002,,,2012-08-31,51.6,13102.990234,1409.300049 +2012-08-29,130.46000700000002,,,2012-09-04,51.34,13107.480469,1410.48999 +2012-08-30,129.46000700000002,,,2012-09-05,51.2,13000.709961,1399.47998 +2012-08-31,130.119995,,,2012-09-06,52.46,13090.839844,1406.579956 +2012-09-04,129.970001,,,2012-09-07,53.26,13035.94043,1404.939941 +2012-09-05,129.869995,,,2012-09-10,52.84,13047.480469,1403.439941 +2012-09-06,132.53999299999998,,,2012-09-11,53.44,13292.0,1432.119995 +2012-09-07,133.080002,,,2012-09-12,53.79,13306.639648,1437.920044 +2012-09-10,132.270004,,,2012-09-13,54.62,13254.290039,1429.079956 +2012-09-11,132.679993,,,2012-09-14,55.15,13323.360352,1433.560059 +2012-09-12,133.0,,,2012-09-17,54.86,13333.349609,1436.560059 +2012-09-13,135.179993,,,2012-09-18,54.63,13539.860352000002,1459.98999 +2012-09-14,135.720001,,,2012-09-19,54.86,13593.370116999999,1465.77002 +2012-09-17,135.300003,,,2012-09-20,54.5,13553.099609,1461.189941 +2012-09-18,135.130005,,,2012-09-21,54.52,13564.639647999998,1459.319946 +2012-09-19,135.28999299999998,,,2012-09-24,54.35,13577.959961000002,1461.050049 +2012-09-20,135.240005,,,2012-09-25,54.0,13596.929688,1460.26001 +2012-09-21,134.570007,,,2012-09-26,53.45,13579.469727000002,1460.150024 +2012-09-24,134.270004,,,2012-09-27,54.07,13558.919922,1456.890015 +2012-09-25,132.880005,,,2012-09-28,53.0,13457.549805,1441.589966 +2012-09-26,132.139999,,,2012-10-01,53.44,13413.509766,1433.319946 +2012-09-27,133.429993,,,2012-10-02,53.64,13485.969727000002,1447.150024 +2012-09-28,132.830002,,,2012-10-03,53.42,13437.129883000001,1440.670044 +2012-10-01,133.179993,,,2012-10-04,54.06,13515.110352000002,1444.48999 +2012-10-02,133.309998,,,2012-10-05,54.14,13482.360352000002,1445.75 +2012-10-03,133.820007,,,2012-10-08,53.82,13494.610352000002,1450.98999 +2012-10-04,134.779999,,,2012-10-09,53.04,13575.360352000002,1461.400024 +2012-10-05,134.779999,,,2012-10-10,52.89,13610.150391,1460.930054 +2012-10-08,134.320007,,,2012-10-11,53.23,13583.650391,1455.880005 +2012-10-09,132.990005,,,2012-10-12,53.17,13473.530272999998,1441.47998 +2012-10-10,132.179993,,,2012-10-15,53.69,13344.969727,1432.560059 +2012-10-11,132.229996,,,2012-10-16,54.59,13326.389648,1432.839966 +2012-10-12,131.830002,,,2012-10-17,55.09,13328.849609,1428.589966 +2012-10-15,132.899994,,,2012-10-18,54.86,13424.230469,1440.130005 +2012-10-16,134.259995,,,2012-10-19,54.11,13551.780272999998,1454.920044 +2012-10-17,134.830002,,,2012-10-22,54.52,13557.0,1460.910034 +2012-10-18,134.509995,,,2012-10-23,53.35,13548.94043,1457.339966 +2012-10-19,132.279999,,,2012-10-24,53.38,13343.509766,1433.189941 +2012-10-22,132.33999599999999,,,2012-10-25,53.7,13345.889648,1433.819946 +2012-10-23,130.429993,,,2012-10-26,53.61,13102.530273,1413.109985 +2012-10-24,130.029999,,,2012-10-31,53.57,13077.339844,1408.75 +2012-10-25,130.419998,,,2012-11-01,54.21,13103.679688,1412.969971 +2012-10-26,130.320007,,,2012-11-02,53.66,13107.209961,1411.939941 +2012-10-31,130.360001,,,2012-11-05,53.56,13096.459961,1412.160034 +2012-11-01,131.78999299999998,,,2012-11-06,54.07,13232.620117,1427.589966 +2012-11-02,130.550003,,,2012-11-07,53.26,13093.160156,1414.199951 +2012-11-05,130.850006,,,2012-11-08,52.8,13112.44043,1417.26001 +2012-11-06,131.880005,,,2012-11-09,52.8,13245.679688,1428.390015 +2012-11-07,128.869995,,,2012-11-12,52.78,12932.730469,1394.530029 +2012-11-08,127.300003,,,2012-11-13,52.49,12811.320313,1377.51001 +2012-11-09,127.519997,,,2012-11-14,51.96,12815.389648,1379.849976 +2012-11-12,127.529999,,,2012-11-15,52.1,12815.080078,1380.030029 +2012-11-13,127.07,,,2012-11-16,52.09,12756.179688,1374.530029 +2012-11-14,125.349998,,,2012-11-19,53.19,12570.950195,1355.48999 +2012-11-15,125.160004,,,2012-11-20,53.3,12542.379883,1353.329956 +2012-11-16,125.779999,,,2012-11-21,53.39,12588.30957,1359.880005 +2012-11-19,128.279999,,,2012-11-23,54.54,12795.959961,1386.890015 +2012-11-20,128.380005,,,2012-11-26,54.41,12788.509766,1387.810059 +2012-11-21,128.679993,,,2012-11-27,54.14,12836.889648,1391.030029 +2012-11-23,130.369995,,,2012-11-28,54.53,13009.530273,1409.150024 +2012-11-26,130.110001,,,2012-11-29,55.0,12967.370117,1406.290039 +2012-11-27,129.440002,,,2012-11-30,55.07,12878.129883,1398.939941 +2012-11-28,130.490005,,,2012-12-03,55.14,12985.110352,1409.930054 +2012-11-29,131.070007,,,2012-12-04,55.28,13021.820313,1415.949951 +2012-11-30,131.08999599999999,,,2012-12-05,55.36,13025.580078,1416.180054 +2012-12-03,130.479996,,,2012-12-06,55.47,12965.599609,1409.459961 +2012-12-04,130.259995,,,2012-12-07,55.5,12951.780273,1407.050049 +2012-12-05,130.509995,,,2012-12-10,55.55,13034.490234,1409.280029 +2012-12-06,130.970001,,,2012-12-11,55.87,13074.040039,1413.939941 +2012-12-07,131.360001,,,2012-12-12,56.05,13155.129883,1418.069946 +2012-12-10,131.41000400000001,,,2012-12-13,55.88,13169.879883,1418.550049 +2012-12-11,132.270004,,,2012-12-14,56.08,13248.44043,1427.839966 +2012-12-12,132.360001,,,2012-12-17,56.32,13245.450195,1428.47998 +2012-12-13,131.559998,,,2012-12-18,56.28,13170.719727,1419.449951 +2012-12-14,131.020004,,,2012-12-19,56.48,13135.009766,1413.579956 +2012-12-17,132.570007,,,2012-12-20,56.86,13235.389648,1430.359985 +2012-12-18,134.100006,,,2012-12-21,56.51,13350.959961,1446.790039 +2012-12-19,133.08999599999999,,,2012-12-24,56.36,13251.969727,1435.810059 +2012-12-20,133.83999599999999,,,2012-12-26,56.35,13311.719727,1443.689941 +2012-12-21,131.690002,,,2012-12-27,56.61,13190.839844,1430.150024 +2012-12-24,131.380005,,,2012-12-28,56.01,13138.929688,1426.660034 +2012-12-26,130.75,,,2012-12-31,56.86,13114.589844,1419.829956 +2012-12-27,130.619995,,,2013-01-02,57.74,13096.30957,1418.099976 +2012-12-28,129.190002,,,2013-01-03,57.18,12938.110352,1402.430054 +2012-12-31,131.369995,,,2013-01-04,57.47,13104.139648,1426.189941 +2013-01-02,134.740005,,,2013-01-07,57.22,13412.549805,1462.420044 +2013-01-03,134.46000700000002,,,2013-01-08,56.9,13391.360352,1459.369995 +2013-01-04,135.110001,,,2013-01-09,57.19,13435.209961000002,1466.469971 +2013-01-07,134.690002,,,2013-01-10,57.92,13384.290039,1461.890015 +2013-01-08,134.300003,,,2013-01-11,58.04,13328.849609,1457.150024 +2013-01-09,134.649994,,,2013-01-14,58.11,13390.509766,1461.02002 +2013-01-10,135.679993,,,2013-01-15,58.02,13471.219727000002,1472.119995 +2013-01-11,135.679993,,,2013-01-16,57.74,13488.429688,1472.050049 +2013-01-14,135.559998,,,2013-01-17,58.21,13507.320313,1470.680054 +2013-01-15,135.71000700000002,,,2013-01-18,58.15,13534.889647999998,1472.339966 +2013-01-16,135.75,,,2013-01-22,58.18,13511.230469,1472.630005 +2013-01-17,136.520004,,,2013-01-23,58.12,13596.019531,1480.939941 +2013-01-18,136.979996,,,2013-01-24,58.4,13649.700195,1485.97998 +2013-01-22,137.600006,,,2013-01-25,59.03,13712.209961000002,1492.560059 +2013-01-23,137.800003,,,2013-01-28,58.74,13779.330078,1494.810059 +2013-01-24,137.809998,,,2013-01-29,59.14,13825.330078,1494.819946 +2013-01-25,138.559998,,,2013-01-30,59.2,13895.980469,1502.959961 +2013-01-28,138.309998,,,2013-01-31,58.98,13881.929688,1500.180054 +2013-01-29,139.020004,,,2013-02-01,59.45,13954.419922,1507.839966 +2013-01-30,138.509995,,,2013-02-04,58.38,13910.419922,1501.959961 +2013-01-31,138.169998,,,2013-02-05,58.65,13860.580078,1498.109985 +2013-02-01,139.559998,,,2013-02-06,58.64,14009.790038999998,1513.170044 +2013-02-04,137.949997,,,2013-02-07,58.16,13880.080078,1495.709961 +2013-02-05,139.399994,,,2013-02-08,58.53,13979.299805,1511.290039 +2013-02-06,139.490005,,,2013-02-11,58.47,13986.519531,1512.119995 +2013-02-07,139.300003,,,2013-02-12,58.76,13944.049805,1509.390015 +2013-02-08,140.08999599999999,,,2013-02-13,58.9,13992.969727000002,1517.930054 +2013-02-11,140.009995,,,2013-02-14,58.58,13971.240234,1517.01001 +2013-02-12,140.240005,,,2013-02-15,58.43,14018.700195,1519.430054 +2013-02-13,140.380005,,,2013-02-19,59.12,13982.910156,1520.329956 +2013-02-14,140.5,,,2013-02-20,58.54,13973.389647999998,1521.380005 +2013-02-15,140.360001,,,2013-02-21,57.66,13981.759766,1519.790039 +2013-02-19,141.41000400000001,,,2013-02-22,58.49,14035.669922,1530.939941 +2013-02-20,139.66000400000001,,,2013-02-25,57.09,13927.540038999998,1511.949951 +2013-02-21,138.809998,,,2013-02-26,57.55,13880.620116999999,1502.420044 +2013-02-22,140.050003,,,2013-02-27,58.28,14000.570313,1515.599976 +2013-02-25,137.490005,,,2013-02-28,58.22,13784.169922,1487.849976 +2013-02-26,138.33999599999999,,,2013-03-01,58.1,13900.129883000001,1496.939941 +2013-02-27,140.139999,,,2013-03-04,58.35,14075.370116999999,1515.98999 +2013-02-28,140.020004,,,2013-03-05,58.93,14054.490234,1514.680054 +2013-03-01,140.350006,,,2013-03-06,59.08,14089.660156,1518.199951 +2013-03-04,141.0,,,2013-03-07,59.25,14127.820313,1525.199951 +2013-03-05,142.350006,,,2013-03-08,59.38,14253.769531,1539.790039 +2013-03-06,142.53999299999998,,,2013-03-11,59.56,14296.240234,1541.459961 +2013-03-07,142.820007,,,2013-03-12,59.26,14329.490234,1544.26001 +2013-03-08,143.470001,,,2013-03-13,59.16,14397.070313,1551.180054 +2013-03-11,143.940002,,,2013-03-14,59.75,14447.290038999998,1556.219971 +2013-03-12,143.600006,,,2013-03-15,59.87,14450.05957,1552.47998 +2013-03-13,143.83999599999999,,,2013-03-18,59.21,14455.280272999998,1554.52002 +2013-03-14,144.649994,,,2013-03-19,59.03,14539.139647999998,1563.22998 +2013-03-15,144.41000400000001,,,2013-03-20,59.39,14514.110352000002,1560.699951 +2013-03-18,143.619995,,,2013-03-21,58.85,14452.05957,1552.099976 +2013-03-19,143.270004,,,2013-03-22,59.36,14455.820313,1548.339966 +2013-03-20,144.229996,,,2013-03-25,58.62,14511.730469,1558.709961 +2013-03-21,142.399994,,,2013-03-26,58.98,14421.490234,1545.800049 +2013-03-22,143.419998,,,2013-03-27,58.7,14512.030272999998,1556.890015 +2013-03-25,142.940002,,,2013-03-28,58.98,14447.75,1551.689941 +2013-03-26,144.100006,,,2013-04-01,58.17,14559.650391,1563.77002 +2013-03-27,144.029999,,,2013-04-02,58.81,14526.160156,1562.849976 +2013-03-28,144.610001,,,2013-04-03,58.52,14578.540038999998,1569.189941 +2013-04-01,143.970001,,,2013-04-04,59.04,14572.849609,1562.170044 +2013-04-02,144.71000700000002,,,2013-04-05,58.77,14662.009766,1570.25 +2013-04-03,143.21000700000002,,,2013-04-08,59.0,14550.349609,1553.689941 +2013-04-04,143.800003,,,2013-04-09,59.21,14606.110352000002,1559.97998 +2013-04-05,143.179993,,,2013-04-10,60.08,14565.25,1553.280029 +2013-04-08,144.130005,,,2013-04-11,60.56,14613.480469,1563.069946 +2013-04-09,144.639999,,,2013-04-12,60.41,14673.459961000002,1568.609985 +2013-04-10,146.419998,,,2013-04-15,59.22,14802.240234,1587.72998 +2013-04-11,146.940002,,,2013-04-16,60.06,14865.139647999998,1593.369995 +2013-04-12,146.529999,,,2013-04-17,58.81,14865.05957,1588.849976 +2013-04-15,143.169998,,,2013-04-18,58.63,14599.200195,1552.359985 +2013-04-16,145.21000700000002,,,2013-04-19,59.1,14756.780272999998,1574.569946 +2013-04-17,143.130005,,,2013-04-22,59.35,14618.589844,1552.01001 +2013-04-18,142.179993,,,2013-04-23,60.19,14537.139647999998,1541.609985 +2013-04-19,143.440002,,,2013-04-24,60.71,14547.509766,1555.25 +2013-04-22,144.110001,,,2013-04-25,61.03,14567.169922,1562.5 +2013-04-23,145.610001,,,2013-04-26,61.08,14719.459961000002,1578.780029 +2013-04-24,145.630005,,,2013-04-29,61.86,14676.299805,1578.790039 +2013-04-25,146.220001,,,2013-04-30,61.94,14700.799805,1585.160034 +2013-04-26,145.96000700000002,,,2013-05-01,61.57,14712.549805,1582.23999 +2013-04-29,147.009995,,,2013-05-02,61.76,14818.75,1593.609985 +2013-04-30,147.369995,,,2013-05-03,62.55,14839.799805,1597.569946 +2013-05-01,146.009995,,,2013-05-06,62.47,14700.950195,1582.699951 +2013-05-02,147.389999,,,2013-05-07,62.57,14831.580078,1597.589966 +2013-05-03,148.96000700000002,,,2013-05-08,63.23,14973.959961000002,1614.420044 +2013-05-06,149.240005,,,2013-05-09,62.62,14968.889647999998,1617.5 +2013-05-07,150.029999,,,2013-05-10,62.69,15056.200195,1625.959961 +2013-05-08,150.720001,,,2013-05-13,62.66,15105.120116999999,1632.689941 +2013-05-09,150.229996,,,2013-05-14,62.78,15082.620116999999,1626.670044 +2013-05-10,150.880005,,,2013-05-15,63.05,15118.490234,1633.699951 +2013-05-13,150.899994,,,2013-05-16,62.62,15091.679688,1633.77002 +2013-05-14,152.46000700000002,,,2013-05-17,63.05,15215.25,1650.339966 +2013-05-15,153.28999299999998,,,2013-05-20,63.4,15275.69043,1658.780029 +2013-05-16,152.529999,,,2013-05-21,63.53,15233.219727000002,1650.469971 +2013-05-17,154.100006,,,2013-05-22,62.89,15354.400391,1667.469971 +2013-05-20,153.990005,,,2013-05-23,61.99,15335.280272999998,1666.290039 +2013-05-21,154.259995,,,2013-05-24,61.45,15387.580078,1669.160034 +2013-05-22,153.009995,,,2013-05-28,61.61,15307.169922,1655.349976 +2013-05-23,152.580002,,,2013-05-29,61.02,15294.5,1650.51001 +2013-05-24,152.509995,,,2013-05-30,61.26,15303.099609,1649.599976 +2013-05-28,153.46000700000002,,,2013-05-31,60.07,15409.389647999998,1660.060059 +2013-05-29,152.41000400000001,,,2013-06-03,60.3,15302.799805,1648.359985 +2013-05-30,152.990005,,,2013-06-04,60.52,15324.530272999998,1654.410034 +2013-05-31,150.800003,,,2013-06-05,59.17,15115.570313,1630.73999 +2013-06-03,151.71000700000002,,,2013-06-06,59.5,15254.030272999998,1640.420044 +2013-06-04,150.880005,,,2013-06-07,60.3,15177.540038999998,1631.380005 +2013-06-05,148.83999599999999,,,2013-06-10,60.36,14960.589844,1608.900024 +2013-06-06,150.119995,,,2013-06-11,59.62,15040.620116999999,1622.560059 +2013-06-07,152.050003,,,2013-06-12,59.55,15248.120116999999,1643.380005 +2013-06-10,152.0,,,2013-06-13,60.46,15238.589844,1642.810059 +2013-06-11,150.46000700000002,,,2013-06-14,59.8,15122.019531,1626.130005 +2013-06-12,149.229996,,,2013-06-17,60.66,14995.230469,1612.52002 +2013-06-13,151.46000700000002,,,2013-06-18,61.09,15176.080078,1636.359985 +2013-06-14,150.570007,,,2013-06-19,59.95,15070.179688,1626.72998 +2013-06-17,151.71000700000002,,,2013-06-20,57.75,15179.849609,1639.040039 +2013-06-18,152.889999,,,2013-06-21,57.94,15318.230469,1651.810059 +2013-06-19,150.779999,,,2013-06-24,57.03,15112.19043,1628.930054 +2013-06-20,147.029999,,,2013-06-25,57.76,14758.320313,1588.189941 +2013-06-21,146.720001,,,2013-06-26,57.98,14799.400391,1592.430054 +2013-06-24,144.940002,,,2013-06-27,57.41,14659.55957,1573.089966 +2013-06-25,146.330002,,,2013-06-28,57.3,14760.30957,1588.030029 +2013-06-26,147.759995,,,2013-07-01,57.84,14910.139647999998,1603.26001 +2013-06-27,148.690002,,,2013-07-02,57.55,15024.490234,1613.199951 +2013-06-28,148.059998,,,2013-07-03,57.57,14909.599609,1606.280029 +2013-07-01,148.869995,,,2013-07-05,57.84,14974.959961000002,1614.959961 +2013-07-02,148.820007,,,2013-07-08,58.2,14932.410156,1614.079956 +2013-07-03,148.940002,,,2013-07-09,58.52,14988.370116999999,1615.410034 +2013-07-05,150.46000700000002,,,2013-07-10,58.69,15135.839844,1631.890015 +2013-07-08,151.300003,,,2013-07-11,60.21,15224.69043,1640.459961 +2013-07-09,152.389999,,,2013-07-12,59.81,15300.339844,1652.319946 +2013-07-10,152.429993,,,2013-07-15,60.18,15291.660156,1652.619995 +2013-07-11,154.509995,,,2013-07-16,60.14,15460.919922,1675.02002 +2013-07-12,154.979996,,,2013-07-17,60.32,15464.299805,1680.189941 +2013-07-15,155.199997,,,2013-07-18,60.72,15484.259766,1682.5 +2013-07-16,154.619995,,,2013-07-19,60.67,15451.849609,1676.26001 +2013-07-17,155.059998,,,2013-07-22,61.01,15470.519531,1680.910034 +2013-07-18,155.860001,,,2013-07-23,61.14,15548.540038999998,1689.369995 +2013-07-19,156.119995,,,2013-07-24,61.06,15543.740234,1692.089966 +2013-07-22,156.429993,,,2013-07-25,61.18,15545.549805,1695.530029 +2013-07-23,156.139999,,,2013-07-26,60.8,15567.740234,1692.390015 +2013-07-24,155.550003,,,2013-07-29,60.22,15542.240234,1685.939941 +2013-07-25,155.949997,,,2013-07-30,60.21,15555.610352000002,1690.25 +2013-07-26,156.080002,,,2013-07-31,60.35,15558.830078,1691.6500239999998 +2013-07-29,155.5,,,2013-08-01,61.17,15521.969727000002,1685.3299559999998 +2013-07-30,155.570007,,,2013-08-02,61.67,15520.589844,1685.959961 +2013-07-31,155.570007,,,2013-08-05,61.54,15499.540038999998,1685.72998 +2013-08-01,157.529999,,,2013-08-06,61.45,15628.019531,1706.869995 +2013-08-02,157.78999299999998,,,2013-08-07,61.18,15658.360352000002,1709.6700440000002 +2013-08-05,157.570007,,,2013-08-08,61.74,15612.129883000001,1707.140015 +2013-08-06,156.679993,,,2013-08-09,61.84,15518.740234,1697.369995 +2013-08-07,156.130005,,,2013-08-12,61.67,15470.669922,1690.910034 +2013-08-08,156.770004,,,2013-08-13,62.07,15498.320313,1697.47998 +2013-08-09,156.240005,,,2013-08-14,62.1,15425.509766,1691.4200440000002 +2013-08-12,156.059998,,,2013-08-15,61.58,15419.679688,1689.469971 +2013-08-13,156.529999,,,2013-08-16,61.69,15451.009766,1694.160034 +2013-08-14,155.75,,,2013-08-19,61.25,15337.660156,1685.390015 +2013-08-15,153.550003,,,2013-08-20,61.17,15112.19043,1661.319946 +2013-08-16,153.050003,,,2013-08-21,60.45,15081.469727000002,1655.829956 +2013-08-19,152.16000400000001,,,2013-08-22,61.04,15010.740234,1646.060059 +2013-08-20,152.740005,,,2013-08-23,61.57,15002.990234,1652.349976 +2013-08-21,151.860001,,,2013-08-26,61.12,14897.549805,1642.800049 +2013-08-22,153.169998,,,2013-08-27,60.08,14963.740234,1656.959961 +2013-08-23,153.800003,,,2013-08-28,60.01,15010.509766,1663.5 +2013-08-26,153.179993,,,2013-08-29,59.91,14946.459961000002,1656.780029 +2013-08-27,150.75,,,2013-08-30,59.17,14776.129883000001,1630.47998 +2013-08-28,151.190002,,,2013-09-03,60.31,14824.509766,1634.959961 +2013-08-29,151.509995,,,2013-09-04,60.85,14840.950195,1638.170044 +2013-08-30,151.03999299999998,,,2013-09-05,60.8,14810.30957,1632.969971 +2013-09-03,151.679993,,,2013-09-06,61.13,14833.959961000002,1639.77002 +2013-09-04,152.940002,,,2013-09-09,61.97,14930.870116999999,1653.079956 +2013-09-05,153.130005,,,2013-09-10,62.67,14937.480469,1655.079956 +2013-09-06,153.16000400000001,,,2013-09-11,62.89,14922.5,1655.170044 +2013-09-09,154.690002,,,2013-09-12,62.53,15063.120116999999,1671.709961 +2013-09-10,155.830002,,,2013-09-13,62.83,15191.05957,1683.9899899999998 +2013-09-11,156.330002,,,2013-09-16,63.32,15326.599609,1689.130005 +2013-09-12,155.83999599999999,,,2013-09-17,63.36,15300.639647999998,1683.4200440000002 +2013-09-13,156.270004,,,2013-09-18,65.05,15376.05957,1687.9899899999998 +2013-09-16,157.149994,,,2013-09-19,64.74,15494.780272999998,1697.5999760000002 +2013-09-17,157.820007,,,2013-09-20,64.26,15529.730469,1704.7600100000002 +2013-09-18,159.740005,,,2013-09-23,64.25,15676.94043,1725.52002 +2013-09-19,159.470001,,,2013-09-24,64.15,15636.549805,1722.339966 +2013-09-20,157.570007,,,2013-09-25,64.22,15451.089844,1709.910034 +2013-09-23,156.830002,,,2013-09-26,64.49,15401.379883000001,1701.839966 +2013-09-24,156.440002,,,2013-09-27,64.26,15334.589844,1697.4200440000002 +2013-09-25,156.009995,,,2013-09-30,63.8,15273.259766,1692.77002 +2013-09-26,156.58999599999999,,,2013-10-01,64.14,15328.299805,1698.6700440000002 +2013-09-27,155.96000700000002,,,2013-10-02,64.12,15258.240234,1691.75 +2013-09-30,155.020004,,,2013-10-03,63.7,15129.669922,1681.550049 +2013-10-01,156.270004,,,2013-10-04,63.85,15191.700195,1695.0 +2013-10-02,156.190002,,,2013-10-07,63.19,15133.139647999998,1693.869995 +2013-10-03,154.78999299999998,,,2013-10-08,62.7,14996.480469,1678.660034 +2013-10-04,155.889999,,,2013-10-09,62.97,15072.580078,1690.5 +2013-10-07,154.559998,,,2013-10-10,64.1,14936.240234,1676.119995 +2013-10-08,152.699997,,,2013-10-11,64.44,14776.530272999998,1655.449951 +2013-10-09,152.800003,,,2013-10-14,64.66,14802.980469,1656.400024 +2013-10-10,156.16000400000001,,,2013-10-15,64.35,15126.070313,1692.560059 +2013-10-11,157.139999,,,2013-10-16,64.84,15237.110352000002,1703.199951 +2013-10-14,157.779999,,,2013-10-17,65.69,15301.259766,1710.140015 +2013-10-15,156.669998,,,2013-10-18,66.08,15168.009766,1698.060059 +2013-10-16,158.850006,,,2013-10-21,66.18,15373.830078,1721.540039 +2013-10-17,159.929993,,,2013-10-22,66.84,15371.650391,1733.1500239999998 +2013-10-18,160.979996,,,2013-10-23,66.19,15399.650391,1744.5 +2013-10-21,160.990005,,,2013-10-24,66.65,15392.200195,1744.660034 +2013-10-22,161.919998,,,2013-10-25,66.46,15467.660156,1754.6700440000002 +2013-10-23,161.149994,,,2013-10-28,66.35,15413.330078,1746.380005 +2013-10-24,161.679993,,,2013-10-29,66.49,15509.209961000002,1752.069946 +2013-10-25,162.389999,,,2013-10-30,66.25,15570.280272999998,1759.77002 +2013-10-28,162.610001,,,2013-10-31,65.88,15568.929688,1762.109985 +2013-10-29,163.520004,,,2013-11-01,65.56,15680.349609,1771.949951 +2013-10-30,162.740005,,,2013-11-04,65.88,15618.759766,1763.310059 +2013-10-31,162.130005,,,2013-11-05,65.3,15545.75,1756.540039 +2013-11-01,162.58999599999999,,,2013-11-06,65.88,15615.549805,1761.640015 +2013-11-04,163.179993,,,2013-11-07,64.84,15639.120116999999,1767.930054 +2013-11-05,162.729996,,,2013-11-08,65.22,15618.219727000002,1762.969971 +2013-11-06,163.520004,,,2013-11-11,65.36,15746.879883000001,1770.4899899999998 +2013-11-07,161.399994,,,2013-11-12,65.14,15593.980469,1747.1500239999998 +2013-11-08,163.570007,,,2013-11-13,65.35,15761.780272999998,1770.609985 +2013-11-11,163.679993,,,2013-11-14,65.64,15783.099609,1771.890015 +2013-11-12,163.309998,,,2013-11-15,66.18,15750.669922,1767.689941 +2013-11-13,164.669998,,,2013-11-18,66.18,15821.629883000001,1782.0 +2013-11-14,165.5,,,2013-11-19,66.01,15876.219727000002,1790.619995 +2013-11-15,166.199997,,,2013-11-20,65.55,15961.700195,1798.180054 +2013-11-18,165.58999599999999,,,2013-11-21,65.96,15976.019531,1791.530029 +2013-11-19,165.279999,,,2013-11-22,66.15,15967.030272999998,1787.869995 +2013-11-20,164.690002,,,2013-11-25,65.95,15900.820313,1781.369995 +2013-11-21,166.03999299999998,,,2013-11-26,65.95,16009.990234,1795.8499760000002 +2013-11-22,166.880005,,,2013-11-27,66.11,16064.769531,1804.7600100000002 +2013-11-25,166.669998,,,2013-11-29,66.24,16072.540038999998,1802.47998 +2013-11-26,166.720001,,,2013-12-02,65.75,16072.799805,1802.75 +2013-11-27,167.169998,,,2013-12-03,65.29,16097.330078,1807.22998 +2013-11-29,167.03999299999998,,,2013-12-04,64.94,16086.410156,1805.810059 +2013-12-02,166.58999599999999,,,2013-12-05,64.57,16008.769531,1800.9000239999998 +2013-12-03,166.070007,,,2013-12-06,65.37,15914.620116999999,1795.1500239999998 +2013-12-04,165.899994,,,2013-12-09,65.3,15889.769531,1792.810059 +2013-12-05,165.179993,,,2013-12-10,65.19,15821.509766,1785.030029 +2013-12-06,167.050003,,,2013-12-11,64.58,16020.200195,1805.089966 +2013-12-09,167.360001,,,2013-12-12,64.11,16025.530272999998,1808.369995 +2013-12-10,166.830002,,,2013-12-13,64.07,15973.129883000001,1802.619995 +2013-12-11,164.96000700000002,,,2013-12-16,64.53,15843.530272999998,1782.219971 +2013-12-12,164.380005,,,2013-12-17,64.25,15739.429688,1775.5 +2013-12-13,164.360001,,,2013-12-18,64.7,15755.360352000002,1775.319946 +2013-12-16,165.399994,,,2013-12-19,64.7,15884.570313,1786.540039 +2013-12-17,164.889999,,,2013-12-20,65.07,15875.259766,1781.0 +2013-12-18,167.639999,,,2013-12-23,65.74,16167.969727000002,1810.6500239999998 +2013-12-19,167.559998,,,2013-12-24,65.87,16179.080078,1809.5999760000002 +2013-12-20,168.380005,,,2013-12-26,66.23,16221.139647999998,1818.319946 +2013-12-23,168.419998,,,2013-12-27,66.57,16294.610352000002,1827.9899899999998 +2013-12-24,168.929993,,,2013-12-30,66.85,16357.549805,1833.319946 +2013-12-26,169.729996,,,2013-12-31,67.1,16479.880859,1842.02002 +2013-12-27,169.699997,,,2014-01-02,65.91,16478.410156,1841.4000239999998 +2013-12-30,169.679993,,,2014-01-03,65.98,16504.289063,1841.069946 +2013-12-31,170.360001,,,2014-01-06,65.9,16576.660156,1848.359985 +2014-01-02,168.880005,,,2014-01-07,66.27,16441.349609,1831.97998 +2014-01-03,168.820007,,,2014-01-08,66.25,16469.990234,1831.369995 +2014-01-06,168.399994,,,2014-01-09,66.2,16425.099609,1826.77002 +2014-01-07,169.419998,,,2014-01-10,66.81,16530.939453,1837.880005 +2014-01-08,169.440002,,,2014-01-13,66.23,16462.740234,1837.4899899999998 +2014-01-09,169.5,,,2014-01-14,66.76,16444.759766,1838.130005 +2014-01-10,169.889999,,,2014-01-15,67.04,16437.050781,1842.369995 +2014-01-13,167.770004,,,2014-01-16,67.01,16257.94043,1819.199951 +2014-01-14,169.580002,,,2014-01-17,66.81,16373.860352000002,1838.880005 +2014-01-15,170.46000700000002,,,2014-01-21,67.13,16481.939453,1848.380005 +2014-01-16,170.229996,,,2014-01-22,67.13,16417.009766,1845.890015 +2014-01-17,169.580002,,,2014-01-23,66.68,16458.560547,1838.699951 +2014-01-21,170.050003,,,2014-01-24,64.85,16414.439453,1843.800049 +2014-01-22,170.16000400000001,,,2014-01-27,64.55,16373.339844,1844.859985 +2014-01-23,168.649994,,,2014-01-28,65.11,16197.349609,1828.459961 +2014-01-24,165.130005,,,2014-01-29,64.38,15879.110352000002,1790.290039 +2014-01-27,164.330002,,,2014-01-30,64.71,15837.879883000001,1781.560059 +2014-01-28,165.33999599999999,,,2014-01-31,63.61,15928.55957,1792.5 +2014-01-29,163.669998,,,2014-02-03,62.31,15738.790038999998,1774.199951 +2014-01-30,165.520004,,,2014-02-04,63.03,15848.610352000002,1794.189941 +2014-01-31,164.449997,,,2014-02-05,63.16,15698.849609,1782.589966 +2014-02-03,160.690002,,,2014-02-06,64.28,15372.799805,1741.890015 +2014-02-04,161.929993,,,2014-02-07,65.12,15445.240234,1755.199951 +2014-02-05,161.649994,,,2014-02-10,64.9,15440.230469,1751.640015 +2014-02-06,163.740005,,,2014-02-11,65.93,15628.530272999998,1773.430054 +2014-02-07,165.919998,,,2014-02-12,66.04,15794.080078,1797.02002 +2014-02-10,166.179993,,,2014-02-13,66.24,15801.790038999998,1799.839966 +2014-02-11,168.020004,,,2014-02-14,66.49,15994.769531,1819.75 +2014-02-12,168.059998,,,2014-02-18,67.06,15963.94043,1819.2600100000002 +2014-02-13,169.050003,,,2014-02-19,66.61,16027.589844,1829.8299559999998 +2014-02-14,169.880005,,,2014-02-20,66.84,16154.389647999998,1838.630005 +2014-02-18,170.100006,,,2014-02-21,66.97,16130.400391,1840.7600100000002 +2014-02-19,169.0,,,2014-02-24,67.55,16040.55957,1828.75 +2014-02-20,170.050003,,,2014-02-25,67.39,16133.230469,1839.780029 +2014-02-21,169.75,,,2014-02-26,67.16,16103.299805,1836.25 +2014-02-24,170.800003,,,2014-02-27,67.39,16207.139647999998,1847.609985 +2014-02-25,170.570007,,,2014-02-28,67.51,16179.660156,1845.119995 +2014-02-26,170.600006,,,2014-03-03,66.08,16198.410156,1845.160034 +2014-02-27,171.470001,,,2014-03-04,67.39,16272.650391,1854.290039 +2014-02-28,171.949997,,,2014-03-05,67.33,16321.709961000002,1859.449951 +2014-03-03,170.690002,,,2014-03-06,68.03,16168.030272999998,1845.72998 +2014-03-04,173.28999299999998,,,2014-03-07,67.66,16395.880859,1873.910034 +2014-03-05,173.320007,,,2014-03-10,67.24,16360.179688,1873.810059 +2014-03-06,173.649994,,,2014-03-11,66.75,16421.890625,1877.030029 +2014-03-07,173.75,,,2014-03-12,66.5,16452.720703,1878.040039 +2014-03-10,173.679993,,,2014-03-13,65.26,16418.679688,1877.1700440000002 +2014-03-11,172.800003,,,2014-03-14,65.12,16351.25,1867.630005 +2014-03-12,172.899994,,,2014-03-17,65.94,16340.080078,1868.199951 +2014-03-13,170.899994,,,2014-03-18,66.35,16108.889647999998,1846.339966 +2014-03-14,170.419998,,,2014-03-19,65.54,16065.669922,1841.130005 +2014-03-17,172.050003,,,2014-03-20,65.29,16247.219727000002,1858.8299559999998 +2014-03-18,173.300003,,,2014-03-21,65.16,16336.19043,1872.25 +2014-03-19,172.240005,,,2014-03-24,65.33,16222.169922,1860.77002 +2014-03-20,173.279999,,,2014-03-25,66.04,16331.049805,1872.0100100000002 +2014-03-21,172.03999299999998,,,2014-03-26,66.03,16302.769531,1866.52002 +2014-03-24,171.199997,,,2014-03-27,66.36,16276.69043,1857.439941 +2014-03-25,171.970001,,,2014-03-28,66.86,16367.879883000001,1865.619995 +2014-03-26,170.770004,,,2014-03-31,67.2,16268.990234,1852.560059 +2014-03-27,170.470001,,,2014-04-01,67.63,16264.230469,1849.040039 +2014-03-28,171.270004,,,2014-04-02,67.76,16323.05957,1857.619995 +2014-03-31,172.630005,,,2014-04-03,67.57,16457.660156,1872.339966 +2014-04-01,173.860001,,,2014-04-04,67.36,16532.609375,1885.52002 +2014-04-02,174.380005,,,2014-04-07,67.04,16573.0,1890.9000239999998 +2014-04-03,174.190002,,,2014-04-08,67.0,16572.550781,1888.77002 +2014-04-04,172.009995,,,2014-04-09,67.86,16412.710938,1865.089966 +2014-04-07,170.16000400000001,,,2014-04-10,66.66,16245.870116999999,1845.040039 +2014-04-08,170.850006,,,2014-04-11,66.26,16256.139647999998,1851.959961 +2014-04-09,172.729996,,,2014-04-14,66.64,16437.179688,1872.180054 +2014-04-10,169.130005,,,2014-04-15,66.36,16170.219727000002,1833.0799559999998 +2014-04-11,167.53999299999998,,,2014-04-16,67.18,16026.75,1815.689941 +2014-04-14,168.91000400000001,,,2014-04-17,67.53,16173.240234,1830.609985 +2014-04-15,170.050003,,,2014-04-21,67.62,16262.55957,1842.97998 +2014-04-16,171.83999599999999,,,2014-04-22,67.9,16424.849609,1862.310059 +2014-04-17,172.080002,,,2014-04-23,67.74,16408.539063,1864.8499760000002 +2014-04-21,172.729996,,,2014-04-24,67.73,16449.25,1871.890015 +2014-04-22,173.440002,,,2014-04-25,67.4,16514.369141,1879.550049 +2014-04-23,173.080002,,,2014-04-28,67.61,16501.650391,1875.390015 +2014-04-24,173.369995,,,2014-04-29,68.05,16501.650391,1878.609985 +2014-04-25,171.970001,,,2014-04-30,68.32,16361.459961000002,1863.4000239999998 +2014-04-28,172.53999299999998,,,2014-05-01,68.51,16448.740234,1869.430054 +2014-04-29,173.360001,,,2014-05-02,68.4,16535.369141,1878.3299559999998 +2014-04-30,173.880005,,,2014-05-05,68.35,16580.839844,1883.949951 +2014-05-01,173.869995,,,2014-05-06,68.23,16558.869141,1883.680054 +2014-05-02,173.630005,,,2014-05-07,68.31,16512.890625,1881.140015 +2014-05-05,173.970001,,,2014-05-08,68.32,16530.550781,1884.660034 +2014-05-06,172.41000400000001,,,2014-05-09,68.22,16401.019531,1867.719971 +2014-05-07,173.449997,,,2014-05-12,68.67,16518.539063,1878.209961 +2014-05-08,173.259995,,,2014-05-13,68.77,16550.970703,1875.630005 +2014-05-09,173.550003,,,2014-05-14,68.64,16583.339844,1878.47998 +2014-05-12,175.229996,,,2014-05-15,68.34,16695.470703,1896.6500239999998 +2014-05-13,175.350006,,,2014-05-16,68.49,16715.439453,1897.449951 +2014-05-14,174.559998,,,2014-05-19,68.35,16613.970703,1888.530029 +2014-05-15,172.949997,,,2014-05-20,67.92,16446.810547,1870.8499760000002 +2014-05-16,173.600006,,,2014-05-21,68.45,16491.310547,1877.859985 +2014-05-19,174.279999,,,2014-05-22,68.54,16511.859375,1885.0799559999998 +2014-05-20,173.149994,,,2014-05-23,68.72,16374.30957,1872.8299559999998 +2014-05-21,174.580002,,,2014-05-27,69.21,16533.060547,1888.030029 +2014-05-22,175.020004,,,2014-05-28,68.98,16543.080078,1892.4899899999998 +2014-05-23,175.759995,,,2014-05-29,69.4,16606.269531,1900.530029 +2014-05-27,176.809998,,,2014-05-30,69.41,16675.5,1911.910034 +2014-05-28,176.639999,,,2014-06-02,69.55,16633.179688,1909.780029 +2014-05-29,177.610001,,,2014-06-03,69.38,16698.740234,1920.030029 +2014-05-30,177.940002,,,2014-06-04,69.36,16717.169922,1923.569946 +2014-06-02,178.08999599999999,,,2014-06-05,69.84,16743.630859,1924.969971 +2014-06-03,178.029999,,,2014-06-06,70.22,16722.339844,1924.2399899999998 +2014-06-04,178.389999,,,2014-06-09,70.15,16737.529297,1927.880005 +2014-06-05,179.570007,,,2014-06-10,70.0,16836.109375,1940.459961 +2014-06-06,180.429993,,,2014-06-11,69.65,16924.279297,1949.439941 +2014-06-09,180.600006,,,2014-06-12,69.67,16943.099609,1951.27002 +2014-06-10,180.559998,,,2014-06-13,69.72,16945.919922,1950.790039 +2014-06-11,179.940002,,,2014-06-16,69.74,16843.880859,1943.890015 +2014-06-12,178.71000700000002,,,2014-06-17,69.69,16734.189453,1930.109985 +2014-06-13,179.270004,,,2014-06-18,70.29,16775.740234,1936.160034 +2014-06-16,179.419998,,,2014-06-19,70.67,16781.009766,1937.780029 +2014-06-17,179.809998,,,2014-06-20,70.55,16808.490234,1941.9899899999998 +2014-06-18,181.199997,,,2014-06-23,70.36,16906.619141,1956.97998 +2014-06-19,181.46000700000002,,,2014-06-24,69.92,16921.460938,1959.47998 +2014-06-20,181.009995,,,2014-06-25,68.22,16947.080078,1962.869995 +2014-06-23,180.990005,,,2014-06-26,68.27,16937.259766,1962.609985 +2014-06-24,179.83999599999999,,,2014-06-27,68.31,16818.130859,1949.97998 +2014-06-25,180.720001,,,2014-06-30,68.37,16867.509766,1959.530029 +2014-06-26,180.53999299999998,,,2014-07-01,68.97,16846.130859,1957.219971 +2014-06-27,180.889999,,,2014-07-02,69.08,16851.839844,1960.959961 +2014-06-30,180.830002,,,2014-07-03,69.22,16826.599609,1960.22998 +2014-07-01,182.070007,,,2014-07-07,68.68,16956.070313,1973.319946 +2014-07-02,182.199997,,,2014-07-08,67.96,16976.240234,1974.619995 +2014-07-03,183.199997,,,2014-07-09,68.18,17068.259766,1985.439941 +2014-07-07,182.479996,,,2014-07-10,67.43,17024.210938,1977.6500239999998 +2014-07-08,181.25,,,2014-07-11,67.47,16906.619141,1963.709961 +2014-07-09,182.100006,,,2014-07-14,67.97,16985.609375,1972.8299559999998 +2014-07-10,181.350006,,,2014-07-15,67.8,16915.070313,1964.680054 +2014-07-11,181.630005,,,2014-07-16,68.22,16943.810547,1967.569946 +2014-07-14,182.509995,,,2014-07-17,67.35,17055.419922,1977.0999760000002 +2014-07-15,182.16000400000001,,,2014-07-18,67.88,17060.679688,1973.280029 +2014-07-16,182.949997,,,2014-07-21,67.63,17138.199219,1981.569946 +2014-07-17,180.800003,,,2014-07-22,67.93,16976.810547,1958.119995 +2014-07-18,182.649994,,,2014-07-23,68.07,17100.179688,1978.219971 +2014-07-21,182.229996,,,2014-07-24,68.23,17051.730469,1973.630005 +2014-07-22,183.149994,,,2014-07-25,67.95,17113.539063,1983.530029 +2014-07-23,183.470001,,,2014-07-28,67.96,17086.630859,1987.0100100000002 +2014-07-24,183.559998,,,2014-07-29,67.82,17083.800781,1987.97998 +2014-07-25,182.669998,,,2014-07-30,67.72,16960.570313,1978.339966 +2014-07-28,182.720001,,,2014-07-31,66.59,16982.589844,1978.910034 +2014-07-29,181.899994,,,2014-08-01,66.13,16912.109375,1969.949951 +2014-07-30,181.940002,,,2014-08-04,66.44,16880.359375,1970.069946 +2014-07-31,178.320007,,,2014-08-05,65.59,16563.300781,1930.6700440000002 +2014-08-01,177.809998,,,2014-08-06,65.43,16493.369141,1925.1500239999998 +2014-08-04,179.080002,,,2014-08-07,64.9,16569.279297,1938.9899899999998 +2014-08-05,177.360001,,,2014-08-08,65.28,16429.470703,1920.209961 +2014-08-06,177.419998,,,2014-08-11,65.53,16443.339844,1920.2399899999998 +2014-08-07,176.479996,,,2014-08-12,65.48,16368.269531,1909.569946 +2014-08-08,178.509995,,,2014-08-13,65.85,16553.929688,1931.589966 +2014-08-11,179.03999299999998,,,2014-08-14,66.2,16569.980469,1936.9200440000002 +2014-08-12,178.75,,,2014-08-15,66.13,16560.539063,1933.75 +2014-08-13,180.0,,,2014-08-18,66.56,16651.800781,1946.719971 +2014-08-14,180.78999299999998,,,2014-08-19,66.72,16713.580078,1955.180054 +2014-08-15,180.800003,,,2014-08-20,66.51,16662.910156,1955.060059 +2014-08-18,182.350006,,,2014-08-21,66.79,16838.740234,1971.7399899999998 +2014-08-19,183.300003,,,2014-08-22,66.47,16919.589844,1981.5999760000002 +2014-08-20,183.759995,,,2014-08-25,66.9,16979.130859,1986.5100100000002 +2014-08-21,184.309998,,,2014-08-26,66.91,17039.490234,1992.369995 +2014-08-22,183.970001,,,2014-08-27,67.04,17001.220703,1988.4000239999998 +2014-08-25,184.850006,,,2014-08-28,66.74,17076.869141,1997.9200440000002 +2014-08-26,185.03999299999998,,,2014-08-29,66.71,17106.699219,2000.02002 +2014-08-27,185.08999599999999,,,2014-09-02,66.84,17122.009766,2000.119995 +2014-08-28,184.800003,,,2014-09-03,67.31,17079.570313,1996.7399899999998 +2014-08-29,185.429993,,,2014-09-04,66.99,17098.449219,2003.369995 +2014-09-02,185.330002,,,2014-09-05,67.0,17067.560547,2002.280029 +2014-09-03,185.220001,,,2014-09-08,66.29,17078.279297,2000.719971 +2014-09-04,184.940002,,,2014-09-09,66.1,17069.580078,1997.6500239999998 +2014-09-05,185.869995,,,2014-09-10,66.48,17137.359375,2007.709961 +2014-09-08,185.330002,,,2014-09-11,66.11,17111.419922,2001.540039 +2014-09-09,184.119995,,,2014-09-12,66.02,17013.869141,1988.439941 +2014-09-10,184.809998,,,2014-09-15,65.88,17068.710938,1995.689941 +2014-09-11,185.020004,,,2014-09-16,66.16,17049.0,1997.449951 +2014-09-12,183.919998,,,2014-09-17,65.69,16987.509766,1985.540039 +2014-09-15,183.78999299999998,,,2014-09-18,66.2,17031.140625,1984.130005 +2014-09-16,185.169998,,,2014-09-19,65.97,17131.970703,1998.97998 +2014-09-17,185.41000400000001,,,2014-09-22,65.68,17156.849609,2001.569946 +2014-09-18,186.350006,,,2014-09-23,65.13,17265.990234,2011.359985 +2014-09-19,185.429993,,,2014-09-24,65.46,17279.740234,2010.4000239999998 +2014-09-22,183.940002,,,2014-09-25,64.5,17172.679688,1994.290039 +2014-09-23,182.899994,,,2014-09-26,64.77,17055.869141,1982.77002 +2014-09-24,184.330002,,,2014-09-29,64.17,17210.060547,1998.300049 +2014-09-25,181.350006,,,2014-09-30,64.12,16945.800781,1965.9899899999998 +2014-09-26,182.940002,,,2014-10-01,63.36,17113.150391,1982.8499760000002 +2014-09-29,182.490005,,,2014-10-02,62.68,17071.220703,1977.800049 +2014-09-30,181.990005,,,2014-10-03,62.68,17042.900391,1972.290039 +2014-10-01,179.58999599999999,,,2014-10-06,63.08,16804.710938,1946.160034 +2014-10-02,179.610001,,,2014-10-07,62.01,16801.050781,1946.1700440000002 +2014-10-03,181.610001,,,2014-10-08,62.99,17009.689453,1967.9000239999998 +2014-10-06,181.330002,,,2014-10-09,61.3,16991.910156,1964.819946 +2014-10-07,178.58999599999999,,,2014-10-10,60.38,16719.390625,1935.0999760000002 +2014-10-08,181.770004,,,2014-10-13,60.3,16994.220703,1968.890015 +2014-10-09,178.020004,,,2014-10-14,60.45,16659.25,1928.209961 +2014-10-10,176.0,,,2014-10-15,60.09,16544.099609,1906.130005 +2014-10-13,173.100006,,,2014-10-16,59.53,16321.070313,1874.7399899999998 +2014-10-14,173.380005,,,2014-10-17,60.64,16315.19043,1877.699951 +2014-10-15,171.979996,,,2014-10-20,61.02,16141.740234,1862.4899899999998 +2014-10-16,172.009995,,,2014-10-21,61.75,16117.240234,1862.7600100000002 +2014-10-17,174.229996,,,2014-10-22,61.3,16380.410156,1886.7600100000002 +2014-10-20,175.830002,,,2014-10-23,61.89,16399.669922,1904.0100100000002 +2014-10-21,179.270004,,,2014-10-24,62.23,16614.810547,1941.280029 +2014-10-22,177.979996,,,2014-10-27,61.88,16461.320313,1927.109985 +2014-10-23,180.169998,,,2014-10-28,62.82,16677.900391,1950.819946 +2014-10-24,181.440002,,,2014-10-29,62.34,16805.410156,1964.5799559999998 +2014-10-27,181.169998,,,2014-10-30,62.79,16817.939453,1961.630005 +2014-10-28,183.330002,,,2014-10-31,63.95,17005.75,1985.050049 +2014-10-29,183.08999599999999,,,2014-11-03,63.4,16974.310547,1982.300049 +2014-10-30,184.240005,,,2014-11-04,63.04,17195.419922,1994.6500239999998 +2014-10-31,186.399994,,,2014-11-05,63.16,17390.519531,2018.050049 +2014-11-03,186.380005,,,2014-11-06,62.82,17366.240234,2017.810059 +2014-11-04,185.850006,,,2014-11-07,62.85,17383.839844,2012.0999760000002 +2014-11-05,186.979996,,,2014-11-10,63.13,17484.529297,2023.569946 +2014-11-06,187.740005,,,2014-11-11,63.51,17554.470703,2031.209961 +2014-11-07,187.83999599999999,,,2014-11-12,62.97,17573.929688,2031.9200440000002 +2014-11-10,188.440002,,,2014-11-13,63.27,17613.740234,2038.2600100000002 +2014-11-11,188.570007,,,2014-11-14,63.36,17614.900391,2039.680054 +2014-11-12,188.490005,,,2014-11-17,63.11,17612.199219,2038.25 +2014-11-13,188.600006,,,2014-11-18,63.8,17652.789063,2039.3299559999998 +2014-11-14,188.669998,,,2014-11-19,63.61,17634.740234,2039.819946 +2014-11-17,188.820007,,,2014-11-20,63.23,17647.75,2041.319946 +2014-11-18,189.820007,,,2014-11-21,63.78,17687.820313,2051.800049 +2014-11-19,189.550003,,,2014-11-24,64.15,17685.730469,2048.719971 +2014-11-20,189.929993,,,2014-11-25,64.26,17719.0,2052.75 +2014-11-21,190.949997,,,2014-11-26,64.51,17810.060547,2063.5 +2014-11-24,191.5,,,2014-11-28,63.99,17817.900391,2069.409912 +2014-11-25,191.300003,,,2014-12-01,63.93,17814.939453,2067.030029 +2014-11-26,191.880005,,,2014-12-02,64.11,17827.75,2072.830078 +2014-11-28,191.399994,,,2014-12-03,64.03,17828.240234,2067.560059 +2014-12-01,190.100006,,,2014-12-04,63.82,17776.800781,2053.439941 +2014-12-02,191.330002,,,2014-12-05,63.96,17879.550781,2066.550049 +2014-12-03,192.100006,,,2014-12-08,63.4,17912.619141,2074.330078 +2014-12-04,191.880005,,,2014-12-09,63.06,17900.099609,2071.919922 +2014-12-05,192.199997,,,2014-12-10,62.26,17958.789063,2075.3701170000004 +2014-12-08,190.830002,,,2014-12-11,62.18,17852.480469,2060.310059 +2014-12-09,190.779999,,,2014-12-12,60.98,17801.199219,2059.820068 +2014-12-10,187.669998,,,2014-12-15,59.97,17533.150391,2026.140015 +2014-12-11,188.570007,,,2014-12-16,60.4,17596.339844,2035.3299559999998 +2014-12-12,185.520004,,,2014-12-17,60.53,17280.830078,2002.3299559999998 +2014-12-15,184.350006,,,2014-12-18,61.61,17180.839844,1989.630005 +2014-12-16,182.78999299999998,,,2014-12-19,61.7,17068.869141,1972.7399899999998 +2014-12-17,185.529999,,,2014-12-22,62.0,17356.869141,2012.890015 +2014-12-18,190.020004,,,2014-12-23,61.8,17778.150391,2061.22998 +2014-12-19,190.889999,,,2014-12-24,62.08,17804.800781,2070.649902 +2014-12-22,191.630005,,,2014-12-26,62.24,17959.439453,2078.540039 +2014-12-23,191.979996,,,2014-12-29,61.79,18024.169922,2082.169922 +2014-12-24,191.96000700000002,,,2014-12-30,61.22,18030.210938,2081.8798829999996 +2014-12-26,192.58999599999999,,,2014-12-31,60.84,18053.710938,2088.77002 +2014-12-29,192.78999299999998,,,2015-01-02,60.58,18038.230469,2090.570068 +2014-12-30,191.869995,,,2015-01-05,59.15,17983.070313,2080.350098 +2014-12-31,189.889999,,,2015-01-06,58.48,17823.070313,2058.899902 +2015-01-02,189.850006,,,2015-01-07,59.13,17832.990234,2058.199951 +2015-01-05,186.389999,,,2015-01-08,59.93,17501.650391,2020.5799559999998 +2015-01-06,184.729996,,,2015-01-09,59.64,17371.640625,2002.609985 +2015-01-07,186.940002,,,2015-01-12,59.5,17584.519531,2025.9000239999998 +2015-01-08,190.279999,,,2015-01-13,59.8,17907.869141,2062.139893 +2015-01-09,188.679993,,,2015-01-14,59.63,17737.369141,2044.810059 +2015-01-12,187.149994,,,2015-01-15,60.01,17640.839844,2028.2600100000002 +2015-01-13,186.690002,,,2015-01-16,60.79,17613.679688,2023.030029 +2015-01-14,185.610001,,,2015-01-20,61.0,17427.089844,2011.27002 +2015-01-15,183.899994,,,2015-01-21,61.48,17320.710938,1992.6700440000002 +2015-01-16,186.369995,,,2015-01-22,61.71,17511.570313,2019.4200440000002 +2015-01-20,186.66000400000001,,,2015-01-23,61.36,17515.230469,2022.550049 +2015-01-21,187.559998,,,2015-01-26,62.2,17554.279297,2032.119995 +2015-01-22,190.429993,,,2015-01-27,62.29,17813.980469,2063.149902 +2015-01-23,189.380005,,,2015-01-28,61.36,17672.599609,2051.820068 +2015-01-26,189.869995,,,2015-01-29,62.2,17678.699219,2057.090088 +2015-01-27,187.330002,,,2015-01-30,61.22,17387.210938,2029.550049 +2015-01-28,184.809998,,,2015-02-02,61.96,17191.369141,2002.160034 +2015-01-29,186.58999599999999,,,2015-02-03,62.95,17416.849609,2021.25 +2015-01-30,184.169998,,,2015-02-04,62.43,17164.949219,1994.9899899999998 +2015-02-02,186.559998,,,2015-02-05,63.29,17361.039063,2020.8499760000002 +2015-02-03,189.25,,,2015-02-06,62.5,17666.400391,2050.030029 +2015-02-04,188.520004,,,2015-02-09,62.2,17673.019531,2041.5100100000002 +2015-02-05,190.5,,,2015-02-10,62.77,17884.880859,2062.52002 +2015-02-06,189.899994,,,2015-02-11,62.43,17824.289063,2055.469971 +2015-02-09,189.100006,,,2015-02-12,63.4,17729.210938,2046.7399899999998 +2015-02-10,191.119995,,,2015-02-13,63.82,17868.759766,2068.590088 +2015-02-11,191.179993,,,2015-02-17,63.97,17862.140625,2068.530029 +2015-02-12,193.070007,,,2015-02-18,64.35,17972.380859,2088.47998 +2015-02-13,193.880005,,,2015-02-19,64.43,18019.349609,2096.98999 +2015-02-17,194.21000700000002,,,2015-02-20,65.03,18047.580078,2100.340088 +2015-02-18,194.16000400000001,,,2015-02-23,64.8,18029.849609,2099.679932 +2015-02-19,193.990005,,,2015-02-24,65.2,17985.769531,2097.449951 +2015-02-20,195.199997,,,2015-02-25,65.25,18140.439453,2110.300049 +2015-02-23,195.139999,,,2015-02-26,65.07,18116.839844,2109.659912 +2015-02-24,195.679993,,,2015-02-27,65.1,18209.189453,2115.47998 +2015-02-25,195.559998,,,2015-03-02,65.2,18224.570313,2113.860107 +2015-02-26,195.309998,,,2015-03-03,64.8,18214.419922,2110.73999 +2015-02-27,194.729996,,,2015-03-04,64.54,18132.699219,2104.5 +2015-03-02,195.929993,,,2015-03-05,64.69,18288.630859,2117.389893 +2015-03-03,195.03999299999998,,,2015-03-06,63.81,18203.369141,2107.780029 +2015-03-04,194.229996,,,2015-03-09,63.91,18096.900391,2098.530029 +2015-03-05,194.470001,,,2015-03-10,62.52,18135.720703,2101.040039 +2015-03-06,191.729996,,,2015-03-11,62.68,17856.779297,2071.26001 +2015-03-09,192.509995,,,2015-03-12,63.46,17995.720703,2079.429932 +2015-03-10,189.25,,,2015-03-13,63.09,17662.939453,2044.160034 +2015-03-11,188.919998,,,2015-03-16,63.8,17635.390625,2040.2399899999998 +2015-03-12,191.350006,,,2015-03-17,63.64,17895.220703,2065.949951 +2015-03-13,190.190002,,,2015-03-18,65.0,17749.310547,2053.399902 +2015-03-16,192.759995,,,2015-03-19,64.24,17977.419922,2081.189941 +2015-03-17,192.119995,,,2015-03-20,65.66,17849.080078,2074.280029 +2015-03-18,194.46000700000002,,,2015-03-23,65.99,18076.189453,2099.5 +2015-03-19,193.520004,,,2015-03-24,65.85,17959.029297,2089.27002 +2015-03-20,194.320007,,,2015-03-25,65.54,18127.650391,2108.100098 +2015-03-23,193.979996,,,2015-03-26,64.97,18116.039063,2104.419922 +2015-03-24,192.809998,,,2015-03-27,65.14,18011.140625,2091.5 +2015-03-25,190.009995,,,2015-03-30,65.18,17718.539063,2061.050049 +2015-03-26,189.559998,,,2015-03-31,64.17,17678.230469,2056.149902 +2015-03-27,190.03999299999998,,,2015-04-01,64.63,17712.660156,2061.02002 +2015-03-30,192.380005,,,2015-04-02,65.19,17976.310547,2086.23999 +2015-03-31,190.71000700000002,,,2015-04-06,65.85,17776.119141,2067.889893 +2015-04-01,189.979996,,,2015-04-07,65.76,17698.179688,2059.689941 +2015-04-02,190.649994,,,2015-04-08,66.04,17763.240234,2066.959961 +2015-04-06,191.91000400000001,,,2015-04-09,66.13,17880.849609,2080.6201170000004 +2015-04-07,191.520004,,,2015-04-10,66.26,17875.419922,2076.330078 +2015-04-08,192.100006,,,2015-04-13,65.84,17902.509766,2081.899902 +2015-04-09,192.96000700000002,,,2015-04-14,66.33,17958.730469,2091.179932 +2015-04-10,193.96000700000002,,,2015-04-15,66.63,18057.650391,2102.060059 +2015-04-13,193.08999599999999,,,2015-04-16,66.81,17977.039063,2092.429932 +2015-04-14,193.399994,,,2015-04-17,65.97,18036.699219,2095.840088 +2015-04-15,194.399994,,,2015-04-20,66.04,18112.609375,2106.6298829999996 +2015-04-16,194.25,,,2015-04-21,66.63,18105.769531,2104.98999 +2015-04-17,192.050003,,,2015-04-22,66.76,17826.300781,2081.179932 +2015-04-20,193.830002,,,2015-04-23,67.01,18034.929688,2100.399902 +2015-04-21,193.53999299999998,,,2015-04-24,67.4,17949.589844,2097.290039 +2015-04-22,194.529999,,,2015-04-27,67.73,18038.269531,2107.959961 +2015-04-23,195.009995,,,2015-04-28,67.81,18058.689453,2112.929932 +2015-04-24,195.449997,,,2015-04-29,67.22,18080.140625,2117.689941 +2015-04-27,194.639999,,,2015-04-30,66.51,18037.970703,2108.919922 +2015-04-28,195.199997,,,2015-05-01,67.25,18110.140625,2114.76001 +2015-04-29,194.479996,,,2015-05-04,67.18,18035.529297,2106.850098 +2015-04-30,192.520004,,,2015-05-05,66.18,17840.519531,2085.51001 +2015-05-01,194.619995,,,2015-05-06,66.35,18024.060547,2108.290039 +2015-05-04,195.190002,,,2015-05-07,66.13,18070.400391,2114.48999 +2015-05-05,192.899994,,,2015-05-08,67.66,17928.199219,2089.459961 +2015-05-06,192.110001,,,2015-05-11,67.07,17841.980469,2080.149902 +2015-05-07,192.880005,,,2015-05-12,67.03,17924.060547,2088.0 +2015-05-08,195.479996,,,2015-05-13,67.53,18191.109375,2116.100098 +2015-05-11,194.520004,,,2015-05-14,68.34,18105.169922,2105.330078 +2015-05-12,193.970001,,,2015-05-15,68.42,18068.230469,2099.1201170000004 +2015-05-13,193.940002,,,2015-05-18,68.19,18060.490234,2098.47998 +2015-05-14,196.050003,,,2015-05-19,67.93,18252.240234,2121.100098 +2015-05-15,196.220001,,,2015-05-20,68.06,18272.560547,2122.72998 +2015-05-18,196.830002,,,2015-05-21,68.42,18298.880859,2129.199951 +2015-05-19,196.740005,,,2015-05-22,67.98,18312.390625,2127.830078 +2015-05-20,196.580002,,,2015-05-26,66.76,18285.400391,2125.850098 +2015-05-21,197.070007,,,2015-05-27,67.41,18285.740234,2130.820068 +2015-05-22,196.630005,,,2015-05-28,67.29,18232.019531,2126.060059 +2015-05-26,194.610001,,,2015-05-29,66.64,18041.539063,2104.199951 +2015-05-27,196.419998,,,2015-06-01,66.46,18162.990234,2123.47998 +2015-05-28,196.199997,,,2015-06-02,66.77,18126.119141,2120.790039 +2015-05-29,194.970001,,,2015-06-03,67.14,18010.679688,2107.389893 +2015-06-01,195.389999,,,2015-06-04,66.42,18040.369141,2111.72998 +2015-06-02,195.199997,,,2015-06-05,65.63,18011.939453,2109.600098 +2015-06-03,195.649994,,,2015-06-08,65.54,18076.269531,2114.070068 +2015-06-04,193.970001,,,2015-06-09,65.18,17905.580078,2095.840088 +2015-06-05,193.690002,,,2015-06-10,66.55,17849.460938,2092.830078 +2015-06-08,192.470001,,,2015-06-11,66.73,17766.550781,2079.280029 +2015-06-09,192.550003,,,2015-06-12,66.2,17764.039063,2080.149902 +2015-06-10,194.880005,,,2015-06-15,65.8,18000.400391,2105.199951 +2015-06-11,195.279999,,,2015-06-16,65.78,18039.369141,2108.860107 +2015-06-12,193.929993,,,2015-06-17,65.63,17898.839844,2094.110107 +2015-06-15,193.029999,,,2015-06-18,66.22,17791.169922,2084.429932 +2015-06-16,194.130005,,,2015-06-19,66.06,17904.480469,2096.290039 +2015-06-17,194.520004,,,2015-06-22,67.31,17935.740234,2100.439941 +2015-06-18,196.470001,,,2015-06-23,67.49,18115.839844,2121.23999 +2015-06-19,194.570007,,,2015-06-24,66.9,18015.949219,2109.98999 +2015-06-22,195.75,,,2015-06-25,65.77,18119.779297,2122.850098 +2015-06-23,195.889999,,,2015-06-26,65.74,18144.070313,2124.199951 +2015-06-24,194.46000700000002,,,2015-06-29,63.72,17966.070313,2108.580078 +2015-06-25,193.889999,,,2015-06-30,63.49,17890.359375,2102.310059 +2015-06-26,193.850006,,,2015-07-01,63.9,17946.679688,2101.48999 +2015-06-29,189.83999599999999,,,2015-07-02,63.98,17596.349609,2057.639893 +2015-06-30,190.360001,,,2015-07-06,62.69,17619.509766,2063.110107 +2015-07-01,191.729996,,,2015-07-07,62.71,17757.910156,2077.419922 +2015-07-02,191.669998,,,2015-07-08,61.25,17730.109375,2076.780029 +2015-07-06,190.929993,,,2015-07-09,62.26,17683.580078,2068.76001 +2015-07-07,192.08999599999999,,,2015-07-10,64.3,17776.910156,2081.340088 +2015-07-08,188.949997,,,2015-07-13,64.54,17515.419922,2046.680054 +2015-07-09,189.380005,,,2015-07-14,65.08,17548.619141,2051.310059 +2015-07-10,191.71000700000002,,,2015-07-15,64.84,17760.410156,2076.6201170000004 +2015-07-13,193.850006,,,2015-07-16,65.4,17977.679688,2099.600098 +2015-07-14,194.71000700000002,,,2015-07-17,65.31,18053.580078,2108.949951 +2015-07-15,194.570007,,,2015-07-20,65.46,18050.169922,2107.399902 +2015-07-16,196.130005,,,2015-07-21,65.27,18120.25,2124.290039 +2015-07-17,196.350006,,,2015-07-22,64.77,18086.449219,2126.639893 +2015-07-20,196.5,,,2015-07-23,64.6,18100.410156,2128.280029 +2015-07-21,195.669998,,,2015-07-24,63.89,17919.289063,2119.209961 +2015-07-22,195.220001,,,2015-07-27,63.42,17851.039063,2114.149902 +2015-07-23,194.130005,,,2015-07-28,64.22,17731.919922,2102.149902 +2015-07-24,192.050003,,,2015-07-29,64.45,17568.529297,2079.649902 +2015-07-27,190.940002,,,2015-07-30,64.4,17440.589844,2067.639893 +2015-07-28,193.300003,,,2015-07-31,64.78,17630.269531,2093.25 +2015-07-29,194.740005,,,2015-08-03,64.61,17751.390625,2108.570068 +2015-07-30,194.759995,,,2015-08-04,64.66,17745.980469,2108.6298829999996 +2015-07-31,194.320007,,,2015-08-05,65.0,17689.859375,2103.840088 +2015-08-03,193.779999,,,2015-08-06,64.73,17598.199219,2098.040039 +2015-08-04,193.350006,,,2015-08-07,64.61,17550.689453,2093.320068 +2015-08-05,194.029999,,,2015-08-10,65.4,17540.470703,2099.840088 +2015-08-06,192.580002,,,2015-08-11,64.4,17419.75,2083.560059 +2015-08-07,192.029999,,,2015-08-12,63.94,17373.380859,2077.570068 +2015-08-10,194.490005,,,2015-08-13,63.9,17615.169922,2104.179932 +2015-08-11,192.669998,,,2015-08-14,64.0,17402.839844,2084.070068 +2015-08-12,192.899994,,,2015-08-17,63.88,17402.509766,2086.050049 +2015-08-13,192.679993,,,2015-08-18,63.4,17408.25,2083.389893 +2015-08-14,193.429993,,,2015-08-19,62.84,17477.400391,2091.540039 +2015-08-17,194.470001,,,2015-08-20,61.32,17545.179688,2102.439941 +2015-08-18,194.0,,,2015-08-21,59.86,17511.339844,2096.919922 +2015-08-19,192.41000400000001,,,2015-08-24,57.85,17348.730469,2079.610107 +2015-08-20,188.350006,,,2015-08-25,58.4,16990.689453,2035.72998 +2015-08-21,182.380005,,,2015-08-26,59.8,16459.75,1970.890015 +2015-08-24,175.190002,,,2015-08-27,60.51,15871.349609,1893.209961 +2015-08-25,172.830002,,,2015-08-28,60.42,15666.44043,1867.609985 +2015-08-26,179.58999599999999,,,2015-08-31,59.97,16285.509766,1940.5100100000002 +2015-08-27,183.970001,,,2015-09-01,57.93,16654.769531,1987.660034 +2015-08-28,184.110001,,,2015-09-02,58.82,16643.009766,1988.869995 +2015-08-31,182.580002,,,2015-09-03,58.94,16528.029297,1972.180054 +2015-09-01,177.190002,,,2015-09-04,57.58,16058.349609,1913.8499760000002 +2015-09-02,180.46000700000002,,,2015-09-08,59.3,16351.379883000001,1948.859985 +2015-09-03,180.679993,,,2015-09-09,59.06,16374.759766,1951.130005 +2015-09-04,177.919998,,,2015-09-10,59.45,16102.379883000001,1921.219971 +2015-09-08,182.399994,,,2015-09-11,59.44,16492.679688,1969.410034 +2015-09-09,179.880005,,,2015-09-14,58.99,16253.570313,1942.040039 +2015-09-10,180.850006,,,2015-09-15,59.39,16330.400391,1952.290039 +2015-09-11,181.71000700000002,,,2015-09-16,60.3,16433.089844,1961.050049 +2015-09-14,180.979996,,,2015-09-17,60.33,16370.959961000002,1953.030029 +2015-09-15,183.300003,,,2015-09-18,58.82,16599.849609,1978.089966 +2015-09-16,184.899994,,,2015-09-21,58.79,16739.949219,1995.310059 +2015-09-17,184.46000700000002,,,2015-09-22,57.39,16674.740234,1990.199951 +2015-09-18,180.570007,,,2015-09-23,57.12,16384.580078,1958.030029 +2015-09-21,181.389999,,,2015-09-24,56.95,16510.189453,1966.969971 +2015-09-22,179.16000400000001,,,2015-09-25,57.43,16330.469727000002,1942.7399899999998 +2015-09-23,178.800003,,,2015-09-28,56.33,16279.889647999998,1938.7600100000002 +2015-09-24,178.199997,,,2015-09-29,56.25,16201.320313,1932.2399899999998 +2015-09-25,178.110001,,,2015-09-30,57.32,16314.669922,1931.339966 +2015-09-28,173.58999599999999,,,2015-10-01,57.5,16001.889647999998,1881.77002 +2015-09-29,173.820007,,,2015-10-02,58.48,16049.129883000001,1884.089966 +2015-09-30,177.139999,,,2015-10-05,59.64,16284.700195,1920.030029 +2015-10-01,177.5,,,2015-10-06,59.71,16272.009766,1923.819946 +2015-10-02,180.059998,,,2015-10-07,60.46,16472.369141,1951.359985 +2015-10-05,183.360001,,,2015-10-08,60.94,16776.429688,1987.050049 +2015-10-06,182.699997,,,2015-10-09,61.05,16790.189453,1979.9200440000002 +2015-10-07,184.240005,,,2015-10-12,60.93,16912.289063,1995.8299559999998 +2015-10-08,185.860001,,,2015-10-13,60.16,17050.75,2013.430054 +2015-10-09,186.0,,,2015-10-14,60.28,17084.490234,2014.890015 +2015-10-12,186.240005,,,2015-10-15,61.32,17131.859375,2017.459961 +2015-10-13,184.979996,,,2015-10-16,61.26,17081.890625,2003.689941 +2015-10-14,184.119995,,,2015-10-19,61.05,16924.75,1994.2399899999998 +2015-10-15,186.869995,,,2015-10-20,60.8,17141.75,2023.859985 +2015-10-16,187.720001,,,2015-10-21,60.77,17215.970703,2033.109985 +2015-10-19,187.770004,,,2015-10-22,61.45,17230.539063,2033.660034 +2015-10-20,187.5,,,2015-10-23,62.06,17217.109375,2030.77002 +2015-10-21,186.429993,,,2015-10-26,61.83,17168.609375,2018.939941 +2015-10-22,189.53999299999998,,,2015-10-27,61.29,17489.160156,2052.51001 +2015-10-23,191.639999,,,2015-10-28,61.71,17646.699219,2075.149902 +2015-10-26,191.259995,,,2015-10-29,61.24,17623.050781,2071.179932 +2015-10-27,190.779999,,,2015-10-30,61.11,17581.429688,2065.889893 +2015-10-28,193.050003,,,2015-11-02,61.69,17779.519531,2090.350098 +2015-10-29,192.990005,,,2015-11-03,61.67,17755.800781,2089.409912 +2015-10-30,192.059998,,,2015-11-04,61.33,17663.539063,2079.360107 +2015-11-02,194.330002,,,2015-11-05,61.22,17828.759766,2104.050049 +2015-11-03,194.869995,,,2015-11-06,60.94,17918.150391,2109.790039 +2015-11-04,194.240005,,,2015-11-09,60.31,17867.580078,2102.310059 +2015-11-05,194.059998,,,2015-11-10,60.27,17863.429688,2099.929932 +2015-11-06,194.009995,,,2015-11-11,60.58,17910.330078,2099.199951 +2015-11-09,192.149994,,,2015-11-12,59.79,17730.480469,2078.580078 +2015-11-10,192.490005,,,2015-11-13,59.29,17758.210938,2081.719971 +2015-11-11,191.860001,,,2015-11-16,60.04,17702.220703,2075.0 +2015-11-12,189.21000700000002,,,2015-11-17,60.2,17448.070313,2045.969971 +2015-11-13,187.08999599999999,,,2015-11-18,60.75,17245.240234,2023.040039 +2015-11-16,189.91000400000001,,,2015-11-19,61.06,17483.009766,2053.189941 +2015-11-17,189.699997,,,2015-11-20,60.92,17489.5,2050.439941 +2015-11-18,192.78999299999998,,,2015-11-23,60.54,17737.160156,2083.580078 +2015-11-19,192.58999599999999,,,2015-11-24,60.55,17732.75,2081.23999 +2015-11-20,193.350006,,,2015-11-25,60.69,17823.810547,2089.169922 +2015-11-23,193.110001,,,2015-11-27,60.7,17792.679688,2086.590088 +2015-11-24,193.350006,,,2015-11-30,60.65,17812.189453,2089.139893 +2015-11-25,193.350006,,,2015-12-01,61.29,17813.390625,2088.8701170000004 +2015-11-27,193.5,,,2015-12-02,60.64,17813.390625,2090.110107 +2015-11-30,192.610001,,,2015-12-03,60.35,17719.919922,2080.409912 +2015-12-01,194.679993,,,2015-12-04,60.84,17888.349609,2102.6298829999996 +2015-12-02,192.58999599999999,,,2015-12-07,60.45,17729.679688,2079.51001 +2015-12-03,189.830002,,,2015-12-08,59.56,17477.669922,2049.6201170000004 +2015-12-04,193.720001,,,2015-12-09,59.29,17847.630859,2091.689941 +2015-12-07,192.380005,,,2015-12-10,59.3,17730.509766,2077.070068 +2015-12-08,191.139999,,,2015-12-11,58.17,17568.0,2063.590088 +2015-12-09,189.669998,,,2015-12-14,58.26,17492.300781,2047.619995 +2015-12-10,190.119995,,,2015-12-15,58.55,17574.75,2052.22998 +2015-12-11,186.46000700000002,,,2015-12-16,59.73,17265.210938,2012.369995 +2015-12-14,187.360001,,,2015-12-17,58.97,17368.5,2021.939941 +2015-12-15,189.350006,,,2015-12-18,58.35,17524.910156,2043.410034 +2015-12-16,192.110001,,,2015-12-21,58.11,17749.089844,2073.070068 +2015-12-17,189.25,,,2015-12-22,58.55,17495.839844,2041.890015 +2015-12-18,184.83999599999999,,,2015-12-23,59.53,17128.550781,2005.550049 +2015-12-21,186.300003,,,2015-12-24,59.43,17251.619141,2021.1500239999998 +2015-12-22,187.96000700000002,,,2015-12-28,59.29,17417.269531,2038.969971 +2015-12-23,190.309998,,,2015-12-29,59.88,17602.609375,2064.290039 +2015-12-24,190.0,,,2015-12-30,59.52,17552.169922,2060.98999 +2015-12-28,189.58999599999999,,,2015-12-31,58.72,17528.269531,2056.5 +2015-12-29,191.639999,,,2016-01-04,57.82,17720.980469,2078.360107 +2015-12-30,190.270004,,,2016-01-05,57.73,17603.869141,2063.360107 +2015-12-31,188.479996,,,2016-01-06,56.78,17425.029297,2043.939941 +2016-01-04,185.639999,,,2016-01-07,55.6,17148.939453,2012.660034 +2016-01-05,186.009995,,,2016-01-08,54.93,17158.660156,2016.709961 +2016-01-06,183.639999,,,2016-01-11,55.16,16906.509766,1990.2600100000002 +2016-01-07,179.28999299999998,,,2016-01-12,55.42,16514.099609,1943.089966 +2016-01-08,177.350006,,,2016-01-13,54.56,16346.450195,1922.030029 +2016-01-11,177.490005,,,2016-01-14,55.26,16398.570313,1923.6700440000002 +2016-01-12,178.880005,,,2016-01-15,53.26,16516.220703,1938.680054 +2016-01-13,174.429993,,,2016-01-19,53.75,16151.410156,1890.280029 +2016-01-14,177.350006,,,2016-01-20,52.53,16379.049805,1921.839966 +2016-01-15,173.520004,,,2016-01-21,52.92,15988.080078,1880.3299559999998 +2016-01-19,173.610001,,,2016-01-22,54.48,16016.019531,1881.3299559999998 +2016-01-20,171.610001,,,2016-01-25,53.75,15766.740234,1859.3299559999998 +2016-01-21,172.5,,,2016-01-26,54.71,15882.679688,1868.9899899999998 +2016-01-22,176.0,,,2016-01-27,54.36,16093.509766,1906.9000239999998 +2016-01-25,173.25,,,2016-01-28,54.52,15885.219727000002,1877.0799559999998 +2016-01-26,175.699997,,,2016-01-29,55.48,16167.230469,1903.630005 +2016-01-27,173.800003,,,2016-02-01,55.42,15944.459961000002,1882.949951 +2016-01-28,174.770004,,,2016-02-02,54.13,16069.639647999998,1893.359985 +2016-01-29,179.100006,,,2016-02-03,54.58,16466.300781,1940.2399899999998 +2016-02-01,179.029999,,,2016-02-04,54.65,16449.179688,1939.380005 +2016-02-02,175.679993,,,2016-02-05,53.81,16153.540038999998,1903.030029 +2016-02-03,176.619995,,,2016-02-08,52.83,16336.660156,1912.530029 +2016-02-04,176.919998,,,2016-02-09,52.2,16416.580078,1915.449951 +2016-02-05,173.66000400000001,,,2016-02-10,52.14,16204.969727000002,1880.050049 +2016-02-08,171.220001,,,2016-02-11,51.38,16027.049805,1853.439941 +2016-02-09,171.139999,,,2016-02-12,52.28,16014.379883000001,1852.209961 +2016-02-10,171.16000400000001,,,2016-02-16,53.34,15914.740234,1851.859985 +2016-02-11,169.08999599999999,,,2016-02-17,54.26,15660.179688,1829.0799559999998 +2016-02-12,172.41000400000001,,,2016-02-18,53.98,15973.839844,1864.780029 +2016-02-16,175.309998,,,2016-02-19,53.92,16196.410156,1895.5799559999998 +2016-02-17,178.220001,,,2016-02-22,54.53,16453.830078,1926.819946 +2016-02-18,177.389999,,,2016-02-23,53.64,16413.429688,1917.8299559999998 +2016-02-19,177.41000400000001,,,2016-02-24,53.45,16391.990234,1917.780029 +2016-02-22,179.970001,,,2016-02-25,54.09,16620.660156,1945.5 +2016-02-23,177.740005,,,2016-02-26,53.95,16431.779297,1921.27002 +2016-02-24,178.53999299999998,,,2016-02-29,53.63,16484.990234,1929.800049 +2016-02-25,180.610001,,,2016-03-01,55.03,16697.289063,1951.699951 +2016-02-26,180.28999299999998,,,2016-03-02,55.41,16639.970703,1948.050049 +2016-02-29,178.83999599999999,,,2016-03-03,55.95,16516.5,1932.22998 +2016-03-01,183.110001,,,2016-03-04,56.36,16865.080078,1978.3499760000002 +2016-03-02,183.899994,,,2016-03-07,56.29,16899.320313,1986.449951 +2016-03-03,184.559998,,,2016-03-08,55.74,16943.900391,1993.4000239999998 +2016-03-04,185.169998,,,2016-03-09,55.95,17006.769531,1999.9899899999998 +2016-03-07,185.350006,,,2016-03-10,55.86,17073.949219,2001.7600100000002 +2016-03-08,183.300003,,,2016-03-11,57.32,16964.099609,1979.2600100000002 +2016-03-09,184.25,,,2016-03-14,57.2,17000.359375,1989.2600100000002 +2016-03-10,184.28999299999998,,,2016-03-15,56.66,16995.130859,1989.569946 +2016-03-11,187.360001,,,2016-03-16,57.16,17213.310547,2022.189941 +2016-03-14,187.139999,,,2016-03-17,57.6,17229.130859,2019.640015 +2016-03-15,186.800003,,,2016-03-18,57.5,17251.529297,2015.930054 +2016-03-16,187.860001,,,2016-03-21,57.41,17325.759766,2027.219971 +2016-03-17,189.100006,,,2016-03-22,57.31,17481.490234,2040.589966 +2016-03-18,188.970001,,,2016-03-23,56.73,17602.300781,2049.580078 +2016-03-21,189.149994,,,2016-03-24,56.35,17623.869141,2051.600098 +2016-03-22,189.009995,,,2016-03-28,56.69,17582.570313,2049.800049 +2016-03-23,187.809998,,,2016-03-29,57.3,17502.589844,2036.709961 +2016-03-24,187.740005,,,2016-03-30,57.73,17515.730469,2035.939941 +2016-03-28,187.83999599999999,,,2016-03-31,57.16,17535.390625,2037.050049 +2016-03-29,189.529999,,,2016-04-01,56.55,17633.109375,2055.01001 +2016-03-30,190.369995,,,2016-04-04,56.43,17716.660156,2063.949951 +2016-03-31,189.990005,,,2016-04-05,55.32,17685.089844,2059.73999 +2016-04-01,191.190002,,,2016-04-06,56.22,17792.75,2072.780029 +2016-04-04,190.610001,,,2016-04-07,55.4,17737.0,2066.1298829999996 +2016-04-05,188.679993,,,2016-04-08,56.46,17603.320313,2045.1700440000002 +2016-04-06,190.729996,,,2016-04-11,56.49,17716.050781,2066.659912 +2016-04-07,188.449997,,,2016-04-12,57.33,17541.960938,2041.910034 +2016-04-08,188.979996,,,2016-04-13,58.24,17576.960938,2047.5999760000002 +2016-04-11,188.46000700000002,,,2016-04-14,58.43,17556.410156,2041.9899899999998 +2016-04-12,190.28999299999998,,,2016-04-15,58.3,17721.25,2061.719971 +2016-04-13,192.220001,,,2016-04-18,58.8,17908.279297,2082.419922 +2016-04-14,192.279999,,,2016-04-19,59.82,17926.429688,2082.780029 +2016-04-15,192.08999599999999,,,2016-04-20,59.87,17897.460938,2080.72998 +2016-04-18,193.350006,,,2016-04-21,59.51,18004.160156,2094.340088 +2016-04-19,193.940002,,,2016-04-22,59.54,18053.599609,2100.800049 +2016-04-20,194.100006,,,2016-04-25,59.24,18096.269531,2102.399902 +2016-04-21,193.08999599999999,,,2016-04-26,59.45,17982.519531,2091.47998 +2016-04-22,193.100006,,,2016-04-27,59.49,18003.75,2091.580078 +2016-04-25,192.75,,,2016-04-28,58.68,17977.240234,2087.790039 +2016-04-26,193.110001,,,2016-04-29,58.43,17990.320313,2091.699951 +2016-04-27,193.440002,,,2016-05-02,58.98,18041.550781,2095.149902 +2016-04-28,191.669998,,,2016-05-03,58.01,17830.759766,2075.810059 +2016-04-29,190.699997,,,2016-05-04,57.34,17773.640625,2065.300049 +2016-05-02,192.190002,,,2016-05-05,57.22,17891.160156,2081.429932 +2016-05-03,190.529999,,,2016-05-06,57.38,17750.910156,2063.3701170000004 +2016-05-04,189.440002,,,2016-05-09,57.26,17651.259766,2051.1201170000004 +2016-05-05,189.429993,,,2016-05-10,58.08,17660.710938,2050.6298829999996 +2016-05-06,190.059998,,,2016-05-11,57.58,17740.630859,2057.139893 +2016-05-09,190.199997,,,2016-05-12,57.56,17705.910156,2058.689941 +2016-05-10,192.580002,,,2016-05-13,56.97,17928.349609,2084.389893 +2016-05-11,190.83999599999999,,,2016-05-16,57.65,17711.119141,2064.459961 +2016-05-12,190.820007,,,2016-05-17,57.23,17720.5,2064.110107 +2016-05-13,189.220001,,,2016-05-18,57.25,17535.320313,2046.609985 +2016-05-16,191.08999599999999,,,2016-05-19,56.84,17710.710938,2066.659912 +2016-05-17,189.350006,,,2016-05-20,57.31,17529.980469,2047.209961 +2016-05-18,189.419998,,,2016-05-23,57.12,17526.619141,2047.630005 +2016-05-19,188.720001,,,2016-05-24,57.95,17435.400391,2040.040039 +2016-05-20,189.880005,,,2016-05-25,58.56,17500.939453,2052.320068 +2016-05-23,189.490005,,,2016-05-26,58.72,17492.929688,2048.040039 +2016-05-24,192.080002,,,2016-05-27,58.66,17706.050781,2076.060059 +2016-05-25,193.429993,,,2016-05-31,58.38,17851.509766,2090.540039 +2016-05-26,193.419998,,,2016-06-01,58.33,17828.289063,2090.100098 +2016-05-27,194.279999,,,2016-06-02,58.33,17873.220703,2099.060059 +2016-05-31,194.100006,,,2016-06-03,58.71,17787.199219,2096.949951 +2016-06-01,194.350006,,,2016-06-06,59.04,17789.669922,2099.330078 +2016-06-02,194.919998,,,2016-06-07,59.47,17838.560547,2105.26001 +2016-06-03,194.360001,,,2016-06-08,59.59,17807.060547,2099.1298829999996 +2016-06-06,195.309998,,,2016-06-09,58.86,17920.330078,2109.409912 +2016-06-07,195.570007,,,2016-06-10,57.15,17938.279297,2112.1298829999996 +2016-06-08,196.25,,,2016-06-13,56.32,18005.050781,2119.1201170000004 +2016-06-09,195.919998,,,2016-06-14,55.42,17985.189453,2115.47998 +2016-06-10,194.130005,,,2016-06-15,55.79,17865.339844,2096.070068 +2016-06-13,192.610001,,,2016-06-16,55.9,17732.480469,2079.060059 +2016-06-14,192.279999,,,2016-06-17,56.46,17674.820313,2075.320068 +2016-06-15,191.940002,,,2016-06-20,57.86,17640.169922,2071.5 +2016-06-16,192.570007,,,2016-06-21,58.33,17733.099609,2077.98999 +2016-06-17,191.940002,,,2016-06-22,57.12,17675.160156,2071.219971 +2016-06-20,192.149994,,,2016-06-23,58.7,17804.869141,2083.25 +2016-06-21,192.690002,,,2016-06-24,53.66,17829.730469,2088.899902 +2016-06-22,192.369995,,,2016-06-27,52.63,17780.830078,2085.449951 +2016-06-23,194.940002,,,2016-06-28,54.01,18011.070313,2113.320068 +2016-06-24,187.929993,,,2016-06-29,55.0,17400.75,2037.410034 +2016-06-27,184.529999,,,2016-06-30,55.82,17140.240234,2000.540039 +2016-06-28,187.860001,,,2016-07-01,55.82,17409.720703,2036.089966 +2016-06-29,191.080002,,,2016-07-05,54.74,17694.679688,2070.77002 +2016-06-30,193.669998,,,2016-07-06,54.64,17929.990234,2098.860107 +2016-07-01,194.080002,,,2016-07-07,54.42,17949.369141,2102.949951 +2016-07-05,192.759995,,,2016-07-08,55.25,17840.619141,2088.550049 +2016-07-06,193.860001,,,2016-07-11,56.06,17918.619141,2099.72998 +2016-07-07,193.71000700000002,,,2016-07-12,56.82,17895.880859,2097.899902 +2016-07-08,196.66000400000001,,,2016-07-13,56.76,18146.740234,2129.899902 +2016-07-11,197.330002,,,2016-07-14,57.25,18226.929688,2137.159912 +2016-07-12,198.720001,,,2016-07-15,56.96,18347.669922,2152.139893 +2016-07-13,198.759995,,,2016-07-18,57.1,18372.119141,2152.429932 +2016-07-14,199.809998,,,2016-07-19,56.65,18506.410156,2163.75 +2016-07-15,199.619995,,,2016-07-20,57.16,18516.550781,2161.73999 +2016-07-18,200.110001,,,2016-07-21,56.93,18533.050781,2166.889893 +2016-07-19,199.820007,,,2016-07-22,57.04,18559.009766,2163.780029 +2016-07-20,200.699997,,,2016-07-25,56.97,18595.029297,2173.02002 +2016-07-21,199.979996,,,2016-07-26,57.21,18517.230469,2165.169922 +2016-07-22,200.889999,,,2016-07-27,57.42,18570.849609,2175.030029 +2016-07-25,200.279999,,,2016-07-28,57.36,18493.060547,2168.47998 +2016-07-26,200.350006,,,2016-07-29,58.04,18473.75,2169.179932 +2016-07-27,200.119995,,,2016-08-01,57.66,18472.169922,2166.580078 +2016-07-28,200.46000700000002,,,2016-08-02,57.37,18456.349609,2170.060059 +2016-07-29,200.78999299999998,,,2016-08-03,57.17,18432.240234,2173.600098 +2016-08-01,200.529999,,,2016-08-04,57.5,18404.509766,2170.840088 +2016-08-02,199.259995,,,2016-08-05,57.76,18313.769531,2157.030029 +2016-08-03,199.940002,,,2016-08-08,57.88,18355.0,2163.790039 +2016-08-04,200.029999,,,2016-08-09,58.34,18352.050781,2164.25 +2016-08-05,201.759995,,,2016-08-10,58.54,18543.529297,2182.8701170000004 +2016-08-08,201.58999599999999,,,2016-08-11,58.96,18529.289063,2180.889893 +2016-08-09,201.679993,,,2016-08-12,58.81,18533.050781,2181.73999 +2016-08-10,201.169998,,,2016-08-15,59.04,18495.660156,2175.48999 +2016-08-11,202.149994,,,2016-08-16,58.95,18613.519531,2185.790039 +2016-08-12,202.0,,,2016-08-17,58.93,18576.470703,2184.050049 +2016-08-15,202.58999599999999,,,2016-08-18,59.23,18636.050781,2190.149902 +2016-08-16,201.509995,,,2016-08-19,58.79,18552.019531,2178.149902 +2016-08-17,201.940002,,,2016-08-22,58.85,18573.939453,2182.219971 +2016-08-18,202.389999,,,2016-08-23,59.1,18597.699219,2187.02002 +2016-08-19,202.119995,,,2016-08-24,58.96,18552.570313,2183.8701170000004 +2016-08-22,202.009995,,,2016-08-25,58.72,18529.419922,2182.639893 +2016-08-23,202.41000400000001,,,2016-08-26,58.37,18547.300781,2186.899902 +2016-08-24,201.360001,,,2016-08-29,58.55,18481.480469,2175.439941 +2016-08-25,201.08999599999999,,,2016-08-30,58.47,18448.410156,2172.469971 +2016-08-26,200.779999,,,2016-08-31,58.35,18395.400391,2169.040039 +2016-08-29,201.850006,,,2016-09-01,58.75,18502.990234,2180.3798829999996 +2016-08-30,201.490005,,,2016-09-02,59.43,18454.300781,2176.1201170000004 +2016-08-31,201.050003,,,2016-09-06,59.83,18400.880859,2170.949951 +2016-09-01,201.03999299999998,,,2016-09-07,59.86,18419.300781,2170.860107 +2016-09-02,201.889999,,,2016-09-08,59.69,18491.960938,2179.97998 +2016-09-06,202.5,,,2016-09-09,58.53,18538.119141,2186.47998 +2016-09-07,202.520004,,,2016-09-12,59.01,18526.140625,2186.159912 +2016-09-08,202.080002,,,2016-09-13,57.82,18479.910156,2181.300049 +2016-09-09,197.119995,,,2016-09-14,57.74,18085.449219,2127.810059 +2016-09-12,199.169998,,,2016-09-15,58.24,18325.070313,2159.040039 +2016-09-13,196.279999,,,2016-09-16,57.49,18066.75,2127.02002 +2016-09-14,196.179993,,,2016-09-19,57.79,18034.769531,2125.77002 +2016-09-15,198.199997,,,2016-09-20,58.14,18212.480469,2147.26001 +2016-09-16,197.449997,,,2016-09-21,59.16,18123.800781,2139.159912 +2016-09-19,197.449997,,,2016-09-22,59.76,18120.169922,2139.1201170000004 +2016-09-20,197.509995,,,2016-09-23,59.26,18129.960938,2139.76001 +2016-09-21,199.66000400000001,,,2016-09-26,58.71,18293.699219,2163.1201170000004 +2016-09-22,200.970001,,,2016-09-27,58.99,18392.460938,2177.179932 +2016-09-23,199.809998,,,2016-09-28,59.41,18261.449219,2164.689941 +2016-09-26,198.110001,,,2016-09-29,58.67,18094.830078,2146.100098 +2016-09-27,199.399994,,,2016-09-30,59.13,18228.300781,2159.929932 +2016-09-28,200.490005,,,2016-10-03,58.97,18339.240234,2171.3701170000004 +2016-09-29,198.630005,,,2016-10-04,58.96,18143.449219,2151.1298829999996 +2016-09-30,200.21000700000002,,,2016-10-05,59.2,18308.150391,2168.27002 +2016-10-03,199.580002,,,2016-10-06,58.88,18253.849609,2161.199951 +2016-10-04,198.610001,,,2016-10-07,58.58,18168.449219,2150.48999 +2016-10-05,199.550003,,,2016-10-10,58.75,18281.029297,2159.72998 +2016-10-06,199.649994,,,2016-10-11,57.92,18268.5,2160.77002 +2016-10-07,199.009995,,,2016-10-12,57.79,18240.490234,2153.73999 +2016-10-10,199.919998,,,2016-10-13,57.57,18329.039063,2163.659912 +2016-10-11,197.440002,,,2016-10-14,57.67,18128.660156,2136.72998 +2016-10-12,197.679993,,,2016-10-17,57.5,18144.199219,2139.179932 +2016-10-13,197.070007,,,2016-10-18,58.07,18098.939453,2132.550049 +2016-10-14,197.110001,,,2016-10-19,58.23,18138.380859,2132.97998 +2016-10-17,196.520004,,,2016-10-20,58.32,18086.400391,2126.5 +2016-10-18,197.720001,,,2016-10-21,58.19,18161.939453,2139.600098 +2016-10-19,198.179993,,,2016-10-24,58.18,18202.619141,2144.290039 +2016-10-20,197.929993,,,2016-10-25,58.14,18162.349609,2141.340088 +2016-10-21,197.91000400000001,,,2016-10-26,57.88,18145.710938,2141.159912 +2016-10-24,198.850006,,,2016-10-27,57.81,18223.029297,2151.330078 +2016-10-25,198.100006,,,2016-10-28,57.79,18169.269531,2143.159912 +2016-10-26,197.75,,,2016-10-31,57.82,18199.330078,2139.429932 +2016-10-27,197.169998,,,2016-11-01,57.57,18169.679688,2133.040039 +2016-10-28,196.570007,,,2016-11-02,57.18,18161.189453,2126.409912 +2016-10-31,196.53999299999998,,,2016-11-03,57.12,18142.419922,2126.149902 +2016-11-01,195.21000700000002,,,2016-11-04,56.57,18037.099609,2111.719971 +2016-11-02,193.96000700000002,,,2016-11-07,57.35,17959.640625,2097.939941 +2016-11-03,193.169998,,,2016-11-08,57.51,17930.669922,2088.659912 +2016-11-04,192.860001,,,2016-11-09,57.56,17888.279297,2085.179932 +2016-11-07,197.139999,,,2016-11-10,57.4,18259.599609,2131.52002 +2016-11-08,197.979996,,,2016-11-11,57.05,18332.740234,2139.560059 +2016-11-09,200.190002,,,2016-11-14,56.74,18589.689453,2163.26001 +2016-11-10,200.600006,,,2016-11-15,56.99,18807.880859,2167.47998 +2016-11-11,200.320007,,,2016-11-16,56.39,18847.660156,2164.449951 +2016-11-14,200.320007,,,2016-11-17,56.82,18868.689453,2164.199951 +2016-11-15,201.869995,,,2016-11-18,56.2,18923.060547,2180.389893 +2016-11-16,201.600006,,,2016-11-21,56.68,18868.140625,2176.939941 +2016-11-17,202.559998,,,2016-11-22,56.82,18903.820313,2187.1201170000004 +2016-11-18,202.110001,,,2016-11-23,56.62,18867.929688,2181.899902 +2016-11-21,203.610001,,,2016-11-25,56.79,18956.689453,2198.179932 +2016-11-22,204.059998,,,2016-11-28,56.49,19023.869141,2202.939941 +2016-11-23,204.240005,,,2016-11-29,56.85,19083.179688,2204.719971 +2016-11-25,205.03999299999998,,,2016-11-30,56.79,19152.140625,2213.350098 +2016-11-28,203.990005,,,2016-12-01,56.57,19097.900391,2201.719971 +2016-11-29,204.309998,,,2016-12-02,56.71,19121.599609,2204.659912 +2016-11-30,203.809998,,,2016-12-05,57.27,19123.580078,2198.810059 +2016-12-01,203.100006,,,2016-12-06,57.66,19191.929688,2191.080078 +2016-12-02,203.179993,,,2016-12-07,58.52,19170.419922,2191.949951 +2016-12-05,204.380005,,,2016-12-08,58.47,19216.240234,2204.709961 +2016-12-06,205.080002,,,2016-12-09,58.72,19251.779297,2212.22998 +2016-12-07,207.820007,,,2016-12-12,58.46,19549.619141,2241.350098 +2016-12-08,208.28999299999998,,,2016-12-13,59.09,19614.810547,2246.189941 +2016-12-09,209.520004,,,2016-12-14,58.22,19756.849609,2259.530029 +2016-12-12,209.300003,,,2016-12-15,58.09,19796.429688,2256.959961 +2016-12-13,210.69999700000002,,,2016-12-16,58.13,19911.210938,2271.719971 +2016-12-14,209.0,,,2016-12-19,58.04,19792.529297,2253.280029 +2016-12-15,209.82000699999998,,,2016-12-20,58.24,19852.240234,2262.030029 +2016-12-16,209.46000700000002,,,2016-12-21,57.66,19843.410156,2258.070068 +2016-12-19,209.88000499999998,,,2016-12-22,57.53,19883.060547,2262.530029 +2016-12-20,210.669998,,,2016-12-23,57.68,19974.619141,2270.76001 +2016-12-21,208.899994,,,2016-12-27,57.61,19941.960938,2265.179932 +2016-12-22,208.53999299999998,,,2016-12-28,57.39,19918.880859,2260.959961 +2016-12-23,208.820007,,,2016-12-29,57.53,19933.810547,2263.790039 +2016-12-27,209.28999299999998,,,2016-12-30,57.73,19945.039063,2268.8798829999996 +2016-12-28,207.580002,,,2017-01-03,58.09,19833.679688,2249.919922 +2016-12-29,207.529999,,,2017-01-04,58.75,19819.779297,2249.26001 +2016-12-30,206.570007,,,2017-01-05,59.25,19762.599609,2238.830078 +2017-01-03,208.330002,,,2017-01-06,59.05,19881.759766,2257.830078 +2017-01-04,209.570007,,,2017-01-09,58.96,19942.160156,2270.75 +2017-01-05,209.41000400000001,,,2017-01-10,58.97,19899.289063,2269.0 +2017-01-06,210.210007,,,2017-01-11,59.28,19963.800781,2276.97998 +2017-01-09,209.46000700000002,,,2017-01-12,59.37,19887.380859,2268.899902 +2017-01-10,209.46000700000002,,,2017-01-13,59.59,19855.529297,2268.899902 +2017-01-11,210.07000699999998,,,2017-01-17,59.37,19954.279297,2275.320068 +2017-01-12,209.619995,,,2017-01-18,59.2,19891.0,2270.439941 +2017-01-13,210.00999500000003,,,2017-01-19,59.05,19885.730469,2274.639893 +2017-01-17,209.380005,,,2017-01-20,59.39,19826.769531,2267.889893 +2017-01-18,209.789993,,,2017-01-23,59.54,19804.720703,2271.889893 +2017-01-19,209.029999,,,2017-01-24,59.69,19732.400391,2263.689941 +2017-01-20,209.74000499999997,,,2017-01-25,60.31,19827.25,2271.310059 +2017-01-23,209.179993,,,2017-01-26,60.07,19799.849609,2265.199951 +2017-01-24,210.55000299999998,,,2017-01-27,59.97,19912.710938,2280.070068 +2017-01-25,212.24000499999997,,,2017-01-30,59.54,20068.509766,2298.3701170000004 +2017-01-26,212.08999599999999,,,2017-01-31,59.63,20100.910156,2296.679932 +2017-01-27,211.919998,,,2017-02-01,59.87,20093.779297,2294.689941 +2017-01-30,210.649994,,,2017-02-02,59.9,19971.130859,2280.899902 +2017-01-31,210.460007,,,2017-02-03,60.14,19864.089844,2278.8701170000004 +2017-02-01,210.57000699999998,,,2017-02-06,59.71,19890.939453,2279.550049 +2017-02-02,210.710007,,,2017-02-07,59.65,19884.910156,2280.850098 +2017-02-03,212.25,,,2017-02-08,59.75,20071.460938,2297.419922 +2017-02-06,211.80000299999998,,,2017-02-09,60.0,20052.419922,2292.560059 +2017-02-07,211.86000099999998,,,2017-02-10,60.14,20090.289063,2293.080078 +2017-02-08,212.07000699999998,,,2017-02-13,60.38,20054.339844,2294.669922 +2017-02-09,213.330002,,,2017-02-14,60.29,20172.400391,2307.8701170000004 +2017-02-10,214.11000099999998,,,2017-02-15,60.52,20269.369141,2316.100098 +2017-02-13,215.27999900000003,,,2017-02-16,60.66,20412.160156,2328.25 +2017-02-14,216.210007,,,2017-02-17,60.5,20504.410156,2337.580078 +2017-02-15,217.32000699999998,,,2017-02-21,60.7,20611.859375,2349.25 +2017-02-16,217.149994,,,2017-02-22,60.7,20619.769531,2347.219971 +2017-02-17,217.520004,,,2017-02-23,60.83,20624.050781,2351.159912 +2017-02-21,218.830002,,,2017-02-24,60.39,20743.0,2365.3798829999996 +2017-02-22,218.61000099999998,,,2017-02-27,60.43,20775.599609,2362.820068 +2017-02-23,218.729996,,,2017-02-28,60.34,20810.320313,2363.810059 +2017-02-24,219.100006,,,2017-03-01,60.97,20821.759766,2367.340088 +2017-02-27,219.36000099999998,,,2017-03-02,60.57,20837.439453,2369.75 +2017-02-28,218.80000299999998,,,2017-03-03,60.93,20812.240234,2363.639893 +2017-03-01,221.830002,,,2017-03-06,60.74,21115.550781,2395.959961 +2017-03-02,220.55000299999998,,,2017-03-07,60.53,21002.970703,2381.919922 +2017-03-03,220.66000400000001,,,2017-03-08,60.31,21005.710938,2383.1201170000004 +2017-03-06,219.940002,,,2017-03-09,60.54,20954.339844,2375.310059 +2017-03-07,219.32000699999998,,,2017-03-10,61.05,20924.759766,2368.389893 +2017-03-08,218.88000499999998,,,2017-03-13,61.37,20855.730469,2362.97998 +2017-03-09,219.05000299999998,,,2017-03-14,60.9,20858.189453,2364.8701170000004 +2017-03-10,219.770004,,,2017-03-15,61.77,20902.980469,2372.600098 +2017-03-13,219.919998,,,2017-03-16,62.07,20881.480469,2373.469971 +2017-03-14,219.17999300000002,,,2017-03-17,62.23,20837.369141,2365.449951 +2017-03-15,221.02999900000003,,,2017-03-20,62.1,20950.099609,2385.26001 +2017-03-16,220.669998,,,2017-03-21,61.82,20934.550781,2381.3798829999996 +2017-03-17,220.38000499999998,,,2017-03-22,61.83,20914.619141,2378.25 +2017-03-20,219.94999700000002,,,2017-03-23,61.97,20905.859375,2373.469971 +2017-03-21,216.270004,,,2017-03-24,62.14,20668.009766,2344.02002 +2017-03-22,216.690002,,,2017-03-27,62.3,20661.300781,2348.449951 +2017-03-23,216.460007,,,2017-03-28,62.6,20656.580078,2345.959961 +2017-03-24,216.27999900000003,,,2017-03-29,62.6,20596.720703,2343.97998 +2017-03-27,216.059998,,,2017-03-30,62.38,20550.980469,2341.590088 +2017-03-28,217.61999500000002,,,2017-03-31,62.29,20701.5,2358.570068 +2017-03-29,217.899994,,,2017-04-03,62.2,20659.320313,2361.1298829999996 +2017-03-30,218.55000299999998,,,2017-04-04,62.18,20728.490234,2368.060059 +2017-03-31,218.05000299999998,,,2017-04-05,61.85,20663.220703,2362.719971 +2017-04-03,217.69999700000002,,,2017-04-06,61.86,20650.210938,2358.840088 +2017-04-04,217.86000099999998,,,2017-04-07,61.82,20689.240234,2360.159912 +2017-04-05,217.22000099999997,,,2017-04-10,61.75,20648.150391,2352.949951 +2017-04-06,217.69999700000002,,,2017-04-11,62.04,20662.949219,2357.48999 +2017-04-07,217.520004,,,2017-04-12,61.99,20656.099609,2355.540039 +2017-04-10,217.67999300000002,,,2017-04-13,61.59,20658.019531,2357.159912 +2017-04-11,217.38999900000002,,,2017-04-17,61.97,20651.300781,2353.780029 +2017-04-12,216.580002,,,2017-04-18,61.69,20591.859375,2344.929932 +2017-04-13,215.11000099999998,,,2017-04-19,61.44,20453.25,2328.949951 +2017-04-17,216.94999700000002,,,2017-04-20,61.93,20636.919922,2349.01001 +2017-04-18,216.330002,,,2017-04-21,61.97,20523.279297,2342.189941 +2017-04-19,215.99000499999997,,,2017-04-24,63.54,20404.490234,2338.169922 +2017-04-20,217.61999500000002,,,2017-04-25,63.99,20578.710938,2355.840088 +2017-04-21,216.960007,,,2017-04-26,63.81,20547.759766,2348.689941 +2017-04-24,219.32000699999998,,,2017-04-27,63.87,20763.890625,2374.149902 +2017-04-25,220.649994,,,2017-04-28,63.8,20996.119141,2388.610107 +2017-04-26,220.55000299999998,,,2017-05-01,64.06,20975.089844,2387.449951 +2017-04-27,220.690002,,,2017-05-02,64.39,20981.330078,2388.77002 +2017-04-28,220.270004,,,2017-05-03,64.26,20940.509766,2384.199951 +2017-05-01,220.649994,,,2017-05-04,64.87,20913.460938,2388.330078 +2017-05-02,220.91000400000001,,,2017-05-05,65.59,20949.890625,2391.169922 +2017-05-03,220.669998,,,2017-05-08,65.1,20957.900391,2388.1298829999996 +2017-05-04,220.809998,,,2017-05-09,64.94,20951.470703,2389.52002 +2017-05-05,221.72000099999997,,,2017-05-10,65.04,21006.939453,2399.290039 +2017-05-08,221.74000499999997,,,2017-05-11,64.88,21012.279297,2399.3798829999996 +2017-05-09,221.52999900000003,,,2017-05-12,65.24,20975.779297,2396.919922 +2017-05-10,221.86000099999998,,,2017-05-15,65.57,20943.109375,2399.6298829999996 +2017-05-11,221.44999700000002,,,2017-05-16,65.99,20919.419922,2394.439941 +2017-05-12,221.13000499999998,,,2017-05-17,65.24,20896.609375,2390.899902 +2017-05-15,222.210007,,,2017-05-18,65.35,20981.939453,2402.320068 +2017-05-16,222.100006,,,2017-05-19,66.11,20979.75,2400.669922 +2017-05-17,218.13000499999998,,,2017-05-22,66.19,20606.929688,2357.030029 +2017-05-18,218.92999300000002,,,2017-05-23,66.2,20663.019531,2365.719971 +2017-05-19,220.419998,,,2017-05-24,66.24,20804.839844,2381.72998 +2017-05-22,221.559998,,,2017-05-25,66.24,20894.830078,2394.02002 +2017-05-23,221.97000099999997,,,2017-05-26,66.05,20937.910156,2398.419922 +2017-05-24,222.52999900000003,,,2017-05-30,65.98,21012.419922,2404.389893 +2017-05-25,223.55000299999998,,,2017-05-31,66.06,21082.949219,2415.070068 +2017-05-26,223.649994,,,2017-06-01,66.49,21080.279297,2415.820068 +2017-05-30,223.41000400000001,,,2017-06-02,67.22,21029.470703,2412.909912 +2017-05-31,223.33999599999999,,,2017-06-05,66.85,21008.650391,2411.800049 +2017-06-01,225.059998,,,2017-06-06,66.66,21144.179688,2430.060059 +2017-06-02,225.88999900000002,,,2017-06-07,66.68,21206.289063,2439.070068 +2017-06-05,225.61999500000002,,,2017-06-08,66.56,21184.039063,2436.100098 +2017-06-06,225.0,,,2017-06-09,66.31,21136.230469,2429.330078 +2017-06-07,225.38999900000002,,,2017-06-12,66.06,21173.689453,2433.139893 +2017-06-08,225.44999700000002,,,2017-06-13,66.57,21182.529297,2433.790039 +2017-06-09,225.270004,,,2017-06-14,66.52,21271.970703,2431.77002 +2017-06-12,225.059998,,,2017-06-15,65.83,21235.669922,2429.389893 +2017-06-13,226.13999900000002,,,2017-06-16,66.39,21328.470703,2440.350098 +2017-06-14,225.92999300000002,,,2017-06-19,66.66,21374.560547,2437.919922 +2017-06-15,225.460007,,,2017-06-20,65.07,21359.900391,2432.459961 +2017-06-16,225.52999900000003,,,2017-06-21,64.99,21384.279297,2433.149902 +2017-06-19,227.41000400000001,,,2017-06-22,64.98,21528.990234,2453.459961 +2017-06-20,225.88999900000002,,,2017-06-23,65.14,21467.140625,2437.030029 +2017-06-21,225.770004,,,2017-06-26,65.25,21410.029297,2435.610107 +2017-06-22,224.710007,,,2017-06-27,65.24,21397.289063,2434.5 +2017-06-23,225.059998,,,2017-06-28,65.81,21394.759766,2438.300049 +2017-06-26,225.13000499999998,,,2017-06-29,65.16,21409.550781,2439.070068 +2017-06-27,223.32000699999998,,,2017-06-30,65.2,21310.660156,2419.3798829999996 +2017-06-28,225.330002,,,2017-07-03,65.12,21454.609375,2440.689941 +2017-06-29,223.38999900000002,,,2017-07-05,65.12,21287.029297,2419.699951 +2017-06-30,223.75,,,2017-07-06,64.83,21349.630859,2423.409912 +2017-07-03,224.27999900000003,,,2017-07-07,64.84,21479.269531,2429.01001 +2017-07-05,224.649994,,,2017-07-10,65.0,21478.169922,2432.540039 +2017-07-06,222.63000499999998,,,2017-07-11,65.15,21320.039063,2409.75 +2017-07-07,224.05000299999998,,,2017-07-12,65.67,21414.339844,2425.179932 +2017-07-10,224.25999500000003,,,2017-07-13,65.86,21408.519531,2427.429932 +2017-07-11,224.08999599999999,,,2017-07-14,66.32,21409.070313,2425.530029 +2017-07-12,225.74000499999997,,,2017-07-17,66.19,21532.140625,2443.25 +2017-07-13,226.169998,,,2017-07-18,66.25,21553.089844,2447.830078 +2017-07-14,227.229996,,,2017-07-19,66.54,21637.740234,2459.27002 +2017-07-17,227.22000099999997,,,2017-07-20,66.81,21629.720703,2459.139893 +2017-07-18,227.36000099999998,,,2017-07-21,66.55,21574.730469,2460.610107 +2017-07-19,228.600006,,,2017-07-24,66.37,21640.75,2473.830078 +2017-07-20,228.580002,,,2017-07-25,66.46,21611.779297,2473.449951 +2017-07-21,228.5,,,2017-07-26,66.87,21580.070313,2472.540039 +2017-07-24,228.25999500000003,,,2017-07-27,66.72,21513.169922,2469.909912 +2017-07-25,228.919998,,,2017-07-28,66.79,21613.429688,2477.1298829999996 +2017-07-26,228.99000499999997,,,2017-07-31,66.93,21711.009766,2477.830078 +2017-07-27,228.789993,,,2017-08-01,67.3,21796.550781,2475.419922 +2017-07-28,228.49000499999997,,,2017-08-02,67.33,21830.310547,2472.100098 +2017-07-31,228.32000699999998,,,2017-08-03,67.37,21891.119141,2470.300049 +2017-08-01,228.88000499999998,,,2017-08-04,67.46,21963.919922,2476.350098 +2017-08-02,229.02999900000003,,,2017-08-07,67.49,22016.240234,2477.570068 +2017-08-03,228.580002,,,2017-08-08,67.13,22026.099609,2472.159912 +2017-08-04,229.00999500000003,,,2017-08-09,67.02,22092.810547,2476.830078 +2017-08-07,229.38999900000002,,,2017-08-10,66.07,22118.419922,2480.909912 +2017-08-08,228.86999500000002,,,2017-08-11,65.95,22085.339844,2474.919922 +2017-08-09,228.809998,,,2017-08-14,66.43,22048.699219,2474.02002 +2017-08-10,225.580002,,,2017-08-15,66.38,21844.009766,2438.209961 +2017-08-11,225.88000499999998,,,2017-08-16,66.76,21858.320313,2441.320068 +2017-08-14,228.16000400000001,,,2017-08-17,66.01,21993.710938,2465.840088 +2017-08-15,228.100006,,,2017-08-18,66.19,21998.990234,2464.610107 +2017-08-16,228.479996,,,2017-08-21,66.17,22024.869141,2468.110107 +2017-08-17,224.97000099999997,,,2017-08-22,66.49,21750.730469,2430.01001 +2017-08-18,224.559998,,,2017-08-23,66.5,21674.509766,2425.550049 +2017-08-21,224.82000699999998,,,2017-08-24,66.35,21703.75,2428.3701170000004 +2017-08-22,227.07000699999998,,,2017-08-25,66.75,21899.890625,2452.51001 +2017-08-23,226.30000299999998,,,2017-08-28,66.75,21812.089844,2444.040039 +2017-08-24,225.83999599999999,,,2017-08-29,66.48,21783.400391,2438.969971 +2017-08-25,226.24000499999997,,,2017-08-30,66.39,21813.669922,2443.050049 +2017-08-28,226.350006,,,2017-08-31,66.9,21808.400391,2444.23999 +2017-08-29,226.580002,,,2017-09-01,66.99,21865.369141,2446.300049 +2017-08-30,227.67999300000002,,,2017-09-05,66.54,21892.429688,2457.590088 +2017-08-31,228.99000499999997,,,2017-09-06,66.95,21948.099609,2471.649902 +2017-09-01,229.47000099999997,,,2017-09-07,67.5,21987.560547,2476.550049 +2017-09-05,227.74000499999997,,,2017-09-08,67.51,21753.310547,2457.850098 +2017-09-06,228.460007,,,2017-09-11,68.04,21807.640625,2465.540039 +2017-09-07,228.460007,,,2017-09-12,68.25,21784.779297,2465.100098 +2017-09-08,228.13999900000002,,,2017-09-13,67.88,21797.789063,2461.429932 +2017-09-11,230.600006,,,2017-09-14,68.0,22057.369141,2488.110107 +2017-09-12,231.38999900000002,,,2017-09-15,68.06,22118.859375,2496.47998 +2017-09-13,231.57000699999998,,,2017-09-18,68.15,22158.179688,2498.3701170000004 +2017-09-14,231.38999900000002,,,2017-09-19,68.47,22203.480469,2495.6201170000004 +2017-09-15,231.83999599999999,,,2017-09-20,68.32,22268.339844,2500.22998 +2017-09-18,232.190002,,,2017-09-21,68.18,22331.349609,2503.8701170000004 +2017-09-19,231.32000699999998,,,2017-09-22,68.39,22370.800781,2506.649902 +2017-09-20,231.460007,,,2017-09-25,68.0,22412.589844,2508.23999 +2017-09-21,230.770004,,,2017-09-26,67.85,22359.230469,2500.600098 +2017-09-22,230.919998,,,2017-09-27,67.9,22349.589844,2502.219971 +2017-09-25,230.399994,,,2017-09-28,68.08,22296.089844,2496.659912 +2017-09-26,230.440002,,,2017-09-29,68.48,22284.320313,2496.840088 +2017-09-27,231.38000499999998,,,2017-10-02,68.42,22340.710938,2507.040039 +2017-09-28,231.69999700000002,,,2017-10-03,68.65,22381.199219,2510.060059 +2017-09-29,232.57000699999998,,,2017-10-04,68.52,22405.089844,2519.360107 +2017-10-02,233.47000099999997,,,2017-10-05,68.48,22557.599609,2529.1201170000004 +2017-10-03,233.979996,,,2017-10-06,68.43,22641.669922,2534.580078 +2017-10-04,234.289993,,,2017-10-09,68.45,22661.640625,2537.73999 +2017-10-05,235.649994,,,2017-10-10,69.1,22775.390625,2552.070068 +2017-10-06,235.47000099999997,,,2017-10-11,69.09,22773.669922,2549.330078 +2017-10-09,235.039993,,,2017-10-12,69.21,22761.070313,2544.72998 +2017-10-10,235.58999599999999,,,2017-10-13,69.57,22830.679688,2550.639893 +2017-10-11,236.020004,,,2017-10-16,69.52,22872.890625,2555.23999 +2017-10-12,235.63999900000002,,,2017-10-17,69.34,22841.009766,2550.929932 +2017-10-13,235.850006,,,2017-10-18,69.54,22871.720703,2553.169922 +2017-10-16,236.270004,,,2017-10-19,69.43,22956.960938,2557.639893 +2017-10-17,236.419998,,,2017-10-20,69.34,22997.439453,2559.360107 +2017-10-18,236.61000099999998,,,2017-10-23,69.19,23157.599609,2561.26001 +2017-10-19,236.69999700000002,,,2017-10-24,69.3,23163.039063,2562.100098 +2017-10-20,237.92999300000002,,,2017-10-25,69.03,23328.630859,2575.209961 +2017-10-23,236.99000499999997,,,2017-10-26,69.02,23273.960938,2564.97998 +2017-10-24,237.38000499999998,,,2017-10-27,69.18,23441.759766,2569.1298829999996 +2017-10-25,236.270004,,,2017-10-30,69.34,23329.460938,2557.149902 +2017-10-26,236.57000699999998,,,2017-10-31,69.63,23400.859375,2560.399902 +2017-10-27,238.479996,,,2017-11-01,69.7,23434.189453,2581.070068 +2017-10-30,237.729996,,,2017-11-02,69.91,23348.740234,2572.830078 +2017-10-31,237.960007,,,2017-11-03,69.8,23377.240234,2575.26001 +2017-11-01,238.33999599999999,,,2017-11-06,69.9,23435.009766,2579.360107 +2017-11-02,238.41000400000001,,,2017-11-07,69.64,23516.259766,2579.850098 +2017-11-03,239.169998,,,2017-11-08,69.87,23539.189453,2587.840088 +2017-11-06,239.5,,,2017-11-09,69.47,23548.419922,2591.1298829999996 +2017-11-07,239.44999700000002,,,2017-11-10,69.28,23557.230469,2590.639893 +2017-11-08,239.80000299999998,,,2017-11-13,68.99,23563.359375,2594.3798829999996 +2017-11-09,238.960007,,,2017-11-14,68.94,23461.939453,2584.6201170000004 +2017-11-10,238.830002,,,2017-11-15,68.61,23422.210938,2582.300049 +2017-11-13,239.059998,,,2017-11-16,69.16,23439.699219,2584.840088 +2017-11-14,238.55000299999998,,,2017-11-17,68.91,23409.470703,2578.8701170000004 +2017-11-15,237.27999900000003,,,2017-11-20,69.06,23271.279297,2564.6201170000004 +2017-11-16,239.30000299999998,,,2017-11-21,69.58,23458.359375,2585.639893 +2017-11-17,238.67999300000002,,,2017-11-22,69.77,23358.240234,2578.850098 +2017-11-20,238.99000499999997,,,2017-11-24,70.34,23430.330078,2582.139893 +2017-11-21,240.559998,,,2017-11-27,69.92,23590.830078,2599.030029 +2017-11-22,240.399994,,,2017-11-28,70.32,23526.179688,2597.080078 +2017-11-24,240.91000400000001,,,2017-11-29,70.04,23557.990234,2602.419922 +2017-11-27,240.83999599999999,,,2017-11-30,70.11,23580.779297,2601.419922 +2017-11-28,243.22000099999997,,,2017-12-01,69.83,23836.710938,2627.040039 +2017-11-29,243.16000400000001,,,2017-12-04,69.58,23940.679688,2626.070068 +2017-11-30,245.24000499999997,,,2017-12-05,69.43,24272.349609,2647.580078 +2017-12-01,244.75,,,2017-12-06,69.29,24231.589844,2642.219971 +2017-12-04,244.5,,,2017-12-07,69.47,24290.050781,2639.439941 +2017-12-05,243.58999599999999,,,2017-12-08,69.84,24180.640625,2629.570068 +2017-12-06,243.57000699999998,,,2017-12-11,70.02,24140.910156,2629.27002 +2017-12-07,244.330002,,,2017-12-12,70.11,24211.480469,2636.97998 +2017-12-08,245.69999700000002,,,2017-12-13,70.38,24329.160156,2651.5 +2017-12-11,246.49000499999997,,,2017-12-14,69.99,24386.029297,2659.98999 +2017-12-12,246.86999500000002,,,2017-12-15,69.97,24504.800781,2664.110107 +2017-12-13,246.75999500000003,,,2017-12-18,70.8,24585.429688,2662.850098 +2017-12-14,245.80000299999998,,,2017-12-19,69.8,24508.660156,2652.01001 +2017-12-15,248.020004,,,2017-12-20,69.68,24651.740234,2675.810059 +2017-12-18,249.36000099999998,,,2017-12-21,69.93,24792.199219,2690.159912 +2017-12-19,248.55000299999998,,,2017-12-22,70.11,24754.75,2681.469971 +2017-12-20,248.38000499999998,,,2017-12-26,70.09,24726.650391,2679.25 +2017-12-21,248.86999500000002,,,2017-12-27,70.22,24782.289063,2684.570068 +2017-12-22,247.63000499999998,,,2017-12-28,70.26,24754.060547,2683.340088 +2017-12-26,247.38000499999998,,,2017-12-29,70.31,24746.210938,2680.5 +2017-12-27,247.58999599999999,,,2018-01-02,70.83,24774.300781,2682.6201170000004 +2017-12-28,248.08999599999999,,,2018-01-03,71.17,24837.509766,2687.540039 +2017-12-29,246.82000699999998,,,2018-01-04,71.95,24719.220703,2673.610107 +2018-01-02,248.88000499999998,,,2018-01-05,72.35,24824.009766,2695.810059 +2018-01-03,250.47000099999997,,,2018-01-08,72.33,24922.679688,2713.060059 +2018-01-04,251.52999900000003,,,2018-01-09,72.41,25075.130859,2723.98999 +2018-01-05,253.30000299999998,,,2018-01-10,72.27,25295.869141,2743.149902 +2018-01-08,253.72000099999997,,,2018-01-11,72.77,25283.0,2747.709961 +2018-01-09,254.11999500000002,,,2018-01-12,73.5,25385.800781,2751.290039 +2018-01-10,253.83999599999999,,,2018-01-16,73.43,25369.130859,2748.22998 +2018-01-11,255.649994,,,2018-01-17,73.81,25574.730469,2767.560059 +2018-01-12,257.369995,,,2018-01-18,73.72,25803.189453,2786.23999 +2018-01-16,256.47000099999997,,,2018-01-19,74.13,25792.859375,2776.419922 +2018-01-17,258.880005,,,2018-01-22,74.51,26115.650391,2802.560059 +2018-01-18,258.480011,,,2018-01-23,74.75,26017.810547,2798.030029 +2018-01-19,259.619995,,,2018-01-24,74.88,26071.720703,2810.300049 +2018-01-22,261.72000099999997,,,2018-01-25,74.59,26214.599609,2832.969971 +2018-01-23,262.290009,,,2018-01-26,75.25,26210.810547,2839.1298829999996 +2018-01-24,262.149994,,,2018-01-29,74.56,26252.119141,2837.540039 +2018-01-25,262.309998,,,2018-01-30,73.94,26392.789063,2839.25 +2018-01-26,265.420013,,,2018-01-31,73.84,26616.710938,2872.8701170000004 +2018-01-29,263.640015,,,2018-02-01,74.05,26439.480469,2853.530029 +2018-01-30,260.790009,,,2018-02-02,72.55,26076.890625,2822.429932 +2018-01-31,260.920013,,,2018-02-05,69.51,26149.390625,2823.810059 +2018-02-01,260.799988,,,2018-02-06,70.88,26186.710938,2821.97998 +2018-02-02,255.27999900000003,,,2018-02-07,70.13,25520.960938,2762.1298829999996 +2018-02-05,244.80000299999998,,,2018-02-08,68.3,24345.75,2648.939941 +2018-02-06,249.11999500000002,,,2018-02-09,68.59,24912.769531,2695.139893 +2018-02-07,247.86999500000002,,,2018-02-12,69.64,24893.349609,2681.659912 +2018-02-08,238.61000099999998,,,2018-02-13,69.43,23860.460938,2581.0 +2018-02-09,242.25,,,2018-02-14,70.66,24190.900391,2619.550049 +2018-02-12,245.61999500000002,,,2018-02-15,71.1,24601.269531,2656.0 +2018-02-13,246.27999900000003,,,2018-02-16,71.42,24640.449219,2662.939941 +2018-02-14,249.649994,,,2018-02-20,70.75,24893.490234,2698.6298829999996 +2018-02-15,252.72000099999997,,,2018-02-21,70.41,25200.369141,2731.199951 +2018-02-16,252.83999599999999,,,2018-02-22,70.78,25219.380859,2732.219971 +2018-02-20,251.36999500000002,,,2018-02-23,71.34,24964.75,2716.26001 +2018-02-21,250.0,,,2018-02-26,72.01,24797.779297,2701.330078 +2018-02-22,250.25999500000003,,,2018-02-27,70.94,24962.480469,2703.959961 +2018-02-23,254.289993,,,2018-02-28,70.27,25309.990234,2747.300049 +2018-02-26,257.299988,,,2018-03-01,69.09,25709.269531,2779.600098 +2018-02-27,254.07000699999998,,,2018-03-02,69.42,25410.029297,2744.280029 +2018-02-28,251.270004,,,2018-03-05,69.79,25029.199219,2713.830078 +2018-03-01,247.97000099999997,,,2018-03-06,70.2,24608.980469,2677.669922 +2018-03-02,249.24000499999997,,,,,24538.060547,2691.25 +2018-03-05,251.99000499999997,,,,,24874.759766,2720.939941 +2018-03-06,252.669998,,,,,24884.119141,2728.1201170000004 diff --git a/investments-dashboard/data/df_hist_prices.csv b/investments-dashboard/data/df_hist_prices.csv new file mode 100644 index 0000000..23e5c71 --- /dev/null +++ b/investments-dashboard/data/df_hist_prices.csv @@ -0,0 +1,6 @@ +date,price +02/28/2018,$251.27 +02/27/2018,$254.07 +02/26/2018,$257.30 +02/23/2018,$254.29 +02/22/2018,$250.26 diff --git a/investments-dashboard/data/df_minimums.csv b/investments-dashboard/data/df_minimums.csv new file mode 100644 index 0000000..3ffe5d7 --- /dev/null +++ b/investments-dashboard/data/df_minimums.csv @@ -0,0 +1,6 @@ +A,B,C +'-,Initial Minimum,Additional Investments +General Account,"""$3,000""",$1 +UGMA/UTMA,"""$3,000""",$1 +IRA,"""$3,000""",$1 +Education savings account,"""$2,000""",$1 diff --git a/investments-dashboard/data/df_price_perf.csv b/investments-dashboard/data/df_price_perf.csv new file mode 100644 index 0000000..0c01d6d --- /dev/null +++ b/investments-dashboard/data/df_price_perf.csv @@ -0,0 +1,4 @@ +label,price,percent +Price as of 02/27/2018,$254.07,None +Change,'-$3.23,'-1.26% +SEC yield,1.67%,B diff --git a/investments-dashboard/data/df_realized.csv b/investments-dashboard/data/df_realized.csv new file mode 100644 index 0000000..87dfd15 --- /dev/null +++ b/investments-dashboard/data/df_realized.csv @@ -0,0 +1,4 @@ +A,B +Realized capital gain/loss,–$0.60 +Realized capital gain/loss as a % of NAV,–0.23% +Fiscal year end,12/31/2018 diff --git a/investments-dashboard/data/df_recent_returns.csv b/investments-dashboard/data/df_recent_returns.csv new file mode 100644 index 0000000..53ab5d3 --- /dev/null +++ b/investments-dashboard/data/df_recent_returns.csv @@ -0,0 +1,4 @@ +A,B,C,D,E +'-,YTD as of 03/05/2018,YTD as of 02/28/2018,Previous Month 02/28/2018,3M Total as of 02/28/2018 +500 Index Fund Inv,2.09%,1.81%,–3.69%,2.93% +S&P 500 Index*,—,1.83%,–3.69%,2.96% diff --git a/investments-dashboard/data/df_unrealized.csv b/investments-dashboard/data/df_unrealized.csv new file mode 100644 index 0000000..678eccf --- /dev/null +++ b/investments-dashboard/data/df_unrealized.csv @@ -0,0 +1,3 @@ +A,B +Unrealized appreciation/depreciation,$107.02 +Unrealized appreciation/depreciation as a % of NAV,41.02% diff --git a/investments-dashboard/demos/callbacks/01_simple_callback.py b/investments-dashboard/demos/callbacks/01_simple_callback.py new file mode 100644 index 0000000..4ed076a --- /dev/null +++ b/investments-dashboard/demos/callbacks/01_simple_callback.py @@ -0,0 +1,93 @@ +from dash import Dash, dcc, html, Input, Output, callback + +BG = '#0f1117' +CARD = '#1a1d27' +BORDER = '#2d3148' +TEXT = '#e2e8f0' +MUTED = '#94a3b8' +ACCENT = '#7c3aed' + +app = Dash(__name__) + +app.layout = html.Div(style={ + 'backgroundColor': BG, + 'padding': '48px', + 'fontFamily': 'Inter, system-ui, sans-serif', + 'minHeight': '100vh', + 'maxWidth': '640px', + 'margin': '0 auto', +}, children=[ + html.H2('Callback Anatomy', style={'color': TEXT, 'marginBottom': '4px'}), + html.P('The output reacts automatically whenever the input changes.', + style={'color': MUTED, 'marginBottom': '40px'}), + + # Input section + html.Div(style={ + 'backgroundColor': CARD, + 'border': f'1px solid {BORDER}', + 'borderRadius': '10px', + 'padding': '20px', + 'marginBottom': '12px', + }, children=[ + html.Div('INPUT', style={ + 'color': MUTED, 'fontSize': '11px', 'fontWeight': '700', + 'letterSpacing': '0.1em', 'marginBottom': '10px', + }), + dcc.Input( + id='my-input', + value='initial value', + type='text', + debounce=False, + style={ + 'backgroundColor': BG, + 'border': f'1px solid {ACCENT}', + 'borderRadius': '6px', + 'color': TEXT, + 'padding': '10px 14px', + 'fontSize': '15px', + 'width': '100%', + 'outline': 'none', + 'boxSizing': 'border-box', + }, + ), + html.P('Try changing this value — the output below updates instantly.', + style={'color': MUTED, 'fontSize': '12px', 'marginTop': '8px', 'marginBottom': 0}), + ]), + + # Arrow indicator + html.Div('↓', style={ + 'color': ACCENT, 'fontSize': '24px', 'textAlign': 'center', + 'margin': '4px 0', 'lineHeight': 1, + }), + + # Output section + html.Div(style={ + 'backgroundColor': CARD, + 'border': f'1px solid {BORDER}', + 'borderRadius': '10px', + 'padding': '20px', + }, children=[ + html.Div('OUTPUT', style={ + 'color': MUTED, 'fontSize': '11px', 'fontWeight': '700', + 'letterSpacing': '0.1em', 'marginBottom': '10px', + }), + html.Div(id='my-output', style={ + 'color': ACCENT, + 'fontSize': '22px', + 'fontWeight': '600', + 'minHeight': '32px', + }), + ]), +]) + + +@callback( + Output('my-output', 'children'), + Input('my-input', 'value'), +) +def update_output(input_value): + return f'Output: {input_value}' + + +if __name__ == '__main__': + app.run(debug=True) diff --git a/investments-dashboard/demos/callbacks/02_gapminder_slider.py b/investments-dashboard/demos/callbacks/02_gapminder_slider.py new file mode 100644 index 0000000..89d2731 --- /dev/null +++ b/investments-dashboard/demos/callbacks/02_gapminder_slider.py @@ -0,0 +1,75 @@ +from dash import Dash, dcc, html, Input, Output, callback +import plotly.express as px +import pandas as pd + +BG = '#0f1117' +CARD = '#1a1d27' +BORDER = '#2d3148' +TEXT = '#e2e8f0' +MUTED = '#94a3b8' +TEMPLATE = 'plotly_dark' + +app = Dash(__name__) + +df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv') + +app.layout = html.Div(style={ + 'backgroundColor': BG, + 'padding': '24px', + 'fontFamily': 'Inter, system-ui, sans-serif', + 'minHeight': '100vh', +}, children=[ + html.H2('GDP vs Life Expectancy', style={'color': TEXT, 'marginBottom': '4px'}), + html.P('Drag the year slider — the chart animates smoothly between years.', + style={'color': MUTED, 'marginBottom': '16px'}), + + dcc.Graph(id='graph-with-slider'), + + html.Div(style={'padding': '8px 40px 0 40px'}, children=[ + html.Div('Year', style={ + 'color': MUTED, 'fontSize': '11px', 'fontWeight': '600', + 'letterSpacing': '0.08em', 'textTransform': 'uppercase', 'marginBottom': '8px', + }), + dcc.Slider( + df['year'].min(), + df['year'].max(), + step=None, + value=df['year'].min(), + marks={ + str(year): { + 'label': str(year), + 'style': {'color': MUTED, 'fontSize': '11px'}, + } + for year in df['year'].unique() + }, + id='year-slider', + ), + ]), +]) + + +@callback( + Output('graph-with-slider', 'figure'), + Input('year-slider', 'value')) +def update_figure(selected_year): + filtered_df = df[df.year == selected_year] + + fig = px.scatter( + filtered_df, + x='gdpPercap', y='lifeExp', + size='pop', color='continent', + hover_name='country', + log_x=True, size_max=55, + template=TEMPLATE, + ) + fig.update_layout( + transition_duration=500, + plot_bgcolor=CARD, + paper_bgcolor=CARD, + margin=dict(l=40, r=40, t=20, b=20), + ) + return fig + + +if __name__ == '__main__': + app.run(debug=True) diff --git a/investments-dashboard/demos/callbacks/03_multiple_inputs.py b/investments-dashboard/demos/callbacks/03_multiple_inputs.py new file mode 100644 index 0000000..2e3c0ad --- /dev/null +++ b/investments-dashboard/demos/callbacks/03_multiple_inputs.py @@ -0,0 +1,121 @@ +from dash import Dash, dcc, html, Input, Output, callback +import plotly.express as px +import pandas as pd + +BG = '#0f1117' +CARD = '#1a1d27' +BORDER = '#2d3148' +TEXT = '#e2e8f0' +MUTED = '#94a3b8' +TEMPLATE = 'plotly_dark' + +app = Dash(__name__) + +df = pd.read_csv('https://plotly.github.io/datasets/country_indicators.csv') + +label_style = { + 'color': MUTED, + 'fontSize': '11px', + 'fontWeight': '600', + 'letterSpacing': '0.08em', + 'textTransform': 'uppercase', + 'marginBottom': '6px', +} + +radio_label_style = {'marginRight': '12px', 'marginTop': '6px', 'color': TEXT, 'fontSize': '13px'} + +app.layout = html.Div(style={ + 'backgroundColor': BG, + 'padding': '24px', + 'fontFamily': 'Inter, system-ui, sans-serif', + 'minHeight': '100vh', +}, children=[ + html.H2('Multiple Inputs → One Output', style={'color': TEXT, 'marginBottom': '4px'}), + html.P('Any of the 5 controls below triggers the callback and updates the chart.', + style={'color': MUTED, 'marginBottom': '20px'}), + + # Controls row + html.Div(style={'display': 'flex', 'gap': '24px', 'marginBottom': '16px'}, children=[ + html.Div(style={'flex': 1}, children=[ + html.Div('X Axis Indicator', style=label_style), + dcc.Dropdown( + df['Indicator Name'].unique(), + 'Fertility rate, total (births per woman)', + id='xaxis-column', + style={'backgroundColor': CARD, 'color': TEXT}, + ), + dcc.RadioItems( + ['Linear', 'Log'], 'Linear', + id='xaxis-type', + inline=True, + labelStyle=radio_label_style, + ), + ]), + html.Div(style={'flex': 1}, children=[ + html.Div('Y Axis Indicator', style=label_style), + dcc.Dropdown( + df['Indicator Name'].unique(), + 'Life expectancy at birth, total (years)', + id='yaxis-column', + style={'backgroundColor': CARD, 'color': TEXT}, + ), + dcc.RadioItems( + ['Linear', 'Log'], 'Linear', + id='yaxis-type', + inline=True, + labelStyle=radio_label_style, + ), + ]), + ]), + + dcc.Graph(id='indicator-graphic'), + + html.Div(style={'padding': '8px 40px 0 40px'}, children=[ + html.Div('Year', style=label_style), + dcc.Slider( + df['Year'].min(), + df['Year'].max(), + step=None, + id='year--slider', + value=df['Year'].max(), + marks={ + str(year): { + 'label': str(year), + 'style': {'color': MUTED, 'fontSize': '11px'}, + } + for year in df['Year'].unique() + }, + ), + ]), +]) + + +@callback( + Output('indicator-graphic', 'figure'), + Input('xaxis-column', 'value'), + Input('yaxis-column', 'value'), + Input('xaxis-type', 'value'), + Input('yaxis-type', 'value'), + Input('year--slider', 'value')) +def update_graph(xaxis_col, yaxis_col, xaxis_type, yaxis_type, year_value): + dff = df[df['Year'] == year_value] + + fig = px.scatter( + x=dff[dff['Indicator Name'] == xaxis_col]['Value'], + y=dff[dff['Indicator Name'] == yaxis_col]['Value'], + hover_name=dff[dff['Indicator Name'] == yaxis_col]['Country Name'], + template=TEMPLATE, + ) + fig.update_layout( + plot_bgcolor=CARD, + paper_bgcolor=CARD, + margin=dict(l=40, b=40, t=20, r=20), + hovermode='closest', + ) + fig.update_xaxes(title=xaxis_col, type='linear' if xaxis_type == 'Linear' else 'log') + fig.update_yaxes(title=yaxis_col, type='linear' if yaxis_type == 'Linear' else 'log') + return fig + + +if __name__ == '__main__': + app.run(debug=True) diff --git a/investments-dashboard/demos/callbacks/04_state_button.py b/investments-dashboard/demos/callbacks/04_state_button.py new file mode 100644 index 0000000..81de034 --- /dev/null +++ b/investments-dashboard/demos/callbacks/04_state_button.py @@ -0,0 +1,118 @@ +from dash import Dash, dcc, html, Input, Output, State, callback + +BG = '#0f1117' +CARD = '#1a1d27' +BORDER = '#2d3148' +TEXT = '#e2e8f0' +MUTED = '#94a3b8' +ACCENT = '#7c3aed' + +app = Dash(__name__) + +input_style = { + 'backgroundColor': CARD, + 'border': f'1px solid {BORDER}', + 'borderRadius': '6px', + 'color': TEXT, + 'padding': '10px 14px', + 'fontSize': '15px', + 'width': '100%', + 'outline': 'none', + 'boxSizing': 'border-box', + 'marginBottom': '12px', +} + +label_style = { + 'color': MUTED, + 'fontSize': '11px', + 'fontWeight': '600', + 'letterSpacing': '0.08em', + 'textTransform': 'uppercase', + 'marginBottom': '6px', + 'display': 'block', +} + +app.layout = html.Div(style={ + 'backgroundColor': BG, + 'padding': '48px', + 'fontFamily': 'Inter, system-ui, sans-serif', + 'minHeight': '100vh', + 'maxWidth': '560px', + 'margin': '0 auto', +}, children=[ + html.H2('State vs Input', style={'color': TEXT, 'marginBottom': '4px'}), + html.P( + 'Typing in the fields does nothing. Only clicking Submit fires the callback.', + style={'color': MUTED, 'marginBottom': '32px'}, + ), + + html.Div(style={ + 'backgroundColor': CARD, + 'border': f'1px solid {BORDER}', + 'borderRadius': '10px', + 'padding': '24px', + 'marginBottom': '16px', + }, children=[ + html.Span('City', style=label_style), + dcc.Input( + id='input-1-state', + type='text', + value='Montréal', + placeholder='Enter a city', + style=input_style, + ), + + html.Span('Country', style=label_style), + dcc.Input( + id='input-2-state', + type='text', + value='Canada', + placeholder='Enter a country', + style=input_style, + ), + + html.Button( + 'Submit', + id='submit-button-state', + n_clicks=0, + style={ + 'backgroundColor': ACCENT, + 'color': '#fff', + 'border': 'none', + 'borderRadius': '6px', + 'padding': '10px 24px', + 'fontSize': '14px', + 'fontWeight': '600', + 'cursor': 'pointer', + 'width': '100%', + 'marginTop': '4px', + }, + ), + ]), + + html.Div(id='output-state', style={ + 'color': TEXT, + 'fontSize': '15px', + 'padding': '16px 20px', + 'backgroundColor': CARD, + 'border': f'1px solid {BORDER}', + 'borderRadius': '10px', + 'minHeight': '56px', + }), +]) + + +@callback( + Output('output-state', 'children'), + Input('submit-button-state', 'n_clicks'), + State('input-1-state', 'value'), + State('input-2-state', 'value'), +) +def update_output(n_clicks, city, country): + if n_clicks == 0: + return html.Span('Waiting for submission…', style={'color': MUTED}) + return f'Submitted {n_clicks} time{"s" if n_clicks != 1 else ""}. City: {city}, Country: {country}.' + + +if __name__ == '__main__': + app.run(debug=True) diff --git a/investments-dashboard/demos/interactive-graphing/01_debug_interactions.py b/investments-dashboard/demos/interactive-graphing/01_debug_interactions.py new file mode 100644 index 0000000..f7f6484 --- /dev/null +++ b/investments-dashboard/demos/interactive-graphing/01_debug_interactions.py @@ -0,0 +1,115 @@ +from dash import Dash, dcc, html, Input, Output, callback +import plotly.express as px +import pandas as pd +import json + +BG = '#0f1117' +CARD = '#1a1d27' +BORDER = '#2d3148' +TEXT = '#e2e8f0' +MUTED = '#94a3b8' +TEMPLATE = 'plotly_dark' + +app = Dash(__name__) + +df = pd.DataFrame({ + "x": [1, 2, 1, 2], + "y": [1, 2, 3, 4], + "customdata": [1, 2, 3, 4], + "fruit": ["apple", "apple", "orange", "orange"] +}) + +fig = px.scatter(df, x="x", y="y", color="fruit", custom_data=["customdata"], + template=TEMPLATE, color_discrete_map={"apple": "#7c3aed", "orange": "#f97316"}) +fig.update_layout( + plot_bgcolor=CARD, + paper_bgcolor=CARD, + clickmode='event+select', + margin=dict(l=40, r=40, t=40, b=40), +) +fig.update_traces(marker_size=20) + +pre_style = { + 'backgroundColor': CARD, + 'border': f'1px solid {BORDER}', + 'color': TEXT, + 'borderRadius': '8px', + 'padding': '12px', + 'overflowX': 'auto', + 'fontSize': '12px', + 'minHeight': '180px', +} + +label_style = { + 'color': MUTED, + 'fontSize': '11px', + 'fontWeight': '600', + 'letterSpacing': '0.08em', + 'textTransform': 'uppercase', + 'marginBottom': '8px', +} + +panel_style = { + 'flex': 1, + 'minWidth': 0, +} + +app.layout = html.Div(style={ + 'backgroundColor': BG, + 'padding': '24px', + 'fontFamily': 'Inter, system-ui, sans-serif', + 'minHeight': '100vh', +}, children=[ + html.H2('Graph Interaction Data', style={'color': TEXT, 'marginBottom': '4px'}), + html.P('Hover, click, select, or zoom the chart to see the interaction data.', + style={'color': MUTED, 'marginBottom': '24px'}), + + dcc.Graph( + id='basic-interactions', + figure=fig, + style={'marginBottom': '24px'}, + ), + + html.Div(style={'display': 'flex', 'gap': '16px'}, children=[ + html.Div(style=panel_style, children=[ + html.Div('Hover Data', style=label_style), + html.Pre(id='hover-data', style=pre_style), + ]), + html.Div(style=panel_style, children=[ + html.Div('Click Data', style=label_style), + html.Pre(id='click-data', style=pre_style), + ]), + html.Div(style=panel_style, children=[ + html.Div('Selection Data', style=label_style), + html.Pre(id='selected-data', style=pre_style), + ]), + html.Div(style=panel_style, children=[ + html.Div('Zoom / Relayout Data', style=label_style), + html.Pre(id='relayout-data', style=pre_style), + ]), + ]), +]) + + +@callback(Output('hover-data', 'children'), Input('basic-interactions', 'hoverData')) +def display_hover(hoverData): + return json.dumps(hoverData, indent=2) + + +@callback(Output('click-data', 'children'), Input('basic-interactions', 'clickData')) +def display_click(clickData): + return json.dumps(clickData, indent=2) + + +@callback(Output('selected-data', 'children'), Input('basic-interactions', 'selectedData')) +def display_selected(selectedData): + return json.dumps(selectedData, indent=2) + + +@callback(Output('relayout-data', 'children'), Input('basic-interactions', 'relayoutData')) +def display_relayout(relayoutData): + return json.dumps(relayoutData, indent=2) + + +if __name__ == '__main__': + app.run(debug=True) diff --git a/investments-dashboard/demos/interactive-graphing/02_hover_timeseries.py b/investments-dashboard/demos/interactive-graphing/02_hover_timeseries.py new file mode 100644 index 0000000..df99904 --- /dev/null +++ b/investments-dashboard/demos/interactive-graphing/02_hover_timeseries.py @@ -0,0 +1,183 @@ +from dash import Dash, html, dcc, Input, Output, callback +import pandas as pd +import plotly.express as px + +BG = '#0f1117' +CARD = '#1a1d27' +BORDER = '#2d3148' +TEXT = '#e2e8f0' +MUTED = '#94a3b8' +TEMPLATE = 'plotly_dark' + +app = Dash(__name__) + +df = pd.read_csv('https://plotly.github.io/datasets/country_indicators.csv') + +dropdown_style = { + 'backgroundColor': CARD, + 'color': TEXT, +} + +label_style = { + 'color': MUTED, + 'fontSize': '11px', + 'fontWeight': '600', + 'letterSpacing': '0.08em', + 'textTransform': 'uppercase', + 'marginBottom': '6px', +} + +radio_style = { + 'color': TEXT, + 'fontSize': '13px', +} + +app.layout = html.Div(style={ + 'backgroundColor': BG, + 'padding': '24px', + 'fontFamily': 'Inter, system-ui, sans-serif', + 'minHeight': '100vh', +}, children=[ + html.H2('World Indicators Explorer', style={'color': TEXT, 'marginBottom': '4px'}), + html.P('Hover over a country in the scatter plot to see its historical trend.', + style={'color': MUTED, 'marginBottom': '20px'}), + + # Controls row + html.Div(style={'display': 'flex', 'gap': '24px', 'marginBottom': '16px'}, children=[ + html.Div(style={'flex': 1}, children=[ + html.Div('X Axis Indicator', style=label_style), + dcc.Dropdown( + df['Indicator Name'].unique(), + 'Fertility rate, total (births per woman)', + id='crossfilter-xaxis-column', + style=dropdown_style, + ), + dcc.RadioItems( + ['Linear', 'Log'], 'Linear', + id='crossfilter-xaxis-type', + inline=True, + style=radio_style, + labelStyle={'marginRight': '12px', 'marginTop': '6px'}, + ), + ]), + html.Div(style={'flex': 1}, children=[ + html.Div('Y Axis Indicator', style=label_style), + dcc.Dropdown( + df['Indicator Name'].unique(), + 'Life expectancy at birth, total (years)', + id='crossfilter-yaxis-column', + style=dropdown_style, + ), + dcc.RadioItems( + ['Linear', 'Log'], 'Linear', + id='crossfilter-yaxis-type', + inline=True, + style=radio_style, + labelStyle={'marginRight': '12px', 'marginTop': '6px'}, + ), + ]), + ]), + + # Charts row + html.Div(style={'display': 'flex', 'gap': '16px'}, children=[ + html.Div(style={'flex': '0 0 55%'}, children=[ + dcc.Graph( + id='crossfilter-indicator-scatter', + hoverData={'points': [{'customdata': 'Japan'}]}, + ), + ]), + html.Div(style={'flex': 1}, children=[ + dcc.Graph(id='x-time-series'), + dcc.Graph(id='y-time-series'), + ]), + ]), + + # Year slider + html.Div(style={'marginTop': '8px', 'paddingRight': '24px', 'width': '55%'}, children=[ + html.Div('Year', style=label_style), + dcc.Slider( + df['Year'].min(), + df['Year'].max(), + step=None, + id='crossfilter-year--slider', + value=df['Year'].max(), + marks={str(year): {'label': str(year), 'style': {'color': MUTED, 'fontSize': '11px'}} + for year in df['Year'].unique()}, + ), + ]), +]) + + +@callback( + Output('crossfilter-indicator-scatter', 'figure'), + Input('crossfilter-xaxis-column', 'value'), + Input('crossfilter-yaxis-column', 'value'), + Input('crossfilter-xaxis-type', 'value'), + Input('crossfilter-yaxis-type', 'value'), + Input('crossfilter-year--slider', 'value')) +def update_scatter(xaxis_col, yaxis_col, xaxis_type, yaxis_type, year): + dff = df[df['Year'] == year] + fig = px.scatter( + x=dff[dff['Indicator Name'] == xaxis_col]['Value'], + y=dff[dff['Indicator Name'] == yaxis_col]['Value'], + hover_name=dff[dff['Indicator Name'] == yaxis_col]['Country Name'], + template=TEMPLATE, + ) + fig.update_traces( + customdata=dff[dff['Indicator Name'] == yaxis_col]['Country Name'], + marker=dict(size=8, opacity=0.8), + ) + fig.update_xaxes(title=xaxis_col, type='linear' if xaxis_type == 'Linear' else 'log') + fig.update_yaxes(title=yaxis_col, type='linear' if yaxis_type == 'Linear' else 'log') + fig.update_layout( + plot_bgcolor=CARD, + paper_bgcolor=CARD, + margin=dict(l=40, b=40, t=20, r=20), + hovermode='closest', + ) + return fig + + +def create_time_series(dff, axis_type, title): + fig = px.scatter(dff, x='Year', y='Value', template=TEMPLATE) + fig.update_traces(mode='lines+markers', marker=dict(size=5), line=dict(color='#7c3aed')) + fig.update_xaxes(showgrid=False) + fig.update_yaxes(type='linear' if axis_type == 'Linear' else 'log') + fig.add_annotation( + x=0, y=0.85, xanchor='left', yanchor='bottom', + xref='paper', yref='paper', showarrow=False, align='left', + text=title, font=dict(size=11, color=MUTED), + ) + fig.update_layout( + height=225, + plot_bgcolor=CARD, + paper_bgcolor=CARD, + margin=dict(l=20, b=30, r=10, t=10), + ) + return fig + + +@callback( + Output('x-time-series', 'figure'), + Input('crossfilter-indicator-scatter', 'hoverData'), + Input('crossfilter-xaxis-column', 'value'), + Input('crossfilter-xaxis-type', 'value')) +def update_x_timeseries(hoverData, xaxis_col, axis_type): + country = hoverData['points'][0]['customdata'] + dff = df[(df['Country Name'] == country) & (df['Indicator Name'] == xaxis_col)] + return create_time_series(dff, axis_type, f'{country}
{xaxis_col}') + + +@callback( + Output('y-time-series', 'figure'), + Input('crossfilter-indicator-scatter', 'hoverData'), + Input('crossfilter-yaxis-column', 'value'), + Input('crossfilter-yaxis-type', 'value')) +def update_y_timeseries(hoverData, yaxis_col, axis_type): + country = hoverData['points'][0]['customdata'] + dff = df[(df['Country Name'] == country) & (df['Indicator Name'] == yaxis_col)] + return create_time_series(dff, axis_type, yaxis_col) + + +if __name__ == '__main__': + app.run(debug=True) diff --git a/investments-dashboard/demos/interactive-graphing/03_crossfilter.py b/investments-dashboard/demos/interactive-graphing/03_crossfilter.py new file mode 100644 index 0000000..70663b9 --- /dev/null +++ b/investments-dashboard/demos/interactive-graphing/03_crossfilter.py @@ -0,0 +1,111 @@ +from dash import Dash, dcc, html, Input, Output, callback +import numpy as np +import pandas as pd +import plotly.express as px + +BG = '#0f1117' +CARD = '#1a1d27' +BORDER = '#2d3148' +TEXT = '#e2e8f0' +MUTED = '#94a3b8' +ACCENT = '#7c3aed' +TEMPLATE = 'plotly_dark' + +app = Dash(__name__) + +np.random.seed(0) +df = pd.DataFrame({"Col " + str(i + 1): np.random.rand(30) for i in range(6)}) + + +def get_figure(df, x_col, y_col, selectedpoints, selectedpoints_local): + if selectedpoints_local and selectedpoints_local.get("range"): + ranges = selectedpoints_local["range"] + selection_bounds = { + "x0": ranges["x"][0], "x1": ranges["x"][1], + "y0": ranges["y"][0], "y1": ranges["y"][1], + } + else: + selection_bounds = { + "x0": np.min(df[x_col]), "x1": np.max(df[x_col]), + "y0": np.min(df[y_col]), "y1": np.max(df[y_col]), + } + + fig = px.scatter(df, x=df[x_col], y=df[y_col], text=df.index, template=TEMPLATE) + fig.update_traces( + selectedpoints=selectedpoints, + customdata=df.index, + mode="markers+text", + marker={"color": ACCENT, "size": 16, "opacity": 0.9}, + unselected={ + "marker": {"opacity": 0.15, "color": MUTED}, + "textfont": {"color": "rgba(0,0,0,0)"}, + }, + selected={ + "marker": {"color": ACCENT, "opacity": 1.0}, + }, + textfont={"size": 9, "color": MUTED}, + ) + fig.update_layout( + plot_bgcolor=CARD, + paper_bgcolor=CARD, + margin={"l": 20, "r": 10, "b": 20, "t": 30}, + dragmode="select", + hovermode=False, + newselection_mode="gradual", + xaxis_title=x_col, + yaxis_title=y_col, + ) + fig.add_shape(dict( + type="rect", + line={"width": 1, "dash": "dot", "color": MUTED}, + **selection_bounds, + )) + return fig + + +app.layout = html.Div(style={ + 'backgroundColor': BG, + 'padding': '24px', + 'fontFamily': 'Inter, system-ui, sans-serif', + 'minHeight': '100vh', +}, children=[ + html.H2('Crossfilter', style={'color': TEXT, 'marginBottom': '4px'}), + html.P('Lasso or box-select points in any chart — the selection filters across all three.', + style={'color': MUTED, 'marginBottom': '24px'}), + + html.Div(style={'display': 'flex', 'gap': '16px'}, children=[ + dcc.Graph(id='g1', config={'displayModeBar': True, 'modeBarButtonsToKeep': ['select2d', 'lasso2d']}, + style={'flex': 1}), + dcc.Graph(id='g2', config={'displayModeBar': True, 'modeBarButtonsToKeep': ['select2d', 'lasso2d']}, + style={'flex': 1}), + dcc.Graph(id='g3', config={'displayModeBar': True, 'modeBarButtonsToKeep': ['select2d', 'lasso2d']}, + style={'flex': 1}), + ]), +]) + + +@callback( + Output('g1', 'figure'), + Output('g2', 'figure'), + Output('g3', 'figure'), + Input('g1', 'selectedData'), + Input('g2', 'selectedData'), + Input('g3', 'selectedData'), +) +def update_charts(sel1, sel2, sel3): + selectedpoints = df.index + for sel in [sel1, sel2, sel3]: + if sel and sel['points']: + selectedpoints = np.intersect1d( + selectedpoints, + [p['customdata'] for p in sel['points']] + ) + return [ + get_figure(df, 'Col 1', 'Col 2', selectedpoints, sel1), + get_figure(df, 'Col 3', 'Col 4', selectedpoints, sel2), + get_figure(df, 'Col 5', 'Col 6', selectedpoints, sel3), + ] + + +if __name__ == '__main__': + app.run(debug=True) diff --git a/investments-dashboard/demos/layout/01_hello_dash.py b/investments-dashboard/demos/layout/01_hello_dash.py new file mode 100644 index 0000000..61f68ae --- /dev/null +++ b/investments-dashboard/demos/layout/01_hello_dash.py @@ -0,0 +1,54 @@ +from dash import Dash, html, dcc +import plotly.express as px +import pandas as pd + +BG = '#0f1117' +CARD = '#1a1d27' +BORDER = '#2d3148' +TEXT = '#e2e8f0' +MUTED = '#94a3b8' +TEMPLATE = 'plotly_dark' + +app = Dash(__name__) + +df = pd.DataFrame({ + "Fruit": ["Apples", "Oranges", "Bananas", "Apples", "Oranges", "Bananas"], + "Amount": [4, 1, 2, 2, 4, 5], + "City": ["SF", "SF", "SF", "Montreal", "Montreal", "Montreal"], +}) + +fig = px.bar(df, x="Fruit", y="Amount", color="City", barmode="group", template=TEMPLATE) +fig.update_layout(plot_bgcolor=CARD, paper_bgcolor=CARD, margin=dict(l=40, r=40, t=40, b=40)) + +app.layout = html.Div(style={ + 'backgroundColor': BG, + 'padding': '32px', + 'fontFamily': 'Inter, system-ui, sans-serif', + 'minHeight': '100vh', +}, children=[ + html.H1('Hello Dash', style={'color': TEXT, 'marginBottom': '4px'}), + + html.Div('Dash: A web application framework for your data.', style={ + 'color': MUTED, + 'fontSize': '15px', + 'marginBottom': '24px', + }), + + dcc.Graph(id='example-graph', figure=fig), + + html.P( + '✏️ Try editing the H1 title above in the code, save the file, and watch the browser update automatically.', + style={ + 'color': MUTED, + 'fontSize': '12px', + 'marginTop': '16px', + 'border': f'1px solid {BORDER}', + 'borderRadius': '6px', + 'padding': '10px 14px', + 'backgroundColor': CARD, + }, + ), +]) + +if __name__ == '__main__': + app.run(debug=True) diff --git a/investments-dashboard/demos/layout/02_styled_layout.py b/investments-dashboard/demos/layout/02_styled_layout.py new file mode 100644 index 0000000..25c3a2e --- /dev/null +++ b/investments-dashboard/demos/layout/02_styled_layout.py @@ -0,0 +1,47 @@ +from dash import Dash, dcc, html +import plotly.express as px +import pandas as pd + +# style dict — the pattern from the docs, upgraded to our palette +colors = { + 'background': '#0f1117', + 'card': '#1a1d27', + 'text': '#e2e8f0', + 'muted': '#94a3b8', + 'accent': '#7c3aed', +} + +app = Dash(__name__) + +df = pd.DataFrame({ + "Fruit": ["Apples", "Oranges", "Bananas", "Apples", "Oranges", "Bananas"], + "Amount": [4, 1, 2, 2, 4, 5], + "City": ["SF", "SF", "SF", "Montreal", "Montreal", "Montreal"], +}) + +fig = px.bar(df, x="Fruit", y="Amount", color="City", barmode="group", template='plotly_dark') +fig.update_layout( + plot_bgcolor=colors['card'], + paper_bgcolor=colors['card'], + font_color=colors['text'], + margin=dict(l=40, r=40, t=40, b=40), +) + +app.layout = html.Div( + style={'backgroundColor': colors['background'], 'padding': '32px', + 'fontFamily': 'Inter, system-ui, sans-serif', 'minHeight': '100vh'}, + children=[ + html.H1( + 'Hello Dash', + style={'textAlign': 'center', 'color': colors['accent']}, + ), + html.Div( + 'Dash: A web application framework for your data.', + style={'textAlign': 'center', 'color': colors['muted'], 'marginBottom': '24px'}, + ), + dcc.Graph(id='example-graph-2', figure=fig), + ], +) + +if __name__ == '__main__': + app.run(debug=True) diff --git a/investments-dashboard/demos/layout/03_core_components.py b/investments-dashboard/demos/layout/03_core_components.py new file mode 100644 index 0000000..b385345 --- /dev/null +++ b/investments-dashboard/demos/layout/03_core_components.py @@ -0,0 +1,109 @@ +from dash import Dash, html, dcc + +BG = '#0f1117' +CARD = '#1a1d27' +BORDER = '#2d3148' +TEXT = '#e2e8f0' +MUTED = '#94a3b8' +ACCENT = '#7c3aed' + +app = Dash(__name__) + +label_style = { + 'color': MUTED, + 'fontSize': '11px', + 'fontWeight': '700', + 'letterSpacing': '0.08em', + 'textTransform': 'uppercase', + 'marginBottom': '8px', + 'marginTop': '20px', + 'display': 'block', +} + +section_style = { + 'backgroundColor': CARD, + 'border': f'1px solid {BORDER}', + 'borderRadius': '10px', + 'padding': '20px 24px', + 'flex': 1, + 'minWidth': 0, +} + +app.layout = html.Div(style={ + 'backgroundColor': BG, + 'padding': '32px', + 'fontFamily': 'Inter, system-ui, sans-serif', + 'minHeight': '100vh', +}, children=[ + html.H2('Core Components', style={'color': TEXT, 'marginBottom': '4px'}), + html.P('Every dcc component is declared entirely through keyword arguments — fully declarative.', + style={'color': MUTED, 'marginBottom': '24px'}), + + html.Div(style={'display': 'flex', 'gap': '16px'}, children=[ + + # Left column + html.Div(style=section_style, children=[ + html.Span('Dropdown', style=label_style), + dcc.Dropdown( + ['New York City', 'Montréal', 'San Francisco'], + 'Montréal', + ), + + html.Span('Multi-Select Dropdown', style=label_style), + dcc.Dropdown( + ['New York City', 'Montréal', 'San Francisco'], + ['Montréal', 'San Francisco'], + multi=True, + ), + + html.Span('Radio Items', style=label_style), + dcc.RadioItems( + ['New York City', 'Montréal', 'San Francisco'], + 'Montréal', + labelStyle={'color': TEXT, 'marginRight': '12px', 'fontSize': '14px'}, + ), + ]), + + # Right column + html.Div(style=section_style, children=[ + html.Span('Checkboxes', style=label_style), + dcc.Checklist( + ['New York City', 'Montréal', 'San Francisco'], + ['Montréal', 'San Francisco'], + labelStyle={'color': TEXT, 'marginRight': '12px', 'fontSize': '14px'}, + ), + + html.Span('Text Input', style=label_style), + dcc.Input( + value='MTL', + type='text', + style={ + 'backgroundColor': BG, + 'border': f'1px solid {BORDER}', + 'borderRadius': '6px', + 'color': TEXT, + 'padding': '8px 12px', + 'fontSize': '14px', + 'outline': 'none', + }, + ), + + html.Span('Slider', style=label_style), + dcc.Slider( + min=0, + max=9, + marks={ + i: { + 'label': f'Label {i}' if i == 1 else str(i), + 'style': {'color': MUTED, 'fontSize': '11px'}, + } + for i in range(1, 6) + }, + value=5, + ), + ]), + ]), +]) + +if __name__ == '__main__': + app.run(debug=True) diff --git a/investments-dashboard/pages/__init__.py b/investments-dashboard/pages/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/investments-dashboard/pages/__init__.py @@ -0,0 +1 @@ + diff --git a/investments-dashboard/pages/dashboard.py b/investments-dashboard/pages/dashboard.py new file mode 100644 index 0000000..3fd279a --- /dev/null +++ b/investments-dashboard/pages/dashboard.py @@ -0,0 +1,293 @@ +import dash_mantine_components as dmc +from dash import dcc, html +from dash_iconify import DashIconify + +from components.charts import create_hypothetical_growth_chart, create_sparkline +from components.tables import create_fund_facts_table +from utils.data_loader import get_fund_metrics, df_fund_facts + +metrics = get_fund_metrics() + +SYMBOLS = ["AAPL", "GOOGL", "MSFT", "AMZN", "TSLA"] +INITIAL_PRICES = {"AAPL": 189.50, "GOOGL": 176.30, "MSFT": 420.15, "AMZN": 185.60, "TSLA": 178.90} + +def create_kpi_card(id_prefix, title, value, trend=None, trend_positive=True, subtitle=None, icon=None): + """Create a KPI card with IDs for callback updates""" + trend_color = "teal" if trend_positive else "red" + + return dmc.Paper( + dmc.Stack([ + dmc.Group([ + dmc.Text(title, size="sm", c="dimmed", fw=500, id=f"{id_prefix}-title"), + DashIconify(icon=icon, width=20, color="gray") if icon else None, + ], justify="space-between"), + dmc.Group([ + dmc.Text(value, size="xl", fw=700, id=f"{id_prefix}-value"), + dmc.Text( + trend if trend else "", + size="sm", + c=trend_color, + fw=500, + id=f"{id_prefix}-trend", + style={"display": "block" if trend else "none"} + ), + ], justify="space-between", mt="xs"), + dmc.Text(subtitle, size="xs", c="dimmed", mt=4, id=f"{id_prefix}-subtitle") if subtitle else None, + ], gap="xs"), + p="md", + radius="md", + withBorder=True, + style={"minWidth": "200px"} + ) + +def create_risk_row(id_prefix, label, value, progress_value, color): + """Create a risk metric row with IDs for dynamic updates""" + return dmc.Group([ + dmc.Text(label, size="sm", w=100), + dmc.Progress(value=progress_value, color=color, size="lg", style={"flex": 1}, id=f"{id_prefix}-bar"), + dmc.Text(value, size="sm", fw=500, w=60, id=f"{id_prefix}-value"), + ], gap="sm") + +layout = dmc.Stack([ + # Page Header + dmc.Group([ + dmc.Stack([ + dmc.Title("Executive Dashboard", order=2), + dmc.Text("Fund performance overview and key metrics", c="dimmed"), + ], gap=4), + dmc.Group([ + dmc.SegmentedControl( + id="dashboard-period", + data=[ + {"value": "1Y", "label": "1Y"}, + {"value": "3Y", "label": "3Y"}, + {"value": "5Y", "label": "5Y"}, + {"value": "10Y", "label": "10Y"}, + {"value": "All", "label": "All"}, + ], + value="1Y", + size="sm", + ), + dmc.Select( + id="dashboard-fund-select", + data=[ + {"value": "500", "label": "500 Index Fund Inv"}, + {"value": "calibre", "label": "Calibre Index Fund"}, + ], + value="500", + w=200, + ), + dmc.Switch( + id="benchmark-toggle", + label="Benchmark", + checked=True, + size="sm", + ), + dmc.NumberInput( + id="investment-amount", + value=10000, + min=1000, + max=1000000, + step=1000, + prefix="$", + thousandSeparator=",", + w=130, + size="sm", + ), + ], gap="sm"), + ], justify="space-between", mb="lg"), + + # KPI Cards Row + dmc.SimpleGrid([ + create_kpi_card( + "kpi-nav", + "Net Asset Value", + f"${metrics['nav']:.2f}", + trend=f"↑ {metrics['ytd_return']:.1f}% YTD", + trend_positive=metrics['ytd_return'] > 0, + icon="tabler:currency-dollar" + ), + create_kpi_card( + "kpi-period", + "1 Year Return", + f"{metrics['1y_return']:.2f}%", + subtitle="vs S&P 500", + icon="tabler:chart-line" + ), + create_kpi_card( + "kpi-expense", + "Expense Ratio", + metrics['expense_ratio'], + trend="↓ 85% lower", + trend_positive=True, + subtitle="vs 0.99% category avg", + icon="tabler:percentage" + ), + create_kpi_card( + "kpi-category", + "Category", + metrics['category'], + subtitle=metrics['asset_class'], + icon="tabler:category" + ), + ], cols={"base": 1, "sm": 2, "lg": 4}, spacing="md"), + + # Main Charts Row + dmc.Grid([ + dmc.GridCol([ + dcc.Store(id="live-streaming", data=True), + dmc.Paper( + dmc.Stack([ + dmc.Group([ + dmc.Group([ + dmc.Text("Live Market Prices", fw=600, size="lg"), + html.Div( + style={ + "width": 8, "height": 8, "borderRadius": "50%", + "backgroundColor": "#40c057", + "animation": "pulse 1.5s ease-in-out infinite", + }, + id="live-indicator", + ), + dmc.Badge("LIVE", color="green", size="sm", variant="light"), + ], gap="xs"), + dmc.Switch( + id="live-toggle", + label="Stream", + checked=True, + size="sm", + ), + ], justify="space-between"), + dmc.Divider(), + dmc.Stack([ + dmc.Group([ + dmc.Text(sym, size="sm", fw=600, w=60), + dmc.Text( + f"${INITIAL_PRICES[sym]:.2f}", + size="sm", fw=700, ff="monospace", + id=f"live-price-{sym}", + ), + dmc.Text( + "+0.00 (0.00%)", + size="xs", c="dimmed", ff="monospace", + id=f"live-change-{sym}", + ), + ], justify="space-between") + for sym in SYMBOLS + ], gap="xs"), + dmc.Divider(), + dmc.Select( + id="sparkline-symbol", + data=[{"value": s, "label": s} for s in SYMBOLS], + value="AAPL", + size="xs", + w=120, + ), + dcc.Graph( + id="sparkline-chart", + figure=create_sparkline([INITIAL_PRICES["AAPL"]], "AAPL"), + config={"displayModeBar": False}, + style={"height": "120px"}, + ), + ], gap="sm"), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 7}), + + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dcc.Graph( + id="growth-chart", + figure=create_hypothetical_growth_chart(), + config={"displayModeBar": False}, + style={"height": "350px"} + ), + ]), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 5}), + ], gutter="md"), + + # Fund Facts and Quick Stats Row + dmc.Grid([ + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Fund Facts", fw=600, size="lg"), + create_fund_facts_table(df_fund_facts), + ], gap="sm"), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 4}), + + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Quick Comparison", fw=600, size="lg"), + dmc.SimpleGrid([ + dmc.Paper( + dmc.Stack([ + dmc.Text("1Y RETURN", size="xs", c="dimmed", fw=600), + dmc.Text(f"{metrics['1y_return']:.2f}%", size="lg", fw=600, id="quick-1y"), + dmc.Text("Fund", size="xs", c="dimmed"), + ], gap=4), + p="sm", radius="sm", withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("3Y RETURN", size="xs", c="dimmed", fw=600), + dmc.Text(f"{metrics['3y_return']:.2f}%", size="lg", fw=600, id="quick-3y"), + dmc.Text("Fund", size="xs", c="dimmed"), + ], gap=4), + p="sm", radius="sm", withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("5Y RETURN", size="xs", c="dimmed", fw=600), + dmc.Text(f"{metrics['5y_return']:.2f}%", size="lg", fw=600, id="quick-5y"), + dmc.Text("Fund", size="xs", c="dimmed"), + ], gap=4), + p="sm", radius="sm", withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("MIN INVESTMENT", size="xs", c="dimmed", fw=600), + dmc.Text(metrics['min_investment'].replace('"', ''), size="lg", fw=600, id="quick-min"), + ], gap=4), + p="sm", radius="sm", withBorder=True, + ), + ], cols=2, spacing="sm"), + ], gap="sm"), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 4}), + + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Risk Overview", fw=600, size="lg"), + dmc.Stack([ + create_risk_row("risk-volatility", "Volatility", "Medium", 45, "blue"), + create_risk_row("risk-beta", "Beta", "1.00", 100, "green"), + create_risk_row("risk-sharpe", "Sharpe Ratio", "0.85", 70, "teal"), + create_risk_row("risk-alpha", "Alpha", "-0.02", 50, "yellow"), + ], gap="md", mt="sm"), + ], gap="sm"), + p="md", + radius="md", + withBorder=True, + h="100%", + ) + ], span={"base": 12, "md": 4}), + ], gutter="md"), + +], gap="md") diff --git a/investments-dashboard/pages/fees.py b/investments-dashboard/pages/fees.py new file mode 100644 index 0000000..145ef7a --- /dev/null +++ b/investments-dashboard/pages/fees.py @@ -0,0 +1,333 @@ +import dash_mantine_components as dmc +from dash import dcc, html +from dash_iconify import DashIconify +import plotly.graph_objects as go + +from components.charts import create_fee_comparison_chart, create_dividend_timeline, CHART_COLORS, CHART_LAYOUT +from components.tables import create_data_table, create_dividend_table +from utils.data_loader import ( + df_expenses, df_minimums, get_dividend_history, + df_realized, df_unrealized +) + +dividend_data = get_dividend_history() + +def create_fee_waterfall(): + """Create fee breakdown waterfall chart""" + fig = go.Figure(go.Waterfall( + orientation="v", + measure=["absolute", "relative", "relative", "relative", "total"], + x=["Management Fee", "Admin Fee", "12b-1 Fee", "Other", "Total Expense"], + y=[0.10, 0.02, 0.00, 0.02, 0], + connector={"line": {"color": "rgb(63, 63, 63)"}}, + decreasing={"marker": {"color": CHART_COLORS['secondary']}}, + increasing={"marker": {"color": CHART_COLORS['danger']}}, + totals={"marker": {"color": CHART_COLORS['primary']}}, + text=["+0.10%", "+0.02%", "+0.00%", "+0.02%", "0.14%"], + textposition="outside", + )) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': 'Expense Ratio Breakdown', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + yaxis={'title': 'Percentage', 'ticksuffix': '%'}, + showlegend=False, + ) + + return fig + +def create_cost_impact_chart(initial=10000, years=30): + """Show cost impact over time""" + year_range = list(range(1, years + 1)) + + fund_values = [initial * (1.07 - 0.0014) ** y for y in year_range] + avg_values = [initial * (1.07 - 0.0099) ** y for y in year_range] + + fig = go.Figure() + + fig.add_trace(go.Scatter( + x=year_range, + y=avg_values, + name='Category Avg (0.99%)', + line={'color': CHART_COLORS['gray'], 'width': 2}, + )) + + fig.add_trace(go.Scatter( + x=year_range, + y=fund_values, + name='This Fund (0.14%)', + line={'color': CHART_COLORS['primary'], 'width': 2}, + fill='tonexty', + fillcolor='rgba(34, 139, 230, 0.1)', + )) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': 'Long-Term Cost Impact (7% annual return)', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + xaxis={'title': 'Years'}, + yaxis={'title': 'Portfolio Value', 'tickprefix': '$', 'tickformat': ','}, + legend={'orientation': 'h', 'y': -0.15}, + ) + + return fig + +def create_dividend_calendar(): + """Create dividend payment calendar visualization""" + months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] + dividends = [0, 0, 0.96, 0, 0, 0.96, 0, 0, 1.13, 0, 0, 1.13] + + fig = go.Figure() + + fig.add_trace(go.Bar( + x=months, + y=dividends, + marker_color=[CHART_COLORS['primary'] if d > 0 else CHART_COLORS['gray'] for d in dividends], + text=[f'${d:.2f}' if d > 0 else '' for d in dividends], + textposition='outside', + )) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': 'Dividend Payment Calendar', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + yaxis={'title': 'Dividend per Share', 'tickprefix': '$'}, + xaxis={'title': 'Month'}, + ) + + return fig + +layout = dmc.Stack([ + # Page Header + dmc.Group([ + dmc.Stack([ + dmc.Title("Fees & Distributions", order=2), + dmc.Text("Expense analysis, dividend history, and capital gains", c="dimmed"), + ], gap=4), + dmc.Group([ + ], gap="sm"), + ], justify="space-between", mb="lg"), + + # Fee Calculator Section + dmc.Paper( + dmc.Stack([ + dmc.Text("Fee Impact Calculator", fw=600, size="lg"), + dmc.Text("Adjust investment amount and time horizon to see the impact of fees", size="sm", c="dimmed"), + dmc.Grid([ + dmc.GridCol([ + dmc.Stack([ + dmc.Text("Investment Amount", size="sm", fw=500), + dmc.NumberInput( + id="investment-amount", + value=10000, + min=1000, + max=1000000, + step=1000, + prefix="$", + thousandSeparator=",", + w="100%", + ), + ], gap="xs"), + ], span={"base": 12, "sm": 6, "md": 3}), + dmc.GridCol([ + dmc.Stack([ + dmc.Text("Time Horizon (Years)", size="sm", fw=500), + dmc.Slider( + id="time-horizon", + value=10, + min=1, + max=30, + step=1, + marks=[ + {"value": 1, "label": "1"}, + {"value": 10, "label": "10"}, + {"value": 20, "label": "20"}, + {"value": 30, "label": "30"}, + ], + mt="md", + ), + dmc.Space(h=20), + ], gap="xs"), + ], span={"base": 12, "sm": 6, "md": 5}), + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Stack([ + dmc.Text("Your Savings", size="xs", c="dimmed", tt="uppercase", fw=500), + dmc.Text("$1,913", size="28px", fw=700, c="teal", id="savings-amount"), + dmc.Text("vs category average", size="xs", c="dimmed"), + ], gap=2, align="center"), + dmc.Divider(), + dmc.Group([ + dmc.Stack([ + dmc.Text("This Fund", size="xs", c="dimmed"), + dmc.Text("$19,672", size="lg", fw=600, c="teal", id="final-value-fund"), + ], gap=2, align="center"), + dmc.Divider(orientation="vertical", h=40), + dmc.Stack([ + dmc.Text("Category Avg", size="xs", c="dimmed"), + dmc.Text("$17,759", size="lg", fw=600, c="gray", id="final-value-avg"), + ], gap=2, align="center"), + ], justify="center", gap="xl"), + ], gap="sm"), + p="md", + radius="md", + bg="var(--mantine-color-gray-0)", + style={"border": "1px dashed var(--mantine-color-gray-4)"}, + ), + ], span={"base": 12, "md": 4}), + ], gutter="md", align="center"), + ], gap="md"), + p="md", + radius="md", + withBorder=True, + ), + + # Fee Highlight Cards + dmc.SimpleGrid([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Expense Ratio", size="sm", c="dimmed"), + dmc.Group([ + dmc.Text("0.14%", size="xl", fw=700, c="green"), + dmc.Badge("85% below avg", color="green", size="sm"), + ], gap="sm"), + dmc.Text("Category average: 0.99%", size="xs", c="dimmed"), + ], gap=4), + p="md", + radius="md", + withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Distribution Yield", size="sm", c="dimmed"), + dmc.Text("1.77%", size="xl", fw=700), + dmc.Text("Annual yield based on distributions", size="xs", c="dimmed"), + ], gap=4), + p="md", + radius="md", + withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("SEC Yield", size="sm", c="dimmed"), + dmc.Text("1.77%", size="xl", fw=700), + dmc.Text("30-day SEC yield", size="xs", c="dimmed"), + ], gap=4), + p="md", + radius="md", + withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Annual Fee", size="sm", c="dimmed"), + dmc.Text("$14", size="xl", fw=700, c="green"), + dmc.Text("Per $10,000 invested", size="xs", c="dimmed"), + ], gap=4), + p="md", + radius="md", + withBorder=True, + ), + ], cols={"base": 2, "md": 4}, spacing="md"), + + # Fee Charts Row + dmc.Grid([ + dmc.GridCol([ + dmc.Paper( + dcc.Graph( + id="fee-comparison-chart", + figure=create_fee_comparison_chart(), + config={"displayModeBar": False}, + style={"height": "350px"} + ), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 6}), + + dmc.GridCol([ + dmc.Paper( + dcc.Graph( + figure=create_fee_waterfall(), + config={"displayModeBar": False}, + style={"height": "350px"} + ), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 6}), + ], gutter="md"), + + # Long-term Cost Impact + dmc.Paper( + dcc.Graph( + id="cost-impact-chart", + figure=create_cost_impact_chart(), + config={"displayModeBar": False}, + style={"height": "350px"} + ), + p="md", + radius="md", + withBorder=True, + ), + + # Distributions Section + dmc.Title("Distributions", order=3, mt="lg"), + + dmc.Grid([ + dmc.GridCol([ + dmc.Paper( + dcc.Graph( + figure=create_dividend_calendar(), + config={"displayModeBar": False}, + style={"height": "300px"} + ), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 6}), + + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Recent Distributions", fw=600, size="lg"), + create_data_table(dividend_data.head(5)), + ], gap="sm"), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 6}), + ], gutter="md"), + + # Capital Gains Section + dmc.Title("Capital Gains", order=3, mt="lg"), + + dmc.Grid([ + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Realized Gains", fw=600, size="lg"), + create_data_table(df_realized), + ], gap="sm"), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 6}), + + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Unrealized Appreciation", fw=600, size="lg"), + create_data_table(df_unrealized), + ], gap="sm"), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 6}), + ], gutter="md"), + +], gap="md") diff --git a/investments-dashboard/pages/performance.py b/investments-dashboard/pages/performance.py new file mode 100644 index 0000000..28ccb3c --- /dev/null +++ b/investments-dashboard/pages/performance.py @@ -0,0 +1,364 @@ +import dash_mantine_components as dmc +from dash import dcc, html +from dash_iconify import DashIconify +import plotly.graph_objects as go + +from components.charts import create_performance_line_chart, CHART_COLORS, CHART_LAYOUT +from utils.data_loader import ( + get_time_series_data, get_returns_data, + df_current_prices, df_avg_returns, df_after_tax, df_recent_returns +) + +ts_data = get_time_series_data() +returns_data = get_returns_data() + +def create_returns_table(df): + """Create properly formatted returns table from raw CSV data""" + data = df.values.tolist() + + if len(data) < 2: + return dmc.Text("No data available", c="dimmed") + + headers = [str(h).replace("'-", "").strip() or "Fund" for h in data[0]] + rows_data = data[1:] + + header = dmc.TableThead( + dmc.TableTr([ + dmc.TableTh(col, style={'fontWeight': 600, 'fontSize': '13px'}) for col in headers + ]) + ) + + rows = [] + for row in rows_data: + cells = [] + for i, val in enumerate(row): + val_str = str(val).replace("'-", "—").strip() + style = {'fontSize': '13px'} + + if '%' in val_str and val_str not in ['—', '']: + try: + num = float(val_str.replace('%', '')) + style['color'] = '#40c057' if num > 0 else '#fa5252' if num < 0 else None + style['fontWeight'] = 500 + except: + pass + + if i == 0: + style['fontWeight'] = 500 + + cells.append(dmc.TableTd(val_str if val_str else "—", style=style)) + rows.append(dmc.TableTr(cells)) + + body = dmc.TableTbody(rows) + + return dmc.ScrollArea( + dmc.Table( + [header, body], + striped=True, + highlightOnHover=True, + withTableBorder=True, + withColumnBorders=False, + verticalSpacing="xs", + ), + type="auto" + ) + +def create_drawdown_chart(df): + """Calculate and plot drawdown""" + prices = df['Calibre Index Fund'].values + peak = prices[0] + drawdowns = [] + + for price in prices: + if price > peak: + peak = price + drawdown = (price - peak) / peak * 100 + drawdowns.append(drawdown) + + fig = go.Figure() + fig.add_trace(go.Scatter( + x=df['Date'], + y=drawdowns, + fill='tozeroy', + line={'color': CHART_COLORS['danger'], 'width': 1}, + fillcolor='rgba(250, 82, 82, 0.2)', + name='Drawdown', + )) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': 'Drawdown Analysis', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + yaxis={'showgrid': True, 'gridcolor': 'rgba(0,0,0,0.05)', 'ticksuffix': '%'}, + showlegend=False, + ) + return fig + +initial_total_return = ((ts_data['Calibre Index Fund'].iloc[-1] - ts_data['Calibre Index Fund'].iloc[0]) / ts_data['Calibre Index Fund'].iloc[0] * 100) + +layout = dmc.Stack([ + # Page Header + dmc.Stack([ + dmc.Group([ + dmc.Stack([ + dmc.Title("Price Performance", order=2), + dmc.Text("Historical prices, returns analysis, and benchmark comparison", c="dimmed"), + ], gap=4), + ], justify="space-between"), + + # Filter Row + dmc.Paper( + dmc.Group([ + dmc.Group([ + dmc.Text("Period", size="xs", fw=500, c="dimmed"), + dmc.SegmentedControl( + id="performance-period", + data=["1M", "3M", "6M", "1Y", "3Y", "5Y", "All"], + value="All", + size="xs", + ), + ], gap=6), + dmc.Divider(orientation="vertical", style={"alignSelf": "stretch"}), + dmc.Group([ + dmc.Text("Benchmarks", size="xs", fw=500, c="dimmed"), + dmc.MultiSelect( + id="benchmark-selector", + data=[ + {"value": "calibre", "label": "Calibre Index Fund"}, + {"value": "msci", "label": "MSCI EAFE Index"}, + {"value": "sp500", "label": "S&P 500"}, + ], + value=["calibre", "msci", "sp500"], + w=220, + clearable=True, + size="xs", + ), + ], gap=6), + dmc.Divider(orientation="vertical", style={"alignSelf": "stretch"}), + dmc.Group([ + dmc.Text("Display", size="xs", fw=500, c="dimmed"), + dmc.Switch( + id="normalize-toggle", + label="Normalize", + checked=True, + size="xs", + ), + dmc.Switch( + id="log-scale-toggle", + label="Log Scale", + checked=False, + size="xs", + ), + ], gap=8), + dmc.Divider(orientation="vertical", style={"alignSelf": "stretch"}), + dmc.Group([ + dmc.Text("Overlay", size="xs", fw=500, c="dimmed"), + dmc.Select( + id="ma-selector", + data=[ + {"value": "none", "label": "No MA"}, + {"value": "20", "label": "20-day"}, + {"value": "50", "label": "50-day"}, + {"value": "200", "label": "200-day"}, + ], + value="none", + w=100, + size="xs", + ), + ], gap=6), + ], gap="md", align="center"), + p="sm", + radius="md", + withBorder=True, + ), + ], gap="sm", mb="md"), + + # 1. Stats Cards Row (TOP) + dmc.SimpleGrid([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Period High", size="sm", c="dimmed"), + dmc.Text( + f"${ts_data['Calibre Index Fund'].max():.2f}", + size="xl", fw=700, c="green", + id="period-high-value" + ), + dmc.Text( + ts_data.loc[ts_data['Calibre Index Fund'].idxmax(), 'Date'].strftime('%Y-%m-%d'), + size="xs", c="dimmed", + id="period-high-date" + ), + ], gap=4), + p="md", + radius="md", + withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Period Low", size="sm", c="dimmed"), + dmc.Text( + f"${ts_data['Calibre Index Fund'].min():.2f}", + size="xl", fw=700, c="red", + id="period-low-value" + ), + dmc.Text( + ts_data.loc[ts_data['Calibre Index Fund'].idxmin(), 'Date'].strftime('%Y-%m-%d'), + size="xs", c="dimmed", + id="period-low-date" + ), + ], gap=4), + p="md", + radius="md", + withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Current Price", size="sm", c="dimmed"), + dmc.Text( + f"${ts_data['Calibre Index Fund'].iloc[-1]:.2f}", + size="xl", fw=700, + id="current-price-value" + ), + dmc.Text("Latest available", size="xs", c="dimmed"), + ], gap=4), + p="md", + radius="md", + withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Total Return", size="sm", c="dimmed"), + dmc.Text( + f"{initial_total_return:.1f}%", + size="xl", fw=700, + c="green" if initial_total_return > 0 else "red", + id="total-return-value" + ), + dmc.Text("For selected period", size="xs", c="dimmed"), + ], gap=4), + p="md", + radius="md", + withBorder=True, + ), + ], cols={"base": 2, "md": 4}, spacing="md"), + + # 2. Performance Metrics Row (SECOND) + dmc.SimpleGrid([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Volatility (Ann.)", size="sm", c="dimmed"), + dmc.Text("0.0%", size="xl", fw=700, id="perf-volatility"), + dmc.Text("Std deviation of returns", size="xs", c="dimmed"), + ], gap=4), + p="md", + radius="md", + withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Max Drawdown", size="sm", c="dimmed"), + dmc.Text("0.0%", size="xl", fw=700, c="red", id="perf-max-drawdown"), + dmc.Text("Worst peak-to-trough", size="xs", c="dimmed"), + ], gap=4), + p="md", + radius="md", + withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Sharpe Ratio", size="sm", c="dimmed"), + dmc.Text("0.00", size="xl", fw=700, id="perf-sharpe"), + dmc.Text("Risk-adjusted return", size="xs", c="dimmed"), + ], gap=4), + p="md", + radius="md", + withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Best / Worst Day", size="sm", c="dimmed"), + dmc.Group([ + dmc.Text("+0.0%", size="lg", fw=700, c="green", id="perf-best-day"), + dmc.Text("/", size="lg", c="dimmed"), + dmc.Text("-0.0%", size="lg", fw=700, c="red", id="perf-worst-day"), + ], gap=4), + dmc.Text("Single-day extremes", size="xs", c="dimmed"), + ], gap=4), + p="md", + radius="md", + withBorder=True, + ), + ], cols={"base": 2, "md": 4}, spacing="md"), + + # 3. Returns Tables and Analysis Charts Row (THIRD) + dmc.Grid([ + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Tabs([ + dmc.TabsList([ + dmc.TabsTab("Average Returns", value="avg"), + dmc.TabsTab("After Tax", value="tax"), + dmc.TabsTab("Recent Returns", value="recent"), + ]), + dmc.TabsPanel(create_returns_table(df_avg_returns), value="avg", pt="md"), + dmc.TabsPanel(create_returns_table(df_after_tax), value="tax", pt="md"), + dmc.TabsPanel(create_returns_table(df_recent_returns), value="recent", pt="md"), + ], value="avg"), + ], gap="sm"), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 6}), + + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Tabs([ + dmc.TabsList([ + dmc.TabsTab("Drawdown", value="drawdown"), + dmc.TabsTab("Rolling Returns", value="rolling"), + ]), + dmc.TabsPanel( + dcc.Graph( + id="drawdown-chart", + figure=create_drawdown_chart(ts_data), + config={"displayModeBar": False}, + style={"height": "300px"} + ), + value="drawdown", pt="md" + ), + dmc.TabsPanel( + dcc.Graph( + id="rolling-returns-chart", + figure=go.Figure(), + config={"displayModeBar": False}, + style={"height": "300px"} + ), + value="rolling", pt="md" + ), + ], value="drawdown", id="analysis-tabs"), + ], gap="sm"), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 6}), + ], gutter="md"), + + # 4. Main Performance Chart (BOTTOM) + dmc.Paper( + dmc.Stack([ + dcc.Graph( + id="performance-chart", + figure=create_performance_line_chart(ts_data), + config={"displayModeBar": False}, + style={"height": "400px"} + ), + ]), + p="md", + radius="md", + withBorder=True, + ), + +], gap="md") diff --git a/investments-dashboard/pages/portfolio.py b/investments-dashboard/pages/portfolio.py new file mode 100644 index 0000000..557f38e --- /dev/null +++ b/investments-dashboard/pages/portfolio.py @@ -0,0 +1,414 @@ +import dash_mantine_components as dmc +from dash_iconify import DashIconify +from dash import dcc, html +import plotly.graph_objects as go +import plotly.express as px + +from components.charts import create_sector_donut_chart, CHART_COLORS, CHART_LAYOUT +from components.tables import create_data_table +from utils.data_loader import get_sector_allocation, df_equity_char, df_equity_diver + +sector_data = get_sector_allocation() + +def create_style_box(): + """Create 3x3 investment style box""" + fig = go.Figure() + + labels = [ + ['Large Value', 'Large Blend', 'Large Growth'], + ['Mid Value', 'Mid Blend', 'Mid Growth'], + ['Small Value', 'Small Blend', 'Small Growth'] + ] + + for i in range(3): + for j in range(3): + color = '#228be6' if (i == 0 and j == 1) else '#f1f3f5' + opacity = 1 if (i == 0 and j == 1) else 0.5 + + fig.add_shape( + type="rect", + x0=j, x1=j+1, y0=2-i, y1=3-i, + fillcolor=color, + opacity=opacity, + line={'color': '#dee2e6', 'width': 1}, + ) + + fig.add_annotation( + x=j+0.5, y=2.5-i, + text=labels[i][j], + showarrow=False, + font={'size': 10, 'color': '#fff' if (i == 0 and j == 1) else '#495057'}, + ) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': 'Investment Style', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + xaxis={'visible': False, 'range': [-0.1, 3.1]}, + yaxis={'visible': False, 'range': [-0.1, 3.1]}, + height=300, + ) + + return fig + +def create_sector_comparison_bar(): + """Create horizontal bar chart comparing fund vs benchmark sectors""" + fig = go.Figure() + + fig.add_trace(go.Bar( + y=sector_data['Sector'], + x=sector_data['Fund'], + name='Fund', + orientation='h', + marker_color=CHART_COLORS['primary'], + )) + + fig.add_trace(go.Bar( + y=sector_data['Sector'], + x=sector_data['Benchmark'], + name='Benchmark', + orientation='h', + marker_color=CHART_COLORS['gray'], + )) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': 'Sector Allocation vs Benchmark', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + barmode='group', + bargap=0.3, + legend={'orientation': 'h', 'y': -0.15}, + xaxis={'title': 'Allocation %', 'ticksuffix': '%'}, + yaxis={'title': ''}, + height=450, + ) + + return fig + +def create_risk_return_scatter(): + """Create risk/return scatter plot""" + funds = ['500 Index Fund', 'MSCI EAFE', 'Growth Fund', 'Value Fund', 'Bond Fund'] + returns = [16.94, 14.2, 19.5, 12.3, 5.2] + risk = [15.2, 18.5, 22.1, 14.8, 6.3] + sizes = [100, 80, 60, 70, 50] + + fig = go.Figure() + + fig.add_trace(go.Scatter( + x=risk, + y=returns, + mode='markers+text', + marker={'size': sizes, 'color': px.colors.qualitative.Set2[:5], 'opacity': 0.7}, + text=funds, + textposition='top center', + hovertemplate='%{text}
Risk: %{x:.1f}%
Return: %{y:.1f}%' + )) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': 'Risk vs Return', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + xaxis={'title': 'Risk (Std Dev %)', 'showgrid': True, 'gridcolor': 'rgba(0,0,0,0.05)'}, + yaxis={'title': 'Return %', 'showgrid': True, 'gridcolor': 'rgba(0,0,0,0.05)'}, + height=350, + ) + + return fig + +def create_donut_with_click(): + """Create donut chart configured for click events""" + colors = px.colors.qualitative.Set3[:len(sector_data)] + + fig = go.Figure(go.Pie( + labels=sector_data['Sector'], + values=sector_data['Fund'], + hole=0.6, + marker={'colors': colors}, + textinfo='percent', + textposition='outside', + hovertemplate='%{label}
%{value:.1f}%' + )) + + fig.update_layout( + **CHART_LAYOUT, + title={'text': 'Sector Allocation (Click to highlight)', 'x': 0, 'font': {'size': 16, 'weight': 600}}, + showlegend=True, + legend={'orientation': 'v', 'x': 1.05, 'y': 0.5}, + annotations=[{ + 'text': 'Sectors', + 'x': 0.5, 'y': 0.5, + 'font': {'size': 14, 'weight': 600}, + 'showarrow': False + }] + ) + + return fig + +# Allocation View Content +allocation_view = html.Div([ + dmc.Grid([ + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dcc.Graph( + id="sector-donut", + figure=create_donut_with_click(), + config={"displayModeBar": False}, + style={"height": "400px"} + ), + dmc.Text("Click on a sector to see details", size="sm", c="dimmed", ta="center", id="sector-detail-text"), + ]), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 6}), + + dmc.GridCol([ + dmc.Stack([ + dmc.Paper( + dcc.Graph( + figure=create_style_box(), + config={"displayModeBar": False}, + ), + p="md", + radius="md", + withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Portfolio Style Summary", fw=600), + dmc.Group([ + dmc.Badge("Large Cap", color="blue", size="lg"), + dmc.Badge("Blend", color="gray", size="lg"), + dmc.Badge("Domestic", color="green", size="lg"), + ]), + dmc.Text( + "This fund tracks the S&P 500 Index, providing broad exposure to large-cap U.S. equities across value, blend, and growth styles.", + size="sm", c="dimmed", mt="xs" + ), + ], gap="sm"), + p="md", + radius="md", + withBorder=True, + ), + ], gap="md"), + ], span={"base": 12, "md": 6}), + ], gutter="md"), + + dmc.Paper( + dcc.Graph( + id="sector-bar-chart", + figure=create_sector_comparison_bar(), + config={"displayModeBar": False}, + ), + p="md", + radius="md", + withBorder=True, + mt="md", + ), +], id="allocation-view") + +# Characteristics View Content +characteristics_view = html.Div([ + dmc.Grid([ + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Equity Characteristics", fw=600, size="lg"), + create_data_table(df_equity_char), + ], gap="sm"), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 6}), + + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Sector Diversification", fw=600, size="lg"), + create_data_table(df_equity_diver), + ], gap="sm"), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 6}), + ], gutter="md"), + + dmc.Paper( + dmc.Stack([ + dmc.Text("Key Metrics Comparison", fw=600, size="lg"), + dmc.SimpleGrid([ + dmc.Paper( + dmc.Stack([ + dmc.Text("P/E Ratio", size="sm", c="dimmed"), + dmc.Text("21.4", size="xl", fw=700), + dmc.Text("vs 22.1 benchmark", size="xs", c="dimmed"), + ], gap=4), + p="md", radius="sm", withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("P/B Ratio", size="sm", c="dimmed"), + dmc.Text("3.2", size="xl", fw=700), + dmc.Text("vs 3.4 benchmark", size="xs", c="dimmed"), + ], gap=4), + p="md", radius="sm", withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Dividend Yield", size="sm", c="dimmed"), + dmc.Text("1.8%", size="xl", fw=700), + dmc.Text("vs 1.7% benchmark", size="xs", c="dimmed"), + ], gap=4), + p="md", radius="sm", withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Earnings Growth", size="sm", c="dimmed"), + dmc.Text("12.5%", size="xl", fw=700), + dmc.Text("5-year average", size="xs", c="dimmed"), + ], gap=4), + p="md", radius="sm", withBorder=True, + ), + ], cols={"base": 2, "md": 4}, spacing="md"), + ], gap="sm"), + p="md", + radius="md", + withBorder=True, + mt="md", + ), +], id="characteristics-view", style={"display": "none"}) + +# Risk Analysis View Content +risk_view = html.Div([ + dmc.Grid([ + dmc.GridCol([ + dmc.Paper( + dcc.Graph( + figure=create_risk_return_scatter(), + config={"displayModeBar": False}, + style={"height": "400px"} + ), + p="md", + radius="md", + withBorder=True, + ) + ], span={"base": 12, "md": 6}), + + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Risk Metrics", fw=600, size="lg"), + dmc.Stack([ + dmc.Group([ + dmc.Text("Standard Deviation", size="sm", w=150), + dmc.Progress(value=65, color="blue", size="lg", style={"flex": 1}), + dmc.Text("15.2%", size="sm", fw=500, w=60), + ], gap="sm"), + dmc.Group([ + dmc.Text("Beta", size="sm", w=150), + dmc.Progress(value=100, color="green", size="lg", style={"flex": 1}), + dmc.Text("1.00", size="sm", fw=500, w=60), + ], gap="sm"), + dmc.Group([ + dmc.Text("Sharpe Ratio", size="sm", w=150), + dmc.Progress(value=70, color="teal", size="lg", style={"flex": 1}), + dmc.Text("0.85", size="sm", fw=500, w=60), + ], gap="sm"), + dmc.Group([ + dmc.Text("Sortino Ratio", size="sm", w=150), + dmc.Progress(value=75, color="cyan", size="lg", style={"flex": 1}), + dmc.Text("1.12", size="sm", fw=500, w=60), + ], gap="sm"), + dmc.Group([ + dmc.Text("Max Drawdown", size="sm", w=150), + dmc.Progress(value=35, color="red", size="lg", style={"flex": 1}), + dmc.Text("-33.8%", size="sm", fw=500, w=60), + ], gap="sm"), + dmc.Group([ + dmc.Text("Tracking Error", size="sm", w=150), + dmc.Progress(value=10, color="gray", size="lg", style={"flex": 1}), + dmc.Text("0.04%", size="sm", fw=500, w=60), + ], gap="sm"), + ], gap="md", mt="md"), + ], gap="sm"), + p="md", + radius="md", + withBorder=True, + h="100%", + ) + ], span={"base": 12, "md": 6}), + ], gutter="md"), + + dmc.Paper( + dmc.Stack([ + dmc.Text("Risk Analysis Summary", fw=600, size="lg"), + dmc.Alert( + "This fund closely tracks its benchmark (S&P 500) with minimal tracking error. The risk profile is consistent with broad market exposure.", + title="Low Tracking Error", + color="blue", + ), + dmc.SimpleGrid([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Upside Capture", size="sm", c="dimmed"), + dmc.Text("99.8%", size="xl", fw=700, c="green"), + ], gap=4), + p="md", radius="sm", withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Downside Capture", size="sm", c="dimmed"), + dmc.Text("100.2%", size="xl", fw=700, c="red"), + ], gap=4), + p="md", radius="sm", withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Information Ratio", size="sm", c="dimmed"), + dmc.Text("-0.12", size="xl", fw=700), + ], gap=4), + p="md", radius="sm", withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("R-Squared", size="sm", c="dimmed"), + dmc.Text("99.9%", size="xl", fw=700, c="green"), + ], gap=4), + p="md", radius="sm", withBorder=True, + ), + ], cols={"base": 2, "md": 4}, spacing="md"), + ], gap="md"), + p="md", + radius="md", + withBorder=True, + mt="md", + ), +], id="risk-view", style={"display": "none"}) + +layout = dmc.Stack([ + # Page Header + dmc.Group([ + dmc.Stack([ + dmc.Title("Portfolio Analysis", order=2), + dmc.Text("Asset allocation, sector breakdown, and portfolio characteristics", c="dimmed"), + ], gap=4), + dmc.Group([ + dmc.SegmentedControl( + id="portfolio-view", + data=[ + {"value": "allocation", "label": "Allocation"}, + {"value": "characteristics", "label": "Characteristics"}, + {"value": "risk", "label": "Risk Analysis"}, + ], + value="allocation", + ), + ], gap="sm"), + ], justify="space-between", mb="lg"), + + # View Containers + allocation_view, + characteristics_view, + risk_view, + +], gap="md") diff --git a/investments-dashboard/requirements.txt b/investments-dashboard/requirements.txt new file mode 100644 index 0000000..634cddf --- /dev/null +++ b/investments-dashboard/requirements.txt @@ -0,0 +1,10 @@ +dash[fastapi]==4.2.0 +dash-mantine-components>=0.14.0 +dash-iconify>=0.1.2 +pandas>=2.0.0 +plotly>=5.18.0 +uvicorn[standard] +reportlab>=4.0.0 +kaleido==0.2.1 +PyPDF2>=3.0.0 +Pillow>=10.0.0 diff --git a/investments-dashboard/scripts/dash-callbacks-intro.md b/investments-dashboard/scripts/dash-callbacks-intro.md new file mode 100644 index 0000000..a6e7bca --- /dev/null +++ b/investments-dashboard/scripts/dash-callbacks-intro.md @@ -0,0 +1,102 @@ +# Video Script: Basic Dash Callbacks — Dash Fundamentals Chapter 2 +**Target length:** Under 5 minutes +**Format:** Screen recording with voiceover, code running live +**Narration word count:** ~510 words (~4 min at 130 wpm + visual pauses) + +--- + +## Beat 1 — Hook `[0:00–0:20]` + +**[VISUAL]** Open on the gapminder scatter plot with the year slider. Drag the slider — the chart animates smoothly through decades of data. + +**[NARRATION]** +> "In the last chapter, we built a Dash layout. It looked great — but it didn't do anything. This is what happens when you add callbacks. One slider, one chart, fully connected. Let me show you how it works." + +--- + +## Beat 2 — The Why: Reactive Programming `[0:20–0:55]` + +**[VISUAL]** Stay on the gapminder app, or cut to a simple spreadsheet visual. + +**[NARRATION]** +> "The mental model here is a spreadsheet. When you change a cell, every cell that depends on it updates automatically. You don't call a function — the dependency is declared, and the system handles the rest. +> +> Dash works exactly the same way. You declare: when this input changes, call this function and put the result in that output. Dash handles the wiring. This is reactive programming — and it's the entire foundation of how Dash apps become interactive." + +--- + +## Beat 3 — Anatomy of a Callback `[0:55–2:10]` + +**[VISUAL]** Open the simple text input example in the editor. Highlight each section as you talk through it. + +**[NARRATION]** +> "Let's start with the simplest possible example. A text box and a div — typing in the box updates the div. +> +> The layout is what you already know: a `dcc.Input` with an `id`, and an empty `html.Div` with an `id`. No value set on the div — we'll let the callback populate it. +> +> Now the callback. The `@callback` decorator is where the wiring happens. `Output` is what you want to update — the `children` property of `my-output`. `Input` is what triggers it — the `value` property of `my-input`. +> +> The function underneath receives the current value of the input and returns whatever should go in the output. That's it. +> +> A few things worth noting: the `id` in the decorator must match exactly the `id` in your layout. And the decorator has to sit directly above the function — no blank lines between them." + +**[VISUAL]** Run the app, type in the text box, show the div updating live. + +--- + +## Beat 4 — Real Demo: Slider → Graph `[2:10–3:05]` + +**[VISUAL]** Open the gapminder `app.py`. Highlight the `@callback` and then the function body. + +**[NARRATION]** +> "Now let's look at a real example. The `dcc.Slider` has an `id` of `year-slider`, and its `value` property is the input. The `dcc.Graph` is the output — specifically its `figure` property. +> +> Whenever the slider moves, Dash calls `update_figure` with the selected year. The function filters the dataframe down to that year, builds a new Plotly scatter plot, and returns it. Dash puts it in the graph. +> +> Notice `fig.update_layout(transition_duration=500)` — that's what gives the smooth animation between years. One line." + +--- + +## Beat 5 — Multiple Inputs `[3:05–3:30]` + +**[VISUAL]** Show the multi-input example's `@callback` decorator — 5 inputs listed. + +**[NARRATION]** +> "You're not limited to one input. This example drives a chart from two dropdowns, two radio buttons, and a slider — five inputs, one output. +> +> The pattern is the same: just list more `Input` items in the decorator. The callback receives them as positional arguments, in the same order. Any one of them changing triggers the function." + +--- + +## Beat 6 — State `[3:30–4:15]` + +**[VISUAL]** Open the State / button example. Show both the `Input` and `State` lines in the decorator. + +**[NARRATION]** +> "Now let's talk about `State`. Sometimes you want to read a value without that value triggering the callback. Classic example: a form with a Submit button. +> +> Here, the two text inputs are `State` — Dash reads their values, but typing in them does nothing. The `html.Button` is the `Input` — clicking it fires the callback. Dash passes all the `State` values into the function automatically. +> +> The rule is simple: `Input` triggers, `State` reads. Everything else about the function is the same." + +--- + +## Beat 7 — Summary + CTA `[4:15–4:30]` + +**[VISUAL]** Quick cut back to the gapminder app with the slider moving. + +**[NARRATION]** +> "Callbacks are the engine of every Dash app. Declare your inputs and outputs, write a Python function, and Dash handles the rest. One input or five, one output or many — the pattern doesn't change. +> +> Chapter 3 goes deeper: clicking on charts to drive other charts. Interactive graphing. Link's in the description." + +--- + +## Production Notes +- Beat 1: actually drag the slider on camera — the animation is the hook +- Beat 3: slow down here — this is the first time the viewer sees a decorator. Hover over `Output` then `Input` as you name them +- Beat 3 live demo: type something in the text box slowly, pause so the viewer sees the div react +- Beat 4: pause after showing `transition_duration=500` — it's a satisfying "one line does this" moment +- Beat 5: you don't need to run this app — just show the decorator in the editor. The point is the pattern, not the demo +- Beat 6: live demo here is useful — type in the text boxes, show nothing happens, then click Submit, show it fires +- Outro card: link to [Dash Fundamentals Part 3: Interactive Graphing](https://dash.plotly.com/docs/interactive-graphing) diff --git a/investments-dashboard/scripts/dash-interactive-graphing-intro.md b/investments-dashboard/scripts/dash-interactive-graphing-intro.md new file mode 100644 index 0000000..6cb3006 --- /dev/null +++ b/investments-dashboard/scripts/dash-interactive-graphing-intro.md @@ -0,0 +1,90 @@ +# Video Script: Interactive Visualizations — Dash Fundamentals Chapter 3 +**Target length:** Under 5 minutes +**Format:** Screen recording with voiceover, code running live +**Narration word count:** ~490 words (~3:45–4:00 at 130 wpm + visual pauses) + +--- + +## Beat 1 — Hook `[0:00–0:20]` + +**[VISUAL]** World indicators app running — scatter plot on the left, two time series on the right. Slowly move the mouse over different country dots. The time series update in real time with each hover. + +**[NARRATION]** +> "In the last chapter, callbacks reacted to controls — dropdowns, sliders, buttons. This chapter goes further. Here, the chart itself is the input. Hover over a country, and the graphs on the right update instantly. Let me show you how this works." + +--- + +## Beat 2 — The Why: Charts as Inputs `[0:20–0:50]` + +**[VISUAL]** Stay on the world indicators app, or briefly show a traditional BI tool for contrast. + +**[NARRATION]** +> "Most charting tools are one-way: data goes in, chart comes out. Dash flips this. Every interaction a user has with a chart — hovering over a point, clicking it, drawing a selection box, zooming — all of that is data you can feed into a callback. +> +> This is how you build crossfiltered dashboards and linked charts. Not with a specialized tool — just callbacks." + +--- + +## Beat 3 — The 4 Interactive Properties `[0:50–1:40]` + +**[VISUAL]** Show the debug app running. Hover over points, click points, use the lasso tool, zoom — watch the JSON panels update on screen. + +**[NARRATION]** +> "The `dcc.Graph` component has four properties that update through user interaction: `hoverData`, `clickData`, `selectedData`, and `relayoutData`. +> +> This debug app prints them live so you can see exactly what you're working with. Hover over a point — `hoverData` gets the coordinates, the point index, and any custom data you attached. Click — same thing in `clickData`. Draw a selection — `selectedData` gives you every point inside the box. Zoom or pan — `relayoutData` captures the new axis ranges. +> +> Any of these can be an `Input` in a callback." + +--- + +## Beat 4 — Hover → Time Series `[1:40–3:05]` + +**[VISUAL]** Open the world indicators `app.py`. Highlight the scatter callback first, then the `update_x_timeseries` callback. + +**[NARRATION]** +> "Let's look at the hover example. The scatter plot on the left has `id='crossfilter-indicator-scatter'`. The two time series have their own IDs. +> +> The key line is here — `hoverData` of the scatter is an `Input`. Whenever the mouse moves to a new point, this callback fires. +> +> Now, how does the callback know which country was hovered? That's what `customdata` is for. When building the scatter, we attach the country name to each point with `fig.update_traces(customdata=...)`. Then inside the callback, we pull it out with `hoverData['points'][0]['customdata']`. +> +> From there it's just pandas filtering and returning a new figure — the same pattern as Chapter 2, just with hover as the trigger instead of a slider." + +**[VISUAL]** Show the `create_time_series` helper function briefly. + +> "The `create_time_series` function is a reusable helper — the kind of thing you build once and call from multiple callbacks. Clean Python." + +--- + +## Beat 5 — Crossfilter Pattern `[3:05–3:45]` + +**[VISUAL]** Switch to the 3-chart crossfilter app running. Use the lasso tool to select a cluster of points in one chart. Show the other two charts dim the unselected points and update the dashed selection rectangle. + +**[NARRATION]** +> "Here's the crossfilter pattern. Three scatter plots, each with `selectedData` as an input to a shared callback. Select a region in any chart, and all three update — the selected points stay highlighted, everything else fades. +> +> The callback takes the intersection of all three selections and rerenders all three figures. The charts are both inputs and outputs at the same time. +> +> You don't need a BI tool for this. It's a Python function." + +--- + +## Beat 6 — Summary + CTA `[3:45–4:00]` + +**[VISUAL]** Quick cut back to the hover → time series demo. + +**[NARRATION]** +> "Dash charts expose hover, click, selection, and zoom as callback inputs. Same decorator, same Python function — you just use the chart as the trigger instead of a control. +> +> Chapter 4 covers something that comes up quickly in real apps: sharing data between callbacks without running the same query twice. Link's in the description." + +--- + +## Production Notes +- Beat 1: move the mouse slowly and deliberately over 3–4 countries — let the time series settle between moves so the update is clear +- Beat 3: use the debug app for this beat — it's the best way to show what `hoverData` actually contains; pause on the hover JSON so viewers can read it +- Beat 4: hover over the `customdata` line in the code and also the `hoverData['points'][0]['customdata']` extraction — this is the non-obvious part +- Beat 5: start the crossfilter demo with no selection (all bright), then lasso select — the visual contrast of highlighted vs dimmed is the whole story +- Beat 5: don't walk through the crossfilter code — the running demo is enough; the docs page has the full code for reference +- Outro card: link to [Dash Fundamentals Part 4: Sharing Data Between Callbacks](https://dash.plotly.com/docs/sharing-data-between-callbacks) diff --git a/investments-dashboard/scripts/dash-layout-intro.md b/investments-dashboard/scripts/dash-layout-intro.md new file mode 100644 index 0000000..2ab130e --- /dev/null +++ b/investments-dashboard/scripts/dash-layout-intro.md @@ -0,0 +1,108 @@ +# Video Script: Dash Layout — Dash Fundamentals Chapter 1 +**Target length:** Under 5 minutes +**Format:** Screen recording with voiceover, code running live +**Narration word count:** ~515 words (~4 min at 130 wpm + visual pauses) + +--- + +## Beat 1 — Hook `[0:00–0:20]` + +**[VISUAL]** Open on the finished bar chart app already running at `localhost:8050` — fruits grouped by city, interactive, polished. + +**[NARRATION]** +> "This is a Dash app. Interactive, browser-based, deployable anywhere — and we just built it in about 20 lines of Python. No JavaScript. No HTML files. No CSS from scratch. Let me show you how." + +--- + +## Beat 2 — The Why `[0:20–0:55]` + +**[VISUAL]** Briefly show a terminal with pandas output, or a static matplotlib plot — the kind of thing you'd share as a screenshot. + +**[NARRATION]** +> "If you work with data in Python, you've probably hit this wall. You've got a great analysis — a dataframe, a Plotly chart — but getting it in front of someone else means emailing a screenshot or sending a CSV and hoping they run the same environment. +> +> Building a proper web app means learning a frontend framework, and suddenly you're context-switching between Python and JavaScript. +> +> Dash is the bridge. You stay in Python, and Dash handles the web layer." + +--- + +## Beat 3 — Your First App `[0:55–2:00]` + +**[VISUAL]** Open `app.py` in the editor — the bar chart example. Highlight each section as you mention it. + +**[NARRATION]** +> "Let's look at what we're actually writing. Three things happen here. +> +> First, we create data — just a standard pandas DataFrame. +> +> Then we create a Plotly figure with `px.bar`. Standard Plotly Express. +> +> And then comes the Dash part: `app.layout`. This is where you describe what your app looks like — a tree of Python component objects. +> +> `html.Div` is a wrapper. `html.H1` is a heading. `dcc.Graph` takes our Plotly figure and renders it as an interactive chart in the browser. +> +> Run it with `python app.py`, open localhost:8050, and there it is." + +**[VISUAL]** Terminal running, browser opens to the app. + +> "Notice `debug=True` — that turns on hot reload. Change the title, save the file — your browser updates instantly. No restart needed." + +--- + +## Beat 4 — Styling with HTML Components `[2:00–2:50]` + +**[VISUAL]** Switch to the dark-mode styled app. Show the `style={}` dict in the editor. + +**[NARRATION]** +> "Now let's customize it. Every `dash.html` component maps to an HTML tag, and you control it entirely through Python keyword arguments. +> +> The `style` property works like inline HTML styles — except it's a Python dictionary. Keys are camelCase: `textAlign` instead of `text-align`, `backgroundColor` instead of `background-color`. And `class` becomes `className`. +> +> That's it. Every HTML attribute you know works the same way, just in Python syntax." + +--- + +## Beat 5 — Core Components `[2:50–3:40]` + +**[VISUAL]** Show the components showcase app — dropdowns, sliders, radio items, checkboxes all visible. + +**[NARRATION]** +> "Beyond HTML wrappers, Dash gives you `dash.dcc` — the Dash Core Components. Dropdowns, sliders, radio buttons, text inputs, graphs — all ready to go. +> +> These aren't plain HTML. They're React components under the hood, which is why they're interactive out of the box. +> +> Everything is declarative. Every option is a keyword argument. And if you ever want to know what's available, just run `help(dcc.Dropdown)` in your Python console — it lists every parameter with a description." + +--- + +## Beat 6 — Reusable Components `[3:40–4:10]` + +**[VISUAL]** Show the `generate_table()` function from the table example. + +**[NARRATION]** +> "Here's something that doesn't get talked about enough. Because your layout is Python, you can write functions that generate UI. +> +> This function takes a pandas DataFrame and returns a fully-formed HTML table component — no template language, no Jinja, no string interpolation. Just Python. +> +> That's the real unlock here: you can compose, loop, and abstract your UI the same way you write any other Python code." + +--- + +## Beat 7 — Summary + CTA `[4:10–4:30]` + +**[VISUAL]** Quick cut back to the running bar chart app. + +**[NARRATION]** +> "So: a Dash layout is a tree of Python components. `dash.html` gives you HTML tags. `dash.dcc` gives you interactive components. And because it's all Python, you can compose it like any other code. +> +> This is chapter one. The app looks good — but it doesn't do anything yet. In part two, we wire up callbacks to make it actually interactive. Link's in the description." + +--- + +## Production Notes +- Keep a brisk pace through code — don't read every line, just call out what matters +- For Beat 3, hover or highlight `app.layout`, `html.Div`, `dcc.Graph` as each is mentioned +- Hot reload demo in Beat 3: actually make a live edit on screen — change `'Hello Dash'` to something, save, show the browser update +- Beat 5: interact with the dropdowns and slider briefly to show they work before the narration +- Outro card: link to [Dash Fundamentals Part 2: Basic Callbacks](https://dash.plotly.com/docs/basic-callbacks) diff --git a/investments-dashboard/utils/__init__.py b/investments-dashboard/utils/__init__.py new file mode 100644 index 0000000..dab3080 --- /dev/null +++ b/investments-dashboard/utils/__init__.py @@ -0,0 +1 @@ +from .data_loader import * diff --git a/investments-dashboard/utils/data_loader.py b/investments-dashboard/utils/data_loader.py new file mode 100644 index 0000000..b09a915 --- /dev/null +++ b/investments-dashboard/utils/data_loader.py @@ -0,0 +1,135 @@ +import pandas as pd +import pathlib + +PATH = pathlib.Path(__file__).parent.parent +DATA_PATH = PATH.joinpath("data").resolve() + +def load_csv(filename): + return pd.read_csv(DATA_PATH.joinpath(filename)) + +# Fund data +df_fund_facts = load_csv("df_fund_facts.csv") +df_price_perf = load_csv("df_price_perf.csv") + +# Price data +df_current_prices = load_csv("df_current_prices.csv") +df_hist_prices = load_csv("df_hist_prices.csv") +df_graph = load_csv("df_graph.csv") + +# Returns data +df_avg_returns = load_csv("df_avg_returns.csv") +df_after_tax = load_csv("df_after_tax.csv") +df_recent_returns = load_csv("df_recent_returns.csv") + +# Portfolio data +df_equity_char = load_csv("df_equity_char.csv") +df_equity_diver = load_csv("df_equity_diver.csv") + +# Fees data +df_expenses = load_csv("df_expenses.csv") +df_minimums = load_csv("df_minimums.csv") + +# Distribution data +df_dividend = load_csv("df_dividend.csv") +df_realized = load_csv("df_realized.csv") +df_unrealized = load_csv("df_unrealized.csv") + +def get_time_series_data(): + """Process df_graph for time series charts""" + df = df_graph.copy() + df['Date'] = pd.to_datetime(df['Date']) + return df + +def get_sector_allocation(): + """Process sector diversification data for charts""" + df = df_equity_diver.copy() + df.columns = ['Sector', 'Fund', 'Benchmark'] + df = df.iloc[1:] # Skip header row + df['Fund'] = df['Fund'].str.replace('%', '').astype(float) + df['Benchmark'] = df['Benchmark'].apply(lambda x: 0 if x == '—' else float(str(x).replace('%', ''))) + return df + +def get_returns_data(): + """Process average returns for comparison charts""" + df = df_avg_returns.copy() + df.columns = ['Entity', '1Y', '3Y', '5Y', '10Y', 'Since_Inception'] + df = df.iloc[1:] # Skip header + for col in ['1Y', '3Y', '5Y', '10Y']: + df[col] = df[col].str.replace('%', '').astype(float) + return df + +def get_dividend_history(): + """Process dividend data""" + df = df_dividend.copy() + df.columns = ['Type', 'Amount', 'Record_Date', 'Reinvest_Date', + 'Payable_Date', 'Reinvest_Price', 'Dist_Yield', 'SEC_Yield'] + df = df.iloc[1:] # Skip header + return df + +def get_fund_metrics(): + """Extract key fund metrics for KPI cards""" + facts = dict(zip(df_fund_facts['label'], df_fund_facts['value'])) + + ts = get_time_series_data() + latest_price = ts['Calibre Index Fund'].iloc[-1] + first_price = ts['Calibre Index Fund'].iloc[0] + ytd_return = ((latest_price - first_price) / first_price) * 100 + + returns = get_returns_data() + fund_returns = returns[returns['Entity'].str.contains('500 Index Fund', na=False)].iloc[0] + + return { + 'nav': latest_price, + 'ytd_return': ytd_return, + 'expense_ratio': facts.get('Expense ratio as of 04/27/2017', '0.14%'), + 'category': facts.get('Category', 'Large Blend'), + 'asset_class': facts.get('Asset Class', 'Domestic Stock'), + 'min_investment': facts.get('Minimum investment', '$3,000'), + '1y_return': fund_returns['1Y'], + '3y_return': fund_returns['3Y'], + '5y_return': fund_returns['5Y'], + } + +def calculate_risk_metrics(fund_id, period="1Y"): + """Calculate risk metrics (volatility, beta, sharpe, alpha) for a fund and period""" + ts = get_time_series_data() + + fund_col = 'Calibre Index Fund' + benchmark_col = '"S&P 500 Index, y"' + + period_days = {"1Y": 252, "3Y": 756, "5Y": 1260, "10Y": 2520, "All": len(ts)} + lookback = min(period_days.get(period, 252), len(ts) - 1) + + data = ts[fund_col].iloc[-lookback:] + benchmark = ts[benchmark_col].iloc[-lookback:] + + returns = data.pct_change().dropna() + bench_returns = benchmark.pct_change().dropna() + + volatility = returns.std() * (252 ** 0.5) * 100 + + covariance = returns.cov(bench_returns) + bench_variance = bench_returns.var() + beta = covariance / bench_variance if bench_variance > 0 else 1.0 + + excess_return = returns.mean() * 252 - 0.02 + sharpe = excess_return / (returns.std() * (252 ** 0.5)) if returns.std() > 0 else 0 + + alpha = (returns.mean() * 252) - (0.02 + beta * (bench_returns.mean() * 252 - 0.02)) + + volatility_pct = min(max(volatility / 40 * 100, 10), 100) + beta_pct = min(max(beta * 50, 10), 100) + sharpe_pct = min(max((sharpe + 1) / 3 * 100, 10), 100) + alpha_pct = min(max((alpha * 100 + 5) / 10 * 100, 10), 100) + + return { + 'volatility': volatility, + 'volatility_level': "Low" if volatility < 10 else "Medium" if volatility < 20 else "High", + 'volatility_pct': volatility_pct, + 'beta': beta, + 'beta_pct': beta_pct, + 'sharpe': sharpe, + 'sharpe_pct': sharpe_pct, + 'alpha': alpha * 100, + 'alpha_pct': alpha_pct, + } diff --git a/investments-dashboard/utils/pdf_export.py b/investments-dashboard/utils/pdf_export.py new file mode 100644 index 0000000..58373c0 --- /dev/null +++ b/investments-dashboard/utils/pdf_export.py @@ -0,0 +1,85 @@ +import copy +import io +from datetime import datetime + +import plotly.io as pio +from PIL import Image as PILImage, ImageDraw +from reportlab.lib import colors +from reportlab.lib.pagesizes import A4, landscape, portrait +from reportlab.lib.units import inch +from reportlab.lib.utils import ImageReader +from reportlab.pdfgen import canvas +from PyPDF2 import PdfWriter, PdfReader + + +def figure_to_image_bytes(figure, width=1000, height=600): + try: + fig = copy.deepcopy(figure) + if isinstance(fig, dict): + fig.setdefault('layout', {}) + fig['layout']['paper_bgcolor'] = 'white' + fig['layout']['plot_bgcolor'] = 'white' + return pio.to_image(fig, format="png", width=width, height=height) + except Exception as e: + img = PILImage.new("RGB", (width, height), color=(220, 220, 220)) + draw = ImageDraw.Draw(img) + draw.text((width // 2 - 100, height // 2), f"Render failed: {e}", fill="black") + buf = io.BytesIO() + img.save(buf, format="PNG") + return buf.getvalue() + + +def create_pdf_report(figures, titles=None, report_title="Financial Report"): + if titles is None: + titles = [f"Chart {i + 1}" for i in range(len(figures))] + + portrait_w, portrait_h = portrait(A4) + landscape_w, landscape_h = landscape(A4) + + out = io.BytesIO() + writer = PdfWriter() + + # Title page + p_buf = io.BytesIO() + cp = canvas.Canvas(p_buf, pagesize=portrait(A4)) + cp.setFillColor(colors.HexColor("#2563eb")) + cp.rect(0, portrait_h - 2 * inch, portrait_w, 2 * inch, fill=1, stroke=0) + cp.setFillColor(colors.white) + cp.setFont("Helvetica-Bold", 28) + cp.drawCentredString(portrait_w / 2, portrait_h - 1.2 * inch, report_title) + cp.setFont("Helvetica", 14) + cp.drawCentredString( + portrait_w / 2, + portrait_h - 1.8 * inch, + f"Generated on {datetime.now().strftime('%B %d, %Y')}", + ) + cp.setFillColor(colors.HexColor("#666666")) + cp.setFont("Helvetica", 10) + cp.drawCentredString(portrait_w / 2, 0.5 * inch, "Confidential — not for redistribution") + cp.save() + p_buf.seek(0) + writer.add_page(PdfReader(p_buf).pages[0]) + + # One landscape page per figure + for figure, chart_title in zip(figures, titles): + fig_img = figure_to_image_bytes(figure) + l_buf = io.BytesIO() + cl = canvas.Canvas(l_buf, pagesize=landscape(A4)) + cl.setFillColor(colors.HexColor("#2563eb")) + cl.setFont("Helvetica-Bold", 20) + cl.drawString(1 * inch, landscape_h - 0.8 * inch, chart_title) + img_reader = ImageReader(io.BytesIO(fig_img)) + chart_w, chart_h = 10 * inch, 6 * inch + x = (landscape_w - chart_w) / 2 + y = (landscape_h - chart_h) / 2 - 0.5 * inch + cl.drawImage(img_reader, x, y, width=chart_w, height=chart_h) + cl.setFillColor(colors.HexColor("#666666")) + cl.setFont("Helvetica", 8) + cl.drawCentredString(landscape_w / 2, 0.5 * inch, "CONFIDENTIAL") + cl.save() + l_buf.seek(0) + writer.add_page(PdfReader(l_buf).pages[0]) + + writer.write(out) + out.seek(0) + return out.getvalue() diff --git a/medical-imaging-demo/.gitignore b/medical-imaging-demo/.gitignore new file mode 100644 index 0000000..b9c0379 --- /dev/null +++ b/medical-imaging-demo/.gitignore @@ -0,0 +1,7 @@ + +# Dolt database files (added by bd init) +.dolt/ +*.db + +# AgentOps session artifacts +.agents/ diff --git a/medical-imaging-demo/Procfile b/medical-imaging-demo/Procfile new file mode 100644 index 0000000..673048e --- /dev/null +++ b/medical-imaging-demo/Procfile @@ -0,0 +1 @@ +web: uvicorn app:server --host 0.0.0.0 --port 8000 diff --git a/medical-imaging-demo/README.md b/medical-imaging-demo/README.md new file mode 100644 index 0000000..ad12595 --- /dev/null +++ b/medical-imaging-demo/README.md @@ -0,0 +1,69 @@ +# VitalSight — Clinical Intelligence Platform + +A Plotly Dash demonstration of clinical data visualization, built to mirror the architecture of `dash-financial-report-v2`. + +> **IMPORTANT:** All patient data is **synthetic and de-identified**. X-ray images are algorithmically generated grayscale placeholders. This application is for demonstration purposes only and is not intended for clinical use. + +## Features + +- **Clinical Dashboard** — Census KPIs + live ICU vitals streaming via WebSocket (mirrors the financial app's live stock feed) +- **Patient Vitals** — Multi-vital time-series with normal-range bands, moving averages, and period selectors +- **Cohort Explorer** — Crossfilter linked-brushing across 3 biomarker scatter plots (port of the crossfilter demo) +- **Imaging Workstation** — Interactive X-ray annotation (draw rectangles, lines, circles), window/level controls, AI-assist suggested findings, and radiology report PDF export + +## Setup + +```bash +python -m venv venv +source venv/bin/activate +pip install -r requirements.txt + +# Generate synthetic data and X-ray images +python scripts/generate_data.py +python scripts/generate_xrays.py + +# Run the app +python app.py +# or for production +uvicorn app:server --host 0.0.0.0 --port 8000 +``` + +App runs at http://localhost:8050 (debug) or http://localhost:8000 (uvicorn). + +## Project Structure + +``` +medical-demo-app/ +├── app.py Main entry point +├── pages/ One layout module per page +│ ├── dashboard.py +│ ├── vitals.py +│ ├── cohort.py +│ └── imaging.py +├── callbacks/ One callback module per page +│ ├── dashboard.py Includes live vitals WebSocket +│ ├── vitals.py +│ ├── cohort.py +│ ├── imaging.py +│ └── export_all.py PDF export +├── components/ Reusable Plotly/Mantine components +│ ├── charts.py +│ ├── kpi_cards.py +│ ├── tables.py +│ └── imaging.py +├── utils/ +│ ├── data_loader.py +│ └── pdf_export.py +├── data/ Generated CSVs (run generate_data.py) +├── assets/ +│ ├── styles.css +│ └── xrays/ Generated X-ray PNGs (run generate_xrays.py) +└── scripts/ + ├── generate_data.py + └── generate_xrays.py +``` + +## Attribution + +X-ray image generation is inspired by the NIH ChestX-ray14 dataset structure (CC0 Public Domain). +NIH Clinical Center: https://nihcc.app.box.com/v/ChestXray-NIHCC diff --git a/medical-imaging-demo/app.py b/medical-imaging-demo/app.py new file mode 100644 index 0000000..e1ade1f --- /dev/null +++ b/medical-imaging-demo/app.py @@ -0,0 +1,209 @@ +import dash +from dash import html, dcc, Input, Output, callback, ctx +import dash_mantine_components as dmc +from dash_iconify import DashIconify + +from pages import cohort, imaging +from callbacks import ( + cohort as cohort_callbacks, + imaging as imaging_callbacks, + export_all as export_all_callbacks, +) + +app = dash.Dash( + __name__, + backend="fastapi", + suppress_callback_exceptions=True, + external_stylesheets=dmc.styles.ALL, + title="Medical Imaging Demo", +) +server = app.server + + +# ── Header ───────────────────────────────────────────────────────────────────── +# (label, href, nav_id, leftSection) +NAV_LINKS = [ + ("Imaging Workstation", "/imaging", "nav-imaging", + DashIconify(icon="tabler:x-ray", width=15)), + ("Cohort Explorer", "/cohort", "nav-cohort", None), +] + +_NAV_BTN_STYLES = { + "root": { + "paddingLeft": 14, "paddingRight": 18, + "fontWeight": 500, "height": 34, + "fontSize": "13px", + }, +} + + + +def create_header(): + brand = dmc.Group([ + html.Img(src="/assets/DE-logo.png", height=36, + style={"opacity": "0.92"}), + html.Div(style={ + "width": "1px", "height": "20px", + "backgroundColor": "#d1d5db", + "flexShrink": 0, + }), + dmc.Title("Medical Imaging Demo", order=3, + style={"color": "#1e2433", "letterSpacing": "-0.5px", + "fontSize": "16px", "fontWeight": 600}), + ], gap=10, wrap="nowrap", align="center") + + nav_center = dmc.Group([ + dcc.Link( + dmc.Button( + label, + id=nav_id, + leftSection=left, + variant="subtle", + color="navy", + size="sm", + radius="md", + styles=_NAV_BTN_STYLES, + ), + href=href, + style={"textDecoration": "none"}, + ) + for label, href, nav_id, left in NAV_LINKS + ], gap=4, wrap="nowrap") + + actions = dmc.Group([ + html.Div( + dmc.Group([ + DashIconify(icon="tabler:building-hospital", width=12, + color="#6b7280"), + dmc.Text("General Hospital", size="xs", fw=500, + style={"color": "#6b7280", "letterSpacing": "0.01em"}), + html.Div(style={ + "width": "3px", "height": "3px", + "borderRadius": "50%", + "backgroundColor": "#c2c6cc", + "flexShrink": 0, + }), + dmc.Text("325 beds", size="xs", + style={"color": "#6b7280"}), + html.Div(style={ + "width": "3px", "height": "3px", + "borderRadius": "50%", + "backgroundColor": "#c2c6cc", + "flexShrink": 0, + }), + dmc.Text("ICU 25", size="xs", fw=600, + style={"color": "#1e3a8a"}), + ], gap=6, wrap="nowrap"), + style={ + "display": "flex", "alignItems": "center", + "padding": "4px 12px", + "borderRadius": "20px", + "backgroundColor": "#eef0f2", + "border": "1px solid #e1e3e7", + }, + ), + dmc.Tooltip( + label="Hide toolbar", withArrow=True, + children=dmc.ActionIcon( + DashIconify(icon="tabler:layout-navbar-collapse", width=18), + id="header-collapse-btn", variant="subtle", color="navy", + size="lg", + ), + ), + ], gap="sm", wrap="nowrap", justify="flex-end") + + # Three-column grid: brand | nav (centered) | actions + return html.Div( + [brand, nav_center, actions], + style={ + "display": "grid", + "gridTemplateColumns": "1fr auto 1fr", + "alignItems": "center", + "height": "100%", + "padding": "0 24px", + "backgroundColor": "#fcfcfb", + "borderBottom": "1px solid #e1e3e7", + }, + ) + + +# Floating button (overlays the page) to restore the header once collapsed. +_EXPAND_STYLE = {"position": "fixed", "top": "10px", "right": "14px", + "zIndex": 3000, "display": "none"} + + +# ── App layout ───────────────────────────────────────────────────────────────── +app.layout = dmc.MantineProvider( + id="mantine-provider", + forceColorScheme="light", + theme={ + "primaryColor": "cyan", + # Register the imaging "navy" ramp app-wide so the shared header's + # navy-colored controls resolve (cohort accents stay on cyan). + "colors": {"navy": imaging.NAVY_RAMP}, + "fontFamily": "Inter, -apple-system, BlinkMacSystemFont, sans-serif", + }, + children=[ + dcc.Location(id="url", refresh=False), + dcc.Download(id="download-pdf-all"), + html.Div(id="pdf-status-all", style={"display": "none"}), + dmc.AppShell( + [ + dmc.AppShellHeader(create_header()), + dmc.AppShellMain( + html.Div(id="page-content", style={"width": "100%"}), + ), + ], + id="app-shell", + header={"height": 64}, + padding=0, + ), + dmc.Tooltip( + label="Show toolbar", withArrow=True, + children=dmc.ActionIcon( + DashIconify(icon="tabler:layout-navbar-expand", width=18), + id="header-expand-btn", variant="filled", color="navy", + size="lg", style=_EXPAND_STYLE, + ), + ), + ] +) + + +# ── Routing ──────────────────────────────────────────────────────────────────── +@callback( + Output("page-content", "children"), + Input("url", "pathname"), +) +def display_page(pathname): + # Imaging Workstation is the landing page ("/" and "/imaging"). + if pathname == "/cohort": + return cohort.layout + return imaging.layout + + +@callback( + [Output(nav_id, "variant") for _, _, nav_id, _ in NAV_LINKS], + Input("url", "pathname"), +) +def update_nav_active(pathname): + hrefs = [href for _, href, _, _ in NAV_LINKS] + active = pathname if pathname in hrefs else "/imaging" + return ["filled" if active == h else "subtle" for h in hrefs] + + +@callback( + Output("app-shell", "header"), + Output("header-expand-btn", "style"), + Input("header-collapse-btn", "n_clicks"), + Input("header-expand-btn", "n_clicks"), + prevent_initial_call=True, +) +def toggle_header(_collapse, _expand): + collapsed = ctx.triggered_id == "header-collapse-btn" + return ({"height": 64, "collapsed": collapsed}, + {**_EXPAND_STYLE, "display": "flex" if collapsed else "none"}) + + +if __name__ == "__main__": + app.run(debug=True, port=8051) diff --git a/medical-imaging-demo/assets/DE-logo.png b/medical-imaging-demo/assets/DE-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a0375905a3f3c3e6b871fe36c682a07be4338dda GIT binary patch literal 24095 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 + + + + + diff --git a/medical-imaging-demo/assets/styles.css b/medical-imaging-demo/assets/styles.css new file mode 100644 index 0000000..84b5927 --- /dev/null +++ b/medical-imaging-demo/assets/styles.css @@ -0,0 +1,86 @@ +/* VitalSight — Clinical Intelligence Platform */ + +body { + font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; +} + +/* Light app shell header (cool off-white) */ +.mantine-AppShell-header { + background-color: #fcfcfb !important; + border-bottom: 1px solid #e1e3e7 !important; +} + +/* Nav button states on light header */ +.mantine-AppShell-header .mantine-Button-root[data-variant="subtle"] { + color: #6b7280; +} +.mantine-AppShell-header .mantine-Button-root[data-variant="subtle"]:hover { + background-color: #eef0f2; + color: #1e2433; +} +.mantine-AppShell-header .mantine-Button-root[data-variant="filled"] { + color: #1e3a8a; + background-color: rgba(30, 58, 138, 0.1); +} + +/* Scrollbars */ +::-webkit-scrollbar { width: 7px; height: 7px; } +::-webkit-scrollbar-track { background: rgba(0,0,0,0.04); border-radius: 4px; } +::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.18); border-radius: 4px; } +::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.28); } + +/* Modebar */ +.js-plotly-plot .plotly .modebar { top: 4px !important; right: 4px !important; } +.js-plotly-plot .plotly .modebar-btn { font-size: 13px !important; } + +/* Table */ +.mantine-Table-table { font-size: 0.85rem; } +.mantine-Table-th { background-color: rgba(0,0,0,0.02); } + +/* NavLink active */ +.mantine-NavLink-root[data-active="true"] { font-weight: 600; } + +/* Paper hover */ +.mantine-Paper-root { transition: box-shadow 0.18s ease; } +.mantine-Paper-root:hover { box-shadow: 0 2px 10px rgba(0,0,0,0.07); } + +/* Pulse animation for live indicator */ +@keyframes pulse { + 0%, 100% { opacity: 1; transform: scale(1); } + 50% { opacity: 0.35; transform: scale(0.85); } +} + +/* Fade-in for KPI cards */ +@keyframes fadeInUp { + from { opacity: 0; transform: translateY(8px); } + to { opacity: 1; transform: translateY(0); } +} + +/* Imaging study cards */ +.study-card:hover { border-color: #1e3a8a !important; } + +/* Print styles */ +@media print { + .mantine-AppShell-header, + .mantine-AppShell-navbar, + .mantine-Button-root, + .mantine-Select-root, + .mantine-MultiSelect-root { display: none !important; } + .mantine-Paper-root { + break-inside: avoid; + box-shadow: none !important; + border: 1px solid #e2e8f0 !important; + } +} + +/* Responsive */ +@media (max-width: 768px) { + .mantine-AppShell-navbar { display: none; } + .mantine-Container-root { padding: 0.5rem; } +} + +/* Progress bar background */ +.mantine-Progress-root { background-color: rgba(0,0,0,0.05); } + +/* Badge */ +.mantine-Badge-root { text-transform: none; } diff --git a/medical-imaging-demo/assets/xrays/xray_01.png b/medical-imaging-demo/assets/xrays/xray_01.png new file mode 100644 index 0000000000000000000000000000000000000000..219e2256926fad499c2e8ed706341f991d2419c1 GIT binary patch literal 97988 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%0A)GuIkUG1L;x`pvrqNf*R|ek# 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∨_}oUqNqGUx**8%oJK3EV!Z$k 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 a;{Okai(64BwwQSU000014D3 literal 0 HcmV?d00001 diff --git a/medical-imaging-demo/assets/xrays/xray_03.png b/medical-imaging-demo/assets/xrays/xray_03.png new file mode 100644 index 0000000000000000000000000000000000000000..6b428d9bd1e6ae4285a1bfc51699b46d1f5baea2 GIT binary patch literal 98548 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

    QcaUEW?ekjX#b#Hp>$lx* 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 Eg5d(rV*mgE literal 0 HcmV?d00001 diff --git a/medical-imaging-demo/assets/xrays/xray_05.png b/medical-imaging-demo/assets/xrays/xray_05.png new file mode 100644 index 0000000000000000000000000000000000000000..a4a7f9ddf1f1bedf197b757f8ca774e68c0205a7 GIT binary patch literal 97777 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

    I^OqO%~$tEUkjY&--vYP1~$CXHw$dxLOz04>}% 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 literal 0 HcmV?d00001 diff --git a/medical-imaging-demo/assets/xrays/xray_08.png b/medical-imaging-demo/assets/xrays/xray_08.png new file mode 100644 index 0000000000000000000000000000000000000000..59881312bad930c115a13dc432adb5d78834f055 GIT binary patch literal 98191 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 95 else "#f59e0b" if s >= 90 else "#ef4444" + +def _bp_color(sbp): + return "#22c55e" if sbp <= 140 else "#f59e0b" if sbp <= 160 else "#ef4444" + + +# ── Toggle streaming ────────────────────────────────────────────────────────── +@callback( + Output("live-streaming", "data"), + Input("icu-live-toggle", "checked"), +) +def toggle_streaming(checked): + return checked + + +# ── Admissions chart update ─────────────────────────────────────────────────── +@callback( + Output("admissions-chart", "figure"), + Input("dashboard-dept", "value"), + Input("dashboard-period", "value"), +) +def update_admissions(dept, period): + df = get_admissions_data(department=dept, period=period) + return create_admissions_chart(df, department=dept) + + +# ── Persistent WebSocket: stream ICU vitals ─────────────────────────────────── +@callback(persistent=True) +async def stream_patient_vitals(): + ws = ctx.websocket + + vitals = {pid: dict(v) for pid, v in ICU_BASE.items()} + history = {pid: [vitals[pid]["hr"]] for pid in PIDS} + + while not ws.is_shutdown: + streaming = await ws.get_prop("live-streaming", "data") + + if streaming: + for pid in PIDS: + v = vitals[pid] + base = ICU_BASE[pid] + + # Mean-reverting Ornstein–Uhlenbeck drift + v["hr"] = max(40, min(200, round(v["hr"] + 0.15*(base["hr"] -v["hr"]) + random.gauss(0, 1.2), 1))) + v["spo2"]= max(85, min(100, round(v["spo2"]+ 0.20*(base["spo2"]-v["spo2"])+ random.gauss(0, 0.25), 1))) + v["sbp"] = max(70, min(220, round(v["sbp"] + 0.10*(base["sbp"]-v["sbp"]) + random.gauss(0, 2.0), 1))) + v["dbp"] = max(40, min(130, round(v["dbp"] + 0.10*(base["dbp"]-v["dbp"]) + random.gauss(0, 1.5), 1))) + v["rr"] = max(8, min(40, round(v["rr"] + 0.15*(base["rr"] -v["rr"]) + random.gauss(0, 0.4), 1))) + + history[pid].append(v["hr"]) + if len(history[pid]) > 40: + history[pid] = history[pid][-40:] + + set_props(f"live-hr-{pid}", { + "children": f"{v['hr']:.0f}", + "style": {"fontFamily": "monospace", "fontWeight": 700, + "color": _hr_color(v["hr"])}, + }) + set_props(f"live-spo2-{pid}", { + "children": f"{v['spo2']:.1f}%", + "style": {"fontFamily": "monospace", "fontWeight": 700, + "color": _spo2_color(v["spo2"])}, + }) + set_props(f"live-bp-{pid}", { + "children": f"{int(v['sbp'])}/{int(v['dbp'])}", + "style": {"fontFamily": "monospace", "fontWeight": 700, + "color": _bp_color(v["sbp"])}, + }) + set_props(f"live-rr-{pid}", { + "children": f"{v['rr']:.0f}", + "style": {"fontFamily": "monospace", "fontWeight": 700, + "color": "#94a3b8"}, + }) + + # ECG sparkline for selected patient + selected = await ws.get_prop("ecg-patient-select", "value") + if selected and selected in history and len(history[selected]) > 1: + fig = create_ecg_sparkline(history[selected], selected) + set_props("ecg-sparkline-chart", {"figure": fig}) + + await asyncio.sleep(1) + else: + await asyncio.sleep(0.5) diff --git a/medical-imaging-demo/callbacks/export_all.py b/medical-imaging-demo/callbacks/export_all.py new file mode 100644 index 0000000..fb0b64a --- /dev/null +++ b/medical-imaging-demo/callbacks/export_all.py @@ -0,0 +1,33 @@ +from datetime import datetime + +from dash import callback, Input, Output, State, dcc + +from utils.pdf_export import create_radiology_report +from utils.data_loader import get_study, get_patient +from components.imaging import annotation_to_finding_dict + + +@callback( + Output("download-radiology-pdf", "data"), + Input("export-radiology-btn", "n_clicks"), + State("xray-graph", "figure"), + State("xray-annotations", "data"), + State("current-study-id", "data"), + prevent_initial_call=True, +) +def export_radiology_report(n_clicks, xray_figure, annotations, study_id): + if not n_clicks: + return None + + study = get_study(study_id) if study_id else {} + patient = get_patient(study.get("patient_id", "")) if study else {} + findings = [annotation_to_finding_dict(a) for a in (annotations or [])] + + pdf_bytes = create_radiology_report( + xray_figure = xray_figure, + findings = findings, + patient_info = patient, + study_info = study, + ) + fname = f"radiology_report_{study_id}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.pdf" + return dcc.send_bytes(pdf_bytes, fname) diff --git a/medical-imaging-demo/callbacks/imaging.py b/medical-imaging-demo/callbacks/imaging.py new file mode 100644 index 0000000..dfb0410 --- /dev/null +++ b/medical-imaging-demo/callbacks/imaging.py @@ -0,0 +1,192 @@ +from dash import callback, ctx, Input, Output, State, ALL, no_update, Patch + +from components.imaging import (load_xray_b64, create_xray_figure, + get_ai_shapes, XRAY_DIR, _make_shape, + newshape_for, severity_color) +from components.tables import create_findings_table +from utils.data_loader import get_studies, get_study +from pages.imaging import (_patient_banner_content, _image_overlays, + _status_bar, _pending_tag, + BG_INSET, BORDER, ACCENT, + CARD_ACTIVE_BG, CARD_ACTIVE_SHADOW) + +df_studies = get_studies() +STUDY_IDS = df_studies["study_id"].tolist() + + +# ── Select study via thumbnail buttons ──────────────────────────────────────── +@callback( + Output("current-study-id", "data"), + Input({"type": "study-thumb", "index": ALL}, "n_clicks"), + prevent_initial_call=True, +) +def select_study(n_clicks_list): + if not ctx.triggered_id or not any(n_clicks_list): + return no_update + # Don't clear annotations — update_xray loads this study's saved set. + return ctx.triggered_id["index"] + + +# ── Highlight the active study card ─────────────────────────────────────────── +_INACTIVE_STYLE = { + "width": "100%", "padding": "10px 12px", + "backgroundColor": BG_INSET, + "border": f"1px solid {BORDER}", + "borderRadius": "8px", "textAlign": "left", + "transition": "border-color 0.15s ease, background-color 0.15s ease", +} +_ACTIVE_STYLE = { + **_INACTIVE_STYLE, + "backgroundColor": CARD_ACTIVE_BG, + "border": f"1px solid {ACCENT}", + "boxShadow": CARD_ACTIVE_SHADOW, +} + +@callback( + Output({"type": "study-thumb", "index": ALL}, "style"), + Input("current-study-id", "data"), + State({"type": "study-thumb", "index": ALL}, "id"), +) +def highlight_active_study(active_id, ids): + return [_ACTIVE_STYLE if i["index"] == active_id else _INACTIVE_STYLE + for i in ids] + + +# ── Main imaging callback ───────────────────────────────────────────────────── +@callback( + Output("xray-graph", "figure"), + Output("xray-annotations", "data"), + Output("annotations-store", "data"), + Output("findings-table-container","children"), + Output("findings-count", "children"), + Input("xray-graph", "relayoutData"), + Input("current-study-id", "data"), + Input("window-slider", "value"), + Input("level-slider", "value"), + Input("invert-toggle", "checked"), + Input("reset-annotations-btn", "n_clicks"), + Input("draw-mode-select", "value"), + State("xray-annotations", "data"), + State("annotations-store", "data"), + State("finding-label-select", "value"), + State("severity-select", "value"), + State("annotation-note", "value"), + prevent_initial_call=True, +) +def update_xray(relayout, study_id, window, level, invert, + reset_clicks, draw_mode, + stored, by_study, label, severity, note): + triggered = ctx.triggered_id + stored = stored or [] + by_study = dict(by_study or {}) + study = get_study(study_id) if study_id else {} + key = study_id or "" + + drawing_event = False + + if triggered == "reset-annotations-btn": + stored = [] + + elif triggered == "current-study-id": + # Switched study — load this study's saved annotations (persisted), + # do NOT clear. New studies start empty. + stored = list(by_study.get(key, [])) + + elif triggered == "xray-graph" and relayout: + if "shapes" in relayout: + drawing_event = True + raw_shapes = relayout["shapes"] + n_raw = len(raw_shapes) + n_stored = len(stored) + if n_raw > n_stored: + new_raw = raw_shapes[-1] + sev = severity or "Medium" + color = severity_color(sev) + width = 3 if sev == "High" else 2 + stored = stored + [{ + **new_raw, + "line": {"color": color, "width": width}, + "_label": label or "Unspecified", + "_severity": sev, + "_note": note or "", + }] + elif n_raw < n_stored: + stored = stored[:n_raw] + elif n_raw == n_stored and n_raw > 0: + updated = [] + for raw, old in zip(raw_shapes, stored): + updated.append({**raw, + "_label": old.get("_label", "Unspecified"), + "_severity": old.get("_severity", "Medium"), + "_note": old.get("_note", "")}) + stored = updated + else: + # Pan/zoom relayout — nothing to update + return (no_update,) * 5 + + # Persist this study's annotations into the keyed store + by_study[key] = stored + findings_table = create_findings_table(stored) + count = str(len(stored)) + + if drawing_event: + # Shape already rendered on canvas; skip figure rebuild to avoid flicker + return no_update, stored, by_study, findings_table, count + + img_path = XRAY_DIR / study.get("image_file", "xray_01.png") + img_b64 = load_xray_b64(img_path, + window=float(window or 220), + level =float(level or 128), + invert=bool(invert)) + fig = create_xray_figure(img_b64, shapes=stored) + fig.update_layout(dragmode=draw_mode or "drawrect", + newshape=newshape_for(severity)) + + return fig, stored, by_study, findings_table, count + + +# ── Live annotation styling: severity drives the pen colour ─────────────────── +@callback( + Output("xray-graph", "figure", allow_duplicate=True), + Output("pending-annotation", "children"), + Input("severity-select", "value"), + Input("finding-label-select","value"), + Input("annotation-note", "value"), + prevent_initial_call=True, +) +def update_pen_style(severity, finding, note): + """Update the next-shape style + pending badge as the user changes controls. + + Uses a Patch so the X-ray image is not reloaded on every keystroke. + """ + patch = Patch() + patch["layout"]["newshape"] = newshape_for(severity) + return patch, _pending_tag(finding, severity, note) + + +# ── Patient banner follows the selected study ───────────────────────────────── +@callback( + Output("patient-banner", "children"), + Input("current-study-id", "data"), +) +def update_patient_banner(study_id): + if not study_id: + return no_update + return _patient_banner_content(get_study(study_id)) + + +# ── Image chrome: DICOM corner overlays + status bar ────────────────────────── +@callback( + Output("image-overlays", "children"), + Output("image-status-bar", "children"), + Input("current-study-id", "data"), + Input("window-slider", "value"), + Input("level-slider", "value"), + Input("invert-toggle", "checked"), + Input("draw-mode-select", "value"), +) +def update_image_chrome(study_id, window, level, invert, draw_mode): + study = get_study(study_id) if study_id else {} + overlays = _image_overlays(study, window, level, invert) + status = _status_bar(draw_mode, window, level, invert) + return overlays, status diff --git a/medical-imaging-demo/callbacks/vitals.py b/medical-imaging-demo/callbacks/vitals.py new file mode 100644 index 0000000..992d0a2 --- /dev/null +++ b/medical-imaging-demo/callbacks/vitals.py @@ -0,0 +1,74 @@ +from dash import callback, Input, Output +import dash_mantine_components as dmc + +from components.charts import (create_vitals_chart, create_vitals_variability, + VITAL_RANGES) +from utils.data_loader import get_vitals + +UNITS = {"HR": "bpm", "SpO2": "%", "Temp": "°C", + "SysBP": "mmHg", "DiaBP": "mmHg", "RR": "/min"} + + +@callback( + Output("vitals-trend-chart", "figure"), + Output("vitals-var-chart", "figure"), + Output("stat-current-hr", "children"), + Output("stat-high-hr", "children"), + Output("stat-low-hr", "children"), + Output("stat-current-spo2", "children"), + Output("stat-abnormal", "children"), + Output("vitals-summary-grid","children"), + Input("vitals-patient-select","value"), + Input("vitals-period", "value"), + Input("vitals-select", "value"), + Input("vitals-ref-toggle", "checked"), + Input("vitals-ma-select", "value"), +) +def update_vitals(patient_id, period, vitals, show_ref, ma): + vitals = vitals or ["HR", "SpO2"] + df = get_vitals(patient_id, period) + + if df.empty: + empty = dmc.Text("No data", c="dimmed") + return empty, empty, "—", "—", "—", "—", "—", [] + + trend_fig = create_vitals_chart(df, vitals, show_reference=show_ref, ma_days=ma or "none") + var_fig = create_vitals_variability(df, vitals) + + # Stat cards + hr_cur = f"{df['HR'].iloc[-1]:.0f} bpm" if "HR" in df.columns else "—" + hr_hi = f"{df['HR'].max():.0f}" if "HR" in df.columns else "—" + hr_lo = f"{df['HR'].min():.0f}" if "HR" in df.columns else "—" + spo_cur = f"{df['SpO2'].iloc[-1]:.1f}%" if "SpO2" in df.columns else "—" + + # Count readings outside reference range + abnormal = 0 + for v in vitals: + if v in df.columns and v in VITAL_RANGES: + lo, hi = VITAL_RANGES[v] + abnormal += int(((df[v] < lo) | (df[v] > hi)).sum()) + abn_str = str(abnormal) + + # Summary grid: one mini-card per vital + cards = [] + for v in vitals: + if v not in df.columns: + continue + col = df[v] + lo_r, hi_r = VITAL_RANGES.get(v, (None, None)) + current_val = col.iloc[-1] + in_range = (lo_r is None or lo_r <= current_val <= hi_r) + badge_color = "teal" if in_range else "red" + cards.append(dmc.Paper( + dmc.Stack([ + dmc.Group([ + dmc.Text(v, size="xs", fw=600), + dmc.Badge("OK" if in_range else "!", color=badge_color, size="xs"), + ], justify="space-between"), + dmc.Text(f"{current_val:.1f} {UNITS.get(v,'')}", size="sm", fw=700), + dmc.Text(f"↓{col.min():.1f} ↑{col.max():.1f}", size="xs", c="dimmed"), + ], gap=2), + p="xs", radius="sm", withBorder=True, + )) + + return trend_fig, var_fig, hr_cur, hr_hi, hr_lo, spo_cur, abn_str, cards diff --git a/medical-imaging-demo/components/__init__.py b/medical-imaging-demo/components/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/medical-imaging-demo/components/charts.py b/medical-imaging-demo/components/charts.py new file mode 100644 index 0000000..eab4fff --- /dev/null +++ b/medical-imaging-demo/components/charts.py @@ -0,0 +1,287 @@ +import plotly.graph_objects as go +import plotly.express as px +import pandas as pd +import numpy as np + +COLORS = { + "primary": "#0d9488", # teal + "secondary": "#2563eb", # blue + "danger": "#ef4444", + "warning": "#f59e0b", + "success": "#22c55e", + "gray": "#94a3b8", + "purple": "#8b5cf6", +} + +NAVY = "#1e3a8a" # deep navy accent (matches app theme highlight) + +VITAL_COLORS = { + "HR": "#ef4444", + "SpO2": "#2563eb", + "Temp": "#f59e0b", + "SysBP": "#8b5cf6", + "DiaBP": "#a78bfa", + "RR": "#22c55e", +} + +VITAL_RANGES = { + "HR": (60, 100), + "SpO2": (95, 100), + "Temp": (36.1, 37.8), + "SysBP": (90, 130), + "DiaBP": (60, 90), + "RR": (12, 20), +} + +BASE_LAYOUT = { + "paper_bgcolor": "rgba(0,0,0,0)", + "plot_bgcolor": "rgba(0,0,0,0)", + "font": {"family": "Inter, sans-serif"}, + "margin": {"l": 48, "r": 24, "t": 48, "b": 40}, + "hovermode": "x unified", + "hoverlabel": { + "bgcolor": "white", + "bordercolor": "#e2e8f0", + "font": {"family": "Inter, sans-serif", "size": 12}, + }, +} + + +# ── Admissions area chart ───────────────────────────────────────────────────── +def create_admissions_chart(df: pd.DataFrame, department: str = "All") -> go.Figure: + df = df.copy() + df["date"] = pd.to_datetime(df["date"]) + + if department == "All": + agg = df.groupby("date")["admissions"].sum().reset_index() + fig = go.Figure(go.Scatter( + x=agg["date"], y=agg["admissions"], + fill="tozeroy", + line={"color": COLORS["primary"], "width": 2}, + fillcolor="rgba(13,148,136,0.15)", + name="Total Admissions", + hovertemplate="%{y} admissions", + )) + else: + sub = df[df["department"] == department] + fig = go.Figure(go.Scatter( + x=sub["date"], y=sub["admissions"], + fill="tozeroy", + line={"color": COLORS["secondary"], "width": 2}, + fillcolor="rgba(37,99,235,0.12)", + name=department, + hovertemplate="%{y} admissions", + )) + + fig.update_layout( + **BASE_LAYOUT, + title={"text": "Daily Admissions", "x": 0, "font": {"size": 15, "weight": 600}}, + xaxis={"showgrid": False}, + yaxis={"showgrid": True, "gridcolor": "rgba(0,0,0,0.05)", "title": "Patients"}, + showlegend=False, + ) + return fig + + +# ── Vitals time-series with reference bands ─────────────────────────────────── +def create_vitals_chart(df: pd.DataFrame, vitals: list, + show_reference: bool = True, + ma_days: str = "none") -> go.Figure: + fig = go.Figure() + df = df.copy() + df["timestamp"] = pd.to_datetime(df["timestamp"]) + + ma_window = {"20": 20, "50": 50, "none": None}.get(ma_days) + + for v in vitals: + if v not in df.columns: + continue + color = VITAL_COLORS.get(v, COLORS["primary"]) + series = df[v] + if ma_window: + series = series.rolling(ma_window, min_periods=1).mean() + + fig.add_trace(go.Scatter( + x=df["timestamp"], y=series, + name=v, line={"color": color, "width": 1.8}, + hovertemplate=f"{v}: %{{y}}", + )) + + if show_reference and v in VITAL_RANGES: + lo, hi = VITAL_RANGES[v] + fig.add_hrect(y0=lo, y1=hi, fillcolor=color, + opacity=0.06, layer="below", line_width=0) + + fig.update_layout( + **{**BASE_LAYOUT, "margin": {"l": 48, "r": 24, "t": 16, "b": 40}}, + legend={"orientation": "h", "y": -0.18}, + xaxis={ + "showgrid": True, "gridcolor": "rgba(0,0,0,0.04)", + "rangeslider": {"visible": False}, + }, + yaxis={"showgrid": True, "gridcolor": "rgba(0,0,0,0.04)"}, + ) + return fig + + +# ── Vitals variability (box plot per vital) ─────────────────────────────────── +def create_vitals_variability(df: pd.DataFrame, vitals: list) -> go.Figure: + fig = go.Figure() + for v in vitals: + if v not in df.columns: + continue + fig.add_trace(go.Box( + y=df[v], name=v, + marker_color=VITAL_COLORS.get(v, COLORS["primary"]), + boxmean="sd", + )) + fig.update_layout( + **BASE_LAYOUT, + title={"text": "Vital Sign Distribution", "x": 0, + "font": {"size": 15, "weight": 600}}, + yaxis={"showgrid": True, "gridcolor": "rgba(0,0,0,0.04)"}, + showlegend=False, + ) + return fig + + +# ── ECG-style HR sparkline ──────────────────────────────────────────────────── +def create_ecg_sparkline(hr_history: list, patient_id: str = "") -> go.Figure: + fig = go.Figure(go.Scatter( + y=hr_history, + mode="lines", + line={"color": COLORS["success"], "width": 2}, + hovertemplate="%{y} bpm", + )) + fig.update_layout( + paper_bgcolor="rgba(0,0,0,0)", + plot_bgcolor="rgba(0,0,0,0)", + font={"family": "Inter, sans-serif"}, + margin={"l": 0, "r": 0, "t": 12, "b": 0}, + xaxis={"visible": False}, + yaxis={"visible": False, "range": [35, 165]}, + showlegend=False, + title={"text": patient_id, "x": 0, "font": {"size": 12, "weight": 600}}, + ) + return fig + + +# ── Diagnosis donut (cohort demographics) ───────────────────────────────────── +def create_diagnosis_donut(df: pd.DataFrame) -> go.Figure: + counts = df["diagnosis"].value_counts().reset_index() + counts.columns = ["diagnosis", "count"] + fig = go.Figure(go.Pie( + labels=counts["diagnosis"], + values=counts["count"], + hole=0.58, + textinfo="percent", + textposition="outside", + marker={"colors": px.colors.qualitative.Pastel[:len(counts)]}, + hovertemplate="%{label}
      %{value} patients (%{percent})", + )) + fig.update_layout( + **BASE_LAYOUT, + title={"text": "Diagnosis Distribution", "x": 0, + "font": {"size": 15, "weight": 600}}, + legend={"orientation": "v", "x": 1.02, "y": 0.5}, + annotations=[{"text": "Cohort", "x": 0.5, "y": 0.5, + "font": {"size": 13, "weight": 600}, "showarrow": False}], + ) + return fig + + +# ── Age-sex bar chart (cohort demographics) ─────────────────────────────────── +def create_age_sex_chart(df: pd.DataFrame) -> go.Figure: + bins = [20, 30, 40, 50, 60, 70, 80, 90] + labels = ["20-29","30-39","40-49","50-59","60-69","70-79","80+"] + df = df.copy() + df["age_group"] = pd.cut(df["age"], bins=bins, labels=labels, right=False) + grp = df.groupby(["age_group", "gender"], observed=True).size().reset_index(name="count") + fig = go.Figure() + for gender, color in [("M", COLORS["secondary"]), ("F", COLORS["primary"])]: + sub = grp[grp["gender"] == gender] + fig.add_trace(go.Bar( + x=sub["age_group"].astype(str), y=sub["count"], + name="Male" if gender == "M" else "Female", + marker_color=color, + )) + fig.update_layout( + **BASE_LAYOUT, + title={"text": "Age & Sex Distribution", "x": 0, + "font": {"size": 15, "weight": 600}}, + barmode="group", + xaxis={"title": "Age Group"}, + yaxis={"title": "Patients", "showgrid": True, "gridcolor": "rgba(0,0,0,0.04)"}, + legend={"orientation": "h", "y": -0.18}, + ) + return fig + + +# ── Risk stratification bar chart ───────────────────────────────────────────── +def create_risk_strat_chart(df: pd.DataFrame) -> go.Figure: + risk_diag = df.groupby(["diagnosis", "risk_level"]).size().reset_index(name="count") + color_map = {"High": COLORS["danger"], "Medium": COLORS["warning"], "Low": COLORS["success"]} + fig = go.Figure() + for level in ["High", "Medium", "Low"]: + sub = risk_diag[risk_diag["risk_level"] == level] + fig.add_trace(go.Bar( + x=sub["diagnosis"], y=sub["count"], + name=level, marker_color=color_map[level], + )) + fig.update_layout( + **BASE_LAYOUT, + title={"text": "Risk Stratification by Diagnosis", "x": 0, + "font": {"size": 15, "weight": 600}}, + barmode="stack", + xaxis={"tickangle": -30}, + yaxis={"title": "Patients"}, + legend={"orientation": "h", "y": -0.22}, + ) + return fig + + +# ── Crossfilter scatter ─────────────────────────────────────────────────────── +SCATTER_LIGHT = { + "paper_bgcolor": "rgba(0,0,0,0)", + "plot_bgcolor": "rgba(0,0,0,0)", + "font": {"family": "Inter, sans-serif", "color": "#1e2433"}, + "margin": {"l": 40, "r": 16, "t": 40, "b": 36}, + "hovermode": False, + "newselection_mode": "gradual", +} + +def create_crossfilter_scatter(df: pd.DataFrame, x_col: str, y_col: str, + selected_ids=None) -> go.Figure: + all_ids = df.index.tolist() + if selected_ids is None: + selected_ids = all_ids + + risk_colors = {"High": "#ef4444", "Medium": "#f59e0b", "Low": "#22c55e"} + marker_colors = [risk_colors.get(r, "#94a3b8") for r in df["risk_level"]] + + fig = px.scatter(df, x=x_col, y=y_col, template="plotly_white") + fig.update_traces( + selectedpoints=selected_ids, + customdata=df.index, + mode="markers", + marker={ + "color": marker_colors, + "size": 8, + "opacity": 0.9, + "line": {"width": 0.6, "color": "#ffffff"}, + }, + unselected={"marker": {"opacity": 0.15, "color": "#cbd5e1"}}, + selected={"marker": {"opacity": 1.0, "size": 9}}, + ) + grid = {"showgrid": True, "gridcolor": "rgba(0,0,0,0.06)", + "zeroline": False, "linecolor": "rgba(0,0,0,0.12)"} + fig.update_layout( + **SCATTER_LIGHT, + dragmode="select", + activeselection={"fillcolor": "rgba(30,58,138,0.08)"}, + xaxis={**grid, "title": x_col}, + yaxis={**grid, "title": y_col}, + title={"text": f"{x_col} vs {y_col}", + "font": {"size": 13, "color": NAVY, "weight": 600}}, + ) + return fig diff --git a/medical-imaging-demo/components/imaging.py b/medical-imaging-demo/components/imaging.py new file mode 100644 index 0000000..c393d23 --- /dev/null +++ b/medical-imaging-demo/components/imaging.py @@ -0,0 +1,172 @@ +"""X-ray figure builder and annotation helpers.""" +import base64 +import io +import pathlib + +import numpy as np +import plotly.graph_objects as go +from PIL import Image, ImageEnhance, ImageOps + +XRAY_DIR = pathlib.Path(__file__).parent.parent / "assets" / "xrays" + +# Approximate bounding boxes (in 512×512 space) for each finding type +FINDING_AI_BOXES = { + "Cardiomegaly": {"x0": 155, "y0": 192, "x1": 345, "y1": 368, "color": "#f59e0b"}, + "Pleural Effusion":{"x0": 308, "y0": 295, "x1": 460, "y1": 425, "color": "#3b82f6"}, + "Pneumothorax": {"x0": 18, "y0": 40, "x1": 178, "y1": 260, "color": "#ef4444"}, + "Nodule": {"x0": 345, "y0": 135, "x1": 400, "y1": 195, "color": "#8b5cf6"}, + "Mass": {"x0": 315, "y0": 155, "x1": 430, "y1": 285, "color": "#8b5cf6"}, + "Atelectasis": {"x0": 155, "y0": 295, "x1": 380, "y1": 340, "color": "#f97316"}, + "Pneumonia": {"x0": 310, "y0": 258, "x1": 460, "y1": 360, "color": "#eab308"}, + "Consolidation": {"x0": 300, "y0": 250, "x1": 465, "y1": 370, "color": "#eab308"}, + "Infiltration": {"x0": 145, "y0": 230, "x1": 310, "y1": 340, "color": "#eab308"}, + "Cardiomegaly": {"x0": 155, "y0": 192, "x1": 345, "y1": 368, "color": "#f59e0b"}, +} + +IMG_W = IMG_H = 512 + +# Severity → annotation colour (Low=green, Medium=amber, High=red) +# Darkened one step for legibility on the light cream theme. +SEVERITY_COLORS = {"Low": "#16a34a", "Medium": "#d97706", "High": "#dc2626"} + + +def severity_color(severity: str) -> str: + """Hex colour for a severity level, defaulting to Medium amber.""" + return SEVERITY_COLORS.get(severity or "Medium", SEVERITY_COLORS["Medium"]) + + +def newshape_for(severity: str) -> dict: + """Plotly `newshape` style for the next-drawn shape, keyed by severity. + + High findings draw with a thicker line so urgency reads at a glance. + """ + color = severity_color(severity) + width = 3 if severity == "High" else 2 + return { + "line": {"color": color, "width": width}, + "fillcolor": f"rgba({_hex_to_rgb(color)},0.08)", + } + + +def load_xray_b64(image_path: pathlib.Path, + window: float = 255, + level: float = 128, + invert: bool = False) -> str: + """Load grayscale X-ray PNG, apply window/level, return data-URI.""" + try: + img = Image.open(image_path).convert("L").resize((IMG_W, IMG_H), Image.LANCZOS) + except Exception: + img = Image.new("L", (IMG_W, IMG_H), 60) + + arr = np.array(img, dtype=np.float32) + lo = max(0.0, level - window / 2) + hi = min(255.0, level + window / 2) + if hi > lo: + arr = (arr - lo) / (hi - lo) * 255.0 + arr = np.clip(arr, 0, 255).astype(np.uint8) + img = Image.fromarray(arr, mode="L") + + if invert: + img = ImageOps.invert(img) + + buf = io.BytesIO() + img.save(buf, format="PNG") + b64 = base64.b64encode(buf.getvalue()).decode() + return f"data:image/png;base64,{b64}" + + +def create_xray_figure(img_b64: str, shapes: list = None) -> go.Figure: + """Build a Plotly figure that shows an X-ray with drawing tools.""" + fig = go.Figure() + + fig.add_layout_image( + source=img_b64, + xref="x", yref="y", + x=0, y=IMG_H, + xanchor="left", yanchor="top", + sizex=IMG_W, sizey=IMG_H, + sizing="stretch", + layer="below", + ) + + fig.update_layout( + xaxis=dict(range=[0, IMG_W], showgrid=False, zeroline=False, + showticklabels=False, fixedrange=False), + yaxis=dict(range=[0, IMG_H], showgrid=False, zeroline=False, + showticklabels=False, scaleanchor="x", fixedrange=False), + plot_bgcolor="#e7e9ec", + paper_bgcolor="#eef0f2", + margin=dict(l=0, r=0, t=0, b=0), + dragmode="drawrect", + newshape=dict( + line={"color": "#1e3a8a", "width": 2}, + fillcolor="rgba(30,58,138,0.08)", + ), + modebar=dict( + bgcolor="#eef0f2", + color="#6b7280", + activecolor="#1e3a8a", + ), + ) + + if shapes: + fig.layout.shapes = [_make_shape(s) for s in shapes] + + return fig + + +def _make_shape(s: dict) -> dict: + """Convert stored annotation dict to Plotly layout shape dict.""" + line = s.get("line") if isinstance(s.get("line"), dict) else {} + color = line.get("color", "#1e3a8a") + width = line.get("width", 2) + return { + "type": s.get("type", "rect"), + "x0": s.get("x0", 0), + "y0": s.get("y0", 0), + "x1": s.get("x1", 10), + "y1": s.get("y1", 10), + "line": {"color": color, "width": width}, + "fillcolor": f"rgba({_hex_to_rgb(color)},0.09)", + } + + +def _hex_to_rgb(hex_color: str) -> str: + h = hex_color.lstrip("#") + if len(h) == 6: + r, g, b = int(h[0:2],16), int(h[2:4],16), int(h[4:6],16) + return f"{r},{g},{b}" + return "30,58,138" + + +def get_ai_shapes(finding_labels_str: str) -> list: + """Return a list of stored annotation dicts from finding-label string.""" + shapes = [] + for f in finding_labels_str.split("|"): + f = f.strip() + box = FINDING_AI_BOXES.get(f) + if box: + shapes.append({ + "type": "rect", + "x0": box["x0"], "y0": IMG_H - box["y1"], + "x1": box["x1"], "y1": IMG_H - box["y0"], + "line": {"color": box["color"], "width": 2}, + "fillcolor": "rgba(0,0,0,0)", + "_label": f, + "_severity": "Medium", + "_note": "AI suggested", + }) + return shapes + + +def annotation_to_finding_dict(ann: dict) -> dict: + """Convert stored annotation to finding dict for PDF export.""" + x0, y0 = ann.get("x0", 0), ann.get("y0", 0) + x1, y1 = ann.get("x1", 0), ann.get("y1", 0) + return { + "label": ann.get("_label", "Unspecified"), + "location": f"({int(x0)},{int(y0)})→({int(x1)},{int(y1)})", + "shape_type": ann.get("type", "rect"), + "severity": ann.get("_severity", "—"), + "note": ann.get("_note", ""), + } diff --git a/medical-imaging-demo/components/kpi_cards.py b/medical-imaging-demo/components/kpi_cards.py new file mode 100644 index 0000000..57ef2a5 --- /dev/null +++ b/medical-imaging-demo/components/kpi_cards.py @@ -0,0 +1,61 @@ +import dash_mantine_components as dmc +from dash_iconify import DashIconify + + +def create_kpi_card(id_prefix, title, value, trend=None, + trend_positive=True, subtitle=None, icon=None, + alert_color=None): + """Clinical KPI card, optionally coloured for alert state.""" + trend_color = "teal" if trend_positive else "red" + border_color = {"red": "#ef4444", "yellow": "#f59e0b", "green": "#22c55e"}.get(alert_color) + style = {"minWidth": "200px"} + if border_color: + style["borderLeft"] = f"4px solid {border_color}" + + return dmc.Paper( + dmc.Stack([ + dmc.Group([ + dmc.Text(title, size="sm", c="dimmed", fw=500, id=f"{id_prefix}-title"), + DashIconify(icon=icon, width=20, color="gray") if icon else None, + ], justify="space-between"), + dmc.Group([ + dmc.Text(value, size="xl", fw=700, id=f"{id_prefix}-value"), + dmc.Text( + trend or "", + size="sm", + c=trend_color, + fw=500, + id=f"{id_prefix}-trend", + style={"display": "block" if trend else "none"}, + ), + ], justify="space-between", mt="xs"), + dmc.Text(subtitle, size="xs", c="dimmed", mt=4, + id=f"{id_prefix}-subtitle") if subtitle else None, + ], gap="xs"), + p="md", + radius="md", + withBorder=True, + style=style, + ) + + +def create_stat_card(label, value, description=None, value_color=None): + return dmc.Paper( + dmc.Stack([ + dmc.Text(label, size="xs", c="dimmed", tt="uppercase", fw=600), + dmc.Text(value, size="lg", fw=600, c=value_color or "default"), + dmc.Text(description, size="xs", c="dimmed") if description else None, + ], gap=4), + p="sm", + radius="sm", + withBorder=True, + ) + + +def create_risk_row(id_prefix, label, value, progress_value, color): + return dmc.Group([ + dmc.Text(label, size="sm", w=120), + dmc.Progress(value=progress_value, color=color, size="lg", + style={"flex": 1}, id=f"{id_prefix}-bar"), + dmc.Text(value, size="sm", fw=500, w=55, id=f"{id_prefix}-value"), + ], gap="sm") diff --git a/medical-imaging-demo/components/tables.py b/medical-imaging-demo/components/tables.py new file mode 100644 index 0000000..311f44f --- /dev/null +++ b/medical-imaging-demo/components/tables.py @@ -0,0 +1,110 @@ +import dash_mantine_components as dmc +import pandas as pd + + +def create_data_table(df: pd.DataFrame, title: str = None, + striped: bool = True, highlight_flags: bool = False): + """Generic Mantine table from a DataFrame.""" + cols = df.columns.tolist() + header = dmc.TableThead( + dmc.TableTr([dmc.TableTh(c, style={"fontWeight": 600}) for c in cols]) + ) + rows = [] + for _, row in df.iterrows(): + cells = [] + for col, val in zip(cols, row): + style = {} + val_str = str(val) if not pd.isna(val) else "—" + if highlight_flags and col == "flag": + color = {"H": "#ef4444", "L": "#3b82f6"}.get(val_str, "#22c55e") + style["color"] = color + style["fontWeight"] = 600 + cells.append(dmc.TableTd(val_str, style=style)) + rows.append(dmc.TableTr(cells)) + body = dmc.TableTbody(rows) + table = dmc.Table( + [header, body], + striped=striped, + highlightOnHover=True, + withTableBorder=True, + withColumnBorders=True, + ) + if title: + return dmc.Stack([ + dmc.Text(title, fw=600, size="lg"), + dmc.ScrollArea(table, type="auto"), + ], gap="sm") + return dmc.ScrollArea(table, type="auto") + + +def create_findings_table(annotations: list): + """Build a findings table from a list of annotation dicts.""" + if not annotations: + return dmc.Text("No annotations yet. Draw on the X-ray to add findings.", + size="sm", c="dimmed", ta="center", py="md") + + headers = ["#", "Finding", "Severity", "Location (px)", "Size (px²)", "Note"] + header = dmc.TableThead( + dmc.TableTr([dmc.TableTh(h, style={"fontWeight": 600, "fontSize": "12px"}) + for h in headers]) + ) + + sev_color = {"High": "#ef4444", "Medium": "#f59e0b", "Low": "#22c55e"} + rows = [] + for i, ann in enumerate(annotations, 1): + x0 = ann.get("x0", 0) + y0 = ann.get("y0", 0) + x1 = ann.get("x1", 0) + y1 = ann.get("y1", 0) + area = abs((x1 - x0) * (y1 - y0)) + sev = ann.get("_severity", "—") + rows.append(dmc.TableTr([ + dmc.TableTd(str(i), style={"fontSize": "12px"}), + dmc.TableTd(ann.get("_label", "Unspecified"), + style={"fontWeight": 500, "fontSize": "12px"}), + dmc.TableTd( + dmc.Badge(sev, color={"High":"red","Medium":"yellow","Low":"teal"}.get(sev,"gray"), + size="sm"), + ), + dmc.TableTd(f"({int(x0)},{int(y0)})→({int(x1)},{int(y1)})", + style={"fontFamily": "monospace", "fontSize": "11px"}), + dmc.TableTd(f"{int(area):,}", style={"fontSize": "12px"}), + dmc.TableTd(ann.get("_note", ""), style={"fontSize": "12px"}), + ])) + + return dmc.ScrollArea( + dmc.Table([header, dmc.TableTbody(rows)], + striped=True, highlightOnHover=True, + withTableBorder=True, withColumnBorders=False, + verticalSpacing="xs"), + type="auto", + ) + + +def create_patient_table(df: pd.DataFrame, cols=None): + """Patient roster table with coloured risk badges.""" + if cols is None: + cols = ["patient_id", "name", "age", "gender", "diagnosis", "ward", "risk_score"] + df = df[cols].copy() + header = dmc.TableThead( + dmc.TableTr([dmc.TableTh(c.replace("_"," ").title(), + style={"fontWeight": 600, "fontSize": "12px"}) + for c in cols]) + ) + rows = [] + for _, row in df.iterrows(): + cells = [] + for col in cols: + val = row[col] + if col == "risk_score": + color = "red" if val > 70 else "yellow" if val > 40 else "teal" + cells.append(dmc.TableTd( + dmc.Badge(f"{val:.0f}", color=color, size="sm"))) + else: + cells.append(dmc.TableTd(str(val), style={"fontSize": "12px"})) + rows.append(dmc.TableTr(cells)) + return dmc.ScrollArea( + dmc.Table([header, dmc.TableTbody(rows)], + striped=True, highlightOnHover=True, withTableBorder=True), + type="auto", h=280, + ) diff --git a/medical-imaging-demo/data/admissions.csv b/medical-imaging-demo/data/admissions.csv new file mode 100644 index 0000000..bfaba6c --- /dev/null +++ b/medical-imaging-demo/data/admissions.csv @@ -0,0 +1,211 @@ +date,department,admissions +2026-05-17,Cardiology,6 +2026-05-17,Pulmonology,5 +2026-05-17,Neurology,6 +2026-05-17,General Medicine,16 +2026-05-17,Surgery,8 +2026-05-17,Nephrology,4 +2026-05-17,Oncology,2 +2026-05-18,Cardiology,11 +2026-05-18,Pulmonology,6 +2026-05-18,Neurology,7 +2026-05-18,General Medicine,20 +2026-05-18,Surgery,11 +2026-05-18,Nephrology,3 +2026-05-18,Oncology,2 +2026-05-19,Cardiology,12 +2026-05-19,Pulmonology,3 +2026-05-19,Neurology,0 +2026-05-19,General Medicine,22 +2026-05-19,Surgery,8 +2026-05-19,Nephrology,5 +2026-05-19,Oncology,4 +2026-05-20,Cardiology,14 +2026-05-20,Pulmonology,7 +2026-05-20,Neurology,5 +2026-05-20,General Medicine,18 +2026-05-20,Surgery,11 +2026-05-20,Nephrology,6 +2026-05-20,Oncology,6 +2026-05-21,Cardiology,9 +2026-05-21,Pulmonology,12 +2026-05-21,Neurology,5 +2026-05-21,General Medicine,19 +2026-05-21,Surgery,10 +2026-05-21,Nephrology,3 +2026-05-21,Oncology,3 +2026-05-22,Cardiology,14 +2026-05-22,Pulmonology,10 +2026-05-22,Neurology,6 +2026-05-22,General Medicine,22 +2026-05-22,Surgery,10 +2026-05-22,Nephrology,4 +2026-05-22,Oncology,2 +2026-05-23,Cardiology,7 +2026-05-23,Pulmonology,4 +2026-05-23,Neurology,7 +2026-05-23,General Medicine,16 +2026-05-23,Surgery,10 +2026-05-23,Nephrology,4 +2026-05-23,Oncology,1 +2026-05-24,Cardiology,10 +2026-05-24,Pulmonology,8 +2026-05-24,Neurology,5 +2026-05-24,General Medicine,12 +2026-05-24,Surgery,4 +2026-05-24,Nephrology,5 +2026-05-24,Oncology,2 +2026-05-25,Cardiology,12 +2026-05-25,Pulmonology,6 +2026-05-25,Neurology,6 +2026-05-25,General Medicine,17 +2026-05-25,Surgery,10 +2026-05-25,Nephrology,6 +2026-05-25,Oncology,5 +2026-05-26,Cardiology,9 +2026-05-26,Pulmonology,8 +2026-05-26,Neurology,4 +2026-05-26,General Medicine,23 +2026-05-26,Surgery,11 +2026-05-26,Nephrology,5 +2026-05-26,Oncology,8 +2026-05-27,Cardiology,10 +2026-05-27,Pulmonology,7 +2026-05-27,Neurology,7 +2026-05-27,General Medicine,24 +2026-05-27,Surgery,12 +2026-05-27,Nephrology,6 +2026-05-27,Oncology,2 +2026-05-28,Cardiology,10 +2026-05-28,Pulmonology,9 +2026-05-28,Neurology,3 +2026-05-28,General Medicine,20 +2026-05-28,Surgery,11 +2026-05-28,Nephrology,2 +2026-05-28,Oncology,5 +2026-05-29,Cardiology,13 +2026-05-29,Pulmonology,7 +2026-05-29,Neurology,5 +2026-05-29,General Medicine,16 +2026-05-29,Surgery,9 +2026-05-29,Nephrology,1 +2026-05-29,Oncology,2 +2026-05-30,Cardiology,8 +2026-05-30,Pulmonology,3 +2026-05-30,Neurology,2 +2026-05-30,General Medicine,12 +2026-05-30,Surgery,9 +2026-05-30,Nephrology,3 +2026-05-30,Oncology,5 +2026-05-31,Cardiology,8 +2026-05-31,Pulmonology,5 +2026-05-31,Neurology,3 +2026-05-31,General Medicine,9 +2026-05-31,Surgery,8 +2026-05-31,Nephrology,3 +2026-05-31,Oncology,3 +2026-06-01,Cardiology,7 +2026-06-01,Pulmonology,7 +2026-06-01,Neurology,5 +2026-06-01,General Medicine,20 +2026-06-01,Surgery,9 +2026-06-01,Nephrology,4 +2026-06-01,Oncology,5 +2026-06-02,Cardiology,14 +2026-06-02,Pulmonology,7 +2026-06-02,Neurology,3 +2026-06-02,General Medicine,17 +2026-06-02,Surgery,10 +2026-06-02,Nephrology,7 +2026-06-02,Oncology,0 +2026-06-03,Cardiology,9 +2026-06-03,Pulmonology,7 +2026-06-03,Neurology,1 +2026-06-03,General Medicine,19 +2026-06-03,Surgery,10 +2026-06-03,Nephrology,5 +2026-06-03,Oncology,3 +2026-06-04,Cardiology,11 +2026-06-04,Pulmonology,5 +2026-06-04,Neurology,2 +2026-06-04,General Medicine,19 +2026-06-04,Surgery,10 +2026-06-04,Nephrology,5 +2026-06-04,Oncology,6 +2026-06-05,Cardiology,12 +2026-06-05,Pulmonology,9 +2026-06-05,Neurology,6 +2026-06-05,General Medicine,23 +2026-06-05,Surgery,9 +2026-06-05,Nephrology,6 +2026-06-05,Oncology,4 +2026-06-06,Cardiology,10 +2026-06-06,Pulmonology,6 +2026-06-06,Neurology,4 +2026-06-06,General Medicine,15 +2026-06-06,Surgery,8 +2026-06-06,Nephrology,5 +2026-06-06,Oncology,5 +2026-06-07,Cardiology,9 +2026-06-07,Pulmonology,3 +2026-06-07,Neurology,4 +2026-06-07,General Medicine,14 +2026-06-07,Surgery,6 +2026-06-07,Nephrology,3 +2026-06-07,Oncology,1 +2026-06-08,Cardiology,7 +2026-06-08,Pulmonology,10 +2026-06-08,Neurology,5 +2026-06-08,General Medicine,16 +2026-06-08,Surgery,10 +2026-06-08,Nephrology,6 +2026-06-08,Oncology,3 +2026-06-09,Cardiology,9 +2026-06-09,Pulmonology,5 +2026-06-09,Neurology,10 +2026-06-09,General Medicine,17 +2026-06-09,Surgery,6 +2026-06-09,Nephrology,4 +2026-06-09,Oncology,5 +2026-06-10,Cardiology,15 +2026-06-10,Pulmonology,7 +2026-06-10,Neurology,5 +2026-06-10,General Medicine,17 +2026-06-10,Surgery,12 +2026-06-10,Nephrology,4 +2026-06-10,Oncology,3 +2026-06-11,Cardiology,12 +2026-06-11,Pulmonology,8 +2026-06-11,Neurology,5 +2026-06-11,General Medicine,22 +2026-06-11,Surgery,6 +2026-06-11,Nephrology,5 +2026-06-11,Oncology,4 +2026-06-12,Cardiology,11 +2026-06-12,Pulmonology,9 +2026-06-12,Neurology,7 +2026-06-12,General Medicine,22 +2026-06-12,Surgery,9 +2026-06-12,Nephrology,4 +2026-06-12,Oncology,5 +2026-06-13,Cardiology,8 +2026-06-13,Pulmonology,2 +2026-06-13,Neurology,6 +2026-06-13,General Medicine,11 +2026-06-13,Surgery,8 +2026-06-13,Nephrology,8 +2026-06-13,Oncology,4 +2026-06-14,Cardiology,7 +2026-06-14,Pulmonology,5 +2026-06-14,Neurology,5 +2026-06-14,General Medicine,14 +2026-06-14,Surgery,9 +2026-06-14,Nephrology,6 +2026-06-14,Oncology,5 +2026-06-15,Cardiology,9 +2026-06-15,Pulmonology,8 +2026-06-15,Neurology,6 +2026-06-15,General Medicine,23 +2026-06-15,Surgery,10 +2026-06-15,Nephrology,3 +2026-06-15,Oncology,4 diff --git a/medical-imaging-demo/data/cohort.csv b/medical-imaging-demo/data/cohort.csv new file mode 100644 index 0000000..51b12e7 --- /dev/null +++ b/medical-imaging-demo/data/cohort.csv @@ -0,0 +1,201 @@ +patient_id,age,gender,bmi,systolic_bp,ldl,hba1c,egfr,diagnosis,risk_level +CO2001,46,F,25.9,167.0,161.8,8.3,87.7,CAD,High +CO2002,46,M,24.0,146.0,114.1,6.9,67.9,CKD,Low +CO2003,32,M,20.3,189.0,112.1,8.3,55.8,Asthma,High +CO2004,52,M,30.2,167.0,81.4,6.0,73.5,CKD,Medium +CO2005,76,F,33.3,105.0,56.4,6.8,72.2,Heart Failure,Low +CO2006,26,M,29.4,115.0,141.2,6.1,65.8,Asthma,Low +CO2007,59,M,16.0,149.0,122.4,10.4,72.2,Type 2 Diabetes,Medium +CO2008,50,F,31.2,133.0,71.1,6.3,21.1,CKD,Medium +CO2009,32,M,29.7,142.0,89.7,5.6,42.6,CKD,Medium +CO2010,49,M,32.0,93.0,54.6,5.9,53.5,Heart Failure,Low +CO2011,68,M,31.8,151.0,154.2,9.2,72.9,CKD,Medium +CO2012,57,F,26.9,131.0,119.0,8.3,78.6,Type 2 Diabetes,Medium +CO2013,55,F,16.0,134.0,124.1,7.3,43.1,Type 2 Diabetes,Medium +CO2014,50,M,29.5,115.0,166.2,4.5,85.6,Heart Failure,Low +CO2015,84,F,20.7,114.0,148.7,6.1,48.0,Hypertension,Low +CO2016,23,M,24.2,132.0,40.0,7.1,5.0,Obesity,Medium +CO2017,24,M,34.5,201.0,81.8,7.6,78.5,Hyperlipidemia,Medium +CO2018,36,M,16.0,110.0,132.6,7.1,61.4,Atrial Fibrillation,Low +CO2019,76,F,24.4,120.0,113.0,7.8,77.0,Hyperlipidemia,Low +CO2020,59,F,20.8,120.0,139.9,5.8,67.6,Hyperlipidemia,Low +CO2021,25,F,33.9,108.0,192.7,8.7,15.6,CAD,High +CO2022,52,F,28.6,126.0,162.8,5.0,69.6,Hyperlipidemia,Low +CO2023,84,M,42.4,125.0,150.1,4.5,25.2,Type 2 Diabetes,Medium +CO2024,82,M,25.7,110.0,95.4,6.4,86.7,Hyperlipidemia,Low +CO2025,22,F,25.6,124.0,102.0,7.3,38.6,Asthma,Medium +CO2026,46,M,26.2,160.0,147.0,7.0,31.8,Atrial Fibrillation,Medium +CO2027,48,F,30.0,103.0,171.0,7.6,62.8,Type 2 Diabetes,Low +CO2028,37,F,29.0,133.0,50.5,7.4,98.1,CKD,Low +CO2029,36,F,34.9,145.0,72.1,7.3,85.4,COPD,Low +CO2030,63,F,30.2,182.0,144.1,8.0,102.9,Hyperlipidemia,Medium +CO2031,81,F,33.4,124.0,70.2,6.6,42.8,COPD,Medium +CO2032,30,M,20.0,171.0,126.7,7.5,65.5,Heart Failure,Medium +CO2033,80,M,28.1,122.0,119.7,9.9,49.3,Heart Failure,Medium +CO2034,34,F,33.2,136.0,112.0,8.8,51.7,CAD,Medium +CO2035,61,F,25.5,144.0,81.3,8.4,38.1,Atrial Fibrillation,High +CO2036,51,M,26.7,117.0,143.2,5.3,111.1,Asthma,Low +CO2037,74,M,27.6,107.0,93.4,5.2,98.2,CKD,Low +CO2038,53,F,26.3,124.0,107.1,6.0,70.7,CKD,Low +CO2039,26,F,28.0,108.0,139.5,6.9,50.2,CKD,Low +CO2040,50,F,20.5,128.0,103.8,6.0,84.3,Asthma,Low +CO2041,59,M,28.6,138.0,70.8,8.3,51.1,Heart Failure,Medium +CO2042,20,F,17.1,135.0,95.8,7.6,45.3,Atrial Fibrillation,Low +CO2043,35,M,24.5,166.0,133.0,4.5,33.4,Atrial Fibrillation,High +CO2044,52,F,25.7,147.0,91.0,6.3,60.0,Type 2 Diabetes,Low +CO2045,62,M,33.4,106.0,124.9,6.5,18.9,Atrial Fibrillation,Medium +CO2046,48,F,39.7,138.0,156.9,6.6,65.7,CAD,Low +CO2047,45,F,34.5,161.0,52.5,6.1,127.1,Obesity,Medium +CO2048,53,F,30.3,148.0,153.1,9.5,59.4,Obesity,Medium +CO2049,71,M,19.8,145.0,60.7,4.5,73.6,COPD,Low +CO2050,50,M,28.6,131.0,118.0,6.8,70.3,Hypertension,Low +CO2051,33,F,26.5,92.0,141.4,7.6,120.3,Hypertension,Low +CO2052,76,F,23.4,80.0,118.8,5.5,47.6,Heart Failure,Low +CO2053,55,M,25.9,91.0,126.8,4.5,60.5,CKD,Low +CO2054,60,M,24.8,115.0,169.0,6.5,47.9,Obesity,Low +CO2055,67,M,31.3,204.0,113.6,8.6,94.2,Type 2 Diabetes,High +CO2056,80,F,23.5,126.0,161.9,7.0,31.9,CKD,Medium +CO2057,36,F,21.1,132.0,58.8,4.6,96.2,Hypertension,Low +CO2058,72,F,20.8,153.0,83.0,4.5,67.9,CKD,Low +CO2059,58,M,26.9,124.0,138.2,8.8,60.8,Asthma,Medium +CO2060,50,F,16.0,140.0,40.0,7.1,47.9,COPD,Low +CO2061,36,M,29.4,135.0,64.8,8.0,75.3,CAD,Medium +CO2062,50,M,28.2,107.0,87.7,6.8,100.1,CKD,Low +CO2063,54,F,30.6,104.0,132.6,6.9,111.6,Hyperlipidemia,Low +CO2064,23,M,34.1,120.0,96.5,6.8,53.1,Atrial Fibrillation,Low +CO2065,42,F,38.8,155.0,95.0,4.5,67.0,Hyperlipidemia,Low +CO2066,52,M,22.1,165.0,134.2,7.1,71.6,Obesity,Medium +CO2067,28,M,19.9,149.0,139.3,6.7,64.6,CAD,Low +CO2068,74,F,28.2,134.0,134.2,7.4,65.1,Type 2 Diabetes,Low +CO2069,65,M,28.3,99.0,92.8,6.9,48.9,Type 2 Diabetes,Low +CO2070,60,F,29.3,133.0,143.4,8.2,86.0,Atrial Fibrillation,Medium +CO2071,34,M,16.0,156.0,108.7,5.0,79.3,Asthma,Low +CO2072,55,M,27.3,80.0,144.6,8.2,77.6,Type 2 Diabetes,Medium +CO2073,32,F,21.0,123.0,119.5,7.6,79.8,Hyperlipidemia,Low +CO2074,58,F,32.7,99.0,105.7,7.7,60.5,CAD,Low +CO2075,28,F,26.8,94.0,74.9,6.0,55.5,COPD,Low +CO2076,46,F,26.6,121.0,106.2,6.1,68.5,Hypertension,Low +CO2077,83,F,22.6,152.0,45.0,6.5,70.4,CAD,Low +CO2078,23,M,30.4,125.0,84.4,8.1,89.2,Obesity,Medium +CO2079,77,F,31.9,119.0,157.6,7.4,69.5,COPD,Low +CO2080,71,M,21.7,146.0,95.9,7.4,114.3,CKD,Low +CO2081,36,M,24.9,139.0,164.4,8.8,69.1,Obesity,Medium +CO2082,45,M,17.9,138.0,61.6,5.2,75.9,Type 2 Diabetes,Low +CO2083,55,M,34.2,127.0,82.3,6.7,93.7,Heart Failure,Low +CO2084,48,F,27.0,150.0,89.7,8.0,70.6,Type 2 Diabetes,Low +CO2085,70,M,31.6,130.0,130.6,7.9,81.0,Obesity,Low +CO2086,74,F,22.1,147.0,98.0,6.7,57.5,Hyperlipidemia,Low +CO2087,30,M,23.1,132.0,129.1,5.6,38.1,Hypertension,Medium +CO2088,50,F,16.0,144.0,103.5,6.5,59.8,Hyperlipidemia,Low +CO2089,38,F,29.4,148.0,152.4,7.6,33.5,Heart Failure,Medium +CO2090,75,M,28.1,109.0,97.4,8.1,81.1,Heart Failure,Medium +CO2091,26,F,26.1,90.0,181.4,6.0,57.5,Asthma,Low +CO2092,40,F,25.5,135.0,87.3,6.2,64.3,CKD,Low +CO2093,84,F,30.4,133.0,79.0,8.1,76.8,COPD,Medium +CO2094,75,F,27.8,162.0,103.6,4.9,57.2,Type 2 Diabetes,Medium +CO2095,42,M,36.2,123.0,40.0,5.4,31.0,Heart Failure,Medium +CO2096,31,M,33.2,150.0,181.9,4.9,22.3,COPD,Medium +CO2097,76,F,38.3,143.0,161.8,10.8,65.1,Hypertension,High +CO2098,45,M,24.6,176.0,187.4,6.8,118.8,Asthma,Medium +CO2099,54,M,36.9,80.0,113.9,6.4,90.9,Type 2 Diabetes,Low +CO2100,74,F,25.4,140.0,109.2,4.5,69.2,CKD,Low +CO2101,74,F,33.5,139.0,150.7,4.8,83.2,Type 2 Diabetes,Low +CO2102,44,F,24.3,99.0,169.7,5.3,80.7,COPD,Low +CO2103,64,F,29.5,117.0,162.1,6.2,23.4,Hyperlipidemia,Medium +CO2104,62,F,30.9,102.0,99.3,9.2,110.2,Obesity,Medium +CO2105,50,F,38.4,132.0,149.1,4.5,29.0,Hypertension,Medium +CO2106,51,F,23.8,117.0,142.6,5.3,110.0,CKD,Low +CO2107,43,M,35.4,154.0,105.0,5.6,88.3,COPD,Low +CO2108,22,M,31.5,178.0,83.8,8.0,70.3,CKD,High +CO2109,53,F,34.3,114.0,68.6,6.1,95.8,Hypertension,Low +CO2110,42,F,38.9,159.0,106.7,8.2,40.0,COPD,High +CO2111,42,F,31.1,122.0,152.4,8.5,49.0,Obesity,Medium +CO2112,75,F,25.0,148.0,149.6,5.7,31.2,CKD,Medium +CO2113,57,F,31.5,108.0,87.9,8.1,79.7,Hyperlipidemia,Medium +CO2114,56,F,29.8,190.0,117.5,6.9,88.5,Asthma,Medium +CO2115,21,M,28.2,92.0,148.9,5.4,69.7,Heart Failure,Low +CO2116,26,M,30.1,157.0,79.2,5.4,92.5,CKD,Low +CO2117,68,M,25.3,143.0,141.9,8.2,89.8,Hyperlipidemia,Medium +CO2118,40,M,35.1,124.0,139.9,7.7,90.9,Hyperlipidemia,Low +CO2119,56,M,28.2,127.0,146.8,5.1,44.0,CKD,Medium +CO2120,63,F,37.1,147.0,67.8,5.9,100.7,Hypertension,Low +CO2121,79,M,28.9,122.0,79.9,7.3,80.0,Type 2 Diabetes,Low +CO2122,25,F,28.1,184.0,146.3,6.4,46.8,Heart Failure,Medium +CO2123,28,M,22.2,108.0,69.0,8.4,64.0,Hypertension,Medium +CO2124,64,F,27.5,130.0,155.2,5.9,98.0,Hypertension,Low +CO2125,75,M,16.0,120.0,49.6,4.5,98.6,Hypertension,Low +CO2126,38,F,17.2,136.0,65.6,5.4,85.8,Hyperlipidemia,Low +CO2127,74,M,29.0,124.0,161.7,5.1,37.1,Heart Failure,Medium +CO2128,62,M,27.2,130.0,82.4,6.4,103.5,Atrial Fibrillation,Low +CO2129,37,F,25.6,178.0,55.9,6.1,72.5,Obesity,Medium +CO2130,53,M,27.1,141.0,85.6,5.9,93.3,CKD,Low +CO2131,22,F,30.5,145.0,99.0,6.7,54.7,Heart Failure,Low +CO2132,38,F,36.4,146.0,133.1,6.5,51.7,Heart Failure,Low +CO2133,35,F,38.1,161.0,68.8,8.7,34.4,Heart Failure,High +CO2134,43,F,25.5,137.0,93.5,4.5,24.6,Hypertension,Medium +CO2135,80,M,16.6,143.0,89.2,4.5,101.8,Obesity,Low +CO2136,69,F,23.0,80.0,128.0,8.5,27.8,Hypertension,High +CO2137,55,F,33.0,85.0,117.4,7.8,50.3,Heart Failure,Low +CO2138,43,F,24.3,136.0,116.1,4.9,70.0,COPD,Low +CO2139,29,F,29.4,125.0,171.4,8.0,58.9,Hyperlipidemia,Low +CO2140,72,F,25.9,118.0,113.3,8.4,59.8,Type 2 Diabetes,Medium +CO2141,47,M,22.1,143.0,97.7,8.2,114.7,COPD,Medium +CO2142,58,F,24.5,106.0,113.0,8.6,55.3,CKD,Medium +CO2143,63,M,33.4,144.0,139.9,7.4,45.9,Hyperlipidemia,Low +CO2144,63,F,29.4,132.0,174.8,4.9,59.1,CKD,Low +CO2145,28,F,31.2,155.0,176.9,4.5,46.9,Hyperlipidemia,Low +CO2146,62,M,21.1,139.0,115.4,7.1,62.3,Asthma,Low +CO2147,74,F,29.3,94.0,114.0,4.5,113.2,Hypertension,Low +CO2148,40,F,24.7,135.0,142.9,8.9,69.6,Atrial Fibrillation,Medium +CO2149,62,F,26.0,150.0,158.3,9.5,42.0,Hypertension,High +CO2150,69,M,36.5,120.0,178.2,5.4,105.2,CAD,Medium +CO2151,78,F,29.2,145.0,52.6,7.1,39.6,Type 2 Diabetes,Medium +CO2152,32,M,28.2,126.0,120.6,7.7,85.4,Heart Failure,Low +CO2153,33,F,34.6,115.0,71.4,6.4,29.0,Atrial Fibrillation,Medium +CO2154,44,F,33.9,122.0,226.6,8.8,67.2,Hyperlipidemia,Medium +CO2155,24,F,34.8,173.0,102.5,6.5,88.1,Heart Failure,Medium +CO2156,40,F,37.4,112.0,132.6,8.5,68.3,COPD,Medium +CO2157,36,M,16.0,144.0,49.9,5.0,46.1,CAD,Low +CO2158,82,F,34.2,130.0,175.7,8.2,58.8,Heart Failure,Medium +CO2159,42,M,27.5,125.0,139.8,5.9,75.7,Hyperlipidemia,Low +CO2160,46,M,22.0,110.0,134.5,4.5,63.4,Obesity,Low +CO2161,58,F,22.9,150.0,172.1,4.7,106.5,Hypertension,Low +CO2162,54,F,26.0,136.0,52.1,6.7,81.7,Atrial Fibrillation,Low +CO2163,57,M,23.5,179.0,87.9,5.7,62.8,Type 2 Diabetes,Medium +CO2164,23,M,27.4,126.0,61.4,5.8,79.3,Heart Failure,Low +CO2165,31,M,18.9,92.0,127.8,8.8,130.0,Obesity,Medium +CO2166,84,M,25.0,110.0,149.5,8.2,88.7,COPD,Medium +CO2167,74,F,28.8,122.0,144.3,8.1,63.0,CAD,Medium +CO2168,50,M,33.6,132.0,53.1,7.4,86.2,Asthma,Low +CO2169,27,F,16.0,126.0,40.8,6.6,68.1,Heart Failure,Low +CO2170,49,F,23.2,147.0,115.1,7.4,68.2,Obesity,Low +CO2171,25,F,31.8,118.0,112.9,5.5,50.0,CKD,Low +CO2172,34,M,39.2,143.0,148.9,7.0,55.0,Obesity,Low +CO2173,82,F,21.5,91.0,163.0,6.7,45.5,COPD,Low +CO2174,21,M,30.8,154.0,124.3,5.5,114.5,Heart Failure,Low +CO2175,34,M,25.7,101.0,98.7,9.1,73.7,COPD,Medium +CO2176,62,F,23.9,145.0,135.3,8.9,97.6,Obesity,Medium +CO2177,44,F,22.3,136.0,138.4,4.5,88.5,Hypertension,Low +CO2178,32,M,27.9,106.0,40.0,6.4,63.4,Heart Failure,Low +CO2179,33,M,28.8,139.0,84.7,4.5,62.8,COPD,Low +CO2180,34,F,26.1,119.0,109.4,8.9,88.2,Type 2 Diabetes,Medium +CO2181,70,M,25.1,109.0,140.4,4.5,42.7,CKD,Medium +CO2182,53,M,25.0,132.0,100.9,7.9,72.6,Heart Failure,Low +CO2183,66,F,19.0,110.0,181.2,5.1,87.0,Heart Failure,Low +CO2184,75,F,27.3,146.0,107.0,7.7,103.4,Type 2 Diabetes,Low +CO2185,28,M,34.7,177.0,120.6,5.6,70.8,Asthma,Medium +CO2186,38,F,30.9,126.0,128.5,6.5,46.7,Obesity,Low +CO2187,82,F,21.4,153.0,115.1,7.2,63.4,Obesity,Low +CO2188,31,M,26.0,127.0,150.3,7.7,71.3,Hyperlipidemia,Low +CO2189,35,F,33.9,151.0,89.2,7.2,91.1,CAD,Low +CO2190,31,M,30.0,116.0,114.9,6.2,108.1,Heart Failure,Low +CO2191,37,M,33.6,112.0,105.7,10.2,54.5,Heart Failure,Medium +CO2192,53,M,23.3,80.0,154.7,4.8,70.3,Obesity,Low +CO2193,65,M,40.6,123.0,126.9,6.9,82.0,CKD,Low +CO2194,73,F,35.3,149.0,94.7,5.9,77.3,Hypertension,Low +CO2195,20,M,41.7,123.0,74.9,6.3,53.7,Heart Failure,Low +CO2196,55,M,28.1,145.0,106.8,7.7,64.2,Obesity,Low +CO2197,82,F,38.9,138.0,106.9,5.4,30.5,Asthma,Medium +CO2198,70,M,38.4,141.0,88.6,6.6,38.4,Obesity,Medium +CO2199,81,F,21.2,134.0,163.7,6.7,122.1,Hypertension,Low +CO2200,52,F,41.7,183.0,80.8,6.3,27.2,CKD,High diff --git a/medical-imaging-demo/data/labs.csv b/medical-imaging-demo/data/labs.csv new file mode 100644 index 0000000..c9a9491 --- /dev/null +++ b/medical-imaging-demo/data/labs.csv @@ -0,0 +1,201 @@ +patient_id,date,test,value,unit,reference_low,reference_high,flag +PT1001,2026-06-15,WBC,11.298,10³/µL,4.5,11.0,H +PT1001,2026-06-15,Hemoglobin,14.334,g/dL,12.0,17.5,N +PT1001,2026-06-15,Platelets,222.4,10³/µL,150.0,400.0,N +PT1001,2026-06-15,Sodium,140.412,mEq/L,136.0,145.0,N +PT1001,2026-06-15,Potassium,3.957,mEq/L,3.5,5.0,N +PT1001,2026-06-15,Creatinine,1.149,mg/dL,0.7,1.3,N +PT1001,2026-06-15,BUN,12.525,mg/dL,7.0,25.0,N +PT1001,2026-06-15,Glucose,96.633,mg/dL,70.0,100.0,N +PT1001,2026-06-15,Lactate,1.473,mmol/L,0.5,2.0,N +PT1001,2026-06-15,Troponin,0.028,ng/mL,0.0,0.04,N +PT1002,2026-06-15,WBC,9.094,10³/µL,4.5,11.0,N +PT1002,2026-06-15,Hemoglobin,16.156,g/dL,12.0,17.5,N +PT1002,2026-06-15,Platelets,251.797,10³/µL,150.0,400.0,N +PT1002,2026-06-15,Sodium,137.859,mEq/L,136.0,145.0,N +PT1002,2026-06-15,Potassium,4.036,mEq/L,3.5,5.0,N +PT1002,2026-06-15,Creatinine,1.167,mg/dL,0.7,1.3,N +PT1002,2026-06-15,BUN,6.461,mg/dL,7.0,25.0,L +PT1002,2026-06-15,Glucose,67.004,mg/dL,70.0,100.0,L +PT1002,2026-06-15,Lactate,1.351,mmol/L,0.5,2.0,N +PT1002,2026-06-15,Troponin,0.03,ng/mL,0.0,0.04,N +PT1003,2026-06-15,WBC,9.661,10³/µL,4.5,11.0,N +PT1003,2026-06-15,Hemoglobin,13.181,g/dL,12.0,17.5,N +PT1003,2026-06-15,Platelets,186.533,10³/µL,150.0,400.0,N +PT1003,2026-06-15,Sodium,138.647,mEq/L,136.0,145.0,N +PT1003,2026-06-15,Potassium,4.073,mEq/L,3.5,5.0,N +PT1003,2026-06-15,Creatinine,0.94,mg/dL,0.7,1.3,N +PT1003,2026-06-15,BUN,16.654,mg/dL,7.0,25.0,N +PT1003,2026-06-15,Glucose,97.651,mg/dL,70.0,100.0,N +PT1003,2026-06-15,Lactate,1.223,mmol/L,0.5,2.0,N +PT1003,2026-06-15,Troponin,0.031,ng/mL,0.0,0.04,N +PT1004,2026-06-15,WBC,9.027,10³/µL,4.5,11.0,N +PT1004,2026-06-15,Hemoglobin,13.578,g/dL,12.0,17.5,N +PT1004,2026-06-15,Platelets,323.232,10³/µL,150.0,400.0,N +PT1004,2026-06-15,Sodium,142.051,mEq/L,136.0,145.0,N +PT1004,2026-06-15,Potassium,4.25,mEq/L,3.5,5.0,N +PT1004,2026-06-15,Creatinine,1.031,mg/dL,0.7,1.3,N +PT1004,2026-06-15,BUN,15.688,mg/dL,7.0,25.0,N +PT1004,2026-06-15,Glucose,75.172,mg/dL,70.0,100.0,N +PT1004,2026-06-15,Lactate,2.315,mmol/L,0.5,2.0,H +PT1004,2026-06-15,Troponin,0.033,ng/mL,0.0,0.04,N +PT1005,2026-06-15,WBC,8.778,10³/µL,4.5,11.0,N +PT1005,2026-06-15,Hemoglobin,14.081,g/dL,12.0,17.5,N +PT1005,2026-06-15,Platelets,268.115,10³/µL,150.0,400.0,N +PT1005,2026-06-15,Sodium,137.337,mEq/L,136.0,145.0,N +PT1005,2026-06-15,Potassium,4.461,mEq/L,3.5,5.0,N +PT1005,2026-06-15,Creatinine,1.061,mg/dL,0.7,1.3,N +PT1005,2026-06-15,BUN,14.885,mg/dL,7.0,25.0,N +PT1005,2026-06-15,Glucose,85.269,mg/dL,70.0,100.0,N +PT1005,2026-06-15,Lactate,1.116,mmol/L,0.5,2.0,N +PT1005,2026-06-15,Troponin,0.014,ng/mL,0.0,0.04,N +PT1006,2026-06-15,WBC,6.236,10³/µL,4.5,11.0,N +PT1006,2026-06-15,Hemoglobin,13.066,g/dL,12.0,17.5,N +PT1006,2026-06-15,Platelets,222.357,10³/µL,150.0,400.0,N +PT1006,2026-06-15,Sodium,138.812,mEq/L,136.0,145.0,N +PT1006,2026-06-15,Potassium,4.74,mEq/L,3.5,5.0,N +PT1006,2026-06-15,Creatinine,0.889,mg/dL,0.7,1.3,N +PT1006,2026-06-15,BUN,5.016,mg/dL,7.0,25.0,L +PT1006,2026-06-15,Glucose,87.625,mg/dL,70.0,100.0,N +PT1006,2026-06-15,Lactate,1.531,mmol/L,0.5,2.0,N +PT1006,2026-06-15,Troponin,0.032,ng/mL,0.0,0.04,N +PT1007,2026-06-15,WBC,8.074,10³/µL,4.5,11.0,N +PT1007,2026-06-15,Hemoglobin,12.869,g/dL,12.0,17.5,N +PT1007,2026-06-15,Platelets,215.08,10³/µL,150.0,400.0,N +PT1007,2026-06-15,Sodium,142.12,mEq/L,136.0,145.0,N +PT1007,2026-06-15,Potassium,4.907,mEq/L,3.5,5.0,N +PT1007,2026-06-15,Creatinine,0.794,mg/dL,0.7,1.3,N +PT1007,2026-06-15,BUN,17.144,mg/dL,7.0,25.0,N +PT1007,2026-06-15,Glucose,80.006,mg/dL,70.0,100.0,N +PT1007,2026-06-15,Lactate,0.879,mmol/L,0.5,2.0,N +PT1007,2026-06-15,Troponin,0.02,ng/mL,0.0,0.04,N +PT1008,2026-06-15,WBC,7.489,10³/µL,4.5,11.0,N +PT1008,2026-06-15,Hemoglobin,11.409,g/dL,12.0,17.5,L +PT1008,2026-06-15,Platelets,290.119,10³/µL,150.0,400.0,N +PT1008,2026-06-15,Sodium,141.386,mEq/L,136.0,145.0,N +PT1008,2026-06-15,Potassium,4.586,mEq/L,3.5,5.0,N +PT1008,2026-06-15,Creatinine,0.897,mg/dL,0.7,1.3,N +PT1008,2026-06-15,BUN,7.426,mg/dL,7.0,25.0,N +PT1008,2026-06-15,Glucose,81.208,mg/dL,70.0,100.0,N +PT1008,2026-06-15,Lactate,1.568,mmol/L,0.5,2.0,N +PT1008,2026-06-15,Troponin,0.019,ng/mL,0.0,0.04,N +PT1009,2026-06-15,WBC,9.406,10³/µL,4.5,11.0,N +PT1009,2026-06-15,Hemoglobin,12.604,g/dL,12.0,17.5,N +PT1009,2026-06-15,Platelets,335.907,10³/µL,150.0,400.0,N +PT1009,2026-06-15,Sodium,141.172,mEq/L,136.0,145.0,N +PT1009,2026-06-15,Potassium,4.09,mEq/L,3.5,5.0,N +PT1009,2026-06-15,Creatinine,1.193,mg/dL,0.7,1.3,N +PT1009,2026-06-15,BUN,17.296,mg/dL,7.0,25.0,N +PT1009,2026-06-15,Glucose,76.142,mg/dL,70.0,100.0,N +PT1009,2026-06-15,Lactate,1.692,mmol/L,0.5,2.0,N +PT1009,2026-06-15,Troponin,0.017,ng/mL,0.0,0.04,N +PT1010,2026-06-15,WBC,7.822,10³/µL,4.5,11.0,N +PT1010,2026-06-15,Hemoglobin,13.326,g/dL,12.0,17.5,N +PT1010,2026-06-15,Platelets,271.124,10³/µL,150.0,400.0,N +PT1010,2026-06-15,Sodium,137.946,mEq/L,136.0,145.0,N +PT1010,2026-06-15,Potassium,4.173,mEq/L,3.5,5.0,N +PT1010,2026-06-15,Creatinine,1.006,mg/dL,0.7,1.3,N +PT1010,2026-06-15,BUN,19.271,mg/dL,7.0,25.0,N +PT1010,2026-06-15,Glucose,72.341,mg/dL,70.0,100.0,N +PT1010,2026-06-15,Lactate,1.701,mmol/L,0.5,2.0,N +PT1010,2026-06-15,Troponin,0.032,ng/mL,0.0,0.04,N +PT1011,2026-06-15,WBC,7.381,10³/µL,4.5,11.0,N +PT1011,2026-06-15,Hemoglobin,14.963,g/dL,12.0,17.5,N +PT1011,2026-06-15,Platelets,297.989,10³/µL,150.0,400.0,N +PT1011,2026-06-15,Sodium,140.725,mEq/L,136.0,145.0,N +PT1011,2026-06-15,Potassium,4.522,mEq/L,3.5,5.0,N +PT1011,2026-06-15,Creatinine,0.93,mg/dL,0.7,1.3,N +PT1011,2026-06-15,BUN,11.895,mg/dL,7.0,25.0,N +PT1011,2026-06-15,Glucose,88.854,mg/dL,70.0,100.0,N +PT1011,2026-06-15,Lactate,0.563,mmol/L,0.5,2.0,N +PT1011,2026-06-15,Troponin,0.027,ng/mL,0.0,0.04,N +PT1012,2026-06-15,WBC,9.159,10³/µL,4.5,11.0,N +PT1012,2026-06-15,Hemoglobin,13.459,g/dL,12.0,17.5,N +PT1012,2026-06-15,Platelets,381.657,10³/µL,150.0,400.0,N +PT1012,2026-06-15,Sodium,139.552,mEq/L,136.0,145.0,N +PT1012,2026-06-15,Potassium,4.053,mEq/L,3.5,5.0,N +PT1012,2026-06-15,Creatinine,0.882,mg/dL,0.7,1.3,N +PT1012,2026-06-15,BUN,18.42,mg/dL,7.0,25.0,N +PT1012,2026-06-15,Glucose,81.478,mg/dL,70.0,100.0,N +PT1012,2026-06-15,Lactate,0.603,mmol/L,0.5,2.0,N +PT1012,2026-06-15,Troponin,0.024,ng/mL,0.0,0.04,N +PT1013,2026-06-15,WBC,7.182,10³/µL,4.5,11.0,N +PT1013,2026-06-15,Hemoglobin,16.542,g/dL,12.0,17.5,N +PT1013,2026-06-15,Platelets,298.158,10³/µL,150.0,400.0,N +PT1013,2026-06-15,Sodium,141.219,mEq/L,136.0,145.0,N +PT1013,2026-06-15,Potassium,4.707,mEq/L,3.5,5.0,N +PT1013,2026-06-15,Creatinine,1.029,mg/dL,0.7,1.3,N +PT1013,2026-06-15,BUN,20.224,mg/dL,7.0,25.0,N +PT1013,2026-06-15,Glucose,79.151,mg/dL,70.0,100.0,N +PT1013,2026-06-15,Lactate,1.991,mmol/L,0.5,2.0,N +PT1013,2026-06-15,Troponin,0.023,ng/mL,0.0,0.04,N +PT1014,2026-06-15,WBC,5.407,10³/µL,4.5,11.0,N +PT1014,2026-06-15,Hemoglobin,14.977,g/dL,12.0,17.5,N +PT1014,2026-06-15,Platelets,289.0,10³/µL,150.0,400.0,N +PT1014,2026-06-15,Sodium,140.837,mEq/L,136.0,145.0,N +PT1014,2026-06-15,Potassium,3.215,mEq/L,3.5,5.0,L +PT1014,2026-06-15,Creatinine,0.901,mg/dL,0.7,1.3,N +PT1014,2026-06-15,BUN,8.533,mg/dL,7.0,25.0,N +PT1014,2026-06-15,Glucose,72.685,mg/dL,70.0,100.0,N +PT1014,2026-06-15,Lactate,1.325,mmol/L,0.5,2.0,N +PT1014,2026-06-15,Troponin,0.013,ng/mL,0.0,0.04,N +PT1015,2026-06-15,WBC,7.041,10³/µL,4.5,11.0,N +PT1015,2026-06-15,Hemoglobin,13.273,g/dL,12.0,17.5,N +PT1015,2026-06-15,Platelets,378.448,10³/µL,150.0,400.0,N +PT1015,2026-06-15,Sodium,140.608,mEq/L,136.0,145.0,N +PT1015,2026-06-15,Potassium,3.565,mEq/L,3.5,5.0,N +PT1015,2026-06-15,Creatinine,1.116,mg/dL,0.7,1.3,N +PT1015,2026-06-15,BUN,14.15,mg/dL,7.0,25.0,N +PT1015,2026-06-15,Glucose,95.743,mg/dL,70.0,100.0,N +PT1015,2026-06-15,Lactate,1.246,mmol/L,0.5,2.0,N +PT1015,2026-06-15,Troponin,0.012,ng/mL,0.0,0.04,N +PT1016,2026-06-15,WBC,6.693,10³/µL,4.5,11.0,N +PT1016,2026-06-15,Hemoglobin,14.086,g/dL,12.0,17.5,N +PT1016,2026-06-15,Platelets,311.732,10³/µL,150.0,400.0,N +PT1016,2026-06-15,Sodium,138.38,mEq/L,136.0,145.0,N +PT1016,2026-06-15,Potassium,4.81,mEq/L,3.5,5.0,N +PT1016,2026-06-15,Creatinine,1.066,mg/dL,0.7,1.3,N +PT1016,2026-06-15,BUN,17.212,mg/dL,7.0,25.0,N +PT1016,2026-06-15,Glucose,85.657,mg/dL,70.0,100.0,N +PT1016,2026-06-15,Lactate,1.241,mmol/L,0.5,2.0,N +PT1016,2026-06-15,Troponin,0.005,ng/mL,0.0,0.04,N +PT1017,2026-06-15,WBC,8.32,10³/µL,4.5,11.0,N +PT1017,2026-06-15,Hemoglobin,17.927,g/dL,12.0,17.5,H +PT1017,2026-06-15,Platelets,326.887,10³/µL,150.0,400.0,N +PT1017,2026-06-15,Sodium,141.684,mEq/L,136.0,145.0,N +PT1017,2026-06-15,Potassium,3.559,mEq/L,3.5,5.0,N +PT1017,2026-06-15,Creatinine,1.196,mg/dL,0.7,1.3,N +PT1017,2026-06-15,BUN,20.334,mg/dL,7.0,25.0,N +PT1017,2026-06-15,Glucose,95.507,mg/dL,70.0,100.0,N +PT1017,2026-06-15,Lactate,0.843,mmol/L,0.5,2.0,N +PT1017,2026-06-15,Troponin,0.015,ng/mL,0.0,0.04,N +PT1018,2026-06-15,WBC,4.853,10³/µL,4.5,11.0,N +PT1018,2026-06-15,Hemoglobin,12.159,g/dL,12.0,17.5,N +PT1018,2026-06-15,Platelets,231.731,10³/µL,150.0,400.0,N +PT1018,2026-06-15,Sodium,141.763,mEq/L,136.0,145.0,N +PT1018,2026-06-15,Potassium,4.063,mEq/L,3.5,5.0,N +PT1018,2026-06-15,Creatinine,0.88,mg/dL,0.7,1.3,N +PT1018,2026-06-15,BUN,17.833,mg/dL,7.0,25.0,N +PT1018,2026-06-15,Glucose,55.821,mg/dL,70.0,100.0,L +PT1018,2026-06-15,Lactate,1.006,mmol/L,0.5,2.0,N +PT1018,2026-06-15,Troponin,0.024,ng/mL,0.0,0.04,N +PT1019,2026-06-15,WBC,6.963,10³/µL,4.5,11.0,N +PT1019,2026-06-15,Hemoglobin,16.894,g/dL,12.0,17.5,N +PT1019,2026-06-15,Platelets,225.403,10³/µL,150.0,400.0,N +PT1019,2026-06-15,Sodium,138.901,mEq/L,136.0,145.0,N +PT1019,2026-06-15,Potassium,3.806,mEq/L,3.5,5.0,N +PT1019,2026-06-15,Creatinine,0.864,mg/dL,0.7,1.3,N +PT1019,2026-06-15,BUN,17.496,mg/dL,7.0,25.0,N +PT1019,2026-06-15,Glucose,92.273,mg/dL,70.0,100.0,N +PT1019,2026-06-15,Lactate,2.22,mmol/L,0.5,2.0,H +PT1019,2026-06-15,Troponin,0.027,ng/mL,0.0,0.04,N +PT1020,2026-06-15,WBC,5.453,10³/µL,4.5,11.0,N +PT1020,2026-06-15,Hemoglobin,16.799,g/dL,12.0,17.5,N +PT1020,2026-06-15,Platelets,311.535,10³/µL,150.0,400.0,N +PT1020,2026-06-15,Sodium,140.577,mEq/L,136.0,145.0,N +PT1020,2026-06-15,Potassium,4.73,mEq/L,3.5,5.0,N +PT1020,2026-06-15,Creatinine,1.426,mg/dL,0.7,1.3,H +PT1020,2026-06-15,BUN,14.979,mg/dL,7.0,25.0,N +PT1020,2026-06-15,Glucose,77.503,mg/dL,70.0,100.0,N +PT1020,2026-06-15,Lactate,1.847,mmol/L,0.5,2.0,N +PT1020,2026-06-15,Troponin,0.052,ng/mL,0.0,0.04,H diff --git a/medical-imaging-demo/data/patients.csv b/medical-imaging-demo/data/patients.csv new file mode 100644 index 0000000..888ce80 --- /dev/null +++ b/medical-imaging-demo/data/patients.csv @@ -0,0 +1,61 @@ +patient_id,name,age,gender,diagnosis,ward,department,admitted_date,los_days,risk_score,sepsis_risk,fall_risk,readmit_risk,deterioration_risk,is_icu +PT1001,Mark White,82,M,Trauma,ICU,Pulmonology,2026-06-03,7,41.6,7.3,47.3,11.1,36.9,True +PT1002,Robert Jones,72,M,Acute MI,MICU,Cardiology,2026-06-07,2,12.5,4.9,17.3,52.1,13.3,True +PT1003,Matthew Nelson,61,M,Cellulitis,CCU,Pulmonology,2026-06-15,5,32.5,6.9,8.2,33.6,21.8,True +PT1004,Daniel Allen,83,F,Acute MI,ICU,Neurology,2026-06-12,8,55.2,15.0,28.8,73.9,14.1,True +PT1005,Charles Hall,49,F,Pulmonary Embolism,MICU,Surgery,2026-06-14,9,34.7,7.7,16.5,14.2,43.2,True +PT1006,Nancy Wilson,73,M,Atrial Fibrillation,MICU,Cardiology,2026-06-10,4,51.9,11.3,33.3,44.5,29.2,True +PT1007,Jessica Harris,80,F,Cellulitis,Step-Down,Neurology,2026-06-04,12,6.9,3.2,14.6,54.3,2.0,False +PT1008,Anthony Allen,30,M,COPD Exacerbation,ED Obs,Neurology,2026-06-03,4,26.9,20.5,44.1,9.6,24.6,False +PT1009,Charles Hall,43,F,Atrial Fibrillation,ICU,Nephrology,2026-06-06,13,40.6,22.7,60.2,24.5,24.2,True +PT1010,Robert Thompson,46,F,Respiratory Failure,Step-Down,Nephrology,2026-06-10,3,17.8,4.3,32.0,43.7,11.7,False +PT1011,Jessica Jackson,36,F,Sepsis,General Med,Pulmonology,2026-06-07,6,25.1,13.2,2.4,31.6,30.6,False +PT1012,Betty Walker,83,M,Respiratory Failure,Step-Down,Cardiology,2026-06-12,5,4.1,21.5,66.6,23.8,25.6,False +PT1013,Karen Moore,40,F,Pneumonia,ED Obs,Surgery,2026-06-13,4,25.4,32.5,18.1,43.5,14.1,False +PT1014,Barbara Scott,55,M,GI Bleed,Step-Down,Oncology,2026-06-04,10,34.1,21.5,15.7,23.4,9.6,False +PT1015,Sandra Lewis,34,M,COPD Exacerbation,ED Obs,Cardiology,2026-06-04,12,43.5,36.4,22.3,19.5,11.5,False +PT1016,Betty Anderson,38,M,Stroke,General Med,Oncology,2026-06-14,13,32.2,1.9,15.9,58.2,4.0,False +PT1017,Sarah Baker,79,F,Diabetic Ketoacidosis,Step-Down,Surgery,2026-06-15,9,28.4,5.9,3.0,21.6,12.0,False +PT1018,Robert Harris,78,M,Diabetic Ketoacidosis,General Med,Pulmonology,2026-06-08,6,67.1,0.8,15.8,11.5,1.9,False +PT1019,Daniel King,54,F,Pneumonia,ICU,Pulmonology,2026-06-15,1,55.3,6.6,15.7,43.5,9.5,True +PT1020,James Martin,53,F,Diabetic Ketoacidosis,CCU,Oncology,2026-06-08,7,15.8,10.7,11.7,39.3,1.0,True +PT1021,Jennifer Smith,51,M,Pulmonary Embolism,Step-Down,Neurology,2026-06-01,5,14.4,1.5,53.8,60.3,30.0,False +PT1022,Charles Young,42,M,Sepsis,General Med,General Medicine,2026-06-10,13,32.0,5.5,13.4,37.5,14.2,False +PT1023,Betty Jackson,80,F,COPD Exacerbation,General Med,Oncology,2026-06-03,7,56.2,1.8,21.8,41.9,21.1,False +PT1024,Charles Moore,62,M,Stroke,General Med,General Medicine,2026-06-10,2,45.9,24.6,32.7,53.7,0.7,False +PT1025,Patricia Young,41,M,Diabetic Ketoacidosis,ED Obs,Oncology,2026-06-01,10,22.0,38.2,32.9,67.0,16.9,False +PT1026,Mary Anderson,56,M,UTI,ED Obs,Nephrology,2026-06-12,13,35.8,20.1,38.3,5.9,9.0,False +PT1027,Susan Walker,72,M,COPD Exacerbation,Step-Down,Nephrology,2026-06-06,3,4.9,11.2,22.8,32.2,33.1,False +PT1028,Nancy White,50,F,Acute MI,MICU,Surgery,2026-06-15,4,31.4,1.7,19.4,12.8,34.3,True +PT1029,Margaret Scott,30,F,COPD Exacerbation,MICU,Surgery,2026-06-14,8,25.5,6.4,3.4,22.5,8.6,True +PT1030,Anthony Young,75,F,GI Bleed,ICU,Oncology,2026-06-04,6,11.5,18.2,17.1,28.2,22.7,True +PT1031,Charles Thompson,22,F,COPD Exacerbation,General Med,Oncology,2026-06-02,2,2.6,13.0,32.7,15.8,24.7,False +PT1032,Charles Smith,29,F,COPD Exacerbation,General Med,Nephrology,2026-06-08,14,14.0,22.0,40.0,12.8,1.9,False +PT1033,Mary Walker,65,M,Heart Failure,General Med,Pulmonology,2026-06-06,12,41.5,35.7,7.7,5.2,8.2,False +PT1034,Jennifer Green,61,F,Diabetic Ketoacidosis,ED Obs,Surgery,2026-06-09,5,9.1,23.8,25.3,8.7,20.0,False +PT1035,Karen Young,83,M,Cellulitis,ICU,Neurology,2026-06-02,9,19.4,39.2,25.4,3.4,3.8,True +PT1036,Christopher Martin,46,F,GI Bleed,General Med,General Medicine,2026-06-15,11,37.4,19.5,39.6,6.9,3.3,False +PT1037,Thomas Brown,46,M,Sepsis,Step-Down,Cardiology,2026-06-13,10,16.4,21.8,26.9,16.3,20.7,False +PT1038,Joseph Martin,89,F,Hypertensive Crisis,ICU,Pulmonology,2026-06-05,13,33.2,14.2,19.3,22.3,11.6,True +PT1039,Karen Scott,82,M,Pulmonary Embolism,General Med,Neurology,2026-06-02,2,40.7,4.7,39.7,29.9,47.3,False +PT1040,Betty Thompson,58,F,Cellulitis,General Med,General Medicine,2026-06-05,13,52.6,3.7,8.6,27.2,18.1,False +PT1041,William Thomas,79,M,COPD Exacerbation,MICU,Oncology,2026-06-07,10,36.8,5.9,39.0,21.8,42.5,True +PT1042,Margaret White,58,M,Stroke,Step-Down,General Medicine,2026-06-04,4,38.6,3.1,7.7,19.8,23.4,False +PT1043,Mark Taylor,53,F,Respiratory Failure,General Med,Nephrology,2026-06-04,6,7.3,10.3,44.2,63.9,5.5,False +PT1044,Karen Jackson,36,M,Atrial Fibrillation,ED Obs,Nephrology,2026-06-07,1,36.7,3.3,23.7,15.0,30.0,False +PT1045,Elizabeth Wright,67,F,Respiratory Failure,MICU,Nephrology,2026-06-06,12,35.8,14.6,20.6,27.3,14.8,True +PT1046,Michael Wilson,29,F,Sepsis,ED Obs,General Medicine,2026-06-14,4,39.2,22.2,64.2,6.9,20.4,False +PT1047,Joseph Smith,28,F,Pneumonia,ICU,Nephrology,2026-06-05,10,59.8,9.7,69.1,14.8,3.3,True +PT1048,Elizabeth Jackson,23,M,Acute MI,MICU,Surgery,2026-06-06,13,17.9,7.4,19.3,40.0,37.4,True +PT1049,Elizabeth Nelson,22,M,Heart Failure,General Med,Neurology,2026-06-12,1,58.1,1.4,23.8,58.7,21.7,False +PT1050,Sarah King,64,F,Sepsis,Step-Down,Cardiology,2026-06-02,13,9.6,35.5,7.8,34.5,10.0,False +PT1051,Christopher Harris,90,M,Pulmonary Embolism,General Med,Nephrology,2026-06-12,2,44.6,17.8,32.4,48.9,7.4,False +PT1052,Thomas Martin,56,F,Stroke,General Med,Pulmonology,2026-06-11,3,45.8,20.2,35.1,71.2,32.0,False +PT1053,Joseph Wright,57,M,COPD Exacerbation,ICU,Oncology,2026-06-04,5,8.9,21.1,35.0,33.2,6.6,True +PT1054,Elizabeth King,66,F,Respiratory Failure,General Med,Neurology,2026-06-13,7,18.8,20.6,19.2,27.9,28.6,False +PT1055,Elizabeth Johnson,54,M,Acute MI,CCU,Cardiology,2026-06-06,5,7.7,42.8,66.1,44.4,42.9,True +PT1056,Patricia Thomas,70,F,Sepsis,Step-Down,General Medicine,2026-06-05,12,8.4,21.0,19.0,34.9,4.4,False +PT1057,Jessica Anderson,38,F,Diabetic Ketoacidosis,General Med,General Medicine,2026-06-03,14,18.1,27.8,22.1,48.3,6.1,False +PT1058,Daniel Scott,89,F,Trauma,Step-Down,Nephrology,2026-06-03,6,36.3,11.2,28.7,15.5,14.9,False +PT1059,Mark Lewis,24,M,GI Bleed,General Med,Nephrology,2026-06-09,13,33.6,36.6,22.7,13.0,17.2,False +PT1060,Charles Miller,37,F,Pneumonia,Step-Down,General Medicine,2026-06-04,7,26.8,5.8,47.1,51.5,4.8,False diff --git a/medical-imaging-demo/data/studies.csv b/medical-imaging-demo/data/studies.csv new file mode 100644 index 0000000..9dd92e8 --- /dev/null +++ b/medical-imaging-demo/data/studies.csv @@ -0,0 +1,9 @@ +study_id,patient_id,patient_name,age,gender,view_position,finding_labels,study_date,accession,image_file,referrer +ST0001,PT1001,Mark White,45,M,PA,No Finding,2026-06-15,ACC515886,xray_01.png,Dr. Smith +ST0002,PT1002,Robert Jones,67,F,PA,Cardiomegaly,2026-06-15,ACC382218,xray_02.png,Dr. Baker +ST0003,PT1003,Matthew Nelson,72,M,AP,Pleural Effusion|Cardiomegaly,2026-06-15,ACC381137,xray_03.png,Dr. Williams +ST0004,PT1004,Daniel Allen,58,F,PA,Pneumonia|Consolidation,2026-06-15,ACC526207,xray_04.png,Dr. Baker +ST0005,PT1005,Charles Hall,81,M,AP,Atelectasis,2026-06-15,ACC802856,xray_05.png,Dr. King +ST0006,PT1006,Nancy Wilson,63,F,PA,Nodule,2026-06-15,ACC224291,xray_06.png,Dr. King +ST0007,PT1007,Jessica Harris,34,M,AP,Pneumothorax,2026-06-15,ACC124300,xray_07.png,Dr. Wilson +ST0008,PT1008,Anthony Allen,69,F,PA,Mass,2026-06-15,ACC206818,xray_08.png,Dr. Harris diff --git a/medical-imaging-demo/data/vitals.csv b/medical-imaging-demo/data/vitals.csv new file mode 100644 index 0000000..c6a7082 --- /dev/null +++ b/medical-imaging-demo/data/vitals.csv @@ -0,0 +1,2305 @@ +patient_id,timestamp,HR,SpO2,Temp,SysBP,DiaBP,RR +PT1001,2026-06-14 00:00:00,70.7,98.9,37.4,119.6,76.7,13.5 +PT1001,2026-06-14 00:15:00,70.2,98.6,37.1,120.6,74.6,13.2 +PT1001,2026-06-14 00:30:00,72.8,98.5,37.2,119.7,75.7,12.7 +PT1001,2026-06-14 00:45:00,74.3,98.4,37.0,121.7,76.1,12.4 +PT1001,2026-06-14 01:00:00,73.8,98.4,36.4,122.1,77.0,12.6 +PT1001,2026-06-14 01:15:00,73.7,98.0,37.1,121.5,76.8,13.0 +PT1001,2026-06-14 01:30:00,74.0,98.2,37.1,124.0,76.7,13.1 +PT1001,2026-06-14 01:45:00,73.3,98.0,37.5,119.4,75.0,12.4 +PT1001,2026-06-14 02:00:00,73.5,98.0,37.2,118.0,75.1,12.0 +PT1001,2026-06-14 02:15:00,73.8,97.8,36.9,116.2,76.5,12.0 +PT1001,2026-06-14 02:30:00,73.4,97.5,37.8,116.1,77.8,12.0 +PT1001,2026-06-14 02:45:00,73.9,97.6,36.5,114.3,77.4,11.7 +PT1001,2026-06-14 03:00:00,75.0,97.4,37.0,112.7,77.7,11.9 +PT1001,2026-06-14 03:15:00,75.0,97.6,36.7,112.0,78.2,11.2 +PT1001,2026-06-14 03:30:00,75.7,97.3,36.9,112.5,78.0,11.1 +PT1001,2026-06-14 03:45:00,76.8,97.8,36.7,113.1,78.4,10.8 +PT1001,2026-06-14 04:00:00,76.7,97.5,36.8,109.6,79.7,11.1 +PT1001,2026-06-14 04:15:00,77.0,97.8,37.5,110.0,77.9,11.0 +PT1001,2026-06-14 04:30:00,77.3,97.9,37.2,110.6,76.6,10.8 +PT1001,2026-06-14 04:45:00,78.2,98.2,36.8,108.9,77.2,11.3 +PT1001,2026-06-14 05:00:00,80.0,98.6,37.3,114.2,77.6,11.4 +PT1001,2026-06-14 05:15:00,80.9,98.9,36.8,115.7,77.4,11.8 +PT1001,2026-06-14 05:30:00,80.9,99.3,37.2,113.2,76.4,12.1 +PT1001,2026-06-14 05:45:00,79.8,99.2,37.6,110.9,77.9,12.0 +PT1001,2026-06-14 06:00:00,79.8,99.1,37.9,110.3,77.5,12.1 +PT1001,2026-06-14 06:15:00,79.4,99.0,37.2,110.4,79.1,11.5 +PT1001,2026-06-14 06:30:00,78.4,99.2,37.2,109.4,75.7,11.6 +PT1001,2026-06-14 06:45:00,77.6,99.0,36.8,106.8,76.8,12.0 +PT1001,2026-06-14 07:00:00,77.0,99.0,37.2,111.3,77.7,11.6 +PT1001,2026-06-14 07:15:00,75.3,99.2,36.9,114.7,80.2,11.9 +PT1001,2026-06-14 07:30:00,73.7,98.8,37.4,109.1,81.2,11.9 +PT1001,2026-06-14 07:45:00,75.4,98.8,37.3,109.3,80.5,11.7 +PT1001,2026-06-14 08:00:00,75.2,98.7,37.1,109.3,81.9,11.5 +PT1001,2026-06-14 08:15:00,75.5,99.0,37.4,108.8,80.8,11.3 +PT1001,2026-06-14 08:30:00,77.9,98.7,37.3,106.6,80.5,11.3 +PT1001,2026-06-14 08:45:00,76.8,98.4,37.2,106.9,80.1,11.7 +PT1001,2026-06-14 09:00:00,77.4,98.4,36.7,111.6,78.9,11.9 +PT1001,2026-06-14 09:15:00,76.1,98.3,37.2,114.9,79.3,11.7 +PT1001,2026-06-14 09:30:00,76.1,98.1,37.8,112.1,81.4,11.8 +PT1001,2026-06-14 09:45:00,77.2,98.3,36.8,111.2,79.8,11.7 +PT1001,2026-06-14 10:00:00,78.0,98.7,37.0,110.7,81.2,11.4 +PT1001,2026-06-14 10:15:00,77.0,98.2,37.3,110.6,81.4,11.8 +PT1001,2026-06-14 10:30:00,77.9,97.9,37.6,111.5,83.8,12.0 +PT1001,2026-06-14 10:45:00,80.3,97.8,36.9,110.2,82.6,11.4 +PT1001,2026-06-14 11:00:00,81.7,97.3,36.9,108.1,82.4,11.0 +PT1001,2026-06-14 11:15:00,81.1,97.2,37.4,106.6,81.2,11.4 +PT1001,2026-06-14 11:30:00,79.4,96.6,36.6,108.7,79.4,11.5 +PT1001,2026-06-14 11:45:00,80.9,97.2,37.3,109.1,79.2,11.4 +PT1001,2026-06-14 12:00:00,81.5,97.5,36.8,107.9,79.8,11.1 +PT1001,2026-06-14 12:15:00,81.4,97.2,36.9,110.2,78.5,11.3 +PT1001,2026-06-14 12:30:00,81.7,97.1,37.2,107.7,79.2,11.2 +PT1001,2026-06-14 12:45:00,81.1,96.8,37.1,109.9,80.3,11.0 +PT1001,2026-06-14 13:00:00,82.4,96.7,37.4,109.2,80.7,10.8 +PT1001,2026-06-14 13:15:00,82.1,96.5,37.6,110.5,78.9,11.6 +PT1001,2026-06-14 13:30:00,82.7,96.6,36.8,111.2,78.2,11.7 +PT1001,2026-06-14 13:45:00,83.2,96.8,37.5,110.5,77.3,11.2 +PT1001,2026-06-14 14:00:00,82.5,96.8,37.0,111.1,77.7,11.5 +PT1001,2026-06-14 14:15:00,81.1,96.5,37.5,109.9,76.3,11.4 +PT1001,2026-06-14 14:30:00,80.6,96.4,37.3,109.9,75.7,11.4 +PT1001,2026-06-14 14:45:00,81.6,96.7,36.9,114.0,76.6,12.3 +PT1001,2026-06-14 15:00:00,84.1,96.6,37.1,113.4,76.4,12.2 +PT1001,2026-06-14 15:15:00,83.3,96.8,37.0,112.3,77.4,12.8 +PT1001,2026-06-14 15:30:00,84.2,96.9,36.6,116.8,76.6,13.1 +PT1001,2026-06-14 15:45:00,83.6,97.0,37.1,119.6,74.8,13.4 +PT1001,2026-06-14 16:00:00,81.7,97.1,36.8,123.0,73.1,13.4 +PT1001,2026-06-14 16:15:00,81.1,97.4,37.0,122.5,75.2,13.8 +PT1001,2026-06-14 16:30:00,80.4,97.2,36.9,120.6,75.7,13.8 +PT1001,2026-06-14 16:45:00,78.5,97.3,36.3,119.7,75.4,13.9 +PT1001,2026-06-14 17:00:00,76.7,97.8,37.8,118.7,71.6,13.3 +PT1001,2026-06-14 17:15:00,75.8,98.1,36.4,118.9,70.9,13.7 +PT1001,2026-06-14 17:30:00,74.1,98.0,37.1,116.2,70.0,14.0 +PT1001,2026-06-14 17:45:00,75.6,98.1,37.5,118.2,70.0,13.8 +PT1001,2026-06-14 18:00:00,74.8,98.2,37.4,119.8,71.2,13.3 +PT1001,2026-06-14 18:15:00,73.6,98.4,37.3,120.8,72.4,12.8 +PT1001,2026-06-14 18:30:00,74.9,98.4,36.6,119.2,73.8,12.9 +PT1001,2026-06-14 18:45:00,73.8,98.3,37.2,122.2,75.8,13.4 +PT1001,2026-06-14 19:00:00,74.9,98.0,37.2,122.2,76.5,13.0 +PT1001,2026-06-14 19:15:00,76.9,98.1,37.0,124.1,72.8,13.6 +PT1001,2026-06-14 19:30:00,75.9,98.1,36.9,121.1,74.4,13.5 +PT1001,2026-06-14 19:45:00,75.7,98.4,36.8,121.3,72.3,13.6 +PT1001,2026-06-14 20:00:00,73.1,98.7,37.5,122.3,72.2,13.5 +PT1001,2026-06-14 20:15:00,76.8,98.9,36.4,120.2,71.9,13.7 +PT1001,2026-06-14 20:30:00,77.2,99.0,37.6,122.9,73.8,13.7 +PT1001,2026-06-14 20:45:00,79.6,99.0,36.8,123.7,71.1,13.1 +PT1001,2026-06-14 21:00:00,79.0,98.7,37.0,123.6,70.5,13.6 +PT1001,2026-06-14 21:15:00,76.3,98.7,36.8,123.6,69.2,13.6 +PT1001,2026-06-14 21:30:00,76.6,99.4,37.0,120.0,68.4,13.3 +PT1001,2026-06-14 21:45:00,77.8,99.5,36.8,121.7,68.5,12.8 +PT1001,2026-06-14 22:00:00,78.7,99.6,36.9,124.2,68.9,12.3 +PT1001,2026-06-14 22:15:00,79.3,99.7,37.0,125.9,67.3,11.8 +PT1001,2026-06-14 22:30:00,81.0,99.5,37.6,126.8,68.0,12.2 +PT1001,2026-06-14 22:45:00,82.9,99.4,37.0,122.6,67.0,12.2 +PT1001,2026-06-14 23:00:00,85.2,99.4,36.5,123.9,67.3,12.0 +PT1001,2026-06-14 23:15:00,85.0,100.0,37.3,121.4,64.6,12.8 +PT1001,2026-06-14 23:30:00,85.2,100.0,37.7,119.8,64.4,13.2 +PT1001,2026-06-14 23:45:00,83.7,100.0,36.7,120.5,64.7,13.2 +PT1001,2026-06-15 00:00:00,84.8,99.8,37.1,118.4,66.0,13.5 +PT1001,2026-06-15 00:15:00,86.0,100.0,37.2,121.0,65.2,13.9 +PT1001,2026-06-15 00:30:00,88.0,100.0,37.2,120.3,64.3,14.0 +PT1001,2026-06-15 00:45:00,88.5,100.0,36.8,121.6,64.0,13.6 +PT1001,2026-06-15 01:00:00,89.6,100.0,36.9,117.9,65.6,14.4 +PT1001,2026-06-15 01:15:00,89.9,99.9,37.4,119.2,63.9,14.4 +PT1001,2026-06-15 01:30:00,91.3,100.0,37.0,118.5,61.5,14.1 +PT1001,2026-06-15 01:45:00,90.4,100.0,37.0,117.8,61.7,14.5 +PT1001,2026-06-15 02:00:00,88.6,99.8,37.5,119.0,62.7,14.7 +PT1001,2026-06-15 02:15:00,88.3,100.0,36.9,120.6,59.0,15.4 +PT1001,2026-06-15 02:30:00,87.0,100.0,37.3,117.1,57.9,16.1 +PT1001,2026-06-15 02:45:00,87.9,99.8,37.4,114.1,59.0,16.4 +PT1001,2026-06-15 03:00:00,88.1,99.6,37.0,118.9,59.7,16.4 +PT1001,2026-06-15 03:15:00,88.2,99.8,37.1,119.3,61.0,16.4 +PT1001,2026-06-15 03:30:00,88.9,100.0,37.1,119.0,59.9,16.6 +PT1001,2026-06-15 03:45:00,88.1,99.8,36.9,119.8,60.7,16.4 +PT1001,2026-06-15 04:00:00,87.0,99.9,36.4,118.2,64.0,16.2 +PT1001,2026-06-15 04:15:00,86.9,99.8,37.0,120.4,64.5,15.9 +PT1001,2026-06-15 04:30:00,87.3,99.3,37.2,123.1,63.2,16.5 +PT1001,2026-06-15 04:45:00,87.9,99.6,37.2,124.2,64.2,16.4 +PT1001,2026-06-15 05:00:00,87.1,99.5,37.1,128.2,63.0,16.5 +PT1001,2026-06-15 05:15:00,86.7,99.6,36.8,129.3,61.6,16.5 +PT1001,2026-06-15 05:30:00,87.6,99.6,37.4,129.5,62.6,16.4 +PT1001,2026-06-15 05:45:00,86.4,100.0,37.0,128.4,60.1,16.3 +PT1001,2026-06-15 06:00:00,85.9,100.0,36.8,130.6,59.8,16.0 +PT1001,2026-06-15 06:15:00,85.2,99.5,37.3,129.2,61.7,15.7 +PT1001,2026-06-15 06:30:00,83.7,100.0,37.2,132.8,62.6,16.5 +PT1001,2026-06-15 06:45:00,84.6,100.0,37.0,133.2,60.2,16.8 +PT1001,2026-06-15 07:00:00,84.0,100.0,36.9,134.3,60.4,17.0 +PT1001,2026-06-15 07:15:00,83.9,100.0,37.4,137.9,63.6,17.2 +PT1001,2026-06-15 07:30:00,86.2,99.8,36.8,139.1,64.8,17.8 +PT1001,2026-06-15 07:45:00,85.0,99.8,37.1,139.9,66.5,18.0 +PT1001,2026-06-15 08:00:00,85.5,99.9,37.2,143.4,66.7,17.8 +PT1001,2026-06-15 08:15:00,85.6,99.5,37.4,143.3,66.6,17.6 +PT1001,2026-06-15 08:30:00,84.6,99.6,36.7,143.0,66.7,17.8 +PT1001,2026-06-15 08:45:00,84.8,100.0,37.2,139.9,66.6,18.2 +PT1001,2026-06-15 09:00:00,85.6,99.4,37.1,141.1,65.5,18.4 +PT1001,2026-06-15 09:15:00,88.2,99.5,37.3,140.9,63.2,18.4 +PT1001,2026-06-15 09:30:00,88.1,99.4,37.5,139.8,64.0,18.7 +PT1001,2026-06-15 09:45:00,86.8,99.5,37.2,139.5,63.9,18.9 +PT1001,2026-06-15 10:00:00,87.3,99.3,37.2,138.0,66.1,18.8 +PT1001,2026-06-15 10:15:00,88.5,99.4,37.0,139.1,67.5,17.9 +PT1001,2026-06-15 10:30:00,89.0,99.7,37.4,139.2,66.2,17.6 +PT1001,2026-06-15 10:45:00,88.7,99.7,36.9,140.5,61.9,18.4 +PT1001,2026-06-15 11:00:00,88.9,99.3,37.4,139.6,63.7,17.6 +PT1001,2026-06-15 11:15:00,88.5,99.4,37.0,140.9,64.4,17.3 +PT1001,2026-06-15 11:30:00,86.6,99.5,37.0,144.3,61.6,17.0 +PT1001,2026-06-15 11:45:00,86.8,99.7,37.3,144.0,61.2,17.4 +PT1001,2026-06-15 12:00:00,87.3,99.7,37.3,146.0,60.2,17.1 +PT1001,2026-06-15 12:15:00,85.3,99.8,37.1,145.4,58.1,16.7 +PT1001,2026-06-15 12:30:00,86.5,99.6,36.9,147.8,58.2,17.3 +PT1001,2026-06-15 12:45:00,86.3,99.7,37.8,147.4,59.6,16.4 +PT1001,2026-06-15 13:00:00,87.3,99.6,37.4,146.3,58.3,16.6 +PT1001,2026-06-15 13:15:00,87.0,99.9,37.3,144.5,56.7,17.4 +PT1001,2026-06-15 13:30:00,88.6,99.7,37.3,142.7,56.1,17.0 +PT1001,2026-06-15 13:45:00,87.6,99.4,37.1,143.0,54.2,16.3 +PT1001,2026-06-15 14:00:00,85.5,99.6,37.1,140.2,50.8,16.2 +PT1001,2026-06-15 14:15:00,86.0,99.6,36.7,138.0,51.9,16.6 +PT1001,2026-06-15 14:30:00,85.7,99.5,37.3,138.5,51.6,16.6 +PT1001,2026-06-15 14:45:00,84.3,99.7,37.0,140.8,54.1,15.7 +PT1001,2026-06-15 15:00:00,81.9,99.1,37.2,141.1,53.5,15.8 +PT1001,2026-06-15 15:15:00,83.3,99.1,36.4,146.9,53.9,16.6 +PT1001,2026-06-15 15:30:00,84.9,99.1,37.3,143.0,54.6,16.4 +PT1001,2026-06-15 15:45:00,86.0,98.7,37.0,145.0,54.6,17.0 +PT1001,2026-06-15 16:00:00,85.4,98.7,36.7,145.2,53.6,16.8 +PT1001,2026-06-15 16:15:00,84.8,98.9,36.7,145.0,55.1,16.7 +PT1001,2026-06-15 16:30:00,85.5,98.7,37.1,144.5,56.9,16.2 +PT1001,2026-06-15 16:45:00,85.4,98.9,37.2,146.2,57.3,16.1 +PT1001,2026-06-15 17:00:00,86.9,98.9,36.7,145.7,57.9,16.1 +PT1001,2026-06-15 17:15:00,87.1,98.5,37.2,146.4,56.7,16.1 +PT1001,2026-06-15 17:30:00,90.0,98.7,37.2,149.2,59.5,16.3 +PT1001,2026-06-15 17:45:00,88.6,98.7,37.1,147.7,58.9,17.1 +PT1001,2026-06-15 18:00:00,87.5,99.0,37.7,149.6,60.4,16.3 +PT1001,2026-06-15 18:15:00,86.7,99.2,36.7,154.7,63.7,15.9 +PT1001,2026-06-15 18:30:00,88.4,99.2,37.3,153.7,64.6,15.8 +PT1001,2026-06-15 18:45:00,88.4,99.4,37.3,151.9,66.7,16.1 +PT1001,2026-06-15 19:00:00,86.9,99.8,37.2,151.8,67.8,16.0 +PT1001,2026-06-15 19:15:00,87.2,99.1,36.8,153.0,70.8,16.2 +PT1001,2026-06-15 19:30:00,87.9,99.4,37.0,154.0,70.7,16.1 +PT1001,2026-06-15 19:45:00,88.7,99.0,36.7,153.3,73.1,16.7 +PT1001,2026-06-15 20:00:00,87.2,99.0,37.0,155.1,70.3,16.7 +PT1001,2026-06-15 20:15:00,88.8,98.5,37.3,155.3,69.7,17.3 +PT1001,2026-06-15 20:30:00,88.0,98.8,37.4,154.5,71.2,17.2 +PT1001,2026-06-15 20:45:00,88.4,99.6,37.1,154.4,71.8,17.0 +PT1001,2026-06-15 21:00:00,85.1,99.7,36.9,157.1,72.4,16.5 +PT1001,2026-06-15 21:15:00,82.1,99.9,37.5,155.1,72.4,16.4 +PT1001,2026-06-15 21:30:00,82.2,100.0,37.7,156.1,74.4,16.3 +PT1001,2026-06-15 21:45:00,79.7,100.0,37.3,154.4,73.7,16.6 +PT1001,2026-06-15 22:00:00,80.4,99.6,37.3,157.3,72.3,16.3 +PT1001,2026-06-15 22:15:00,80.0,99.7,36.9,153.0,72.7,16.3 +PT1001,2026-06-15 22:30:00,77.5,99.7,37.6,152.9,72.2,15.6 +PT1001,2026-06-15 22:45:00,76.7,99.6,37.1,148.1,74.6,15.4 +PT1001,2026-06-15 23:00:00,78.0,99.4,37.6,150.0,71.5,15.6 +PT1001,2026-06-15 23:15:00,77.3,99.7,36.8,153.7,71.1,15.5 +PT1001,2026-06-15 23:30:00,76.7,99.5,37.2,151.9,72.9,15.2 +PT1001,2026-06-15 23:45:00,76.7,99.9,37.5,150.9,73.5,15.5 +PT1001,2026-06-16 00:00:00,76.0,99.7,37.1,148.8,76.8,16.1 +PT1001,2026-06-16 00:15:00,78.3,99.7,37.2,150.2,76.8,16.2 +PT1001,2026-06-16 00:30:00,77.8,99.9,36.8,151.7,78.4,16.3 +PT1001,2026-06-16 00:45:00,79.8,99.9,37.4,152.4,79.3,16.5 +PT1001,2026-06-16 01:00:00,81.1,99.8,37.0,155.6,78.9,16.6 +PT1001,2026-06-16 01:15:00,80.2,100.0,37.0,161.9,78.4,17.1 +PT1001,2026-06-16 01:30:00,80.2,100.0,37.3,159.7,76.4,17.1 +PT1001,2026-06-16 01:45:00,80.7,100.0,36.9,159.8,77.6,15.9 +PT1001,2026-06-16 02:00:00,80.5,100.0,37.0,162.8,76.2,16.5 +PT1001,2026-06-16 02:15:00,80.3,100.0,37.0,162.4,77.9,16.3 +PT1001,2026-06-16 02:30:00,81.5,99.8,37.5,162.9,75.4,17.1 +PT1001,2026-06-16 02:45:00,84.8,100.0,37.6,160.6,76.4,16.7 +PT1001,2026-06-16 03:00:00,83.4,99.7,36.7,157.4,75.7,16.4 +PT1001,2026-06-16 03:15:00,85.7,99.8,36.9,158.2,78.1,16.5 +PT1001,2026-06-16 03:30:00,83.6,99.6,37.4,161.2,76.2,16.7 +PT1001,2026-06-16 03:45:00,83.9,99.7,36.8,162.5,76.7,17.3 +PT1001,2026-06-16 04:00:00,84.1,99.3,37.6,158.4,76.6,17.5 +PT1001,2026-06-16 04:15:00,87.0,99.6,37.1,159.8,76.9,16.9 +PT1001,2026-06-16 04:30:00,88.5,99.8,37.2,157.3,77.8,17.1 +PT1001,2026-06-16 04:45:00,88.3,100.0,37.0,158.7,76.8,17.3 +PT1001,2026-06-16 05:00:00,86.5,99.8,37.0,155.5,78.3,17.4 +PT1001,2026-06-16 05:15:00,88.1,99.8,36.9,152.7,77.6,18.1 +PT1001,2026-06-16 05:30:00,88.4,100.0,36.8,153.9,81.3,17.6 +PT1001,2026-06-16 05:45:00,86.9,99.9,37.1,156.1,79.8,18.1 +PT1001,2026-06-16 06:00:00,85.5,99.5,37.5,153.0,78.8,18.0 +PT1001,2026-06-16 06:15:00,86.4,99.3,37.0,153.8,81.2,18.8 +PT1001,2026-06-16 06:30:00,87.4,99.6,37.0,150.8,80.5,19.6 +PT1001,2026-06-16 06:45:00,83.9,99.6,37.4,153.0,80.5,19.9 +PT1001,2026-06-16 07:00:00,83.4,99.4,37.1,153.4,80.7,20.0 +PT1001,2026-06-16 07:15:00,82.4,99.6,37.1,154.6,78.7,19.8 +PT1001,2026-06-16 07:30:00,81.7,99.8,36.5,154.4,79.0,19.6 +PT1001,2026-06-16 07:45:00,79.2,99.9,37.2,155.0,79.7,19.7 +PT1001,2026-06-16 08:00:00,80.3,100.0,37.2,157.0,79.9,19.6 +PT1001,2026-06-16 08:15:00,79.3,99.9,36.7,157.4,80.2,19.5 +PT1001,2026-06-16 08:30:00,80.0,100.0,36.8,160.7,80.8,19.5 +PT1001,2026-06-16 08:45:00,81.8,100.0,37.3,161.1,80.4,19.4 +PT1001,2026-06-16 09:00:00,80.5,100.0,36.5,163.9,79.9,19.1 +PT1001,2026-06-16 09:15:00,79.0,100.0,37.0,164.5,80.7,18.3 +PT1001,2026-06-16 09:30:00,80.6,100.0,37.2,162.0,80.5,18.0 +PT1001,2026-06-16 09:45:00,80.5,100.0,36.7,159.5,79.8,18.4 +PT1001,2026-06-16 10:00:00,79.3,100.0,37.3,160.1,79.1,18.3 +PT1001,2026-06-16 10:15:00,80.3,99.7,36.8,160.8,81.3,18.3 +PT1001,2026-06-16 10:30:00,78.9,99.7,36.8,162.9,81.3,18.4 +PT1001,2026-06-16 10:45:00,80.0,99.4,37.2,161.9,82.2,17.5 +PT1001,2026-06-16 11:00:00,78.7,99.4,37.7,161.2,85.4,17.4 +PT1001,2026-06-16 11:15:00,79.4,99.2,36.9,161.9,84.9,17.5 +PT1001,2026-06-16 11:30:00,81.4,99.4,37.4,161.9,87.5,17.5 +PT1001,2026-06-16 11:45:00,81.4,99.5,36.9,161.8,87.7,17.6 +PT1001,2026-06-16 12:00:00,80.9,99.4,37.4,162.2,87.6,18.1 +PT1001,2026-06-16 12:15:00,80.6,99.8,36.9,166.0,84.6,18.4 +PT1001,2026-06-16 12:30:00,81.5,100.0,37.1,164.2,81.8,18.8 +PT1001,2026-06-16 12:45:00,79.5,100.0,36.9,165.5,82.8,19.3 +PT1001,2026-06-16 13:00:00,79.6,99.7,36.9,164.2,83.4,18.6 +PT1001,2026-06-16 13:15:00,78.4,99.7,37.5,165.4,84.5,19.0 +PT1001,2026-06-16 13:30:00,79.1,100.0,37.0,165.6,84.2,19.3 +PT1001,2026-06-16 13:45:00,81.3,100.0,37.3,167.1,84.4,19.1 +PT1001,2026-06-16 14:00:00,79.9,100.0,37.3,166.8,84.9,18.8 +PT1001,2026-06-16 14:15:00,79.3,100.0,37.6,168.3,83.9,18.3 +PT1001,2026-06-16 14:30:00,79.1,100.0,37.1,169.3,82.0,18.5 +PT1001,2026-06-16 14:45:00,78.3,99.7,36.7,170.5,83.7,18.6 +PT1001,2026-06-16 15:00:00,77.0,99.6,36.6,173.6,83.3,18.4 +PT1001,2026-06-16 15:15:00,76.1,99.3,37.6,171.6,83.5,18.2 +PT1001,2026-06-16 15:30:00,77.4,99.1,36.4,169.8,85.6,18.9 +PT1001,2026-06-16 15:45:00,77.5,99.1,36.5,171.1,88.5,18.7 +PT1001,2026-06-16 16:00:00,78.2,99.4,37.4,170.5,87.4,18.5 +PT1001,2026-06-16 16:15:00,77.6,99.5,37.0,170.5,87.3,18.8 +PT1001,2026-06-16 16:30:00,77.1,99.7,37.4,168.5,86.0,18.3 +PT1001,2026-06-16 16:45:00,76.9,99.3,37.0,170.2,85.2,17.9 +PT1001,2026-06-16 17:00:00,78.6,99.2,37.5,171.4,86.3,18.1 +PT1001,2026-06-16 17:15:00,77.8,99.0,37.1,169.3,86.1,17.7 +PT1001,2026-06-16 17:30:00,77.8,99.2,36.8,169.8,85.4,17.9 +PT1001,2026-06-16 17:45:00,77.8,99.3,37.4,170.1,86.1,17.6 +PT1001,2026-06-16 18:00:00,79.9,98.9,37.7,167.7,86.1,17.5 +PT1001,2026-06-16 18:15:00,80.1,99.2,36.9,163.6,87.3,17.3 +PT1001,2026-06-16 18:30:00,79.8,98.9,37.4,164.5,87.6,17.4 +PT1001,2026-06-16 18:45:00,81.6,98.8,37.2,165.4,88.1,17.5 +PT1001,2026-06-16 19:00:00,83.4,98.7,37.1,162.4,87.0,17.8 +PT1001,2026-06-16 19:15:00,82.8,98.4,37.0,162.8,88.0,17.9 +PT1001,2026-06-16 19:30:00,82.9,98.4,37.0,163.2,86.2,18.0 +PT1001,2026-06-16 19:45:00,84.1,98.5,37.5,164.9,85.8,17.9 +PT1001,2026-06-16 20:00:00,84.6,98.3,37.7,166.7,85.0,18.0 +PT1001,2026-06-16 20:15:00,82.8,98.2,36.6,167.5,86.1,17.5 +PT1001,2026-06-16 20:30:00,84.1,98.1,37.1,165.9,88.4,17.5 +PT1001,2026-06-16 20:45:00,83.8,97.8,37.1,167.3,89.0,17.6 +PT1001,2026-06-16 21:00:00,83.4,98.0,37.2,167.0,88.9,17.8 +PT1001,2026-06-16 21:15:00,85.3,97.6,37.0,167.6,87.9,17.4 +PT1001,2026-06-16 21:30:00,85.3,97.6,36.8,164.6,87.1,17.5 +PT1001,2026-06-16 21:45:00,83.9,97.0,37.0,163.3,85.4,17.2 +PT1001,2026-06-16 22:00:00,83.1,96.7,37.0,159.0,85.8,17.5 +PT1001,2026-06-16 22:15:00,82.7,96.8,36.6,162.2,83.5,17.3 +PT1001,2026-06-16 22:30:00,83.1,96.7,37.3,162.6,83.7,17.7 +PT1001,2026-06-16 22:45:00,84.1,96.5,37.2,165.0,82.6,17.4 +PT1001,2026-06-16 23:00:00,84.4,96.2,37.5,164.6,84.8,16.8 +PT1001,2026-06-16 23:15:00,84.0,95.6,37.1,161.9,83.4,16.6 +PT1001,2026-06-16 23:30:00,80.7,95.7,37.4,159.8,85.5,16.5 +PT1001,2026-06-16 23:45:00,82.0,96.0,37.3,158.6,84.6,16.4 +PT1002,2026-06-14 00:00:00,91.4,96.8,37.1,148.5,88.6,17.6 +PT1002,2026-06-14 00:15:00,91.4,96.9,36.8,149.9,87.0,17.3 +PT1002,2026-06-14 00:30:00,93.1,96.8,37.6,149.9,87.1,17.0 +PT1002,2026-06-14 00:45:00,93.5,96.9,36.9,147.7,85.3,16.9 +PT1002,2026-06-14 01:00:00,92.3,96.8,36.8,147.3,85.6,16.7 +PT1002,2026-06-14 01:15:00,91.1,97.1,37.1,144.8,86.1,16.9 +PT1002,2026-06-14 01:30:00,93.2,97.2,37.3,148.5,85.1,16.6 +PT1002,2026-06-14 01:45:00,92.9,97.6,37.1,149.1,83.6,15.9 +PT1002,2026-06-14 02:00:00,92.8,97.7,36.7,151.6,85.2,15.7 +PT1002,2026-06-14 02:15:00,91.3,97.5,37.2,150.8,85.6,15.4 +PT1002,2026-06-14 02:30:00,91.7,97.5,37.2,148.6,86.3,16.2 +PT1002,2026-06-14 02:45:00,88.2,97.8,36.6,147.2,89.7,16.3 +PT1002,2026-06-14 03:00:00,85.7,98.2,37.1,149.4,93.1,16.3 +PT1002,2026-06-14 03:15:00,85.3,98.0,36.6,148.6,93.4,15.9 +PT1002,2026-06-14 03:30:00,85.5,97.8,37.3,142.1,94.2,15.5 +PT1002,2026-06-14 03:45:00,86.3,97.9,37.3,147.1,94.0,15.4 +PT1002,2026-06-14 04:00:00,86.3,98.2,36.8,144.6,92.1,15.7 +PT1002,2026-06-14 04:15:00,87.1,98.3,36.8,143.2,92.7,15.2 +PT1002,2026-06-14 04:30:00,86.8,98.3,37.6,142.6,93.3,15.3 +PT1002,2026-06-14 04:45:00,86.7,98.6,37.0,144.4,96.8,15.3 +PT1002,2026-06-14 05:00:00,88.2,98.6,37.2,147.0,97.9,14.4 +PT1002,2026-06-14 05:15:00,88.6,98.7,37.2,146.7,95.5,14.8 +PT1002,2026-06-14 05:30:00,90.0,98.3,37.0,147.7,95.1,14.9 +PT1002,2026-06-14 05:45:00,90.6,98.2,37.1,145.6,95.2,14.8 +PT1002,2026-06-14 06:00:00,86.8,98.4,37.3,145.0,93.2,15.1 +PT1002,2026-06-14 06:15:00,86.4,98.1,37.0,145.4,93.4,15.5 +PT1002,2026-06-14 06:30:00,87.9,98.0,37.1,142.7,91.7,15.5 +PT1002,2026-06-14 06:45:00,88.3,97.9,37.1,144.6,91.3,14.7 +PT1002,2026-06-14 07:00:00,85.9,98.0,37.4,146.7,89.8,15.3 +PT1002,2026-06-14 07:15:00,87.4,98.0,37.1,144.7,91.0,15.0 +PT1002,2026-06-14 07:30:00,87.2,98.3,36.9,146.2,90.9,14.2 +PT1002,2026-06-14 07:45:00,88.1,98.4,36.8,143.2,88.2,14.3 +PT1002,2026-06-14 08:00:00,87.0,98.5,37.1,145.6,87.1,14.3 +PT1002,2026-06-14 08:15:00,86.8,98.5,37.6,147.1,86.0,13.7 +PT1002,2026-06-14 08:30:00,88.1,98.2,37.2,147.4,87.6,14.0 +PT1002,2026-06-14 08:45:00,87.9,98.7,37.1,147.8,86.8,14.3 +PT1002,2026-06-14 09:00:00,88.4,98.7,37.5,148.8,85.3,13.7 +PT1002,2026-06-14 09:15:00,88.7,98.9,36.9,145.3,86.9,13.5 +PT1002,2026-06-14 09:30:00,88.6,98.6,37.6,145.3,86.7,14.0 +PT1002,2026-06-14 09:45:00,90.4,98.1,36.9,143.4,83.3,13.5 +PT1002,2026-06-14 10:00:00,90.9,97.9,36.8,142.4,83.6,12.8 +PT1002,2026-06-14 10:15:00,90.3,97.9,36.9,142.6,85.8,13.2 +PT1002,2026-06-14 10:30:00,90.0,97.8,37.4,141.6,86.2,12.4 +PT1002,2026-06-14 10:45:00,92.1,97.7,37.0,141.0,86.5,12.8 +PT1002,2026-06-14 11:00:00,93.2,97.8,36.7,145.7,86.0,12.0 +PT1002,2026-06-14 11:15:00,93.2,98.1,36.8,144.4,85.6,12.3 +PT1002,2026-06-14 11:30:00,92.5,97.8,37.1,146.8,87.9,11.7 +PT1002,2026-06-14 11:45:00,94.1,97.9,37.2,145.8,85.6,12.1 +PT1002,2026-06-14 12:00:00,92.4,98.2,37.6,142.6,85.3,12.0 +PT1002,2026-06-14 12:15:00,92.1,98.1,36.9,139.9,84.3,11.7 +PT1002,2026-06-14 12:30:00,92.1,97.5,37.0,136.8,84.2,11.7 +PT1002,2026-06-14 12:45:00,92.0,97.4,36.9,136.8,84.8,11.9 +PT1002,2026-06-14 13:00:00,93.1,97.4,36.8,139.3,87.0,11.3 +PT1002,2026-06-14 13:15:00,94.1,97.0,37.1,142.1,86.4,11.6 +PT1002,2026-06-14 13:30:00,92.4,97.3,36.3,147.6,85.7,11.4 +PT1002,2026-06-14 13:45:00,94.0,97.5,37.3,144.1,82.6,10.7 +PT1002,2026-06-14 14:00:00,94.9,97.2,37.4,145.1,82.8,10.5 +PT1002,2026-06-14 14:15:00,93.4,97.5,37.0,143.7,85.5,10.1 +PT1002,2026-06-14 14:30:00,93.5,97.5,37.1,144.7,83.6,10.1 +PT1002,2026-06-14 14:45:00,92.9,97.6,37.0,142.0,83.1,9.8 +PT1002,2026-06-14 15:00:00,94.6,98.0,37.1,144.5,82.4,10.2 +PT1002,2026-06-14 15:15:00,94.6,98.0,37.0,148.0,84.4,10.5 +PT1002,2026-06-14 15:30:00,94.7,98.1,37.2,147.0,85.8,10.1 +PT1002,2026-06-14 15:45:00,91.9,98.0,36.9,151.1,87.4,10.7 +PT1002,2026-06-14 16:00:00,92.0,98.3,36.8,152.4,88.2,11.4 +PT1002,2026-06-14 16:15:00,91.8,97.8,37.3,150.2,89.8,11.0 +PT1002,2026-06-14 16:30:00,93.8,97.8,36.9,151.3,90.9,10.5 +PT1002,2026-06-14 16:45:00,92.6,97.6,36.8,152.7,90.0,10.5 +PT1002,2026-06-14 17:00:00,94.1,97.5,37.0,155.7,90.1,9.9 +PT1002,2026-06-14 17:15:00,92.8,97.6,36.9,155.2,90.3,9.8 +PT1002,2026-06-14 17:30:00,91.6,97.8,36.9,154.9,89.8,9.7 +PT1002,2026-06-14 17:45:00,91.2,97.9,37.0,152.8,88.5,10.2 +PT1002,2026-06-14 18:00:00,90.6,97.6,36.6,154.5,86.9,10.2 +PT1002,2026-06-14 18:15:00,91.6,97.8,36.9,155.5,84.6,10.6 +PT1002,2026-06-14 18:30:00,90.2,97.7,37.7,154.7,83.9,11.1 +PT1002,2026-06-14 18:45:00,88.5,97.6,37.4,155.0,83.3,11.2 +PT1002,2026-06-14 19:00:00,89.4,97.7,37.0,158.3,80.9,11.8 +PT1002,2026-06-14 19:15:00,90.4,97.5,37.4,156.5,81.9,11.1 +PT1002,2026-06-14 19:30:00,91.9,97.5,37.2,156.7,80.6,11.3 +PT1002,2026-06-14 19:45:00,90.8,97.4,37.3,156.4,80.1,10.8 +PT1002,2026-06-14 20:00:00,90.5,97.4,37.5,155.3,80.8,10.9 +PT1002,2026-06-14 20:15:00,91.1,97.3,37.0,153.8,82.1,10.8 +PT1002,2026-06-14 20:30:00,90.9,97.2,36.9,153.5,85.0,10.3 +PT1002,2026-06-14 20:45:00,92.6,97.1,37.3,152.6,86.5,9.8 +PT1002,2026-06-14 21:00:00,92.6,97.3,36.9,153.5,85.6,10.2 +PT1002,2026-06-14 21:15:00,93.1,97.6,37.0,156.2,85.2,10.4 +PT1002,2026-06-14 21:30:00,96.1,97.8,37.2,156.4,85.6,10.5 +PT1002,2026-06-14 21:45:00,95.8,97.6,36.9,156.1,83.9,10.8 +PT1002,2026-06-14 22:00:00,94.5,97.6,37.0,155.8,84.3,10.6 +PT1002,2026-06-14 22:15:00,95.3,97.8,37.2,157.0,84.4,10.7 +PT1002,2026-06-14 22:30:00,94.5,98.2,37.3,159.7,85.5,10.5 +PT1002,2026-06-14 22:45:00,95.7,97.8,37.5,163.1,82.9,10.8 +PT1002,2026-06-14 23:00:00,95.5,97.8,36.9,164.4,85.7,10.7 +PT1002,2026-06-14 23:15:00,95.0,97.4,37.4,166.2,84.9,10.6 +PT1002,2026-06-14 23:30:00,94.5,97.6,37.1,164.1,86.4,10.7 +PT1002,2026-06-14 23:45:00,94.7,97.3,36.9,164.3,86.2,10.2 +PT1002,2026-06-15 00:00:00,94.5,97.1,36.4,159.5,87.8,10.2 +PT1002,2026-06-15 00:15:00,97.1,97.4,37.2,158.8,86.5,10.3 +PT1002,2026-06-15 00:30:00,97.7,97.2,36.9,161.0,85.8,10.6 +PT1002,2026-06-15 00:45:00,100.8,97.4,37.3,166.8,87.0,10.4 +PT1002,2026-06-15 01:00:00,101.9,97.5,36.8,168.0,88.2,10.0 +PT1002,2026-06-15 01:15:00,100.9,97.5,37.2,167.6,86.7,10.3 +PT1002,2026-06-15 01:30:00,101.0,97.4,36.9,166.8,85.5,10.7 +PT1002,2026-06-15 01:45:00,101.2,97.8,37.2,166.2,86.9,10.9 +PT1002,2026-06-15 02:00:00,101.7,97.8,36.9,166.2,86.1,10.9 +PT1002,2026-06-15 02:15:00,102.9,97.4,37.4,167.2,86.6,11.0 +PT1002,2026-06-15 02:30:00,102.5,97.4,36.7,163.8,86.0,11.3 +PT1002,2026-06-15 02:45:00,102.6,97.3,37.2,163.5,85.0,10.8 +PT1002,2026-06-15 03:00:00,102.5,97.4,37.5,165.1,86.9,10.9 +PT1002,2026-06-15 03:15:00,101.3,97.7,36.8,166.0,87.2,11.1 +PT1002,2026-06-15 03:30:00,99.8,98.1,36.7,165.7,87.0,10.6 +PT1002,2026-06-15 03:45:00,99.6,98.0,37.0,165.7,87.1,11.6 +PT1002,2026-06-15 04:00:00,101.5,98.4,37.2,167.2,86.7,11.1 +PT1002,2026-06-15 04:15:00,102.7,98.8,36.9,165.3,86.4,10.7 +PT1002,2026-06-15 04:30:00,103.4,98.6,37.2,163.7,87.6,10.9 +PT1002,2026-06-15 04:45:00,102.6,99.0,36.4,163.7,91.1,11.0 +PT1002,2026-06-15 05:00:00,99.7,99.1,37.6,166.3,90.0,11.8 +PT1002,2026-06-15 05:15:00,99.9,99.2,37.2,168.1,92.8,12.1 +PT1002,2026-06-15 05:30:00,100.7,99.3,37.2,169.9,90.4,12.2 +PT1002,2026-06-15 05:45:00,100.5,99.5,37.6,173.8,90.6,12.5 +PT1002,2026-06-15 06:00:00,100.7,99.3,37.2,175.0,87.3,11.5 +PT1002,2026-06-15 06:15:00,97.8,98.9,37.4,174.3,86.3,11.5 +PT1002,2026-06-15 06:30:00,98.1,98.7,36.6,177.0,84.1,11.6 +PT1002,2026-06-15 06:45:00,98.4,98.6,36.9,179.1,85.2,11.3 +PT1002,2026-06-15 07:00:00,97.9,99.1,36.6,182.4,83.7,11.7 +PT1002,2026-06-15 07:15:00,97.4,98.9,37.1,184.5,81.8,11.8 +PT1002,2026-06-15 07:30:00,97.1,99.3,36.6,188.0,81.6,11.7 +PT1002,2026-06-15 07:45:00,97.1,99.7,37.0,187.8,82.7,11.1 +PT1002,2026-06-15 08:00:00,97.6,99.8,37.4,189.4,81.8,10.4 +PT1002,2026-06-15 08:15:00,96.5,99.9,36.9,190.3,79.3,10.9 +PT1002,2026-06-15 08:30:00,96.5,99.8,37.8,193.6,81.3,10.1 +PT1002,2026-06-15 08:45:00,95.7,100.0,37.0,193.1,80.8,10.0 +PT1002,2026-06-15 09:00:00,98.7,100.0,37.6,192.4,80.9,9.6 +PT1002,2026-06-15 09:15:00,96.9,99.8,37.6,194.3,81.0,9.9 +PT1002,2026-06-15 09:30:00,98.1,99.8,37.1,198.5,80.0,9.8 +PT1002,2026-06-15 09:45:00,97.9,99.5,37.7,195.3,80.7,9.6 +PT1002,2026-06-15 10:00:00,97.8,99.5,36.9,197.5,81.3,9.5 +PT1002,2026-06-15 10:15:00,102.2,99.5,37.7,199.7,79.7,9.3 +PT1002,2026-06-15 10:30:00,103.8,99.6,36.8,198.9,79.4,9.0 +PT1002,2026-06-15 10:45:00,104.8,99.8,37.0,200.4,78.9,9.1 +PT1002,2026-06-15 11:00:00,103.9,100.0,37.1,200.6,79.6,9.4 +PT1002,2026-06-15 11:15:00,104.1,99.7,37.1,198.8,78.2,9.7 +PT1002,2026-06-15 11:30:00,103.0,99.8,37.3,199.9,77.2,9.7 +PT1002,2026-06-15 11:45:00,101.9,100.0,37.2,200.5,75.7,9.8 +PT1002,2026-06-15 12:00:00,101.1,99.8,36.9,198.5,75.0,9.8 +PT1002,2026-06-15 12:15:00,99.3,99.6,37.4,197.7,76.2,10.0 +PT1002,2026-06-15 12:30:00,98.4,99.7,37.0,192.8,76.9,10.2 +PT1002,2026-06-15 12:45:00,98.7,99.3,37.0,191.2,78.0,10.4 +PT1002,2026-06-15 13:00:00,99.6,99.3,36.7,190.2,77.7,10.3 +PT1002,2026-06-15 13:15:00,101.1,99.1,37.3,188.6,75.4,9.2 +PT1002,2026-06-15 13:30:00,102.0,99.4,37.0,188.3,75.0,9.0 +PT1002,2026-06-15 13:45:00,103.3,99.4,36.5,189.0,74.3,9.5 +PT1002,2026-06-15 14:00:00,101.8,99.5,37.4,192.5,74.0,9.2 +PT1002,2026-06-15 14:15:00,102.1,99.8,37.0,189.9,75.8,8.6 +PT1002,2026-06-15 14:30:00,102.6,99.8,37.5,192.1,73.0,8.6 +PT1002,2026-06-15 14:45:00,102.6,99.5,36.8,194.1,72.1,8.3 +PT1002,2026-06-15 15:00:00,102.3,99.5,36.8,191.5,70.5,8.0 +PT1002,2026-06-15 15:15:00,102.3,99.6,37.2,192.0,70.8,8.7 +PT1002,2026-06-15 15:30:00,103.2,99.5,36.7,193.9,70.1,8.9 +PT1002,2026-06-15 15:45:00,103.3,99.2,37.7,195.7,71.4,8.7 +PT1002,2026-06-15 16:00:00,102.9,98.8,36.7,194.2,69.9,8.8 +PT1002,2026-06-15 16:15:00,102.2,98.9,37.0,194.5,69.8,8.9 +PT1002,2026-06-15 16:30:00,100.2,98.8,36.9,195.4,69.6,9.0 +PT1002,2026-06-15 16:45:00,101.4,98.1,37.0,195.7,71.7,9.6 +PT1002,2026-06-15 17:00:00,99.8,98.5,36.7,195.6,71.4,9.3 +PT1002,2026-06-15 17:15:00,100.4,98.6,36.7,196.0,70.3,8.8 +PT1002,2026-06-15 17:30:00,99.7,98.4,37.4,192.6,71.2,8.3 +PT1002,2026-06-15 17:45:00,100.1,98.4,37.0,195.9,69.3,8.7 +PT1002,2026-06-15 18:00:00,103.2,98.3,36.9,194.8,70.0,8.6 +PT1002,2026-06-15 18:15:00,101.9,98.7,37.4,192.5,70.3,9.0 +PT1002,2026-06-15 18:30:00,101.2,98.6,37.1,191.7,68.0,9.2 +PT1002,2026-06-15 18:45:00,102.8,98.4,36.4,193.9,69.7,9.2 +PT1002,2026-06-15 19:00:00,102.2,98.9,37.0,194.5,70.8,9.2 +PT1002,2026-06-15 19:15:00,99.9,99.0,37.0,196.6,69.3,9.1 +PT1002,2026-06-15 19:30:00,100.4,98.9,37.2,198.5,69.4,8.1 +PT1002,2026-06-15 19:45:00,101.5,98.6,37.4,199.3,72.2,8.2 +PT1002,2026-06-15 20:00:00,100.9,98.6,36.6,198.9,71.6,8.1 +PT1002,2026-06-15 20:15:00,100.5,98.9,37.1,197.0,70.0,8.1 +PT1002,2026-06-15 20:30:00,100.9,98.9,37.1,197.1,69.5,8.0 +PT1002,2026-06-15 20:45:00,101.7,99.0,37.5,193.6,69.9,8.0 +PT1002,2026-06-15 21:00:00,102.1,99.2,37.4,193.7,69.8,8.6 +PT1002,2026-06-15 21:15:00,102.2,99.1,37.3,190.2,70.3,8.5 +PT1002,2026-06-15 21:30:00,103.1,99.4,36.9,190.9,68.7,8.0 +PT1002,2026-06-15 21:45:00,104.7,99.9,37.4,190.4,66.5,8.0 +PT1002,2026-06-15 22:00:00,103.9,100.0,37.3,190.8,67.6,8.7 +PT1002,2026-06-15 22:15:00,104.0,100.0,37.2,191.5,66.4,9.0 +PT1002,2026-06-15 22:30:00,103.6,99.9,36.8,190.9,65.6,8.9 +PT1002,2026-06-15 22:45:00,104.0,99.9,37.5,191.6,65.5,8.8 +PT1002,2026-06-15 23:00:00,104.0,100.0,36.9,189.6,66.4,8.5 +PT1002,2026-06-15 23:15:00,103.5,99.9,37.2,188.6,68.2,8.5 +PT1002,2026-06-15 23:30:00,102.9,100.0,37.2,189.4,67.7,8.0 +PT1002,2026-06-15 23:45:00,103.5,99.7,36.9,188.8,68.5,8.0 +PT1002,2026-06-16 00:00:00,103.9,100.0,37.0,193.1,71.5,8.1 +PT1002,2026-06-16 00:15:00,104.9,99.8,37.2,191.6,71.0,8.0 +PT1002,2026-06-16 00:30:00,104.2,99.9,37.5,194.8,71.2,8.6 +PT1002,2026-06-16 00:45:00,104.8,99.8,37.2,196.9,70.8,8.6 +PT1002,2026-06-16 01:00:00,104.7,99.6,36.6,193.8,72.3,8.8 +PT1002,2026-06-16 01:15:00,103.8,99.6,37.3,194.7,70.0,8.8 +PT1002,2026-06-16 01:30:00,103.3,99.6,36.8,193.7,71.3,8.5 +PT1002,2026-06-16 01:45:00,103.3,99.3,36.7,189.5,73.0,8.1 +PT1002,2026-06-16 02:00:00,102.2,99.0,37.3,189.2,71.3,8.3 +PT1002,2026-06-16 02:15:00,100.7,98.9,37.4,188.2,71.1,8.7 +PT1002,2026-06-16 02:30:00,103.6,98.3,37.6,186.3,73.8,8.0 +PT1002,2026-06-16 02:45:00,103.7,98.3,37.1,183.8,73.1,8.7 +PT1002,2026-06-16 03:00:00,103.1,98.4,37.1,183.4,73.6,8.4 +PT1002,2026-06-16 03:15:00,102.3,98.0,37.4,184.4,71.8,8.3 +PT1002,2026-06-16 03:30:00,100.5,98.1,37.1,183.8,70.3,9.1 +PT1002,2026-06-16 03:45:00,99.7,97.9,37.1,185.5,69.4,9.4 +PT1002,2026-06-16 04:00:00,101.0,97.6,37.0,183.7,69.0,9.3 +PT1002,2026-06-16 04:15:00,104.2,98.2,36.8,184.3,69.6,9.2 +PT1002,2026-06-16 04:30:00,103.9,98.3,37.0,186.9,71.1,8.6 +PT1002,2026-06-16 04:45:00,102.1,98.6,37.9,186.1,71.0,8.8 +PT1002,2026-06-16 05:00:00,102.3,98.6,37.6,183.6,73.2,8.7 +PT1002,2026-06-16 05:15:00,103.6,98.4,37.1,180.8,73.6,8.5 +PT1002,2026-06-16 05:30:00,104.8,98.0,36.7,181.4,74.8,8.8 +PT1002,2026-06-16 05:45:00,105.2,98.3,36.9,182.1,74.6,9.3 +PT1002,2026-06-16 06:00:00,103.3,98.2,37.4,183.1,76.2,9.5 +PT1002,2026-06-16 06:15:00,104.5,98.2,37.2,182.8,78.1,9.0 +PT1002,2026-06-16 06:30:00,103.6,98.4,36.8,182.8,78.1,9.7 +PT1002,2026-06-16 06:45:00,103.8,98.4,36.7,183.9,81.0,9.5 +PT1002,2026-06-16 07:00:00,102.8,98.3,37.6,184.0,81.2,10.2 +PT1002,2026-06-16 07:15:00,104.3,98.9,37.3,185.6,82.8,10.5 +PT1002,2026-06-16 07:30:00,104.7,98.8,37.1,183.1,82.6,10.7 +PT1002,2026-06-16 07:45:00,103.4,98.8,37.3,182.7,82.6,10.9 +PT1002,2026-06-16 08:00:00,102.7,99.0,37.4,185.0,83.0,11.2 +PT1002,2026-06-16 08:15:00,101.3,99.3,36.5,183.4,82.0,11.3 +PT1002,2026-06-16 08:30:00,101.5,99.5,37.2,180.1,83.6,11.0 +PT1002,2026-06-16 08:45:00,100.8,99.6,37.0,182.1,84.6,11.0 +PT1002,2026-06-16 09:00:00,100.7,99.8,37.1,183.5,85.4,10.5 +PT1002,2026-06-16 09:15:00,99.9,99.9,36.5,182.0,86.1,10.4 +PT1002,2026-06-16 09:30:00,100.9,99.9,37.0,184.5,83.6,10.2 +PT1002,2026-06-16 09:45:00,101.2,99.5,37.1,185.6,86.5,10.4 +PT1002,2026-06-16 10:00:00,99.5,99.3,37.3,185.5,85.7,10.8 +PT1002,2026-06-16 10:15:00,102.7,99.1,37.3,185.6,83.6,10.0 +PT1002,2026-06-16 10:30:00,103.3,98.9,37.0,185.8,82.7,9.8 +PT1002,2026-06-16 10:45:00,102.1,98.7,37.0,184.4,83.3,8.6 +PT1002,2026-06-16 11:00:00,100.8,98.4,36.8,183.3,83.3,8.6 +PT1002,2026-06-16 11:15:00,101.6,98.2,36.9,181.9,83.7,8.7 +PT1002,2026-06-16 11:30:00,98.0,97.9,37.0,182.2,84.7,8.7 +PT1002,2026-06-16 11:45:00,100.7,97.8,37.3,183.4,82.7,8.2 +PT1002,2026-06-16 12:00:00,101.9,97.7,37.1,179.7,82.5,8.3 +PT1002,2026-06-16 12:15:00,101.2,97.7,37.1,178.2,80.8,8.6 +PT1002,2026-06-16 12:30:00,101.0,97.6,37.3,177.9,81.0,9.3 +PT1002,2026-06-16 12:45:00,100.1,97.4,37.2,176.2,80.7,9.0 +PT1002,2026-06-16 13:00:00,96.9,97.5,36.9,176.8,82.6,9.3 +PT1002,2026-06-16 13:15:00,97.8,97.5,37.1,172.9,82.9,9.1 +PT1002,2026-06-16 13:30:00,99.8,97.5,36.8,170.9,84.3,9.2 +PT1002,2026-06-16 13:45:00,97.8,97.3,36.7,172.6,83.9,9.2 +PT1002,2026-06-16 14:00:00,98.8,96.8,37.3,171.3,84.5,8.8 +PT1002,2026-06-16 14:15:00,97.7,96.5,37.4,173.8,84.7,9.0 +PT1002,2026-06-16 14:30:00,94.6,96.6,37.0,172.3,83.8,9.2 +PT1002,2026-06-16 14:45:00,95.3,96.6,36.9,172.6,83.1,8.8 +PT1002,2026-06-16 15:00:00,95.1,97.1,37.0,175.6,82.1,8.8 +PT1002,2026-06-16 15:15:00,95.3,97.1,37.0,176.6,77.7,8.9 +PT1002,2026-06-16 15:30:00,94.4,97.3,36.8,179.6,78.8,8.7 +PT1002,2026-06-16 15:45:00,90.8,97.4,36.7,180.7,78.6,9.1 +PT1002,2026-06-16 16:00:00,90.6,97.3,37.0,180.5,80.4,9.0 +PT1002,2026-06-16 16:15:00,89.5,97.6,37.2,177.7,79.5,9.7 +PT1002,2026-06-16 16:30:00,89.5,97.6,37.2,175.8,79.4,9.6 +PT1002,2026-06-16 16:45:00,87.7,97.7,37.2,177.8,79.1,9.8 +PT1002,2026-06-16 17:00:00,87.0,97.5,37.5,176.0,79.6,9.8 +PT1002,2026-06-16 17:15:00,87.9,97.7,37.1,176.5,78.1,10.0 +PT1002,2026-06-16 17:30:00,86.6,98.0,36.9,178.7,76.4,9.7 +PT1002,2026-06-16 17:45:00,87.3,98.1,37.2,178.8,76.8,9.2 +PT1002,2026-06-16 18:00:00,87.3,97.9,36.6,175.7,76.8,9.3 +PT1002,2026-06-16 18:15:00,87.3,97.9,37.2,174.6,77.4,9.3 +PT1002,2026-06-16 18:30:00,88.0,98.1,36.9,176.6,77.9,9.1 +PT1002,2026-06-16 18:45:00,86.7,98.1,36.9,179.3,77.4,9.3 +PT1002,2026-06-16 19:00:00,87.0,98.4,37.3,180.7,75.0,9.5 +PT1002,2026-06-16 19:15:00,87.2,98.6,37.4,179.0,75.1,9.9 +PT1002,2026-06-16 19:30:00,87.9,98.3,37.1,176.9,75.3,10.0 +PT1002,2026-06-16 19:45:00,86.9,98.4,37.0,177.1,75.7,10.2 +PT1002,2026-06-16 20:00:00,86.4,98.7,36.9,175.6,75.0,10.7 +PT1002,2026-06-16 20:15:00,86.3,98.6,37.2,172.0,74.8,10.3 +PT1002,2026-06-16 20:30:00,87.6,98.0,37.5,171.2,75.5,9.5 +PT1002,2026-06-16 20:45:00,88.1,98.3,37.7,170.1,74.9,9.4 +PT1002,2026-06-16 21:00:00,89.7,98.3,37.2,170.6,75.8,10.4 +PT1002,2026-06-16 21:15:00,89.8,98.2,36.7,171.1,74.9,10.5 +PT1002,2026-06-16 21:30:00,89.5,98.4,37.4,171.8,74.2,10.5 +PT1002,2026-06-16 21:45:00,88.0,98.1,37.4,170.0,74.2,9.9 +PT1002,2026-06-16 22:00:00,87.0,98.1,37.4,168.8,74.1,9.3 +PT1002,2026-06-16 22:15:00,85.8,97.9,37.2,173.6,75.0,9.7 +PT1002,2026-06-16 22:30:00,85.3,97.5,36.6,173.0,73.5,9.3 +PT1002,2026-06-16 22:45:00,85.5,97.9,36.2,174.1,73.3,9.3 +PT1002,2026-06-16 23:00:00,85.0,97.6,37.1,174.3,72.9,8.9 +PT1002,2026-06-16 23:15:00,85.2,97.9,36.8,175.7,73.3,8.5 +PT1002,2026-06-16 23:30:00,85.9,97.9,37.5,176.2,74.7,8.0 +PT1002,2026-06-16 23:45:00,87.1,97.4,37.3,180.9,75.2,8.0 +PT1003,2026-06-14 00:00:00,86.8,93.6,37.3,106.4,71.0,21.0 +PT1003,2026-06-14 00:15:00,85.9,93.8,37.7,106.4,68.9,20.9 +PT1003,2026-06-14 00:30:00,86.9,93.7,36.5,102.6,67.7,20.4 +PT1003,2026-06-14 00:45:00,87.9,93.8,36.7,106.2,66.2,20.4 +PT1003,2026-06-14 01:00:00,87.2,93.7,37.4,105.5,66.2,20.8 +PT1003,2026-06-14 01:15:00,86.2,93.7,37.3,107.1,67.8,20.5 +PT1003,2026-06-14 01:30:00,86.7,93.4,37.0,108.7,68.0,19.8 +PT1003,2026-06-14 01:45:00,86.7,93.3,37.0,111.1,69.9,19.6 +PT1003,2026-06-14 02:00:00,86.6,93.2,37.1,110.0,64.4,20.3 +PT1003,2026-06-14 02:15:00,86.3,93.3,36.5,109.8,63.7,19.9 +PT1003,2026-06-14 02:30:00,84.7,93.0,36.3,111.1,64.8,19.6 +PT1003,2026-06-14 02:45:00,84.8,92.9,36.8,110.2,66.2,19.6 +PT1003,2026-06-14 03:00:00,83.3,92.9,36.7,108.4,66.1,20.1 +PT1003,2026-06-14 03:15:00,83.5,93.1,37.2,108.2,67.2,19.9 +PT1003,2026-06-14 03:30:00,84.0,93.0,37.4,112.2,68.1,20.5 +PT1003,2026-06-14 03:45:00,84.4,93.3,36.8,112.6,67.0,20.5 +PT1003,2026-06-14 04:00:00,81.9,93.1,37.4,112.7,68.6,20.1 +PT1003,2026-06-14 04:15:00,80.5,92.9,37.2,115.6,68.6,20.1 +PT1003,2026-06-14 04:30:00,79.1,92.8,37.6,115.6,70.5,19.4 +PT1003,2026-06-14 04:45:00,79.0,92.5,36.9,113.0,70.9,18.8 +PT1003,2026-06-14 05:00:00,78.7,92.8,36.6,115.1,69.9,18.8 +PT1003,2026-06-14 05:15:00,76.3,92.5,36.7,117.3,71.1,18.9 +PT1003,2026-06-14 05:30:00,75.5,92.3,37.2,117.0,70.8,18.5 +PT1003,2026-06-14 05:45:00,75.9,92.1,37.2,117.6,72.5,19.1 +PT1003,2026-06-14 06:00:00,76.5,92.1,37.0,119.7,70.8,19.5 +PT1003,2026-06-14 06:15:00,78.3,92.2,37.2,119.5,70.5,19.7 +PT1003,2026-06-14 06:30:00,77.9,92.2,37.3,121.3,68.4,20.0 +PT1003,2026-06-14 06:45:00,79.4,92.1,37.2,121.3,68.8,20.2 +PT1003,2026-06-14 07:00:00,77.9,92.1,37.4,125.3,69.7,20.9 +PT1003,2026-06-14 07:15:00,79.6,92.2,37.3,126.4,70.1,20.9 +PT1003,2026-06-14 07:30:00,79.0,92.7,37.0,124.5,71.3,21.5 +PT1003,2026-06-14 07:45:00,77.7,93.0,37.6,124.9,72.5,21.4 +PT1003,2026-06-14 08:00:00,75.2,93.1,37.0,127.6,72.7,21.5 +PT1003,2026-06-14 08:15:00,75.3,92.7,36.9,126.2,71.5,21.8 +PT1003,2026-06-14 08:30:00,74.8,92.6,37.3,124.7,71.9,22.0 +PT1003,2026-06-14 08:45:00,75.6,92.7,36.8,124.0,71.3,21.6 +PT1003,2026-06-14 09:00:00,75.9,92.6,37.3,127.0,71.2,22.2 +PT1003,2026-06-14 09:15:00,75.0,92.6,36.8,123.6,71.5,21.9 +PT1003,2026-06-14 09:30:00,76.9,92.8,37.0,125.6,72.7,21.4 +PT1003,2026-06-14 09:45:00,76.6,92.4,37.9,124.5,71.9,21.5 +PT1003,2026-06-14 10:00:00,76.6,92.4,37.7,124.0,73.0,21.1 +PT1003,2026-06-14 10:15:00,76.5,92.3,37.5,125.9,71.6,21.3 +PT1003,2026-06-14 10:30:00,76.3,92.9,37.6,127.2,72.6,21.9 +PT1003,2026-06-14 10:45:00,76.6,93.1,37.1,130.0,70.9,21.2 +PT1003,2026-06-14 11:00:00,74.6,93.0,36.8,130.7,70.5,21.1 +PT1003,2026-06-14 11:15:00,75.6,92.7,37.1,126.4,70.2,21.5 +PT1003,2026-06-14 11:30:00,74.3,92.7,37.2,127.3,70.3,21.4 +PT1003,2026-06-14 11:45:00,72.3,92.5,37.2,124.7,72.3,21.7 +PT1003,2026-06-14 12:00:00,70.6,92.7,37.3,127.5,73.2,21.7 +PT1003,2026-06-14 12:15:00,71.0,93.0,37.0,129.3,72.8,21.4 +PT1003,2026-06-14 12:30:00,71.7,92.9,37.1,127.8,72.8,21.9 +PT1003,2026-06-14 12:45:00,71.5,93.0,37.2,128.0,69.9,22.1 +PT1003,2026-06-14 13:00:00,71.6,93.2,36.9,130.4,71.1,21.8 +PT1003,2026-06-14 13:15:00,73.0,92.8,37.2,130.1,71.8,21.1 +PT1003,2026-06-14 13:30:00,74.2,92.4,37.1,133.4,70.3,21.3 +PT1003,2026-06-14 13:45:00,74.4,92.1,36.7,135.9,70.8,22.0 +PT1003,2026-06-14 14:00:00,74.2,92.1,37.7,136.0,71.8,21.9 +PT1003,2026-06-14 14:15:00,74.4,91.4,36.8,136.2,73.7,21.5 +PT1003,2026-06-14 14:30:00,73.4,91.2,36.4,135.3,75.0,22.1 +PT1003,2026-06-14 14:45:00,73.0,91.2,36.3,135.7,77.9,21.3 +PT1003,2026-06-14 15:00:00,75.6,91.4,36.9,134.5,78.1,21.4 +PT1003,2026-06-14 15:15:00,75.8,91.5,36.7,138.5,79.6,22.1 +PT1003,2026-06-14 15:30:00,75.5,91.6,37.0,134.7,81.4,22.4 +PT1003,2026-06-14 15:45:00,75.3,91.9,37.3,133.1,83.3,22.3 +PT1003,2026-06-14 16:00:00,75.5,92.5,36.8,131.3,82.4,21.7 +PT1003,2026-06-14 16:15:00,76.4,92.9,37.4,133.0,82.4,21.3 +PT1003,2026-06-14 16:30:00,75.3,92.6,37.7,132.4,79.4,20.8 +PT1003,2026-06-14 16:45:00,73.5,92.3,36.5,132.5,79.6,20.7 +PT1003,2026-06-14 17:00:00,74.6,92.2,37.5,135.0,78.6,21.1 +PT1003,2026-06-14 17:15:00,74.1,92.4,37.3,132.3,79.0,21.6 +PT1003,2026-06-14 17:30:00,77.0,92.6,36.6,131.6,83.2,22.2 +PT1003,2026-06-14 17:45:00,76.2,92.3,36.6,132.9,84.1,22.4 +PT1003,2026-06-14 18:00:00,75.4,92.3,36.6,129.2,82.8,23.0 +PT1003,2026-06-14 18:15:00,77.3,92.5,36.9,128.6,81.8,23.3 +PT1003,2026-06-14 18:30:00,76.4,92.5,37.2,124.4,79.7,23.2 +PT1003,2026-06-14 18:45:00,75.5,92.5,37.2,121.2,81.0,23.3 +PT1003,2026-06-14 19:00:00,76.2,92.5,37.1,120.2,82.7,23.3 +PT1003,2026-06-14 19:15:00,76.2,92.5,36.8,119.8,83.4,23.0 +PT1003,2026-06-14 19:30:00,76.9,92.5,37.3,121.8,84.0,22.7 +PT1003,2026-06-14 19:45:00,78.4,92.6,36.9,123.1,83.8,23.1 +PT1003,2026-06-14 20:00:00,78.9,93.3,37.1,124.2,83.1,23.0 +PT1003,2026-06-14 20:15:00,80.0,93.3,37.1,122.9,82.2,23.0 +PT1003,2026-06-14 20:30:00,80.5,93.5,37.1,128.3,80.0,23.3 +PT1003,2026-06-14 20:45:00,78.4,93.8,37.0,129.2,81.2,22.6 +PT1003,2026-06-14 21:00:00,77.1,94.4,37.2,131.5,80.1,22.0 +PT1003,2026-06-14 21:15:00,78.5,93.9,37.0,129.6,78.5,22.4 +PT1003,2026-06-14 21:30:00,78.1,94.0,37.5,127.9,76.3,22.9 +PT1003,2026-06-14 21:45:00,78.4,94.0,37.1,130.4,76.6,22.7 +PT1003,2026-06-14 22:00:00,80.1,94.0,37.3,129.0,76.8,23.0 +PT1003,2026-06-14 22:15:00,80.8,93.8,37.3,130.6,76.8,22.7 +PT1003,2026-06-14 22:30:00,80.3,93.4,36.8,128.6,76.5,22.9 +PT1003,2026-06-14 22:45:00,80.1,93.1,37.4,130.5,79.1,23.6 +PT1003,2026-06-14 23:00:00,81.1,92.6,36.3,130.9,78.4,23.9 +PT1003,2026-06-14 23:15:00,81.4,92.6,36.8,133.1,80.7,23.6 +PT1003,2026-06-14 23:30:00,81.7,93.0,37.2,133.3,78.8,23.3 +PT1003,2026-06-14 23:45:00,82.0,92.8,36.8,132.0,77.3,23.8 +PT1003,2026-06-15 00:00:00,81.5,92.7,36.7,128.8,76.0,24.3 +PT1003,2026-06-15 00:15:00,80.4,92.4,37.1,128.6,78.8,24.2 +PT1003,2026-06-15 00:30:00,79.5,92.4,37.5,131.1,79.1,25.1 +PT1003,2026-06-15 00:45:00,79.4,92.4,37.7,134.3,79.3,25.6 +PT1003,2026-06-15 01:00:00,79.2,92.5,36.7,136.3,80.4,25.9 +PT1003,2026-06-15 01:15:00,78.2,92.3,37.3,138.7,78.6,26.5 +PT1003,2026-06-15 01:30:00,79.7,92.1,37.2,138.9,79.0,26.6 +PT1003,2026-06-15 01:45:00,79.4,92.1,37.4,140.9,77.3,27.3 +PT1003,2026-06-15 02:00:00,78.3,92.2,37.1,142.7,75.4,27.3 +PT1003,2026-06-15 02:15:00,77.5,92.3,37.3,141.5,77.5,27.0 +PT1003,2026-06-15 02:30:00,75.6,92.2,36.9,141.6,77.2,26.9 +PT1003,2026-06-15 02:45:00,76.6,92.5,36.8,141.4,75.5,27.6 +PT1003,2026-06-15 03:00:00,74.9,92.0,37.3,141.6,75.2,28.0 +PT1003,2026-06-15 03:15:00,75.3,91.9,37.0,143.8,78.0,28.4 +PT1003,2026-06-15 03:30:00,76.3,91.8,37.1,141.6,76.7,28.3 +PT1003,2026-06-15 03:45:00,78.8,91.6,36.9,144.2,76.2,27.5 +PT1003,2026-06-15 04:00:00,80.3,91.7,36.8,145.1,78.2,27.0 +PT1003,2026-06-15 04:15:00,77.6,92.0,36.6,146.2,79.3,26.6 +PT1003,2026-06-15 04:30:00,76.1,91.7,37.2,149.3,80.8,26.4 +PT1003,2026-06-15 04:45:00,75.3,91.8,37.3,147.0,81.9,26.0 +PT1003,2026-06-15 05:00:00,74.9,91.6,37.3,150.2,82.2,25.9 +PT1003,2026-06-15 05:15:00,73.3,91.9,37.0,150.0,83.1,25.3 +PT1003,2026-06-15 05:30:00,73.4,92.2,37.5,151.3,82.5,25.4 +PT1003,2026-06-15 05:45:00,73.2,92.1,37.1,147.5,82.0,24.7 +PT1003,2026-06-15 06:00:00,74.5,91.6,36.9,150.0,81.6,24.7 +PT1003,2026-06-15 06:15:00,72.5,91.4,37.1,154.2,79.9,24.1 +PT1003,2026-06-15 06:30:00,72.5,91.3,37.2,154.2,80.9,23.8 +PT1003,2026-06-15 06:45:00,73.8,91.1,37.1,149.6,81.9,24.9 +PT1003,2026-06-15 07:00:00,74.1,91.0,37.4,152.8,81.8,24.8 +PT1003,2026-06-15 07:15:00,73.6,90.7,37.7,154.5,80.9,24.4 +PT1003,2026-06-15 07:30:00,73.5,90.9,37.2,154.6,79.5,24.7 +PT1003,2026-06-15 07:45:00,72.7,91.0,37.2,153.6,77.9,24.2 +PT1003,2026-06-15 08:00:00,72.3,91.4,36.7,153.5,76.7,24.2 +PT1003,2026-06-15 08:15:00,72.3,91.5,37.3,153.9,78.7,25.3 +PT1003,2026-06-15 08:30:00,73.8,92.1,37.4,151.9,78.9,25.1 +PT1003,2026-06-15 08:45:00,74.2,91.9,36.9,151.9,80.4,24.6 +PT1003,2026-06-15 09:00:00,73.1,92.0,36.8,154.4,77.4,24.6 +PT1003,2026-06-15 09:15:00,74.4,92.0,37.7,154.6,77.4,25.1 +PT1003,2026-06-15 09:30:00,73.1,91.7,37.4,155.3,76.2,25.4 +PT1003,2026-06-15 09:45:00,72.6,91.6,36.4,154.7,76.3,25.6 +PT1003,2026-06-15 10:00:00,71.5,91.5,36.7,153.1,72.1,24.8 +PT1003,2026-06-15 10:15:00,71.4,91.4,37.1,151.9,73.2,25.1 +PT1003,2026-06-15 10:30:00,71.6,91.2,37.3,150.4,70.7,25.0 +PT1003,2026-06-15 10:45:00,73.3,91.1,37.0,151.4,66.4,24.8 +PT1003,2026-06-15 11:00:00,75.2,91.2,37.6,152.4,67.1,24.9 +PT1003,2026-06-15 11:15:00,72.5,91.3,36.9,154.6,64.2,25.2 +PT1003,2026-06-15 11:30:00,72.7,91.1,37.2,156.5,63.8,25.5 +PT1003,2026-06-15 11:45:00,71.8,91.2,37.4,155.2,63.9,25.4 +PT1003,2026-06-15 12:00:00,72.6,91.2,36.9,153.8,62.0,25.5 +PT1003,2026-06-15 12:15:00,70.4,90.9,37.0,157.1,61.0,25.9 +PT1003,2026-06-15 12:30:00,72.0,91.2,36.9,155.4,58.0,25.1 +PT1003,2026-06-15 12:45:00,74.3,91.1,37.1,155.7,60.0,25.2 +PT1003,2026-06-15 13:00:00,75.1,91.2,37.4,155.5,58.9,25.2 +PT1003,2026-06-15 13:15:00,77.3,91.3,37.3,157.0,59.3,25.2 +PT1003,2026-06-15 13:30:00,78.8,91.1,37.4,154.1,58.5,25.3 +PT1003,2026-06-15 13:45:00,77.7,90.5,36.9,153.1,58.2,24.8 +PT1003,2026-06-15 14:00:00,78.8,90.5,37.0,153.8,57.7,24.5 +PT1003,2026-06-15 14:15:00,79.4,90.1,37.3,157.1,58.5,24.3 +PT1003,2026-06-15 14:30:00,80.9,90.1,37.1,156.7,60.8,25.1 +PT1003,2026-06-15 14:45:00,79.6,90.0,37.2,158.7,59.2,25.0 +PT1003,2026-06-15 15:00:00,78.5,90.3,36.8,160.1,62.2,25.4 +PT1003,2026-06-15 15:15:00,79.2,90.5,36.8,162.2,61.1,25.0 +PT1003,2026-06-15 15:30:00,81.2,90.7,36.8,160.6,61.3,25.0 +PT1003,2026-06-15 15:45:00,81.2,90.8,36.8,164.4,60.3,24.3 +PT1003,2026-06-15 16:00:00,80.2,90.7,37.1,162.3,61.5,23.8 +PT1003,2026-06-15 16:15:00,82.6,90.8,37.3,163.2,64.3,24.3 +PT1003,2026-06-15 16:30:00,82.3,90.8,37.2,163.1,63.7,24.4 +PT1003,2026-06-15 16:45:00,80.8,91.2,37.4,163.9,63.3,24.5 +PT1003,2026-06-15 17:00:00,79.1,91.2,36.7,161.5,67.3,24.6 +PT1003,2026-06-15 17:15:00,83.5,91.1,37.2,161.1,67.1,24.2 +PT1003,2026-06-15 17:30:00,80.8,91.4,37.0,158.9,66.5,24.5 +PT1003,2026-06-15 17:45:00,80.7,91.2,37.2,163.1,67.3,24.1 +PT1003,2026-06-15 18:00:00,79.3,91.6,37.0,163.5,65.8,24.4 +PT1003,2026-06-15 18:15:00,77.8,91.7,37.1,164.2,67.5,24.4 +PT1003,2026-06-15 18:30:00,78.1,92.1,37.2,163.5,68.2,24.6 +PT1003,2026-06-15 18:45:00,77.7,92.1,36.8,163.4,71.1,24.4 +PT1003,2026-06-15 19:00:00,77.7,92.1,37.1,163.7,70.5,24.5 +PT1003,2026-06-15 19:15:00,78.9,92.2,36.8,163.9,71.2,24.8 +PT1003,2026-06-15 19:30:00,77.4,92.6,37.0,165.4,70.9,24.8 +PT1003,2026-06-15 19:45:00,77.7,92.4,36.8,167.0,71.2,24.9 +PT1003,2026-06-15 20:00:00,78.4,92.1,37.2,165.7,71.3,25.9 +PT1003,2026-06-15 20:15:00,75.4,92.0,37.1,167.0,69.6,26.3 +PT1003,2026-06-15 20:30:00,76.6,91.9,37.1,165.7,70.5,26.3 +PT1003,2026-06-15 20:45:00,78.6,92.0,37.5,161.8,71.7,26.5 +PT1003,2026-06-15 21:00:00,77.5,92.1,37.0,162.0,70.2,26.9 +PT1003,2026-06-15 21:15:00,78.9,91.9,36.9,159.1,69.9,27.0 +PT1003,2026-06-15 21:30:00,75.3,92.0,37.0,159.8,70.9,26.9 +PT1003,2026-06-15 21:45:00,77.1,91.6,37.2,159.3,71.1,27.1 +PT1003,2026-06-15 22:00:00,76.0,91.9,37.2,159.3,68.6,27.2 +PT1003,2026-06-15 22:15:00,78.4,92.1,36.9,156.4,66.4,27.7 +PT1003,2026-06-15 22:30:00,76.6,92.3,37.5,155.4,67.8,27.3 +PT1003,2026-06-15 22:45:00,77.7,92.1,36.9,152.1,71.3,27.2 +PT1003,2026-06-15 23:00:00,79.5,92.4,36.7,154.5,71.2,28.0 +PT1003,2026-06-15 23:15:00,78.8,92.5,37.0,156.8,72.1,28.0 +PT1003,2026-06-15 23:30:00,80.3,92.7,36.9,155.1,70.8,27.7 +PT1003,2026-06-15 23:45:00,81.6,92.8,36.6,156.2,71.1,27.8 +PT1003,2026-06-16 00:00:00,82.5,92.7,37.3,156.1,70.4,27.9 +PT1003,2026-06-16 00:15:00,81.4,92.7,36.8,155.2,72.4,27.5 +PT1003,2026-06-16 00:30:00,81.0,92.5,37.4,154.8,71.6,27.5 +PT1003,2026-06-16 00:45:00,81.1,92.5,37.3,152.6,71.4,27.3 +PT1003,2026-06-16 01:00:00,80.2,92.3,37.2,153.3,74.3,27.2 +PT1003,2026-06-16 01:15:00,81.4,92.5,36.9,154.3,74.2,27.2 +PT1003,2026-06-16 01:30:00,82.0,92.6,37.4,155.7,73.5,27.5 +PT1003,2026-06-16 01:45:00,80.6,92.5,37.1,158.1,72.5,27.8 +PT1003,2026-06-16 02:00:00,81.0,92.5,37.5,159.6,70.9,27.4 +PT1003,2026-06-16 02:15:00,83.6,92.5,37.5,163.0,69.8,27.2 +PT1003,2026-06-16 02:30:00,84.5,92.9,37.5,164.0,68.3,27.3 +PT1003,2026-06-16 02:45:00,84.4,92.9,37.1,164.9,67.4,27.4 +PT1003,2026-06-16 03:00:00,83.8,93.1,37.0,166.2,66.9,27.4 +PT1003,2026-06-16 03:15:00,83.1,92.7,37.2,165.2,66.0,27.4 +PT1003,2026-06-16 03:30:00,82.1,92.8,37.3,163.3,65.8,27.2 +PT1003,2026-06-16 03:45:00,82.3,92.8,36.9,162.1,65.3,27.9 +PT1003,2026-06-16 04:00:00,82.9,92.7,37.3,163.0,66.5,27.8 +PT1003,2026-06-16 04:15:00,86.3,92.9,37.2,166.2,67.3,27.4 +PT1003,2026-06-16 04:30:00,85.9,92.7,37.9,166.1,67.0,27.0 +PT1003,2026-06-16 04:45:00,86.8,92.8,37.3,166.2,68.8,27.8 +PT1003,2026-06-16 05:00:00,87.0,93.2,37.0,166.5,69.5,28.2 +PT1003,2026-06-16 05:15:00,84.5,93.1,37.0,168.1,70.5,28.7 +PT1003,2026-06-16 05:30:00,86.4,93.1,36.8,169.3,71.9,28.2 +PT1003,2026-06-16 05:45:00,85.2,93.4,36.7,168.7,74.9,28.2 +PT1003,2026-06-16 06:00:00,84.4,93.4,37.4,169.7,73.5,28.4 +PT1003,2026-06-16 06:15:00,83.6,93.9,37.5,168.6,72.0,27.8 +PT1003,2026-06-16 06:30:00,83.7,93.8,36.5,165.7,71.4,28.8 +PT1003,2026-06-16 06:45:00,83.0,94.2,37.2,168.2,70.5,28.8 +PT1003,2026-06-16 07:00:00,83.1,94.7,36.5,168.9,72.2,28.9 +PT1003,2026-06-16 07:15:00,81.7,94.4,37.1,168.4,75.3,29.1 +PT1003,2026-06-16 07:30:00,83.3,94.1,37.4,167.4,74.4,29.2 +PT1003,2026-06-16 07:45:00,83.8,94.2,37.3,166.7,74.9,28.9 +PT1003,2026-06-16 08:00:00,83.3,93.9,37.3,166.7,72.0,29.5 +PT1003,2026-06-16 08:15:00,83.7,93.5,36.6,165.3,72.1,29.4 +PT1003,2026-06-16 08:30:00,82.1,93.4,36.9,162.8,74.1,29.6 +PT1003,2026-06-16 08:45:00,83.6,93.7,36.9,163.4,74.1,29.5 +PT1003,2026-06-16 09:00:00,82.0,94.0,37.0,162.3,74.1,29.1 +PT1003,2026-06-16 09:15:00,85.4,93.9,37.5,165.2,74.1,29.4 +PT1003,2026-06-16 09:30:00,85.8,93.8,36.7,164.8,73.8,30.1 +PT1003,2026-06-16 09:45:00,83.7,93.3,36.9,163.1,74.9,30.4 +PT1003,2026-06-16 10:00:00,83.6,93.1,37.0,161.0,75.7,30.8 +PT1003,2026-06-16 10:15:00,85.6,93.3,37.8,164.2,75.3,31.4 +PT1003,2026-06-16 10:30:00,85.1,93.3,36.9,162.3,73.6,31.0 +PT1003,2026-06-16 10:45:00,85.5,93.1,37.1,162.8,74.0,30.8 +PT1003,2026-06-16 11:00:00,84.9,93.0,36.8,161.2,74.1,30.6 +PT1003,2026-06-16 11:15:00,85.6,93.2,37.2,163.4,72.6,30.4 +PT1003,2026-06-16 11:30:00,85.0,93.3,37.3,164.4,73.3,30.9 +PT1003,2026-06-16 11:45:00,85.2,93.3,37.2,164.1,71.7,30.2 +PT1003,2026-06-16 12:00:00,86.7,93.2,37.4,167.3,71.4,29.5 +PT1003,2026-06-16 12:15:00,86.1,93.4,37.2,164.8,72.0,29.1 +PT1003,2026-06-16 12:30:00,87.1,93.6,37.4,164.9,70.0,29.4 +PT1003,2026-06-16 12:45:00,85.8,93.3,37.2,167.0,69.7,29.1 +PT1003,2026-06-16 13:00:00,85.1,93.4,36.4,166.2,69.2,29.5 +PT1003,2026-06-16 13:15:00,85.7,93.6,36.9,165.0,70.6,29.1 +PT1003,2026-06-16 13:30:00,84.8,93.9,37.3,161.5,73.0,29.0 +PT1003,2026-06-16 13:45:00,85.5,93.9,36.9,160.3,74.9,28.8 +PT1003,2026-06-16 14:00:00,86.5,93.9,37.2,163.0,74.8,28.6 +PT1003,2026-06-16 14:15:00,86.0,93.8,36.8,164.7,77.6,28.5 +PT1003,2026-06-16 14:30:00,85.8,93.9,36.8,165.2,79.3,28.7 +PT1003,2026-06-16 14:45:00,85.2,93.5,36.9,167.5,76.4,28.2 +PT1003,2026-06-16 15:00:00,85.9,93.4,36.7,166.7,75.8,28.3 +PT1003,2026-06-16 15:15:00,84.8,93.8,37.1,167.5,77.0,28.3 +PT1003,2026-06-16 15:30:00,85.4,94.0,36.4,169.2,76.8,28.7 +PT1003,2026-06-16 15:45:00,86.5,93.9,37.2,170.3,75.8,28.2 +PT1003,2026-06-16 16:00:00,84.7,93.8,37.0,168.7,75.6,28.5 +PT1003,2026-06-16 16:15:00,85.1,94.0,37.1,167.5,74.7,29.0 +PT1003,2026-06-16 16:30:00,85.7,94.1,36.5,165.1,73.5,29.2 +PT1003,2026-06-16 16:45:00,85.4,93.9,37.1,167.3,74.0,29.6 +PT1003,2026-06-16 17:00:00,85.3,93.8,36.8,166.3,78.1,30.0 +PT1003,2026-06-16 17:15:00,88.5,93.7,36.9,167.0,79.5,29.4 +PT1003,2026-06-16 17:30:00,90.5,93.7,37.6,169.0,78.8,29.3 +PT1003,2026-06-16 17:45:00,91.0,93.6,37.3,167.6,77.9,29.8 +PT1003,2026-06-16 18:00:00,89.6,93.6,37.4,167.5,78.4,29.6 +PT1003,2026-06-16 18:15:00,89.6,93.7,37.6,165.9,77.3,30.6 +PT1003,2026-06-16 18:30:00,89.5,94.1,37.3,168.3,76.3,30.3 +PT1003,2026-06-16 18:45:00,89.8,94.0,36.7,169.8,74.2,30.4 +PT1003,2026-06-16 19:00:00,88.3,93.8,37.2,170.5,73.2,29.9 +PT1003,2026-06-16 19:15:00,90.1,93.9,37.3,174.1,75.3,29.7 +PT1003,2026-06-16 19:30:00,90.0,94.2,37.2,173.9,74.1,30.3 +PT1003,2026-06-16 19:45:00,89.2,94.1,37.2,172.6,72.6,30.1 +PT1003,2026-06-16 20:00:00,89.3,94.0,37.1,175.5,69.6,30.2 +PT1003,2026-06-16 20:15:00,88.1,94.1,37.7,175.1,71.4,30.5 +PT1003,2026-06-16 20:30:00,87.5,94.4,37.3,172.8,71.3,30.4 +PT1003,2026-06-16 20:45:00,88.2,94.2,37.1,174.1,70.7,30.0 +PT1003,2026-06-16 21:00:00,86.4,94.4,37.6,174.0,70.7,30.0 +PT1003,2026-06-16 21:15:00,88.3,94.7,37.2,173.8,69.0,30.0 +PT1003,2026-06-16 21:30:00,89.2,94.8,37.3,171.8,68.2,29.7 +PT1003,2026-06-16 21:45:00,89.9,95.0,37.1,172.4,65.1,29.0 +PT1003,2026-06-16 22:00:00,90.0,95.3,37.1,172.5,63.6,29.3 +PT1003,2026-06-16 22:15:00,89.5,94.9,37.3,172.7,64.0,28.9 +PT1003,2026-06-16 22:30:00,90.3,94.9,36.9,172.7,65.4,29.1 +PT1003,2026-06-16 22:45:00,90.1,95.0,37.5,168.6,64.0,29.3 +PT1003,2026-06-16 23:00:00,91.3,95.2,36.5,168.9,62.5,29.2 +PT1003,2026-06-16 23:15:00,92.8,95.0,36.7,167.8,64.0,28.6 +PT1003,2026-06-16 23:30:00,93.1,95.1,37.3,167.7,64.0,29.1 +PT1003,2026-06-16 23:45:00,93.7,95.3,37.5,167.1,67.2,28.2 +PT1004,2026-06-14 00:00:00,79.1,99.2,37.1,168.2,96.8,16.4 +PT1004,2026-06-14 00:15:00,78.2,99.4,36.8,171.3,93.9,17.4 +PT1004,2026-06-14 00:30:00,77.1,99.1,36.9,171.3,92.0,16.9 +PT1004,2026-06-14 00:45:00,77.2,99.1,37.0,173.8,93.8,17.3 +PT1004,2026-06-14 01:00:00,75.0,98.7,36.7,175.8,95.0,17.1 +PT1004,2026-06-14 01:15:00,73.8,98.7,37.0,176.2,96.6,16.9 +PT1004,2026-06-14 01:30:00,75.1,98.2,37.3,176.8,96.1,17.2 +PT1004,2026-06-14 01:45:00,74.3,98.1,37.5,172.2,97.2,17.3 +PT1004,2026-06-14 02:00:00,73.9,98.3,36.9,170.1,93.2,17.2 +PT1004,2026-06-14 02:15:00,72.6,98.5,37.1,172.5,93.3,17.2 +PT1004,2026-06-14 02:30:00,71.9,98.7,37.3,169.4,91.7,16.9 +PT1004,2026-06-14 02:45:00,71.5,99.0,37.0,171.0,90.5,17.1 +PT1004,2026-06-14 03:00:00,72.1,99.2,37.2,173.3,90.8,17.8 +PT1004,2026-06-14 03:15:00,72.3,99.1,37.2,172.0,91.5,17.8 +PT1004,2026-06-14 03:30:00,72.9,99.2,37.0,176.0,90.7,18.0 +PT1004,2026-06-14 03:45:00,70.0,99.2,37.2,174.2,90.6,18.0 +PT1004,2026-06-14 04:00:00,69.4,99.1,37.1,175.6,89.4,17.2 +PT1004,2026-06-14 04:15:00,70.7,99.2,37.0,175.9,91.2,17.7 +PT1004,2026-06-14 04:30:00,71.1,99.3,36.9,175.7,92.9,17.6 +PT1004,2026-06-14 04:45:00,68.0,99.1,37.3,173.1,92.9,17.1 +PT1004,2026-06-14 05:00:00,69.4,99.1,37.6,171.1,93.3,17.8 +PT1004,2026-06-14 05:15:00,67.7,98.7,36.9,167.7,91.6,17.9 +PT1004,2026-06-14 05:30:00,66.8,99.0,37.3,168.8,89.0,18.3 +PT1004,2026-06-14 05:45:00,67.5,98.9,36.8,168.4,86.1,18.7 +PT1004,2026-06-14 06:00:00,66.5,98.6,37.1,172.0,85.1,19.1 +PT1004,2026-06-14 06:15:00,65.5,98.4,37.0,170.8,85.0,19.3 +PT1004,2026-06-14 06:30:00,65.0,98.2,36.9,168.4,83.0,19.7 +PT1004,2026-06-14 06:45:00,64.5,98.0,37.2,167.7,83.6,19.5 +PT1004,2026-06-14 07:00:00,66.3,97.8,36.7,166.9,84.6,20.1 +PT1004,2026-06-14 07:15:00,64.3,97.8,37.1,166.7,85.6,20.3 +PT1004,2026-06-14 07:30:00,65.6,97.6,36.7,167.1,83.8,20.3 +PT1004,2026-06-14 07:45:00,64.4,98.1,37.8,163.4,83.5,20.6 +PT1004,2026-06-14 08:00:00,64.6,98.1,36.9,163.5,85.1,20.8 +PT1004,2026-06-14 08:15:00,66.0,98.0,37.1,160.3,82.7,20.7 +PT1004,2026-06-14 08:30:00,67.3,98.2,36.7,160.5,84.2,20.7 +PT1004,2026-06-14 08:45:00,65.5,98.5,37.2,156.0,83.9,21.9 +PT1004,2026-06-14 09:00:00,65.3,98.1,37.1,159.2,85.7,22.2 +PT1004,2026-06-14 09:15:00,66.1,98.1,37.3,157.3,87.1,22.2 +PT1004,2026-06-14 09:30:00,66.0,98.2,38.0,157.2,87.0,22.2 +PT1004,2026-06-14 09:45:00,67.0,98.8,37.6,157.2,86.5,21.8 +PT1004,2026-06-14 10:00:00,66.0,99.3,37.0,155.2,87.9,21.1 +PT1004,2026-06-14 10:15:00,66.1,99.2,36.5,154.9,87.6,21.4 +PT1004,2026-06-14 10:30:00,65.4,99.5,36.8,156.0,89.5,21.8 +PT1004,2026-06-14 10:45:00,66.3,99.5,37.3,160.5,90.7,22.0 +PT1004,2026-06-14 11:00:00,66.9,99.6,37.4,160.0,91.5,22.3 +PT1004,2026-06-14 11:15:00,68.1,100.0,36.8,162.2,92.5,21.9 +PT1004,2026-06-14 11:30:00,67.8,100.0,37.0,165.0,88.3,21.5 +PT1004,2026-06-14 11:45:00,66.7,99.8,37.5,164.0,86.9,21.2 +PT1004,2026-06-14 12:00:00,67.5,100.0,37.3,164.0,88.4,21.5 +PT1004,2026-06-14 12:15:00,66.8,99.8,36.9,166.1,87.6,21.0 +PT1004,2026-06-14 12:30:00,68.7,99.7,37.3,166.7,86.7,21.3 +PT1004,2026-06-14 12:45:00,66.9,99.8,37.7,163.4,85.9,21.3 +PT1004,2026-06-14 13:00:00,67.4,99.6,37.4,162.7,87.3,21.0 +PT1004,2026-06-14 13:15:00,66.8,99.3,37.1,161.8,84.8,20.1 +PT1004,2026-06-14 13:30:00,66.8,99.4,36.7,161.6,88.3,20.2 +PT1004,2026-06-14 13:45:00,65.5,99.4,37.1,160.7,86.5,20.2 +PT1004,2026-06-14 14:00:00,67.5,99.2,36.8,159.9,88.9,20.3 +PT1004,2026-06-14 14:15:00,66.7,98.9,36.7,160.0,90.4,20.9 +PT1004,2026-06-14 14:30:00,67.8,98.9,37.3,159.5,89.8,20.2 +PT1004,2026-06-14 14:45:00,66.2,98.7,37.5,160.3,87.1,19.6 +PT1004,2026-06-14 15:00:00,66.4,98.6,36.8,160.6,88.1,20.1 +PT1004,2026-06-14 15:15:00,65.3,98.7,37.0,161.9,86.1,19.7 +PT1004,2026-06-14 15:30:00,65.4,98.7,36.8,159.2,86.1,19.4 +PT1004,2026-06-14 15:45:00,65.4,98.7,36.6,160.8,84.8,19.5 +PT1004,2026-06-14 16:00:00,65.1,98.8,37.0,161.8,85.7,19.8 +PT1004,2026-06-14 16:15:00,65.8,99.3,37.0,160.9,87.7,20.2 +PT1004,2026-06-14 16:30:00,65.6,99.3,36.5,162.6,88.3,20.0 +PT1004,2026-06-14 16:45:00,66.5,98.8,37.2,159.8,87.7,19.5 +PT1004,2026-06-14 17:00:00,66.2,99.0,37.1,156.6,86.7,19.5 +PT1004,2026-06-14 17:15:00,67.1,98.8,37.2,155.7,87.5,18.6 +PT1004,2026-06-14 17:30:00,68.1,98.5,37.2,155.0,89.7,18.9 +PT1004,2026-06-14 17:45:00,69.3,98.9,37.0,155.1,89.1,19.3 +PT1004,2026-06-14 18:00:00,68.2,98.8,36.8,155.7,88.4,19.1 +PT1004,2026-06-14 18:15:00,70.0,98.7,37.3,154.3,87.5,19.5 +PT1004,2026-06-14 18:30:00,69.5,98.7,37.3,154.8,86.5,18.8 +PT1004,2026-06-14 18:45:00,68.7,98.8,36.9,155.5,86.6,18.7 +PT1004,2026-06-14 19:00:00,67.4,98.7,37.1,156.6,88.7,19.2 +PT1004,2026-06-14 19:15:00,69.1,98.6,36.6,154.0,91.5,19.4 +PT1004,2026-06-14 19:30:00,71.0,98.4,36.8,153.0,93.1,19.9 +PT1004,2026-06-14 19:45:00,72.8,98.6,36.6,151.4,92.7,20.5 +PT1004,2026-06-14 20:00:00,74.5,98.9,37.7,152.4,92.9,21.3 +PT1004,2026-06-14 20:15:00,73.8,99.0,37.4,156.1,91.7,21.4 +PT1004,2026-06-14 20:30:00,71.4,99.2,36.4,154.0,92.0,21.9 +PT1004,2026-06-14 20:45:00,72.4,99.7,36.6,152.9,92.9,22.4 +PT1004,2026-06-14 21:00:00,73.3,100.0,37.5,154.2,93.0,22.0 +PT1004,2026-06-14 21:15:00,73.4,99.8,37.1,153.5,93.6,21.4 +PT1004,2026-06-14 21:30:00,72.9,100.0,36.5,149.8,95.0,22.0 +PT1004,2026-06-14 21:45:00,70.9,100.0,37.2,148.0,99.6,21.2 +PT1004,2026-06-14 22:00:00,70.9,99.9,36.8,148.9,100.4,21.2 +PT1004,2026-06-14 22:15:00,72.2,100.0,36.9,149.1,101.3,21.5 +PT1004,2026-06-14 22:30:00,72.9,99.9,37.0,150.7,101.0,21.7 +PT1004,2026-06-14 22:45:00,73.7,99.6,37.2,150.8,102.5,21.9 +PT1004,2026-06-14 23:00:00,75.9,99.9,37.6,152.5,103.5,22.2 +PT1004,2026-06-14 23:15:00,75.4,100.0,37.2,153.2,102.9,22.2 +PT1004,2026-06-14 23:30:00,74.4,100.0,37.1,153.0,103.0,22.7 +PT1004,2026-06-14 23:45:00,76.3,99.9,37.4,150.8,102.6,21.6 +PT1004,2026-06-15 00:00:00,75.0,99.7,36.5,152.3,102.8,21.4 +PT1004,2026-06-15 00:15:00,76.6,99.9,37.4,156.4,101.9,20.8 +PT1004,2026-06-15 00:30:00,76.4,100.0,37.2,159.6,102.4,20.9 +PT1004,2026-06-15 00:45:00,74.4,100.0,37.1,162.0,103.2,20.3 +PT1004,2026-06-15 01:00:00,76.2,99.9,37.0,164.3,103.3,20.6 +PT1004,2026-06-15 01:15:00,76.3,100.0,36.9,162.2,103.7,19.5 +PT1004,2026-06-15 01:30:00,76.9,100.0,36.8,163.1,101.6,19.9 +PT1004,2026-06-15 01:45:00,77.7,99.7,37.0,161.6,100.2,20.0 +PT1004,2026-06-15 02:00:00,78.3,99.7,36.8,158.5,100.6,19.3 +PT1004,2026-06-15 02:15:00,77.9,99.6,37.8,155.2,102.7,19.9 +PT1004,2026-06-15 02:30:00,79.2,99.5,37.1,154.4,102.0,20.7 +PT1004,2026-06-15 02:45:00,80.7,99.8,37.1,154.8,99.8,20.7 +PT1004,2026-06-15 03:00:00,82.3,99.8,36.3,152.4,101.3,20.6 +PT1004,2026-06-15 03:15:00,82.6,99.9,37.2,150.7,101.0,20.9 +PT1004,2026-06-15 03:30:00,80.7,100.0,37.3,154.1,100.2,20.1 +PT1004,2026-06-15 03:45:00,79.9,100.0,37.0,158.5,97.9,19.8 +PT1004,2026-06-15 04:00:00,81.5,100.0,36.9,159.0,95.5,19.6 +PT1004,2026-06-15 04:15:00,82.3,100.0,37.0,156.9,94.2,19.5 +PT1004,2026-06-15 04:30:00,82.2,100.0,36.7,159.4,93.6,19.3 +PT1004,2026-06-15 04:45:00,81.9,100.0,37.3,155.9,93.1,19.7 +PT1004,2026-06-15 05:00:00,82.4,100.0,37.3,154.8,92.0,20.2 +PT1004,2026-06-15 05:15:00,81.5,99.5,37.2,153.3,92.9,20.0 +PT1004,2026-06-15 05:30:00,83.1,99.5,36.9,153.8,93.9,19.6 +PT1004,2026-06-15 05:45:00,84.0,99.5,37.2,154.1,93.9,19.9 +PT1004,2026-06-15 06:00:00,84.5,99.8,37.8,157.3,97.3,19.7 +PT1004,2026-06-15 06:15:00,83.1,100.0,36.8,156.0,97.2,19.7 +PT1004,2026-06-15 06:30:00,83.2,99.8,37.0,153.5,97.1,20.4 +PT1004,2026-06-15 06:45:00,84.3,99.6,37.2,151.0,97.8,21.1 +PT1004,2026-06-15 07:00:00,85.3,99.9,37.3,150.9,97.6,21.2 +PT1004,2026-06-15 07:15:00,83.6,100.0,36.8,150.9,96.4,21.2 +PT1004,2026-06-15 07:30:00,81.7,100.0,36.9,152.7,95.9,20.8 +PT1004,2026-06-15 07:45:00,82.4,100.0,37.1,154.2,97.8,20.4 +PT1004,2026-06-15 08:00:00,83.6,99.6,36.8,152.9,99.3,20.5 +PT1004,2026-06-15 08:15:00,81.6,100.0,37.4,148.8,100.2,20.3 +PT1004,2026-06-15 08:30:00,80.3,100.0,37.1,149.6,101.1,20.0 +PT1004,2026-06-15 08:45:00,80.2,100.0,37.3,150.4,101.9,20.2 +PT1004,2026-06-15 09:00:00,78.5,100.0,37.7,148.7,101.8,20.8 +PT1004,2026-06-15 09:15:00,79.5,99.9,36.7,148.9,102.1,20.9 +PT1004,2026-06-15 09:30:00,81.0,99.9,36.7,147.5,101.3,21.0 +PT1004,2026-06-15 09:45:00,82.0,100.0,36.7,150.6,101.4,20.6 +PT1004,2026-06-15 10:00:00,81.5,99.9,37.2,149.5,101.6,20.3 +PT1004,2026-06-15 10:15:00,80.9,100.0,37.2,148.8,103.5,20.6 +PT1004,2026-06-15 10:30:00,80.6,99.6,37.2,151.7,102.5,20.6 +PT1004,2026-06-15 10:45:00,80.4,100.0,37.0,149.2,105.1,20.9 +PT1004,2026-06-15 11:00:00,80.1,99.4,37.5,147.5,104.5,21.0 +PT1004,2026-06-15 11:15:00,82.5,99.5,36.9,147.9,103.8,20.3 +PT1004,2026-06-15 11:30:00,82.3,99.7,36.5,149.0,104.1,20.1 +PT1004,2026-06-15 11:45:00,79.9,99.3,37.3,148.4,105.6,20.4 +PT1004,2026-06-15 12:00:00,79.3,99.6,36.7,146.5,106.9,19.8 +PT1004,2026-06-15 12:15:00,81.3,99.5,37.0,145.2,108.6,20.3 +PT1004,2026-06-15 12:30:00,81.6,99.5,36.9,139.5,106.5,20.6 +PT1004,2026-06-15 12:45:00,82.2,99.6,37.1,142.0,104.4,20.8 +PT1004,2026-06-15 13:00:00,81.2,99.4,37.1,142.4,105.4,20.8 +PT1004,2026-06-15 13:15:00,80.6,99.3,37.3,140.8,104.6,21.1 +PT1004,2026-06-15 13:30:00,79.1,99.1,36.8,139.4,104.5,20.4 +PT1004,2026-06-15 13:45:00,77.4,99.2,37.0,139.3,103.8,20.0 +PT1004,2026-06-15 14:00:00,76.7,99.6,37.4,141.3,102.8,20.0 +PT1004,2026-06-15 14:15:00,75.9,99.2,37.2,137.7,104.7,20.0 +PT1004,2026-06-15 14:30:00,75.2,98.9,37.5,135.6,102.7,20.3 +PT1004,2026-06-15 14:45:00,75.3,98.5,37.1,136.6,104.6,20.7 +PT1004,2026-06-15 15:00:00,75.0,98.5,37.0,139.0,105.7,20.5 +PT1004,2026-06-15 15:15:00,74.5,98.3,36.9,141.7,104.5,20.7 +PT1004,2026-06-15 15:30:00,73.9,98.2,37.1,142.8,104.1,20.3 +PT1004,2026-06-15 15:45:00,73.0,98.6,37.3,142.3,103.1,21.1 +PT1004,2026-06-15 16:00:00,72.0,98.4,36.9,143.2,103.2,21.4 +PT1004,2026-06-15 16:15:00,72.8,97.9,37.1,142.9,102.3,21.2 +PT1004,2026-06-15 16:30:00,74.2,97.6,36.6,138.6,100.7,21.6 +PT1004,2026-06-15 16:45:00,73.6,97.8,37.0,138.4,102.4,20.8 +PT1004,2026-06-15 17:00:00,75.2,97.5,37.5,140.5,102.1,21.0 +PT1004,2026-06-15 17:15:00,75.7,97.4,36.7,141.6,101.1,21.1 +PT1004,2026-06-15 17:30:00,75.8,97.7,37.1,141.0,102.7,22.3 +PT1004,2026-06-15 17:45:00,76.5,97.8,36.9,141.5,103.9,22.2 +PT1004,2026-06-15 18:00:00,74.7,97.7,37.1,143.3,102.5,22.3 +PT1004,2026-06-15 18:15:00,74.0,97.3,37.4,146.0,103.2,23.4 +PT1004,2026-06-15 18:30:00,75.6,96.9,36.9,142.5,103.3,23.0 +PT1004,2026-06-15 18:45:00,78.6,97.2,36.9,140.6,99.8,22.5 +PT1004,2026-06-15 19:00:00,78.2,96.9,37.1,142.9,98.7,22.8 +PT1004,2026-06-15 19:15:00,79.4,96.8,37.7,141.0,97.8,22.6 +PT1004,2026-06-15 19:30:00,79.4,96.8,37.0,142.8,97.8,23.0 +PT1004,2026-06-15 19:45:00,78.9,96.6,37.2,146.5,97.7,22.5 +PT1004,2026-06-15 20:00:00,78.1,96.5,36.9,147.1,100.0,22.6 +PT1004,2026-06-15 20:15:00,77.5,96.7,36.6,143.2,98.4,22.7 +PT1004,2026-06-15 20:30:00,77.1,96.6,37.1,145.0,98.0,23.1 +PT1004,2026-06-15 20:45:00,79.2,96.2,37.5,148.2,97.4,23.7 +PT1004,2026-06-15 21:00:00,75.8,96.4,37.3,150.2,99.4,23.3 +PT1004,2026-06-15 21:15:00,76.1,96.5,37.2,152.2,101.1,23.0 +PT1004,2026-06-15 21:30:00,76.1,96.5,37.4,151.9,101.4,22.8 +PT1004,2026-06-15 21:45:00,77.7,96.3,37.5,154.5,100.2,23.1 +PT1004,2026-06-15 22:00:00,77.5,96.1,36.6,153.3,100.8,23.9 +PT1004,2026-06-15 22:15:00,77.7,96.1,37.5,152.4,100.6,23.7 +PT1004,2026-06-15 22:30:00,79.3,96.1,37.7,152.2,99.9,23.7 +PT1004,2026-06-15 22:45:00,79.1,95.9,37.1,151.4,101.0,23.4 +PT1004,2026-06-15 23:00:00,79.7,95.8,37.0,147.8,99.4,23.1 +PT1004,2026-06-15 23:15:00,79.8,96.0,36.6,145.4,100.4,23.0 +PT1004,2026-06-15 23:30:00,79.8,96.3,37.2,147.1,100.3,23.4 +PT1004,2026-06-15 23:45:00,80.9,95.9,37.2,144.6,101.4,24.0 +PT1004,2026-06-16 00:00:00,80.3,95.7,37.4,144.0,103.2,23.9 +PT1004,2026-06-16 00:15:00,81.1,96.2,36.8,144.4,103.2,24.3 +PT1004,2026-06-16 00:30:00,80.5,95.8,36.7,141.9,106.0,24.6 +PT1004,2026-06-16 00:45:00,82.0,95.6,36.9,143.2,107.0,25.3 +PT1004,2026-06-16 01:00:00,81.1,95.0,37.5,142.9,108.1,25.6 +PT1004,2026-06-16 01:15:00,81.4,95.1,36.7,143.1,109.1,25.2 +PT1004,2026-06-16 01:30:00,80.4,95.2,37.3,140.5,108.2,25.0 +PT1004,2026-06-16 01:45:00,81.2,95.2,36.9,141.4,108.9,24.8 +PT1004,2026-06-16 02:00:00,83.0,94.6,37.4,139.9,108.6,25.1 +PT1004,2026-06-16 02:15:00,85.2,94.6,36.7,139.8,109.1,24.9 +PT1004,2026-06-16 02:30:00,85.0,94.8,37.1,139.4,109.7,24.1 +PT1004,2026-06-16 02:45:00,84.5,94.5,37.4,140.7,112.5,24.5 +PT1004,2026-06-16 03:00:00,85.3,94.7,37.3,137.1,112.3,24.7 +PT1004,2026-06-16 03:15:00,86.8,94.5,37.1,138.3,110.7,24.6 +PT1004,2026-06-16 03:30:00,87.8,94.7,37.0,138.5,107.5,24.8 +PT1004,2026-06-16 03:45:00,89.4,95.0,37.3,136.7,108.4,25.0 +PT1004,2026-06-16 04:00:00,89.9,95.2,37.3,139.7,107.5,24.7 +PT1004,2026-06-16 04:15:00,87.5,95.4,37.6,140.6,104.0,24.4 +PT1004,2026-06-16 04:30:00,85.7,95.4,37.1,138.6,103.0,25.2 +PT1004,2026-06-16 04:45:00,86.3,95.4,37.1,135.6,101.2,25.7 +PT1004,2026-06-16 05:00:00,85.4,95.4,36.6,136.9,101.9,25.4 +PT1004,2026-06-16 05:15:00,84.8,95.7,36.9,138.6,102.5,25.3 +PT1004,2026-06-16 05:30:00,84.6,95.9,37.1,140.6,102.1,26.3 +PT1004,2026-06-16 05:45:00,84.2,96.3,37.5,136.5,102.8,26.3 +PT1004,2026-06-16 06:00:00,84.9,96.4,36.7,137.9,101.2,26.7 +PT1004,2026-06-16 06:15:00,85.3,96.4,36.9,134.3,101.3,26.8 +PT1004,2026-06-16 06:30:00,84.0,96.5,36.9,135.1,101.7,26.8 +PT1004,2026-06-16 06:45:00,86.7,96.5,37.0,133.3,101.8,26.7 +PT1004,2026-06-16 07:00:00,88.9,96.2,37.6,133.4,100.2,26.5 +PT1004,2026-06-16 07:15:00,89.2,96.3,37.2,131.5,99.5,27.2 +PT1004,2026-06-16 07:30:00,88.7,96.4,37.8,132.1,98.3,27.1 +PT1004,2026-06-16 07:45:00,89.1,96.0,37.0,133.1,100.2,26.7 +PT1004,2026-06-16 08:00:00,90.8,96.0,37.0,132.8,98.2,27.1 +PT1004,2026-06-16 08:15:00,88.2,95.7,37.8,131.7,96.6,26.8 +PT1004,2026-06-16 08:30:00,89.0,95.0,37.3,131.1,96.5,26.2 +PT1004,2026-06-16 08:45:00,86.5,95.3,36.7,133.9,100.0,25.5 +PT1004,2026-06-16 09:00:00,87.3,95.7,37.2,135.6,101.6,26.1 +PT1004,2026-06-16 09:15:00,86.9,95.3,37.1,135.0,101.4,25.7 +PT1004,2026-06-16 09:30:00,85.6,95.6,36.8,135.8,100.7,25.8 +PT1004,2026-06-16 09:45:00,84.4,95.5,36.7,135.4,100.9,25.9 +PT1004,2026-06-16 10:00:00,84.3,95.3,36.9,128.6,105.5,25.5 +PT1004,2026-06-16 10:15:00,82.6,95.1,37.0,128.2,107.6,25.5 +PT1004,2026-06-16 10:30:00,84.0,94.9,37.4,128.3,106.2,26.1 +PT1004,2026-06-16 10:45:00,83.8,94.9,37.4,128.2,106.0,25.5 +PT1004,2026-06-16 11:00:00,83.5,95.4,36.5,129.1,102.2,25.0 +PT1004,2026-06-16 11:15:00,81.9,95.0,37.1,129.6,101.7,25.3 +PT1004,2026-06-16 11:30:00,81.6,95.5,36.7,130.0,101.6,25.0 +PT1004,2026-06-16 11:45:00,82.5,95.7,37.3,133.1,102.3,24.8 +PT1004,2026-06-16 12:00:00,82.4,95.9,37.5,135.8,102.1,25.5 +PT1004,2026-06-16 12:15:00,82.4,96.1,37.3,136.4,102.1,26.3 +PT1004,2026-06-16 12:30:00,81.4,95.9,37.2,134.5,102.8,26.1 +PT1004,2026-06-16 12:45:00,82.5,96.4,36.7,133.8,100.7,26.8 +PT1004,2026-06-16 13:00:00,80.7,96.8,37.0,136.0,101.4,26.8 +PT1004,2026-06-16 13:15:00,79.9,96.8,36.5,135.9,99.4,26.5 +PT1004,2026-06-16 13:30:00,80.0,96.8,37.0,139.4,99.9,26.3 +PT1004,2026-06-16 13:45:00,80.5,96.9,36.9,140.6,100.5,26.2 +PT1004,2026-06-16 14:00:00,79.8,96.7,37.1,138.4,103.3,26.2 +PT1004,2026-06-16 14:15:00,79.2,96.8,36.9,140.8,104.4,26.6 +PT1004,2026-06-16 14:30:00,79.2,96.6,37.6,141.0,106.3,26.8 +PT1004,2026-06-16 14:45:00,78.8,96.5,37.2,142.1,106.4,26.9 +PT1004,2026-06-16 15:00:00,78.3,96.5,37.2,144.0,108.1,26.7 +PT1004,2026-06-16 15:15:00,80.0,96.4,36.8,142.7,109.2,26.9 +PT1004,2026-06-16 15:30:00,78.3,96.5,37.3,141.9,106.7,26.7 +PT1004,2026-06-16 15:45:00,78.2,96.9,37.0,137.7,108.7,26.5 +PT1004,2026-06-16 16:00:00,76.3,97.0,36.7,134.0,110.0,25.9 +PT1004,2026-06-16 16:15:00,74.9,96.8,37.1,135.9,112.2,25.7 +PT1004,2026-06-16 16:30:00,75.5,96.8,36.7,136.8,112.2,25.6 +PT1004,2026-06-16 16:45:00,75.7,97.0,37.6,135.3,109.3,25.5 +PT1004,2026-06-16 17:00:00,77.1,96.9,36.6,136.2,110.2,26.1 +PT1004,2026-06-16 17:15:00,75.9,96.4,36.7,134.8,111.8,25.8 +PT1004,2026-06-16 17:30:00,76.1,96.5,37.3,132.8,111.0,25.9 +PT1004,2026-06-16 17:45:00,75.4,96.3,37.3,136.6,110.6,26.0 +PT1004,2026-06-16 18:00:00,73.2,96.3,36.8,133.3,110.4,26.5 +PT1004,2026-06-16 18:15:00,71.3,96.8,36.7,131.0,108.2,27.2 +PT1004,2026-06-16 18:30:00,73.3,96.9,36.8,133.6,108.4,27.6 +PT1004,2026-06-16 18:45:00,72.6,96.3,36.6,135.5,109.1,27.2 +PT1004,2026-06-16 19:00:00,72.9,96.8,37.5,135.3,108.1,26.8 +PT1004,2026-06-16 19:15:00,72.0,96.7,36.9,137.3,109.0,26.7 +PT1004,2026-06-16 19:30:00,73.8,96.4,37.0,136.9,106.8,27.2 +PT1004,2026-06-16 19:45:00,73.0,96.6,36.7,134.1,107.7,27.0 +PT1004,2026-06-16 20:00:00,71.8,96.5,36.7,133.2,105.9,27.2 +PT1004,2026-06-16 20:15:00,69.0,96.9,37.2,133.6,108.9,26.7 +PT1004,2026-06-16 20:30:00,70.1,96.9,37.3,130.7,108.5,27.0 +PT1004,2026-06-16 20:45:00,70.2,97.1,37.2,132.4,107.8,26.4 +PT1004,2026-06-16 21:00:00,69.3,97.2,36.8,135.1,108.4,26.9 +PT1004,2026-06-16 21:15:00,70.7,97.6,36.9,135.2,111.9,26.6 +PT1004,2026-06-16 21:30:00,71.5,97.6,36.9,133.7,112.8,26.7 +PT1004,2026-06-16 21:45:00,71.7,97.8,36.9,132.5,113.6,26.4 +PT1004,2026-06-16 22:00:00,73.1,98.0,37.1,128.7,113.0,26.5 +PT1004,2026-06-16 22:15:00,73.9,98.0,37.3,128.5,112.8,27.0 +PT1004,2026-06-16 22:30:00,74.4,98.1,37.4,127.4,112.3,27.4 +PT1004,2026-06-16 22:45:00,73.6,98.1,36.8,128.4,113.0,27.6 +PT1004,2026-06-16 23:00:00,72.2,98.4,37.3,131.4,110.8,27.6 +PT1004,2026-06-16 23:15:00,69.6,98.1,37.5,131.2,109.9,27.7 +PT1004,2026-06-16 23:30:00,68.6,98.1,37.9,130.5,110.1,27.7 +PT1004,2026-06-16 23:45:00,70.5,97.7,36.7,128.7,108.9,27.2 +PT1005,2026-06-14 00:00:00,65.8,98.7,37.0,123.2,83.0,12.7 +PT1005,2026-06-14 00:15:00,66.7,98.6,37.0,120.9,82.6,13.5 +PT1005,2026-06-14 00:30:00,65.6,98.7,37.6,120.3,86.8,13.2 +PT1005,2026-06-14 00:45:00,67.0,98.6,37.0,120.3,85.2,13.0 +PT1005,2026-06-14 01:00:00,67.2,98.3,37.3,120.9,85.0,13.2 +PT1005,2026-06-14 01:15:00,66.9,98.4,37.2,120.7,86.1,13.3 +PT1005,2026-06-14 01:30:00,66.8,98.7,37.0,121.5,84.1,13.1 +PT1005,2026-06-14 01:45:00,66.8,98.8,37.4,119.6,84.0,13.0 +PT1005,2026-06-14 02:00:00,65.6,98.8,36.6,118.3,86.8,13.5 +PT1005,2026-06-14 02:15:00,64.6,99.0,37.4,119.2,87.5,13.6 +PT1005,2026-06-14 02:30:00,65.5,98.9,36.5,116.8,84.9,13.5 +PT1005,2026-06-14 02:45:00,65.8,98.8,36.6,120.7,85.4,13.5 +PT1005,2026-06-14 03:00:00,64.3,99.0,37.2,120.0,89.2,13.5 +PT1005,2026-06-14 03:15:00,62.8,99.2,37.1,118.2,90.0,13.8 +PT1005,2026-06-14 03:30:00,64.9,99.1,37.1,121.5,88.1,14.1 +PT1005,2026-06-14 03:45:00,64.0,98.7,37.3,121.0,87.6,14.2 +PT1005,2026-06-14 04:00:00,63.1,99.1,37.0,119.9,88.5,14.2 +PT1005,2026-06-14 04:15:00,63.1,98.9,37.0,119.2,86.5,14.0 +PT1005,2026-06-14 04:30:00,64.2,98.8,36.9,118.3,86.9,14.1 +PT1005,2026-06-14 04:45:00,64.7,98.7,37.0,117.1,86.1,14.5 +PT1005,2026-06-14 05:00:00,65.0,98.4,37.0,119.3,85.2,14.6 +PT1005,2026-06-14 05:15:00,65.4,98.5,37.1,119.0,82.4,15.0 +PT1005,2026-06-14 05:30:00,65.9,98.7,37.2,118.1,83.2,14.7 +PT1005,2026-06-14 05:45:00,65.9,98.6,37.2,118.2,81.6,14.9 +PT1005,2026-06-14 06:00:00,66.3,99.0,37.6,118.0,81.6,14.4 +PT1005,2026-06-14 06:15:00,64.5,99.0,37.4,116.8,81.7,13.9 +PT1005,2026-06-14 06:30:00,63.4,99.3,36.9,114.9,83.1,13.5 +PT1005,2026-06-14 06:45:00,63.4,99.1,37.1,113.2,81.9,13.7 +PT1005,2026-06-14 07:00:00,63.5,99.0,37.0,114.3,83.5,13.9 +PT1005,2026-06-14 07:15:00,62.0,98.5,37.5,114.1,80.5,13.8 +PT1005,2026-06-14 07:30:00,60.7,98.2,37.5,115.4,76.3,14.0 +PT1005,2026-06-14 07:45:00,59.6,98.0,36.8,116.6,74.5,14.3 +PT1005,2026-06-14 08:00:00,61.8,98.1,37.2,116.7,77.1,14.7 +PT1005,2026-06-14 08:15:00,59.6,98.0,36.8,118.9,75.1,14.4 +PT1005,2026-06-14 08:30:00,60.1,98.2,36.8,120.8,73.9,14.6 +PT1005,2026-06-14 08:45:00,59.9,98.3,37.5,122.9,70.6,14.6 +PT1005,2026-06-14 09:00:00,60.2,98.4,37.1,121.8,72.7,14.4 +PT1005,2026-06-14 09:15:00,59.6,98.4,37.2,124.6,71.3,14.4 +PT1005,2026-06-14 09:30:00,58.7,98.4,37.2,128.3,68.7,14.3 +PT1005,2026-06-14 09:45:00,58.3,99.1,37.2,129.4,67.1,13.3 +PT1005,2026-06-14 10:00:00,57.4,99.4,37.4,128.9,66.3,13.1 +PT1005,2026-06-14 10:15:00,58.0,99.9,37.3,128.4,67.6,13.5 +PT1005,2026-06-14 10:30:00,57.4,100.0,36.5,128.3,67.4,13.1 +PT1005,2026-06-14 10:45:00,58.9,100.0,37.3,125.6,68.5,13.6 +PT1005,2026-06-14 11:00:00,57.9,99.8,37.9,124.5,69.7,13.8 +PT1005,2026-06-14 11:15:00,56.0,99.8,37.5,120.6,70.6,14.3 +PT1005,2026-06-14 11:30:00,56.2,99.3,37.0,120.5,71.3,13.9 +PT1005,2026-06-14 11:45:00,54.8,99.2,36.9,122.3,72.3,13.3 +PT1005,2026-06-14 12:00:00,54.9,99.2,36.3,121.0,73.0,13.3 +PT1005,2026-06-14 12:15:00,54.3,99.1,37.2,122.4,74.1,12.6 +PT1005,2026-06-14 12:30:00,54.2,99.1,37.1,121.1,74.0,13.1 +PT1005,2026-06-14 12:45:00,54.2,99.0,36.7,123.2,72.1,12.8 +PT1005,2026-06-14 13:00:00,54.5,99.3,37.2,122.6,70.5,13.4 +PT1005,2026-06-14 13:15:00,54.9,99.2,37.0,123.9,70.8,13.2 +PT1005,2026-06-14 13:30:00,53.8,98.9,37.4,123.3,72.6,12.8 +PT1005,2026-06-14 13:45:00,52.9,98.5,36.6,124.4,75.0,12.5 +PT1005,2026-06-14 14:00:00,53.5,98.3,37.3,125.5,76.7,12.6 +PT1005,2026-06-14 14:15:00,54.5,98.5,37.2,125.6,77.9,12.7 +PT1005,2026-06-14 14:30:00,58.2,98.6,37.0,122.6,77.6,12.5 +PT1005,2026-06-14 14:45:00,59.4,98.8,36.9,122.4,75.5,12.6 +PT1005,2026-06-14 15:00:00,59.7,98.8,36.7,124.8,75.9,12.4 +PT1005,2026-06-14 15:15:00,59.7,98.8,36.9,124.3,77.1,11.8 +PT1005,2026-06-14 15:30:00,59.8,98.7,37.1,123.6,77.0,12.1 +PT1005,2026-06-14 15:45:00,57.4,98.5,37.4,124.6,78.2,12.4 +PT1005,2026-06-14 16:00:00,57.6,98.6,36.9,122.5,74.9,11.8 +PT1005,2026-06-14 16:15:00,56.0,98.5,37.1,121.6,76.3,11.5 +PT1005,2026-06-14 16:30:00,55.6,98.3,37.5,120.2,73.2,11.8 +PT1005,2026-06-14 16:45:00,55.3,98.3,37.2,119.6,72.0,12.0 +PT1005,2026-06-14 17:00:00,51.9,98.0,37.2,115.5,74.3,12.0 +PT1005,2026-06-14 17:15:00,51.5,98.3,37.2,117.2,74.0,12.7 +PT1005,2026-06-14 17:30:00,49.8,98.3,37.6,118.2,73.8,12.5 +PT1005,2026-06-14 17:45:00,48.5,97.6,37.0,121.5,72.0,12.4 +PT1005,2026-06-14 18:00:00,50.1,98.0,37.1,118.9,74.0,12.9 +PT1005,2026-06-14 18:15:00,51.3,98.3,36.6,118.4,73.8,13.1 +PT1005,2026-06-14 18:30:00,50.9,98.0,37.0,121.2,73.2,13.3 +PT1005,2026-06-14 18:45:00,50.6,98.0,37.0,119.8,72.9,13.2 +PT1005,2026-06-14 19:00:00,51.2,97.9,37.3,123.0,73.9,12.6 +PT1005,2026-06-14 19:15:00,50.4,98.0,36.7,121.5,70.6,12.6 +PT1005,2026-06-14 19:30:00,51.0,98.0,36.9,120.3,73.3,12.1 +PT1005,2026-06-14 19:45:00,49.7,98.5,36.9,123.0,71.2,11.8 +PT1005,2026-06-14 20:00:00,49.2,98.3,36.6,121.8,72.7,12.6 +PT1005,2026-06-14 20:15:00,48.0,98.3,37.3,118.6,73.0,12.8 +PT1005,2026-06-14 20:30:00,48.7,98.2,37.6,118.3,71.3,13.0 +PT1005,2026-06-14 20:45:00,49.3,98.0,37.3,120.3,74.8,13.1 +PT1005,2026-06-14 21:00:00,50.2,97.6,37.3,119.4,74.1,13.4 +PT1005,2026-06-14 21:15:00,50.2,97.5,36.8,116.1,74.0,13.0 +PT1005,2026-06-14 21:30:00,51.4,97.7,37.4,115.1,71.7,12.7 +PT1005,2026-06-14 21:45:00,52.0,97.6,37.7,115.2,68.6,11.8 +PT1005,2026-06-14 22:00:00,52.7,97.6,36.8,114.4,65.9,12.2 +PT1005,2026-06-14 22:15:00,53.6,97.6,37.2,114.3,64.0,11.7 +PT1005,2026-06-14 22:30:00,53.7,97.7,37.0,114.9,61.1,12.1 +PT1005,2026-06-14 22:45:00,55.2,97.2,36.9,116.0,61.9,11.5 +PT1005,2026-06-14 23:00:00,54.0,97.4,37.3,116.6,64.3,11.6 +PT1005,2026-06-14 23:15:00,55.5,97.5,37.3,115.9,63.4,11.6 +PT1005,2026-06-14 23:30:00,54.6,97.7,37.1,116.5,61.6,11.8 +PT1005,2026-06-14 23:45:00,54.0,97.7,36.6,115.5,61.9,11.8 +PT1005,2026-06-15 00:00:00,53.9,97.6,36.9,116.8,63.3,11.6 +PT1005,2026-06-15 00:15:00,51.9,97.4,37.2,116.1,61.2,11.9 +PT1005,2026-06-15 00:30:00,51.9,97.4,37.0,116.7,62.2,12.2 +PT1005,2026-06-15 00:45:00,51.8,97.5,37.2,116.4,63.5,12.7 +PT1005,2026-06-15 01:00:00,50.7,97.6,36.9,117.1,62.0,12.9 +PT1005,2026-06-15 01:15:00,51.7,97.8,36.7,117.6,62.1,12.0 +PT1005,2026-06-15 01:30:00,51.6,98.1,37.1,118.7,64.8,12.1 +PT1005,2026-06-15 01:45:00,53.4,98.1,36.9,116.7,65.3,12.5 +PT1005,2026-06-15 02:00:00,54.2,98.1,37.1,117.6,65.7,12.3 +PT1005,2026-06-15 02:15:00,53.8,98.1,37.2,115.9,64.8,12.2 +PT1005,2026-06-15 02:30:00,52.2,98.1,37.2,114.5,64.2,11.9 +PT1005,2026-06-15 02:45:00,52.1,98.3,37.0,115.3,61.9,11.5 +PT1005,2026-06-15 03:00:00,52.1,98.1,37.2,117.9,63.2,10.9 +PT1005,2026-06-15 03:15:00,52.1,98.4,37.2,114.8,66.3,10.5 +PT1005,2026-06-15 03:30:00,51.4,98.3,37.0,111.4,68.1,10.4 +PT1005,2026-06-15 03:45:00,54.3,98.5,37.3,110.1,67.2,10.5 +PT1005,2026-06-15 04:00:00,56.4,98.1,37.0,111.5,68.5,10.2 +PT1005,2026-06-15 04:15:00,54.5,98.0,36.8,112.0,70.9,10.9 +PT1005,2026-06-15 04:30:00,56.3,97.5,37.1,110.8,70.4,11.0 +PT1005,2026-06-15 04:45:00,56.8,97.5,37.4,112.8,71.5,10.9 +PT1005,2026-06-15 05:00:00,59.4,97.3,36.9,116.1,70.6,11.4 +PT1005,2026-06-15 05:15:00,60.3,97.4,36.7,112.5,73.5,11.1 +PT1005,2026-06-15 05:30:00,59.6,98.0,36.8,110.0,73.8,10.6 +PT1005,2026-06-15 05:45:00,57.7,98.1,37.4,109.7,72.1,11.0 +PT1005,2026-06-15 06:00:00,58.2,98.4,36.6,109.0,72.5,10.8 +PT1005,2026-06-15 06:15:00,58.5,98.4,37.0,108.9,73.1,11.4 +PT1005,2026-06-15 06:30:00,57.4,98.4,36.8,108.7,74.6,11.4 +PT1005,2026-06-15 06:45:00,58.4,98.5,37.0,108.9,76.0,11.9 +PT1005,2026-06-15 07:00:00,57.4,98.5,37.1,110.0,75.8,11.5 +PT1005,2026-06-15 07:15:00,55.0,98.5,37.0,111.7,77.2,10.0 +PT1005,2026-06-15 07:30:00,55.7,98.2,37.6,110.9,79.0,9.8 +PT1005,2026-06-15 07:45:00,54.9,98.5,36.7,111.0,77.7,10.4 +PT1005,2026-06-15 08:00:00,54.0,98.6,36.7,111.1,78.1,10.2 +PT1005,2026-06-15 08:15:00,53.3,99.0,36.9,108.5,80.6,10.3 +PT1005,2026-06-15 08:30:00,50.9,98.5,37.6,107.8,79.9,10.4 +PT1005,2026-06-15 08:45:00,51.7,98.5,36.9,110.2,80.1,11.0 +PT1005,2026-06-15 09:00:00,50.4,98.0,37.4,110.0,78.2,10.5 +PT1005,2026-06-15 09:15:00,48.4,98.0,36.9,109.8,78.4,11.1 +PT1005,2026-06-15 09:30:00,50.1,97.6,37.1,111.1,80.6,9.5 +PT1005,2026-06-15 09:45:00,50.1,97.6,37.1,114.5,79.4,9.0 +PT1005,2026-06-15 10:00:00,51.5,97.8,37.3,114.6,79.1,8.2 +PT1005,2026-06-15 10:15:00,52.4,97.6,37.0,113.7,77.5,8.5 +PT1005,2026-06-15 10:30:00,52.3,97.7,37.2,114.3,78.4,8.6 +PT1005,2026-06-15 10:45:00,52.6,97.9,37.0,115.3,76.5,8.4 +PT1005,2026-06-15 11:00:00,53.2,98.3,37.5,113.7,77.8,8.1 +PT1005,2026-06-15 11:15:00,55.6,97.8,36.6,113.1,74.3,8.0 +PT1005,2026-06-15 11:30:00,56.4,98.0,37.1,114.7,75.2,8.2 +PT1005,2026-06-15 11:45:00,56.3,98.2,36.7,114.7,76.0,8.0 +PT1005,2026-06-15 12:00:00,57.5,98.0,37.0,111.9,77.0,8.0 +PT1005,2026-06-15 12:15:00,59.3,98.4,37.4,111.5,78.1,8.0 +PT1005,2026-06-15 12:30:00,58.1,98.0,37.3,107.9,75.3,8.4 +PT1005,2026-06-15 12:45:00,57.2,98.2,37.1,106.8,75.8,8.2 +PT1005,2026-06-15 13:00:00,56.1,98.1,36.6,107.8,76.8,8.1 +PT1005,2026-06-15 13:15:00,59.1,98.1,37.5,108.5,74.9,8.6 +PT1005,2026-06-15 13:30:00,57.1,98.0,36.7,108.1,78.5,9.1 +PT1005,2026-06-15 13:45:00,56.3,97.8,37.3,108.9,80.9,9.2 +PT1005,2026-06-15 14:00:00,55.6,98.0,37.1,107.9,78.4,9.4 +PT1005,2026-06-15 14:15:00,54.3,98.4,37.6,106.4,79.3,9.2 +PT1005,2026-06-15 14:30:00,54.1,98.0,37.3,108.0,81.6,9.0 +PT1005,2026-06-15 14:45:00,54.3,97.9,37.2,109.7,80.4,9.1 +PT1005,2026-06-15 15:00:00,54.6,97.7,37.5,113.8,82.3,9.4 +PT1005,2026-06-15 15:15:00,54.7,97.6,36.9,111.6,81.3,9.0 +PT1005,2026-06-15 15:30:00,55.1,97.8,37.4,113.4,79.5,9.3 +PT1005,2026-06-15 15:45:00,54.9,98.1,36.9,115.1,77.6,10.2 +PT1005,2026-06-15 16:00:00,56.1,98.4,36.7,112.7,77.9,10.6 +PT1005,2026-06-15 16:15:00,56.3,98.6,37.5,114.8,77.3,11.2 +PT1005,2026-06-15 16:30:00,56.6,98.5,37.1,112.5,77.8,11.8 +PT1005,2026-06-15 16:45:00,55.6,98.7,37.0,112.8,78.6,11.5 +PT1005,2026-06-15 17:00:00,55.0,98.8,37.2,112.1,79.5,11.3 +PT1005,2026-06-15 17:15:00,55.9,98.9,37.2,114.0,78.8,11.6 +PT1005,2026-06-15 17:30:00,55.0,98.4,37.0,110.6,75.5,11.7 +PT1005,2026-06-15 17:45:00,55.2,98.4,37.1,111.8,76.4,11.8 +PT1005,2026-06-15 18:00:00,55.4,98.7,37.4,107.8,75.4,12.1 +PT1005,2026-06-15 18:15:00,56.0,98.7,37.5,111.5,75.7,12.1 +PT1005,2026-06-15 18:30:00,56.6,98.9,36.4,113.6,75.1,12.8 +PT1005,2026-06-15 18:45:00,54.2,98.7,37.1,112.7,75.6,12.6 +PT1005,2026-06-15 19:00:00,54.1,99.2,36.9,111.1,73.1,13.0 +PT1005,2026-06-15 19:15:00,54.0,99.1,37.5,112.6,71.0,11.9 +PT1005,2026-06-15 19:30:00,54.4,99.3,37.3,115.1,69.7,11.9 +PT1005,2026-06-15 19:45:00,54.3,99.3,37.3,114.7,71.3,11.8 +PT1005,2026-06-15 20:00:00,54.8,99.0,37.4,115.3,69.0,12.0 +PT1005,2026-06-15 20:15:00,56.2,98.8,36.5,114.2,69.4,11.8 +PT1005,2026-06-15 20:30:00,55.6,98.8,37.3,116.4,72.0,11.8 +PT1005,2026-06-15 20:45:00,56.8,98.3,37.3,114.3,72.1,12.4 +PT1005,2026-06-15 21:00:00,57.2,98.3,36.9,115.2,71.2,12.1 +PT1005,2026-06-15 21:15:00,58.9,98.1,37.2,114.4,71.9,11.8 +PT1005,2026-06-15 21:30:00,59.2,97.9,37.2,113.9,70.5,12.3 +PT1005,2026-06-15 21:45:00,58.0,98.0,36.8,114.2,67.1,12.9 +PT1005,2026-06-15 22:00:00,60.5,98.2,37.0,112.0,66.7,13.2 +PT1005,2026-06-15 22:15:00,61.9,98.1,36.8,111.8,68.1,13.5 +PT1005,2026-06-15 22:30:00,62.5,98.1,37.0,110.0,66.0,12.7 +PT1005,2026-06-15 22:45:00,62.4,98.2,36.9,111.6,65.4,12.7 +PT1005,2026-06-15 23:00:00,62.6,98.5,37.5,111.8,67.1,13.1 +PT1005,2026-06-15 23:15:00,62.7,98.4,36.9,113.1,66.6,13.3 +PT1005,2026-06-15 23:30:00,61.8,98.7,37.1,111.0,68.1,13.5 +PT1005,2026-06-15 23:45:00,59.5,99.0,36.9,109.2,69.5,13.3 +PT1005,2026-06-16 00:00:00,60.3,99.2,37.1,106.9,71.7,13.2 +PT1005,2026-06-16 00:15:00,60.0,98.9,37.4,108.3,72.1,12.8 +PT1005,2026-06-16 00:30:00,60.1,98.9,36.7,111.9,69.7,12.2 +PT1005,2026-06-16 00:45:00,60.6,98.8,37.7,111.3,68.3,12.9 +PT1005,2026-06-16 01:00:00,61.7,98.4,37.4,110.4,69.5,12.8 +PT1005,2026-06-16 01:15:00,63.2,98.9,36.5,109.1,69.7,12.7 +PT1005,2026-06-16 01:30:00,64.1,99.1,37.3,108.0,67.3,12.5 +PT1005,2026-06-16 01:45:00,65.7,98.9,36.7,110.2,68.2,12.7 +PT1005,2026-06-16 02:00:00,64.2,98.7,37.3,109.5,70.9,12.4 +PT1005,2026-06-16 02:15:00,63.6,98.8,37.0,109.4,71.2,12.6 +PT1005,2026-06-16 02:30:00,64.1,99.1,37.0,107.9,72.9,12.5 +PT1005,2026-06-16 02:45:00,64.9,99.0,37.2,108.5,73.3,11.6 +PT1005,2026-06-16 03:00:00,63.2,98.7,36.8,109.3,74.1,12.1 +PT1005,2026-06-16 03:15:00,62.3,98.8,37.6,111.7,74.4,11.8 +PT1005,2026-06-16 03:30:00,62.0,98.7,36.9,108.8,75.5,12.1 +PT1005,2026-06-16 03:45:00,64.2,98.6,37.3,110.1,75.8,11.3 +PT1005,2026-06-16 04:00:00,64.7,98.2,36.6,113.1,76.5,11.8 +PT1005,2026-06-16 04:15:00,64.2,98.5,36.5,110.0,75.9,11.9 +PT1005,2026-06-16 04:30:00,62.6,98.8,37.8,110.1,77.7,12.0 +PT1005,2026-06-16 04:45:00,63.2,99.1,37.3,109.6,78.0,12.3 +PT1005,2026-06-16 05:00:00,63.2,99.1,37.2,110.6,78.7,11.9 +PT1005,2026-06-16 05:15:00,63.6,98.9,37.1,112.5,79.4,12.8 +PT1005,2026-06-16 05:30:00,64.9,99.0,36.8,116.3,77.9,12.6 +PT1005,2026-06-16 05:45:00,64.8,98.7,37.3,113.2,74.7,11.7 +PT1005,2026-06-16 06:00:00,64.3,98.4,37.6,111.9,73.9,11.3 +PT1005,2026-06-16 06:15:00,66.0,98.8,36.8,112.3,74.3,11.1 +PT1005,2026-06-16 06:30:00,66.0,99.0,37.3,114.7,73.5,10.6 +PT1005,2026-06-16 06:45:00,63.9,99.0,37.0,114.9,73.0,10.0 +PT1005,2026-06-16 07:00:00,65.8,99.1,37.1,117.2,71.1,10.1 +PT1005,2026-06-16 07:15:00,66.0,99.3,37.4,117.5,69.3,10.3 +PT1005,2026-06-16 07:30:00,67.6,99.6,37.0,118.4,67.6,9.7 +PT1005,2026-06-16 07:45:00,68.6,99.8,37.3,119.0,67.6,10.5 +PT1005,2026-06-16 08:00:00,68.5,99.6,37.2,117.0,65.9,10.0 +PT1005,2026-06-16 08:15:00,68.5,99.6,36.9,118.4,68.6,9.7 +PT1005,2026-06-16 08:30:00,65.8,99.5,36.9,118.2,70.0,9.7 +PT1005,2026-06-16 08:45:00,66.1,99.7,37.3,114.9,71.5,10.2 +PT1005,2026-06-16 09:00:00,64.9,99.6,37.1,117.3,70.0,10.5 +PT1005,2026-06-16 09:15:00,65.1,99.4,37.1,118.0,70.4,9.9 +PT1005,2026-06-16 09:30:00,65.9,99.3,37.0,113.1,70.2,10.4 +PT1005,2026-06-16 09:45:00,67.6,99.1,37.2,110.7,70.2,10.1 +PT1005,2026-06-16 10:00:00,67.1,99.4,37.4,109.9,70.4,10.4 +PT1005,2026-06-16 10:15:00,68.9,99.4,37.2,109.1,67.5,11.2 +PT1005,2026-06-16 10:30:00,69.8,99.5,37.0,109.2,68.0,10.9 +PT1005,2026-06-16 10:45:00,68.6,99.9,36.7,110.3,71.0,11.9 +PT1005,2026-06-16 11:00:00,69.8,99.6,36.9,110.6,71.4,11.3 +PT1005,2026-06-16 11:15:00,70.2,99.6,36.7,108.6,70.4,10.7 +PT1005,2026-06-16 11:30:00,69.7,99.8,37.2,110.8,73.1,10.9 +PT1005,2026-06-16 11:45:00,70.3,100.0,37.4,107.6,76.0,10.1 +PT1005,2026-06-16 12:00:00,70.4,99.7,36.7,108.7,75.8,9.9 +PT1005,2026-06-16 12:15:00,68.6,99.5,36.8,107.9,74.0,9.9 +PT1005,2026-06-16 12:30:00,69.0,99.8,37.5,108.5,73.8,9.7 +PT1005,2026-06-16 12:45:00,68.8,100.0,36.9,106.1,74.3,10.2 +PT1005,2026-06-16 13:00:00,68.5,100.0,37.0,106.9,75.1,10.7 +PT1005,2026-06-16 13:15:00,70.2,99.6,36.7,109.0,76.8,10.4 +PT1005,2026-06-16 13:30:00,69.9,99.7,36.7,108.4,77.6,11.2 +PT1005,2026-06-16 13:45:00,67.5,99.6,37.1,107.0,76.9,11.7 +PT1005,2026-06-16 14:00:00,67.5,99.5,37.2,106.9,77.3,12.8 +PT1005,2026-06-16 14:15:00,68.9,99.6,37.3,102.9,76.4,12.9 +PT1005,2026-06-16 14:30:00,69.1,99.8,36.8,99.9,76.5,13.4 +PT1005,2026-06-16 14:45:00,70.4,100.0,37.0,97.5,77.0,13.5 +PT1005,2026-06-16 15:00:00,68.6,99.9,36.8,97.2,74.5,13.0 +PT1005,2026-06-16 15:15:00,67.3,100.0,37.4,99.0,74.0,13.3 +PT1005,2026-06-16 15:30:00,67.2,100.0,37.2,98.5,72.3,13.0 +PT1005,2026-06-16 15:45:00,67.0,100.0,37.1,94.8,69.8,12.4 +PT1005,2026-06-16 16:00:00,65.4,100.0,36.9,96.3,72.1,12.9 +PT1005,2026-06-16 16:15:00,63.4,99.8,36.9,98.2,71.5,12.9 +PT1005,2026-06-16 16:30:00,65.3,99.6,36.9,98.4,73.2,13.7 +PT1005,2026-06-16 16:45:00,66.4,99.4,37.3,101.1,75.8,13.3 +PT1005,2026-06-16 17:00:00,67.8,99.3,36.5,102.2,76.7,14.1 +PT1005,2026-06-16 17:15:00,67.7,99.0,36.8,102.2,75.5,14.0 +PT1005,2026-06-16 17:30:00,67.9,99.3,37.7,101.5,77.7,14.4 +PT1005,2026-06-16 17:45:00,68.4,99.3,37.1,98.3,76.5,14.3 +PT1005,2026-06-16 18:00:00,71.2,99.2,37.0,94.8,77.5,14.6 +PT1005,2026-06-16 18:15:00,73.7,98.7,37.8,97.3,77.0,14.2 +PT1005,2026-06-16 18:30:00,74.5,98.7,37.5,96.6,77.5,14.0 +PT1005,2026-06-16 18:45:00,74.6,98.9,37.6,97.1,78.8,14.6 +PT1005,2026-06-16 19:00:00,75.2,98.7,36.9,96.7,78.7,14.3 +PT1005,2026-06-16 19:15:00,75.3,98.5,37.2,94.4,76.2,14.5 +PT1005,2026-06-16 19:30:00,74.9,98.7,36.9,92.4,76.8,14.5 +PT1005,2026-06-16 19:45:00,74.2,98.6,36.9,92.9,77.6,14.4 +PT1005,2026-06-16 20:00:00,74.4,98.2,37.0,92.9,80.0,14.1 +PT1005,2026-06-16 20:15:00,75.6,98.4,37.2,93.1,79.9,13.6 +PT1005,2026-06-16 20:30:00,73.9,97.8,36.9,95.1,80.5,13.9 +PT1005,2026-06-16 20:45:00,74.4,97.7,36.9,94.4,81.9,13.9 +PT1005,2026-06-16 21:00:00,72.7,97.8,36.8,96.5,80.8,14.2 +PT1005,2026-06-16 21:15:00,73.6,97.8,36.9,97.1,79.7,14.3 +PT1005,2026-06-16 21:30:00,73.1,97.5,37.3,95.5,78.9,14.4 +PT1005,2026-06-16 21:45:00,72.3,97.4,36.6,98.9,79.1,14.2 +PT1005,2026-06-16 22:00:00,71.2,97.2,37.2,102.9,77.9,14.2 +PT1005,2026-06-16 22:15:00,72.5,97.2,36.9,101.8,77.0,14.4 +PT1005,2026-06-16 22:30:00,71.2,97.1,37.6,99.2,79.8,14.6 +PT1005,2026-06-16 22:45:00,71.7,97.5,36.8,99.9,80.9,13.8 +PT1005,2026-06-16 23:00:00,71.8,97.5,37.4,99.8,81.5,14.0 +PT1005,2026-06-16 23:15:00,72.5,97.8,37.5,102.2,81.8,14.8 +PT1005,2026-06-16 23:30:00,71.5,97.9,36.8,98.5,79.3,14.6 +PT1005,2026-06-16 23:45:00,70.9,98.0,36.8,101.0,81.0,14.8 +PT1006,2026-06-14 00:00:00,94.3,95.4,37.1,133.3,80.1,20.2 +PT1006,2026-06-14 00:15:00,94.1,95.6,37.2,135.5,82.8,19.9 +PT1006,2026-06-14 00:30:00,94.1,95.7,36.8,133.3,80.7,19.9 +PT1006,2026-06-14 00:45:00,95.2,95.3,37.6,130.4,80.0,19.3 +PT1006,2026-06-14 01:00:00,95.0,95.2,37.1,131.4,81.4,19.4 +PT1006,2026-06-14 01:15:00,93.8,95.3,37.2,134.2,81.0,19.0 +PT1006,2026-06-14 01:30:00,93.8,95.0,36.9,133.2,83.7,18.5 +PT1006,2026-06-14 01:45:00,92.7,94.8,37.2,132.3,84.4,19.0 +PT1006,2026-06-14 02:00:00,91.9,95.2,37.1,128.2,85.4,18.6 +PT1006,2026-06-14 02:15:00,92.6,94.8,37.9,128.4,85.7,19.2 +PT1006,2026-06-14 02:30:00,90.7,95.2,36.7,128.4,84.5,19.4 +PT1006,2026-06-14 02:45:00,89.3,94.7,37.6,129.5,85.0,19.0 +PT1006,2026-06-14 03:00:00,88.5,95.1,36.7,129.7,84.0,19.0 +PT1006,2026-06-14 03:15:00,88.8,95.1,36.7,130.8,85.3,19.0 +PT1006,2026-06-14 03:30:00,89.9,95.1,37.0,127.0,85.8,19.2 +PT1006,2026-06-14 03:45:00,89.7,94.9,37.6,127.8,86.0,18.8 +PT1006,2026-06-14 04:00:00,89.0,94.2,36.6,126.9,87.5,18.7 +PT1006,2026-06-14 04:15:00,87.8,94.0,37.1,125.7,87.1,18.9 +PT1006,2026-06-14 04:30:00,88.0,94.4,36.9,127.4,88.3,18.2 +PT1006,2026-06-14 04:45:00,86.1,94.2,37.3,129.0,87.7,18.6 +PT1006,2026-06-14 05:00:00,86.2,94.5,37.3,131.7,88.4,18.7 +PT1006,2026-06-14 05:15:00,84.6,94.5,37.4,131.7,87.8,18.4 +PT1006,2026-06-14 05:30:00,84.8,94.6,37.5,134.5,87.5,18.3 +PT1006,2026-06-14 05:45:00,83.1,94.6,37.3,133.1,88.0,18.5 +PT1006,2026-06-14 06:00:00,84.4,94.5,36.7,132.7,88.8,18.8 +PT1006,2026-06-14 06:15:00,84.8,94.4,36.8,132.9,88.2,18.6 +PT1006,2026-06-14 06:30:00,84.7,94.5,37.2,131.7,90.0,19.5 +PT1006,2026-06-14 06:45:00,84.7,94.3,37.5,132.4,92.2,20.3 +PT1006,2026-06-14 07:00:00,85.8,94.4,37.1,130.3,92.1,20.2 +PT1006,2026-06-14 07:15:00,84.9,94.6,37.2,129.8,91.6,19.9 +PT1006,2026-06-14 07:30:00,86.8,94.6,37.3,130.3,94.5,20.4 +PT1006,2026-06-14 07:45:00,87.5,94.4,36.8,128.9,94.7,20.5 +PT1006,2026-06-14 08:00:00,88.4,94.4,36.8,131.2,94.6,20.4 +PT1006,2026-06-14 08:15:00,87.4,94.7,36.7,131.7,95.2,21.1 +PT1006,2026-06-14 08:30:00,88.3,94.3,36.5,130.8,93.5,21.4 +PT1006,2026-06-14 08:45:00,88.0,94.0,37.0,129.1,92.4,21.9 +PT1006,2026-06-14 09:00:00,90.1,94.5,37.2,133.4,92.3,22.0 +PT1006,2026-06-14 09:15:00,89.7,94.6,37.0,131.5,89.5,22.3 +PT1006,2026-06-14 09:30:00,88.6,94.4,36.7,134.5,90.2,21.7 +PT1006,2026-06-14 09:45:00,88.2,94.5,37.1,132.9,89.9,21.8 +PT1006,2026-06-14 10:00:00,85.4,94.6,36.8,129.5,89.5,21.6 +PT1006,2026-06-14 10:15:00,86.5,94.3,36.9,128.4,90.8,21.3 +PT1006,2026-06-14 10:30:00,86.2,94.5,37.0,131.3,89.4,21.0 +PT1006,2026-06-14 10:45:00,86.5,94.3,37.3,132.7,88.1,20.2 +PT1006,2026-06-14 11:00:00,87.3,94.5,37.6,128.7,87.1,20.1 +PT1006,2026-06-14 11:15:00,87.2,94.2,37.3,129.3,89.0,20.6 +PT1006,2026-06-14 11:30:00,87.5,93.7,37.3,129.3,89.3,20.5 +PT1006,2026-06-14 11:45:00,87.3,93.6,37.4,131.4,88.7,20.5 +PT1006,2026-06-14 12:00:00,86.2,93.3,36.6,134.1,87.8,20.8 +PT1006,2026-06-14 12:15:00,83.2,93.4,36.7,133.9,88.3,21.6 +PT1006,2026-06-14 12:30:00,83.3,93.8,37.8,131.7,87.5,20.8 +PT1006,2026-06-14 12:45:00,80.7,94.0,36.9,129.1,85.9,21.3 +PT1006,2026-06-14 13:00:00,81.6,94.3,37.1,129.5,87.2,21.3 +PT1006,2026-06-14 13:15:00,80.9,94.8,36.9,130.9,88.0,21.6 +PT1006,2026-06-14 13:30:00,82.1,95.2,36.9,128.2,88.8,21.6 +PT1006,2026-06-14 13:45:00,80.8,95.5,37.1,128.6,88.5,21.9 +PT1006,2026-06-14 14:00:00,80.1,95.5,36.7,128.5,85.8,21.6 +PT1006,2026-06-14 14:15:00,78.1,95.6,37.0,127.2,87.4,20.9 +PT1006,2026-06-14 14:30:00,77.5,95.2,37.3,127.2,85.2,21.0 +PT1006,2026-06-14 14:45:00,77.9,95.3,36.9,129.3,85.1,20.6 +PT1006,2026-06-14 15:00:00,77.3,95.1,36.9,130.8,85.9,20.0 +PT1006,2026-06-14 15:15:00,76.1,95.1,37.0,133.0,86.6,19.7 +PT1006,2026-06-14 15:30:00,74.5,94.8,37.1,134.7,88.8,19.4 +PT1006,2026-06-14 15:45:00,75.5,94.4,37.0,132.6,91.7,19.0 +PT1006,2026-06-14 16:00:00,74.8,93.9,37.1,132.8,91.7,19.1 +PT1006,2026-06-14 16:15:00,74.4,93.8,36.8,131.8,90.2,18.8 +PT1006,2026-06-14 16:30:00,75.2,93.9,37.4,131.8,93.1,18.4 +PT1006,2026-06-14 16:45:00,75.0,93.9,36.8,133.2,92.4,18.0 +PT1006,2026-06-14 17:00:00,72.5,94.1,37.3,134.3,94.8,18.1 +PT1006,2026-06-14 17:15:00,72.5,94.2,37.0,136.5,95.1,17.9 +PT1006,2026-06-14 17:30:00,73.6,94.1,37.3,138.3,97.9,18.3 +PT1006,2026-06-14 17:45:00,74.1,93.9,37.0,136.5,96.6,18.5 +PT1006,2026-06-14 18:00:00,74.1,94.0,37.0,134.9,95.9,18.6 +PT1006,2026-06-14 18:15:00,74.0,93.7,36.8,134.5,98.3,18.5 +PT1006,2026-06-14 18:30:00,75.3,93.9,36.6,134.9,96.4,18.0 +PT1006,2026-06-14 18:45:00,75.9,94.1,37.0,135.8,99.3,17.8 +PT1006,2026-06-14 19:00:00,76.1,94.1,36.6,136.8,98.3,17.2 +PT1006,2026-06-14 19:15:00,76.8,94.0,36.8,134.5,97.4,18.0 +PT1006,2026-06-14 19:30:00,77.7,94.1,37.4,137.2,97.2,17.4 +PT1006,2026-06-14 19:45:00,77.5,94.4,37.2,138.8,98.7,18.4 +PT1006,2026-06-14 20:00:00,79.4,94.3,37.2,139.9,98.0,18.5 +PT1006,2026-06-14 20:15:00,77.0,94.2,37.4,140.4,94.6,18.5 +PT1006,2026-06-14 20:30:00,78.6,94.0,37.1,143.1,96.4,17.6 +PT1006,2026-06-14 20:45:00,79.0,94.3,36.6,143.7,98.5,17.3 +PT1006,2026-06-14 21:00:00,78.3,94.7,37.4,145.5,102.0,16.8 +PT1006,2026-06-14 21:15:00,79.3,94.7,37.3,147.1,102.2,16.9 +PT1006,2026-06-14 21:30:00,80.5,94.7,36.8,150.6,101.8,17.7 +PT1006,2026-06-14 21:45:00,79.4,94.5,36.9,152.5,100.6,18.3 +PT1006,2026-06-14 22:00:00,80.0,94.6,37.0,150.5,98.5,18.4 +PT1006,2026-06-14 22:15:00,80.6,94.3,37.4,149.8,98.3,17.4 +PT1006,2026-06-14 22:30:00,79.8,94.7,37.4,148.4,97.5,16.9 +PT1006,2026-06-14 22:45:00,80.4,95.0,36.9,148.0,97.4,16.3 +PT1006,2026-06-14 23:00:00,80.7,95.1,37.0,151.6,94.7,16.4 +PT1006,2026-06-14 23:15:00,80.9,95.2,37.0,151.3,93.0,15.8 +PT1006,2026-06-14 23:30:00,79.2,95.1,37.1,150.8,89.3,16.6 +PT1006,2026-06-14 23:45:00,76.4,95.2,36.8,150.3,87.3,16.7 +PT1006,2026-06-15 00:00:00,76.7,95.0,37.1,148.5,87.3,16.1 +PT1006,2026-06-15 00:15:00,77.6,95.3,36.8,150.7,89.3,15.9 +PT1006,2026-06-15 00:30:00,78.6,95.2,37.3,150.7,90.4,16.7 +PT1006,2026-06-15 00:45:00,79.0,94.9,37.0,153.1,91.0,16.6 +PT1006,2026-06-15 01:00:00,78.6,94.9,37.0,150.1,92.9,17.0 +PT1006,2026-06-15 01:15:00,78.2,94.9,36.7,150.4,92.4,17.4 +PT1006,2026-06-15 01:30:00,77.4,95.1,36.9,151.1,91.4,17.5 +PT1006,2026-06-15 01:45:00,77.1,95.4,37.0,153.0,91.8,17.1 +PT1006,2026-06-15 02:00:00,77.3,95.8,37.5,149.4,90.5,17.6 +PT1006,2026-06-15 02:15:00,77.3,96.1,37.5,147.9,88.3,17.9 +PT1006,2026-06-15 02:30:00,78.9,95.9,37.5,148.3,89.5,18.0 +PT1006,2026-06-15 02:45:00,78.5,95.9,37.4,148.8,90.8,17.9 +PT1006,2026-06-15 03:00:00,80.5,95.8,37.3,148.5,92.2,18.7 +PT1006,2026-06-15 03:15:00,79.7,95.8,37.0,150.4,91.0,18.3 +PT1006,2026-06-15 03:30:00,80.5,95.5,37.2,149.0,91.4,18.7 +PT1006,2026-06-15 03:45:00,81.1,95.7,37.1,152.2,93.6,17.9 +PT1006,2026-06-15 04:00:00,82.2,96.1,36.9,153.5,92.4,17.6 +PT1006,2026-06-15 04:15:00,82.7,96.0,36.7,147.4,90.6,17.4 +PT1006,2026-06-15 04:30:00,81.3,96.5,37.4,147.4,90.0,17.7 +PT1006,2026-06-15 04:45:00,84.0,96.9,37.0,148.2,87.7,17.3 +PT1006,2026-06-15 05:00:00,84.7,97.0,37.1,145.3,85.2,17.4 +PT1006,2026-06-15 05:15:00,84.5,97.1,37.7,147.8,85.7,17.0 +PT1006,2026-06-15 05:30:00,84.3,97.1,36.7,146.5,84.1,16.6 +PT1006,2026-06-15 05:45:00,80.8,97.0,37.5,148.7,82.6,17.6 +PT1006,2026-06-15 06:00:00,80.8,96.7,37.0,145.5,82.4,17.7 +PT1006,2026-06-15 06:15:00,82.2,97.1,37.1,146.4,83.2,17.5 +PT1006,2026-06-15 06:30:00,82.7,97.0,36.8,147.8,81.6,17.2 +PT1006,2026-06-15 06:45:00,82.0,96.9,36.7,149.8,81.7,16.7 +PT1006,2026-06-15 07:00:00,81.6,97.1,37.0,152.6,79.3,16.9 +PT1006,2026-06-15 07:15:00,81.2,96.9,37.4,152.2,77.7,16.8 +PT1006,2026-06-15 07:30:00,82.1,97.3,36.9,153.2,77.9,17.0 +PT1006,2026-06-15 07:45:00,79.6,97.5,36.8,149.6,79.6,17.3 +PT1006,2026-06-15 08:00:00,79.2,97.5,36.7,147.8,80.4,17.5 +PT1006,2026-06-15 08:15:00,78.3,97.5,37.0,150.1,81.4,16.6 +PT1006,2026-06-15 08:30:00,78.9,97.3,36.8,148.3,80.3,16.5 +PT1006,2026-06-15 08:45:00,79.8,97.0,37.3,146.2,79.7,17.1 +PT1006,2026-06-15 09:00:00,80.6,97.1,37.4,144.4,78.7,16.8 +PT1006,2026-06-15 09:15:00,81.0,96.7,37.4,147.3,78.2,17.0 +PT1006,2026-06-15 09:30:00,78.0,96.8,37.0,146.8,74.6,16.6 +PT1006,2026-06-15 09:45:00,79.1,96.7,37.3,147.1,74.0,17.0 +PT1006,2026-06-15 10:00:00,79.4,96.4,36.9,147.3,78.2,17.3 +PT1006,2026-06-15 10:15:00,81.7,96.2,37.2,148.7,78.1,17.4 +PT1006,2026-06-15 10:30:00,81.4,96.1,36.9,146.1,76.5,17.5 +PT1006,2026-06-15 10:45:00,80.4,96.8,36.9,151.1,77.3,17.8 +PT1006,2026-06-15 11:00:00,79.1,96.7,37.7,151.1,78.4,17.1 +PT1006,2026-06-15 11:15:00,79.4,96.3,36.8,151.4,77.0,16.7 +PT1006,2026-06-15 11:30:00,79.2,96.9,37.1,151.6,78.1,17.1 +PT1006,2026-06-15 11:45:00,77.9,96.5,37.2,150.8,79.8,17.4 +PT1006,2026-06-15 12:00:00,78.4,96.4,37.6,149.8,78.7,16.9 +PT1006,2026-06-15 12:15:00,78.7,96.3,37.0,153.5,81.7,17.9 +PT1006,2026-06-15 12:30:00,78.9,96.5,36.9,156.8,81.8,17.6 +PT1006,2026-06-15 12:45:00,80.4,96.6,37.5,156.4,81.4,17.5 +PT1006,2026-06-15 13:00:00,79.6,96.3,37.3,160.1,81.5,17.5 +PT1006,2026-06-15 13:15:00,78.5,96.5,37.2,159.3,83.2,16.8 +PT1006,2026-06-15 13:30:00,78.3,96.3,37.5,160.9,83.0,17.0 +PT1006,2026-06-15 13:45:00,79.3,96.0,37.0,159.8,83.6,17.3 +PT1006,2026-06-15 14:00:00,79.6,96.1,36.4,160.4,81.9,16.8 +PT1006,2026-06-15 14:15:00,79.8,95.7,37.4,164.7,82.9,16.3 +PT1006,2026-06-15 14:30:00,81.3,96.0,37.6,163.1,83.9,16.8 +PT1006,2026-06-15 14:45:00,79.5,96.0,37.4,161.4,86.7,17.0 +PT1006,2026-06-15 15:00:00,80.1,96.1,36.9,159.7,86.1,17.0 +PT1006,2026-06-15 15:15:00,79.2,96.0,36.9,158.5,86.1,16.8 +PT1006,2026-06-15 15:30:00,78.2,96.0,37.4,160.2,87.1,16.2 +PT1006,2026-06-15 15:45:00,79.0,96.2,37.6,162.4,86.0,16.1 +PT1006,2026-06-15 16:00:00,81.2,96.2,37.2,163.6,87.0,16.8 +PT1006,2026-06-15 16:15:00,79.8,96.1,37.8,169.9,85.2,16.8 +PT1006,2026-06-15 16:30:00,78.9,95.4,37.4,164.8,84.0,16.1 +PT1006,2026-06-15 16:45:00,79.3,94.8,37.5,161.6,85.8,16.2 +PT1006,2026-06-15 17:00:00,80.7,94.6,36.7,163.4,86.7,15.4 +PT1006,2026-06-15 17:15:00,83.7,94.3,37.1,164.2,86.4,15.5 +PT1006,2026-06-15 17:30:00,85.0,94.6,36.6,164.4,85.0,15.3 +PT1006,2026-06-15 17:45:00,84.6,94.1,36.7,164.9,85.5,15.7 +PT1006,2026-06-15 18:00:00,83.3,94.5,36.8,162.1,88.6,15.3 +PT1006,2026-06-15 18:15:00,84.3,94.7,37.1,165.4,85.7,15.5 +PT1006,2026-06-15 18:30:00,83.1,95.1,36.6,165.9,85.6,15.7 +PT1006,2026-06-15 18:45:00,81.7,95.0,36.8,166.5,87.5,15.3 +PT1006,2026-06-15 19:00:00,82.3,95.0,37.1,162.7,86.2,15.3 +PT1006,2026-06-15 19:15:00,82.5,94.7,37.0,162.4,87.6,14.1 +PT1006,2026-06-15 19:30:00,80.6,94.7,36.8,159.4,87.8,14.8 +PT1006,2026-06-15 19:45:00,79.6,94.6,36.9,160.0,86.2,14.6 +PT1006,2026-06-15 20:00:00,79.2,94.7,38.0,161.1,84.0,14.8 +PT1006,2026-06-15 20:15:00,81.1,94.5,37.0,161.4,84.0,14.9 +PT1006,2026-06-15 20:30:00,80.8,94.3,37.5,163.6,84.4,15.1 +PT1006,2026-06-15 20:45:00,82.4,94.6,37.0,166.0,86.8,14.7 +PT1006,2026-06-15 21:00:00,83.3,94.4,37.1,165.3,87.1,14.6 +PT1006,2026-06-15 21:15:00,82.0,94.4,36.9,165.5,89.5,14.5 +PT1006,2026-06-15 21:30:00,82.9,93.6,37.5,164.9,88.7,14.6 +PT1006,2026-06-15 21:45:00,84.8,93.6,37.2,161.8,88.0,14.4 +PT1006,2026-06-15 22:00:00,85.0,93.5,37.6,159.3,86.7,14.1 +PT1006,2026-06-15 22:15:00,84.1,93.5,37.4,161.2,87.0,13.6 +PT1006,2026-06-15 22:30:00,84.6,93.0,37.6,163.7,88.3,13.8 +PT1006,2026-06-15 22:45:00,85.6,93.3,36.6,165.8,89.4,13.0 +PT1006,2026-06-15 23:00:00,86.7,93.6,36.7,164.4,87.7,13.1 +PT1006,2026-06-15 23:15:00,86.5,93.5,37.1,163.9,90.6,12.9 +PT1006,2026-06-15 23:30:00,85.0,93.7,37.1,163.6,92.3,11.9 +PT1006,2026-06-15 23:45:00,85.2,94.0,37.1,162.3,93.5,11.7 +PT1006,2026-06-16 00:00:00,86.4,93.7,36.9,163.8,94.0,11.6 +PT1006,2026-06-16 00:15:00,83.9,93.7,37.4,163.1,95.0,11.8 +PT1006,2026-06-16 00:30:00,85.3,94.5,37.6,164.2,93.7,12.1 +PT1006,2026-06-16 00:45:00,85.9,94.0,37.2,165.3,92.7,11.6 +PT1006,2026-06-16 01:00:00,84.1,94.3,37.0,166.7,92.6,11.4 +PT1006,2026-06-16 01:15:00,83.0,94.2,37.4,161.0,92.7,11.4 +PT1006,2026-06-16 01:30:00,83.4,94.5,37.2,162.1,94.3,12.5 +PT1006,2026-06-16 01:45:00,83.6,94.8,37.1,161.2,94.1,12.6 +PT1006,2026-06-16 02:00:00,83.8,95.0,37.0,157.8,97.2,12.8 +PT1006,2026-06-16 02:15:00,85.8,95.1,37.1,158.1,96.8,13.4 +PT1006,2026-06-16 02:30:00,85.2,95.3,37.4,160.4,99.2,13.7 +PT1006,2026-06-16 02:45:00,84.9,95.6,37.0,161.9,100.0,13.0 +PT1006,2026-06-16 03:00:00,84.9,95.7,37.0,166.7,101.3,12.7 +PT1006,2026-06-16 03:15:00,86.6,95.6,36.9,168.7,101.5,12.6 +PT1006,2026-06-16 03:30:00,83.0,95.7,37.4,166.6,99.4,12.7 +PT1006,2026-06-16 03:45:00,81.0,95.9,37.0,164.8,100.4,13.0 +PT1006,2026-06-16 04:00:00,81.1,95.8,36.7,165.4,100.7,12.6 +PT1006,2026-06-16 04:15:00,82.4,95.9,36.8,167.1,99.7,12.3 +PT1006,2026-06-16 04:30:00,82.3,95.9,37.2,166.0,102.1,12.0 +PT1006,2026-06-16 04:45:00,81.3,95.8,37.2,165.8,100.8,12.1 +PT1006,2026-06-16 05:00:00,82.7,95.5,36.8,166.2,100.7,11.3 +PT1006,2026-06-16 05:15:00,83.3,95.2,36.5,166.0,97.6,11.3 +PT1006,2026-06-16 05:30:00,82.6,95.0,36.7,166.3,97.2,10.8 +PT1006,2026-06-16 05:45:00,80.7,95.1,36.6,166.6,98.2,10.6 +PT1006,2026-06-16 06:00:00,80.4,95.1,37.1,164.3,96.6,10.8 +PT1006,2026-06-16 06:15:00,81.9,95.5,37.2,161.3,95.9,10.8 +PT1006,2026-06-16 06:30:00,83.2,95.7,37.7,163.5,96.0,10.6 +PT1006,2026-06-16 06:45:00,83.4,95.6,36.9,161.4,96.3,11.0 +PT1006,2026-06-16 07:00:00,83.3,95.7,36.9,162.3,95.9,10.8 +PT1006,2026-06-16 07:15:00,82.0,95.5,37.2,160.8,93.6,11.2 +PT1006,2026-06-16 07:30:00,82.3,95.8,37.4,162.2,92.4,11.7 +PT1006,2026-06-16 07:45:00,81.0,96.1,36.9,161.3,93.9,11.5 +PT1006,2026-06-16 08:00:00,80.5,95.8,37.9,158.3,90.1,11.1 +PT1006,2026-06-16 08:15:00,81.2,96.3,37.2,157.7,89.4,11.8 +PT1006,2026-06-16 08:30:00,80.1,96.4,36.7,160.2,87.3,12.0 +PT1006,2026-06-16 08:45:00,81.6,96.5,37.0,161.4,87.0,11.3 +PT1006,2026-06-16 09:00:00,82.8,97.0,37.4,162.0,85.9,11.5 +PT1006,2026-06-16 09:15:00,83.0,97.0,37.6,162.4,86.0,11.6 +PT1006,2026-06-16 09:30:00,80.6,96.9,37.3,160.5,87.8,11.5 +PT1006,2026-06-16 09:45:00,82.4,96.6,37.0,159.5,89.8,11.1 +PT1006,2026-06-16 10:00:00,80.6,97.0,36.9,158.3,90.3,11.4 +PT1006,2026-06-16 10:15:00,78.4,96.9,37.0,157.9,90.2,11.3 +PT1006,2026-06-16 10:30:00,77.8,97.0,37.2,156.2,90.0,11.1 +PT1006,2026-06-16 10:45:00,79.2,97.2,36.7,158.8,89.5,11.0 +PT1006,2026-06-16 11:00:00,78.9,97.2,36.7,157.6,88.6,10.3 +PT1006,2026-06-16 11:15:00,79.0,97.2,37.5,158.5,88.2,10.4 +PT1006,2026-06-16 11:30:00,79.0,97.0,36.8,156.1,89.4,9.7 +PT1006,2026-06-16 11:45:00,79.6,96.5,36.8,154.9,89.6,9.5 +PT1006,2026-06-16 12:00:00,79.0,96.7,37.3,158.6,89.8,8.7 +PT1006,2026-06-16 12:15:00,78.6,96.4,37.1,157.0,88.7,8.2 +PT1006,2026-06-16 12:30:00,80.9,96.2,37.0,160.6,89.0,8.1 +PT1006,2026-06-16 12:45:00,80.0,96.2,36.6,161.6,85.4,9.1 +PT1006,2026-06-16 13:00:00,79.4,95.6,37.2,161.1,84.7,8.9 +PT1006,2026-06-16 13:15:00,79.2,95.7,37.0,158.6,84.8,8.7 +PT1006,2026-06-16 13:30:00,79.6,95.6,37.3,158.4,83.1,9.1 +PT1006,2026-06-16 13:45:00,79.8,95.5,37.4,158.2,84.7,9.4 +PT1006,2026-06-16 14:00:00,79.5,95.6,37.2,160.6,83.3,9.0 +PT1006,2026-06-16 14:15:00,78.1,95.2,36.7,162.9,85.3,8.5 +PT1006,2026-06-16 14:30:00,77.4,95.5,37.2,162.1,85.4,8.6 +PT1006,2026-06-16 14:45:00,79.2,95.3,36.7,161.9,85.8,8.6 +PT1006,2026-06-16 15:00:00,77.5,94.9,37.1,163.3,84.6,8.8 +PT1006,2026-06-16 15:15:00,76.5,94.7,37.0,163.6,84.7,9.0 +PT1006,2026-06-16 15:30:00,75.5,94.7,37.3,166.4,81.9,8.7 +PT1006,2026-06-16 15:45:00,75.9,94.9,37.4,165.6,79.4,9.4 +PT1006,2026-06-16 16:00:00,76.0,94.7,37.1,164.6,79.8,9.3 +PT1006,2026-06-16 16:15:00,78.0,94.9,37.2,162.3,79.9,9.0 +PT1006,2026-06-16 16:30:00,78.0,95.7,37.2,163.1,79.7,9.8 +PT1006,2026-06-16 16:45:00,76.3,95.6,37.1,164.3,80.4,10.2 +PT1006,2026-06-16 17:00:00,76.5,95.3,37.9,167.4,80.0,9.8 +PT1006,2026-06-16 17:15:00,78.6,95.2,37.2,163.6,78.9,10.4 +PT1006,2026-06-16 17:30:00,77.0,95.4,37.5,163.2,77.9,10.2 +PT1006,2026-06-16 17:45:00,77.8,95.0,37.0,164.0,78.1,10.0 +PT1006,2026-06-16 18:00:00,76.8,94.8,36.9,164.5,77.7,10.2 +PT1006,2026-06-16 18:15:00,77.8,95.1,36.9,164.5,78.4,10.5 +PT1006,2026-06-16 18:30:00,78.5,94.6,37.1,159.2,78.0,10.7 +PT1006,2026-06-16 18:45:00,79.5,94.3,37.3,161.0,80.4,10.4 +PT1006,2026-06-16 19:00:00,79.6,94.4,36.7,164.2,80.9,10.8 +PT1006,2026-06-16 19:15:00,80.6,94.8,37.2,162.4,80.4,11.0 +PT1006,2026-06-16 19:30:00,79.0,94.8,37.1,161.7,78.9,11.6 +PT1006,2026-06-16 19:45:00,80.3,94.6,37.0,162.9,80.5,11.5 +PT1006,2026-06-16 20:00:00,78.8,94.3,37.1,162.0,79.1,11.2 +PT1006,2026-06-16 20:15:00,79.2,94.6,37.0,160.4,79.1,11.0 +PT1006,2026-06-16 20:30:00,78.9,94.6,36.6,160.9,78.6,11.5 +PT1006,2026-06-16 20:45:00,80.2,94.5,36.8,160.6,78.6,11.8 +PT1006,2026-06-16 21:00:00,79.5,94.6,36.8,157.2,78.6,11.5 +PT1006,2026-06-16 21:15:00,77.6,94.8,36.8,157.5,77.5,11.4 +PT1006,2026-06-16 21:30:00,77.1,94.8,37.2,157.6,78.1,10.7 +PT1006,2026-06-16 21:45:00,75.1,94.9,37.3,157.2,79.8,10.4 +PT1006,2026-06-16 22:00:00,73.8,94.9,36.9,153.1,81.1,11.1 +PT1006,2026-06-16 22:15:00,74.0,95.0,37.8,150.0,80.0,10.8 +PT1006,2026-06-16 22:30:00,75.4,95.0,36.8,151.6,80.3,11.0 +PT1006,2026-06-16 22:45:00,77.1,94.8,37.1,150.1,81.2,11.1 +PT1006,2026-06-16 23:00:00,78.2,94.5,37.7,153.8,80.4,11.1 +PT1006,2026-06-16 23:15:00,77.5,94.7,37.3,153.4,79.2,10.9 +PT1006,2026-06-16 23:30:00,78.8,94.8,36.8,150.2,80.1,10.9 +PT1006,2026-06-16 23:45:00,79.3,95.1,37.2,150.2,81.5,11.1 +PT1007,2026-06-14 00:00:00,73.6,98.0,37.4,121.8,76.2,14.9 +PT1007,2026-06-14 00:15:00,74.1,97.8,37.4,121.1,75.4,14.1 +PT1007,2026-06-14 00:30:00,77.8,98.1,37.1,121.4,74.6,13.7 +PT1007,2026-06-14 00:45:00,79.0,97.9,37.1,126.5,72.5,13.8 +PT1007,2026-06-14 01:00:00,78.9,97.8,37.6,126.7,71.9,14.3 +PT1007,2026-06-14 01:15:00,78.5,97.3,37.3,127.3,72.3,14.4 +PT1007,2026-06-14 01:30:00,80.1,97.5,36.8,128.4,73.4,14.5 +PT1007,2026-06-14 01:45:00,81.8,97.6,36.7,126.5,71.7,14.1 +PT1007,2026-06-14 02:00:00,82.6,97.5,37.3,128.0,73.5,14.5 +PT1007,2026-06-14 02:15:00,82.9,97.5,37.1,127.8,74.4,14.1 +PT1007,2026-06-14 02:30:00,81.9,97.8,36.9,129.2,77.6,13.8 +PT1007,2026-06-14 02:45:00,82.0,97.6,37.4,130.3,77.5,13.6 +PT1007,2026-06-14 03:00:00,79.7,97.7,36.4,129.2,78.7,14.0 +PT1007,2026-06-14 03:15:00,79.4,97.8,36.7,124.5,79.1,13.8 +PT1007,2026-06-14 03:30:00,78.6,97.5,37.1,123.3,79.3,14.2 +PT1007,2026-06-14 03:45:00,79.9,97.3,36.6,123.7,82.5,13.5 +PT1007,2026-06-14 04:00:00,81.4,97.3,37.1,122.4,80.8,13.5 +PT1007,2026-06-14 04:15:00,81.5,97.1,36.8,121.8,79.9,13.8 +PT1007,2026-06-14 04:30:00,81.6,97.7,36.2,119.5,78.8,13.7 +PT1007,2026-06-14 04:45:00,79.8,97.8,37.0,119.1,80.4,13.7 +PT1007,2026-06-14 05:00:00,79.0,97.7,36.7,116.7,80.2,13.3 +PT1007,2026-06-14 05:15:00,78.2,97.8,37.1,117.0,81.2,12.9 +PT1007,2026-06-14 05:30:00,80.2,98.2,37.2,114.4,79.7,13.6 +PT1007,2026-06-14 05:45:00,79.9,98.1,37.1,114.9,80.0,13.4 +PT1007,2026-06-14 06:00:00,79.2,98.1,37.1,113.4,78.1,13.9 +PT1007,2026-06-14 06:15:00,81.2,97.7,36.8,110.5,78.8,13.9 +PT1007,2026-06-14 06:30:00,82.6,97.4,36.9,112.9,78.7,13.5 +PT1007,2026-06-14 06:45:00,84.2,97.4,37.0,114.9,80.8,13.5 +PT1007,2026-06-14 07:00:00,83.6,97.5,37.2,117.9,79.0,13.5 +PT1007,2026-06-14 07:15:00,81.4,97.2,36.5,116.5,80.1,13.9 +PT1007,2026-06-14 07:30:00,82.2,97.4,37.5,117.7,80.4,14.3 +PT1007,2026-06-14 07:45:00,80.2,97.4,37.2,117.2,79.5,14.1 +PT1007,2026-06-14 08:00:00,78.6,97.5,36.9,116.4,80.8,13.9 +PT1007,2026-06-14 08:15:00,77.4,97.4,37.2,114.8,81.5,14.3 +PT1007,2026-06-14 08:30:00,77.3,97.5,37.4,114.7,81.5,14.2 +PT1007,2026-06-14 08:45:00,74.2,97.0,36.9,116.8,81.2,14.5 +PT1007,2026-06-14 09:00:00,76.2,96.9,36.6,117.7,80.5,14.2 +PT1007,2026-06-14 09:15:00,77.1,97.0,37.1,117.9,78.8,14.7 +PT1007,2026-06-14 09:30:00,78.0,97.0,37.0,115.7,80.3,14.9 +PT1007,2026-06-14 09:45:00,78.5,97.3,37.3,117.0,77.8,14.3 +PT1007,2026-06-14 10:00:00,77.6,97.0,37.4,117.8,76.1,14.1 +PT1007,2026-06-14 10:15:00,75.8,96.7,36.9,114.5,74.9,14.2 +PT1007,2026-06-14 10:30:00,77.6,96.8,37.4,114.5,76.8,13.6 +PT1007,2026-06-14 10:45:00,77.3,96.7,37.1,115.7,76.1,13.7 +PT1007,2026-06-14 11:00:00,77.6,96.5,36.5,117.6,73.1,14.0 +PT1007,2026-06-14 11:15:00,76.7,96.7,36.8,113.6,73.3,13.4 +PT1007,2026-06-14 11:30:00,75.5,96.4,36.7,110.1,76.4,13.3 +PT1007,2026-06-14 11:45:00,74.8,96.4,37.5,109.3,74.5,13.0 +PT1007,2026-06-14 12:00:00,73.1,95.9,36.7,108.6,71.6,12.6 +PT1007,2026-06-14 12:15:00,71.6,95.9,36.8,109.1,70.4,12.6 +PT1007,2026-06-14 12:30:00,72.1,95.5,36.6,109.4,70.8,13.5 +PT1007,2026-06-14 12:45:00,75.3,95.7,37.3,113.1,72.1,13.1 +PT1007,2026-06-14 13:00:00,74.5,95.7,37.2,110.7,71.1,13.5 +PT1007,2026-06-14 13:15:00,75.7,95.4,37.2,107.0,72.8,13.9 +PT1007,2026-06-14 13:30:00,76.2,95.6,37.1,107.3,73.6,14.2 +PT1007,2026-06-14 13:45:00,75.8,95.7,36.6,111.9,72.3,14.1 +PT1007,2026-06-14 14:00:00,76.3,95.6,37.0,109.1,72.2,14.7 +PT1007,2026-06-14 14:15:00,76.0,96.0,37.4,109.1,70.4,14.9 +PT1007,2026-06-14 14:30:00,75.7,96.0,37.1,106.4,69.1,14.8 +PT1007,2026-06-14 14:45:00,75.0,95.9,37.4,106.2,67.6,14.7 +PT1007,2026-06-14 15:00:00,74.3,95.7,37.3,110.4,67.9,14.4 +PT1007,2026-06-14 15:15:00,74.6,95.6,37.3,110.3,67.5,14.8 +PT1007,2026-06-14 15:30:00,72.0,96.1,37.2,109.7,70.1,15.1 +PT1007,2026-06-14 15:45:00,71.9,96.8,37.1,109.1,69.1,14.8 +PT1007,2026-06-14 16:00:00,71.9,97.0,37.3,110.7,70.2,14.7 +PT1007,2026-06-14 16:15:00,72.8,97.0,37.2,111.2,71.4,14.8 +PT1007,2026-06-14 16:30:00,74.5,97.1,37.0,110.0,69.4,14.9 +PT1007,2026-06-14 16:45:00,75.5,97.5,36.9,107.9,68.0,14.9 +PT1007,2026-06-14 17:00:00,75.2,97.3,37.6,105.9,69.3,14.9 +PT1007,2026-06-14 17:15:00,75.7,97.7,36.9,104.5,68.2,15.8 +PT1007,2026-06-14 17:30:00,74.5,97.4,37.1,108.3,67.7,15.9 +PT1007,2026-06-14 17:45:00,73.6,97.3,37.5,110.0,65.9,16.2 +PT1007,2026-06-14 18:00:00,74.0,97.6,36.9,107.2,63.2,16.3 +PT1007,2026-06-14 18:15:00,75.0,97.6,36.9,107.5,63.3,16.4 +PT1007,2026-06-14 18:30:00,73.4,97.5,37.1,110.4,62.4,16.1 +PT1007,2026-06-14 18:45:00,72.0,97.8,36.8,108.3,61.9,17.1 +PT1007,2026-06-14 19:00:00,73.8,97.8,37.0,108.8,60.7,17.4 +PT1007,2026-06-14 19:15:00,72.4,98.2,37.3,108.0,57.9,17.3 +PT1007,2026-06-14 19:30:00,73.2,98.0,37.1,106.1,55.9,17.3 +PT1007,2026-06-14 19:45:00,74.0,98.0,37.1,105.7,55.5,17.4 +PT1007,2026-06-14 20:00:00,75.2,98.0,37.1,105.9,55.4,17.0 +PT1007,2026-06-14 20:15:00,74.4,98.1,36.2,105.5,57.9,16.5 +PT1007,2026-06-14 20:30:00,74.7,98.0,37.0,105.8,56.1,17.3 +PT1007,2026-06-14 20:45:00,73.8,98.4,37.1,107.5,58.1,17.2 +PT1007,2026-06-14 21:00:00,73.1,98.2,37.4,108.3,57.6,18.1 +PT1007,2026-06-14 21:15:00,75.4,97.7,36.6,112.1,54.0,17.6 +PT1007,2026-06-14 21:30:00,75.7,97.7,36.8,113.7,53.9,18.1 +PT1007,2026-06-14 21:45:00,77.2,97.7,37.1,118.4,55.2,18.0 +PT1007,2026-06-14 22:00:00,75.9,97.8,37.0,117.8,56.3,17.4 +PT1007,2026-06-14 22:15:00,74.5,97.5,37.7,119.0,58.0,16.5 +PT1007,2026-06-14 22:30:00,76.2,97.2,37.3,120.7,57.3,16.5 +PT1007,2026-06-14 22:45:00,76.8,97.0,36.5,119.5,56.5,16.9 +PT1007,2026-06-14 23:00:00,76.6,97.4,36.8,120.9,58.1,16.8 +PT1007,2026-06-14 23:15:00,76.6,97.2,37.6,125.4,57.8,17.1 +PT1007,2026-06-14 23:30:00,75.3,96.7,36.8,126.4,58.8,16.9 +PT1007,2026-06-14 23:45:00,75.7,96.7,37.3,127.0,57.1,17.1 +PT1007,2026-06-15 00:00:00,73.9,97.0,37.3,127.5,58.4,16.6 +PT1007,2026-06-15 00:15:00,71.9,96.8,37.7,128.0,58.0,16.6 +PT1007,2026-06-15 00:30:00,71.9,97.0,37.2,127.9,57.9,16.2 +PT1007,2026-06-15 00:45:00,75.0,97.0,37.2,127.4,59.6,16.6 +PT1007,2026-06-15 01:00:00,74.6,97.3,36.9,127.6,60.9,16.3 +PT1007,2026-06-15 01:15:00,74.7,97.0,37.8,126.9,59.0,15.6 +PT1007,2026-06-15 01:30:00,74.0,96.9,37.7,127.0,57.4,15.4 +PT1007,2026-06-15 01:45:00,74.4,97.1,36.7,130.2,57.7,15.4 +PT1007,2026-06-15 02:00:00,73.9,97.1,37.4,128.6,60.1,15.8 +PT1007,2026-06-15 02:15:00,73.8,96.8,37.3,131.2,60.6,16.1 +PT1007,2026-06-15 02:30:00,74.2,97.3,37.1,129.9,60.1,16.8 +PT1007,2026-06-15 02:45:00,74.0,97.3,37.3,131.3,59.8,16.6 +PT1007,2026-06-15 03:00:00,74.1,97.0,37.6,131.3,61.9,16.9 +PT1007,2026-06-15 03:15:00,73.3,97.3,37.1,130.0,60.0,16.6 +PT1007,2026-06-15 03:30:00,74.5,97.4,37.4,129.7,58.5,16.9 +PT1007,2026-06-15 03:45:00,74.8,97.1,37.0,131.3,60.3,17.5 +PT1007,2026-06-15 04:00:00,75.4,97.0,37.5,129.5,62.7,17.7 +PT1007,2026-06-15 04:15:00,73.9,97.1,37.0,130.5,61.4,18.3 +PT1007,2026-06-15 04:30:00,74.4,96.9,37.2,128.1,62.8,18.5 +PT1007,2026-06-15 04:45:00,74.1,97.0,37.2,130.7,61.8,18.7 +PT1007,2026-06-15 05:00:00,73.9,96.6,36.7,130.6,62.8,18.8 +PT1007,2026-06-15 05:15:00,75.4,97.0,36.7,130.4,66.2,18.5 +PT1007,2026-06-15 05:30:00,74.1,97.1,36.6,126.9,65.8,19.7 +PT1007,2026-06-15 05:45:00,73.5,96.8,37.1,126.3,65.3,19.4 +PT1007,2026-06-15 06:00:00,74.3,97.2,36.7,125.7,65.3,19.6 +PT1007,2026-06-15 06:15:00,74.1,97.1,37.5,127.6,67.9,19.3 +PT1007,2026-06-15 06:30:00,72.3,97.1,36.8,128.1,65.7,18.9 +PT1007,2026-06-15 06:45:00,70.8,96.5,37.3,127.7,65.5,18.9 +PT1007,2026-06-15 07:00:00,68.4,96.4,36.8,132.8,66.9,19.3 +PT1007,2026-06-15 07:15:00,68.2,95.8,36.8,134.0,69.0,18.7 +PT1007,2026-06-15 07:30:00,68.2,95.9,37.1,132.9,67.7,18.4 +PT1007,2026-06-15 07:45:00,69.0,95.9,37.1,132.6,65.1,18.7 +PT1007,2026-06-15 08:00:00,68.5,95.9,36.9,131.0,64.5,18.8 +PT1007,2026-06-15 08:15:00,66.5,95.5,36.8,131.9,64.4,18.7 +PT1007,2026-06-15 08:30:00,66.5,95.4,37.6,130.7,64.3,18.8 +PT1007,2026-06-15 08:45:00,67.2,95.6,36.8,132.9,63.2,18.7 +PT1007,2026-06-15 09:00:00,66.5,95.5,36.7,131.4,63.5,18.9 +PT1007,2026-06-15 09:15:00,66.1,95.5,37.4,128.5,62.4,19.2 +PT1007,2026-06-15 09:30:00,64.2,95.6,37.3,125.6,61.8,19.2 +PT1007,2026-06-15 09:45:00,64.0,95.3,37.0,123.2,62.0,18.9 +PT1007,2026-06-15 10:00:00,65.3,95.5,37.2,126.4,60.5,18.7 +PT1007,2026-06-15 10:15:00,67.5,95.3,37.4,126.4,62.5,18.7 +PT1007,2026-06-15 10:30:00,69.9,95.4,36.7,127.4,63.6,18.3 +PT1007,2026-06-15 10:45:00,70.1,95.2,36.7,129.5,64.0,18.7 +PT1007,2026-06-15 11:00:00,71.3,94.7,37.0,127.2,65.0,18.5 +PT1007,2026-06-15 11:15:00,71.4,95.0,36.9,123.4,66.9,19.1 +PT1007,2026-06-15 11:30:00,70.6,95.0,36.6,122.0,67.4,19.2 +PT1007,2026-06-15 11:45:00,69.5,94.7,37.4,122.4,68.7,18.8 +PT1007,2026-06-15 12:00:00,68.4,94.9,37.6,121.8,68.0,19.3 +PT1007,2026-06-15 12:15:00,66.1,95.1,36.8,122.2,69.0,18.7 +PT1007,2026-06-15 12:30:00,65.4,95.2,37.7,120.7,68.5,19.0 +PT1007,2026-06-15 12:45:00,66.3,95.4,37.1,120.3,67.2,18.9 +PT1007,2026-06-15 13:00:00,65.0,95.6,37.5,123.4,67.4,19.3 +PT1007,2026-06-15 13:15:00,63.8,95.2,37.5,122.4,67.5,18.9 +PT1007,2026-06-15 13:30:00,66.2,95.2,37.4,120.4,68.3,18.5 +PT1007,2026-06-15 13:45:00,65.9,95.4,37.2,122.2,69.1,19.2 +PT1007,2026-06-15 14:00:00,65.4,94.9,36.9,117.7,70.0,19.1 +PT1007,2026-06-15 14:15:00,64.1,95.1,36.8,115.7,72.5,20.0 +PT1007,2026-06-15 14:30:00,64.9,95.2,36.8,113.7,71.0,20.0 +PT1007,2026-06-15 14:45:00,66.3,95.2,36.9,111.5,70.9,20.2 +PT1007,2026-06-15 15:00:00,63.9,95.2,36.9,109.0,69.7,20.4 +PT1007,2026-06-15 15:15:00,63.8,95.6,36.8,108.3,72.7,20.7 +PT1007,2026-06-15 15:30:00,63.3,95.3,36.5,109.6,74.7,20.5 +PT1007,2026-06-15 15:45:00,63.8,95.1,37.3,108.2,75.2,21.0 +PT1007,2026-06-15 16:00:00,64.3,95.1,36.9,105.5,75.7,21.3 +PT1007,2026-06-15 16:15:00,63.9,95.4,37.3,104.8,75.3,21.3 +PT1007,2026-06-15 16:30:00,64.4,95.4,37.4,107.8,74.7,20.9 +PT1007,2026-06-15 16:45:00,64.7,95.3,36.7,107.1,72.8,21.0 +PT1007,2026-06-15 17:00:00,65.5,95.2,37.2,104.3,74.4,21.9 +PT1007,2026-06-15 17:15:00,65.2,95.0,37.4,104.8,75.4,21.9 +PT1007,2026-06-15 17:30:00,67.1,94.7,37.3,105.4,72.5,21.6 +PT1007,2026-06-15 17:45:00,67.1,94.3,37.3,107.5,71.7,21.9 +PT1007,2026-06-15 18:00:00,66.1,94.5,36.8,108.1,72.0,21.7 +PT1007,2026-06-15 18:15:00,65.7,94.4,37.6,109.8,69.5,22.3 +PT1007,2026-06-15 18:30:00,64.9,94.8,37.4,107.8,71.2,22.0 +PT1007,2026-06-15 18:45:00,63.2,95.1,37.4,110.4,69.0,22.7 +PT1007,2026-06-15 19:00:00,60.9,95.0,37.4,112.5,70.1,22.7 +PT1007,2026-06-15 19:15:00,59.9,95.0,37.3,110.8,70.3,23.1 +PT1007,2026-06-15 19:30:00,60.3,95.2,37.3,113.0,73.0,23.6 +PT1007,2026-06-15 19:45:00,61.4,95.3,37.2,112.4,74.3,23.9 +PT1007,2026-06-15 20:00:00,61.3,95.3,37.4,111.6,76.1,24.4 +PT1007,2026-06-15 20:15:00,60.1,95.2,37.2,111.1,75.2,25.1 +PT1007,2026-06-15 20:30:00,60.5,95.1,37.0,112.8,78.5,25.1 +PT1007,2026-06-15 20:45:00,60.5,95.0,37.1,112.8,77.6,24.8 +PT1007,2026-06-15 21:00:00,60.7,95.0,37.3,115.7,78.2,25.1 +PT1007,2026-06-15 21:15:00,60.9,95.0,36.9,114.0,79.2,24.9 +PT1007,2026-06-15 21:30:00,62.5,94.7,37.6,117.4,81.7,24.9 +PT1007,2026-06-15 21:45:00,61.5,95.0,37.0,117.5,79.0,24.6 +PT1007,2026-06-15 22:00:00,62.5,94.9,37.1,116.9,79.8,24.8 +PT1007,2026-06-15 22:15:00,62.2,95.1,37.3,116.3,78.0,24.6 +PT1007,2026-06-15 22:30:00,62.0,95.0,36.8,113.8,77.8,24.7 +PT1007,2026-06-15 22:45:00,61.9,94.8,36.6,113.5,80.4,24.8 +PT1007,2026-06-15 23:00:00,62.3,95.1,37.1,110.8,78.8,24.9 +PT1007,2026-06-15 23:15:00,63.8,95.1,37.3,112.4,81.1,24.6 +PT1007,2026-06-15 23:30:00,63.4,94.5,37.0,113.4,82.0,23.9 +PT1007,2026-06-15 23:45:00,62.7,94.7,37.2,110.3,82.1,23.0 +PT1007,2026-06-16 00:00:00,62.9,94.6,37.5,113.1,78.2,23.0 +PT1007,2026-06-16 00:15:00,63.1,95.0,37.4,112.2,78.0,23.5 +PT1007,2026-06-16 00:30:00,66.1,95.0,37.4,112.6,77.3,23.4 +PT1007,2026-06-16 00:45:00,66.1,94.8,37.0,111.9,77.1,23.1 +PT1007,2026-06-16 01:00:00,65.0,94.7,36.9,114.2,77.2,24.1 +PT1007,2026-06-16 01:15:00,65.6,94.8,37.2,115.5,76.3,23.9 +PT1007,2026-06-16 01:30:00,65.0,94.4,37.2,118.1,77.6,23.8 +PT1007,2026-06-16 01:45:00,66.3,94.7,37.1,118.3,76.7,24.4 +PT1007,2026-06-16 02:00:00,66.1,94.8,37.0,120.6,76.7,24.8 +PT1007,2026-06-16 02:15:00,66.9,94.6,36.7,122.8,75.7,24.9 +PT1007,2026-06-16 02:30:00,67.0,94.7,37.3,121.4,75.5,25.0 +PT1007,2026-06-16 02:45:00,67.1,95.0,37.0,123.7,75.5,24.5 +PT1007,2026-06-16 03:00:00,64.5,95.0,36.9,126.5,76.7,24.6 +PT1007,2026-06-16 03:15:00,64.7,95.5,37.8,129.5,76.4,24.0 +PT1007,2026-06-16 03:30:00,63.8,95.7,36.8,126.4,75.9,23.3 +PT1007,2026-06-16 03:45:00,62.8,95.8,37.4,126.2,80.0,23.8 +PT1007,2026-06-16 04:00:00,63.5,95.9,36.7,128.6,76.4,23.5 +PT1007,2026-06-16 04:15:00,61.2,95.7,36.5,126.3,78.2,23.6 +PT1007,2026-06-16 04:30:00,61.7,95.5,37.2,126.4,78.8,23.3 +PT1007,2026-06-16 04:45:00,62.2,95.4,37.2,125.0,78.8,23.2 +PT1007,2026-06-16 05:00:00,62.0,95.1,37.1,124.6,79.3,23.3 +PT1007,2026-06-16 05:15:00,61.4,95.0,37.1,123.8,80.9,22.9 +PT1007,2026-06-16 05:30:00,60.0,95.2,36.4,122.7,79.7,23.0 +PT1007,2026-06-16 05:45:00,58.5,95.3,37.8,124.7,80.4,23.1 +PT1007,2026-06-16 06:00:00,59.2,95.1,36.7,126.8,79.4,22.8 +PT1007,2026-06-16 06:15:00,58.8,94.8,37.1,127.9,79.2,22.2 +PT1007,2026-06-16 06:30:00,60.0,95.2,37.2,124.3,78.0,21.7 +PT1007,2026-06-16 06:45:00,58.4,95.5,36.9,126.7,79.3,21.4 +PT1007,2026-06-16 07:00:00,57.9,95.8,37.0,123.3,79.9,21.1 +PT1007,2026-06-16 07:15:00,58.9,95.4,37.1,122.8,79.7,21.0 +PT1007,2026-06-16 07:30:00,59.6,95.3,37.3,123.5,80.2,21.2 +PT1007,2026-06-16 07:45:00,60.1,95.3,37.0,121.0,82.2,21.8 +PT1007,2026-06-16 08:00:00,60.7,95.2,37.6,119.5,82.3,23.0 +PT1007,2026-06-16 08:15:00,62.5,95.3,37.2,117.7,83.8,21.8 +PT1007,2026-06-16 08:30:00,63.8,95.4,37.1,121.0,81.7,22.5 +PT1007,2026-06-16 08:45:00,65.6,95.6,37.5,124.0,83.2,22.7 +PT1007,2026-06-16 09:00:00,65.7,95.8,37.2,124.0,82.1,22.9 +PT1007,2026-06-16 09:15:00,67.3,95.8,36.9,122.5,84.0,23.0 +PT1007,2026-06-16 09:30:00,69.0,96.0,36.8,126.2,83.5,22.8 +PT1007,2026-06-16 09:45:00,68.3,95.9,37.6,127.6,82.1,22.5 +PT1007,2026-06-16 10:00:00,64.9,96.0,37.1,125.0,80.9,23.1 +PT1007,2026-06-16 10:15:00,68.1,96.2,37.3,123.3,81.7,23.5 +PT1007,2026-06-16 10:30:00,67.9,95.8,37.0,122.7,84.2,23.2 +PT1007,2026-06-16 10:45:00,69.1,96.0,37.1,120.1,84.1,23.8 +PT1007,2026-06-16 11:00:00,70.8,96.3,36.6,118.2,83.6,24.0 +PT1007,2026-06-16 11:15:00,70.6,96.5,36.9,117.0,84.5,23.8 +PT1007,2026-06-16 11:30:00,71.5,96.8,37.2,115.5,82.7,23.8 +PT1007,2026-06-16 11:45:00,70.6,97.2,37.5,115.2,81.6,24.6 +PT1007,2026-06-16 12:00:00,69.8,97.5,36.7,113.9,82.7,25.3 +PT1007,2026-06-16 12:15:00,69.1,97.4,36.6,114.5,83.4,25.2 +PT1007,2026-06-16 12:30:00,67.7,97.2,36.8,115.6,81.4,24.9 +PT1007,2026-06-16 12:45:00,68.1,97.5,37.1,115.9,84.3,24.9 +PT1007,2026-06-16 13:00:00,67.2,97.5,37.0,114.2,82.9,24.5 +PT1007,2026-06-16 13:15:00,66.7,98.2,38.0,114.7,83.2,24.3 +PT1007,2026-06-16 13:30:00,65.6,98.1,37.1,116.7,83.5,23.8 +PT1007,2026-06-16 13:45:00,66.4,98.2,37.3,118.0,86.7,23.9 +PT1007,2026-06-16 14:00:00,63.6,98.6,37.3,118.1,85.4,23.8 +PT1007,2026-06-16 14:15:00,64.9,98.6,37.2,119.3,85.0,24.0 +PT1007,2026-06-16 14:30:00,65.3,98.5,36.9,120.1,83.8,24.1 +PT1007,2026-06-16 14:45:00,64.1,98.4,37.1,119.7,83.0,24.3 +PT1007,2026-06-16 15:00:00,65.4,98.3,37.0,120.1,85.8,24.1 +PT1007,2026-06-16 15:15:00,66.9,98.1,37.4,122.7,85.5,23.7 +PT1007,2026-06-16 15:30:00,66.6,98.5,37.1,122.9,85.6,23.5 +PT1007,2026-06-16 15:45:00,66.3,98.9,37.0,123.4,86.6,23.6 +PT1007,2026-06-16 16:00:00,66.8,99.3,36.9,121.3,87.3,24.2 +PT1007,2026-06-16 16:15:00,67.9,99.5,37.2,118.7,88.9,23.9 +PT1007,2026-06-16 16:30:00,69.2,99.8,37.4,115.7,91.6,24.5 +PT1007,2026-06-16 16:45:00,69.7,99.7,37.4,113.5,89.2,24.7 +PT1007,2026-06-16 17:00:00,69.6,99.5,36.9,113.6,88.2,24.7 +PT1007,2026-06-16 17:15:00,70.3,99.8,37.1,114.7,88.1,25.1 +PT1007,2026-06-16 17:30:00,71.5,99.7,37.4,113.7,86.6,25.0 +PT1007,2026-06-16 17:45:00,70.5,99.1,37.7,112.8,84.8,24.8 +PT1007,2026-06-16 18:00:00,69.4,99.2,37.4,112.7,85.4,24.6 +PT1007,2026-06-16 18:15:00,70.0,99.3,37.2,112.9,87.3,24.8 +PT1007,2026-06-16 18:30:00,70.8,98.9,36.9,113.2,87.2,25.2 +PT1007,2026-06-16 18:45:00,71.0,99.4,36.9,113.2,85.2,26.1 +PT1007,2026-06-16 19:00:00,69.8,99.1,37.1,114.6,87.1,26.8 +PT1007,2026-06-16 19:15:00,68.6,99.0,36.7,114.7,87.1,27.3 +PT1007,2026-06-16 19:30:00,67.3,98.9,37.5,115.4,86.4,27.1 +PT1007,2026-06-16 19:45:00,67.9,98.6,37.3,114.4,87.2,26.6 +PT1007,2026-06-16 20:00:00,67.5,98.7,37.5,114.7,85.5,26.4 +PT1007,2026-06-16 20:15:00,70.4,98.3,36.9,116.8,86.0,27.2 +PT1007,2026-06-16 20:30:00,71.5,98.2,36.8,119.3,89.5,27.3 +PT1007,2026-06-16 20:45:00,73.2,98.3,36.9,120.1,91.8,26.8 +PT1007,2026-06-16 21:00:00,73.9,98.1,36.7,119.4,93.7,27.0 +PT1007,2026-06-16 21:15:00,74.4,98.5,37.2,119.8,95.1,26.8 +PT1007,2026-06-16 21:30:00,72.5,98.6,37.3,120.5,93.1,27.4 +PT1007,2026-06-16 21:45:00,71.7,98.8,36.8,118.5,91.8,27.0 +PT1007,2026-06-16 22:00:00,72.2,98.8,37.0,120.0,87.6,26.9 +PT1007,2026-06-16 22:15:00,72.3,98.8,37.0,120.5,87.7,26.7 +PT1007,2026-06-16 22:30:00,72.3,98.9,37.3,120.7,86.6,26.3 +PT1007,2026-06-16 22:45:00,73.2,99.2,36.9,119.7,83.8,26.5 +PT1007,2026-06-16 23:00:00,73.1,99.2,37.5,120.8,85.1,27.0 +PT1007,2026-06-16 23:15:00,73.2,98.8,37.8,119.6,87.2,27.0 +PT1007,2026-06-16 23:30:00,72.7,99.3,37.3,119.6,86.6,26.7 +PT1007,2026-06-16 23:45:00,71.0,99.2,37.6,119.5,83.2,26.7 +PT1008,2026-06-14 00:00:00,82.5,95.8,37.2,141.0,88.5,16.8 +PT1008,2026-06-14 00:15:00,81.9,95.6,37.0,143.4,89.6,16.0 +PT1008,2026-06-14 00:30:00,83.1,95.5,37.0,142.2,89.2,16.1 +PT1008,2026-06-14 00:45:00,83.0,95.5,37.1,140.3,87.7,15.6 +PT1008,2026-06-14 01:00:00,83.7,95.3,37.0,137.3,86.3,16.2 +PT1008,2026-06-14 01:15:00,83.4,95.1,36.8,138.4,86.2,15.9 +PT1008,2026-06-14 01:30:00,83.9,95.1,36.4,136.0,88.0,15.7 +PT1008,2026-06-14 01:45:00,85.7,95.1,37.2,136.8,90.5,15.3 +PT1008,2026-06-14 02:00:00,87.1,94.9,36.8,139.8,88.4,15.2 +PT1008,2026-06-14 02:15:00,87.9,94.7,36.9,138.5,87.1,14.7 +PT1008,2026-06-14 02:30:00,87.8,94.6,36.6,138.1,86.1,14.6 +PT1008,2026-06-14 02:45:00,87.0,94.6,37.2,138.7,86.3,14.1 +PT1008,2026-06-14 03:00:00,87.1,95.0,37.0,135.7,86.1,14.5 +PT1008,2026-06-14 03:15:00,86.0,94.8,36.8,137.3,83.8,14.4 +PT1008,2026-06-14 03:30:00,85.0,94.9,37.3,136.5,84.2,13.9 +PT1008,2026-06-14 03:45:00,85.2,95.2,37.2,135.7,84.8,14.2 +PT1008,2026-06-14 04:00:00,87.2,94.8,37.5,136.0,84.2,14.0 +PT1008,2026-06-14 04:15:00,86.5,95.0,37.0,133.9,85.8,14.0 +PT1008,2026-06-14 04:30:00,84.6,94.9,36.9,132.5,88.4,14.0 +PT1008,2026-06-14 04:45:00,83.8,94.6,37.8,135.6,90.3,14.0 +PT1008,2026-06-14 05:00:00,83.8,94.9,37.2,136.7,89.4,14.1 +PT1008,2026-06-14 05:15:00,82.2,95.0,36.8,139.0,88.4,14.0 +PT1008,2026-06-14 05:30:00,81.7,94.9,37.1,142.1,87.9,13.8 +PT1008,2026-06-14 05:45:00,79.6,94.3,37.4,139.4,88.4,13.8 +PT1008,2026-06-14 06:00:00,77.8,94.2,37.0,136.2,88.8,13.2 +PT1008,2026-06-14 06:15:00,78.1,94.1,36.6,131.7,91.3,13.0 +PT1008,2026-06-14 06:30:00,79.0,94.4,37.2,131.1,93.6,12.7 +PT1008,2026-06-14 06:45:00,79.6,94.7,37.2,127.2,97.0,13.2 +PT1008,2026-06-14 07:00:00,78.7,94.5,37.1,127.7,97.7,13.3 +PT1008,2026-06-14 07:15:00,79.2,94.0,37.5,127.2,95.7,13.3 +PT1008,2026-06-14 07:30:00,78.1,93.8,37.3,125.5,94.6,13.5 +PT1008,2026-06-14 07:45:00,79.9,93.6,36.8,126.9,95.9,14.2 +PT1008,2026-06-14 08:00:00,77.5,93.5,36.4,132.5,94.2,14.4 +PT1008,2026-06-14 08:15:00,79.7,93.1,37.5,127.7,94.4,14.5 +PT1008,2026-06-14 08:30:00,80.8,92.6,37.2,127.4,93.3,13.9 +PT1008,2026-06-14 08:45:00,82.0,92.4,37.0,126.7,92.9,13.7 +PT1008,2026-06-14 09:00:00,81.2,92.4,37.3,125.6,93.6,13.4 +PT1008,2026-06-14 09:15:00,80.5,92.6,37.1,123.9,94.9,12.7 +PT1008,2026-06-14 09:30:00,79.8,92.6,37.0,121.5,94.6,12.3 +PT1008,2026-06-14 09:45:00,79.4,92.7,37.1,121.6,97.4,12.1 +PT1008,2026-06-14 10:00:00,83.3,92.7,36.7,123.5,98.3,13.0 +PT1008,2026-06-14 10:15:00,81.4,92.4,36.8,123.9,96.8,12.1 +PT1008,2026-06-14 10:30:00,81.8,92.2,37.0,126.2,95.1,12.1 +PT1008,2026-06-14 10:45:00,82.1,92.3,37.3,129.3,96.1,12.0 +PT1008,2026-06-14 11:00:00,83.0,92.8,36.5,129.0,96.0,12.5 +PT1008,2026-06-14 11:15:00,82.7,93.0,36.4,131.1,92.7,12.0 +PT1008,2026-06-14 11:30:00,83.8,93.1,36.8,134.0,92.7,12.9 +PT1008,2026-06-14 11:45:00,83.3,93.2,37.0,132.5,93.4,12.8 +PT1008,2026-06-14 12:00:00,83.2,93.4,36.9,131.9,91.7,12.8 +PT1008,2026-06-14 12:15:00,82.0,93.0,37.1,133.7,92.7,13.4 +PT1008,2026-06-14 12:30:00,83.2,92.8,37.2,129.9,91.6,13.3 +PT1008,2026-06-14 12:45:00,84.8,92.9,37.2,134.4,91.7,13.4 +PT1008,2026-06-14 13:00:00,85.2,93.0,36.8,131.9,93.0,14.4 +PT1008,2026-06-14 13:15:00,85.2,92.6,36.7,133.5,94.1,13.8 +PT1008,2026-06-14 13:30:00,82.6,93.0,37.4,131.8,93.9,13.6 +PT1008,2026-06-14 13:45:00,83.4,93.2,37.3,130.2,95.0,14.0 +PT1008,2026-06-14 14:00:00,81.9,92.9,37.1,133.6,97.9,14.0 +PT1008,2026-06-14 14:15:00,82.1,93.1,37.1,130.7,98.2,13.6 +PT1008,2026-06-14 14:30:00,81.0,93.0,37.5,131.1,97.3,13.1 +PT1008,2026-06-14 14:45:00,79.7,92.4,37.1,132.2,96.9,13.1 +PT1008,2026-06-14 15:00:00,81.2,92.9,37.3,132.7,95.1,13.2 +PT1008,2026-06-14 15:15:00,82.5,92.9,36.6,131.6,93.7,13.1 +PT1008,2026-06-14 15:30:00,82.9,93.0,37.1,132.0,94.8,13.7 +PT1008,2026-06-14 15:45:00,83.0,92.9,37.4,133.1,94.8,14.2 +PT1008,2026-06-14 16:00:00,83.4,92.9,37.0,132.5,95.5,14.3 +PT1008,2026-06-14 16:15:00,83.7,92.7,37.0,133.4,94.5,14.7 +PT1008,2026-06-14 16:30:00,85.7,92.7,37.1,133.9,92.4,15.2 +PT1008,2026-06-14 16:45:00,87.8,92.8,37.3,133.5,91.6,15.5 +PT1008,2026-06-14 17:00:00,86.2,92.7,37.2,134.9,90.7,15.1 +PT1008,2026-06-14 17:15:00,86.2,92.6,36.6,138.5,90.4,14.6 +PT1008,2026-06-14 17:30:00,87.5,92.3,37.2,138.5,89.1,14.6 +PT1008,2026-06-14 17:45:00,85.8,92.2,36.9,137.2,87.7,14.5 +PT1008,2026-06-14 18:00:00,86.8,92.0,36.9,138.1,88.3,13.9 +PT1008,2026-06-14 18:15:00,86.7,92.1,37.2,137.6,89.9,13.9 +PT1008,2026-06-14 18:30:00,85.9,92.3,37.0,141.5,90.6,14.3 +PT1008,2026-06-14 18:45:00,87.0,92.5,37.1,142.0,90.5,13.7 +PT1008,2026-06-14 19:00:00,87.7,92.4,36.7,139.4,90.7,13.8 +PT1008,2026-06-14 19:15:00,87.7,92.4,37.1,142.1,90.0,14.7 +PT1008,2026-06-14 19:30:00,86.2,92.4,37.2,139.8,89.7,14.9 +PT1008,2026-06-14 19:45:00,84.8,92.1,36.3,140.7,90.7,14.7 +PT1008,2026-06-14 20:00:00,83.4,92.4,37.0,139.2,90.2,14.9 +PT1008,2026-06-14 20:15:00,85.1,92.3,36.8,137.5,91.9,14.9 +PT1008,2026-06-14 20:30:00,85.7,92.2,36.6,135.2,92.1,14.8 +PT1008,2026-06-14 20:45:00,84.4,92.7,37.5,135.4,94.1,15.0 +PT1008,2026-06-14 21:00:00,85.0,92.5,37.2,136.6,92.7,15.3 +PT1008,2026-06-14 21:15:00,85.0,92.4,36.6,138.2,92.4,14.6 +PT1008,2026-06-14 21:30:00,83.5,92.6,37.5,139.9,92.9,14.7 +PT1008,2026-06-14 21:45:00,83.9,92.8,37.7,139.9,92.2,14.6 +PT1008,2026-06-14 22:00:00,82.6,92.9,36.6,136.8,91.3,14.9 +PT1008,2026-06-14 22:15:00,83.7,93.4,37.3,137.6,93.2,15.0 +PT1008,2026-06-14 22:30:00,84.2,93.3,37.1,136.4,95.0,15.0 +PT1008,2026-06-14 22:45:00,84.0,93.4,36.7,134.0,94.7,15.1 +PT1008,2026-06-14 23:00:00,84.2,93.2,36.8,134.6,97.9,15.0 +PT1008,2026-06-14 23:15:00,84.5,93.3,37.1,132.7,95.4,14.7 +PT1008,2026-06-14 23:30:00,84.0,93.6,37.3,133.8,95.5,14.0 +PT1008,2026-06-14 23:45:00,86.3,93.8,37.5,132.5,95.3,14.2 +PT1008,2026-06-15 00:00:00,85.4,93.7,37.2,132.4,95.1,14.5 +PT1008,2026-06-15 00:15:00,83.8,93.6,37.1,131.1,91.8,14.8 +PT1008,2026-06-15 00:30:00,83.1,93.8,37.5,131.7,89.9,15.1 +PT1008,2026-06-15 00:45:00,82.9,93.8,36.8,131.9,88.0,15.1 +PT1008,2026-06-15 01:00:00,82.9,93.8,37.2,133.0,88.9,14.8 +PT1008,2026-06-15 01:15:00,84.1,93.6,36.8,136.5,87.4,15.4 +PT1008,2026-06-15 01:30:00,84.0,93.5,37.3,133.8,88.5,15.7 +PT1008,2026-06-15 01:45:00,83.7,93.4,37.2,136.0,88.8,15.4 +PT1008,2026-06-15 02:00:00,81.6,93.4,37.3,137.3,88.5,15.7 +PT1008,2026-06-15 02:15:00,82.0,93.9,37.0,140.0,89.5,15.8 +PT1008,2026-06-15 02:30:00,81.2,94.1,36.9,139.6,88.0,15.5 +PT1008,2026-06-15 02:45:00,83.3,94.3,36.8,139.6,88.6,15.7 +PT1008,2026-06-15 03:00:00,81.9,94.6,37.2,136.9,88.6,15.5 +PT1008,2026-06-15 03:15:00,81.6,94.7,37.4,132.3,90.2,15.7 +PT1008,2026-06-15 03:30:00,82.7,94.8,37.4,131.0,90.9,15.9 +PT1008,2026-06-15 03:45:00,83.4,94.8,37.6,131.9,91.7,16.3 +PT1008,2026-06-15 04:00:00,84.1,95.0,36.1,131.5,91.2,16.0 +PT1008,2026-06-15 04:15:00,83.1,94.9,36.9,130.8,91.8,15.7 +PT1008,2026-06-15 04:30:00,80.6,95.0,36.8,129.1,90.8,15.9 +PT1008,2026-06-15 04:45:00,81.0,94.7,37.6,129.0,89.9,15.8 +PT1008,2026-06-15 05:00:00,79.1,95.1,37.2,127.2,91.2,16.2 +PT1008,2026-06-15 05:15:00,77.6,95.2,37.0,132.3,91.2,16.2 +PT1008,2026-06-15 05:30:00,78.3,95.2,37.8,132.9,90.7,15.8 +PT1008,2026-06-15 05:45:00,78.2,96.0,36.9,133.7,91.6,15.7 +PT1008,2026-06-15 06:00:00,77.8,95.8,37.5,131.9,94.3,16.0 +PT1008,2026-06-15 06:15:00,79.2,95.6,37.4,128.8,93.6,16.0 +PT1008,2026-06-15 06:30:00,79.2,96.4,37.2,127.9,94.5,15.8 +PT1008,2026-06-15 06:45:00,79.0,96.3,36.8,126.7,94.7,16.1 +PT1008,2026-06-15 07:00:00,79.0,96.4,37.0,128.1,97.5,16.3 +PT1008,2026-06-15 07:15:00,78.3,96.3,37.3,126.8,97.8,16.5 +PT1008,2026-06-15 07:30:00,79.1,96.6,37.2,125.5,100.3,16.3 +PT1008,2026-06-15 07:45:00,78.9,96.6,37.3,126.8,98.1,15.9 +PT1008,2026-06-15 08:00:00,78.9,96.5,36.9,124.6,97.8,16.2 +PT1008,2026-06-15 08:15:00,80.6,96.8,36.8,123.9,96.9,15.1 +PT1008,2026-06-15 08:30:00,79.2,96.4,37.1,123.8,97.3,15.8 +PT1008,2026-06-15 08:45:00,76.8,96.2,36.9,125.0,97.2,16.2 +PT1008,2026-06-15 09:00:00,78.2,96.3,37.1,125.5,97.5,15.8 +PT1008,2026-06-15 09:15:00,78.6,95.9,37.5,125.7,99.3,16.0 +PT1008,2026-06-15 09:30:00,79.1,95.7,37.0,127.3,97.6,15.9 +PT1008,2026-06-15 09:45:00,78.3,96.3,36.9,127.1,100.3,16.1 +PT1008,2026-06-15 10:00:00,77.8,96.3,37.2,126.5,99.9,16.3 +PT1008,2026-06-15 10:15:00,78.7,96.7,37.5,125.5,101.5,16.9 +PT1008,2026-06-15 10:30:00,76.6,97.1,37.3,124.2,98.8,17.6 +PT1008,2026-06-15 10:45:00,77.3,97.0,37.1,124.6,98.6,17.3 +PT1008,2026-06-15 11:00:00,77.4,96.7,37.1,124.7,95.9,18.1 +PT1008,2026-06-15 11:15:00,76.2,96.8,36.8,123.2,95.8,18.3 +PT1008,2026-06-15 11:30:00,78.5,97.3,37.0,122.2,94.2,18.1 +PT1008,2026-06-15 11:45:00,79.9,97.2,37.4,119.9,94.3,17.5 +PT1008,2026-06-15 12:00:00,80.6,97.0,36.9,118.9,94.7,17.0 +PT1008,2026-06-15 12:15:00,80.3,96.7,37.0,118.0,93.1,17.6 +PT1008,2026-06-15 12:30:00,79.2,96.9,37.0,116.7,91.4,17.9 +PT1008,2026-06-15 12:45:00,80.2,96.9,36.9,117.0,92.3,17.7 +PT1008,2026-06-15 13:00:00,81.7,97.0,37.4,116.8,93.5,17.9 +PT1008,2026-06-15 13:15:00,80.3,97.0,37.1,119.1,96.0,17.7 +PT1008,2026-06-15 13:30:00,80.3,96.7,36.8,118.5,93.6,17.6 +PT1008,2026-06-15 13:45:00,80.6,96.6,37.7,117.9,95.9,17.7 +PT1008,2026-06-15 14:00:00,81.1,96.8,37.5,116.1,94.9,17.7 +PT1008,2026-06-15 14:15:00,80.7,96.4,37.0,116.9,95.0,17.4 +PT1008,2026-06-15 14:30:00,79.6,96.6,37.5,117.0,95.4,17.2 +PT1008,2026-06-15 14:45:00,79.9,96.1,37.4,117.9,95.0,17.1 +PT1008,2026-06-15 15:00:00,80.0,96.5,36.9,118.1,94.3,16.4 +PT1008,2026-06-15 15:15:00,79.6,96.9,36.9,117.2,96.7,16.0 +PT1008,2026-06-15 15:30:00,81.0,96.7,37.3,119.4,95.5,15.7 +PT1008,2026-06-15 15:45:00,80.0,96.7,36.7,120.2,95.1,15.4 +PT1008,2026-06-15 16:00:00,81.8,97.1,37.3,120.8,94.8,15.4 +PT1008,2026-06-15 16:15:00,83.0,96.9,36.6,123.0,95.7,15.8 +PT1008,2026-06-15 16:30:00,82.5,96.9,37.2,122.0,98.5,15.6 +PT1008,2026-06-15 16:45:00,82.7,96.8,37.4,120.6,101.6,15.5 +PT1008,2026-06-15 17:00:00,82.7,96.7,36.9,120.8,102.1,15.4 +PT1008,2026-06-15 17:15:00,83.3,96.7,36.5,119.5,100.7,15.5 +PT1008,2026-06-15 17:30:00,82.9,96.7,37.2,123.0,100.7,15.4 +PT1008,2026-06-15 17:45:00,82.1,96.7,37.1,123.1,101.6,15.1 +PT1008,2026-06-15 18:00:00,79.9,96.8,36.8,122.6,104.5,15.2 +PT1008,2026-06-15 18:15:00,78.6,97.0,37.2,126.2,106.7,14.8 +PT1008,2026-06-15 18:30:00,80.0,96.6,37.2,128.3,105.7,14.7 +PT1008,2026-06-15 18:45:00,81.3,97.0,37.3,127.6,104.9,14.5 +PT1008,2026-06-15 19:00:00,82.5,97.2,37.1,128.2,105.5,14.4 +PT1008,2026-06-15 19:15:00,83.5,97.3,37.1,127.2,107.1,14.1 +PT1008,2026-06-15 19:30:00,82.0,97.1,37.5,127.3,106.1,14.0 +PT1008,2026-06-15 19:45:00,81.9,97.3,37.0,125.7,106.9,13.6 +PT1008,2026-06-15 20:00:00,82.6,97.3,37.5,127.6,107.9,13.5 +PT1008,2026-06-15 20:15:00,83.1,97.2,37.1,127.9,108.1,13.6 +PT1008,2026-06-15 20:30:00,83.5,97.4,36.8,128.7,108.6,13.5 +PT1008,2026-06-15 20:45:00,82.2,97.2,36.9,127.9,111.1,14.0 +PT1008,2026-06-15 21:00:00,82.7,97.2,37.7,128.4,110.3,14.9 +PT1008,2026-06-15 21:15:00,82.3,97.0,37.1,130.2,108.5,15.3 +PT1008,2026-06-15 21:30:00,80.6,97.0,36.7,128.9,108.8,15.3 +PT1008,2026-06-15 21:45:00,80.2,97.1,37.2,130.4,108.2,15.5 +PT1008,2026-06-15 22:00:00,80.2,97.2,37.1,128.5,108.2,14.8 +PT1008,2026-06-15 22:15:00,81.9,97.1,37.3,131.2,107.8,14.4 +PT1008,2026-06-15 22:30:00,82.5,97.7,37.4,129.2,108.3,14.6 +PT1008,2026-06-15 22:45:00,83.1,97.6,37.3,127.1,108.8,14.7 +PT1008,2026-06-15 23:00:00,82.7,97.7,37.2,124.0,107.3,15.1 +PT1008,2026-06-15 23:15:00,83.3,97.5,37.3,122.5,106.6,15.2 +PT1008,2026-06-15 23:30:00,83.0,97.1,37.4,123.4,107.0,15.4 +PT1008,2026-06-15 23:45:00,83.9,97.5,37.4,123.4,106.4,15.8 +PT1008,2026-06-16 00:00:00,83.6,97.7,37.9,123.6,108.3,16.5 +PT1008,2026-06-16 00:15:00,83.7,98.1,37.4,125.3,109.7,16.7 +PT1008,2026-06-16 00:30:00,82.0,98.1,36.9,124.0,108.6,16.1 +PT1008,2026-06-16 00:45:00,81.8,98.1,36.5,123.9,110.2,15.7 +PT1008,2026-06-16 01:00:00,82.5,98.1,37.0,123.8,109.1,16.1 +PT1008,2026-06-16 01:15:00,81.4,98.5,37.0,125.2,109.1,15.1 +PT1008,2026-06-16 01:30:00,81.4,98.8,36.7,121.7,111.4,15.3 +PT1008,2026-06-16 01:45:00,82.5,98.8,37.1,118.4,110.7,15.4 +PT1008,2026-06-16 02:00:00,83.3,99.0,36.7,116.2,110.7,15.1 +PT1008,2026-06-16 02:15:00,83.2,99.1,36.9,117.1,110.1,14.7 +PT1008,2026-06-16 02:30:00,80.9,98.8,37.7,114.9,111.4,15.1 +PT1008,2026-06-16 02:45:00,81.2,98.7,37.2,115.0,111.1,14.8 +PT1008,2026-06-16 03:00:00,81.5,98.6,37.0,114.4,112.1,14.6 +PT1008,2026-06-16 03:15:00,82.0,98.9,37.0,116.2,111.7,14.1 +PT1008,2026-06-16 03:30:00,82.1,98.6,36.9,115.6,113.5,14.2 +PT1008,2026-06-16 03:45:00,82.2,98.6,37.2,114.8,114.7,13.4 +PT1008,2026-06-16 04:00:00,81.5,98.8,37.2,112.3,116.1,13.1 +PT1008,2026-06-16 04:15:00,80.9,99.1,37.0,111.9,115.0,13.7 +PT1008,2026-06-16 04:30:00,81.6,99.3,36.6,110.2,115.6,13.9 +PT1008,2026-06-16 04:45:00,81.9,99.2,36.5,113.4,116.9,14.1 +PT1008,2026-06-16 05:00:00,82.5,99.0,37.0,115.1,116.7,13.9 +PT1008,2026-06-16 05:15:00,82.0,98.7,37.3,112.7,116.2,14.5 +PT1008,2026-06-16 05:30:00,83.0,98.9,36.9,113.3,115.5,14.3 +PT1008,2026-06-16 05:45:00,84.0,98.7,37.5,117.5,114.1,14.8 +PT1008,2026-06-16 06:00:00,84.7,99.1,37.3,117.1,114.3,14.9 +PT1008,2026-06-16 06:15:00,82.5,99.0,37.1,118.8,113.8,15.7 +PT1008,2026-06-16 06:30:00,83.1,99.4,37.3,119.0,116.1,15.9 +PT1008,2026-06-16 06:45:00,82.0,99.7,37.0,117.8,115.8,16.4 +PT1008,2026-06-16 07:00:00,82.5,99.6,37.3,117.8,115.6,16.0 +PT1008,2026-06-16 07:15:00,83.2,99.5,37.1,116.9,116.9,15.9 +PT1008,2026-06-16 07:30:00,82.2,99.4,37.4,115.2,116.0,15.6 +PT1008,2026-06-16 07:45:00,80.6,99.5,36.7,114.7,118.1,15.9 +PT1008,2026-06-16 08:00:00,79.9,99.5,37.0,113.6,119.5,16.0 +PT1008,2026-06-16 08:15:00,81.1,99.2,36.2,113.1,119.9,15.9 +PT1008,2026-06-16 08:30:00,81.5,99.3,37.0,111.0,116.6,15.6 +PT1008,2026-06-16 08:45:00,81.4,98.8,37.5,111.4,118.1,16.0 +PT1008,2026-06-16 09:00:00,79.9,99.0,37.2,109.6,119.3,15.7 +PT1008,2026-06-16 09:15:00,81.8,99.2,37.5,107.7,117.6,16.0 +PT1008,2026-06-16 09:30:00,82.3,99.0,36.8,107.8,118.2,16.0 +PT1008,2026-06-16 09:45:00,83.6,99.5,37.3,110.7,115.0,16.5 +PT1008,2026-06-16 10:00:00,82.8,99.0,37.5,110.4,115.5,16.0 +PT1008,2026-06-16 10:15:00,84.2,99.1,37.3,107.7,115.1,16.3 +PT1008,2026-06-16 10:30:00,83.4,98.9,36.9,106.2,114.7,16.1 +PT1008,2026-06-16 10:45:00,83.2,98.9,36.9,108.4,112.0,16.6 +PT1008,2026-06-16 11:00:00,85.4,99.1,37.1,109.5,111.9,17.4 +PT1008,2026-06-16 11:15:00,87.2,98.9,37.2,110.9,114.7,17.1 +PT1008,2026-06-16 11:30:00,86.3,99.0,36.8,114.7,113.3,17.2 +PT1008,2026-06-16 11:45:00,86.2,99.2,36.7,114.1,115.7,17.3 +PT1008,2026-06-16 12:00:00,86.5,99.5,37.1,115.2,116.1,17.2 +PT1008,2026-06-16 12:15:00,86.5,98.9,37.2,116.1,117.6,16.9 +PT1008,2026-06-16 12:30:00,86.9,99.1,36.8,116.2,118.4,16.5 +PT1008,2026-06-16 12:45:00,87.4,99.0,37.9,113.0,118.9,16.0 +PT1008,2026-06-16 13:00:00,84.8,99.0,37.4,110.8,120.3,15.8 +PT1008,2026-06-16 13:15:00,85.7,98.7,37.0,109.3,119.8,15.8 +PT1008,2026-06-16 13:30:00,86.5,98.8,37.2,108.1,118.4,15.4 +PT1008,2026-06-16 13:45:00,86.3,99.3,36.7,108.1,118.7,14.7 +PT1008,2026-06-16 14:00:00,84.9,99.1,36.8,105.1,117.0,15.0 +PT1008,2026-06-16 14:15:00,84.8,99.2,37.4,107.0,117.4,15.1 +PT1008,2026-06-16 14:30:00,85.3,99.5,37.1,102.7,117.3,15.2 +PT1008,2026-06-16 14:45:00,85.5,99.4,37.5,104.3,116.5,15.1 +PT1008,2026-06-16 15:00:00,87.0,99.4,37.3,103.0,114.0,15.0 +PT1008,2026-06-16 15:15:00,86.1,99.4,37.2,102.3,111.4,15.1 +PT1008,2026-06-16 15:30:00,86.3,99.8,36.7,101.7,110.8,15.9 +PT1008,2026-06-16 15:45:00,85.5,99.8,37.6,103.9,112.2,15.5 +PT1008,2026-06-16 16:00:00,86.1,99.6,37.2,102.5,112.3,16.4 +PT1008,2026-06-16 16:15:00,88.6,99.8,36.9,100.0,114.4,16.0 +PT1008,2026-06-16 16:30:00,88.9,99.8,37.6,101.7,115.2,15.9 +PT1008,2026-06-16 16:45:00,88.3,99.5,37.3,102.7,115.2,16.0 +PT1008,2026-06-16 17:00:00,88.1,100.0,37.1,103.2,114.5,16.3 +PT1008,2026-06-16 17:15:00,88.2,99.7,37.1,101.2,116.1,15.8 +PT1008,2026-06-16 17:30:00,88.5,100.0,36.4,100.2,117.2,15.7 +PT1008,2026-06-16 17:45:00,88.5,100.0,37.5,101.1,116.3,15.5 +PT1008,2026-06-16 18:00:00,88.1,99.5,36.9,102.1,117.6,15.9 +PT1008,2026-06-16 18:15:00,88.1,99.6,36.9,104.0,118.3,16.2 +PT1008,2026-06-16 18:30:00,85.3,99.8,37.1,102.1,118.1,16.5 +PT1008,2026-06-16 18:45:00,86.1,100.0,37.3,103.2,117.0,15.9 +PT1008,2026-06-16 19:00:00,86.2,99.6,37.8,105.6,118.0,15.9 +PT1008,2026-06-16 19:15:00,87.4,99.4,37.4,107.9,118.4,16.7 +PT1008,2026-06-16 19:30:00,88.0,99.5,36.7,105.5,117.7,16.8 +PT1008,2026-06-16 19:45:00,88.5,99.3,37.2,104.8,118.7,16.5 +PT1008,2026-06-16 20:00:00,88.6,99.0,37.7,106.5,120.1,16.9 +PT1008,2026-06-16 20:15:00,88.1,98.5,36.7,105.2,121.6,16.9 +PT1008,2026-06-16 20:30:00,86.1,98.8,37.9,106.4,120.8,17.6 +PT1008,2026-06-16 20:45:00,87.3,99.0,36.8,107.5,122.1,18.4 +PT1008,2026-06-16 21:00:00,86.8,99.0,37.3,108.6,124.4,18.6 +PT1008,2026-06-16 21:15:00,87.6,99.0,36.9,107.8,124.6,18.3 +PT1008,2026-06-16 21:30:00,88.0,98.8,36.7,111.5,124.8,18.9 +PT1008,2026-06-16 21:45:00,86.6,98.8,37.4,113.4,124.0,18.8 +PT1008,2026-06-16 22:00:00,86.1,98.6,37.1,114.8,122.1,18.7 +PT1008,2026-06-16 22:15:00,86.7,98.8,37.3,116.7,121.6,19.1 +PT1008,2026-06-16 22:30:00,87.5,98.6,37.1,118.1,121.4,19.1 +PT1008,2026-06-16 22:45:00,90.0,98.4,36.9,120.4,123.6,19.4 +PT1008,2026-06-16 23:00:00,92.0,98.3,37.3,121.8,123.7,19.3 +PT1008,2026-06-16 23:15:00,94.2,98.3,36.7,125.8,123.5,19.3 +PT1008,2026-06-16 23:30:00,93.5,98.2,37.0,125.1,122.0,19.0 +PT1008,2026-06-16 23:45:00,94.9,97.9,37.3,121.0,119.4,18.7 diff --git a/medical-imaging-demo/pages/__init__.py b/medical-imaging-demo/pages/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/medical-imaging-demo/pages/cohort.py b/medical-imaging-demo/pages/cohort.py new file mode 100644 index 0000000..d8ee78f --- /dev/null +++ b/medical-imaging-demo/pages/cohort.py @@ -0,0 +1,214 @@ +import dash_mantine_components as dmc +from dash import dcc, html +from dash_iconify import DashIconify +import numpy as np + +from components.charts import (create_crossfilter_scatter, create_diagnosis_donut, + create_age_sex_chart, create_risk_strat_chart, + create_vitals_chart) +from components.tables import create_patient_table +from utils.data_loader import get_cohort, get_vitals, df_patients + +df_cohort = get_cohort() + +VITALS_ALL = ["HR", "SpO2", "Temp", "SysBP", "DiaBP", "RR"] +PATIENT_OPTIONS = [ + {"value": row["patient_id"], "label": f"{row['patient_id']} — {row['name']}"} + for _, row in df_patients.head(8).iterrows() +] +_default_patient = PATIENT_OPTIONS[0]["value"] +_df_vitals0 = get_vitals(_default_patient, "24h") + +_cf1 = create_crossfilter_scatter(df_cohort, "age", "bmi") +_cf2 = create_crossfilter_scatter(df_cohort, "systolic_bp","ldl") +_cf3 = create_crossfilter_scatter(df_cohort, "hba1c", "egfr") + +SCATTER_CONFIG = { + "displayModeBar": True, + "modeBarButtonsToRemove": [ + "zoom2d", "pan2d", "zoomIn2d", "zoomOut2d", + "autoScale2d", "toImage", "hoverClosestCartesian", + "hoverCompareCartesian", "toggleSpikelines", + ], + "displaylogo": False, +} + +crossfilter_view = html.Div([ + dmc.Alert( + "Lasso or box-select points on any chart — the selection propagates across all three plots.", + color="navy", variant="light", + icon=DashIconify(icon="tabler:filter"), + mb="md", + ), + dmc.Grid([ + dmc.GridCol([ + dmc.Paper( + dcc.Graph(id="cf-scatter1", figure=_cf1, + config=SCATTER_CONFIG, + style={"height": "320px"}), + p=0, radius="md", withBorder=True, + style={"overflow": "hidden"}, + ), + ], span={"base": 12, "md": 4}), + dmc.GridCol([ + dmc.Paper( + dcc.Graph(id="cf-scatter2", figure=_cf2, + config=SCATTER_CONFIG, + style={"height": "320px"}), + p=0, radius="md", withBorder=True, + style={"overflow": "hidden"}, + ), + ], span={"base": 12, "md": 4}), + dmc.GridCol([ + dmc.Paper( + dcc.Graph(id="cf-scatter3", figure=_cf3, + config=SCATTER_CONFIG, + style={"height": "320px"}), + p=0, radius="md", withBorder=True, + style={"overflow": "hidden"}, + ), + ], span={"base": 12, "md": 4}), + ], gutter="md"), + + dmc.Grid([ + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Cohort Summary", fw=600, size="lg"), + dmc.Divider(), + dmc.SimpleGrid(id="cf-summary-grid", cols=3, spacing="sm"), + ], gap="sm"), + p="md", radius="md", withBorder=True, + ), + ], span={"base": 12, "md": 4}), + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Filtered Patients", fw=600, size="lg"), + html.Div(id="cf-patient-table"), + ], gap="sm"), + p="md", radius="md", withBorder=True, + ), + ], span={"base": 12, "md": 8}), + ], gutter="md", mt="md"), + + # ── Vital Signs Trend (per-patient) ────────────────────────────────────── + dmc.Divider(mt="xl", mb="md"), + dmc.Group([ + DashIconify(icon="tabler:activity-heartbeat", width=20, color="#1e3a8a"), + dmc.Text("Vital Signs Trend", fw=600, size="lg"), + dmc.Text("per selected patient", c="dimmed", size="sm"), + ], gap=8, align="center", mb="md"), + dmc.Paper( + dmc.Group([ + dmc.Group([ + dmc.Text("Patient", size="xs", fw=500, c="dimmed"), + dmc.Select( + id="cohort-vitals-patient", + data=PATIENT_OPTIONS, + value=_default_patient, + w=260, size="xs", + ), + ], gap=6), + dmc.Divider(orientation="vertical", style={"alignSelf": "stretch"}), + dmc.Group([ + dmc.Text("Period", size="xs", fw=500, c="dimmed"), + dmc.SegmentedControl( + id="cohort-vitals-period", + data=["6h", "12h", "24h", "48h", "72h"], + value="24h", size="xs", color="navy", + ), + ], gap=6), + dmc.Divider(orientation="vertical", style={"alignSelf": "stretch"}), + dmc.Group([ + dmc.Text("Vitals", size="xs", fw=500, c="dimmed"), + dmc.MultiSelect( + id="cohort-vitals-select", + data=[{"value": v, "label": v} for v in VITALS_ALL], + value=["HR", "SpO2"], + w=260, size="xs", clearable=True, + ), + ], gap=6), + dmc.Divider(orientation="vertical", style={"alignSelf": "stretch"}), + dmc.Group([ + dmc.Text("Display", size="xs", fw=500, c="dimmed"), + dmc.Switch(id="cohort-vitals-ref-toggle", label="Reference bands", + checked=True, size="xs", color="navy"), + dmc.Select( + id="cohort-vitals-ma", + data=[{"value": "none", "label": "No smoothing"}, + {"value": "20", "label": "20-pt MA"}, + {"value": "50", "label": "50-pt MA"}], + value="none", w=130, size="xs", + ), + ], gap=8), + ], gap="md", align="center"), + p="sm", radius="md", withBorder=True, mb="md", + ), + dmc.Paper( + dcc.Graph( + id="cohort-vitals-trend-chart", + figure=create_vitals_chart(_df_vitals0, ["HR", "SpO2"]), + config={"displayModeBar": False}, + style={"height": "420px"}, + ), + p="md", radius="md", withBorder=True, + ), +], id="crossfilter-view") + + +# ── Combined Demographics & Risk view ──────────────────────────────────────── +overview_view = html.Div([ + dmc.Grid([ + dmc.GridCol([ + dmc.Paper( + dcc.Graph(id="demo-donut", + figure=create_diagnosis_donut(df_cohort), + config={"displayModeBar": False}, + style={"height": "380px"}), + p="md", radius="md", withBorder=True, + ), + ], span={"base": 12, "md": 6}), + dmc.GridCol([ + dmc.Paper( + dcc.Graph(id="demo-agesex", + figure=create_age_sex_chart(df_cohort), + config={"displayModeBar": False}, + style={"height": "380px"}), + p="md", radius="md", withBorder=True, + ), + ], span={"base": 12, "md": 6}), + ], gutter="md"), + dmc.Paper( + dcc.Graph(id="risk-strat-chart", + figure=create_risk_strat_chart(df_cohort), + config={"displayModeBar": False}, + style={"height": "420px"}), + p="md", radius="md", withBorder=True, mt="md", + ), +], id="overview-view", style={"display": "none"}) + + +layout = dmc.Box( + dmc.Stack([ + dmc.Group([ + dmc.Stack([ + dmc.Title("Cohort Explorer", order=2), + dmc.Text("200-patient biomarker cohort — linked crossfilter brushing", + c="dimmed"), + ], gap=4), + dmc.SegmentedControl( + id="cohort-view", + data=[ + {"value": "crossfilter", "label": "Crossfilter"}, + {"value": "overview", "label": "Demographics & Risk"}, + ], + value="crossfilter", color="navy", size="sm", radius="md", + ), + ], justify="space-between", mb="lg"), + + crossfilter_view, + overview_view, + ], gap="md"), + p="md", +) diff --git a/medical-imaging-demo/pages/dashboard.py b/medical-imaging-demo/pages/dashboard.py new file mode 100644 index 0000000..b1f75c7 --- /dev/null +++ b/medical-imaging-demo/pages/dashboard.py @@ -0,0 +1,286 @@ +import dash_mantine_components as dmc +from dash import dcc, html +from dash_iconify import DashIconify + +from components.charts import create_admissions_chart, create_ecg_sparkline +from components.kpi_cards import create_kpi_card, create_risk_row +from utils.data_loader import get_census_metrics, get_risk_overview, get_admissions_data + +metrics = get_census_metrics() +risk = get_risk_overview() +adm_df = get_admissions_data() + +# ── 5 hardcoded ICU patients that the websocket callback streams ────────────── +ICU_PATIENTS = [ + {"id": "PT1001", "name": "J. Smith", "dx": "Sepsis"}, + {"id": "PT1002", "name": "M. Johnson", "dx": "Heart Failure"}, + {"id": "PT1003", "name": "R. Williams", "dx": "COPD Exacerbation"}, + {"id": "PT1004", "name": "P. Brown", "dx": "Hypertensive Crisis"}, + {"id": "PT1005", "name": "J. Garcia", "dx": "Pneumonia"}, +] + +# ── Alert thresholds ────────────────────────────────────────────────────────── +ICU_BASE = { + "PT1001": {"hr": 72, "spo2": 98.5, "sbp": 118, "dbp": 76, "rr": 14}, + "PT1002": {"hr": 92, "spo2": 96.8, "sbp": 148, "dbp": 90, "rr": 18}, + "PT1003": {"hr": 88, "spo2": 93.5, "sbp": 108, "dbp": 68, "rr": 21}, + "PT1004": {"hr": 78, "spo2": 99.1, "sbp": 168, "dbp": 97, "rr": 16}, + "PT1005": {"hr": 66, "spo2": 98.9, "sbp": 125, "dbp": 80, "rr": 13}, +} + + +def _vital_badge(value_str: str, pid: str, vital: str) -> html.Span: + return html.Span(value_str, id=f"live-{vital}-{pid}", + style={"fontFamily": "monospace", "fontWeight": 700}) + + +def _icu_row(p: dict) -> dmc.Paper: + pid = p["id"] + base = ICU_BASE[pid] + return dmc.Paper( + dmc.Group([ + dmc.Stack([ + dmc.Text(p["name"], size="sm", fw=600), + dmc.Text(p["dx"], size="xs", c="dimmed"), + ], gap=2, w=120), + dmc.Divider(orientation="vertical"), + dmc.Stack([ + dmc.Text("HR", size="xs", c="dimmed"), + _vital_badge(str(base["hr"]), pid, "hr"), + dmc.Text("bpm", size="xs", c="dimmed"), + ], gap=1, align="center"), + dmc.Stack([ + dmc.Text("SpO₂", size="xs", c="dimmed"), + _vital_badge(f"{base['spo2']}%", pid, "spo2"), + ], gap=1, align="center"), + dmc.Stack([ + dmc.Text("BP", size="xs", c="dimmed"), + _vital_badge(f"{base['sbp']}/{base['dbp']}", pid, "bp"), + dmc.Text("mmHg", size="xs", c="dimmed"), + ], gap=1, align="center"), + dmc.Stack([ + dmc.Text("RR", size="xs", c="dimmed"), + _vital_badge(str(base["rr"]), pid, "rr"), + dmc.Text("/min", size="xs", c="dimmed"), + ], gap=1, align="center"), + ], gap="lg", align="center"), + p="xs", + radius="sm", + withBorder=True, + style={"backgroundColor": "rgba(0,0,0,0.01)"}, + ) + + +layout = dmc.Stack([ + # ── Header ──────────────────────────────────────────────────────────────── + dmc.Group([ + dmc.Stack([ + dmc.Title("Clinical Dashboard", order=2), + dmc.Text("Real-time census, ICU vitals, and risk overview", c="dimmed"), + ], gap=4), + dmc.Group([ + dmc.SegmentedControl( + id="dashboard-period", + data=[{"value": v, "label": v} + for v in ["7d","14d","30d"]], + value="30d", + size="sm", + ), + dmc.Select( + id="dashboard-dept", + data=[{"value": "All", "label": "All Departments"}] + + [{"value": d, "label": d} for d in + ["Cardiology","Pulmonology","Neurology", + "General Medicine","Surgery","Nephrology","Oncology"]], + value="All", + w=200, + size="sm", + ), + ], gap="sm"), + ], justify="space-between", mb="lg"), + + # ── KPI Cards ───────────────────────────────────────────────────────────── + dmc.SimpleGrid([ + create_kpi_card("kpi-total", "Total Patients", + str(metrics["total_patients"]), + icon="tabler:users"), + create_kpi_card("kpi-icu", "ICU Occupancy", + f"{metrics['icu_occupancy']:.1f}%", + trend="25 beds", + trend_positive=True, + icon="tabler:activity"), + create_kpi_card("kpi-los", "Avg Length of Stay", + f"{metrics['avg_los']} days", + icon="tabler:clock"), + create_kpi_card("kpi-alerts", "Critical Alerts", + str(metrics["critical_alerts"]), + trend="Risk score > 70", + trend_positive=False, + icon="tabler:alert-triangle", + alert_color="red"), + ], cols={"base": 1, "sm": 2, "lg": 4}, spacing="md"), + + # ── Main Row: Live Vitals + Admissions chart ─────────────────────────────── + dmc.Grid([ + # Live ICU vitals panel + dmc.GridCol([ + dcc.Store(id="live-streaming", data=True), + dmc.Paper( + dmc.Stack([ + dmc.Group([ + dmc.Group([ + dmc.Text("Live ICU Monitor", fw=600, size="lg"), + html.Div( + style={ + "width": 8, "height": 8, + "borderRadius": "50%", + "backgroundColor": "#22c55e", + "animation": "pulse 1.5s ease-in-out infinite", + }, + id="live-indicator", + ), + dmc.Badge("LIVE", color="green", size="sm", variant="light"), + ], gap="xs"), + dmc.Switch(id="icu-live-toggle", label="Stream", + checked=True, size="sm"), + ], justify="space-between"), + dmc.Divider(), + + dmc.Stack([_icu_row(p) for p in ICU_PATIENTS], gap="xs"), + + dmc.Divider(), + dmc.Group([ + dmc.Text("ECG — ", size="xs", c="dimmed"), + dmc.Select( + id="ecg-patient-select", + data=[{"value": p["id"], "label": p["name"]} + for p in ICU_PATIENTS], + value="PT1001", + size="xs", w=150, + ), + ], gap=4), + dcc.Graph( + id="ecg-sparkline-chart", + figure=create_ecg_sparkline([72], "PT1001"), + config={"displayModeBar": False}, + style={"height": "100px"}, + ), + ], gap="sm"), + p="md", radius="md", withBorder=True, + ), + ], span={"base": 12, "md": 6}), + + # Admissions chart + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dcc.Graph( + id="admissions-chart", + figure=create_admissions_chart(adm_df), + config={"displayModeBar": False}, + style={"height": "360px"}, + ), + ]), + p="md", radius="md", withBorder=True, + ), + ], span={"base": 12, "md": 6}), + ], gutter="md"), + + # ── Bottom Row: Risk Overview + Quick Stats ──────────────────────────────── + dmc.Grid([ + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Population Risk Overview", fw=600, size="lg"), + dmc.Text("Average risk scores across all admitted patients", + size="xs", c="dimmed"), + dmc.Divider(my="sm"), + dmc.Stack([ + create_risk_row("risk-sepsis", "Sepsis Risk", + f"{risk['sepsis']:.1f}%", + risk["sepsis"], "red"), + create_risk_row("risk-fall", "Fall Risk", + f"{risk['fall']:.1f}%", + risk["fall"], "orange"), + create_risk_row("risk-readmit", "Readmission", + f"{risk['readmit']:.1f}%", + risk["readmit"], "yellow"), + create_risk_row("risk-deterioration", "Deterioration", + f"{risk['deterioration']:.1f}%", + risk["deterioration"], "grape"), + ], gap="md", mt="sm"), + ], gap="sm"), + p="md", radius="md", withBorder=True, h="100%", + ), + ], span={"base": 12, "md": 4}), + + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Department Snapshot", fw=600, size="lg"), + dmc.SimpleGrid([ + dmc.Paper( + dmc.Stack([ + dmc.Text(dept, size="xs", c="dimmed", fw=600), + dmc.Text(str(count), size="lg", fw=700), + dmc.Text("admitted today", size="xs", c="dimmed"), + ], gap=4), + p="sm", radius="sm", withBorder=True, + ) + for dept, count in [ + ("Cardiology", 12), ("Pulmonology", 8), + ("Neurology", 6), ("Surgery", 10), + ("Nephrology", 5), ("Oncology", 4), + ] + ], cols=2, spacing="sm"), + ], gap="sm"), + p="md", radius="md", withBorder=True, + ), + ], span={"base": 12, "md": 4}), + + dmc.GridCol([ + dmc.Paper( + dmc.Stack([ + dmc.Text("System Status", fw=600, size="lg"), + dmc.Stack([ + dmc.Group([ + DashIconify(icon="tabler:circle-filled", + width=10, color="#22c55e"), + dmc.Text("EMR System", size="sm"), + dmc.Text("Online", size="sm", c="teal", fw=500, + style={"marginLeft": "auto"}), + ]), + dmc.Group([ + DashIconify(icon="tabler:circle-filled", + width=10, color="#22c55e"), + dmc.Text("PACS Imaging", size="sm"), + dmc.Text("Online", size="sm", c="teal", fw=500, + style={"marginLeft": "auto"}), + ]), + dmc.Group([ + DashIconify(icon="tabler:circle-filled", + width=10, color="#22c55e"), + dmc.Text("Lab Interface", size="sm"), + dmc.Text("Online", size="sm", c="teal", fw=500, + style={"marginLeft": "auto"}), + ]), + dmc.Group([ + DashIconify(icon="tabler:circle-filled", + width=10, color="#f59e0b"), + dmc.Text("ICU Monitoring", size="sm"), + dmc.Text("Degraded", size="sm", c="yellow", fw=500, + style={"marginLeft": "auto"}), + ]), + ], gap="md", mt="sm"), + dmc.Divider(my="sm"), + dmc.Alert( + "All patient data is synthetic and for demonstration only.", + color="blue", variant="light", icon=DashIconify(icon="tabler:info-circle"), + ), + ], gap="sm"), + p="md", radius="md", withBorder=True, h="100%", + ), + ], span={"base": 12, "md": 4}), + ], gutter="md"), + +], gap="md") diff --git a/medical-imaging-demo/pages/imaging.py b/medical-imaging-demo/pages/imaging.py new file mode 100644 index 0000000..da76c9e --- /dev/null +++ b/medical-imaging-demo/pages/imaging.py @@ -0,0 +1,557 @@ +import dash_mantine_components as dmc +from dash import dcc, html +from dash_iconify import DashIconify + +from components.imaging import (load_xray_b64, create_xray_figure, XRAY_DIR, + SEVERITY_COLORS, severity_color, newshape_for) +from components.charts import create_ecg_sparkline +from utils.data_loader import (get_studies, get_patient, get_labs, + get_vitals, get_vitals_stats) + +df_studies = get_studies() +STUDIES = df_studies.to_dict("records") + +# ── Palette (scoped to this page) — light cream + deep navy ───────────────────── +BG_DEEP = "#f4f3ef" # off-white, faint cream wash (page backdrop — minimal cream) +BG_SURFACE = "#fcfcfb" # clean near-white (panels / Paper) +BG_INSET = "#eef0f2" # very light cool grey (cards, toolbars, insets) +BORDER = "#e1e3e7" # neutral grey border +TEXT_HI = "#1e2433" # charcoal (primary text) +TEXT_DIM = "#6b7280" # cool slate (secondary text) +ACCENT = "#1e3a8a" # deep navy highlight +ACCENT_DK = "#172554" # deepest navy (top accent borders) + +# Custom Mantine "navy" color ramp (shade 9 = ACCENT) +NAVY_RAMP = ["#eef2fb", "#d9e1f4", "#b3c2e8", "#8aa1db", "#6886d0", + "#5274c9", "#456bc6", "#37539e", "#27407f", "#1e3a8a"] + +# Active study-card tint (replaces the old cyan glow) +CARD_ACTIVE_BG = "#e6eaf5" # pale navy +CARD_ACTIVE_SHADOW = "0 0 0 1px rgba(30,58,138,0.2)" +# Neutral light grey behind the X-ray canvas (light viewport) +VIEWPORT_BG = "#e7e9ec" +# DICOM corner overlays render ON TOP of the (inherently dark) X-ray image, +# so they keep light text regardless of the light chrome around them. +OVERLAY_HI = "#eef2f8" # near-white +OVERLAY_DIM = "#aab4c5" # light slate +OVERLAY_ACCENT = "#7da2e8" # light navy (legible on the dark X-ray) + + +# Key labs → one-line clinical interpretation when flagged abnormal +_LAB_INTERPRETATION = { + "WBC": "infection / pneumonia", + "Troponin": "cardiac injury", + "Lactate": "sepsis / hypoperfusion", + "Creatinine": "renal function", + "BUN": "renal function", + "Hemoglobin": "anemia / bleeding", + "Glucose": "glycemic control", + "Potassium": "electrolyte imbalance", + "Sodium": "electrolyte imbalance", +} + + +def _risk_badge(patient: dict): + """Coloured risk badge from a patient's risk_score.""" + score = patient.get("risk_score") + if score is None: + return None + color = "red" if score > 70 else "yellow" if score > 40 else "teal" + return dmc.Badge(f"Risk {score:.0f}", color=color, variant="light", size="sm") + + +# ── Premium PACS chrome: patient banner, image overlays, status bar ─────────── +_MONO = "ui-monospace, SFMono-Regular, Menlo, monospace" + +_DRAW_LABELS = { + "drawrect": "Rectangle", "drawline": "Line", + "drawcircle": "Circle", "drawopenpath": "Freehand", +} + + +def _meta_chip(label: str, value, mono: bool = False): + """A compact label/value pair for the banner identity row.""" + return dmc.Group([ + dmc.Text(label, size="9px", c=TEXT_DIM, tt="uppercase", + style={"letterSpacing": "0.6px", "fontWeight": 700}), + dmc.Text(str(value), size="xs", fw=600, c=TEXT_HI, + style={"fontFamily": _MONO} if mono else None), + ], gap=5, wrap="nowrap") + + +def _vitals_tile(pid: str): + """HR/SpO₂ readout + HR sparkline for the banner.""" + df_vit = get_vitals(pid, "24h") + if df_vit.empty: + return dmc.Text("No vitals", size="xs", c=TEXT_DIM) + hr = get_vitals_stats(pid, "HR", "24h") + spo2 = get_vitals_stats(pid, "SpO2", "24h") + spark = create_ecg_sparkline(df_vit["HR"].tolist()) + return dmc.Group([ + dmc.Stack([ + dmc.Text(f"HR {hr.get('current', '—')}", size="sm", fw=700, c="#22c55e"), + dmc.Text(f"SpO₂ {spo2.get('current', '—')}%", size="xs", fw=600, c=ACCENT), + ], gap=2), + html.Div( + dcc.Graph(figure=spark, config={"displayModeBar": False}, + style={"height": "34px", "width": "96px"}), + style={"width": "96px"}, + ), + ], gap=8, wrap="nowrap", align="center") + + +def _lab_chip(test: str, value, unit: str, flag: str): + up = flag == "H" + color = "#dc2626" if up else ACCENT + return dmc.Tooltip( + label=f"{test} {value:.1f} {unit} — {_LAB_INTERPRETATION.get(test, 'abnormal')}", + withArrow=True, position="bottom", color="dark", + children=dmc.Group([ + dmc.Text(test, size="xs", fw=700, c=TEXT_HI), + DashIconify(icon="tabler:arrow-up" if up else "tabler:arrow-down", + width=13, color=color), + ], gap=3, wrap="nowrap", + style={"padding": "3px 9px", "borderRadius": "6px", + "backgroundColor": BG_INSET, + "border": f"1px solid {color}55"}), + ) + + +def _patient_banner_content(study: dict): + """Full-width PACS banner: identity (left) + clinical signal (right).""" + if not study: + return dmc.Text("No study selected.", size="sm", c=TEXT_DIM) + pid = study.get("patient_id") + patient = get_patient(pid) if pid else {} + + # Identity ──────────────────────────────────────────────────────────────── + identity = dmc.Stack([ + dmc.Group([ + dmc.Text(study.get("patient_name", "—"), size="lg", fw=700, c=TEXT_HI), + (_risk_badge(patient) or html.Span()), + (dmc.Text(patient.get("diagnosis", ""), size="xs", c=TEXT_DIM) + if patient.get("diagnosis") else html.Span()), + ], gap=10, align="center", wrap="nowrap"), + dmc.Group([ + _meta_chip("MRN", pid or "—", mono=True), + _meta_chip("Age/Sex", f"{study.get('age', '—')}/{study.get('gender', '—')}"), + _meta_chip("Modality", f"CXR {study.get('view_position', '')}".strip()), + _meta_chip("Acc", study.get("accession", "—"), mono=True), + _meta_chip("Date", study.get("study_date", "—"), mono=True), + ], gap=18, wrap="nowrap"), + ], gap=8) + + # Clinical signal ─────────────────────────────────────────────────────────── + df_labs = get_labs(pid) if pid else None + abnormal = (df_labs[df_labs["flag"] != "N"] + if df_labs is not None and not df_labs.empty else None) + if abnormal is None or abnormal.empty: + lab_block = dmc.Text("Labs WNL", size="xs", c="#22c55e", fw=600) + else: + lab_block = dmc.Group( + [_lab_chip(r["test"], r["value"], r["unit"], r["flag"]) + for _, r in abnormal.iterrows()], + gap=8, wrap="nowrap", + ) + + clinical = dmc.Group([ + dmc.Stack([ + dmc.Text("ABNORMAL LABS", size="9px", c=TEXT_DIM, tt="uppercase", + style={"letterSpacing": "0.6px", "fontWeight": 700}), + lab_block, + ], gap=4), + dmc.Divider(orientation="vertical", color=BORDER), + dmc.Stack([ + dmc.Text("VITALS · 24H", size="9px", c=TEXT_DIM, tt="uppercase", + style={"letterSpacing": "0.6px", "fontWeight": 700}), + _vitals_tile(pid) if pid else dmc.Text("—", size="xs", c=TEXT_DIM), + ], gap=4), + ], gap=16, wrap="nowrap", align="center") + + return dmc.Group( + [identity, clinical], + justify="space-between", align="center", wrap="nowrap", + style={"flex": 1}, + ) + + +def _corner(children, vertical: str, horizontal: str, align: str): + # A subtle dark "scrim" chip keeps the light DICOM text legible whether it + # falls over the dark X-ray or the light letterbox margins. + style = {"position": "absolute", vertical: "10px", horizontal: "12px", + "pointerEvents": "none", "textAlign": align, + "fontFamily": _MONO, "fontSize": "10px", "lineHeight": "1.5", + "color": OVERLAY_DIM, + "backgroundColor": "rgba(15,23,42,0.62)", + "padding": "5px 9px", "borderRadius": "6px", + "backdropFilter": "blur(1.5px)"} + return html.Div(children, style=style) + + +def _image_overlays(study: dict, window, level, invert: bool): + """DICOM-style text overlaid in the four corners of the image.""" + study = study or {} + tl = [html.Div(study.get("patient_name", "—"), + style={"color": OVERLAY_HI, "fontWeight": 700}), + html.Div(f"MRN {study.get('patient_id', '—')}"), + html.Div(f"{study.get('age', '—')}/{study.get('gender', '—')}")] + tr = [html.Div(f"ACC {study.get('accession', '—')}", + style={"color": OVERLAY_HI, "fontWeight": 700}), + html.Div(f"{study.get('view_position', '—')} · {study.get('study_date', '—')}")] + bl = [html.Div(f"W: {int(window or 0)} L: {int(level or 0)}", + style={"color": OVERLAY_ACCENT}), + html.Div(f"Invert: {'ON' if invert else 'OFF'}")] + br = [html.Div("CXR", style={"color": OVERLAY_HI, "fontWeight": 700}), + html.Div("General Hospital"), + html.Div(study.get("referrer", ""))] + return [ + _corner(tl, "top", "left", "left"), + _corner(tr, "top", "right", "right"), + _corner(bl, "bottom", "left", "left"), + _corner(br, "bottom", "right", "right"), + ] + + +def _status_bar(draw_mode, window, level, invert: bool): + """Thin professional readout strip under the image.""" + def seg(label, value, accent=False): + return dmc.Group([ + dmc.Text(label, size="10px", c=TEXT_DIM, tt="uppercase", + style={"letterSpacing": "0.5px"}), + dmc.Text(str(value), size="11px", fw=600, + c=ACCENT if accent else TEXT_HI, + style={"fontFamily": _MONO}), + ], gap=5, wrap="nowrap") + + return dmc.Group([ + dmc.Group([ + DashIconify(icon="tabler:pencil", width=13, color=TEXT_DIM), + seg("Tool", _DRAW_LABELS.get(draw_mode, "Rectangle")), + ], gap=6, wrap="nowrap"), + seg("Window", int(window or 0), accent=True), + seg("Level", int(level or 0), accent=True), + seg("Invert", "On" if invert else "Off"), + seg("Matrix", "512×512"), + ], gap=20, wrap="nowrap", + style={"padding": "6px 14px", "backgroundColor": BG_DEEP, + "borderTop": f"1px solid {BORDER}"}) + + +def _study_card(study: dict) -> dmc.UnstyledButton: + sid = study["study_id"] + name = study.get("patient_name", sid) + age_sex = f"{study.get('age', '—')} / {study.get('gender', '—')}" + view = study.get("view_position", "") + finding = study.get("finding_labels", "").split("|")[0] + is_normal = finding.lower() in ("no finding", "") + badge_color = "gray" if is_normal else "navy" + + return dmc.UnstyledButton( + dmc.Stack([ + dmc.Group([ + dmc.Text(sid, size="xs", c=TEXT_DIM, ff="monospace", fw=600), + dmc.Badge(view, size="xs", variant="outline", + color="gray", radius="sm"), + ], justify="space-between", wrap="nowrap"), + dmc.Text(name, size="sm", fw=600, c=TEXT_HI, truncate=True), + dmc.Group([ + dmc.Text(age_sex, size="xs", c=TEXT_DIM), + dmc.Badge(finding or "—", size="xs", variant="light", + color=badge_color, radius="sm"), + ], justify="space-between", wrap="nowrap"), + ], gap=6), + id={"type": "study-thumb", "index": sid}, + className="study-card", + style={ + "width": "100%", + "padding": "10px 12px", + "backgroundColor": BG_INSET, + "border": f"1px solid {BORDER}", + "borderRadius": "8px", + "textAlign": "left", + "transition": "border-color 0.15s ease, background-color 0.15s ease", + }, + ) + + +# ── Defaults ─────────────────────────────────────────────────────────────────── +_default = STUDIES[0] +_img_path = XRAY_DIR / _default["image_file"] +_img_b64 = load_xray_b64(_img_path) +_fig0 = create_xray_figure(_img_b64) +_fig0.update_layout(newshape=newshape_for("Medium")) # match default severity + +DRAW_TOOLS = [ + {"value": "drawrect", "label": "Rect"}, + {"value": "drawline", "label": "Line"}, + {"value": "drawcircle", "label": "Circle"}, + {"value": "drawopenpath", "label": "Path"}, +] + +FINDING_OPTIONS = [{"value": v, "label": v} for v in [ + "Nodule", "Mass", "Effusion", "Cardiomegaly", "Pneumothorax", + "Atelectasis", "Consolidation", "Pneumonia", "Infiltration", + "Fibrosis", "Fracture", "Foreign Body", "Unspecified", +]] + + +_panel_style = { + "backgroundColor": BG_SURFACE, + "border": f"1px solid {BORDER}", +} + +_section_label = lambda text: dmc.Text( + text, size="xs", fw=700, c=TEXT_DIM, tt="uppercase", + style={"letterSpacing": "0.6px"}, +) + + +# ── Studies panel ────────────────────────────────────────────────────────────── +studies_panel = dmc.Paper( + dmc.Stack([ + dmc.Group([ + _section_label("Studies"), + dmc.Badge(str(len(STUDIES)), size="sm", color="navy", + variant="light"), + ], justify="space-between"), + dmc.Divider(color=BORDER), + dmc.ScrollArea( + dmc.Stack([_study_card(s) for s in STUDIES], gap="xs"), + type="auto", offsetScrollbars=True, + style={"height": "calc(100vh - 200px)"}, + ), + ], gap="sm"), + p="md", radius="md", + style={**_panel_style, "height": "100%"}, +) + + +# ── Viewport toolbar ─────────────────────────────────────────────────────────── +def _slider_control(label, slider_id, mn, mx, val, step=5): + return dmc.Group([ + dmc.Text(label, size="xs", fw=600, c=TEXT_DIM, w=52), + html.Div( + dmc.Slider( + id=slider_id, min=mn, max=mx, step=step, value=val, + color="navy", size="sm", + label=None, + showLabelOnHover=False, + marks=[], + ), + style={"width": "150px"}, + ), + ], gap=8, wrap="nowrap") + + +viewport_toolbar = dmc.Group([ + dmc.Group([ + _slider_control("Window", "window-slider", 30, 255, 220), + _slider_control("Level", "level-slider", 10, 245, 128), + dmc.Switch( + id="invert-toggle", + label="Invert", + checked=False, + size="sm", color="navy", + styles={"label": {"color": TEXT_HI, "fontSize": "12px"}}, + ), + ], gap="lg", wrap="nowrap"), + dmc.Group([ + dmc.SegmentedControl( + id="draw-mode-select", + data=DRAW_TOOLS, + value="drawrect", + size="xs", color="navy", + styles={ + "root": {"backgroundColor": BG_INSET, + "border": f"1px solid {BORDER}"}, + }, + ), + dmc.Button( + "Reset", + id="reset-annotations-btn", + size="xs", variant="subtle", color="gray", + leftSection=DashIconify(icon="tabler:rotate-clockwise", width=14), + ), + ], gap="sm", wrap="nowrap"), +], justify="space-between", align="center", wrap="wrap", + style={"padding": "10px 14px", + "backgroundColor": BG_INSET, + "borderBottom": f"1px solid {BORDER}", + "borderRadius": "8px 8px 0 0"}) + + +def _severity_dot(level: str): + return dmc.Group([ + html.Div(style={"width": 8, "height": 8, "borderRadius": "50%", + "backgroundColor": SEVERITY_COLORS[level]}), + dmc.Text(level, size="xs", c=TEXT_DIM), + ], gap=4, wrap="nowrap") + + +def _pending_tag(finding="Nodule", severity="Medium", note=""): + """Live badge showing how the next-drawn shape will be tagged.""" + children = [ + DashIconify(icon="tabler:pencil-plus", width=13, + color=severity_color(severity)), + dmc.Text("Next:", size="xs", c=TEXT_DIM), + dmc.Text(f"{finding or 'Unspecified'} · {severity or 'Medium'}", + size="xs", fw=700, c=severity_color(severity)), + ] + if note: + children.append(dmc.Text(f"“{note}”", size="xs", c=TEXT_DIM, + style={"fontStyle": "italic"}, truncate=True)) + return dmc.Group(children, gap=6, wrap="nowrap") + + +severity_legend = dmc.Group( + [dmc.Text("Severity", size="xs", fw=600, c=TEXT_DIM)] + + [_severity_dot(l) for l in ("Low", "Medium", "High")], + gap=10, wrap="nowrap", +) + + +annotation_bar = dmc.Stack([ + dmc.Group([ + dmc.Select( + id="finding-label-select", + data=FINDING_OPTIONS, + value="Nodule", + placeholder="Finding", + size="xs", w=150, + leftSection=DashIconify(icon="tabler:tag", width=14), + ), + dmc.Select( + id="severity-select", + data=[{"value": v, "label": v} for v in ["Low", "Medium", "High"]], + value="Medium", size="xs", w=100, + ), + dmc.TextInput( + id="annotation-note", + placeholder="Note (optional)", + size="xs", + style={"flex": 1, "minWidth": "80px"}, + leftSection=DashIconify(icon="tabler:note", width=14), + ), + ], gap="sm", wrap="wrap"), + dmc.Group([ + html.Div(id="pending-annotation", children=_pending_tag()), + severity_legend, + ], justify="space-between", align="center", wrap="nowrap"), +], gap=8, + style={"padding": "10px 14px", + "backgroundColor": BG_INSET, + "borderTop": f"1px solid {BORDER}", + "borderRadius": "0 0 8px 8px"}) + + +viewport_panel = dmc.Paper( + dmc.Stack([ + dcc.Store(id="xray-annotations", data=[]), + dcc.Store(id="annotations-store", data={}), # {study_id: [annotations]} + dcc.Store(id="current-study-id", data=_default["study_id"]), + viewport_toolbar, + html.Div([ + dcc.Graph( + id="xray-graph", + figure=_fig0, + config={ + "displayModeBar": "hover", + "modeBarButtonsToAdd": [ + "drawrect", "drawline", + "drawcircle", "drawopenpath", "eraseshape", + ], + "modeBarButtonsToRemove": ["toImage"], + "scrollZoom": True, + "displaylogo": False, + }, + style={"height": "520px", + "backgroundColor": VIEWPORT_BG}, + ), + html.Div( + id="image-overlays", + children=_image_overlays(_default, 220, 128, False), + style={"position": "absolute", "inset": 0, + "pointerEvents": "none"}, + ), + ], style={"position": "relative", "backgroundColor": VIEWPORT_BG}), + html.Div(id="image-status-bar", + children=_status_bar("drawrect", 220, 128, False)), + annotation_bar, + ], gap=0), + p=0, radius="md", + style={**_panel_style, "overflow": "hidden"}, +) + + +# ── Right detail panel — Findings (primary focus) ───────────────────────────── +detail_panel = dmc.Paper( + dmc.Stack([ + dmc.Group([ + dmc.Group([ + DashIconify(icon="tabler:list-search", width=16, color=ACCENT), + _section_label("Findings"), + ], gap=8), + dmc.Badge(id="findings-count", children="0", + color="navy", variant="light", size="sm"), + ], justify="space-between"), + dmc.Divider(color=BORDER), + html.Div( + id="findings-table-container", + children=dmc.Text( + "No annotations yet. Draw on the X-ray to add findings.", + size="sm", c=TEXT_DIM, ta="center", py="md", + ), + ), + ], gap="sm"), + p="md", radius="md", + style={**_panel_style, "height": "100%", + "borderTop": f"2px solid {ACCENT_DK}"}, +) + + +# ── Full layout (scoped dark provider, full-bleed) ──────────────────────────── +layout = dmc.MantineProvider( + forceColorScheme="light", + theme={ + "primaryColor": "navy", + "primaryShade": 9, + "colors": {"navy": NAVY_RAMP}, + "fontFamily": "Inter, -apple-system, BlinkMacSystemFont, sans-serif", + "components": { + "Paper": {"defaultProps": {"shadow": "none"}}, + }, + }, + children=dmc.Box( + dmc.Stack([ + dcc.Download(id="download-radiology-pdf"), + + # ── PACS patient banner ────────────────────────────────────────── + dmc.Paper( + dmc.Group([ + html.Div(id="patient-banner", + children=_patient_banner_content(_default), + style={"flex": 1, "minWidth": 0}), + dmc.Button( + "Export", + id="export-radiology-btn", + size="xs", variant="subtle", color="navy", + leftSection=DashIconify(icon="tabler:file-type-pdf", width=15), + ), + ], gap="md", wrap="nowrap", align="center"), + px="lg", py="sm", radius="md", + style={**_panel_style, "borderTop": f"2px solid {ACCENT_DK}"}, + ), + + dmc.Grid([ + dmc.GridCol(studies_panel, span={"base": 12, "md": 2}), + dmc.GridCol(viewport_panel, span={"base": 12, "md": 6}), + dmc.GridCol(detail_panel, span={"base": 12, "md": 4}), + ], gutter="md", align="stretch"), + ], gap="md", p="md"), + style={ + "backgroundColor": BG_DEEP, + "minHeight": "calc(100vh - 64px)", + "color": TEXT_HI, + }, + ), +) diff --git a/medical-imaging-demo/pages/vitals.py b/medical-imaging-demo/pages/vitals.py new file mode 100644 index 0000000..ec5d337 --- /dev/null +++ b/medical-imaging-demo/pages/vitals.py @@ -0,0 +1,176 @@ +import dash_mantine_components as dmc +from dash import dcc +from dash_iconify import DashIconify + +from components.charts import create_vitals_chart, create_vitals_variability +from utils.data_loader import get_vitals, df_patients + +VITALS_ALL = ["HR", "SpO2", "Temp", "SysBP", "DiaBP", "RR"] +UNITS = {"HR": "bpm", "SpO2": "%", "Temp": "°C", + "SysBP": "mmHg", "DiaBP": "mmHg", "RR": "/min"} + +PATIENT_OPTIONS = [ + {"value": row["patient_id"], "label": f"{row['patient_id']} — {row['name']}"} + for _, row in df_patients.head(8).iterrows() +] + +DEFAULT_PATIENT = PATIENT_OPTIONS[0]["value"] +DEFAULT_VITALS = ["HR", "SpO2"] +DEFAULT_PERIOD = "24h" + +_df0 = get_vitals(DEFAULT_PATIENT, DEFAULT_PERIOD) + +layout = dmc.Stack([ + # ── Page Header ──────────────────────────────────────────────────────────── + dmc.Group([ + dmc.Stack([ + dmc.Title("Patient Vitals", order=2), + dmc.Text("Vital-sign trends with normal-range reference bands", + c="dimmed"), + ], gap=4), + ], justify="space-between", mb="md"), + + # ── Filter bar ───────────────────────────────────────────────────────────── + dmc.Paper( + dmc.Group([ + dmc.Group([ + dmc.Text("Patient", size="xs", fw=500, c="dimmed"), + dmc.Select( + id="vitals-patient-select", + data=PATIENT_OPTIONS, + value=DEFAULT_PATIENT, + w=260, size="xs", + ), + ], gap=6), + dmc.Divider(orientation="vertical", style={"alignSelf": "stretch"}), + dmc.Group([ + dmc.Text("Period", size="xs", fw=500, c="dimmed"), + dmc.SegmentedControl( + id="vitals-period", + data=["6h", "12h", "24h", "48h", "72h"], + value=DEFAULT_PERIOD, size="xs", + ), + ], gap=6), + dmc.Divider(orientation="vertical", style={"alignSelf": "stretch"}), + dmc.Group([ + dmc.Text("Vitals", size="xs", fw=500, c="dimmed"), + dmc.MultiSelect( + id="vitals-select", + data=[{"value": v, "label": v} for v in VITALS_ALL], + value=DEFAULT_VITALS, + w=260, size="xs", clearable=True, + ), + ], gap=6), + dmc.Divider(orientation="vertical", style={"alignSelf": "stretch"}), + dmc.Group([ + dmc.Text("Display", size="xs", fw=500, c="dimmed"), + dmc.Switch(id="vitals-ref-toggle", label="Reference bands", + checked=True, size="xs"), + dmc.Select( + id="vitals-ma-select", + data=[{"value": "none", "label": "No smoothing"}, + {"value": "20", "label": "20-pt MA"}, + {"value": "50", "label": "50-pt MA"}], + value="none", w=130, size="xs", + ), + ], gap=8), + ], gap="md", align="center"), + p="sm", radius="md", withBorder=True, + ), + + # ── Stat Cards ───────────────────────────────────────────────────────────── + dmc.SimpleGrid([ + dmc.Paper( + dmc.Stack([ + dmc.Text("Current HR", size="sm", c="dimmed"), + dmc.Text( + f"{_df0['HR'].iloc[-1]:.0f} bpm" if not _df0.empty else "—", + size="xl", fw=700, id="stat-current-hr", + ), + dmc.Text("Latest reading", size="xs", c="dimmed"), + ], gap=4), + p="md", radius="md", withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Period High / Low", size="sm", c="dimmed"), + dmc.Group([ + dmc.Text( + f"{_df0['HR'].max():.0f}" if not _df0.empty else "—", + size="xl", fw=700, c="red", id="stat-high-hr", + ), + dmc.Text("/", size="xl", c="dimmed"), + dmc.Text( + f"{_df0['HR'].min():.0f}" if not _df0.empty else "—", + size="xl", fw=700, c="blue", id="stat-low-hr", + ), + ], gap=4), + dmc.Text("bpm", size="xs", c="dimmed"), + ], gap=4), + p="md", radius="md", withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Current SpO₂", size="sm", c="dimmed"), + dmc.Text( + f"{_df0['SpO2'].iloc[-1]:.1f}%" if not _df0.empty else "—", + size="xl", fw=700, id="stat-current-spo2", + ), + dmc.Text("Latest reading", size="xs", c="dimmed"), + ], gap=4), + p="md", radius="md", withBorder=True, + ), + dmc.Paper( + dmc.Stack([ + dmc.Text("Abnormal Readings", size="sm", c="dimmed"), + dmc.Text("—", size="xl", fw=700, c="red", id="stat-abnormal"), + dmc.Text("Outside reference range", size="xs", c="dimmed"), + ], gap=4), + p="md", radius="md", withBorder=True, + ), + ], cols={"base": 2, "md": 4}, spacing="md"), + + # ── Charts with tabs ─────────────────────────────────────────────────────── + dmc.Paper( + dmc.Stack([ + dmc.Tabs([ + dmc.TabsList([ + dmc.TabsTab("Trend", value="trend"), + dmc.TabsTab("Variability", value="var"), + ]), + dmc.TabsPanel( + dcc.Graph( + id="vitals-trend-chart", + figure=create_vitals_chart(_df0, DEFAULT_VITALS), + config={"displayModeBar": False}, + style={"height": "400px"}, + ), + value="trend", pt="md", + ), + dmc.TabsPanel( + dcc.Graph( + id="vitals-var-chart", + figure=create_vitals_variability(_df0, DEFAULT_VITALS), + config={"displayModeBar": False}, + style={"height": "400px"}, + ), + value="var", pt="md", + ), + ], value="trend"), + ], gap="sm"), + p="md", radius="md", withBorder=True, + ), + + # ── Vitals Summary Table ─────────────────────────────────────────────────── + dmc.Paper( + dmc.Stack([ + dmc.Text("Vitals Summary", fw=600, size="lg"), + dmc.Text("Min / Mean / Max for the selected period", + size="xs", c="dimmed"), + dmc.Divider(my="xs"), + dmc.SimpleGrid(id="vitals-summary-grid", cols=3, spacing="sm"), + ], gap="sm"), + p="md", radius="md", withBorder=True, + ), + +], gap="md") diff --git a/medical-imaging-demo/requirements.txt b/medical-imaging-demo/requirements.txt new file mode 100644 index 0000000..54a2459 --- /dev/null +++ b/medical-imaging-demo/requirements.txt @@ -0,0 +1,13 @@ +dash[fastapi]==4.2.0rc3 +dash-mantine-components>=0.14.0 +dash-iconify>=0.1.2 +pandas>=2.0.0 +plotly>=5.18.0 +numpy>=1.24.0 +uvicorn[standard] +reportlab>=4.0.0 +kaleido==0.2.1 +PyPDF2>=3.0.0 +Pillow>=10.0.0 +requests>=2.31.0 +scipy>=1.11.0 diff --git a/medical-imaging-demo/scripts/generate_data.py b/medical-imaging-demo/scripts/generate_data.py new file mode 100644 index 0000000..4c204e5 --- /dev/null +++ b/medical-imaging-demo/scripts/generate_data.py @@ -0,0 +1,216 @@ +"""Generate all synthetic clinical CSVs for the demo.""" +import numpy as np +import pandas as pd +from pathlib import Path +from datetime import datetime, timedelta + +np.random.seed(42) +ROOT = Path(__file__).parent.parent +DATA = ROOT / "data" +DATA.mkdir(exist_ok=True) + +# ── Names ──────────────────────────────────────────────────────────────────── +FIRST = ["James","Mary","Robert","Patricia","John","Jennifer","Michael","Linda", + "David","Barbara","William","Elizabeth","Richard","Susan","Joseph", + "Jessica","Thomas","Sarah","Charles","Karen","Christopher","Lisa", + "Daniel","Nancy","Matthew","Betty","Anthony","Margaret","Mark","Sandra"] +LAST = ["Smith","Johnson","Williams","Brown","Jones","Garcia","Miller","Davis", + "Wilson","Moore","Taylor","Anderson","Thomas","Jackson","White","Harris", + "Martin","Thompson","Young","Lewis","Walker","Hall","Allen","King", + "Wright","Scott","Green","Baker","Adams","Nelson"] + +DIAGNOSES = ["Pneumonia","Sepsis","COPD Exacerbation","Heart Failure","Acute MI", + "Stroke","Trauma","UTI","GI Bleed","Pulmonary Embolism", + "Hypertensive Crisis","Diabetic Ketoacidosis","Cellulitis", + "Atrial Fibrillation","Respiratory Failure"] +WARDS = ["ICU","MICU","CCU","Step-Down","General Med","ED Obs"] +DEPARTMENTS = ["Cardiology","Pulmonology","Neurology","General Medicine", + "Surgery","Nephrology","Oncology"] + +# ── Patient roster ──────────────────────────────────────────────────────────── +N = 60 +rows = [] +for i in range(N): + ward = np.random.choice(WARDS, p=[0.10,0.08,0.07,0.15,0.45,0.15]) + rows.append({ + "patient_id": f"PT{i+1001}", + "name": f"{np.random.choice(FIRST)} {np.random.choice(LAST)}", + "age": int(np.random.randint(22, 91)), + "gender": np.random.choice(["M","F"]), + "diagnosis": np.random.choice(DIAGNOSES), + "ward": ward, + "department": np.random.choice(DEPARTMENTS), + "admitted_date": (datetime(2026,6,1) + timedelta(days=int(np.random.randint(0,15)))).strftime("%Y-%m-%d"), + "los_days": int(np.random.randint(1,15)), + "risk_score": round(float(np.random.beta(2,5)*100), 1), + "sepsis_risk": round(float(np.random.beta(1.5,8)*100), 1), + "fall_risk": round(float(np.random.beta(2,6)*100), 1), + "readmit_risk": round(float(np.random.beta(2,5)*100), 1), + "deterioration_risk": round(float(np.random.beta(1.5,7)*100), 1), + "is_icu": ward in ("ICU","MICU","CCU"), + }) + +df_patients = pd.DataFrame(rows) +# Ensure first 5 are ICU patients for the live panel +for i in range(5): + df_patients.at[i, "ward"] = ["ICU","MICU","CCU","ICU","MICU"][i] + df_patients.at[i, "is_icu"] = True +df_patients.to_csv(DATA / "patients.csv", index=False) +print(f"patients.csv — {len(df_patients)} rows") + +# ── Vitals time series (72 h, 15-min intervals, 8 ICU patients) ─────────────── +ICU_BASES = [ + {"patient_id":"PT1001","base_hr":72,"base_spo2":98.5,"base_sbp":118,"base_dbp":76,"base_rr":14}, + {"patient_id":"PT1002","base_hr":92,"base_spo2":96.8,"base_sbp":148,"base_dbp":90,"base_rr":18}, + {"patient_id":"PT1003","base_hr":88,"base_spo2":93.5,"base_sbp":108,"base_dbp":68,"base_rr":21}, + {"patient_id":"PT1004","base_hr":78,"base_spo2":99.1,"base_sbp":168,"base_dbp":97,"base_rr":16}, + {"patient_id":"PT1005","base_hr":66,"base_spo2":98.9,"base_sbp":125,"base_dbp":80,"base_rr":13}, + {"patient_id":"PT1006","base_hr":95,"base_spo2":95.2,"base_sbp":135,"base_dbp":82,"base_rr":20}, + {"patient_id":"PT1007","base_hr":74,"base_spo2":97.8,"base_sbp":120,"base_dbp":75,"base_rr":15}, + {"patient_id":"PT1008","base_hr":82,"base_spo2":96.0,"base_sbp":142,"base_dbp":88,"base_rr":17}, +] + +base_time = datetime(2026, 6, 14, 0, 0, 0) +vitals_rows = [] +for p in ICU_BASES: + pid = p["patient_id"] + hr = float(p["base_hr"]) + spo = float(p["base_spo2"]) + sbp = float(p["base_sbp"]) + dbp = float(p["base_dbp"]) + rr = float(p["base_rr"]) + for i in range(72 * 4): + t = base_time + timedelta(minutes=15*i) + hour = t.hour + # Gentle circadian drift + hr = float(np.clip(hr + np.random.normal(-0.05*(hr-p["base_hr"])*0.1, 1.2), 40, 200)) + spo = float(np.clip(spo + np.random.normal(-0.05*(spo-p["base_spo2"])*0.1, 0.25), 85, 100)) + sbp = float(np.clip(sbp + np.random.normal(0, 2.0), 70, 220)) + dbp = float(np.clip(dbp + np.random.normal(0, 1.5), 40, 130)) + rr = float(np.clip(rr + np.random.normal(0, 0.4), 8, 40)) + vitals_rows.append({ + "patient_id": pid, + "timestamp": t.strftime("%Y-%m-%d %H:%M:%S"), + "HR": round(hr, 1), + "SpO2": round(spo, 1), + "Temp": round(np.random.normal(37.1, 0.3), 1), + "SysBP": round(sbp, 1), + "DiaBP": round(dbp, 1), + "RR": round(rr, 1), + }) + +df_vitals = pd.DataFrame(vitals_rows) +df_vitals.to_csv(DATA / "vitals.csv", index=False) +print(f"vitals.csv — {len(df_vitals)} rows") + +# ── Cohort biomarkers (200 patients) ───────────────────────────────────────── +COH_DIAG = ["Type 2 Diabetes","Hypertension","COPD","Heart Failure","CKD", + "Obesity","CAD","Asthma","Hyperlipidemia","Atrial Fibrillation"] +cohort = [] +for i in range(200): + age = int(np.random.randint(20, 85)) + bmi = float(np.clip(np.random.normal(28, 6), 16, 55)) + sbp = float(np.clip(np.random.normal(130, 22), 80, 220)) + ldl = float(np.clip(np.random.normal(115, 38), 40, 260)) + hba1c= float(np.clip(np.random.normal(6.8, 1.6), 4.5, 14)) + egfr = float(np.clip(np.random.normal(68, 26), 5, 130)) + + score = (int(sbp>160)*2 + int(ldl>160) + int(hba1c>8)*2 + + int(egfr<45)*2 + int(bmi>35)) + risk = "High" if score >= 4 else "Medium" if score >= 2 else "Low" + cohort.append({ + "patient_id": f"CO{i+2001}", + "age": age, + "gender": np.random.choice(["M","F"]), + "bmi": round(bmi, 1), + "systolic_bp": round(sbp, 0), + "ldl": round(ldl, 1), + "hba1c": round(hba1c, 1), + "egfr": round(egfr, 1), + "diagnosis": np.random.choice(COH_DIAG), + "risk_level": risk, + }) + +df_cohort = pd.DataFrame(cohort) +df_cohort.to_csv(DATA / "cohort.csv", index=False) +print(f"cohort.csv — {len(df_cohort)} rows") + +# ── Admissions time series (30 days) ───────────────────────────────────────── +BASE_COUNT = {"Cardiology":12,"Pulmonology":8,"Neurology":6, + "General Medicine":20,"Surgery":10,"Nephrology":5,"Oncology":4} +adm_rows = [] +for d in range(30): + dt = datetime(2026,5,17) + timedelta(days=d) + for dept, base in BASE_COUNT.items(): + # Weekend dip + weekend = dt.weekday() >= 5 + count = max(0, int(np.random.normal(base * (0.75 if weekend else 1.0), 2))) + adm_rows.append({"date": dt.strftime("%Y-%m-%d"), "department": dept, "admissions": count}) + +pd.DataFrame(adm_rows).to_csv(DATA / "admissions.csv", index=False) +print(f"admissions.csv — {len(adm_rows)} rows") + +# ── Labs (20 patients) ──────────────────────────────────────────────────────── +LAB_TESTS = { + "WBC": (4.5, 11.0, "10³/µL"), + "Hemoglobin": (12.0, 17.5, "g/dL"), + "Platelets": (150, 400, "10³/µL"), + "Sodium": (136, 145, "mEq/L"), + "Potassium": (3.5, 5.0, "mEq/L"), + "Creatinine": (0.7, 1.3, "mg/dL"), + "BUN": (7, 25, "mg/dL"), + "Glucose": (70, 100, "mg/dL"), + "Lactate": (0.5, 2.0, "mmol/L"), + "Troponin": (0.0, 0.04, "ng/mL"), +} +lab_rows = [] +for _, pat in df_patients.head(20).iterrows(): + for test, (lo, hi, unit) in LAB_TESTS.items(): + mid = (lo + hi) / 2 + val = round(float(np.clip(np.random.normal(mid, (hi-lo)*0.3), lo*0.5, hi*2)), 3) + flag = "H" if val > hi else "L" if val < lo else "N" + lab_rows.append({ + "patient_id": pat["patient_id"], + "date": "2026-06-15", + "test": test, + "value": val, + "unit": unit, + "reference_low": lo, + "reference_high": hi, + "flag": flag, + }) + +pd.DataFrame(lab_rows).to_csv(DATA / "labs.csv", index=False) +print(f"labs.csv — {len(lab_rows)} rows") + +# ── Imaging studies metadata ────────────────────────────────────────────────── +STUDIES = [ + {"study_id":"ST0001","findings":"No Finding", "age":45,"gender":"M","view":"PA"}, + {"study_id":"ST0002","findings":"Cardiomegaly", "age":67,"gender":"F","view":"PA"}, + {"study_id":"ST0003","findings":"Pleural Effusion|Cardiomegaly","age":72,"gender":"M","view":"AP"}, + {"study_id":"ST0004","findings":"Pneumonia|Consolidation", "age":58,"gender":"F","view":"PA"}, + {"study_id":"ST0005","findings":"Atelectasis", "age":81,"gender":"M","view":"AP"}, + {"study_id":"ST0006","findings":"Nodule", "age":63,"gender":"F","view":"PA"}, + {"study_id":"ST0007","findings":"Pneumothorax", "age":34,"gender":"M","view":"AP"}, + {"study_id":"ST0008","findings":"Mass", "age":69,"gender":"F","view":"PA"}, +] +pat_names = df_patients["name"].tolist() +study_rows = [] +for i, s in enumerate(STUDIES): + study_rows.append({ + "study_id": s["study_id"], + "patient_id": f"PT{i+1001}", + "patient_name": pat_names[i], + "age": s["age"], + "gender": s["gender"], + "view_position":s["view"], + "finding_labels":s["findings"], + "study_date": "2026-06-15", + "accession": f"ACC{np.random.randint(100000,999999)}", + "image_file": f"xray_{i+1:02d}.png", + "referrer": "Dr. " + np.random.choice(LAST), + }) + +pd.DataFrame(study_rows).to_csv(DATA / "studies.csv", index=False) +print(f"studies.csv — {len(study_rows)} rows") +print("\nAll data generated.") diff --git a/medical-imaging-demo/scripts/generate_xrays.py b/medical-imaging-demo/scripts/generate_xrays.py new file mode 100644 index 0000000..16fd90a --- /dev/null +++ b/medical-imaging-demo/scripts/generate_xrays.py @@ -0,0 +1,164 @@ +"""Generate synthetic chest X-ray-like grayscale PNG images for the demo.""" +import numpy as np +from PIL import Image, ImageFilter +from pathlib import Path + +ROOT = Path(__file__).parent.parent +OUTDIR = ROOT / "assets" / "xrays" +OUTDIR.mkdir(parents=True, exist_ok=True) + +STUDIES = [ + ("xray_01.png", [], 42), + ("xray_02.png", ["Cardiomegaly"], 43), + ("xray_03.png", ["Pleural Effusion","Cardiomegaly"], 44), + ("xray_04.png", ["Pneumonia","Consolidation"], 45), + ("xray_05.png", ["Atelectasis"], 46), + ("xray_06.png", ["Nodule"], 47), + ("xray_07.png", ["Pneumothorax"], 48), + ("xray_08.png", ["Mass"], 49), +] + + +def generate_xray(width: int = 512, height: int = 512, + findings: list = None, seed: int = 42) -> Image.Image: + """Return a PIL grayscale image resembling a chest X-ray PA view.""" + np.random.seed(seed) + if findings is None: + findings = [] + + W, H = width, height + cx, cy = W / 2, H / 2 + img = np.zeros((H, W), dtype=np.float32) + + yy, xx = np.mgrid[0:H, 0:W] + + # ── Chest outline ───────────────────────────────────────────────────────── + chest = ((xx - cx) ** 2 / (cx * 0.88) ** 2 + + (yy - cy * 0.96) ** 2 / (cy * 0.92) ** 2) < 1 + img[chest] = 35 + + # ── Lung fields (darker — air) ──────────────────────────────────────────── + lL = ((xx - cx * 0.57) ** 2 / (cx * 0.26) ** 2 + + (yy - cy * 0.84) ** 2 / (cy * 0.36) ** 2) < 1 + rL = ((xx - cx * 1.43) ** 2 / (cx * 0.26) ** 2 + + (yy - cy * 0.84) ** 2 / (cy * 0.36) ** 2) < 1 + img[lL] = 14 + img[rL] = 14 + + # ── Mediastinum / heart ─────────────────────────────────────────────────── + heart = ((xx - cx * 0.91) ** 2 / (cx * 0.19) ** 2 + + (yy - cy * 1.06) ** 2 / (cy * 0.22) ** 2) < 1 + img[heart] = 125 + + # ── Aortic knob ─────────────────────────────────────────────────────────── + aorta = ((xx - cx * 0.84) ** 2 + (yy - cy * 0.60) ** 2) < (W * 0.05) ** 2 + img[aorta] = 145 + + # ── Trachea ─────────────────────────────────────────────────────────────── + trachea = (np.abs(xx - cx) < W * 0.025) & (yy < cy * 0.58) + img[trachea] = 8 + + # ── Spine ───────────────────────────────────────────────────────────────── + spine = (np.abs(xx - cx) < W * 0.025) & (yy > cy * 0.38) & (yy < cy * 1.65) + img[spine] = np.maximum(img[spine], 195) + + # ── Clavicles ───────────────────────────────────────────────────────────── + for x in range(int(cx * 0.20), int(cx)): + cy_clav = int(cy * 0.27 - cy * 0.09 * (x - cx * 0.20) / (cx * 0.80)) + if 0 <= cy_clav < H: + img[max(0, cy_clav - 2):cy_clav + 3, x] = 210 + for x in range(int(cx), int(cx * 1.80)): + cy_clav = int(cy * 0.27 + cy * 0.09 * (x - cx) / (cx * 0.80)) + if 0 <= cy_clav < H: + img[max(0, cy_clav - 2):cy_clav + 3, x] = 210 + + # ── Ribs ────────────────────────────────────────────────────────────────── + for i in range(12): + rib_y0 = cy * 0.24 + i * cy * 0.12 + rw = 2 + for side, x0, x1, xref, sign in [ + ("L", int(cx*0.22), int(cx*0.88), cx*0.22, 1), + ("R", int(cx*1.12), int(cx*1.78), cx*1.78, -1), + ]: + span = abs(x1 - x0) + for x in range(x0, x1): + arc = int(rib_y0 + cy * 0.07 * np.sin(np.pi * abs(x - xref) / span)) + if 0 <= arc - rw and arc + rw < H: + img[arc - rw:arc + rw + 1, x] = np.maximum( + img[arc - rw:arc + rw + 1, x], 195) + + # ── Diaphragm ───────────────────────────────────────────────────────────── + for x in range(int(cx * 0.22), int(cx * 0.90)): + d = int(cy * 1.36 - cy * 0.10 * np.sin(np.pi * (x - cx*0.22) / (cx*0.68))) + if 0 <= d < H: + img[d:min(H, d+3), x] = 190 + for x in range(int(cx * 1.10), int(cx * 1.78)): + d = int(cy * 1.42 - cy * 0.09 * np.sin(np.pi * (cx*1.78 - x) / (cx*0.68))) + if 0 <= d < H: + img[d:min(H, d+3), x] = 190 + + # ── Pulmonary vascular markings ─────────────────────────────────────────── + for lung_mask, x_base in [(lL, cx * 0.40), (rL, cx * 1.30)]: + for _ in range(18): + vx = int(np.random.uniform(x_base * 0.8, x_base * 1.2)) + vy = int(np.random.uniform(cy * 0.28, cy * 0.65)) + ln = int(np.random.uniform(25, 90)) + ang = np.random.uniform(-0.5, 0.5) + intens = float(np.random.uniform(28, 65)) + for j in range(ln): + px_ = int(vx + j * np.sin(ang)) + py_ = int(vy + j * np.cos(ang)) + if (0 <= px_ < W and 0 <= py_ < H and lung_mask[py_, px_]): + img[py_, px_] = min(255, img[py_, px_] + intens * (1 - j / ln)) + + # ── Findings ────────────────────────────────────────────────────────────── + for f in findings: + if f == "Cardiomegaly": + hc = ((xx - cx * 0.88) ** 2 / (cx * 0.28) ** 2 + + (yy - cy * 1.03) ** 2 / (cy * 0.26) ** 2) < 1 + img[hc] = np.maximum(img[hc], 118) + + elif f == "Pleural Effusion": + eff = (yy > cy * 1.22) & rL + img[eff] = 155 + + elif f == "Pneumothorax": + ptx = (xx < cx * 0.38) & lL + img[ptx] = 5 + line_x = int(cx * 0.39) + img[int(cy*0.22):int(cy*0.88), line_x:line_x+3] = 205 + + elif f in ("Nodule", "Mass"): + sz = 11 if f == "Nodule" else 32 + nx, ny = int(cx * 1.50), int(cy * 0.57) + nod = ((xx - nx) ** 2 + (yy - ny) ** 2) < sz ** 2 + img[nod] = 170 + + elif f == "Atelectasis": + atel_y0 = int(cy * 1.20) + atel_y1 = int(cy * 1.27) + img[atel_y0:atel_y1, int(cx*0.35):int(cx*0.82)] = 145 + + elif f in ("Pneumonia", "Consolidation"): + con = ((xx - cx * 1.42) ** 2 / (cx * 0.24) ** 2 + + (yy - cy * 1.12) ** 2 / (cy * 0.20) ** 2) < 1 + img[con] = np.where(img[con] < 132, 132, img[con]) + + elif f == "Infiltration": + inf = ((xx - cx * 0.60) ** 2 / (cx * 0.20) ** 2 + + (yy - cy * 1.05) ** 2 / (cy * 0.18) ** 2) < 1 + img[inf] = np.where(img[inf] < 120, 120, img[inf]) + + # ── Noise + blur ────────────────────────────────────────────────────────── + img = np.clip(img + np.random.normal(0, 5.5, img.shape), 0, 255).astype(np.uint8) + pil = Image.fromarray(img, mode="L").filter(ImageFilter.GaussianBlur(radius=1.2)) + return pil + + +if __name__ == "__main__": + for fname, findings, seed in STUDIES: + out = OUTDIR / fname + img = generate_xray(512, 512, findings=findings, seed=seed) + img.save(out) + print(f" {fname} findings={findings or ['No Finding']}") + print(f"\n{len(STUDIES)} X-ray images written to {OUTDIR}") diff --git a/medical-imaging-demo/utils/__init__.py b/medical-imaging-demo/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/medical-imaging-demo/utils/data_loader.py b/medical-imaging-demo/utils/data_loader.py new file mode 100644 index 0000000..93993af --- /dev/null +++ b/medical-imaging-demo/utils/data_loader.py @@ -0,0 +1,104 @@ +import pandas as pd +import pathlib + +ROOT = pathlib.Path(__file__).parent.parent +DATA_PATH = ROOT / "data" + +def _csv(name: str) -> pd.DataFrame: + return pd.read_csv(DATA_PATH / name) + +# Cached loads +df_patients = _csv("patients.csv") +df_vitals = _csv("vitals.csv") +df_cohort = _csv("cohort.csv") +df_admissions = _csv("admissions.csv") +df_labs = _csv("labs.csv") +df_studies = _csv("studies.csv") + + +# ── Census / dashboard metrics ──────────────────────────────────────────────── +def get_census_metrics() -> dict: + total = len(df_patients) + icu_total = df_patients["is_icu"].sum() + icu_cap = 25 # beds + avg_los = round(float(df_patients["los_days"].mean()), 1) + critical = int((df_patients["risk_score"] > 70).sum()) + return { + "total_patients": total, + "icu_occupancy": round(icu_total / icu_cap * 100, 1), + "avg_los": avg_los, + "critical_alerts":critical, + } + +def get_risk_overview() -> dict: + return { + "sepsis": round(float(df_patients["sepsis_risk"].mean()), 1), + "fall": round(float(df_patients["fall_risk"].mean()), 1), + "readmit": round(float(df_patients["readmit_risk"].mean()), 1), + "deterioration":round(float(df_patients["deterioration_risk"].mean()), 1), + } + + +# ── Admissions ──────────────────────────────────────────────────────────────── +def get_admissions_data(department: str = "All", period: str = "30d") -> pd.DataFrame: + df = df_admissions.copy() + df["date"] = pd.to_datetime(df["date"]) + days = {"7d": 7, "14d": 14, "30d": 30}.get(period, 30) + df = df[df["date"] >= df["date"].max() - pd.Timedelta(days=days-1)] + if department != "All": + df = df[df["department"] == department] + return df + + +# ── Vitals ──────────────────────────────────────────────────────────────────── +PERIOD_HOURS = {"6h": 6, "12h": 12, "24h": 24, "48h": 48, "72h": 72} + +def get_vitals(patient_id: str, period: str = "24h") -> pd.DataFrame: + df = df_vitals[df_vitals["patient_id"] == patient_id].copy() + df["timestamp"] = pd.to_datetime(df["timestamp"]) + df = df.sort_values("timestamp") + hours = PERIOD_HOURS.get(period, 24) + cutoff = df["timestamp"].max() - pd.Timedelta(hours=hours) + return df[df["timestamp"] >= cutoff].reset_index(drop=True) + +def get_vitals_stats(patient_id: str, vital: str, period: str = "24h") -> dict: + df = get_vitals(patient_id, period) + if df.empty or vital not in df.columns: + return {} + col = df[vital] + return { + "current": round(float(col.iloc[-1]), 1), + "min": round(float(col.min()), 1), + "max": round(float(col.max()), 1), + "mean": round(float(col.mean()), 1), + } + + +# ── Cohort ──────────────────────────────────────────────────────────────────── +def get_cohort() -> pd.DataFrame: + return df_cohort.copy() + + +# ── Labs ────────────────────────────────────────────────────────────────────── +def get_labs(patient_id: str) -> pd.DataFrame: + return df_labs[df_labs["patient_id"] == patient_id].copy() + + +# ── Studies ─────────────────────────────────────────────────────────────────── +def get_studies() -> pd.DataFrame: + return df_studies.copy() + +def get_study(study_id: str) -> dict: + row = df_studies[df_studies["study_id"] == study_id] + if row.empty: + return {} + return row.iloc[0].to_dict() + + +# ── Patient helpers ─────────────────────────────────────────────────────────── +def get_patient(patient_id: str) -> dict: + row = df_patients[df_patients["patient_id"] == patient_id] + return row.iloc[0].to_dict() if not row.empty else {} + +def get_icu_patients() -> pd.DataFrame: + return df_patients[df_patients["is_icu"]].head(5).copy() diff --git a/medical-imaging-demo/utils/pdf_export.py b/medical-imaging-demo/utils/pdf_export.py new file mode 100644 index 0000000..9e99c10 --- /dev/null +++ b/medical-imaging-demo/utils/pdf_export.py @@ -0,0 +1,214 @@ +import copy +import io +from datetime import datetime + +import plotly.io as pio +from PIL import Image as PILImage, ImageDraw, ImageFont +from reportlab.lib import colors +from reportlab.lib.pagesizes import A4, landscape, portrait +from reportlab.lib.units import inch +from reportlab.lib.utils import ImageReader +from reportlab.pdfgen import canvas as rl_canvas +from PyPDF2 import PdfWriter, PdfReader + + +def figure_to_image_bytes(figure, width: int = 1100, height: int = 650) -> bytes: + try: + fig = copy.deepcopy(figure) + if isinstance(fig, dict): + fig.setdefault("layout", {}) + fig["layout"]["paper_bgcolor"] = "white" + fig["layout"]["plot_bgcolor"] = "white" + return pio.to_image(fig, format="png", width=width, height=height) + except Exception as e: + img = PILImage.new("RGB", (width, height), color=(220, 220, 220)) + ImageDraw.Draw(img).text((20, height // 2), f"Render error: {e}", fill="black") + buf = io.BytesIO() + img.save(buf, format="PNG") + return buf.getvalue() + + +def create_radiology_report( + xray_figure, + findings: list, + patient_info: dict, + study_info: dict, +) -> bytes: + """ + Build a PDF radiology report with: + - Title page (patient + study info) + - Full-page annotated X-ray image + - Findings table + """ + port_w, port_h = portrait(A4) + land_w, land_h = landscape(A4) + + out = io.BytesIO() + writer = PdfWriter() + + # ── Title page ───────────────────────────────────────────────────────────── + tp = io.BytesIO() + cp = rl_canvas.Canvas(tp, pagesize=portrait(A4)) + + # Header band + cp.setFillColor(colors.HexColor("#0d9488")) + cp.rect(0, port_h - 2.2 * inch, port_w, 2.2 * inch, fill=1, stroke=0) + + cp.setFillColor(colors.white) + cp.setFont("Helvetica-Bold", 26) + cp.drawCentredString(port_w / 2, port_h - 1.0 * inch, "VitalSight Radiology Report") + cp.setFont("Helvetica", 13) + cp.drawCentredString(port_w / 2, port_h - 1.65 * inch, + f"Generated: {datetime.now().strftime('%B %d, %Y %H:%M')}") + + # Patient / study info table + info_y = port_h - 3.2 * inch + items = [ + ("Patient Name", patient_info.get("name", "—")), + ("Patient ID", patient_info.get("patient_id", "—")), + ("Age / Gender", f"{patient_info.get('age','—')} / {patient_info.get('gender','—')}"), + ("Study ID", study_info.get("study_id", "—")), + ("Accession", study_info.get("accession", "—")), + ("Study Date", study_info.get("study_date", "—")), + ("View", study_info.get("view_position", "—")), + ("Referring Physician", study_info.get("referrer", "—")), + ] + cp.setFont("Helvetica-Bold", 10) + cp.setFillColor(colors.HexColor("#1e293b")) + for label, value in items: + cp.setFont("Helvetica-Bold", 10) + cp.setFillColor(colors.HexColor("#475569")) + cp.drawString(1.0 * inch, info_y, f"{label}:") + cp.setFont("Helvetica", 10) + cp.setFillColor(colors.HexColor("#1e293b")) + cp.drawString(3.0 * inch, info_y, str(value)) + info_y -= 0.32 * inch + + # Disclaimer + cp.setFont("Helvetica-Oblique", 8) + cp.setFillColor(colors.HexColor("#94a3b8")) + cp.drawCentredString(port_w / 2, 0.6 * inch, + "SYNTHETIC DATA — FOR DEMONSTRATION PURPOSES ONLY") + cp.save() + tp.seek(0) + writer.add_page(PdfReader(tp).pages[0]) + + # ── Annotated X-ray page ─────────────────────────────────────────────────── + xr = io.BytesIO() + cl = rl_canvas.Canvas(xr, pagesize=landscape(A4)) + + cl.setFillColor(colors.HexColor("#0d9488")) + cl.setFont("Helvetica-Bold", 16) + cl.drawString(0.8 * inch, land_h - 0.7 * inch, "Imaging Study") + + xray_bytes = figure_to_image_bytes(xray_figure, width=1100, height=750) + reader = ImageReader(io.BytesIO(xray_bytes)) + img_w, img_h = 10 * inch, 6.8 * inch + x_off = (land_w - img_w) / 2 + y_off = (land_h - img_h) / 2 - 0.3 * inch + cl.drawImage(reader, x_off, y_off, width=img_w, height=img_h) + + cl.setFont("Helvetica", 7) + cl.setFillColor(colors.HexColor("#94a3b8")) + cl.drawCentredString(land_w / 2, 0.35 * inch, + "SYNTHETIC — NOT FOR CLINICAL USE") + cl.save() + xr.seek(0) + writer.add_page(PdfReader(xr).pages[0]) + + # ── Findings table page ──────────────────────────────────────────────────── + if findings: + ft = io.BytesIO() + fp = rl_canvas.Canvas(ft, pagesize=portrait(A4)) + + fp.setFillColor(colors.HexColor("#0d9488")) + fp.rect(0, port_h - 1.2 * inch, port_w, 1.2 * inch, fill=1, stroke=0) + fp.setFillColor(colors.white) + fp.setFont("Helvetica-Bold", 18) + fp.drawCentredString(port_w / 2, port_h - 0.75 * inch, "Findings") + + headers = ["#", "Finding", "Location (px)", "Type", "Severity", "Note"] + col_w = [0.3, 2.0, 2.2, 1.0, 1.0, 1.5] + col_x = [1.0 * inch] + for w in col_w[:-1]: + col_x.append(col_x[-1] + w * inch) + + row_y = port_h - 1.7 * inch + fp.setFont("Helvetica-Bold", 9) + fp.setFillColor(colors.HexColor("#1e293b")) + for i, h in enumerate(headers): + fp.drawString(col_x[i], row_y, h) + row_y -= 0.05 * inch + fp.setStrokeColor(colors.HexColor("#e2e8f0")) + fp.line(0.8 * inch, row_y, port_w - 0.8 * inch, row_y) + row_y -= 0.28 * inch + + fp.setFont("Helvetica", 9) + for idx, finding in enumerate(findings, 1): + if row_y < 1.5 * inch: + break + fp.setFillColor(colors.HexColor("#1e293b") if idx % 2 else colors.HexColor("#f8fafc")) + fp.rect(0.8*inch, row_y-0.05*inch, port_w-1.6*inch, 0.28*inch, fill=1, stroke=0) + fp.setFillColor(colors.HexColor("#1e293b")) + cells = [ + str(idx), + finding.get("label", "Unspecified"), + finding.get("location", "—"), + finding.get("shape_type", "rect"), + finding.get("severity", "—"), + finding.get("note", ""), + ] + for i, cell in enumerate(cells): + fp.drawString(col_x[i], row_y, str(cell)[:28]) + row_y -= 0.28 * inch + + fp.setFont("Helvetica-Oblique", 7) + fp.setFillColor(colors.HexColor("#94a3b8")) + fp.drawCentredString(port_w / 2, 0.5 * inch, "SYNTHETIC — NOT FOR CLINICAL USE") + fp.save() + ft.seek(0) + writer.add_page(PdfReader(ft).pages[0]) + + writer.write(out) + out.seek(0) + return out.getvalue() + + +def create_summary_pdf(figures: list, titles: list, report_title: str = "Clinical Report") -> bytes: + """Multi-figure PDF (for future use).""" + port_w, port_h = portrait(A4) + land_w, land_h = landscape(A4) + out = io.BytesIO() + writer = PdfWriter() + + tp = io.BytesIO() + cp = rl_canvas.Canvas(tp, pagesize=portrait(A4)) + cp.setFillColor(colors.HexColor("#0d9488")) + cp.rect(0, port_h - 2*inch, port_w, 2*inch, fill=1, stroke=0) + cp.setFillColor(colors.white) + cp.setFont("Helvetica-Bold", 26) + cp.drawCentredString(port_w/2, port_h - 1.1*inch, report_title) + cp.setFont("Helvetica", 12) + cp.drawCentredString(port_w/2, port_h - 1.7*inch, + datetime.now().strftime("%B %d, %Y")) + cp.save() + tp.seek(0) + writer.add_page(PdfReader(tp).pages[0]) + + for fig, title in zip(figures, titles): + pb = io.BytesIO() + cl = rl_canvas.Canvas(pb, pagesize=landscape(A4)) + cl.setFillColor(colors.HexColor("#0d9488")) + cl.setFont("Helvetica-Bold", 18) + cl.drawString(1*inch, land_h - 0.75*inch, title) + img_bytes = figure_to_image_bytes(fig) + reader = ImageReader(io.BytesIO(img_bytes)) + iw, ih = 10*inch, 6*inch + cl.drawImage(reader, (land_w-iw)/2, (land_h-ih)/2-0.4*inch, width=iw, height=ih) + cl.save() + pb.seek(0) + writer.add_page(PdfReader(pb).pages[0]) + + writer.write(out) + out.seek(0) + return out.getvalue()

    a1vr#Y{%Y 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 Al>h($ literal 0 HcmV?d00001 diff --git a/medical-imaging-demo/assets/xrays/xray_06.png b/medical-imaging-demo/assets/xrays/xray_06.png new file mode 100644 index 0000000000000000000000000000000000000000..b10d0fba5b34ba5c76cc5ad5273270897c5b34ef GIT binary patch literal 98439 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